#include <iostream>
#include <conio.h>
#include <iomanip>
#include <windows.h>
#define swap(a,b) {a = ( (a + b) - (b = a) );}//两个数交换
using namespace std;
//数据结构
struct node {
char name[16];//姓名
int iNum;//学号
char sex[10];//性别
int score;//分数
node *next;
};
struct node *head = NULL;
static int count ; //记录学生人数
//函数
void login();//登录界面
void meau();//用户选择界面
void addStu();//增加学生信息
void deletStu();//删除学生信息
void changeStu();//修改学生信息
void findStu();//查找学生信息
void showStu();//显示学生信息
void sortStu();//根据学号排序
void saveFile();//退出写入文件
void readFile();//打开读取文件
void changeName(node* pCurr);//修改姓名
void changeNum(node* pCurr);//修改学号
void changeSex(node* pCurr);//修改性别
void changeScore(node* pCurr);//修改分数
int main() {
login();
return 0;
}
void login() {//登录界面
char userName[16] = {0};
char passWord[16] = {0};
char username[16] = {0};//存储文件中读取的用户名
char password[16] = {0};//存储文件中读取的密码
int ch;
int iCount = 1;//记录输入密码的次数,超过三次退出系统
FILE *fp = fopen("user.txt","r");
if (NULL == fp) {
cout << "user.txt打开失败!~~" << endl;
return;
}
fscanf(fp, "%s%s", username, password);
fclose(fp);
while(iCount <= 3) {
int i = 0;
cout << "\t\t\t******************************" << endl;
cout << "\t\t\t 欢迎登录学生管理系统 " << endl;
cout << "\t\t\t 请输入验证信息 " << endl;
cout << "\t\t\t******************************" << endl;
cout << endl;
cout << "\t\t\t用户名:";
fflush(stdin);
gets(userName);
cout << "\t\t\t密 码:";
fflush(stdin);
while ( ( ch = getch() ) != 13) {//13表示回车不换行即'\r',实际情况:在密码输入时不换行,连续输入。
if (ch != 8) {//Backspace
passWord[i++] = ch;
putchar('*');
}
else {
if (i > 0) {
passWord[--i] = '\0';
cout << '\b';
putchar(' ');
cout << '\b';
}
else
putchar(7);//响铃
}
}
passWord[i] = '\0';
cout << endl;
system("cls");
if (strcmp(userName,username) == 0 && strcmp(passWord,password) == 0) {
cout << "\t\t\t恭喜您!登录成功!~~" << endl;
meau();
}
else {
if (3 == iCount) {
cout << "\t\t\t验证次数超过3次,退出本系统!~~" << endl;
cout << "\t\t\t";
exit(1);
}
cout << "\t\t\t登陆失败!请重新登录~!" << endl;
iCount++;
}
}
}
void meau() {
int choice = 0;
readFile();//从文件中读入链表
while (1) {
cout << "\t\t\t******************************" << endl;
cout << "\t\t\t 1--增加学生信息" << endl;
cout << "\t\t\t 2--删除学生信息" << endl;
cout << "\t\t\t 3--修改学生信息" << endl;
cout << "\t\t\t 4--查找学生信息" << endl;
cout << "\t\t\t 5--显示学生信息" << endl;
cout << "\t\t\t 6--退出系统" << endl;
cout << "\t\t\t******************************" << endl;
cout << "\t\t\t请输入你的选择<1-6>:";
fflush(stdin);
cin >> choice;
system("cls");
switch(choice) {
case 1:
addStu();
sortStu();//输入结束后对学生信息按学号排序
break;
case 2:
deletStu();
break;
case 3:
changeStu();
break;
case 4:
findStu();
break;
case 5:
showStu();
break;
case 6:
cout << "\t\t\t谢谢使用本学生管理系统~" << endl;
saveFile();
cout << "\t\t\t";
exit(0);
default:
cout << "\t\t\t不存在此操作!请重新输入选择~" << endl;
}
}
}
node *pre = NULL;//指向pCurr的前一个结点
void addStu() {//增加学生信息
char ch;
while (1) {
system("cls");
node *pCurr = new node;
if (head == NULL) {
head = pCurr;
cout << "\t\t\t请输入学生姓名:";
fflush(stdin);
gets(pCurr -> name);
cout << "\t\t\t请输入学生学号:";
fflush(stdin);
cin >> pCurr -> iNum;
cout << "\t\t\t请输入学生性别:";
fflush(stdin);
gets(pCurr -> sex);
cout << "\t\t\t请输入学生成绩<0-100>:";
fflush(stdin);
cin >> pCurr ->score;
if (pCurr -> score < 0 || pCurr -> score > 100) {
cout << "\t\t\t分数输入错误!~~请修改!" << endl;
changeScore(pCurr);
}
pre = pCurr;
pCurr -> next = NULL;
count++;
}
else {
cout << "\t\t\t请输入学生姓名:";
fflush(stdin);
gets(pCurr -> name);
while(1) {
node* pMul = head;
cout << "\t\t\t请输入学生学号:";
fflush(stdin);
cin >> pCurr -> iNum;
while (NULL != pMul ) {
if (pMul -> iNum == pCurr -> iNum) {
cout << "\t\t\t学号重复!~~请重新输入学号!~~" << endl;
break;
}
else
pMul = pMul -> next;
}
if (pMul == NULL) {
break;
}
}
cout << "\t\t\t请输入学生性别:";
fflush(stdin);
gets(pCurr -> sex);
cout << "\t\t\t请输入学生成绩<0-100>:";
fflush(stdin);
cin >> pCurr ->score;
if (pCurr -> score < 0 || pCurr -> score > 100) {
cout << "\t\t\t分数输入错误!~~请修改!" << endl;
changeScore(pCurr);
}
pre -> next = pCurr;
pre = pCurr;
pCurr -> next = NULL;
count++;
}
cout << "\t\t\t此学生信息保存成功!~~" << endl;
cout << "\t\t\t是否继续输入信息?~~(Y/N):";
while (1) {
fflush(stdin);
ch = getchar();
if ( ch == 'N' || ch == 'n') {
system("cls");
return;
}
else if (ch == 'Y' || ch == 'y') {
system("cls");
break;
}
else {
cout << "\t\t\t选择错误!~~请重新输入!~~(Y/N):";
continue;
}
}
}
}
void showStu() {//显示所有学生信息
if (head == NULL) {
cout << "还没有学生信息!" << endl;
return;
}
node *pCurr = head;
while (pCurr != NULL) {
cout << "\t" << "姓名:" << pCurr -> name << "\t" << "学号:" << pCurr -> iNum << "\t" << "性别:" << pCurr -> sex << "\t" << "分数:"
<< pCurr -> score << endl;
pCurr = pCurr -> next;
}
}
void findStu() {//查找学生信息
if (head == NULL) {
cout << "还没有学生信息!" << endl;
return;
}
node *pCurr = head;
int ID = 0;
cout << "\t\t\t请输入要查找的学生的学号:";
cin >> ID;
while (pCurr != NULL) {
if (ID == pCurr -> iNum) {
cout << "\t\t\t该生信息如下所示:" << endl;
cout << "\t" << "姓名:" << pCurr -> name << "\t" << "学号:" << pCurr -> iNum << "\t" << "性别:" << pCurr -> sex << "\t" << "分数:"
<< pCurr -> score << endl;
//if (pCurr -> next == NULL)
return;
}
pCurr = pCurr -> next;
}
if (pCurr == NULL)
cout << "\t\t\t不存在该学生~~!" << endl;
}
void deletStu() {//删除学生信息
if (head == NULL) {
cout << "\t\t\t还没有学生信息!" << endl;
return;
}
node *pCurr = head;
node *pree = head;
int ID = 0;
char ch;
cout << "\t\t\t请输入要删除的学生的学号:";
cin >> ID;
while (pCurr != NULL) {
//system("cls");
if (head -> iNum == ID) {
cout << "\t\t\t要删除的该生信息如下所示:" << endl;
cout << "\t" << "姓名:" << pCurr -> name << "\t" << "学号:" << pCurr -> iNum << "\t" << "性别:" << pCurr -> sex << "\t" << "分数:"
<< pCurr -> score << endl;
cout << "\t\t\t是否真的要删除(Y/N):";
fflush(stdin);
if(( ch = getchar() ) == 'Y') {
head = pCurr -> next;
pree = head;
delete pCurr;
count--;
cout << "\t\t\t删除成功!~~" << endl;
if (count == 0)//链表为空时,head和pre为空,直接退出
{
pre = head = NULL;
return;
}
return;
}
else if ( ch == 'N') {
system("cls");
return;
}
else {
cout << "\t\t\t选择错误!~~请重新输入!~~~" << endl;
Sleep(1000);
system("cls");
continue;
}
}
else {
if (pCurr -> iNum == ID) {
cout << "\t\t\t要删除的该生信息如下所示:" << endl;
cout << "\t" << "姓名:" << pCurr -> name << "\t" << "学号:" << pCurr -> iNum << "\t" << "性别:" << pCurr -> sex << "\t" << "分数:"
<< pCurr -> score << endl;
cout << "\t\t\t是否真的要删除(Y/N):";
fflush(stdin);
if(( ch = getchar() ) == 'Y') {
没有合适的资源?快使用搜索试试~ 我知道了~
学生信息管理系统C++课程设计,适合新手
共43个文件
h:16个
cpp:16个
txt:5个
5星 · 超过95%的资源 需积分: 9 28 下载量 99 浏览量
2014-12-23
22:20:26
上传
评论 1
收藏 24KB ZIP 举报
温馨提示
学生信息管理系统,使用C++语言编写,有两个版本,分文件和不分文件,代码简单,适合新手。 学生信息管理系统,使用C++语言编写,有两个版本,分文件和不分文件,代码简单,适合新手。
资源推荐
资源详情
资源评论
收起资源包目录
学生信息管理系统 .zip (43个子文件)
学生信息管理系统分文件
changeName.cpp 534B
使用说明.txt 35B
学生信息管理系统.dsw 557B
saveFile.cpp 295B
deletStu.h 254B
addStu.cpp 2KB
saveFile.h 216B
changeSex.cpp 528B
showStu.h 213B
changeNum.h 210B
学生信息管理系统.dsp 6KB
meau.cpp 1KB
addStu.h 248B
showStu.cpp 378B
main.cpp 158B
student.bat 120B
readFile.cpp 557B
changeName.h 214B
changeScore.h 216B
changeSex.h 210B
deletStu.cpp 2KB
sortStu.cpp 647B
sortStu.h 273B
user.txt 14B
findStu.h 213B
readFile.h 254B
structNode.h 279B
changeScore.cpp 795B
changeStu.h 219B
main.h 188B
changeNum.cpp 640B
changeStu.cpp 2KB
findStu.cpp 645B
login.cpp 2KB
login.h 189B
meau.h 184B
学生信息管理系统一个文件
学生信息管理系统.dsw 557B
学生信息管理系统.dsp 4KB
student.bat 160B
学生信息管理系统.txt 14KB
1.cpp 14KB
user.txt 14B
新建 文本文档.txt 110B
共 43 条
- 1
资源评论
- qq_252307292015-01-11哈哈 不错不错 很有参考价值
simpleGq
- 粉丝: 179
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功