学生考试成绩管理系统.docx
- 文档编号:9861299
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:19.64KB
学生考试成绩管理系统.docx
《学生考试成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生考试成绩管理系统.docx(19页珍藏版)》请在冰点文库上搜索。
学生考试成绩管理系统
学生考试成绩管理系统
一、课程设计内容:
学生考试成绩管理系统具体要求:
对某专业多个班级的学生的多门功课的成绩进行管理,要求实现以下功能:
1.输入学生成绩
2.修改学生成绩
3.删除学生成绩
4.计算每位学生总分
5。
计算每位学生的平均分
6。
按学号或姓名查询学生成绩
7.按班级查询学生成绩
8.成绩排序
9.按班级统计学科总分,平均分
0、退出
#include { public: student*next;public: stringname;//姓名 longnum;//学号 intx,y,z;//数学,语文,英语intAA;//总分 voidplay(){cout< "< ”<〈y<〈",英 语: "<〈z<〈”,总分: "<〈AA<〈endl;}; student(stringsname,longsnum,intsx,intsy,intsz) { name=sname;num=snum;x=sx; y=sy; z=sz; } }; classcla{ public: cla()//构造函数 { stu=0; sload(); } ~cla()//析构函数 { student*p;p=stu; while(p) { p=p—〉next;deletestu;stu=p; } stu=0; } voidsadd();//添加 voidsremove();//删除voidsamend();//修改 voidssearch();//查询 voidstaxis();//排序 voidssave();//保存 voidsload();//读取 //排序函数 voidpxh();voidpsx();voidpyw();voidpyy();voidpAA();private: student*stu;//头接点}; voidcla: : sadd()//添加{ student*q;stringname1;longnum1;intx1,y1,z1; system("cls”); cout<<”\n**增加的学生**\n”<〈endl;cout〈〈"请输入学生的(中间用空格间隔)”< "<〈endl; cin>〉name1>>num1〉>x1〉>y1>>z1; q=newstudent(name1,num1,x1,y1,z1); q-〉next=0; q—>AA=x1+y1+z1; if(stu) { student*t; t=stu; if(t—〉num==num1) { cout〈<”学号已存在,请重新输入"<〈endl;return; } while(t—>next) { if(t—>num==num1) { cout〈<”学号已存在,请重新输入”<〈endl;return; } t=t-〉next; } t-〉next=q; } else { stu=q; } cout〈<"输入完毕”〈〈endl;} voidcla: : sremove()//删除 { system("cls");intnum1; cout〈<”\n**删除学生信息**\n”; cout〈〈”请输入想要删除学生的学号: ";cin>>num1; //查找要删除的结点 student*p1,*p2;p1=stu; while(p1) { if(p1—〉num==num1)break; else { p2=p1; p1=p1—〉next;} } //删除结点 if(p1! =NULL)//若找到结点,则删除{ p1->play(); cout<〈"确定删除吗? [Y/N]"< charc;cin〉>c; if(toupper(c)! =’Y’)return; if(p1==stu)//若要删除的结点是第一个结点{ stu=p1->next; deletep1; } else//若要删除的结点是后续结点 { p2—>next=p1->next;deletep1; } cout〈〈”找到学号为"<〈num1<〈"的学生,并删除\n"; } else//未找到结点 cout〈〈”未找到想要删除的学生! \n";} voidcla: : samend()//修改 { system("cls"); longnum1; cout<<"\n**修改学生信息**\n”; cout<<”输入要修改学生的学号"; cin〉>num1; //查找要修改的结点 student*p1,*p2; p1=stu; while(p1) { if(p1—>num==num1) break; else { p2=p1; p1=p1—〉next; } } if(p1! =NULL) { cout〈〈”学号是"<〈num1〈〈”的学生的信息”〈〈endl;cout<〈"姓名”< cout<<"请输入修改后的信息: 姓名数学成绩语文成绩英语成绩"〈 cin〉>p1-〉name〉>p1-〉x〉〉p1->y〉>p1-〉z; p1—>AA=p1-〉x+p1—>y+p1—>z;cout<〈"修改成功"〈〈endl; } else//未找到接点 cout〈〈”未找到! \n"; } voidcla: : ssearch()//查询 { system("cls”);cout〈<”\n**查询学生信息**\n”< cout<〈"请输入查询方式: "<〈endl;cout<〈”1.按学号查询"<〈endl;cout〈<"2。 按姓名查询"〈〈endl; ”< charc;cin>〉c;switch(c) { case'1’: { longnum1; cout<〈"要查询的学号”〈〈endl;cin〉>num1; //查找要查询的结点 student*p1,*p2;p1=stu; while(p1) { if(p1-〉num==num1)break; else { p2=p1; p1=p1-〉next; } } if(p1! =NULL) { cout〈<”学号是"〈 cout<〈”姓名: ”< "〈 "〈 ”〈 cout<<”查询完毕..。 ”; } else//未找到接点 cout<〈"未找到! \n"; break; } case'2’: { stringname1;cout〈<”要查询的学生姓名”〈〈endl;cin>〉name1; //查找要查询的结点 student*p1,*p2;p1=stu; while(p1) { if(p1—〉name==name1)break; else { p2=p1; p1=p1->next; } } if(p1! =NULL) { cout〈 ”〈 "〈 "< ”〈〈p1-〉z<〈endl; cout〈<"查询完毕..."; } else//未找到接点 cout<<"未找到! \n"; break; } case'3': return;} } voidcla: : pxh()//按学号排序 { student*p1,*p2; intn; p1=stu; n=1; while(p1—〉next) {n++;p1=p1—〉next;}cout<<”共有"〈〈n〈<”条信息。 。 。 ”< p1=stu; for(i=1;i { p1=stu; if(p1—>num〉p1-〉next—>num)//如果头结点大于第二个的 { p2=p1-〉next; p1—>next=p1—>next—>next; p2—>next=p1;//头结点交换 stu=p2; } p1=stu; while(p1->next-〉next)//中间的交换{ p2=p1; p1=p1—〉next; if(p1—>num〉p1—〉next—〉num) { p2->next=p1->next;p1->next=p1->next—〉next; p2->next—>next=p1;p1=p2—〉next;//交换 } } } p1=stu; do { p1—〉play(); p1=p1-〉next; }while(p1); } voidcla: : psx()//按数学成绩排序 { student*p1,*p2; intn; p1=stu; n=1; while(p1—〉next) {n++;p1=p1-〉next;}cout<〈"共有”< ”<〈endl;inti; p1=stu; for(i=1;i {p1=stu; if(p1—>x>p1—>next->x)//如果头结点大于第二个的{p2=p1—〉next; p1-〉next=p1—>next—>next;p2—>next=p1;//头结点交换 stu=p2; } p1=stu; while(p1-〉next->next)//中间的交换 {p2=p1; p1=p1—>next; if(p1-〉x>p1->next->x){ p2->next=p1->next;p1—〉next=p1—〉next->next;p2->next—〉next=p1;p1=p2-〉next;//交换 } } } p1=stu; do {p1—〉play();p1=p1—〉next; }while(p1); } voidcla: : pyw()//按语文成绩排序{ student*p1,*p2;intn; p1=stu; n=1; while(p1—>next){n++;p1=p1—>next;} cout<〈"共有”<〈n〈〈”条信息。 .。 ”〈〈endl; inti; p1=stu; for(i=1;i〈n;i++){p1=stu; if(p1->y>p1—〉next—>y)//如果头结点大于第二个的 {p2=p1->next;p1—>next=p1—>next->next; p2—>next=p1;//头结点交换 stu=p2; } p1=stu; while(p1—>next-〉next)//中间的交换{p2=p1; p1=p1—〉next; if(p1->y>p1—>next—>y){ p2—〉next=p1—>next;p1->next=p1—>next—〉next; p2->next—〉next=p1;p1=p2-〉next;//交换 } } } p1=stu; do {p1->play(); p1=p1-〉next; }while(p1); } voidcla: : pyy()//按英语成绩排序 { student*p1,*p2;intn; p1=stu; n=1; while(p1->next){n++;p1=p1—〉next;}cout〈〈"共有”〈〈n〈<"条信息。 .。 ”〈 inti; p1=stu; for(i=1;i〈n;i++){p1=stu; if(p1—〉z〉p1—〉next—〉z)//如果头结点大于第二个的{p2=p1—〉next; p1->next=p1—>next—〉next; p2-〉next=p1;//头结点交换 stu=p2; } p1=stu; while(p1—>next-〉next)//中间的交换{p2=p1; p1=p1—〉next; if(p1—〉z>p1->next->z){ p2-〉next=p1->next;p1—〉next=p1—>next-〉next; p2—>next—〉next=p1;p1=p2-〉next;//交换 } } } p1=stu; do {p1—〉play(); p1=p1-〉next; }while(p1); } voidcla: : pAA()//按总分排序 { student*p1,*p2; intn; p1=stu; n=1; while(p1-〉next) {n++;p1=p1-〉next;}cout<〈”共有"〈〈n<〈”条信息.。 。 "〈〈endl;inti; p1=stu; for(i=1;i {p1=stu; if(p1—>AA〉p1->next—〉AA)//如果头结点大于第二个的{p2=p1—〉next; p1-〉next=p1—>next-〉next;p2—>next=p1;//头结点交换 stu=p2; } p1=stu; while(p1—〉next-〉next)//中间的交换 {p2=p1; p1=p1—>next; if(p1—>AA〉p1->next—>AA){ p2->next=p1—〉next;p1—〉next=p1-〉next—>next;p2-〉next->next=p1;p1=p2—>next;//交换 } } } p1=stu; do {p1—>play(); p1=p1-〉next; }while(p1); } voidcla: : staxis()//排序 { system("cls"); charc; cout〈<”请选择以何种方式排序: ”〈〈endl;cout〈〈”1……以学号排序"< cout〈<"请选择(1-6)"〈 switch(c) { case’1’: pxh();break;case'2’: psx();break;case’3’: pyw();break;case'4’: pyy();break;case'5’: pAA();break;case'6': return; } } voidcla: : ssave()//保存到文件 { system("cls”); charc; cout〈〈”\n保存学生信息(将覆盖原文件),是否继续? [Y/N]: ";cin>>c; if(toupper(c)! =’Y')return; ofstreamtfile(”date.txt”,ios_base: : binary); student*p=stu;while(p)//写入文件 { tfile〈〈p-〉name〈〈"\t"< tfile< p=p-〉next; } tfile.close(); cout<〈"保存完毕。 。 .”< voidcla: : sload()//读取 { student*p; p=stu; while(p) { stu=p->next; deletep; p=stu; } ifstreamtfile(”date.txt”,ios_base: : binary); stringname1;longnum1; intx1,y1,z1;tfile>>name1〉〉num1>>x1〉>y1〉〉z1; while(tfile。 good()) { //创建学生接点 student*s; s=stu; s=newstudent(name1,num1,x1,y1,z1); s-〉next=0; s-〉AA=x1+y1+z1;if(stu)//若已经存在结点 { student*p2;p2=stu; while(p2—>next)//查找尾结点{ p2=p2->next;} p2—>next=s;//连接 } else//若不存在结点(表空) { stu=s;//连接 } tfile>>name1>〉num1>>x1〉>y1>〉z1; } tfile.close(); cout<<”\n学生信息已经装入。 ..\n”; } voidmain() { charc; claa; do { cout<〈"\n学生成绩管理系统\n”;cout<〈”**************************************\n”; cout〈〈"作者: 软件工程06110119: zgjxwl\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〈<"**************************************\n”; cout<<"请选择(1-8): ”; cin〉>c; switch(c) { case’1': a.sadd();break;case'2': a。 sremove();break;case'3': a。 samend();break;case'4’: a。 ssearch();break;case'5': a。 staxis();break;case'6’: a。 ssave();break;case'7': a.sload();break;} }while(c! ='8’); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考试 成绩管理系统