学生成绩管理系统C++语言.docx
- 文档编号:4512690
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:24
- 大小:22.06KB
学生成绩管理系统C++语言.docx
《学生成绩管理系统C++语言.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++语言.docx(24页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C++语言
#include〈fstream〉
#include〈iostream〉
#include〈string〉
#include #include #defineNULL0//指定"NULL"为0 usingnamespacestd; classteacher { protected: stringnum,name,sex;//学号、姓名、性别 public: teacher(){num=”0”;name=sex=”-”;} }; classcourse { protected: stringsubject[35],prace[35];//课程表 public: course() {for(inti=0;i〈35;i++) subject[i]=prace[i]=”/";} }; classstudent: publicteacher,publiccourse//双重继承 { private: stringpassword;//密码 stringClass;//班级 floatmath,English,VC,physics,electron;//数学、英语、C++、物理、电模成绩 student*next;//指向下一节点的指针 public: student(){Class=password=”0";math=English=VC=physics=electron=0;} floatsum(student*p){return(p-〉math+p—〉English+p—>VC+p—>physics+p—〉electron);} //求总成绩 voidRead();//从文件中读入数据,给链表赋值 voidinput();//输入成绩 voidinput_subject();//输入课表 voiddel(stringnum);//删除数据 voidinsert(student*);//插入数据 student*sign();//注册、登录 intseak(float);//排名 voidprint();//输出全部信息 voidprint(stringnum);//输出个人成绩信息 voidprint_subject(stringnum);//输出个人课表信息 voidprint(student*);//输出个人成绩信息 voidprint_subject(student*);//输出个人课表信息 voidWrite();//保存数据 }; intn=0;//定义全局变量n,n为节点数 stringa=”1234”; student*head;//头指针 intmain()//主函数 { stringnum="0"; intb=0,option=9; students; student*stud; system(”color5f”); s。 Read(); cout<〈”********************************************************************************”; cout〈<"******************"; cout<〈"***#欢迎使用本学生成绩管理系统: #***”; cout〈〈”*########*”; cout<〈"*#0.学生入口#*”; cout〈〈”***1。 教师入口***”; cout<〈"******************"; cout<<”--——请输入您的选择: ”; while(a! =”0”&&a! =”1") { cin>〉a; cout〈〈”******************”; if(a! =”0"&&a! ="1") cout〈<”-———ˇ﹏ˇ糟糕! 输入有误,请重新输入您的选择: ”; } stud=s。 sign(); if(a=="0")//A学生入口 { cout〈〈”********************************************************************************”; cout〈<”*********选择菜单: *********”; cout〈〈”***1。 查看自己的成绩***”; cout<〈”*2.查看自己的课表*"; cout〈<”***0。 退出***”; do { cout〈〈”——-—请输入您的选择: ”; cin〉>option; while(option! =0&&option! =1&&option! =2) { cout<<”——ˇ﹏ˇ糟糕! 输入有误,请重新输入您的选择: ”; cin〉〉option; } switch(option) { case1: {cout〈 print(stud);break;}//输出成绩 case2: {s。 print_subject(stud);break;}//输出课表 default: {option=0;break;} } } while(option! =0); } else//教师入口 { do {try{ cout<<"********************************************************************************”; cout〈<”*********选择菜单: *********"; cout〈〈”***1.查看自己的信息***”; cout<<"*2.查看指定学生信息*”; cout<〈”**#3.查看所有学生信息#**"; cout〈〈”**####4.录入学生信息####**”; cout<〈”*#5.修改学生信息#*"; cout〈〈”***6。 删除学生信息****”; cout〈<”*********0。 退出*********"; cout<〈”-———请输入您的选择: "; cin>〉option; if(option〈0||option>6)thrownum; cout<〈endl; switch(option) { case1: //查看自己的信息 { cout〈<"-—1。 查看成绩——”; cout〈〈”——2。 查看课表——”; cout〈〈"---—请输入您的选择: ”; cin〉〉a; if(a! =”1"&&a! ="2”)thrownum; if(a=="1") {cout〈〈”——个人信息: ”<〈endl; s。 print(stud);}//输出个人成绩信息 else {cout〈<"-—课表: ”< s。 print_subject(stud);//输出个人课表 } cout<〈"-—按任意键返回主菜单: "; getch(); system(”cls"); break; } case2: //查看指定学生信息 {cout〈〈”-—请输入您要查找的学号: "; cin〉〉num; if(b=num。 length()! =12)throw1; cout〈<”——1。 查看成绩——”; cout<<"-—2.查看课表——”; cout<〈”--—-请输入您的选择: ”; cin〉>a; if(a! =”1”&&a! ="2”)thrownum; if(a==”1”) {cout〈〈”——个人信息: "<〈endl; s.print(num);}//输出个人成绩信息 else {cout<〈"-—课表: ”< s。 print_subject(num);}//输出个人课表 cout<<”—-按任意键返回主菜单: ”; getch(); system("cls"); break; } case3: //查看所有学生信息 {cout<<"-—数据库中共有"〈〈n〈<”名学生的信息: ”< if(head! =NULL) s。 print();//输出所有信息 cout〈<”--按任意键返回主菜单: "; getch(); system("cls”); break; } case4: //录入学生信息 { cout〈〈”-—1。 录入成绩--"; cout<〈”——2.录入课表--"; cout〈<"—-——请输入您的选择: "; cin>〉a; if(a! =”1"&&a! ="2”)thrownum; if(a==”1”) s。 input();//输入成绩 else s.input_subject(); s。 Write();//输入课表 cout〈〈”--按任意键返回主菜单: ”; getch(); system(”cls”); break; } case5: //修改学生信息 { cout〈〈"——1。 修改成绩—-”; cout〈〈”——2。 修改课表—-"; cout〈〈”---—请输入您的选择: ”; cin>〉a; if(a! =”1"&&a! ="2")thrownum; if(a==”1") s。 input();//修改成绩 else s。 input_subject(); s.Write();//修改课表 cout〈〈"——按任意键返回主菜单: "; getch(); system(”cls”); break; } case6: //删除学生信息 { cout〈〈"--请输入要删除的学号: "; cin〉〉num; if(b=num.length()! =12)throw1; else {s。 del(num); s。 Write();}//删除后保存信息 cout〈〈”—-按任意键返回主菜单: "; getch(); system(”cls"); break; } default: {option=0;break;}//退出选择菜单 } } catch(int) {cout〈〈”--ˇ﹏ˇ糟糕! 输入有误,请正确输入12位的学号! ”〈 cout<〈”-—按任意键返回主菜单: ”; getch(); system("cls"); } catch(string) {cout〈〈”——ˇ﹏ˇ糟糕! 输入有误! "〈〈endl; cout<〈”——按任意键返回主菜单: ”; getch(); system(”cls”); } } while(option! =0); } s。 Write();//退出前保存信息 deletehead;//撤销动态建立的空间 return0; } voidstudent: : Read()//从文件读入信息,给链表赋值 { student*p,*p2; ifstreaminfile(”student.txt”,ios: : in); p=newstudent; head=p; head—>next=NULL; if(! infile) cerr<〈"-—文件: student。 txt读取失败! ”〈〈endl; else {infile〉〉n; for(intl=0;l〈n;l++) { infile〉〉p—〉num〉>p—〉password>>p—〉name〉〉p—>sex〉〉p—>Class>〉 p—〉physics〉>p—〉electron〉>p—>math〉>p—〉English>>p-〉VC; for(inti=0;i<35;i++) infile>〉p—>subject[i]>〉p—>prace[i]; p2=p; p=newstudent; p2-〉next=p; } p2-〉next=NULL; infile.close(); } } student*student: : sign()//注册、登录 { student*p1,*p2,*stu; stringnum1; p1=head; inti=9,m=0; cout〈〈"***2。 注册***”; cout〈<"*3。 登录*"; cout<〈”-—--请输入您的选择: "; try { while(a! =”2”&&a! =”3”) { cin〉>a; if(a! =”2”&&a! =”3”) cout<〈”-———ˇ﹏ˇ糟糕! 输入有误,请重新输入您的选择: ”; m=m+1; if(m〉3)throwstu; } if(a==”2”) { while(m<3) { m=m+1; stu=newstudent; cout<〈”—-请输入学号: ”; cin〉>stu-〉num; while(i=stu—>num。 length()! =12) { cout〈〈”—-——ˇ﹏ˇ糟糕! 输入有误,请正确输入12位的学号: ”; cin〉〉stu—〉num; } while(stu->num! =p1—〉num&&p1-〉next! =NULL) {p2=p1;p1=p1-〉next;} if(stu—〉num==p1—〉num&&p1—〉password! =”0”) {cout〈〈"—-此学号已注册,请重新输入! ”〈〈endl; continue; } if(stu—〉num==p1—〉num) { cout<〈"—-请输入密码: ”; cin〉〉p1—〉password; cout<〈”——请再次输入密码: "; cin〉>num1; if(p1—〉password! =num1) {cout〈〈”-—两次密码不匹配,请重新输入! ”〈 cout〈〈”-—请输入姓名: ”; cin>〉p1—>name; cout〈<”——请输入性别: "; cin>>p1—〉sex; } else { cout〈〈”——请输入密码: ”; cin〉〉stu—〉password; cout〈〈"——请再次输入密码: ”; cin>〉num1; if(stu->password! =num1) {cout〈〈"——两次密码不匹配,请重新输入! ”〈 cout〈〈”——请输入姓名: ”; cin〉〉stu—〉name; cout<〈"--请输入性别: ”; cin>〉stu—>sex; insert(stu); } cout〈〈endl〈〈"-—*^_^*恭喜,注册成功! "< Write();//保存注册的信息 cout<〈”——按任意键返回主菜单: ”; getch(); system(”cls”); returnstu; break; } } else { while(m〈3) { m=m+1; stu=newstudent; cout〈〈”——请输入学号: ”; cin〉〉stu->num; while(i=stu—〉num.length()! =12) { cout<<"——ˇ﹏ˇ糟糕! 输入有误,请正确输入12位的学号: ”; cin〉〉stu—>num; if(m〉3)throwstu; } cout<<”——请输入密码: "; cin>>stu—〉password; while(stu—〉num! =p1-〉num&&p1—〉next! =NULL) {p2=p1;p1=p1—〉next;} if(stu—〉num==p1—〉num&&stu—〉password==p1—〉password) {cout<〈endl〈〈”——*^_^*恭喜,登录成功! ”〈〈endl< cout〈〈"--按任意键返回主菜单: "; getch(); system(”cls"); returnstu;break; } else {cout<<”——学号或密码输入有误,请重新输入! "〈〈endl;continue;} } } } catch(student*) {cout〈〈”——您登录或注册的次数已超过3次,程序已自动退出! "〈 (1);} } voidstudent: : input()//输入成绩信息 { student*p1,*p2; intr=0; stringnum; p1=head; cout<〈”-—请输入学号: ”; cin〉〉num; if(r=num。 length()! =12)throwr; while(p1-〉num! =num&&p1-〉next! =NULL) {p2=p1;p1=p1—>next;}//如果未找到此学号,则指针后移一个节点 if(p1->num==num)//找到就输入此学生信息 { cout〈<”—-请输入姓名: ”; cin〉〉p1—〉name; cout<〈”请输入性别: "; cin〉>p1—>sex; cout<<”——请输入班级: ”; cin〉〉p1—>Class; cout〈〈”-—请输入数学成绩: ”; cin〉〉p1—〉math; cout<〈”—-请输入英语成绩: ”; cin〉〉p1—〉English; cout〈〈"—-请输入C++成绩: "; cin〉>p1—>VC; cout〈〈"—-请输入物理成绩: ”; cin>〉p1-〉physics; cout〈〈”——请输入电模成绩: "; cin>>p1—〉electron; } else//未找到则新建一个节点 { p1=newstudent; p1—〉num=num; cout〈〈"--请输入姓名: ”; cin〉>p1->name; cout〈〈"请输入性别: "; cin〉>p1—〉sex; cout〈〈”-—请输入班级: "; cin>〉p1—>Class; cout<〈”—-请输入数学成绩: "; cin〉〉p1—〉math; cout<<”--请输入英语成绩: ”; cin>〉p1-〉English; cout〈<”—-请输入C++成绩: ”; cin〉〉p1—〉VC; cout〈〈"——请输入物理成绩: ”; cin>〉p1—〉physics; cout〈<”--请输入电模成绩: ”; cin〉>p1-〉electron; insert(p1);//将新建的节点插入到链表中 } } voidstudent: : input_subject()//输入课表信息 { student*p1,*p2; intr=0,t=0; stringnum; p1=head; cout〈〈”——请输入学号: "; cin〉〉num; if(t=num.length()! =12)throwr; while(p1—>num! =num&&p1—>next! =NULL) {p2=p1;p1=p1—〉next;}//如果未找到此学号,则指针后移一个节点 if(p1-〉num==num)//找到就输入此学生课表信息 { for(inti=0;i<5;i++) for(intj=0;j<7;j++) { cout<<”-—请输入星期”<〈j+1〈<”第”<〈i+1<〈”大节课的科目: ”; cin>>p1—〉subject[r]; cout<<”—-请输入星期"〈 "; cin〉〉p1—>prace[r]; r=r+1; } } else//未找到,则新建一个节点 { p1=newstudent; for(inti=0;i〈5;i++) for(intj=0;j〈7;j++) { cout<〈”——请输入星期”< ”; cin〉>p1-〉subject[r]; cout<〈"—-请输入星期”<〈j+1〈〈”第”<〈i+1〈〈”大节课的地点: ”; cin>〉p1—〉prace[r]; r=r+1; } insert(p1);//将新建的节点插入到链表中 } } voidstudent: : del(stringnum)//删除信息 { student*p1,*p2; if(head==NULL)//如果链表为空,则返回删除失败 {cout<〈"-—删除失败,链表为空! "〈 p1=head; while(num! =p1—〉num&&p1—〉next! =NULL) {p2=p1;p1=p1—>next;} if(num==p1—〉num)//如果有此学号 { if(p1==head)head=p1—>next; elsep2—〉next=p1—〉next; cout<〈”—-学号: ”〈〈num<〈"已成功删除。 ”〈〈endl; n=n—1; } elsecout<〈"—-未找到此学号,删除失败"〈〈num;//如无此学号,返回删除失败
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 C+ 语言