山东平台网站建设企业,上海公司注册在哪个区好,个人简历wordpress主题,wordpress 书文章目录1) 案例一2) 案例二3) 案例三4) 案例四5) 案例五6) 案例六7) 案例七8) 案例八9) 案例九10#xff09;案例十11#xff09;案例十一12#xff09;案例十二13#xff09;案例十三14#xff09;案例十四15#xff09;案例十五#xff08;一#xff09;
新生基本信…
文章目录1) 案例一2) 案例二3) 案例三4) 案例四5) 案例五6) 案例六7) 案例七8) 案例八9) 案例九10案例十11案例十一12案例十二13案例十三14案例十四15案例十五一
新生基本信息统计软件逐个录入学生信息如学生姓名性别专业出生日期家庭地址英语入学成绩。要求设计链表类来实现并统计学生人数。文本界面为新增学生信息删除学生信息导入学生信息已经保存于的文件信息学生信息搜索按姓名学生信息统计按专业或性别或年龄—年龄要自动计算按英语成绩排序学生信息保存 ( 文件 )退出 ******请选择1
1) 案例一
#includeiostream
#includefstream
#includestring.h
using namespace std;
class Student
{ public:int num;char name[20];char sex;char address[100];int english;int born;char major [20];struct Student *next;
};//创建头结点
/*S *head()
{S *headnew S;head-nextNULL;return head;
}*///定义学生类
class Students
{public:Students(){headnew Student;head-nextNULL;}
void create();//创建链表
void edit(); //编辑函数
void search();//显示函数
void add(); //添加函数
void delet(); //删除函数
void sort();//排序函数
void show(); //查询函数
void sum(); //统计函数
void score();//成绩函数
void read(); //读取函数
void write(); //存储函数
private:Student *head;
};//创建函数的定义
void Students::create()
{ Student *phead; Student *q;qnew Student;cout请输入学号:;cinq-num;cout请输入姓名endl;cinq-name;cout请输入性别endl;cinq-sex;cout请输入专业;cinq-major;cout请输入出生年份;cinq-born;cout请输入家庭地址;cinq-address;cout请输入英语成绩;cinq-english;q-nextNULL;p-nextq;pq;
}//排序函数的定义
void Students::sort()
{ int b1;if(head-nextNULL){b0;}if(b0){cout当前无数据endl;}if(b1){Student *p,*q;int num1;char name1[20];char sex1;char address1[20];int english1;int born1;char major1[20];int num2;char name2[20];char sex2;char address2[20];int english2;int born2;char major2[20];for(phead-next; NULL ! p; pp-next){for(qp-next; NULL !q; qq-next){if(p-english q-english)//当前一个学生的总分小于后一个学生的总分时交换单链表的数据 {num1p-num;strcpy(name1,p-name);sex1p-sex;strcpy(address1,p-address);english1p-english;born1p-born;strcpy(major1,p-major);num2q-num;strcpy(name2,q-name);sex2q-sex;strcpy(address2,q-address);english2q-english;born2q-born;strcpy(major2,q-major);p-numnum2;strcpy(p-name,name2);p-sexsex2;strcpy(p-address,address2);p-englishenglish2;p-bornborn2;strcpy(p-major,major2);q-numnum1;strcpy( q-name,name1);q-sexsex1;strcpy(q-address,address1);q-englishenglish1;q-bornborn1;strcpy(q-major,major1);}}}cout排序完成endl; }
}//显示函数
void Students::search()
{ Student *phead-next;int b1;if(pNULL){b0;}if(b0){cout当前无数据endl;}if(b1){while(p){ cout学生学号;coutp-numendl; cout学生姓名;coutp-nameendl;cout学生性别;coutp-sexendl;cout学生专业;coutp-majorendl;cout出生年份;coutp-bornendl;cout家庭地址;coutp-addressendl;cout英语成绩;coutp-englishendl;pp-next;} }
} //增加函数的定义
void Students::add()
{Student *phead-next;Student *q;int m1;int n,b1;//统计学生数 while(p-next!NULL){ pp-next;m;} //coutMm;cout请输入学号;cinn;phead-next;//判断学号是否重复 for(int i1;im;i){if(p-numn) {cout编号重复endl;b0;break;}pp-next;}//coutb; if(b!0){phead;while(p-next!NULL)pp-next;qnew Student;q-numn;cout请输入姓名endl;cinq-name;cout请输入性别endl;cinq-sex;cout请输入专业;cinq-major;cout请输入出生年份;cinq-born;cout请输入家庭地址;cinq-address;cout请输入英语成绩;cinq-english;q-nextNULL;p-nextq;pq;}
}//查询函数的定义
void Students::show()
{ int b0;Student *phead-next;int a;cout*****************************endl;cout****** 1 输入学生学号查询**endl;cout****** 2 输入学生姓名查询**endl; cout*****************************endl; cina;switch(a){case 1:int i;cout请输入学生学号;cini;while(p!NULL){if(p-numi){cout学生姓名;coutp-nameendl;cout学生性别;coutp-sexendl;cout学生专业;coutp-majorendl;cout出生年份;coutp-bornendl;cout家庭地址;coutp-addressendl;cout英语成绩;coutp-englishendl;b;}pp-next;} if(b0)cout该编号不存在;break;case 2:char make[20];cout请输入学生姓名;cinmake;while(p!NULL){if(strcmp(p-name,make)0){cout学生姓名;coutp-nameendl;cout学生性别;coutp-sexendl;cout学生专业;coutp-majorendl;cout出生年份;coutp-bornendl;cout家庭地址;coutp-addressendl;cout英语成绩;coutp-englishendl;b;}pp-next; }if(b0)cout该学生不存在; break;default:cout 请重新输入;}
}//统计函数的定义
void Students::sum()
{ int a;Student *phead;if(p-nextNULL) {cout当前无数据endl;a0;}if(a!0){phead-next; int i0;int j0;int n,s0,d0,m;int w0,x0;cout**********************endl;cout*****1统计性别********endl; cout*****2统计年龄********endl;cout*****3统计专业********endl;cout**********************endl; int a;cina;switch(a){case 1:while(p){if(p-sexm)i;elsej;pp-next; }cout男生iendl;cout女生jendl;break;case 2:while(p){np-born;m2017-n; if(m18)s;elsed;pp-next; }cout18岁sendl;cout19岁dendl;break; case 3:while(p){ mstrcmp(p-major,software); if(m0)w;elsex;pp-next; }cout软件专业wendl;cout化学专业:xendl;break; default:cout 请重新输入;}
}
}//删除函数的定义
void Students::delet()
{
Student *phead;Student *q;int a;if(p-nextNULL){cout当前无数据endl;a0;}//couta;if(a!0){cout请输入删除学生学号;int i;cini;while(p-next ! NULL){if(p-next-numi){q p-next;p-next q-next;delete q;return;}p p-next;}cout学生不存在endl;}} //修改函数的定义
void Students::edit()
{Student *phead-next;Student *qhead-next; cout输入需要修改学生的学号; int n;int b0;int j1;cinn;while(p){if(p-numn){b1;}pp-next;}if(b0)cout没有该学生endl; if(b1){phead-next;while(p){if(p-numn){ cout************************endl;cout*****1修改学生学号******endl;cout*****2修改学生姓名******endl;cout*****3修改学生性别******endl; cout*****4修改学生专业******endl; cout*****5修改出生年份******endl; cout*****6修改家庭地址******endl; cout*****7修改英语成绩******endl; cout************************endl;int m;cinm;switch(m){case 1:cout请输入学号:;int i;cini;while(q){ if(q-numi){cout编号重复;break;j0;}qq-next; }// coutjendl;if(j!0)p-numi;break;case 2:cout请输入姓名endl;cinp-name; break;case 3:cout请输入性别endl;cinp-sex; break;case 4:cout请输入专业;cinp-major; break;case 5:cout请输入出生年份;cinp-born;break;case 6:cout请输入家庭地址;cinp-address;break;case 7:cout请输入英语成绩;cinp-english;break;default:cout 请重新输入endl;}break;}}
}
}//成绩处理函数的定义
void Students::score()
{ Student *phead-next;int b1;if(pNULL){b0;}if(b0){cout当前无数据endl;}if(b1){int m1;while(p-next!NULL){pp-next;m;}//coutMmendl;int sum0;phead-next;while(p){sumsump-english;pp-next;}float ave;avesum/m;cout英语平均分为; coutaveendl;phead-next;cout不及格学生:endl;int n0;while(p){if(p-english60){cout学生学号:p-num 学生姓名p-name 学生成绩p-englishendl;n;}pp-next;}cout不及格人数; coutn;
}
}//文件写入函数的定义
void Students::write()
{ofstream outfile(d:\\file.txt);if(!outfile){cerropen error!endl;exit(1);}Student *phead-next;while(p){outfilep-num ;outfilep-name ;outfilep-sex ;outfilep-major ;outfilep-born ;outfilep-address ;outfilep-english ; pp-next;}outfile.close();cout保存完成endl;
}//文件读取
void Students::read()
{ifstream infile(d:\\file.txt);if(!infile){cerropen error!endl;exit(1);}Student *phead,*q;//将文件的数据输入到链表中 while(!infile.eof()){ qnew Student;if(infileq-num){infileq-name;infileq-sex;infileq-major;infileq-born;infileq-address;infileq-english;q-nextNULL;p-nextq;pq;}elsebreak;}cout读取成功endl; infile.close();
} void f()
{
cout************************************endl;
cout************************************endl;
cout*******欢迎使用新生报到系统*********endl;
cout************************************endl;
cout************************************endl;
cout点击Enter键进行下一步;
getchar();
system(cls);
} void g()
{ cout**************************************endl;cout********** 1 输入学生信息 ************endl;cout********** 2 增加学生信息 ************endl;cout********** 3 删除学生信息 ************endl;cout********** 4 查询学生信息 ************endl;cout********** 5 修改学生信息 ************endl;cout********** 6 统计学生信息 ************endl;cout********** 7 显示学生信息 ************endl;cout********** 8 保存学生信息 ************endl;cout********** 9 读取学生信息 ************endl;cout********** 10排序学生信息 ************endl;cout********** 11处理成绩信息 ************endl;cout********** 12退出 系统 ************endl;cout**************************************endl;
}int main()
{ f(); Students stu;//St *hhead();while(1){int i;g();int n;cinn;switch(n){case 1: stu.create();break;case 2: stu.add();break;case 3: stu.delet();break;case 4:stu.show();break;case 5: stu.edit();break;case 6:stu.sum();break;case 7: stu.search(); break;case 8:stu.write();break;case 9:stu.read();break;case 10:stu.sort();break;case 11:stu.score();break; case 12:exit(0);break;default:cout请重新输入;}if(i-1)break;cout点击Enter键进行下一步;getchar();getchar();system(cls);}return 0;
}2) 案例二
#includestdio.h
#includestdlib.h
#includestring.h
#define LEN sizeof(struct student)
#includewindows.h
typedef struct student{int id;int num;char name[20];int score;struct student *next;//指针域(指向节点的指针
}stu;
struct student *creat() //创建头节点
{stu *head;head(stu*)malloc(LEN);if(headNULL)printf(申请失败);else{head-next NULL;}return head;
}void init_data(stu *p) //初始化数据
{int n,i;stu *qNULL;printf(请输入要添加的学生个数);scanf(%d,n);getchar(); for(i0;in;i){q(struct student*)malloc(LEN);printf(请输入第%d个学生的学生序号,i1);scanf(%d,q-id);printf(请输入第%d个学生的学生号,i1);scanf(%d,q-num );printf(请输入第%d个学生的姓名,i1);scanf(%s,q-name );printf(请输入第%d个学生的分数,i1);scanf(%d,q-score ); p-next q;pp-next ;}q-next NULL; printf(初始化信息成功\n);
}void insert_data(stu *p) //插入学生信息
{stu *QNULL;stu *qp-next ;int n;printf(你要插入的个体数);scanf(%d,n);int i;for(i1;in;i){Q(struct student*)malloc (LEN); printf(请输入你要加入的学生序号);scanf(%d,Q-id );printf(请输入你要加入的学生号); scanf(%d,Q-num );printf(请输入你要加入的学生名字);scanf(%s,Q-name );printf(请输入你要加入的学生分数);scanf(%d,Q-score );Q-next q-next ;q-next Q; }qq-next ;//指针后移 printf(添加成功\n);
} void del_data(stu *p) //删除学生信息
{stu *qp-next ;stu *lp;bool flagfalse;int i;printf(请输入要删除的学生的编号);scanf(%d,i);while(p){if(q-id i){l-next q-next ;free(q);flagtrue;break;}qq-next ;ll-next ;}if(flagfalse){printf(无学生记录\n);}printf(删除成功\n);
} void find_data(stu *p) //查找学生信息
{stu *qp-next ;bool flagfalse;int i;printf(请输入你要查找的学生号);scanf(%d,i);while(q){if(iq-id ){printf(学生序号%d 学生学号%d 学生姓名%s 学生成绩%d\n,q-id ,q-num ,q-name ,q-score );flagtrue; } qq-next ; }if(flagfalse){printf(查找失败\n);}
}void change_data(stu *p) //修改学生信息
{stu *qp-next ;bool flagfalse;int i;printf(请输入需要修改的学生序号);scanf(%d,i);while(q){if(q-id i){printf(请输入修改后的编号);scanf(%d,q-id );printf(请输入修改后的学生号);scanf(%d,q-num );printf(请输入修改后的姓名);scanf(%s,q-name );printf(请输入修改后的分数);scanf(%d,q-score );flagtrue;}qq-next ;}if(flagfalse){printf(修改失败\n);}else{printf(修改成功\n);}
}
void traverse(stu *p) //遍历链表
{stu *qp-next ;while(q!NULL){printf(学生序号%d 学生学号%d 学生姓名%s 学生成绩%d\n,q-id ,q-num ,q-name ,q-score );qq-next ;}
} void choice() //显示列表
{stu *p;pcreat();printf(登录日期\n); system(date/t);printf(登陆时间\n); system(time/t);while(1){printf(-----------欢迎来到学生管理系统----------\n) ;printf(\t1.****初始化学生信息****\n); printf(\t2.****插入学生信息****\n); printf(\t3.****删除学生信息****\n);printf(\t4.****查找学生信息****\n);printf(\t5.****修改学生信息****\n);printf(\t6.****浏览学生信息****\n);printf(\t0.****退出系统****\n);printf(-----------------------------------------\n) ;int choice;printf(请选择: );scanf(%d,choice);switch(choice){case 1:printf(初始化信息\n);init_data(p);break;case 2:system(CLS); printf(插入信息\n);insert_data(p);break;case 3:system(CLS); printf(删除信息\n);del_data(p);break;case 4:system(CLS); printf(查找信息\n);find_data(p);break;case 5:system(CLS); printf(修改信息\n);change_data(p);break; case 6:system(CLS); printf(浏览信息\n); traverse(p);break;case 0:system(CLS); printf(谢谢使用,再见\n);exit(0);default:system(CLS); printf(输入错误请重新输入\n); break;}}}void registerall(){char a[20],b[20],c[20],d[20];while(1){int n;printf(******** 1、注册 ********\n);printf(******** 2、登陆 ********\n);printf(******** 3、退出 ********\n);printf(请输入你的编号); if(scanf( %d,n) 1 ){switch(n){case 1:{while(1){int m;printf(1 注册 2 退出\n);if (scanf( %d,m) 1 ){if( m 2 ){break;}else if ( m 1 ){printf(注册账户);scanf( %s,a);printf(注册密码);scanf( %s,b);} else{printf(输入错误\n);}} else{printf(非法输入\n);break;}}break;}case 2:{while(1){int n;printf(1 登陆 2 退出登陆\n);if ( scanf(%d,n) 1 ){if( n 2 ){break;}else if ( n 1 ){printf(输入账户);scanf( %s,c);printf(输入密码);scanf( %s,d);if(strcmp(a,c)0strcmp(b,d)0){printf(登陆成功\n);printf(内容正在加载中请等待:\n);for(int j0; j8; j){Sleep(500);printf( . );}Sleep(2500);system(CLS);system (color F);choice(); }else{printf(账户或密码错误!\n);}}else{printf(input error\n);}}else{printf(非法输入重新运行!\n);break;}}break;}case 3:{printf(退出成功\n);exit(0);}default:printf(input error!\n);}}else{printf(非法输入重新运行!\n);break;}}
}
int main()
{system(CLS); system (color 5F);registerall(); return 0;
}3) 案例三
#includestdio.h
#includestdlib.h
#includestring.h
typedef struct student {int num;char name[20];char add[20];float achievement;struct student *next;
} happy,*point;struct student* creatlist() {point head(point)malloc(sizeof(happy));;point twohead;int i,n;int num;char name[20];char add[20];float achievement;printf(请输入学生个数);scanf(%d,n);for(i0; in; i) {point one(point)malloc(sizeof(happy));printf(请输入第%d个同学的数据,i1);int num;char name[20];char add[20];float achievement;scanf(%d %s %s %f,num,name,add,achievement);one-num num;strcpy(one-name ,name);strcpy(one-add,add);one-achievement achievement;two-next one;one-nextNULL;twoone;}return head;}void travellist(point head) {int i0;point onehead-next ;while(one!NULL) {i;printf(第%d个学生的数据\n,i);printf(%d ,one-num );printf(%s ,one-name);printf(%s ,one-add);printf(%f \n,one-achievement);oneone-next ;}printf(\n);
}void insert(point head) {int num;printf(输入添加的学生位置(在它之后添加));scanf(%d,num);int num_;char name[20];char add[20];float achievement;scanf(%d %s %s %f,num_,name,add,achievement);point onehead;point three;int i0;while(inum) {oneone-next ;i;}threeone-next ;point two(point)malloc(sizeof(happy));two-num num_;strcpy(two-name ,name);strcpy(two-add,add);two-achievement achievement;one-next two;two-next three;
}void delate(point head) {int i0;int n;int num;point onehead;point two;printf(输入你要删除的学生位置:);scanf(%d,num);while(inum-1) {oneone-next ;i;}twoone-next ;one-next two-next ;free(two);
}void search(point head) {point oneNULL;onehead-next ;int num;printf(你要查询的学号) ;scanf(%d,num);while(one!NULL) {if(one-num num) {printf(查找成功\n);printf(学号%d\n,one-num );printf(姓名%s\n,one-name );printf(地址%s\n,one-add );printf(成绩%f\n,one-achievement );break; } oneone-next ;}}void revise(point head) {int num;int num_; char name[20];char add[20];float achievement;int n0;point onehead;printf(输入学生位置);scanf(%d,num);while(nnum) {oneone-next ;n;}scanf(%d %s %s %f,num_,name,add,achievement);one-num num_;strcpy(one-name ,name);strcpy(one-add,add);one-achievement achievement;
}void headline() {printf(1.输入学生数据\n);printf(2.添加学生数据\n);printf(3.删除学生数据\n);printf(4.查询学生数据\n);printf(5.修改学生数据\n);printf(6.退出系统\n);
}int main() {int i;point head;do{printf(\n);headline();printf(\n\n);printf(请选择1——9);scanf(%d,i);switch(i){case 1:headcreatlist();travellist(head); break;case 2:insert(head);travellist(head); break; case 3:delate(head);travellist(head);break;case 4:search(head);break;case 5:revise(head);travellist(head);break;case 6:break;default:printf(选择错误请重新选择); } }while(i!6);return 0;
}4) 案例四
#include iostream
using namespace std;
#includestdio.h
#include string.h
#include stdlib.h
#include conio.h
#define N 1000typedef struct student{int number;char name[20];int grade;int gaoshu;int yingyu;int jisuanji;int sum;}STUDENT;STUDENT student[N];int shuliang0; //用于记录有多少学生
class Student
{public:void fhzjm();void DengJi();void ShanChu();void LiuLan();void ChaZhao();void PaiXu();void Save();void menu();void DaoRu();
};void Student::fhzjm() //每次操作结束 来提醒是否继续进行操作
{char biaozhi[20];coutendl;cout还需要操作么如果需要操作请输入yes否则请输入noendl;cinbiaozhi;if(strcmp(biaozhi,yes)0){menu();}else if(strcmp(biaozhi,no)0)exit(0); //退出系统 这是一个库函数 用于结束程序else{cout请输入正确的字符谢谢endl;fhzjm();}
}void Student::DengJi() //登记学生信息函数{int rs; //用于记录要输入多少条学生信息int i,k1;system(CLS);cout请输入需要输入几个学生信息endl;cinrs;for(ishuliang;ishuliangrs;i,k){cout请输入第k个学生的学号;cinstudent[i].number;cout请输入学生的姓名;cinstudent[i].name;//cout请输入学生3门课的成绩;cout请输入第高数课的成绩;cinstudent[i].gaoshu;cout请输入英语课的成绩;cinstudent[i].yingyu;cout请输入第计算机课的成绩;cinstudent[i].jisuanji;}shuliangshuliangrs;fhzjm();
}void Student::ShanChu() //删除学生信息
{char shanchuinfo[10];system(CLS); //清屏函数 这是一个库函数 用于清除控制台中的所有信息cout删除全部学生信息请输入\all\删除指定学号的学生信息请输入\one\\n;cinshanchuinfo;if(strcmp(shanchuinfo,all)0){int j;cout你删除的学生信息如下endl;cout-----------学号-------------姓名-------------高数--------------英语--------------计算机\tendl;for(j0;jshuliang;j)cout----%d-------%s-------%d-------%d-------%d\t\n,student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji;shuliang0;cout删除成功endl;}else if(strcmp(shanchuinfo,one)0){struct student *pNULL;int choice;int i,j,k0;cout请输入你要删除的人的学号:;cinchoice;for(i0;ishuliang;i){if(choicestudent[i].number){k1;ji;break;}}if(k){if(shuliang1){pstudent[0];free(p);shuliang0;}else{for(ij;ishuliang;i){student[i]student[i1];}shuliangshuliang-1;}cout删除成功endl;}else{cout输入数据错误endl;}}fhzjm();
}void Student::LiuLan() //浏览操作函数
{int i;system(CLS);if(shuliang0){cout系统里面没有任何学生的信息endl;}else{for(i0;ishuliang;i){cout第i1个学生的学号为student[i].numberendl;cout第i1个学生的姓名为student[i].nameendl;cout第i1个学生的高数课的成绩为student[i].gaoshuendl;cout第i1个学生的英语课的成绩为student[i].yingyuendl;cout第i1个学生的计算机课的成绩为student[i].jisuanjiendl;student[i].sumstudent[i].gaoshustudent[i].yingyustudent[i].jisuanji;cout第i1个学生的总成绩为student[i].sumendl;}}fhzjm();
}void Student::ChaZhao() //查找函数 实现查找功能 分为三种查询 按学号查询 按姓名 按成绩
{int xx;char choice,yy[20];int i,j,k0;system(CLS);if(shuliang0){cout系统里面没有任何学生的信息endl;fhzjm();}cout三种查找方式学号姓名成绩endl;cout如果按学号查找请输1如果按姓名查找请输2如果按成绩查找请输3endl;cout请输入您查找的方式;cinchoice;if(choice1){cout请输入需要查找学生的学号;cinxx;cout您所查找的学生的信息为endl;cout----学号----姓名----高数成绩----英语成绩----计算机成绩----\tendl;for(i0;ishuliang;i){if(xxstudent[i].number){ji;k1;cout----%d-------%s-------%d-------%d-------%d----\t\n,student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;}}if(k0)cout输入信息有误endl;}else if(choice2){cout请输入需要查找学生的姓名:;cinyy;cout您所查找的学生的信息为endl;cout----学号----姓名----高数成绩----英语成绩----计算机成绩----\tendl;for(i0;ishuliang;i){if(strcmp(yy,student[i].name)0){ji;k1;cout----%d-------%s-------%d-------%d-------%d----\t\n,student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jisuanji;}}if(k0)cout输入信息有误endl;}else if(choice3){cout请输入需要查找学生的成绩endl;cinxx;cout您所查找的学生的信息为endl;cout----学号----姓名----高数----英语----计算机----\tendl;for(i0;ishuliang;i){if(xxstudent[i].grade){ji;k1;cout----%d-------%s-------%d-------%d-------%d----\t\n,student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;}}if(k0)cout输入信息有误endl;}fhzjm();
}void Student::PaiXu() //排序函数 执行排序操作
{struct student *p1[N],**p2,*temp;int i,j;system(CLS);p2p1;for( i0;ishuliang;i){p1[i]studenti;}for( i0;ishuliang;i){for( ji1;jshuliang;j){if((*(p2i))-sum(*(p2j))-sum){temp*(p2i);*(p2i)*(p2j);*(p2j)temp;}}}cout按照总成绩排序之后的信息为endl;cout----学号----姓名----总成绩----\tendl;for( i0;ishuliang;i){student[i].sumstudent[i].gaoshustudent[i].yingyustudent[i].jisuanji;cout----%d-----%s----%d-----\n,(*(p2i))-number,(*(p2i))-name,(*(p2i))-sum;}fhzjm();
}void Student::Save() //保存数据 把数据写到文件操作
{int i;FILE *rs;if((rsfopen(student.txt,w))NULL){coutnot open;exit(0);}for(i0;ishuliang;i){fwrite(student[i], sizeof(student[i]), 1, rs);}if(ferror(rs)){fclose(rs);perror(写文件失败\n);return;}cout存储文件成功endl;fclose(rs);fhzjm();
}void Student::DaoRu()
{struct student t;int i0;FILE* fp fopen(student.txt, r);shuliang0;if(NULLfp){perror(读取文件打开失败\n);return;}memset(student,0x0,sizeof(student));while(1){fread(t,sizeof(t),1,fp);if(ferror(fp)){fclose(fp);perror(读文件过程失败\n);return;}if(feof(fp)){break;}student[i]t;i;}fclose(fp);shuliangi;cout导入文件成功endl;fhzjm();
}
void Student::menu()
{int n0;system(CLS);cout 学生信息管理系统endl;cout 1.登记学生信息 endl;cout 2.删除学生信息 endl;cout 3.浏览学生信息 endl;cout 4.查找学生信息 endl;cout 5.根据总成绩排序 endl;cout 6.存储到文件 endl;cout 7.从文件导入 endl;cout 8.退出系统 endl;cout endl;cout 请选择;cinn;switch (n){case 1:DengJi();break; //等记信息case 2:ShanChu();break; //删除信息case 3:LiuLan();break; //浏览信息case 4:ChaZhao();break; //查找信息case 5:PaiXu();break; //对成绩记性排序case 6:Save();break; //保存数据到文件中case 7:DaoRu();break; //把文件中的数据导入到程序中case 8:exit(0);break; //退出系统}
}int main()
{Student student;student.menu();return 0;
} 5) 案例五
#includeiostream
#includecstdlib
#includecstring
#includefstream
#includewindows.h
using namespace std;
class student {public:int num; //学号char s[20];char name[20]; //姓名double score[6]; //成绩double total; //总分student *next;void input();void readfile(ifstreamin); // 读出数据
};
void student::input() { //输入信息 调用它cout请输入学号;cinnum;cout请输入姓名;cinname;int a,b,c,d;cout请输入语文;cina;while(a150||a0) {cout输入成绩有错误请从新输入;cina;}cout请输入高数;cinb;while(b150||b0) {cout输入成绩有错误请从新输入;cinb;}cout请输入英语;cinc;while(c150||c0) {cout输入成绩有错误请从新输入;cinc;}cout请输入专业课;cind;while(d150||d0) {cout输入成绩有错误请从新输入;cind;}score[1]a;score[2]b;score[3]c;score[4]d;totalabcd;nextNULL;}
void student::readfile(ifstreamin) { //文件的调用 直接调用 不能其他的 得一一的调用innumnamescore[1]score[2]score[3]score[4]total;}
class studentmessage {public:studentmessage();void add();//添加void display();void maxmin();//输出最大最小的姓名void save();//保存文件void rank();//排序void swap(student*p,student*q);void menu();//菜单void xiugai();//修改void tianjia();void shanchu();void chazhao();void average();void youxiu();void bukao();void duqu();protected:student *head;student *tail;ofstream out;ifstream in;};
studentmessage::studentmessage() { // 多看看headnew student;head-nextnew student;tailhead-next;ifstream in(file.text);//打开文件char chin.get(); // //读取一个文件的的字符 so 保存时添加无关一个字符if(in.eof()) {cout是一个新系统无学生信息。请先输入endl;}while(!in.eof()) { //文件里有东西 读取 自动tail-readfile(in);if(tail-name[0]\0) { //判断mane 又没空格break;}tail-next new student; // 建立一个空间tail-next-nextNULL; //不同tailtail-next;tail-nextNULL; //用tail NULL 来判断 // 尾插}}void studentmessage::add() {system(cls);int flag1;while(flag) {tail-input();tail-nextnew student;tail-next-nextNULL;tailtail-next;cout是否输入Y/N)endl;char n;cinn;if(nN|| nn) {flag0;}}system(pause);
}
void studentmessage::display() {system(cls);student *phead-next;if(pNULL) {cout没有endl;}for(p; p-next!NULL; pp-next) { //???cout-----------------------endl;cout学号p-numendl;cout姓名p-nameendl;cout语文p-score[1]endl;cout高数p-score[2]endl;cout英语p-score[3]endl;cout专业课p-score[4]endl;cout总分p-totalendl;cout------------------------endl;}system(pause);
}
void studentmessage::swap(student *p,student *q) {student *tempnew student;temp-nump-num;strcpy(temp-name,p-name);temp-score[1]p-score[1];temp-score[2]p-score[2];temp-score[3]p-score[3];temp-score[4]p-score[4];temp-totalp-total;p-numq-num;strcpy(p-name,q-name);p-score[1]q-score[1];p-score[2]q-score[2];p-score[3]q-score[3];p-score[4]q-score[4];p-totalq-total;q-numtemp-num;strcpy(q-name,temp-name);q-score[1]temp-score[1];q-score[2]temp-score[2];q-score[3]temp-score[3];q-score[4]temp-score[4];q-totaltemp-total;
}
void studentmessage::rank() {system(cls);student *p,*q;phead-next;for(p; p-next!NULL; pp-next) {for(qp-next; q-next!NULL; qq-next) {if(q-totalp-total)swap(q,p);}}cout排序成功endl;student *p1head-next;for(p1; p1-next!NULL; p1p1-next) {cout-----------------------endl;cout学号p1-numendl;cout姓名p1-nameendl;cout语文p1-score[1]endl;cout高数p1-score[2]endl;cout英语p1-score[3]endl;cout专业课p1-score[4]endl;cout总分p1-totalendl;cout------------------------endl;}system(pause);
}
void studentmessage::menu() {system(cls);system(date/t);system(time/t);system(color 5F);cout\t\t\t\t***************************************************endl;cout\t\t\t\t-------------------学生管理系统--------------------endl;cout\t\t\t\t 1.录入信息 endl;cout\t\t\t\t 2.显示信息 endl;cout\t\t\t\t 3.修改信息 endl;cout\t\t\t\t 4.删除信息 endl;cout\t\t\t\t 5.添加信息 endl;cout\t\t\t\t 6.查找信息 endl;cout\t\t\t\t 7.保存信息 endl;cout\t\t\t\t 8.退出系统 endl;cout\t\t\t\t***************************************************endl;system(pause);
}
void studentmessage::xiugai() {system(cls);student *phead-next;int flag1;while(flag) {int n;cout修改输入学号endl;cinn;while(p-num!np-next!NULL) {// coutasdasd;pp-next;}p-input();cout修改成功endl;cout选择是否接着修改(Y/N)endl;char k;cink;if(kN||kn) {flag0;}}system(pause);
}
void studentmessage::tianjia() {system(cls);student *phead;student *p1head-next;student *p2new student;char k;while(k!N) {int n;cout输入你添加的位数endl;cinn;int i0;while(n!i1) {pp-next;p1p-next;i;}p2-input();p2-nextp1;p-nextp2;cout选择是否插入(Y/N)endl;cink;}system(pause);
}
void studentmessage::shanchu() {system(cls);student *phead;student *p1head-next;char k;while(k!N) {int n;cout输入你删除的位数endl;cinn;int i0;while(n!i1) {pp-next;p1p-next;i;}p-nextp1-next;delete p1;cout删除成功endl;cout选择是否删除(Y/N)endl;cink;}system(pause);
}
void studentmessage::chazhao() {system(cls);student *phead-next;int a;cout请输入要查找的学生的学号:;cina;while(p) {if(p-numa) {break;}pp-next;}if(!p) {cout未找到要查找学生endl;return ;}cout查找成功;cout-----------------------endl;cout学号p-numendl;cout姓名p-nameendl;cout语文p-score[1]endl;cout高数p-score[2]endl;cout英语p-score[3]endl;cout专业课p-score[4]endl;cout总分p-totalendl;system(pause);
}
void studentmessage::maxmin() {system(cls);student *p,*q;phead-next;for(p; p-next!NULL; pp-next) {for(qp-next; q-next!NULL; qq-next) {if(q-totalp-total)swap(q,p);}}cout最高分的名字是:head-next-nameendl;student *p1head-next;//cout最低分的名字是:p1-nameendl; while(p1-next-next!NULL){
// cout最低分的名字是:p1-nameendl; p1p1-next;} cout最低分的名字是:p1-nameendl; cout输出成功endl;system(pause);}
void studentmessage::average() {system(cls);student *phead-next;double average[5];int i0;for(p; p!NULL; pp-next) {average[1]average[1]p-score[1];average[2]average[2]p-score[2];average[3]average[3]p-score[3];average[4]average[4]p-score[4];i;}cout语文平均成绩average[1]/iendl;cout高数平均成绩average[2]/iendl;cout英语平均成绩average[3]/iendl;cout专业课平均成绩average[4]/iendl;system(pause);
}
void studentmessage::save() {system(cls);out.open(file.text);student *phead-next;//out1 ;if(head-nextNULL) {cout没有文件endl;return ;} else {// out学号: 姓名: 语文: 高数: 英语: 专业课: 总分: endl;for(p; p-next!NULL; pp-next) {out ;outp-num ;outp-name ;outp-score[1] ;outp-score[2] ;outp-score[3] ;outp-score[4] ;outp-totalendl;}}out.close();cout文件保存成功!endl;system(pause);
}
void studentmessage::youxiu() {system(cls);student *phead-next;for(p; p!NULL; pp-next) {if(p-total340p-score[1]70p-score[2]70p-score[3]70p-score[4]70) {cout-----------------------endl;cout学号p-numendl;cout姓名p-nameendl;cout语文p-score[1]endl;cout高数p-score[2]endl;cout英语p-score[3]endl;cout专业课p-score[4]endl;cout总分p-totalendl;cout------------------------endl;continue;}}system(pause);
}
void studentmessage::bukao() {system(cls);student *phead-next;out.open(bukao.text);out补考名单endl;for(p; p!NULL; pp-next) {if(p-score[1]60||p-score[2]60||p-score[3]60||p-score[4]60) {outp-nameendl;;continue;}}out.close();cout文件保存成功endl;system(pause);
}
class teather :public studentmessage {public:// teather();void menu();};
void teather::menu() {system(cls);system(date/t);system(time/t);system(color 5F);cout\t\t\t\t***************************************************endl;cout\t\t\t\t-------------------老师管理系统--------------------endl;cout\t\t\t\t 1.录入信息 endl;cout\t\t\t\t 2.显示信息 endl;cout\t\t\t\t 3.修改信息 endl;cout\t\t\t\t 4.删除信息 endl;cout\t\t\t\t 5.添加信息 endl;cout\t\t\t\t 6.查找信息 endl;cout\t\t\t\t 7.总分排序 endl;cout\t\t\t\t 8.平均成绩 endl;cout\t\t\t\t 9.优秀名单 endl;cout\t\t\t\t 10.保存信息 endl;cout\t\t\t\t 11.最大最小 endl;cout\t\t\t\t 12.补考名单 endl;cout\t\t\t\t 13.退出系统 endl;cout\t\t\t\t***************************************************endl;system(pause);
}
class studentstudent:public studentmessage {public:
};
int main() {coutendlendlendlendlendlendlendlendlendl;cout.width(65);cout 系统正在启动请稍等;for(int i0; i7; i) {printf( .);Sleep(200);}int flag1;while (flag) {system(cls);system(date/t);system(time/t);system(color 3F);cout\t\t\t\t---------------------------------------\t\t\t\tendl;cout\t\t\t\t--------欢迎来到学生信息管理系统-------\t\t\t\tendl;cout\t\t\t\t---------------1.老师管理--------------\t\t\t\tendl;cout\t\t\t\t---------------2.学生管理--------------\t\t\t\tendl;cout\t\t\t\t---------------3.退出系统--------------\t\t\t\tendl;cout\t\t\t\t---------------------------------------\t\t\t\tendl;int i;cout请选择(1,2,3)endl;cini;if(i1) {teather m;int flag11;while(flag1) {m.menu();cout你选择的编号endl;int n;cinn;switch(n) {case 1:system(cls);m.add();break;case 2:system(cls);m.display();break;case 3:system(cls);m.xiugai();break;case 4:system(cls);m.shanchu();break;case 5:system(cls);m.tianjia();break;case 6:system(cls);m.chazhao();break;case 7:system(cls);m.rank();break;case 8:system(cls);m.average();break;case 9:system(cls);m.youxiu();break;case 10:system(cls);m.save();break;case 11:system(cls);m.maxmin();break;case 12:system(cls);m.bukao();break;case 13:system(cls);flag10;break;}}}if(i2) {studentstudent w;int flag21;while(flag2) {w.menu();cout你选择的编号endl;int n;cinn;switch(n) {case 1:system(cls);w.add();break;case 2:system(cls);w.display();break;case 3:system(cls);w.xiugai();break;case 4:system(cls);w.shanchu();break;case 5:system(cls);w.tianjia();break;case 6:system(cls);w.chazhao();break;case 7:system(cls);w.save();break;case 8:system(cls);flag20;break;}}}if(i3) {system(cls);cout欢迎下次再来endl;flag0;system(pause);} else {system(cls);cout欢迎来到主页面endl;system(pause);}}return 0;
}6) 案例六
#includeiostream
#includecstring
#includestdlib.h
#includefstreamusing namespace std;class Student{public:int id;char name[20];char sex[20];int age;int score;
};class operate:public Student{public:int n;operate(int score1){scorescore1;} operate *next;operate *creat(operate *head);void add(operate *head);void del(operate *head);void search(operate *head);void rewrite(operate *head);void show(operate *head);void sort(operate *head);int save(operate *head);void read(operate *head);void headline();
};//void operate::save(operate *head)
//{
// ofstream outfile(D:\\a.txt);
// if(!outfile)
// {
// cerropen error!endl;
// exit(1);
// }
// operate *phead-next;
// while(p)
// {
// outfilep-scoreendl ;
// pp-next;
// }
// outfile.close();
// cout保存完成endl;
//}int operate::save(operate *head)
{operate *phead-next;fstream outfile(D:\\a.txt,ios::out);if(!outfile){coutFile open errorendl;return -1;}while(p!NULL){outfilep-idendl;outfilep-nameendl;outfilep-sexendl;outfilep-ageendl;outfilep-scoreendl;pp-next;}outfile.close();cout保存成功endl;
}void operate::read(operate *head)
{fstream infile(D:\\a.txt,ios::in);if(!infile){cerrread error!endl;exit(1);}operate *phead-next;while(p!NULL){infilep-id;infilep-name;infilep-sex;infilep-age;infilep-score;coutid:p-idendl;coutname:p-nameendl;coutsex:p-sexendl;coutage:p-ageendl;coutscore:p-scoreendl;pp-next;}infile.close();cout读取完毕endl;
}/*void operate::save(operate *head)
{FILE *fp;operate *p;phead-next;if((fpfopen(stu.txt,a))NULL){couterrorendl;return ; }while(p!NULL){fprintf(fp, %d \n,p-score);pp-next; }cout保存成功endl;fclose(fp);
}*//*void operate::read(operate *head)
{FILE *fp;operate *pt;int i0;pthead-next;if((fpfopen(stu.txt,r))NULL){couterror; exit(0); }fscanf(fp,%d ,pt-score);while(pt!NULL) { i;cout第i个学生的分数pt-scoreendl;ptpt-next;}fclose(fp);}*/operate *operate::creat(operate *head)
{head(operate *)malloc(sizeof(operate));operate *p;phead;p-nextNULL;int id1;char name1[20];char sex1[20];int age1;int score1;cout请输入要添加的人数endl;cinn;for(int i0;in;i){operate *q(operate *)malloc(sizeof(operate));coutidendl;cinid1;coutnameendl;cinname1;coutsexendl;cinsex1;coutageendl;cinage1;coutscoreendl;cinscore1;q-idid1;strcpy(q-name,name1);strcpy(q-sex,sex1);q-ageage1;q-scorescore1;p-nextq;q-nextNULL;pq;}return head;
}
void operate::show(operate *head)
{operate *p;phead-next;while(p!NULL){coutid:p-idendl;coutname:p-nameendl;coutsex:p-sexendl;coutage:p-ageendl;coutscore:p-scoreendl;pp-next;}
}void operate::add(operate *head)
{operate *p1,*p2,*p3;int b;p1head;p3p1-next;int id1;cout请输入要插入哪个id后endl;cinid1;while (p3!NULL){if(p3-idid1){b0;break;}p3p3-next;}if(b0){cout请输入要插入的数endl;p2(operate *)malloc(sizeof(operate));cinp2-id;cinp2-name;cinp2-sex;cinp2-age;cinp2-score;p2-nextp3-next;p3-nextp2; }else{cout无此学生endl;}
}void operate::del(operate *head)
{operate *p,*q;int b1,d0;qhead;pq-next; cout请输入要删除的idendl;int id1;cinid1;while (p-id!id1) {qq-next;pp-next;if(pNULL){cout无此学生删除失败endl;b0;break;}}if(b!0){q-nextp-next;free(p);}}void operate::search(operate *head)
{operate *p,*q;int b;qhead;phead-next;int id1;cout请输入要查找的idendl;cinid1;while(p!NULL){if(p-idid1){b1;coutid:p-idendl;coutname:p-nameendl;coutsex:p-sexendl;coutage:p-ageendl;coutscore:p-scoreendl;break;}else if(b!1){cout无此学生endl;}qq-next;pp-next; }} void operate::rewrite(operate *head)
{operate *p,*q;qhead;phead-next;int id1;cout请输入要修改的idendl;cinid1;while(p!NULL){if(p-idid1){cout请输入修改后的数据endl;cinp-id;cinp-name;cinp-sex;cinp-age;cinp-score;break;}qq-next;pp-next;if(q-id!id1){cout无此学生,修改失败endl;break;}}}void operate::sort(operate *head)
{operate *p,*q,*q1;int score1;char name_[20];char sex_[20];int age1;int id_;q1head-next;int k0;while(q1!NULL){ k;q1q1-next;}for(int i0;ik;i){for(phead-next,qp-next;p!NULL,q!NULL;pp-next,qq-next){if(p-scoreq-score){score1q-score;q-scorep-score;p-scorescore1;strcpy(name_,q-name);strcpy(q-name,p-name);strcpy(p-name,name_);strcpy(sex_,q-sex);strcpy(q-sex,p-sex);strcpy(p-sex,sex_);age1q-age;q-agep-age;p-ageage1;id_q-id;q-idp-id;p-idid_;}} }
}void operate::headline()
{printf( 欢迎使用学生信息管理系统 \n);printf(学生信息管理系统\n);printf( 1.录入学生信息 \n);printf( 2.添加学生信息 \n);printf( 3.删除学生信息 \n);printf( 4.查询学生信息 \n);printf( 5.修改学生信息 \n);printf( 6.学生成绩排序 \n);printf( 7.学生成绩储存 \n);printf( 8.学生成绩读取 \n);printf( 9.退出系统 \n);
}int main() {system(color 5F);int i;operate *head;operate a(1);do {a.headline();printf( 请选择1-8 \n);printf(\n);scanf(%d,i);switch(i) {case 1:heada.creat(head);a.show(head);break;case 2:a.add(head);a.show(head);break;case 3:a.del(head);a.show(head);break;case 4:a.search(head);break;case 5:a.rewrite(head);a.show(head);break;case 6:a.sort(head);a.show(head);break;case 7:a.save(head);break;case 8:a.read(head);break;case 9:break;default:cout选择错误请重选endl;}system(pause);system(cls);} while(i!9);return 0;}//int main()
//{
// operate *head;
// operate a(1);
// heada.creat(head);
// a.show(head);a.add(head);a.show(head);a.del(head);a.show(head);a.search(head); a.rewrite(head);a.show(head);
// a.sort(head);
// a.show(head);
// a.save(head);
// a.read(head);
// return 0;
//}/* int c;cout请输入插入方式(1.头插 2.尾插 3.中插)endl;cinc;switch(c){case 1:operate *p;p(operate *)malloc(sizeof(operate));cout输入要插入的分数endl;cinp-score;p-nexthead-next;head-nextp;break;case 2:operate *p1,*q;qhead-next;p1(operate *)malloc(sizeof(operate));cout输入要插入的分数endl;int score1;cinscore1;p1-scorescore1;while(q!NULL){if(q-scorescore1){cout已存在的分数请重新输入。endl;break;}qq-next;} p1q-next;p1-nextNULL;}
*/7) 案例七
//录入其信息如学生姓名性别专业出生日期家庭地址英语入学成绩
#includeiostream
#includestring
//#includestring.h
#includefstream
#includeconio.h
//#includewindows.h
//#includetime.husing namespace std;
class student //信息
{public:student(string name,string sex,string major,string birthday,string home,string englishscore);student(string zhanghao,string mima);string s_name ; //姓名 string s_sex ; //性别 string s_major ; //专业 string s_birthday ; //生日 string s_home ; //住址 string s_englishscore; //英语成绩int i_studentnum; //学生人数 student ** student_p; //学生指针bool panduanwenjian; //判断文件 int getnum(); //得到文件中内用数量 void init(); //初始化数据void dayin(); //打印 int panduanxuesheng(string name); //判断学生是否存在 ~student();
};student::student(string name,string sex,string major,string birthday,string home,string englishscore)
{this-s_namename;this-s_sexsex;this-s_majormajor;this-s_birthdaybirthday;this-s_homehome;this-s_englishscoreenglishscore;this-i_studentnum0;this-student_pNULL;
}student::~student()
{if(this-student_p!NULL){delete[] this-student_p;this-student_pNULL;}
}class function:public student //功能
{public:function(string name,string sex,string major,string birthday,string home,string englishscore);function(string zhanghao,string mima); void mulu(); //目录void tuichu(); //退出 void zengjia(); //增加void shanchu(); //删除void duwenjian(); //读文件 void chazhao(); //查找void xiugai(); //修改void xianshi(); //显示 void tongji(); //统计void paixu(); //排序void cunwenjian(); //存文件~function(){};
};function::function(string name,string sex,string major,string birthday,string home,string englishscore):student(name,sex,major,birthday,home,englishscore)
{}void function::zengjia() //增加
{cout请输入要添加的学生数endl;int addnum;cinaddnum;if(addnum0){int newsizethis-i_studentnumaddnum;student ** newspacenew student * [newsize];if(this-student_p!NULL){for(int i0;ithis-i_studentnum;i){newspace[i]this-student_p[i];}}for(int i0;iaddnum;i){string name,sex,major,birthday,home,englishscore;cout请输入第i1个新学生姓名endl;cinname;cout请输入第i1个新学生性别endl;cinsex;cout请输入第i1个新学生专业endl;cinmajor;cout请输入第i1个新学生生日endl;cinbirthday;cout请输入第i1个新学生住址endl;cinhome;cout请输入第i1个新学生英语成绩endl;cinenglishscore;student * stuNULL;stunew student(name,sex,major,birthday,home,englishscore);newspace[this-i_studentnumi]stu;}delete [] this-student_p;this-student_pnewspace;this-i_studentnumnewsize;this-panduanwenjianfalse; cout成功添加addnum名学生endl;}else{cout输入有误endl;}system(pause);system(cls);
} void function::shanchu() //删除
{if(this-panduanwenjian){cout文件不存在或为空endl;}else{cout请输入要删除的姓名endl;string name;cinname;int indexthis-panduanxuesheng(name);if(index!-1){for(int iindex;ithis-i_studentnum-1;i){this-student_p[i]this-student_p[i1];}this-i_studentnum--;this-cunwenjian();cout删除成功endl;}else{cout删除失败未找到该学生endl;} }system(pause);system(cls);
} void function::duwenjian() //读文件
{ifstream ifs;ifs.open(wenjian.txt,ios::in);if(!ifs.is_open()){cout文件不存在endl;this-i_studentnum0;this-panduanwenjiantrue;this-student_pNULL;ifs.close();system(pause);system(cls);return ; }char ch;ifsch;if(ifs.eof()){cout文件为空endl;this-i_studentnum0;this-panduanwenjiantrue;this-student_pNULL;ifs.close();system(pause);system(cls);return ;}int numthis-getnum();
// cout文件中学生数为numendl; //测试
// system(pause);this-i_studentnumnum;this-student_pnew student * [this-i_studentnum];init();
// for(int i0;ii_studentnum;i) //测试
// {
// cout姓名this-student_p[i]-s_nameendl;system(pause);
// }
}void function::chazhao() //查找
{if(this-panduanwenjian){cout文件不存在或为空endl;}else{cout请输入要查找的学生姓名endl;string name;cinname;bool flagfalse;for(int i0;ii_studentnum;i){if(student_p[i]-s_namename){cout查找成功信息如下endl;flagtrue;this-student_p[i]-dayin();}}if(flagfalse){cout查找失败查无此人endl;}}system(pause);system(cls);
}void function::xiugai() //修改
{if(this-panduanwenjian){cout文件不存在或为空endl;}else{cout请输入要修改的学生的姓名endl;string name;cinname;int retthis-panduanxuesheng(name);if(ret!-1){delete this-student_p[ret];string newname;string newsex;string newmajor;string newbirthday;string newhome;string newenglishscore;cout查到name同学请输入新姓名endl;cinnewname;cout请输入新性别endl;cinnewsex;cout请输入新专业endl;cinnewmajor;cout请输入新生日endl;cinnewbirthday;cout请输入新住址endl;cinnewhome;cout请输入新英语成绩endl;cinnewenglishscore;student * stuNULL;stunew student(newname,newsex,newmajor,newbirthday,newhome,newenglishscore);this-student_p[ret]stu;cout修改成功endl; }else{cout修改失败查无此人endl;}}system(pause);system(cls);
}void function::xianshi() //显示
{if(this-panduanwenjian){cout文件不存在或为空!endl;}else{for(int i0;ii_studentnum;i){this-student_p[i]-dayin();}}system(pause);system(cls);
}void function::tongji() //统计
{if(this-panduanwenjian){cout文件不存在或为空!endl;}else{ int a10,a20;for(int i0;ii_studentnum;i){if(this-student_p[i]-s_sex男){a1;}else{a2;}}cout男生人数a1endl; cout女生人数a2endl;}system(pause);system(cls);
}void function::paixu() //排序
{if(this-panduanwenjian){cout文件不存在或为空!endl;}else{for(int i0;ii_studentnum;i){int maxi;for(int ji1;ji_studentnum;j){if(student_p[max]-s_englishscorestudent_p[j]-s_englishscore){maxj;}}if(i!max){student * tempstudent_p[i];student_p[i]student_p[max];student_p[max]temp;}}cout排序成功结果为endl;this-cunwenjian();this-xianshi();}
}void function::cunwenjian() //存文件
{ofstream ofs;ofs.open(wenjian.txt,ios::out);for(int i0;ithis-i_studentnum;i){ofsthis-student_p[i]-s_name this-student_p[i]-s_sex this-student_p[i]-s_major this-student_p[i]-s_birthday this-student_p[i]-s_home this-student_p[i]-s_englishscoreendl;}ofs.close();
}void student::dayin() //打印
{cout姓名this-s_name\t性别this-s_sex\t专业this-s_major\t生日this-s_birthday\t住址this-s_home\t英语成绩this-s_englishscoreendl;
}int student::getnum() //得文件中学生数量
{ifstream ifs;ifs.open(wenjian.txt,ios::in);int num0;string s_name ; //姓名 string s_sex ; //性别 string s_major ; //专业 string s_birthday ; //生日 string s_home ; //住址 string s_englishscore; //英语成绩while(ifs s_name ifs s_sex ifs s_major ifs s_birthday ifs s_home ifs s_englishscore) {num;}ifs.close();return num;
}void student::init() //初始化
{ifstream ifs;ifs.open(wenjian.txt,ios::in);string s_name ; //姓名 string s_sex ; //性别 string s_major ; //专业 string s_birthday ; //生日 string s_home ; //住址 string s_englishscore; //英语成绩int index0;while(ifs s_name ifs s_sex ifs s_major ifs s_birthday ifs s_home ifs s_englishscore){student * stuNULL;stunew student(s_name,s_sex,s_major,s_birthday,s_home,s_englishscore);this-student_p[index]stu;index;}ifs.close();
}int student::panduanxuesheng(string name) //判断学生
{int index-1;for(int i0;ithis-i_studentnum;i){if(this-student_p[i]-s_namename){indexi;break;}}return index;
}void function::mulu() //目录
{cout**************************************endl;cout*****欢迎使用新生基本信息统计软件*****endl;cout\t1. 学生信息新增\tendl;cout\t2. 学生信息删除\tendl;cout\t3. 学生信息导入\tendl;cout\t4. 学生信息搜索\tendl;cout\t5. 学生信息修改\tendl;cout\t6. 学生信息显示\tendl;cout\t7. 学生信息统计(男/女)\tendl;cout\t8. 按英语成绩排序\tendl;cout\t9. 学生信息保存\tendl;cout\t0. 退出\tendl;cout**************************************endl;coutendl;
}void function::tuichu() //退出
{cout--------------------endl;cout谢谢使用endl;system(pause);exit(0);
}struct user{string password;string name;};void zhuce() //注册
{system(cls);string name;char *password new char[20];user c;ifstream fin;fin.open(user.txt,ios::in); cout请输入用户名;cinname;while(finc.namec.password){if(namec.name){cout该用户名已被占用endl;system(pause);zhuce();}}char test;int i0;cout输入密码;while((testgetch())!\r){if(test0){if(i0){couttest test;password[i--]\0;}}else{if(i20){cout*;password[i]test;i;}}}password[i]\0;coutendl再次输入密码;char *password2new char[20];i0;while((testgetch())!\r){if(test0){if(i0){couttest test;password2[i--]\0;}}else{if(i20){cout*;password2[i]test;i;}}password2[i]\0;}if(passwordpassword2){coutendl两次密码不正确endl;system(pause);zhuce();}else{coutendl注册成功endl;system(pause); }ofstream fout;fout.open(user.txt,ios_base::out|ios_base::app);foutname passwordendl;fout.close();
}void denglu() //登录
{system(cls);char * passwordnew char[20];string name;cout用户名;cinname;cout密码;char test;int i0;while((testgetch())!\r){if(test0){if(i0){couttest test;password[i--]\0;}}else{if(i20){cout*;password[i]test;i;}}}password[i]\0;ifstream fin;fin.open(user.txt,ios_base::in);if(fin.fail()){cout文件打开失败endl;}user c;int f1;while(finc.namec.password){if(c.namenamec.passwordpassword){coutendl登陆成功endl;system(pause); f11;
// ntreface();}}if(f10){cout用户名或密码错误endl;system(pause);denglu();
// logo();}
}void dengluzhuce() //登陆注册
{while(1){system(cls);system(color 0b);cout*********欢迎使用新生基本信息统计软件*********endl;cout\t\t1.登录\t\tendl;cout\t\t2.注册\t\tendl;cout\t\t3.退出\t\tendl;int a;cina;switch(a){case 1:denglu();return ;break;case 2:zhuce();break;case 3:exit(0);break;default:break;} }}int main()
{system(mode con cols50 lines25);dengluzhuce();function p1(0,0,0,0,0,0);int a1;while(a){system(color 07); system(cls);p1.mulu();int b;cinb;switch(b){case 1://新增学生信息p1.zengjia();break;case 2://删除学生信息p1.shanchu();break;case 3://导入学生信息(读取文件)p1.duwenjian(); break;case 4://学生信息搜索 (按姓名)p1.chazhao();break;case 5://修改 p1.xiugai();break;case 6://显示p1.xianshi(); break;case 7://学生信息统计(按专业或性别或年龄)p1.tongji();break;case 8://按英语成绩排序p1.paixu();break;case 9://学生信息保存(入文件)p1.cunwenjian();break;case 0://退出p1.tuichu();break;default:cout指令错误endl;system(pause);system(cls);break;}}return 0;
}8) 案例八
#includeiostream
#includestring
#includefstream
#includestdlib.h
#includewindows.h
using namespace std;
class student {public:int num;char name[20];float chi;float eng;float math;float syn;float total;float paiming;student *next;
};
class operate:public student {private:student*head;student*p;public:operate();void paixu();void shuchuzongfen();void conserve();void input();void maxmin();void duqu();void zongfendanke();void gekepingjunfen();void bukao();void del();void add();void find();void change();
};
operate::operate() { //创建头结点headnew student;head-nextNULL;phead;
}void operate::input() {phead;student*q;int temp;cout请输入输入学生人数endl;cintemp;for(int i0; itemp; i) {qnew student;cout\n请输入学生信息\nendl;cout学号endl;cinq-num;cout姓名endl;cinq-name;cout语文endl;cinq-chi;cout数学endl;cinq-math;cout英语endl;cinq-eng;cout综合endl;cinq-syn;q-totalq-chiq-engq-mathq-syn;cout总分q-totalendl;p-nextq;pp-next;}q-nextNULL;cout\n******************录入成功*******************\n;cout按任意键继续...endl;system(pause);system(cls);
}void operate::add() {student*q,*s,*p;phead;sp-next;qnew student;cout\n请输入学生信息\nendl;cout学号endl;cinq-num;cout姓名endl;cinq-name;cout语文endl;cinq-chi;cout数学endl;cinq-math;cout英语endl;cinq-eng;cout综合endl;cinq-syn;q-totalq-chiq-engq-mathq-syn;cout总分q-totalendl;p-nextq;q-nexts;cout\n******************添加成功*******************\n;cout按任意键继续...endl;system(pause);system(cls);
}void operate::del() {phead;student*q;int delnum;cout输入要删除的学生学号endl;cindelnum;while(p-next!NULL) {qp-next;if(delnumq-num) {p-nextq-next;delete q;} else {pp-next;}}cout删除成功endl;system(pause);system(cls);
}void operate::find() {phead;int findnum;cout请输入查询的学生学号endl;cinfindnum;while(p-next!NULL) {if(p-next-numfindnum) {cout姓名p-next-nameendl;cout学号p-next-numendl;cout语文p-next-chiendl;cout数学p-next-mathendl;cout英语p-next-engendl;cout综合p-next-synendl;cout总分p-next-totalendl;cout排名p-next-paimingendl;break;}pp-next;if(p-nextNULL) {cout查无此人endl;}}system(pause);
}void operate::change() {phead;int ID;cout请输入要修改的学生学号endl;cinID;while(p-next!NULL) {if(p-nextNULL) {cout查无此人endl;}if(p-next-numID) {cout请输入姓名endl;cinp-next-name;cout请输入学号endl;cin p-next-num;cout请输入语文成绩endl;cinp-next-chi;cout请输入数学成绩endl;cinp-next-math;cout请输入英语成绩endl;cinp-next-eng;cout请输入综合成绩endl;cinp-next-syn;p-next-total p-next-math p-next-eng p-next-chip-next-syn;cout总成绩p-next-totalendl;}pp-next;}cout修改学生信息完毕endl;system(pause);system(CLS);
}void operate::paixu() {student *q;phead;int n0;int a;char b[20];int i,j;while(p-next) {pp-next ;n;p-paimingn;}for(i0; in-1; i) {qhead-next;pq-next;for(j0; jn-i-1; j) {if(p-totalq-total ) {aq-num ;q-num p-num ;p-num a;aq-chi;q-chip-chi;p-chia;aq-math ;q-math p-math ;p-math a;aq-eng ;q-eng p-eng ;p-eng a;aq-syn;q-syn p-syn ;p-syna;aq-total;q-total p-total ;p-total a;strcpy(b,q-name);strcpy(q-name ,p-name );strcpy(p-name,b);}pp-next;qq-next;}}
}void operate::shuchuzongfen() {phead;student*qp-next;int n0;cout排名\t学号\t姓名\t语文\t数学\t英语\t综合\t总分endl;while(q!NULL) {coutq-paiming\tq-num\tq-name\tq-chi\tq-math\tq-eng\tq-syn\tq-totalendl;qq-next;}cout输出完毕endl;system(pause);system(cls);
}void operate::conserve() {phead;ofstream outfile; // 定义输出文件流 outfileoutfile.open(学生信息.txt,ios::out|ios::app);while(p-next!NULL) {outfile学号:p-next-num ;outfile姓名:p-next-name ;outfile语文:p-next-chi ;outfile英语:p-next-eng ;outfile数学:p-next-math ;outfile综合:p-next-syn ;outfile总分:p-next-total ;outfile排名:p-next-paiming ;outfile\n;pp-next;}outfile.close();cout保存学生信息成功endl;system(pause);system(cls);}void operate::maxmin() {phead;cout分数最高的学生p-next-nameendl;while(p-next!NULL) {pp-next;}cout分数最低的学生p-nameendl;cout输出完毕endl;system(pause);system(cls);
}void operate::duqu() {ifstream infile;infile.open(学生信息.txt,ios::in);phead;cout排名\t学号\t姓名\t语文\t数学\t英语\t综合\t总分endl;while(p-next!NULL) {coutp-next-paiming\tp-next-num\tp-next-name\tp-next-chi\tp-next-math\tp-next-eng\tp-next-syn\tp-next-totalendl;pp-next;}infile.close();cout输出完毕endl;system(pause);system(cls);
}void operate::zongfendanke() {phead-next;while(p!NULL) {if(p-total340p-chi80p-math80p-eng80p-syn80) {cout总分在340分单科成绩不低于80分的学生:p-nameendl;}pp-next;}cout输出完毕endl;system(pause);system(cls);
}void operate::gekepingjunfen() {phead;int n0;float a0,b0,c0,d0;float e,f,g,h;while(p!NULL) {n;ap-chia;bp-mathb;cp-engc;dp-synd;pp-next;}ea/(n-1);fb/(n-1);gc/(n-1);hd/(n-1);cout语文平均分eendl;cout数学平均分fendl;cout英语平均分gendl;cout综合平均分: hendl;cout输出完毕endl;system(pause);system(cls);
}void operate::bukao() {phead-next;ofstream outfile; // 定义输出文件流 outfileoutfile.open(补考名单.txt,ios::out|ios::app);while(p!NULL) {if(p-chi60p-math60p-eng60p-syn60) {cout补考学生名单:p-nameendl;outfile姓名p-name\n;}pp-next;}outfile.close();cout输出完毕已存入文件endl;system(pause);system(cls);
}int menu() {cout ********************************** \nendl;cout ***********目录************\nendl;cout 输入学生信息1\nendl;cout 增加学生信息2\nendl;cout 删除学生信息3\nendl;cout 查询学生信息4\nendl;cout 修改学生信息5\nendl;cout 保存学生信息6\nendl;cout 读取学生信息7\nendl;cout 输出总分最高及最低学生8\nendl;cout总分在340分单科成绩不低于80分学生名单9\nendl;cout 求出各科平均分数10\nendl;cout 按总分排名11\nendl;cout 输出补考名单并存入文件12\nendl;cout 退出程序13\nendl;cout ********************************** \nendl;
}int main() {system(color f5);int m;operate x;while(1) {menu();cinm;switch(m) {case 1:x.input();break;case 2:x.add();break;case 3:x.del();break;case 4:x.paixu();x.find();break;case 5:x.change();break;case 6:x.paixu();x.conserve();break;case 7:x.duqu();break;case 8:x.paixu();x.maxmin();break;case 9:x.zongfendanke();break;case 10:x.gekepingjunfen();break;case 11:x.paixu();x.shuchuzongfen();break;case 12:x.bukao();break;case 13:cout欢迎下次使用endl;return 0;break;}}}9) 案例九
#includeiostream
#includefstream
#includeiomanip
#includecstring
#includestdlib.h
#includewindows.h
#includeconio.h
using namespace std;
int n0;
char stop[12] {0};
char name[12];
class Student {public:int id; char name[12];char sex[3];char major[20];char addr[30];char year[5];char month[3];char day[3];int engli;char remark[100];Student *next;
};class Utils{public:virtual Student *add(Student *head)0;virtual Student *delet(Student *head)0;virtual void *search(Student *head)0;virtual Student *modify(Student *head)0;
};class information : public Utils {private:Student *head,*p1,*p2,*p3;public:information(){};Student *creat();Student *add(Student *head);Student *delet(Student *head);void *search(Student *head);Student *modify(Student *head);Student *sort(Student*head);Student *statistics(Student*head);void display(Student *head);void displaynode(Student *head);void write_file(Student *head);Student * read_file();~information () {};
};class manage {public:char menu_manager();char menu_user();int choose_manager();int choose_user(Student *head);
};
information s;
Student *information::creat() {p1p2new Student;headNULL;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);cout请输入学生的基本信息以姓名为0结束。\n;while(1) {cout姓名: \t;cinp1-name;if( strcmp(stop,p1-name)0 ) {break;}cout学号: \t;cinp1-id;cout性别: \t;cinp1-sex;while(strcmp(sex1,p1-sex)!0 strcmp(sex2,p1-sex)!0 ) {cout请输入格式 男/女请重新输入endl;cout性别: \t;cinp1-sex;}cout专业: \t;cinp1-major;cout家庭住址: \t;cinp1-addr;cout出生年:;cinp1-year;cout出生月:;cin p1-month;cout出生日:;cinp1-day;cout英语:;cinp1-engli;while(p1-engli0 || p1-engli100) {cout英语成绩必须在0-100之间请重新输入endl;cout英语:;cinp1-engli;}cout备注:;cinp1-remark;system(cls);nn1;if(n1)headp1;elsep2-nextp1;p2p1;p1new Student;}p2-nextNULL;return head;
}
Student *information::statistics(Student*head) {p1new Student;p1head;int x0,y0;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);for(p1head; p1!NULL; p1p1-next) {if(strcmp(sex1,p1-sex)0 ) {xx1;}if(strcmp(sex2,p1-sex)0) {yy1;}}cout男: xendl;cout女: yendl;return head;
}Student *information::add(Student *head) {p1p3new Student;p1head;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);if(p1NULL) {cout在添加前先新建!endl;return 0;} else {cout请输入要添加学生的信息\n;cout姓名: \t;cinp3-name;cout学号: \t;cinp3-id;cout性别: \t;cinp3-sex;while(strcmp(sex1,p3-sex)!0 strcmp(sex2,p3-sex)!0 ) {cout请输入格式 男/女请重新输入endl;cout性别: \t;cinp3-sex;}cout专业: \t;cinp3-major;cout家庭住址: \t;cinp3-addr;cout出生年:;cinp3-year;cout出生月:;cin p3-month;cout出生日:;cinp3-day;cout英语:;cinp3-engli;while(p3-engli0 || p3-engli100) {cout英语成绩必须在0-100之间请重新输入endl;cout英语:;cinp3-engli;}cout备注:;cinp3-remark;cout\n;p3-nextp1-next;p1-nextp3;cout添加成功!\n;}return head;
}Student *information::delet(Student *head) {p2p1new Student;if(headNULL) {cout没有数据无法删除;return 0;}cout请输入要删除学生的名字\n;cinname;p2p1head;int j0;if( ( strcmp(name,head-name)0 ) (head!NULL)) {headhead-next;free(p1);j1;} else {p1head-next;while(p1!NULL) {if(strcmp(name,p1-name)0) {p2-nextp1-next;free(p1);j1;break;} else {p2p1;p1p2-next;}}}if(j0)cout此学生不存在删除失败!\n;elsecout删除成功!\n;return head;
}void *information::search(Student *head) {char name[20];p1new Student;cout请输入要查找学生的姓名\n;cinname;p1head;for(p1head; p1!NULL; p1p1-next) {if(strcmp(name,p1-name)0 ) {cout学号:p1-idendl;cout姓名:p1-nameendl;cout性别:p1-sexendl;cout专业:p1-majorendl;cout家庭住址:p1-addrendl;cout出生日期:p1-year年p1-month月p1-day日出生endl;cout英语成绩:p1-engliendl;cout备注:p1-remarkendl;}}return head;
}Student *information::modify(Student *head) {if(headNULL) {cout没有数据请新建数据!;return 0;}char name1[12];char sex[3];char major[20];char addr[30];char year[5];char month[3];char day[3];int engli;char remark[100];p1new Student;int j0;p1head;cout请输入你要更改学生的姓名:\n;cinname;if(strcmp( name, head-name)0) {cout显示要修改学生的信息:\n;s.displaynode(p1);cout请输入要更改学生的信息\n;cout姓名: \t;cinname1;cout性别: \t;cinsex;cout专业: \t;cinmajor;cout家庭住址: \t;cinaddr;cout出生年:;cinyear;cout出生月:;cinmonth;cout出生日:;cinday;cout英语:;cinengli;cout备注:;cinremark;strcpy(head-name,name1);strcpy(head-sex,sex);strcpy(head-major,major);strcpy(head-addr,addr);strcpy(head-year,year);strcpy(head-month,month);strcpy(head-day,day);head-engliengli;strcpy(head-remark,remark);j1;} else {p1head-next;while(p1!NULL) {if(strcmp(p1-name,name)0)cout显示要修改学生的信息:\n;s.displaynode(p1);cout请输入要更改学生的信息\n;cout姓名: \t;cinname1;cout性别: \t;cinsex;cout专业: \t;cinmajor;cout家庭住址: \t;cinaddr;cout出生年:;cinyear;cout出生月:;cinmonth;cout出生日:;cinday;cout英语:;cinengli;cout备注:;cinremark;strcpy(p1-name,name1);strcpy(p1-sex,sex);strcpy(p1-major,major);strcpy(p1-addr,addr);strcpy(head-year,year);strcpy(head-month,month);strcpy(head-day,day);p1-engliengli;strcpy(head-remark,remark);j1;break;}}if(j0)cout没有找到你要更改的学生更改失败\n;elsecout更改成功!\n;return head;
}void information::display(Student *head) {p1head;if(p1NULL)cout没有学生信息请先输入学生信息。endl;else {while(p1!NULL) {s.displaynode(p1);p1p1-next;}}
}
void information::displaynode(Student *head) {p1head;if(p1NULL)cout这是一个空表请先输入学生信息。endl;else {cout学号:p1-idendl;cout姓名:p1-nameendl;cout性别:p1-sexendl;cout专业:p1-majorendl;cout家庭住址:p1-addrendl;cout生日: p1-year年;coutp1-month月p1-day日endl;cout英语成绩:p1-engliendl;cout备注:p1-remarkendl;}
}Student *information::read_file() {int i0;int id;char name2[12];char major[20];char sex[3];char addr[30];char year[5];char month[3];char day[3];int engli;char remark[100];p1p2new Student;headNULL;ifstream in;in.open(E:\\新生管理系统.txt);if(!in) {cout打开文件失败endl;} else {while(!in.eof()) {inidname2sexmajoraddryearmonthdayengliremark;//判断是否到文件的末尾if(in.fail()){break;}p1-idid;strcpy(p1-name,name2);strcpy(p1-sex,sex);strcpy(p1-major,major);strcpy(p1-addr,addr);strcpy(p1-year,year);strcpy(p1-month,month);strcpy(p1-day,day);p1-engliengli;strcpy(p1-remark,remark);i;if(i1) {headp2p1;} else {p2-nextp1;}p2p1;p1new Student;p1-nextNULL;}cout成功读取文件内容如下endl;}return head;
}void information::write_file(Student *head) {ofstream out;out.open(E:\\新生管理系统.txt);if(!out) {cout打开文件失败endl;}p1NULL;p1head;while(p1) {outp1-id p1-name p1-sex p1-major p1-addr p1-year p1-month p1-day p1-engli p1-remarkendl;p1p1-next;}out.close();cout写入完毕。;
}Student *information::sort(Student *head) {Student *p,*q,*small;int id;char name[12];char sex[3];char major[20];char addr[30];char year[5];char month[3];char day[3];int engli;char remark[100];phead;for(; p-next!NULL; pp-next) {smallp;for(qp-next; q; qq-next) {if(q-englismall-engli) {smallq;}}if(small! p) {idp-id;p-idsmall-id;small-idid; englip-engli;p-englismall-engli;small-engliengli;strcpy(name,p-name);strcpy(p-name,small-name);strcpy(small-name,name);strcpy(major,p-major);strcpy(p-major,small-major);strcpy(small-major,major);strcpy(year,p-year);strcpy(p-year,small-year);strcpy(small-year,year);strcpy(month,p-month);strcpy(p-month,small-month);strcpy(small-month,month);strcpy(day,p-day);strcpy(p-day,small-day);strcpy(small-day,day);strcpy(addr,p-addr);strcpy(p-addr,small-addr);strcpy(small-addr,addr);strcpy(sex,p-sex);strcpy(p-sex,small-sex);strcpy(small-sex,sex);strcpy(remark,p-remark);strcpy(p-remark,small-remark);strcpy(small-remark,remark);}}return head;
}
char manage::menu_manager() {char ch;coutendl;coutendl;cout endl;cout endl;cout *****************新生管理系统**************** endl;cout * 1.新增学生信息 * endl;cout * 2.插入学生信息 * endl;cout * 3.删除学生信息 * endl;cout * 4.查找学生信息 * endl;cout * 5.修改学生信息 * endl;cout * 6.按照英语成绩排序 * endl;cout * 7.统计男/女人数 * endl;cout * 8.读取学生信息 * endl;cout * 9.保存信息退出 * endl;cout * 0.退出 * endl;cout *********************************************endl;cout请根据需要选择序号:endl;cinch;return ch;
}char manage::menu_user() {char ch;coutendl;coutendl;cout endl;cout endl;cout *****************新生管理系统**************** endl;cout * 1.查找学生信息 * endl;cout * 2.按照英语成绩排序 * endl;cout * 3.统计男/女人数 * endl;cout * 4.查询所有学生信息 * endl;cout * 0.退出 * endl;cout *********************************************endl;cout请根据需要选择序号:endl;cinch;return ch;
}
int manage::choose_manager() {manage m;information s;Student *head;headNULL;int n0;char c;while(1)switch (m.menu_manager()) {case1:heads.creat();system(pause);system(cls);break;case2:heads.add(head);system(pause);system(cls);break;case3:heads.delet(head);system(pause);system(cls);break;case4:s.search(head);system(pause);system(cls);break;case5:heads.modify(head);system(pause);system(cls);break;case6:s.sort(head);s.display(head);system(pause);system(cls);break;case7:s.statistics(head);system(pause);system(cls);break;case8:heads.read_file();s.display(head);system(pause);system(cls);break;case9:s.write_file(head);cout谢谢使用\n;system(pause);system(cls);return 0;case0:cout谢谢使用\n;system(pause);system(cls);exit(0);default:cout选择有错请重新选择\n;}
}int manage::choose_user(Student *p) {manage m;information s;Student *headp;int n0;char c;while(1)switch (m.menu_user()) {case1:s.search(head);system(pause);system(cls);break;case2:s.sort(head);s.display(head);system(pause);system(cls);break;case3:s.statistics(head);system(pause);system(cls);break;case4:s.display(head);system(pause);system(cls);break;case0:cout谢谢使用\n;system(pause);system(cls);exit(0);default:cout选择有错请重新选择\n;}
}//简易版等待动画
void Wait()
{int i 0,k 3;Sleep(1000);for (i 0; i 3;) {system(cls);cout k-- endl;i;Sleep(1000);}
}//升级版等待动画
void Wait1()
{Sleep(600);system(cls);int i,k,count;long int a,b;ikcount0;while(!kbhit()){if(count3){break;}if(k0){printf(Please wait);}ab0;for(a0;a6000;a)for(b0;b6000;b);printf(.);ab0;for(a0;a6000;a)for(b0;b6000;b);k;if(k6){k0;count;system(cls);}}
}int login(){int i;cout *-------------------------------------------------------*endl;cout * 欢迎使用新生报到管理系统 *endl;cout * ------------------------- *endl; cout * 1.管理员 *endl;cout * 2.普通用户 *endl; cout * *endl;cout * ------------------------------------------------------* endl;cout 请选择登录身份;cin i; return i;
}int main () {system(color 7C);int i;char ch;char str[20];char password[9] {123456};information f;Student *head;while(1){system(cls);int choose login();if(choose 1){while(1) {i0;system(cls);cout输入密码;chgetch() ;while(ch!13) {if(ch8i0) {i--;str[i]\0;system(cls);//清屏 重新输出*cout输入密码;for(int j0; ji; j) {cout*;}chgetch();} else {printf(*);str[i]ch;i;chgetch();}}str[i]\0;if(!strcmp(str,password)) {system(cls);cout正确;break;} else {cout\n密码错误!!;getch();system(cls);}}Wait1();system(cls);system(color 7d);manage m;m.choose_manager();}else if(choose 2){headf.read_file();Wait();system(cls);system(color 7d);manage m;m.choose_user(head);}else{cout 输入错误请重新输入 endl;system(pause);}}return 0;
}
10案例十
#includeiostream
#includestring.h
#includestdlib.h
#includefstream
#includewindows.h
using namespace std;
class student
{public:void scanf_student();void print_student();student *next;char name[20]; char sex[10]; int year; int month; int day; char major[20]; char grade; char address[30]; long long int number; float chinese_score; float math_score; float English_score; void save_file(student *head);void look_file(student *head);
};void student::scanf_student()
{cout\n\n;cout 请输入学生姓名;cinname;cout 请输入学生性别;cinsex; cout 请输入学生专业;cinmajor;cout 请输入学生班级;cingrade;cout 请输入学生家庭地址;cinaddress;cout 请输入学生家庭电话;cinnumber;cout 请输入学生入学语文成绩;cinchinese_score;cout 请输入学生入学数学成绩;cinmath_score;cout 请输入学生入学英语成绩;cinEnglish_score;} void student::print_student()
{cout\n\n;cout 学生姓名nameendl;cout\n;cout 学生性别sexendl;cout\n;cout 学生专业majorendl;cout\n;cout 学生班级gradeendl;cout\n;cout 学生家庭地址addressendl;cout\n;cout 学生家庭电话numberendl;cout\n;cout 学生入学语文成绩chinese_scoreendl; cout\n;cout 学生入学数学成绩math_scoreendl;cout\n;cout 学生入学英语成绩English_scoreendl;cout\n\n;
}void student::save_file(student *head)
{student *p;phead-next;ofstream ofile(入学新生信息.txt,ios::out);while(p!NULL){ofilep-name\tp-sex\tp-major\tp-grade\tp-address\tp-number\tp-chinese_score\tp-math_score\tp-English_score\n;pp-next;}ofile.close();cout\n\n保存成功\n\n; } void student::look_file(student *head)
{student *p1,*p2;p1p2head;ifstream ifile(入学新生信息.txt);if(!ifile){cout\n打开失败endl;exit(0);}while(!ifile.eof()){p1new student;if(p1NULL){cout\n创建失败endl;exit(0); }ifilep1-namep1-sexp1-majorp1-gradep1-addressp1-numberp1-chinese_scorep1-math_scorep1-English_score;p2-nextp1;p2p1;}ifile.close();p2-nextNULL;cout\n\n文件已打开\n\n;
}class function:public student
{public:void creat(student *head);void show(student *head);void amend(student *head);void search(student *head);void add(student *head);void delet(student *head);void sort(student *head);void count(student *head);
};void function::creat(student *head)
{student *p1,*p2;p1p2head;int z,i;cout\n请输入要输入新生的人数;cinz;system(CLS); for(i0;iz;i){p1new student;if(p1NULL){cout\n输入新生信息失败,请重新输入!\n\n;system(CLS);function school;school.creat(head);}cout\n*** 第i1个新生 ***;p1-scanf_student();p2-nextp1;p2p1;}p2-nextNULL;system(CLS);cout\n\n新生信息录入完毕\n\n;
} void function::show(student *head)
{student *phead-next;int a1;if(pNULL){cout\n\n没有新生信息\nendl;}while(p!NULL){cout\n*** 第a名新生 ***; p-print_student();pp-next;a;}
}
void function::amend(student *head)
{student *p;phead-next;char name[10],a[10] ;cout\n请输入要修改学生的姓名;cinname;while(p!NULL){if(strcmp(p-name,name)0){strcpy(a,name);break;}pp-next;}if(strcmp(a, )0){system(CLS);cout\n无该学生信息!endl;function school;school.amend(head);return;}p-print_student();cout修改为endl;p-scanf_student();system(CLS);cout\n\n修改成功\n\n;} void function::search(student *head)
{int c;char major[10],name[10],a[10] ;student *phead-next;cout\n*请输入查找学生的姓名;cinname;system(CLS);while(p!NULL){if(strcmp(p-name,name)0){strcpy(a,name);cout\n—— 学生信息 —— endl;p-print_student();}pp-next;}if(strcmp(a, )0){system(CLS);cout\n无该学生信息!endl;function school;school.search(head);}
}void function::add(student *head)
{int i,n;cout\n请输入要输入学生的人数;cinn;for(i0;in;i){student *phead,*p1;while(p-next!NULL){pp-next;}p1new student;cout\n请输入第i1个新生信息endl;p1-scanf_student();p1-nextNULL;p-nextp1;}system(CLS);cout\n\n添加成功\n\n;
}void function::delet(student *head)
{student *p,*q;phead;char name[10],a[10] ;cout\n请输入要删除新生的姓名;cinname;while(p-next!NULL){if(strcmp(p-next-name,name)0){strcpy(a,name);break;}pp-next;}if(strcmp(a, )0){system(CLS);cout\n没有这个新生的信息请重新输入\n;function school;school.delet(head);return;} qp-next;p-nextq-next;system(CLS);cout\n\n删除成功\n\n ;
}void function::sort(student *head)
{student *p,*q;phead;int sum-1;while(p!NULL) {sum;pp-next;}int i,j;float a;char k[50];for(i0;isum;i){phead-next;qp-next;for(j0;jsum-1;j){if(p-English_scorep-next-English_score){ap-next-chinese_score;p-next-chinese_scorep-chinese_score;p-chinese_scorea;ap-next-math_score;p-next-math_scorep-math_score;p-math_scorea;ap-next-English_score;p-next-English_scorep-English_score;p-English_scorea;strcpy(k,p-next-name);strcpy(p-next-name,p-name);strcpy(p-name,k);strcpy(k,p-next-sex);strcpy(p-next-sex,p-sex);strcpy(p-sex,k);strcpy(k,p-next-major);strcpy(p-next-major,p-major);strcpy(p-major,k);ap-next-grade;p-next-gradep-grade;p-gradea; strcpy(k,p-next-address);strcpy(p-next-address,p-address);strcpy(p-address,k); ap-next-number;p-next-numberp-number;p-numbera;}pp-next;} }system(CLS);cout\n共sum个新生!endl;cout\n按英语入学成绩排序\n ;int r1;qhead-next;while(q!NULL){cout\n*** 第r名 ***; q-print_student();qq-next;r;}
} void function::count(student *head)
{system(CLS);student *p; phead-next;cout\n —— 男生 ——\n; cout\n**************************\n\n;while(p!NULL){if(strcmp(p-sex,男)0){cout 男生姓名如下 ;coutp-nameendl; cout\n;} pp-next; }cout**************************endl;phead-next;cout\n\n\n —— 女生 ——\n; cout\n**************************\n\n;while(p!NULL){if(strcmp(p-sex,女)0){cout 女生姓名如下 ;coutp-nameendl; cout\n;}pp-next; }cout**************************\n\n\n\nendl;
} int main()
{int a;cout\n\n\t\t;system(color 1);cout欢;Sleep(60);system(color 2);cout迎;Sleep(60);system(color 3);cout使;Sleep(60);system(color 4);cout用;Sleep(60);system(color 5);cout学;Sleep(60);system(color 6);cout生;Sleep(60);system(color 7);cout成;Sleep(60);system(color 8);cout绩;Sleep(60);system(color 1);cout管;Sleep(60);system(color 2);cout理;Sleep(60);system(color 3);cout系;Sleep(60);system(color 8);cout统\n;Sleep(60);system(color f4);student *head;headnew student;if(headNULL){cout\n\n 开辟失败\nendl;exit(0);} function school;while(1){cout\n;cout\n;cout 1 . 录入学生信息 \n;cout 2 . 添加学生信息 \n;cout 3 . 显示学生信息 \n;cout 4 . 搜索学生信息 \n;cout 5 . 修改学生信息 \n;cout 6 . 删除学生信息 \n;cout 7 . 统计学生信息 \n;cout 8 . 英语成绩排序 \n;cout 9 . 保存学生信息 \n;cout 10. 打开学生文件 \n;cout 0 . 退出信息系统 \n;cout\n;cout\n*** 请选择;scanf(%d,a);switch(a){case 1:system(CLS);school.creat(head);break;case 2:system(CLS);school.add(head);break;case 3:system(CLS);school.show(head);break;case 4:system(CLS);school.search(head);break;case 5:system(CLS);school.amend(head);break;case 6:system(CLS);school.delet(head);break;case 7:system(CLS);school.count(head);break;case 8:system(CLS);school.sort(head);break; case 9:system(CLS);school.save_file(head);break;case 10:system(CLS);school.look_file(head);break;case 0:system(CLS);cout\n; cout\n;cout|| ||\n;cout|| ||\n;cout|| 再见 ||\n;cout|| ||\n;cout|| ||\n;cout\n;exit(0);default:system(CLS);cout输入有误endl; }}return 0;}11案例十一
#includeiostream
#includevector//vector容器的头文件
#includefstream//使用文件的头文件
#includeiomanip
#includewindows.h
using namespace std;
class Human {public:string hight;string weight;void Action() {coutlaughendl;coutcryendl;coutlearnendl;}
};
class Student:public Human { //学生类public://数据成员string number;//string为字符串类型string name;string math,english,computer;//函数成员Student(string nu0,string na0,string ma0,string en0,string co0);void setstudent(string Nu,string Na,string Ma,string en,string co);void setmath(string ma) {mathma;}void setenglish(string en) {englishen;}void setcomputer(string eo) {computereo;}bool searchByNum(string num) { //bool类型函数返回值返回ture或者falsereturn numbernum;}bool searchByName(string num) {return namenum;}bool search(string num) {return numbernum;}void display();
};Student::Student(string nu,string na,string ma,string en,string co) { //numbernu;namena;mathma;englishen;computerco;
}void Student::setstudent(string Nu,string Na,string Ma,string En,string Co) {numberNu;nameNa;mathMa;englishEn;computerCo;
}void Student::display() { //打印学生信息coutnumbersetw(8)namesetw(6)mathsetw(8)englishsetw(8)computerendl;
}class Order { //操作函数分为一个类protected:vectorStudentstu;public:Order() {}void Add(Students);void IdAdd(Studenti);void Delete();void DeleteAll();void Seek();void Alter(string ma,string en,string co);void Store();void Load();void Play();void Begin();void Exit();void Sort();void test();};void Order::Add(Students) { //添加学生的函数cout请输入需要添加的学号;cins.number;for(int i0; istu.size(); i)if(stu[i].search(s.number)) {cout该学号学生信息已存在;return;}cout姓名:;cins.name;cout数学成绩:;cins.math;cout英语成绩:;cins.english;cout计算机成绩:;cins.computer;stu.push_back(s);s.display();
}void Order::Delete() { //删除学生的函数string num;cout输入您需要删除的学生的学号;cinnum;for(int j0; jstu.size(); j) {if(stu[j].search(num))stu.erase(stu.begin()j);}coutnum学生信息已删除endl;Store();
}void Order::DeleteAll() { //清除学生数据stu.erase(stu.begin(),stu.end());cout清除成功endl;Store();
}void Order::Seek() { //查找学生的函数string nu;cout\t\t\t******************************************************************************endl;cout\t\t\t****** 1.通过学号查找学生 *****endl;cout\t\t\t****** 2.通过姓名查找学生 *****endl;cout\t\t\t******************************************************************************endl;cout\t\t\t\t请输入选项endl;int a;cina;switch(a) {case 1:cout请输入您需要查询的学生的学号endl;cinnu;for(int j0; jstu.size(); j) {if(stu[j].searchByNum(nu)) {cout找到学号为nu的学生,内容是:endl;stu[j].display();}}break;case 2:cout请输入您需要查询的学生的姓名endl;cinnu;for(int j0; jstu.size(); j) {if(stu[j].searchByName(nu)) {cout找到姓名为nu的学生,内容是:endl;stu[j].display();}}break;cout没有您要找的学生信息endl;}
}void Order::Alter(string ma,string en,string co) { //修改学生的函数string nu;cout请输入您所需要修改成绩的学生学号;cinnu;for(int j0; jstu.size(); j) {if(stu[j].search(nu)) {cout请您依次输入需要修改的数学英语计算机成绩endl;cinmaenco;stu[j].mathma;stu[j].englishen;stu[j].computerco;cout修改后的学生信息为endl;stu[j].display();}}
}void Order::Store() { //存储学生信息进入文件中ofstream outfile(student.txt);if(!outfile.is_open()) { //检查文件是否打开成功cout没有数据文件\n\n;return;}for(int i0; istu.size(); i) {outfilestu[i].number stu[i].name stu[i].math stu[i].english stu[i].computerendl;}outfile.close();
}void Order::Sort() { //给学生信息排序cout\t\t\t******************************************************************************endl;cout\t\t\t****** 1.通过英语成绩给学生排序升序 *****endl;cout\t\t\t****** 2.通过学号给学生排序升序 *****endl;cout\t\t\t******************************************************************************endl;cout\t\t\t\t请选择给学生排序的方法endl;int a;cina;Student temp;Student remp;Order m;int i,j,swap,g;switch(a) {case 1:for(i0; istu.size()-1; i) {swap0;for(j0; jstu.size()-i-1; j)if(stu[j].englishstu[j1].english) {swap1;tempstu[j];stu[j]stu[j1];stu[j1]temp;}if(!swap)break;}m.Store();cout学号setw(6)姓名setw(6)数学setw(6)英语setw(8)计算机endl;for(int i0; istu.size(); i)stu[i].display();break;case 2:for(g0; gstu.size()-1; g) {swap0;for(j0; jstu.size()-g-1; j)if(stu[j].numberstu[j1].number) {swap1;tempstu[j];stu[j]stu[j1];stu[j1]temp;}if(!swap)break;}m.Store();cout学号setw(6)姓名setw(6)数学setw(6)英语setw(8)计算机endl;for(int g0; gstu.size(); g)stu[g].display();break;}
}void Order::Load() { //从文件中读取学生信息ifstream infile(student.txt);if(!infile.is_open()) {//检测文件是否成功打开cout没有数据文件\n\n;return;}string na,nu,ma,en,co;while(infilenunamaenco) {Student temp(nu,na,ma,en,co);stu.push_back(temp);}infile.close();
}void Order::Play() { //Play函数,打印学生信息的上标学号姓名数学英语计算机cout学号setw(6)姓名setw(6)数学setw(6)英语setw(8)计算机endl;for(int i0; istu.size(); i)stu[i].display();}void Order::Begin() {//欢迎界面cout\n\n\t\t\t\t\tendl;system(color 3);cout ;cout欢 ;Sleep(300);cout迎 ;Sleep(300);cout使 ;Sleep(300);cout用 ;cout\n;for(int i1; i3; i) {system(CLS);cout\t\t\t\t\t页面加载中;cout.;Sleep(400);cout.;Sleep(400);cout.;Sleep(400);}
}void Order::Exit() {//退出界面cout\n\n\t\t\t;system(color 3);cout感 ;Sleep(300);cout谢 ;Sleep(300);cout使 ;Sleep(300);cout用 ;cout\n;
}void Order::test() {coutstu.size()endl;
}
/*
class Id
{public:string id;string password;bool searchId(idID);
};class IdOrder
{public:void RecordBegin();void Record();void IdGreat(Idm);void Idstore();void IdLoad();vectorIdids;
};
void RecordBegin()
{ cout\t\t ***************************endl;cout--登录; cout 注册;cout\t\t ***************************endl;cout使用w,s键进行选择; for(int i1;i1;){system(cls);char order;cinorder;switch(order){case w:cout\t\t ***************************endl;cout--登录; cout 注册;cout\t\t ***************************endl;break;case s:cout\t\t ***************************endl;cout 登录; cout--注册;cout\t\t ***************************endl;break;case :i0;break;}}if(orderw)Record();elseIdGreat();
}viod Record()
{cout请输入用户名endl; cinid;cout请输入密码endl;cinpassword;cinpassword;}void IdOrder::IdGreat(Idm)
{cout请输入用户名endl; cinid;cout请输入密码endl;cinpassword;cout请再输入一次密码endl;cinpassword1; for(int i0; iids.size(); i)if(ids[i].search(m.id)) {cout该账号已存在;return;}if(passwordpassword1)cout注册成功endl; ids.push_back(m);
}void IdOrder::Idstore()//存储账号信息进入文件中
{ ofstream outfile(id.txt);if(!outfile.is_open()) { //检查文件是否打开成功cout没有数据文件\n\n;return;}for(int i0; iids.size(); i) {outfileids[i].id ids[i].passwordendl;}outfile.close();
}void IdOrder::IdLoad()
{ifstream infile(id.txt);if(!infile.is_open()) {//检测文件是否成功打开cout没有数据文件\n\n;return;}string na,nu,ma,en,co;while(infileidpassword) {Id temp(id,password);ids.push_back(temp);}infile.close();
}
*/
int main() {Student s;//从Student类中声明一个对象Order m;//从Order中声明一个对象m.Load();m.Begin();int way;string ma,en,co;while(1) {system(cls);system(color 3);cout\t\t *******************************************************************************endl;cout\t\t ****** 学生信息管理系统 *****endl;cout\t\t ****** *****endl;cout\t\t ****** 请选择以下指令 *****endl;cout\t\t ****** 1.添加学生信息 *****endl;cout\t\t ****** 2.打印学生信息 *****endl;cout\t\t ****** 3.查找学生信息 *****endl;cout\t\t ****** 4.删除学生信息 *****endl;cout\t\t ****** 5.清除所有信息 *****endl;cout\t\t ****** 6.更改学生信息 *****endl;cout\t\t ****** 7.学生信息排序 *****endl;cout\t\t ****** 0.退出学生系统 *****endl;cout\t\t *******************************************************************************endl;cinway;switch(way) { //根据操作调用函数case 1:m.Add(s);break;//添加case 2:m.Play();break;//打印case 3:m.Seek();break;//查找case 4:m.Delete();break;//删除case 5:m.DeleteAll();break;//清除case 6:m.Alter(ma,en,co);break;//更改case 7:m.Sort();break;case 8:m.test();break;case 0:m.Store();Order m;m.Exit();return 0;break;//退出}cout\n\t\t按回车键继续;getchar();getchar();}return 0;
}12案例十二
#include iostream
#include fstream
#include cstring
#include windows.h
#include time.h
using namespace std;class STU
{
public: string id; string name; string sex; string major; char adress;int score; int year; int month; int day; STU *next;
};class Student: public STU
{
public: //构造函数 Student() { }//析构函数 ~Student() { } void Register(Student *head); //登录 void Menu(Student *head); //菜单void insert(Student *head); //增加 void del(Student *head); //删除void Search(Student *head); //查询 根据学号或姓名void rewrite(Student *head); //修改void Sort(Student *head); //排序 void Statistics(Student *head); //统计 专业或性别 void Print(Student *head); //输出bool only(Student *head,string id); //查重 void write_File(Student *head); //文件保存 void read_File(Student *head); //文件读取
};void Student::Register(Student *head)
{char a[20],b[20],c[20],d[20];int num;cout*****************************endl;cout 1.注册 *endl;cout 2.登录 *endl;cout 0.退出 *endl;cout*****************************endl;cout请输入你的选择 endl;cinnum;if(num1){cout请输入用户名 endl;cina; cout请输入密码 endl;cinb;cout注册成功endl;cout即将离开注册页面 请稍候...... endl;Sleep(1000);while(1){system(CLS);cout**********************endl;cout* 1.登录 *endl;cout* 0.退出 *endl;cout**********************endl;int x;cout请输入你的选择 endl;cinx;if(x1){cout请输入用户名 endl;cinc;if(strcmp(a,c) 0){cout请输入密码 endl;cind;if(strcmp(b,d) 0){cout密码正确endl;cout即将进入菜单页面 请稍候...endl;Sleep(1500);}else{cout密码错误endl;cout请重新输入密码 endl;cind;if(strcmp(b,d) 0){cout密码正确endl;cout即将进入菜单页面 请稍候...endl;Sleep(1000);}else{cout密码再次错误 即将离开该页面endl;exit(0); }}}else{cout用户名输入错误endl;cout即将离开页面 请稍候...endl;Sleep(1500); exit(0); } }if(x0){cout成功退出endl; exit(0);}break; } }else if(num2){cout尚未注册 无法登录endl;exit(0);}else if(num0){cout成功退出endl;exit(0);}return ;
} void Student::Menu(Student *head)
{ Student STU;while(1) { system(CLS);system(date/t); system(time/t);cout *********************************************************endl;cout * *endl;cout * *endl;cout * 欢迎使用新生基本信息统计系统 *endl;cout * *endl;cout * *endl;cout *********************************************************endl; cout * **endl;cout * **endl;cout **********************************************************endl; cout ** 1.增加学生信息 **endl; cout ** 2.删除学生信息 **endl;cout ** 3.查询学生信息按学号或姓名 **endl;cout ** 4.修改学生信息 **endl;cout ** 5.排序英语成绩 **endl;cout ** 6.统计学生信息专业/性别 **endl;cout ** 7.显示学生信息 **endl;cout ** 8.学生信息保存 **endl; cout ** 9.学生信息读取 **endl; cout ** 0.退出该系统 **endl;cout **********************************************************endl; cout ** **endl;cout ** **endl;cout请输入你的选择endl; int choice; cinchoice; switch(choice) { case 1 :system(CLS);STU.insert(head);system(pause);break; case 2 :system(CLS);STU.del(head);system(pause);break; case 3 :system(CLS);STU.Search(head);system(pause);break; case 4 :system(CLS);STU.rewrite(head);system(pause);break; case 5 :system(CLS);STU.Sort(head);system(pause);break; case 6 : system(CLS);STU.Statistics(head); system(pause);break; case 7 :system(CLS);STU.Print(head);system(pause);break; case 8 :system(CLS);STU.write_File(head);system(pause);break; case 9 :system(CLS);STU.read_File(head);system(pause);break;case 0 :system(CLS);cout************************endl;cout* *endl;cout* 谢谢使用 *endl;cout* *endl;cout************************endl;exit(0);system(pause); default:cout输入错误请重新输入endl;system(pause); } }
}//增加
void Student::insert(Student *head)
{ STU *p1head; int num; cout请输入您要添加的学生数量: endl; cinnum; if(p1-nextNULL) { for(int i0;inum;i) { STU *p2new Student; cout请输入第i1位学生的学号:endl; cinp1-id; if(Student::only(head,p1-id)) { return ; } cout请输入第i1位学生的姓名 endl; cinp1-name; cout请输入第i1位学生的性别 endl; cinp1-sex; cout请输入第i1位学生的专业 endl; cinp1-major; cout请输入第i1位学生的住址 endl; cinp1-adress; cout请输入第i1位学生的英语成绩 endl; cinp1-score; cout请输入第i1位学生的出生日期 endl; cinp1-yearp1-monthp1-day; cout endl;cout学生信息添加成功endl;cout endl;p1-nextp2; p2-nextNULL; p1p2; } }else if(p1-next!NULL){ //已有学生信息 插在尾部 while(p1-next!NULL){p1p1-next;}for(int i0;inum;i) { STU *p2new Student; cout请输入第i1位学生的学号 endl;cinp1-id; if(Student::only(head,p1-id)) { return ; } cout endl;cout请输入第i1位学生的姓名 endl; cinp1-name; cout请输入第i1位学生的性别 endl; cinp1-sex; cout请输入第i1位学生的专业 endl; cinp1-major; cout请输入第i1位学生的住址 endl; cinp1-adress; cout请输入第i1位学生的英语成绩 endl; cinp1-score; cout请输入第i1位学生的出生日期 endl; cinp1-yearp1-monthp1-day; cout endl;cout学生信息添加成功endl;cout endl;p1-nextp2; p2-nextNULL; p1p2; } }
}//删除
void Student::del(Student *head)
{ STU *p1head;STU *p2new Student; string num; int find0;cout请输入您要删除的学生的学号 endl; cinnum; if(p1-nextNULL) { cout暂无学生信息存入endl; }else{ while(p1-next!NULL) { if( (p1-next-id) num) { p2p1-next; p1-nextp2-next;// p1p2-next;// delete p2;find1; break; }p2p1; //p1,p2依次向后移一位 p1p1-next;break; }
/* if(p1-next-idnum){p2p1-next;p1-nextp2-next;}// p2p2-next;cout删除成功endl; */} if(find){cout删除该学生成功endl; }else{cout暂无该学生信息记录endl; } } //查询
void Student::Search(Student *head)
{ STU *p1head;string a学号,b姓名; string gl;cout请选择你想要查找的类别请输入“学号”或“姓名” endl;cingl;if(gla) //根据学号查找{STU *p1head; string num;int t0; cout请输入您要查找的学生学号endl; cinnum; if(p1-nextNULL) { cout无该学生信息endl; }else{ while(p1-next!NULL) { if(p1-idnum){cout学号: p1-id 姓名 p1-name 性别 p1-sex 专业 p1-major 住址 p1-adress 英语成绩 p1-score 出生日期 p1-year.p1-month.p1-dayendl; t1;break;}else{p1p1-next;} }if(t0){cout该学号不存在endl;}else if(t1){cout查询成功endl;} }}else if(glb){ //根据姓名查找 string am; int m0;cout请输入您要查找的学生姓名endl; cinam; if(p1-nextNULL) { cout无该学生信息endl; }else{ while(p1-next!NULL) { if(p1-nameam) { cout学号: p1-id 姓名 p1-name 性别 p1-sex 专业 p1-major 住址 p1-adress 英语成绩 p1-score 出生日期 p1-year.p1-month.p1-dayendl; m1;break; }else{ p1p1-next; } }if(m0){cout该姓名不存在endl;}else if(m1){cout查询成功endl;}} }
}//修改
void Student::rewrite(Student *head)
{STU *p1head;string num;int a0;cout请输入你想要修改的学生的学号endl;cinnum;if(p1-nextNULL){cout暂无学生信息存入endl; }else{while(p1-next!NULL){if(p1-id!num){p1p1-next; }else{ cout修改姓名为 endl; cinp1-name;cout修改性别为 endl;cinp1-sex;cout修改专业为 endl;cinp1-major; cout修改地址为 endl;cinp1-adress;cout修改成绩为 endl;cinp1-score;cout修改出生日期为 endl;cinp1-yearp1-monthp1-day;cout学号 p1-id 姓名 p1-name 性别 p1-sex 专业 p1-major 地址 p1-adress 英语成绩 p1-score 出生日期 p1-yearp1-monthp1-dayendl; a1;break;} }if(a0){cout暂无该学号存入endl;}else if(a1){cout信息修改成功endl; }}
} //排序
void Student::Sort(Student *head)
{STU *phead;STU *p1p-next;STU temp;if(p-nextNULL){cout无学生信息记录endl; }else{cout按照英语成绩排序 endl;cout endl;for( ;p!NULL;pp-next){for(p1p-next;p1!NULL;p1p1-next){if(p-score p1-score) //将英语成绩从大到小进行排序 {temp.idp1-id;p1-idp-id;p-idtemp.id; temp.namep1-name;p1-namep-name;p-nametemp.name; temp.sexp1-sex;p1-sexp-sex;p-sextemp.sex; temp.majorp1-major;p1-majorp-major;p-majortemp.major;temp.adressp1-adress;p1-adressp-adress;p-adresstemp.adress; temp.scorep1-score;p1-scorep-score;p-scoretemp.score;temp.yearp1-year;p1-yearp-year;p-yeartemp.year; temp.monthp1-month;p1-monthp-month;p-monthtemp.month; temp.dayp1-day;p1-dayp-day;p-daytemp.day; }}}Print(head); //输出排序后的信息 }return ;
}//统计
void Student::Statistics(Student *head)
{ STU *p1head; string a专业,b性别; string gl; cout请选择您要统计的类别(请输入“专业”或“性别”)endl; cingl; if(gla) //按专业统计 { string subject; cout请输入想要统计的专业名称 endl; cinsubject; int sum0; if(p1-nextNULL) { cout无学生信息记录endl; }else{ while(p1-next!NULL) { if(p1-majorsubject) { sum; } p1p1-next; } cout该专业的人数为 sumendl; } }else if(glb) //按性别统计 { string m; cout请输入要统计的性别(请输入“男”或“女”)endl; cinm; int sum0; if(p1-nextNULL) { cout暂无学生信息记录endl; }else{ while(p1-next!NULL) { if(p1-sexm) { sum; } p1p1-next; } coutm性的人数为 sumendl; } }
}//显示学生信息
void Student::Print(Student *head)
{ STU *p1head; if(p1-nextNULL) {cout无学生信息记录endl; }else{ while(p1-next!NULL) { cout学号 p1-id 姓名 p1-name 性别 p1-sex 专业 p1-major 地址 p1-adress 英语成绩 p1-score 出生日期 p1-year.p1-month.p1-dayendl; p1p1-next; } cout显示成功endl; }
}//学号查重
bool Student::only(Student *head,string id)
{ STU *p1head; while(p1-next!NULL) { if(p1-idid) { cout学号重复请勿添加endl; return true; } p1p1-next; } return false;
}void Student::write_File(Student *head)
{ STU *p1head; ofstream outfile(students.txt,ios::out); if(outfileNULL) { cout打开txt文件失败endl; }else{ p1head; while(p1-next!NULL) { outfile 学号 p1-idendl; outfile 姓名 p1-nameendl;outfile 性别 p1-sexendl;outfile 专业 p1-majorendl;outfile 地址 p1-adressendl;outfile 成绩 p1-scoreendl;outfile 出生日期 p1-year.p1-month.p1-day.endl; p1p1-next;} outfile.close(); cout写入txt文件成功endl;cout信息已保存endl; }
}void Student::read_File(Student *head)
{ STU *p1head; STU *pnew Student; cout正在读取信息 请稍等......endl;Sleep(1000);system(CLS);ifstream infile(students.txt,ios::in); if(!infile) { cout文件里没有数据endl;return; }else{ int total0; while(!infile.eof()) { infilep-id;infilep-name;infilep-sex;infilep-major;infilep-adress;infilep-score;infilep-yearp-monthp-day; total; cout学号 p-idendl;cout姓名 p-nameendl;cout性别 p-sexendl;cout专业 p-majorendl;cout地址 p-adressendl;cout成绩 p-scoreendl;cout出生日期p-year.p-month.p-dayendl;cout学生数量为 totalendl;cout endl;cout读取成功endl; // delete p; pNULL; p1p;p1p1-next; }infile.close(); }
}int main()
{ system(CLS);system(color 4); Student STU; Student *headnew Student; STU.Register(head); STU.Menu(head); return 0;
}
13案例十三
#includeiostream
#includefstream
#includecstring
#includestdlib.h
#includewindows.h
using namespace std;//新生信息
class Student
{public: int num; //学号 char name[20]; //姓名 char sex[10]; //性别 char major[20]; //专业 int date; //出生日期 char address[20]; //家庭地址 int score; //英语入学成绩Student *next;
};class function
{public:function () {};void Enter(); void Menu(Student *head); //菜单void Creat(Student *head); //录入 void Add(Student *head); //增加 void Delete(Student *head); //删除 void Search(Student *head); //查询 void Change(Student *head); //修改 void Print(Student *head); //输出void Sort(Student *head); //排序 void Statistics(Student *head); //统计 void In_File(Student *head); //文件读取 void Out_File(Student *head); //文件保存 ~function () {};
};//登录
void function::Enter()
{int i0;char account[10]{0}; //账号 char password[10]{0}; //密码 while(i3){// system(color B5);cout\n;cout************欢迎使用新生信息统计系统************\n;cout请输入账号: \n;cinaccount;cout请输入密码: \n;cinpassword;cout\n;if(strcmp(account,fengmang)0strcmp(password,666)0){cout登录成功\n;break;}else{cout密码或用户名错误,请重试\n;continue; } } system(pause); //停顿 system(cls); //清屏
} //录入
void function::Creat(Student *head)
{Student *p1head;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);int n;cout请输入学生数量:;cinn;coutendl;for(int i0;in;i){Student *p2new Student;cout学号:;cinp2-num;cout姓名:;cinp2-name;cout性别:;cinp2-sex;while(strcmp(sex1,p2-sex)!0 strcmp(sex2,p2-sex)!0 ){cout请输入格式 :男/女请重新输入endl;cout性别:;cinp2-sex;}cout专业:;cinp2-major;cout出生日期:;cinp2-date;cout家庭住址:;cinp2-address;cout英语入学成绩:;cinp2-score;coutendl;p1-nextp2;p1p2;} p1-next NULL;
}//输出
void function::Print(Student *head)
{Student *p1head;Student *p2p1-next;while(p2!NULL){cout学号:p2-numendl;cout姓名:p2-nameendl;cout性别:p2-sexendl;cout专业:p2-majorendl;cout出生日期:p2-dateendl;cout家庭住址:p2-addressendl;cout英语入学成绩:p2-scoreendl;coutendl;p2p2-next;}
}//增加
void function::Add(Student *head)
{Student *p1head;Student *p2head-next;Student *p3;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);int id;bool flagfalse;cout请输入要插入的位置:;cinid;while(p2!NULL){if(p2-numid){p3new Student;cout请输入要增加的学生的信息:\n;cout学号:;cinp3-num;cout姓名:;cinp3-name;cout性别:;cinp3-sex;while(strcmp(sex1,p3-sex)!0 strcmp(sex2,p3-sex)!0 ){cout请输入格式 :男/女请重新输入endl;cout性别:;cinp3-sex;}cout专业:;cinp3-major;cout出生日期:;cinp3-date;cout家庭住址:;cinp3-address;cout英语入学成绩:;cinp3-score;coutendl;p3-nextp2-next;p2-nextp3;cout添加成功!\n;flagtrue;}p2p2-next;}if(flagfalse){printf(未查询到该学生增加失败!\n); }
}//删除
void function::Delete(Student *head)
{Student *p1head;Student *p2p1-next; int id;bool flagfalse;cout请输入要删除的学生的学号:;cinid;while(p2!NULL){if(p2-numid){p1-nextp2-next;delete p2;cout\n删除成功\n;flagtrue;}p2p2-next; }if(flagfalse){cout无该学生信息删除失败!\n;}
} //查询
void function::Search(Student *head)
{Student *p1head;Student *p2head-next;int id;cout请输入要查找的学生的学号:\n;cinid;bool flagfalse;while(p2!NULL){if(p2-num id){cout学号:p2-numendl;cout姓名:p2-nameendl;cout性别:p2-sexendl;cout专业:p2-majorendl;cout出生日期:p2-dateendl;cout家庭住址:p2-addressendl;cout英语入学成绩:p2-scoreendl;coutendl;flagtrue;break;}p2p2-next; }if(flagfalse){cout无该学生的信息!\n; }
} //修改
void function::Change(Student *head)
{Student *p1head;Student *p2head-next;char sex1[3];char sex2[3];strcpy(sex1, 男);strcpy(sex2, 女);int id;bool flagfalse;cout请输入需要修改的职工的职工号:;cinid;while(p2!NULL){if(p2-numid){cout请输入修改后的学生信息:\n;cout学号:;cinp2-num;cout姓名:;cinp2-name;cout性别:;cinp2-sex;while(strcmp(sex1,p2-sex)!0 strcmp(sex2,p2-sex)!0 ){cout请输入格式 :男/女请重新输入endl;cout性别:;cinp2-sex;}cout专业:;cinp2-major;cout出生日期:;cinp2-date;cout家庭住址:;cinp2-address;cout英语入学成绩:;cinp2-score;coutendl;flagtrue;}p2p2-next ;}if(flagfalse){printf(无该学生信息无法修改!\n);}
} //排序
void function::Sort(Student *head)
{Student *p1head-next;int temp;char t[20];if(p1NULL){cout无学生信息\n;}else{cout按英语成绩排序\n;while(p1!NULL){ Student *p2p1-next;while(p2!NULL){if(p1-score p2-score){tempp2-num;p2-nump1-num;p1-numtemp;strcpy(t,p2-name);strcpy(p2-name,p1-name);strcpy(p1-name,t);strcpy(t,p2-sex);strcpy(p2-sex,p1-sex);strcpy(p1-sex,t);strcpy(t,p2-major);strcpy(p2-major,p1-major);strcpy(p1-major,t);tempp2-date;p2-datep1-date;p1-datetemp;strcpy(t,p2-address);strcpy(p2-address,p1-address);strcpy(p1-address,t); tempp2-score;p2-scorep1-score;p1-scoretemp;}p2p2-next;}p1p1-next;}}
} //统计
void function::Statistics(Student *head)
{Student *p1head-next;string a专业,b性别; string category;cout请选择要统计的类别:(请输入“专业”或“性别”)\n;cincategory;if(categorya) //按专业统计 {string w; cout请输入专业名称\n;cinw;int sum0;if(p1NULL){cout无学生信息\n;}else{while(p1!NULL){if(p1-majorw){sum;}p1p1-next;}coutw专业的人数:sumendl; }}else if(categoryb) //按性别统计 {string s;cout请输入要统计的性别(请输入“男”或“女”)\n;cins;int sum0;if(p1NULL){cout无学生信息\n;}else{while(p1!NULL){if(p1-sexs){sum;}p1p1-next;}couts生的人数:sumendl; }}
} //文件保存
void function::Out_File(Student *head)
{Student *p1head;Student *p2head-next;ofstream out(D:\\students.txt,ios::out);if(outNULL){cout打开文件失败\n;exit(0);}while(p2!NULL){
// out学号\t姓名\t性别\t专业\t出生日期\t家庭住址\t英语入学成绩\n; outp2-num\tp2-name\tp2-sex\tp2-major\tp2-date\tp2-address\tp2-scoreendl;p2p2-next;}out.close();cout\n写入文件成功\n;
} //文件读取
void function::In_File(Student *head)
{ifstream in;Student *p1head;Student *p2head-next;in.open(D:\\students.txt,ios::in);if(inNULL){cout打开文件文件失败\n;exit(0);}while(1){p2new Student;inp2-nump2-namep2-sexp2-majorp2-datep2-addressp2-score;if(in.fail() ) //判断是不是读到了文件结尾{delete p2;p1-nextNULL;break;} p1-nextp2;p1p1-next; }cout读取成功!\n;function::Print(head); in.close();
} //菜单
void function::Menu(Student *head)
{function STU;while(1){// system(color 3F);coutendl;coutendl;cout**************新生信息统计系统***************endl;cout 1.录入学生信息 endl;cout 2.增加学生信息 endl;cout 3.删除学生信息 endl;cout 4.查询学生信息 endl;cout 5.修改学生信息 endl;cout 6.输出学生信息 endl;cout 7.按照英语成绩排序 endl;cout 8.统计学生信息 endl;cout 9.保存学生信息 endl;cout 0.读取学生信息 endl;cout 10.退出系统 endl; cout*********************************************endl;coutendl;int x;cout请输入所选择的功能序号:endl;cinx; switch(x){case 1:cout***************录入学生信息***************\n;STU.Creat(head);system(pause);system(cls);break;case 2:cout***************增加学生信息***************\n;STU.Add(head);system(pause);system(cls);break;case 3:cout***************删除学生信息***************\n;STU.Delete(head);system(pause);system(cls);break;case 4:cout***************查询学生信息***************\n;STU.Search(head);system(pause);system(cls);break;case 5:cout***************修改学生信息***************\n;STU.Change(head);system(pause);system(cls);break;case 6:cout***************输出学生信息***************\n;STU.Print(head);system(pause);system(cls);break;case 7:cout*************按照英语成绩排序*************\n;STU.Sort(head);STU.Print(head);system(pause);system(cls);break;case 8:cout***************统计学生信息***************\n;STU.Statistics(head);system(pause);system(cls);break;case 9:cout***************保存学生信息***************\n;STU.Out_File(head); system(pause);system(cls);break;case 0:cout***************读取学生信息***************\n; STU.In_File(head);system(pause);system(cls);break;case 10:cout*********感谢使用新生信息管理系统*********\n;exit(0);break; default:cout选择错误请重新选择\n;system(pause);system(cls);function::Menu(head);break;}}
}//主函数
int main ()
{function F;Student *headnew Student;F.Enter();F.Menu(head);return 0;
}
14案例十四
#define MAX_NUM 1000#include String#include fstream#include iostream#include cstdlib#include ctimeusing namespace std;bool quit false;struct StuNode {int num;char name[1000];int math, eng, yuwen, cyuyan;int pj;int sum;StuNode *nextstu;};class people {int num;char name[1000];};class SInfo:private people { //设计一个类public:int math, eng, yuwen, cyuyan;int pj;int sum;private: //私有权限StuNode *head,*StuListHead,*p1,*p2,*p3;public: //公共权限SInfo(); //构造函数~SInfo(); //析构函数StuNode *CreatSinfo(); //创建学生信息StuNode *StuInsert(StuNode *head); //插入学生信息void StuDelete(int snum); //删除学生信息StuNode *StuFind(int snum); //查找学生信息传入参数学号void StuModify(int snum, int smath, int seng, int syuwen, int cyuyan, int spj); //修改学生信息void StuCopy(StuNode *ptemp, StuNode *p); //学生信息拷贝void StuSort(char ch);void StuClassfy(); //分类合计void StuRead(); //从文件读入学生信息void StuSave(); //保存学生信息到文件void StuQuit(); //退出程序void ShowInfo(); //遍历输出学生信息};int Systemdoor(){string username 0, password 0;string name, temp;int number 3;while (1){cout ********************************** \n;cout ** ** \n;cout ** 欢迎使用学生信息管理系统 ** \n;cout ** ** \n;cout ********************************** \n;cout -----------祝你使用愉快!---------- \n;cout 用 户 名;cin name;cout 密 码;cin temp;if (name ! username || temp ! password){number--;if (number 0){cout 用户名/密码错误!你还有 number 次机会 endl;system(pause);system(cls);}elsecout 用户名/密码错误! endl, exit(0);system(cls);}else{cout *************密码正确************* endlendl;system(cls);return 1;}}}void ShowMenu(){system(cls);char ch;cout\t\t\t*******************************************************\n;cout\t\t\t** **\n;cout\t\t\t********** 欢迎使用 ***********\n;cout\t\t\t** **\n;cout\t\t\t*******************************************************\n;cout\t\t\t** **\n;cout\t\t\t**------------------ 请选择 ---------------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------0.安全退出学生系统 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------1.文件读入学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------2.录入新的学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------3.添加新的学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------4.删除已有学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------5.查找已有学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------6.修改已有学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------7.已有学生信息排序: ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------8.分类合计学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------9.输出所有学生信息 ---------------**\n;cout\t\t\t** **\n;cout\t\t\t**---------------10.保存现有学生信息---------------**\n;cout\t\t\t** **\n;cout\t\t\t*******************************************************\n;time_t now time(0);char* dt ctime(now);cout 登入系统时本地日期时间 dt endl;cout \n\t\n\t\t请选择;
}SInfo::SInfo() //构造函数为对象的成员属性赋值 。{StuListHead new StuNode;StuListHead-nextstu NULL;}SInfo::~SInfo() //析构函数在对象销毁系统前系统自动调用执行一些清理工作。{StuNode *p;while (StuListHead){p StuListHead;StuListHead StuListHead-nextstu;delete p;}StuListHead NULL;}StuNode *SInfo::CreatSinfo() //创建学生信息表{int n;StuNode *p, *s;p StuListHead;cout 请输入学生人数;cin n;for (int i 1; i n; i){s new StuNode;cout请输入学生的信息\n学号:;cins-num;cout姓名:;cins-name;cout数学成绩:;cins-math;cout英语成绩:;cins-eng;cout语文成绩:;cins-yuwen;coutC语言成绩;cins-cyuyan;s-pj (s-math s-eng s-yuwen s-cyuyan)/4;s-sum s-math s-eng s-yuwen s-cyuyan;s-nextstu p-nextstu;p-nextstu s;p p-nextstu;}if (p NULL) //判断学生信息表是否创建成功{cout 创建失败请重新创建 endl;CreatSinfo();system(pause);}
}void SInfo::ShowInfo() //遍历输出{StuNode *p;cout 学号 \t 姓名 \t 数学 \t 英语 \t 语文 \t C语言 \t 平均分 \t 总分 endl;for (p StuListHead-nextstu; p ! NULL; p p-nextstu){cout p-num \t p-name \t p-math \t p-eng \t p-yuwen \t p-cyuyan \t p-pj \t p-sum endl;}system(pause);}StuNode *SInfo::StuInsert(StuNode *head) //插入学生信息头插法{StuNode *s,*p;int num;char name;int math;int eng;int yuwen;int cyuyan;int pj;s new StuNode;cout 请输入添加学生信息;cout 学号;cin s-num;cout姓名:;cin s-name;cout数学成绩:;cin s-math;cout英语成绩:;cin s-eng;cout语文成绩:;cin s-yuwen;cout C语言成绩;cin s-cyuyan;s-pj (s-math s-eng s-yuwen s-cyuyan)/4;s-sum s-math s-eng s-yuwen s-cyuyan;p StuListHead;s-nextstu p-nextstu;p-nextstu s;}void SInfo::StuDelete(int snum){StuNode *p, *ptemp;p StuListHead;ptemp p;while (p-nextstu!NULL p-num!snum) //循环终止条件为p-nextstu不为空 而且没有找到相应学号的学生{ptemp p;p p-nextstu;}if (p-num snum){ptemp-nextstu p-nextstu;delete p;}else{cout 未找到该学生信息 endl;}}StuNode *SInfo::StuFind(int snum){StuNode *p;p StuListHead-nextstu;while (p-nextstu p-num ! snum) //循环终止条件为p-nextstu不为空 而且没有找到相应学号的学生{p p-nextstu;}if (p-num snum){return p;}else{cout 未找到该学生信息 endl;}}void SInfo::StuModify(int snum, int smath, int seng, int syuwen, int scyuyan, int spj){StuNode *ItemStu StuFind(snum); //直接调用查找函数if (ItemStu ! NULL){ItemStu-num snum;ItemStu-math smath;ItemStu-math smath;ItemStu-eng seng;ItemStu-yuwen syuwen;ItemStu-cyuyan scyuyan;ItemStu-pj (ItemStu-math ItemStu-eng ItemStu-yuwen ItemStu-cyuyan)/4;ItemStu-sum ItemStu-math ItemStu-eng ItemStu-yuwen ItemStu-cyuyan;}}void SInfo::StuCopy(StuNode *ptemp, StuNode *p) //拷贝学生信息(将p的信息拷贝到ptemp中){if (p NULL){cout 拷贝目标为空 endl;}else{ptemp-num p-num;ptemp-math p-math;ptemp-eng p-eng;ptemp-yuwen p-yuwen;ptemp-cyuyan p-cyuyan;ptemp-pj p-pj;ptemp-sum p-sum;}}void SInfo::StuSort(char ch) //根据 总分排序{if (ch ){for (StuNode *p StuListHead-nextstu; p ! NULL; p p-nextstu){for (StuNode *q StuListHead-nextstu; q ! NULL; q q-nextstu){if (p-sum q-sum){StuNode *ptemp new StuNode;StuCopy(ptemp, p);StuCopy(p, q);StuCopy(q, ptemp);}}}}else if (ch ){for (StuNode *p StuListHead-nextstu; p ! NULL; p p-nextstu){for (StuNode *q StuListHead-nextstu; q ! NULL; q q-nextstu){if (p-sum q-sum){StuNode *ptemp new StuNode;StuCopy(ptemp, p);StuCopy(p, q);StuCopy(q, ptemp);}}}}else if (ch o){for (StuNode *p StuListHead-nextstu; p ! NULL; p p-nextstu){for (StuNode *q StuListHead-nextstu; q ! NULL; q q-nextstu){if (p-num q-num){StuNode *ptemp new StuNode;StuCopy(ptemp, p);StuCopy(p, q);StuCopy(q, ptemp);}}}}else{cout 排序条件出错 endl;}}void SInfo::StuClassfy() //根据学生总分分类{int grade[5] {0};StuNode *p StuListHead-nextstu;while (p ! NULL){if (340 p-sum){grade[0];if (p-cyuyan 80 p-eng 80 p-math 80 p-yuwen 80){cout 优秀学生信息 endl;cout 学号 \t 姓名 \t 数学 \t 英语 \t 语文 \t C语言 \t 平均分 \t 总分 endl;cout p-num \t p-name \t p-math \t p-eng \t p-yuwen \t p-cyuyan \t p-pj \t p-sum endl;}}else if (300 p-sum p-sum 340){grade[1];}else if (260 p-sum p-sum 300){grade[2];}else if (240 p-sum p-sum 260){grade[3];}else{StuNode *p;p StuListHead-nextstu;ofstream out(D://补考学生.txt);if (!out) {cout 不能打开文件 endl;return;}while (p ! NULL){if(240 p-sum){out p-num \t p-name \t p-math \t p-eng \t p-yuwen \t p-cyuyan \t p-pj \t p-sum \n;}p p-nextstu;}cout 学生信息已保存... endl;grade[4];}p p-nextstu;}cout A \t B \t C \t D \t E endl;for (int i 0; i 5; i){cout grade[i] \t;}cout endl;}void SInfo::StuRead() //从文件读入数据{StuNode *p;p StuListHead;ifstream in(D://学生信息.txt);if (!in) {cout 没有学生信息请先录入学生信息! endl;system(pause);return;}char c;cout 读入学生信息表 endl;cout 学号 \t 姓名 \t 数学 \t 英语 \t 语文 \t C语言 \t 平均分 \t 总分 endl;while(in.get(c))while (p ! NULL){cout p-num \t p-name \t p-math \t p-eng \t p-yuwen \t p-cyuyan \t p-pj \t p-sum \nendl;p p-nextstu;}cout.put(c);system(pause);}void SInfo::StuSave() //保存学生信息{StuNode *p;p StuListHead-nextstu;ofstream out(D://学生信息.txt);if (!out) {cout 不能打开文件 endl;return;}while (p ! NULL){out p-num \t p-name \t p-math \t p-eng \t p-yuwen \t p-cyuyan \t p-pj \t p-sum \n;p p-nextstu;}cout 学生信息已保存... endl;}void SInfo::StuQuit() //学生信息写入文件{char choice;cout 是否保存学生信息Y/N;cin choice;if (choice y || choice Y){StuSave();cout 学生信息已保存... endl;}}int main(){StuNode *head;StuNode *StuListHead;system(color F4);Systemdoor();int x 100, pnum,pmath,peng,pyuwen,pcyuyan,ppj;char pname[1000];StuNode *pfind;SInfo stu;while (x ! 0){system(cls); //清屏ShowMenu();cin x;switch (x){case 0:stu.StuQuit();break;case 1:stu.StuRead();break;case 2:stu.CreatSinfo();cout 请核对输入学生信息 endl;stu.ShowInfo();break;case 3:stu.StuInsert(StuListHead);cout 更新学生信息表... endl;stu.ShowInfo();break;case 4:cout 请输入要删除学生学号;cin pnum;stu.StuDelete(pnum);cout 更新学生信息表... endl;stu.ShowInfo();break;case 5:cout 请输入要查找学生学号;cin pnum;pfind stu.StuFind(pnum);cout 查找学生学号 pfind-num 数学 pfind-math 英语 pfind-eng 语文 pfind-yuwen C语言 pfind-cyuyan 平均分 pfind-pj 总分 pfind-sum endl;system(pause);break;case 6:cout 请输入要修改学生学号;cin pnum;cout 请重新输入学生分数;cout 请输入数学成绩;cin pmath ;cout 请输入英语成绩;cin peng;cout 请输入语文成绩;cin pyuwen;cout 请输入C语言成绩;cin pcyuyan;stu.StuModify(pnum, pmath, peng, pyuwen, pcyuyan, ppj);cout 修改成功 endl;cout 更新学生信息表... endl;stu.ShowInfo();break;case 7:cout 升序排序1降序排序0学号排序10;cin pnum;if (pnum 1){stu.StuSort();stu.ShowInfo();}else if (pnum 0){stu.StuSort();stu.ShowInfo();}else if (pnum 10){stu.StuSort(o);stu.ShowInfo();}else{cout 请输入正确选择 endl;}break;case 8:stu.StuClassfy();system(pause);break;case 9:stu.ShowInfo();break;case 10:stu.StuSave();system(pause);break;default:cout选择有错请重新选择\n;}}system(pause);return 0;
}15案例十五
#includeiostream
#includefstream//该数据类型通常表示文件流
#includestdio.h
#includestring
#includeiomanip
#includecstring
#includectime //记录时间
using namespace std;
static int m0;//总人数
class Student{
public://封装数据 void set_id(int id) {this-Idid;}//调用this指针把x的值赋给当前对象的X属性。void set_name(string name) {this-Namename;} void set_sex(string sex) {this-Sexsex;} void set_spe(string spe) {this-Spespe;} void set_year(int year) {this-Yearyear;} void set_month(int month) {this-Monthmonth;} void set_day(int day) {this-Dayday;} void set_address(string address) {this-Addressaddress;} void set_age(int age) {this-Ageage;}void set_Escore(float Escore) {this-ESCOREEscore;}int get_id() {return Id;}string get_name() {return Name;}string get_sex() {return Sex;}string get_spe() {return Spe;}int get_year() {return Year;}int get_month() {return Month;}int get_day() {return Day;}string get_address() {return Address;}int get_age() {return Age;}float get_Escore() {return ESCORE;}Student *next;void show();void menu();
private: //定义属性 int Id;//学号 string Name;//姓名 string Sex;//性别 string Spe;//(specialty专业)int Year;//年 int Month;//月 int Day;//日 string Address;//住址 int Age;//年龄 float ESCORE;//英语成绩 };
void Student::show() //单人输出show函数
{cout学号get_id()\t;cout姓名get_name()\t;cout性别get_sex()\t;cout专业get_spe()\t;cout出生年月;coutget_year()年;coutget_month()月;coutget_day()日\t;cout住址get_address()\t;cout英语成绩get_Escore()\t;cout*********************************************endl;
}
class message:public Student//函数集合 使用公有继承类Student
{public:message(){headNULL;}~message();Student* find2(int id);bool find1(string name);void save();void show1();void search();void add(); void read(); void tongji();void rank();void shanchu();void revision();void age_(Student *pt);private:Student *p1,*p2,*head;
}; message::~message()//引用析构函数释放空间
{ Student *pt;while(head){pthead;headhead-next;delete pt;}
}void message::show1()//遍历数据
{if(headNULL){cout这是一个空列表请先添加学生信息endl;return; }cout共m名学生endl;p1head;while(p1!NULL){p1-show();p1p1-next;}
} void message::add()//添加学生信息
{int n,d,year,month,day;//n为添加新生人数d为判断男女条件 int id;string name,spe,sex,address;float Escore; p2head; while(p2)//将数据添加的尾部 {if(!p2-next)break;p2p2-next;}cout请输入您要添加人数(人数大于0):;cinn;for(int i0;in;i){cout请输入第i1个学生的信息endl;cout学号:;cinid;p1new Student();//为新添加的学生信息开辟空间 while(find2(id))//判断学号是否重复 {cout该学号已存在请重新输入endl;cinid;} p1-set_id(id);cout姓名:;cinname;p1-set_name(name);cout性别endl1.男 2.女endl请选择性别(请输入1或2):;cind;switch(d){case 1:p1-set_sex(男);break;case 2:p1-set_sex(女);break;default:cout稀有物种endl; }cout专业endl1.文科 2.理科endl请选择性别(请输入1或2):;cind;switch(d){case 1:p1-set_spe(文科);break;case 2:p1-set_spe(理科);break;default:cout未知专业endl; } cout****出生年月****endl年:;cinyear;p1-set_year(year);cout月(请输入1-12月):;cinmonth;p1-set_month(month);cout日:;cinday;p1-set_day(day);cout****************endl;cout住址:;cinaddress;p1-set_address(address);cout英语成绩:;cinEscore;p1-set_Escore(Escore);p1-nextNULL;//将指针的下一个指向空结束输入 if(headNULL)headp1;//将指针指向空防止不必要的麻烦 elsep2-nextp1;p2p1;p2-nextNULL;m;//将总人数1 }return;
}void message::search()//查询
{int id1;string name1;int N0;//N为判断是否换种查询方式条件 static int n0;//n为判断查询条件 p1head;if(p1NULL){cout这是一个空列表,请先添加学生信息endl;return;}if(n0){ cout请选择您要查询的学生信息:\t1.学号 2.姓名endl;cinn;}if(n1){ cout请输入您要查询的学生学号endl;cinid1;if(find2(id1)) find2(id1)-show();//输出查询到的数据 else{cout没有该生信息,是否选择另一种查询方式?endl1.是 2.否endl;cinN;if(N1){ n2; search(); }else { n0; return; }}}else{cout请输入您要查询的学生姓名endl;cinname1;if(!find1(name1)){cout没有该生信息,是否选择另一种查询方式?endl1.是 2.否endl;cinN;if(N1){ n1; search();}else { n0; return; }}} n0;//方便下次使用查询
}bool message::find1(string name)//按姓名查找 引用bool函数成立返回true不成立返回false
{Student *phead;int i0;while(p){if(p-get_name()name){p-show();i1;}pp-next;}if(i0) return false;return true;
}Student* message::find2(int id)//按学号查找
{Student *phead;while(p!NULL) {if(idp-get_id()){return p;}pp-next;}return p;//返回查到数据的地址指针
}void message::revision()//修改
{int id;int n,y,t,year,month,day,age;//y为修改人数n为修改选项 ,t为继续选择 string name,spe,sex,address;float Escore;//定义数据 if(headNULL)//查看是否有数据 { cout这是一个空列表请先添加学生信息endl;return; } cout请输入您要修改的人数:endl;ciny; while(ym){if(ym)cout输入人数大于总人数请重新输入endl;cin.clear();// 清空上一次输入的数据重新输入防止进入死循环 ciny; }for(int j0;jy;j)//循环修改次数 {p1head;p2head;cout请输入您要修改的学生学号endl;cinid;p1find2(id);//利用查找函数传出数据的指针将p1赋值 if(p1)//如果p1不为空 {do{system(pause);system(cls);cout****************endl*****1.学号*****endl*****2.姓名*****endl*****3.性别*****endl*****4.专业*****endl*****5.出生日期*endl*****6.英语成绩*endl*****7.地址*****endl*****8.返回*****endl****************endl; cout请选择您要修改的选项:;cinn;switch(n){case 1: cout请输入您要修改的学号:endl;cinid;while(find2(id)){cout学号已存在请重新输入endl;cinid;}p1-set_id(id); cout修改成功endl;break;case 2: cout请输入您要修改的姓名:endl;cinname;p1-set_name(name);cout修改成功endl;break;case 3: cout请输入您要修改的性别:endl1.男 2.女endl请选择你要输入的性别编号;cinn;if(n1)p1-set_sex(男);if(n2)p1-set_sex(女); cout修改成功endl;break;case 4: cout请输入您要修改的专业:endl1.理科 2.文科endl请选择你要输入的专业编号;cinn;if(n1)p1-set_spe(文科);if(n2)p1-set_spe(理科); cout修改成功endl;break;case 5: cout*****出生日期*****endl;cout年:; cinyear;p1-set_year(year);cout月:;cinmonth;p1-set_month(month);cout日:;cinday;p1-set_day(day);cout**************endl;break;case 6: cout请输入您要修改的英语成绩:;cinEscore;p1-set_Escore(Escore);cout修改成功endl;break;case 7: cout请输入您要修改的地址:;cinaddress;p1-set_address(address);cout修改成功endl;break;case 8: break;default:cout选择错误,请重新选择endl; }}while(n!8);//当n等于8时跳出修改 cout修改完毕endl; }else{j--;cout没有该生信息endl;//如果未找到将已经加上的j减一 }}cout是否继续修改endl;cout1.是 2.否endl;cint;if(t1) revision();else return;
}void message::tongji()//信息统计
{int i0,j0,k0,a;//i,j,k为各统计人数 a为选择条件 p1head;if(headNULL)cout这是一个空列表请先添加学生信息endl;cout请选择统计类型endl;cout1.性别\t2.专业\t3.年龄endl;cina;switch(a){case 1:cout男生:endl;while(p1!NULL){ if(p1-get_sex()男) { p1-show();i;} p1p1-next;} cout男生共i人endl;p1head;cout女生:endl;while(p1!NULL){ if(p1-get_sex()女) { p1-show();j;} p1p1-next;}cout女生共j人endl;p1head;break;case 2:cout文科:endl;while(p1!NULL){ if(p1-get_spe()文科){ p1-show();i;}p1p1-next;}cout文科共i人endl;p1head;cout理科:endl;while(p1!NULL){ if(p1-get_spe()理科){ p1-show();j;} p1p1-next;}cout理科共j人endl;p1head;break; case 3:cout年龄为16~18:endl;while(p1!NULL)//如果有数据 { age_(p1);//将p1当做参数传到计算年龄的函数中返回计算信息 if(p1-get_age()16p1-get_age()18){ cout年龄:p1-get_age()endl;p1-show();i;}p1p1-next;//判断下一个数据符合类型 }cout年龄为16~18共i人endl;p1head;//重新将p1指向开头 cout年龄为19~21:endl;while(p1!NULL){ age_(p1);if(p1-get_age()19p1-get_age()21){ cout年龄:p1-get_age()endl;p1-show();j;} p1p1-next;}cout年龄为19~21共j人endl;p1head;cout年龄在16以下21以上:endl;while(p1!NULL){ age_(p1);if(p1-get_age()16||p1-get_age()21){ cout年龄:p1-get_age()endl;p1-show();k;}p1p1-next;}cout有k年龄在16以下21以上endl;break; default:cout选择错误endl; } cout是否继续统计endl1.是 2.否endl;cina;if(a1) tongji();else return;
}void message::age_(Student *pt)//年龄计算
{int age_;age_2019-pt-get_year();//用2019-pt指向的年得出年龄并返回给p1 pt-set_age(age_);
}void message::shanchu()//删除
{int id1;int n;//n为判断是否按姓名查找学号和是否继续执行条件 string name1;//定义查找的名字和学号 p2head;if(headNULL){cout这是一个空列表,请先添加学生信息endl;return;}cout请选择您要查找的方式:1.姓名 2.学号endl;cinn;if(n1){cout请输入您要删除的学生姓名endl;cinname1;if(!find1(name1))//如果find1传来的为flase无此人 cout无此人信息endl;//如果未找的会选择是否继续删除 else n2; //重名现象再用学号查找 }if(n2){cout请输入您要删除的学生学号:endl;cinid1;p1find2(id1);//将找的的数据的地址赋值给p1 if(p1){ofstream out_(删除文件2.txt,ios::app);out_学号:p1-get_id() 姓名:p1-get_name() 性别:p1-get_sex() 专业:p1-get_spe() ;out_出生日期:p1-get_year()年 p1-get_month()月 p1-get_day()日 ;out_家庭地址:p1-get_address() 年龄:p1-get_age() ;out_英语成绩:p1-get_Escore()endl;if(p1head)headp1-next;else{p2-nextp1;p2-nextp1-next;}delete p1;cout删除成功endl;--m; } else cout没有该生信息endl; }if(headNULL){coutendl*******************************endl***信息已全部删除,现文件为空***endl*******************************endl;return;}cout是否继续删除?endl1.是 2.否endl;cinn;if(n1) shanchu();else return;
} void message::read()//读取
{int year,month,day;int id;string name,spe,sex,address;float Escore;headNULL;p2head;ifstream in1(学生信息管理2.txt,ios::in);in1m;if(m0){ cout*****此为空文件*****endl;return;}for(int j0;jm;j){p1new Student();in1idnamesexspeyearmonthdayEscoreaddress;p1-set_id(id);p1-set_name(name);p1-set_sex(sex);p1-set_spe(spe);p1-set_year(year);p1-set_month(month);p1-set_day(day);p1-set_Escore(Escore);p1-set_address(address);p1-nextNULL;if(headNULL)headp1;elsep2-nextp1;p2p1;p2-nextNULL;}in1.close();p2-nextNULL;cout***************************************************************endl***上次保存信息已自动导入***endl;
}void message::rank()//排序
{ if(headNULL)//判断是否为空文件 { cout这是一个空列表,请先添加学生信息endl;return;}cout按英语成绩排序; Student *pendhead,*p0new Student();//定义指针pend并为头结点开辟新的空间p0 p0-nexthead; p1head-next; while(p1) { Student *ptp0-next;p2p0; while(pt!p1pt-get_Escore()p1-get_Escore()) { ptpt-next; p2p2-next; } if(ptp1) pendp1; else { pend-nextp1-next; p1-nextpt; p2-nextp1; } p1pend-next;} headp0-next;delete p0;show1();
}void message::save() //文件的保存
{ofstream out[2];//定义一个保存文件流数组out【】 out[0].open(学生信息管理1.txt,ios::out);out[1].open(学生信息管理2.txt,ios::out);for(int i0;i2;i){p1head;if(i0)out[i]共m名学生endl;if(i1)out[i]mendl;while(p1!NULL){ if(i0){out[i]学号:p1-get_id() 姓名:p1-get_name() 性别:p1-get_sex() 专业:p1-get_spe() ;out[i]出生日期:p1-get_year()年 p1-get_month()月 p1-get_day()日 ;out[i]家庭地址:p1-get_address() 年龄:p1-get_age() ;out[i]英语成绩:p1-get_Escore()endl;p1p1-next;}if(i1){out[i]p1-get_id() p1-get_name() p1-get_sex() p1-get_spe() ;out[i]p1-get_year() p1-get_month() p1-get_day() ;out[i]p1-get_Escore()endlp1-get_address()endl;p1p1-next;} }}out[0].close();out[1].close();cout保存成功endl***信息已保存于学生信息管理1中***endl;
} void menu()//菜单
{system(date/t);//返回当前系统时间system(time/t);//显示系统时间cout******************************************endl;cout1. 新增学生信息endl; cout2. 删除学生信息endl; cout3. 导入学生信息endl;cout4. 学生信息搜索endl;cout5. 学生信息统计endl;cout6. 按英语成绩排序endl;cout7. 浏览学生信息endl; cout8. 保存学生信息endl;cout9. 修改学生信息endl; cout0. 退出endl;cout******************************************endl;}void Mima()
{cout___________________________________________________________endl;cout|*****************欢迎使用学生成绩管理系统****************|endl;cout|---------------------------------------------------------|endl; system(color 3); //调用 color函数可以改变控制台的前景色和背景色 // 其中color后面的数字是背景色代号 大写字母是前景色代号int i3;char num[20];char num1[20]; char user[20];char user1[20];char mima[20];char mima1[20];char mima2[20];FILE *fp; //定义一个指向文件的指针变量 char ch;do{cout1.登录endl;cout2.注册endl; cout3.修改密码endl;cout4.忘记密码endl;cout0.退出endl;cout请输入你要选择的功能0~3 : endl;cinch;cin.clear(); //清空缓冲区 switch(ch){case 1: //将fopen函数的返回值赋给指针变量fp if((fpfopen(mima.txt,r))NULL) //第一次登录时先创建账号 {fclose(fp); //把指向fp的文件关闭此后fp不在指向该文件 cout请先注册账号endl;Mima(); }else //第二次登陆时直接用密码账号登录即可 {fpfopen(mima.txt,r); //打开文件 fscanf(fp,%s %s,user,mima); // 从磁盘文件上读入ASCLL字符 while(1){cout请输入用户名:endl;cinuser1;if(strcmp(user,user1)!0){cout用户名错误请重新输入endl;}else{break;}}cout请输入密码:endl;while(1){cinmima1;if(strcmp(mima,mima1)!0){cout密码错误请重新输入密码:endl;if(i1){exit(0); //三次密码输入错误后直接结束该程序 }i--;}else{break;}} } fclose(fp); //关闭文件 break;case 2:fpfopen(mima.txt,w);cout请创建用户:endl;cinuser;while(1){cout请输入密码endl;cinmima; cout请从新输入密码endl;cinmima1;if(strcmp(mima,mima1)!0){cout密码错误!endl;}else{cout请输入你的联系方式:(方便找回账号)endl; cinnum;cout创建成功!!endl;break;} }fprintf(fp,%s %s %s,user,mima,num);// 将用户名和密码和号码输出到磁盘文件上 fclose(fp);//关闭文件 break; case 3:fpfopen(mima.txt,r);fscanf(fp,%s %s %s,user,mima,num);fclose(fp);cout请输入用户名:endl;while(1){cinuser1;if(strcmp(user,user1)!0){cout用户名错误请重新输入用户名:endl;}else{break;}} cout请输入原密码:endl;while(1){cinmima1;if(strcmp(mima,mima1)!0){cout密码错误!请重新输入密码:; }else{break;}}cout请输入新的密码:endl;cinmima1;cout请确认密码:;while(1){cinmima2;if(strcmp(mima1,mima2)!0){cout密码错误请重新输入密码:;}else{strcpy(mima,mima1); //修改密码成功后用新密码覆盖原密码 cout修改成功!!endl;fpfopen(mima.txt,w);fprintf(fp,%s %s %s,user,mima,num); //然后重新输出到磁盘文件上 fclose(fp);break;} }break; case 4:fpfopen(mima.txt,r);fscanf(fp,%s %s %s,user,mima,num);fclose(fp);cout请输入用户名:endl;while(1){scanf(%s,user1);if(strcmp(user,user1)!0){cout用户名错误请重新输入用户名:endl;}else{break;}}cout请输入联系方式:endl;while(1){cinnum1;if(strcmp(num,num1)!0){cout联系方式错误请重新输入:; }else{break;}}cout请输入新的密码:endl;cinmima1;cout请确认密码:;while(1){cinmima2;if(strcmp(mima1,mima2)!0){cout密码错误请重新输入密码:;}else{strcpy(mima,mima1); //修改密码成功后用新密码覆盖原密码 cout修改成功!!endl;fpfopen(mima.txt,w);fprintf(fp,%s %s %s,user,mima,num); //然后重新输出到磁盘文件上 fclose(fp);break;}}break;case 0:coutendl即将退出程序!endl;exit(0); //结束程序 default :system(CLS); //清屏 cout输入错误请重新输入endl;Mima(); //当输入的不是指定的三个数时重新跳转本页面 }}while(ch1||ch0);system(CLS); //执行完后实现清屏操作
}
int main()
{ message s;int i;Mima();do{ menu();cini;system(cls);switch(i){case 1:system(cls);s.add();break;case 2:system(cls);s.shanchu();break;case 3:system(cls);s.read();break;case 4:system(cls);s.search();break;case 5:system(cls);s.tongji();break; case 6:system(cls);s.rank();break;case 7:system(cls);s.show1();break; case 8:system(cls);s.save();break;case 9:system(cls);s.revision();break;case 0:cout感谢你的使用endl;system(pause);return 0;default:cout选择错误请重新输入endl;system(cls); }}while(i!0);system(pause);return 0;
}