版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
芜湖职业技术学院信息工程系课程设计班级学号100408224 姓名许克龙 成绩 课程名称G4面对对象程序设计设计题目学生成绩管理系统 指导教师唐贤传 完成日期2011年6月24日目录TOC\o"1-5"\h\z\o"CurrentDocument"ー、引言 3\o"CurrentDocument"二、程序设计要求 4\o"CurrentDocument"三、需求分析 51、学生信息录入功能 5\o"CurrentDocument"2、文件保存功能 53.文件打开功能 54、查询功能 55,排序功能 56报表是相互出功能 5\o"CurrentDocument"四、设计思路 6\o"CurrentDocument"1、学生信息输入模块 62、文件保存功能模块 6\o"CurrentDocument"3、文件排序功能模块 64、文件查询功能模块 6\o"CurrentDocument"六、局部概念设计 7\o"CurrentDocument"1,student类 7\o"CurrentDocument"2、school类 8\o"CurrentDocument"3,密码修改流 9\o"CurrentDocument"六、总体设计 101、学生信息输入模块设计 102、文件保存模块设计 103、文件排序模块设计 104、文件查询模块设计 105,报表输出模块设计 106、全局流程图 11\o"CurrentDocument"七、调试分析 12ハ、测试分析 13\o"CurrentDocument"九、课程设计总结 22\o"CurrentDocument"十、附录 23ー、引言该程序是用C++语言在VisualC++下编写的。编译后生成一,个可执行的程序,该程序是学生成绩管理系统。面临的信息很多,但是如何从大量的信息中筛选出所需的信息,有用的信息,オ是解决问题的关键,另外一个就是解决问题的方法,就像我在解决设计中的很多问题・样,ー开始总是在看书,和书上的进行比对,虽然书本上的只是大部分都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,所以要求我们一定要通过实践才能找到解决问题的方案。二、程序设计的要求.了解并掌握面向对象程序设计方法,具备初步的独立分析和设计能力。.初步掌握软件开发过程的问题分析,系统设计,程序编码,测试等基本方法和技能。.提高综合运用所学的理论知识和方法,独立分析和解决问題的能力。.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所具备的科学的工作方法和作风。.设计的题目要求达到ー定工作量(300行以上代码),并具有一定的深度和难度。.编写出课程设计说明书。.学生必须仔细阅读《C++程序设计教程》课程设计方案,认真主动完成课程设计的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况。.课程设计前期安排学习C++编程和面向对象的软件工程的有关知识,以自学和上机实验为主。三、需求分析:用数组或链表数据结构完成一个学生成绩管理系统,此系统的具体功能要求如下:(1)学生信息录入功能1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、C++、物理和课程设计五门课成绩。2)可插入一个或多个学生信息到当前编辑的班级数据中。3)可删除ー个或多个学生信息。(2)十件保存功能1)学生信息每ー班存为ー个数据文件,数据文件可在程序中打开、编辑和重新保存。2)用户输入学生信息可随时保存数据文件。(3)文件打开功能1)程序只能对当前打开的数据文件进行编辑。(4)査询功能1)浏览所有学生信息;2)按学号查询学生信息;3)按姓名查询学生信息;4)查询ー•个班总成绩和平均成绩;5)查询ー个班某ー门课总成绩和平均成绩;(5)排序功能1)按照学生学号进行排序2)按照学生姓名进行排序(6)报表输出功能1)按总成绩输出从高到低输出学号、姓名等信息。四、设计思路整体框架:整个学生成绩管理系统采用链表作为基本数据结构,创建一个类student用于保存学生的数据且是链表中的ー个节点,定义一个school类,用于进行排序,删除,修改,保存,查找等操作,提取学生信息。该程序外部函数采用switch语句来实现各个模块,主函数则通过switch语句连接各个模块,以实现用户的需要。模块基本介绍:.学生信息录入模块此模块可以让用户从键盘输入每个学生的信息:学号、姓名、性别以及数学、英语、C++、物理和课程设计成绩。用户可插入一个或多个学生信息到当前编辑的班级数据中。用户可删除ー个或多个学生信息。.文件保存功能模块当输入学生的信息后,可以随时将学生的信息保存,无论学生人数的多少均可保存,包括修改,删除等操作后的保存。3、文件排序模块、在此模块中根据学生的学号或者是姓名查询学生的信息,其中主要査询其成绩以及个人资料,用于提取学生信息或者修改学生信息,采用学生学号或者总分排序。4、査询功能模块在此模块里,用户可实现以下操作:1.按学号查询学生信息;2.按姓名查询学生信息;其中主要査询-个班中各科成绩大于90分的学生信息和各科成绩低于平均成绩的学生信息。五、局部概念设计1、student类student-num:string-sx:float-cpp:ks-ave:floar-name:string -sex:string-yy:float -wkfloat-ks:float -num:float-fank:int+student()+set():void+set(ifstream&f)+set(student*p):void4-print():void+print(ofstream&f):voidstudent类及其成员的定义:classStudent(public:Student(){next=0;}voidSet();〃输入学生信息voidSet(ifstream&f); 〃导入学生信息voidSet(Student*p); 〃拷贝学生信息voidPrint();〃输出学生信息voidPrint(ofstream&f);〃保存学生信息friendclassSchool;private:stringnum;stringname;stringsex;〃学号〃姓名〃性别floatsx,yy,wl,cpp,ks;〃课程floatsum,ave;intrank;Student*next;〃总分、平均分〃名次〃链表指针};
2、schoo!类school-Student*p-*ps+Input():void+output(intx):void+load():void+save():void+Student*school::search()+find():void+edit():void+Delete():void+numsort():void+sumsort():void+output(char*):void+Jsys():void+jfyx():void+bjg():viod+setpass():voidSchloo!类及其成员的定义:classSchool(public:School(){ps=0;}"School();voidInput();〃批量输入、增加学生信息voidOutput(intx);〃输出全体学生信息voidLoad();〃载入学生信息voidSaveO;〃保存学生信息Student*School::Search。;〃搜索学生信息voidFindO;〃查找学生信息voidEdit();〃修改学生信息voidDelete();〃删除学生信息voidNumsort();〃按照学号排序voidSumsort();〃按照总分排序voidOutputT(char*);〃输出表格头部voidOutputLO;〃输出表格尾部voidJsys();//90分以上的voidJfyxO;〃平均分以下的voidBjg();〃不及格的学生voidSetpass();private:〃修改登录密码
Student*p,*ps;〃定义动态指针和表头指针Student*p,*ps;〃定义动态指针和表头指针};3、密码修改流程图:首先输入原始密码,但原始密码输入正确后再输入新密码,若不正确则再次输入原始密码。输入新密码后再输入确认密码,两次输入的密码相同时则修改成功,若不同则重新设置新密码。六、总体设计主要功能模块的算法设计思路:.学生信息录入模块设计通过应用student类,来进行姓名,性别,学号和成绩的录入功能。学生信息的修改、删除、排序及查找功能都在schoo!类中实现.文件保存功能模块通过函数student::print(ofstream&f)对学生的信息进行保存,当输入学生的信息后,返回到菜单中,有保存学生信息栏,选择可以将学生的信息保存。3、文件排序模块盛序模块分为两小块,・块是按照学号排序,令一块是按照总分排序。两者都是在有schoo!类的前提下进行的。按照学号排序块调用了school类中的numsort。函数,采用判断语句和双重循环对学生信息排序。按照总分排序块调用了school类中的sumsort。函数,同学号排序块,采用了判断语句和双重循环保存学生信息。.査询功能模块可以根据姓名或学号进行查找,搜索方法和前几个模块相同。调用schoo!类中的find。函数,查找90分以上,平均分以下的信息,或者按照其他的查询方法查找学生信息。90分以上和平均分以下的学生信息查询都采用了switch语句,分情况查找。.报表输出功能模块输出块分两种大的情况,即有学生信息是的输出和没有学生信息时的输出。有学生信息时的输出调用student类的函数print,没有学生信息时的输出调用school类的函数output(intx),输出结果无学生信息。
6.全局流程图首先输入密码,密码输入正确后进入系统,否则不能进入并重新输入密码。进入系统后进行相关的操作,最后输出学生的信息。七、调试分析调试是整个程序编写过程中十分重要也是很困难的一部分,在这个过程中用了不少的时间进行程序的调试,在调试过程中遇到的相关问题如下:ー、语法错误1、语句的最后忘记了加上“;”,使程序发生错误。2、把“くく”与“>>”写反,以及字符与字符串的操作问题,这些是比较简单的错误,很容易分辨出来,并改正之。3、函数的返回值问题,也是比较容易找出并解决的问题。二、逻辑错误1、文件的写入与读出,刚开始对文件的操作不太明白,一致不能很好的操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示全部学生成绩”将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码。2、内存的分配问题,这也是困惑了我好久的问题。对于我们初学者来说对内存的分配和释放问题是比较抽象和模糊的难题,本来使用链表的方式存储数据,然而待到排序时出现了交换数据困难的问题,以及分配空间繁琐释放空间不及时的问题,造成空间浪费使得程序运行效率低的问题。因此最后采用了顺序存储记录的方式,这样就能改变前述问题。整个调试过程中主要是这么几个问题,其余的是ー些小问题,很容易的就调试出来了。ハ、测试结果1、密码界面2、主界面c、"C:\DocufnentsandSettings\Administrator\Debug\Cppl.exe" 学生成绩管理系统
»输入学生信息《学号排序输出査询学生信息 总分排序输出修改学生信息 90分以上的和赊学生信息 平均分以下的保存学生信息 不及格的学生修改登录密码 退出管理系统2»录入记录»»»»»»输入学生信息くくくくくくくくくくくく1xkn绩绩 成成成成成号名皐语理♦♦设学姓性数霽C课入入入入入入入入常稀稀常情,粕福帝[任意键】ー继续添加 【ESC】ー返回上层3»查询记录按学号查找:按姓名查找:4,删除记录訳"G\DocumentsandSettings\Administrator\Debug\Cppl.exe'删除学生信息成功ILi訳・C:\DocumentsandSettingsXAdministratorXDebugXCppl.exe*'5,排序记录6,90分以上
10、不及格11.修改密码九、课程设计的总结两个星期的课程设计,带给我很多的收获。C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这ー步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是・件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我花了两天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这オ可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。此次任务的完成,也体现出同学之间的团结精神。实践是检验真理的唯一标准。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,オ会认可它的真实性。面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。十、附录源代码:/*=====================文件名:student,cpp描述:学生成绩管理系统初始密码:060505217主菜单:主菜单:r一=ー一学生成绩管理系统II»输入学生信息«查询学生信息修改学生信息删除学生信息保存学生信息修改登录密码学号排序输出总分排序输出90分以上的
平均分以下的
不及格的学生
退出管理系统II JI使用说明:小键盘区:[1]ー左[2]—下[3]ー右[5]—上回车键一确认空格键一右 [ESC]ー返回====================================================*/#include<iostream>#include<iomanip.h> 〃设置字宽#include<fstream.h> 〃文件存取#include<stdlib.h> 〃调用DOS命令#include<conio.h>〃按键检测#include<string.h> 〃字符串处理typedefcharstring[80];〃定义字符串类型stringpassword;//•定义学生类
//•classStudentpublic:Student(){next=O;}voidSeto; 〃输入学生信息voidSet(ifstream&f); 〃导入学生信息voidSet(Student*p); 〃拷贝学生信息voidPrint(); 〃输出学生信息voidPrint(ofstream&f);〃保存学生信息friendclassSchool;private:stringnum; 〃学号stringname:〃姓名stringsex; 〃性别floatsx,yy,wl,cpp,ks;〃课程floatsum,ave; 〃总分、平均分intrank; 〃名次Student*next; 〃链表指针};〃输入学生信息voidStudent::Set()cin>>num;cin>>namecin>>num;cin>>name;cin»sex;cin»sx;cin»yy;cin>>wl;cin»cpp;cin>>ks;coutくく“'t\t请输入学号:“;cout«"\t\t请输入姓名:";coutくく"'t\t请输入性别:";coutくく"'t't请输入数学成绩cout«"\t\t请输入英语成绩cout«"\t\t请输入物理成绩cout«"\t\t请输入C++成绩coutくく"'t't请输入课设成绩sum=sx+yy+wl+cpp+ks;ave=sum/5;〃导入学生信息voidStudent::Set(ifstream&f)f>>num»name>>sex;f»sx>>yy»wl»cpp>>ks;f»sum>>ave>>rank;}〃拷贝学生信息voidStudent::Set(Student*p){strcpy(num,p->num);strcpy(name,p->name);strcpy(sex,p->sex);sx=p->sx;yy=p->yy;wl=p->wl;cpp=p->cpp;ks=p->ks;sum=p->sum;ave=p->ave;rank=p->rank;}〃输出学生信息voidStudent::Print()(coutくく"I"くくsetw(15)くくnumくくsetw(10)くくnameくくsetw(5)くくsexくく”;cout«setw(5)«sx«setw(5)«yy«setw(5)«wl«setw(5)«cpp<<setw(5)«ks«":";cout«setw(6)«sum«setw(5)«ave<<setw(4)«rank«"|"«endl;}〃保存学生信息voidStudent::Print(ofstream&f)(f«endl<<setw(15)<<num<<setw(10)«name«setw(5)«sex;f«setw(5)«sx«setw(5)<<yy<<setw(5)«wl«setw(5)<<cpp<<setw(5)<<
ks;f«setw(6)«sum<<setw(5)«ave«setw(4)«rank;// 定义学校类 classSchoolpublic:School(){ps=0;}"School();voidInput()i 〃批量输入、增加学生信息voidOutput(intx); 〃输岀全体学生信息voidLoad(); 〃载入学生信息voidSaveOi 〃保存学生信息Student*School::Search()i〃搜索学生信息voidFind();voidFind();voidEdit();voidDelete();voidNumsort();voidSumsort();〃查找学生信息〃修改学生信息〃删除学生信息〃按照学号排序〃按照总分排序voidOutputLOvoidOutputLO;voidJsys();voidJfyx();voidBjg();voidSetpass();private:Student*p,*ps;);voidOutputT(char*);〃输出表格头部〃输出表格尾部//90分以上的〃平均分以下的〃不及格的学生〃修改登录密码〃定义动态指针和表头指针School:qSchool()(p=ps;while(p!=0)ps=p->next;deletep;P=PS;//批量输入、增加学生信息voidSchool::Input()do{system("cls");cout«endl<<endl<<endl«endl;cout«"\t\t»»»»»»输入学生信息くくくくくくくくくくくく“くくendlくくendl;if(ps=0){ps=newStudent;ps->Set();)else(p=ps;while(p->next!=0)p=p->next;p->next=newStudent;p->next->Set();)cout«endl«"\t\t[任意键]—继续添加[ESC]ー返回上层"«endl;}while(getchO!=27);Sumsort();}〃输出表格头部voidSchool::0utputT(char*title)(system("cls");cout«endl;cout«"0 "«title«";—II«endl;COUt«*I 1 [くくend];coutくく〃!学号 姓名性别[数学英语物理C++课设;总分均分名次I〃くくendl;)〃输出表格尾部voidSchool::OutputL(){COUt«*I I J,/«endl;)〃输出全体学生信息voidSchool::Output(intx)(if(ps=0){system("cls");cout«endl«endl«endl«endl;COUtくく〃、l\lII I"くくendl;TOC\o"1-5"\h\zcoutくく"、t\tI I"くくendl;cout«"\t\t! 无学生信息记录! I"«endl;cout«"\t\tI I"«endl;cout«"\t\tu 1"«endl;coutくくendlくくendlくくendlくくendl;}else{system("cls");cout<<endl;stringtitle[2]={"按照学号排序输出〃,"按照总分排序输出“};OutputT(title[x]);for(p=ps;p!=0;p=p->next)p->Print();OutputLO;)getchO;}〃载入学生信息voidSchool::Load()(ifstreaminfile("student,dai);infile»password;if(strcmp(password,"")==0)〃判断文件是否为空|infile,close();ofstreamoutfile(^student,dat");outfile«"060505217";outfile.close();infile,open("student.dat");infile»password;)while(!infile,eof())(p=ps=newStudent;p->Set(infile);while(!infile,eof()){p=p-〉next二newStudent;p->Set(infile);}}infile,close();}〃保存学生信息voidSchool::Save(){ofstreamoutfile("student,dat");outfile<<password;
for(p=ps;p!=0;p=p->next)p->Print(outfile);outfile.close();system(^cls^);cout<<endl<<endl<<endl<<endl;cout«*\t\tr "くくendl;COUt«"\t\tI"«endl;cout«"\t\t! 学生信息保存成功!"«endl;cout«"\t\tI"«endl;COUt«"\t\t ::==::_::!::=::_::_="«endl;cout<<endl<<endl<<endl<<endl;getchO;)〃搜索学生信息Student*School::Search()(intm=0;string1[2];while(l)(strcpy(l[m],"f");strcpy(1[(m+l)%2]," ");system(z,cls");coutくくendlくくendlくくendlくくendl;cout«"\t\t]"«endl;cout<<"\t\tI"«endl;cout«"\t\tII "«1[0"く"按照学号查询"«endl;cout<<"\t\tI"«endl;cout<<"\t\tIcout<<"\t\tI〃くく1ロ"く”按照姓名查询«endl;cout«*\t\tI I*«endl;cout«*\t\tu 1*«endl;cout<<endl<<endl<<endl«endl;switch(getchO){case'I,:case'2':case'3,:case'5’:case32:m==0?m=1:m=0;break;case'\r:switch(m)(case0:stringnum;cout«endl«*\t\t请输入学号:‘;cin>>num;for(p=ps;p!=0;p=p-〉next)if(strcmp(num,p->num)=0)returnp;break;case1:stringname;cout«endl«"\t\t请输入姓名:";cin>>name;for(p=ps;p!=0;p=p->next)if(strcmp(name,p->name)==0)returnp;break;}system("cls);coutくくendlくくendlくくendlくくendl;cout<<*\t\tn -1<<endl;coutくく“、t\t II"«endl;cout«"\t\t! 无该学生信息!I"«endl;cout«"\t\t IIz/«endl;cout«*\t\tu :—M"くくendl;cout<<endl«endl«endl<<endl;getchO;returnp;}))〃查找学生信息voidSchool::Find(){p=Search();if(p==0)return;system("cls");TOC\o"1-5"\h\zcout«endl<<endl«endl<<endl;cout«z/\t\tI 查询结果 1"«endl;cout«"\t\tI I"«endl;cout«zz\t\tI学号:"くくsetw(28)くくpー)numくく"I"くくendl;cout«*\t\tI I"«endl;coutくく"、t\tI姓名:"くくsetw(11)くくpー〉nameくく“性别:zz<<setw(9)<<p->sex<<"||"<<endl;cout«"\t\tI ITOC\o"1-5"\h\z"«endl;cout«"\t\tI 数学:“くくsetw(ll)くくpー〉sxくく"英 语:zz«setw(9X<p->yy«zz||zz«endl;cout«"\t\tI I"«endl;cout«"\t\t! 物理:"くくsetw(ll)くくpー〉wlくく"C++:"«setw(9X<p->cpp«"I"<<endl;cout«"\t\tI I"«endl;cout<<"\t\tI 课设:"くくsetw(ll)くくpー〉ksくく"总 分:"<<setw(9)«p->sum<<"||"<<endl;TOC\o"1-5"\h\zCOUt«*\t\tI I"くくendl;cout«"\t\t!均分:“くくsetw(ll)くくp->aveくく"名 次:"<<setw(9)<<p->rank<<z,||z/<<endl;cout«"\t\tI I"«endl;COUt«"\t\tL:—!= :_-::_=*"«endl;cout<<endl<<endl<<endl<<endl«endl;getchO;)〃修改学生信息voidSchool::Edit()(p=Search();if(p==0)return;intm=0;string1[12];while(l)(for(inti=0;i<12;i++)strcpy(1[i],"");strcpy(l[m],");systemCcls");cout<<endl<<endl<<endl<<endl;TOC\o"1-5"\h\zcout«"\t\tn 修改学生信息 1"«endl;cout«"\t\tI I"«endl;cout«"\t\tI "くく1[〇]くく"学号:"«setw(28)«p->num«"I"«endl;cout<<"\t\tI I"«endl;cout«"\t\tI "«1[2]«"姓名:"«setw(8)«p->name<<l[3]<<"性别:"くくsetw(9)くくpー》sexくく"|"«endl;cout<<"\t\tI I"«endl;
cout«*\t\t,zcout«*\t\t,z<<setw(8)<<p->sx«l[5]くく"英语:cout«"\t\tI"«endl;COUt«"\t\tI"«setw(8)«p->wl«l[7]«"C++:COUt<<"\t\tI"«endl;cout«"\t\tI"«setw(8)<<p->ks«l[9]くく”总分:cout«"\t\tI"«endl;"«1[4]«"数学:"«setw(9X<p->yy«"|"«endl;I"くく1[6]くく"物理:"«setw(9X<p->cpp«^|"«endl;II"くく1[8]くく”课设:"«setw(9)«p->sum«,z|"<<endl;cout«"\t\tI "«l[10]«"均分:“くくsetw(8Xくp一)aveくく1[11]くく"返回 |"くくendl;cout<<"\t\tI"«endl;cout«"\t\tL "«endl;cout«endK<endl«endl;switch(getchO)(case1T:m一;if(m==-l)m=ll;if(m==l)m一;break;case'2':m+=2;if(m==12)m=l;if(m==13)m=O;if(m=l)m+=2;break;case'3’:case32:m++;if(m==12)m=0;if(m==l)m++;breakJ〃空格键等同于右方向键case'5':m-=2;if(m==-2)m=ll;if(m==-l)m=10;if(m==l)m+=9;break;case27:Sumsort();return;〃按[ESC]键返回case'\r':switch(m)(case0:cout<<*\t\t请输入新学号:";cin>>p->num;break;cout«"\t\t请输入新姓名:";cin>>p->name;break;
case3:coutくく"、t\t请输入新性别:cin»p->sex;break;case4:coutくく“、t\t请输入新数学成绩:";cin»p->sx;break;case5:cout«"\t\t请输入新英语成绩:〃;cin»p->yy;break;case6:coutくく“、t、t请输入新物理成绩:";cin»p->wl;break;case7:cout«"\t\t请输入新C++成绩:";cin»p->cpp;break;case8:coutくく“、t、t请输入新课设成绩:";cin»p->ks;break;break;Sumsort();return;)pー〉sum=p-〉sx+pー〉yy+pー〉wl+pー〉cpp+p-〉ks;〉sum/5;〃删除学生信息voidSchool::Delete0(p=Search();if(p==0)return;if(p!=ps)(Student*pt=ps;while(pt->next!=p)pt=pt->next;pt->next=p->next;)elseps二ps->next;deletep;system("cls");cout«endl<<endl«endl<<endl;TOC\o"1-5"\h\zcout«z/,\t\t厂 -I*«endl;COUt«*\t\tI I*«endl;cout<C\t\tI 删除学生信息成功! |*«endl;COUt«*\t\tI I“くくendl;cout«"\t\tu~;i~-:—:~~;:=;i~;:=;:=~:~;=~;i~;—:~—;=~;:~"«endl;cout«endl«endl«endl<<endl;Sumsort();getchO;)〃按照学号排序voidSchool::Numsort0(if(ps==0)return;Student*pi,*pj,*pt=newStudent;for(pi=ps;pi->next!=0;pi=piつnext)for(pj=pi->next;pj!=0;pj=pj->next)if(strcmp(pi->num,pj->num)>0)(pt->Set(pi);pi->Set(pj);pj->Set(pt);}deletept;}〃按照总分排序voidSchool::Sumsort()(if(ps==0)return;inti=l;Student*pi,*pj,*pt=newStudent;for(pi=ps;pi->next!=0;pi-〉rank=i++,pi=pi->next)for(pj=pi->next;pj!=0;pj=pj->next)if(pi->sum<pj->sum)(pt->Set(pi);pi->Set(pj);pj->Set(pt);}deletept;pi-〉rank二i;for(pi=ps;pi->next!=0;pi=piー〉next)if(pi->sum==piー〉nextー〉sum)piー〉next-〉rank二pi-〉rank; 〃修正总分相同时的排名}//90分以上的voidSchool::Jsys()(intm=0;string1[6];while(l)(for(inti=0;i<6;i++)strcpy(l[i],* ");strcpy(1[m],,zfつ;system(z,cis);cout<<endl<<endl<<endl«endl;COUt<<ZZ\t\tII 统计学生信息—"くくendl;coutくく"'t\tI"«endl;cout«"\t\tI"くく1[0]くく"数学90分以上的"«endl;COUt<<"\t\tI"«endl;cout«"\t\tI"くく1[1]くく"英语90分以上的"«endl;cout<<"\t\tI"«endl;cout«*\t\t| "くく1[2"ぐ物理90分以上的"«endlCOUt«"\t\t1*«endlcout«"\t\t1"くく1[3]くぐC++90分以上的*«endlCOUt<<"\t\t1"«endlcout«"\t\t1 "«1[4]〈ぐ课设90分以上的"«endlCOUt«"\t\t1"«endlcout«"\t\t1 "くく:![5"く"返回至主菜单"«endlCOUt«"\t\t1"«endlCOUt«"\t\tL "くくendl;cout<<endl<<endl<<endl«endl«endl;switch(getchO){case1T:m一;if(m==-l)m=5;break;case'2':m++;if(m==6)m=0;break;case'3':case32:m++;if(m==6)m=0;break; 〃空格键等同于右方向键case'5':m—;if(m==-l)m=5;break;case27:return;〃按[ESC]键返回case'\r':switch(m)(caseO:OutputT("数学90分以上的");for(p=ps;p!=0;p=p->next) if(p->sx >= 90)p->Print();break;casel:OutputT("英语9〇分以上的");for(p=ps;p!=0;p=p->next) if(p->yy >= 90)p->Print();break;case2:0utputT("物理90分以上的");for(p=ps;p!=0;p=for(p=ps;p!=0;p=p->next)if(p->wl>= 90)p->Print0;break;case3:0utputT("C++9〇分以上的");for(p=ps;p!=0;p=p->next) if(p->cpp>= 90)p->Print();break;case4:0utputT("课设9〇分以上的");for(p=ps;for(p=ps;p!=0;p=p->next)if(p->ks >= 90)p->Print();break;case5:return;)OutputLO;getchO;〃平均分以下的voidSchool::Jfyx()(floats(0),y(0),w(0),c(0),k(0);intn=0;for(p=ps;p!=0;p=p->next,n++)s+=p->sx,y+=p->yy,w+=p->wl,c+=p->cpp,k+=p->ks;if(n!=0)s/=n,y/=n,w/=n,c/=n,k/=n;intm=0;string1[6];while(l){for(inti二〇;iく6;i++)strcpy(l[i]," ");strcpy(l[m]," —");system("cis");coutくくendlくくendlくくendlくくendl;
coutくぐ、t\tk 统计学生信息"くくendlCOUt«"\t\t11*«endlCOUt<<"\t\t1"くく1[0"ぐ数学平均分以下的 1*«endlCOUt<<"\t\t11"«endlCOUt«"\t\t1"くく1□"ぐ英语平均分以下的 1"«endlCOUt«"\t\t1!"«endlCOUt«"\t\t1"くく:![2"く"物理平均分以下的 |"«endlCOUt<<"\t\t11"«endlCOUt<<"\t\t1"〈く1[3]くく"C++平均分以下的 |"«endlCOUt«"\t\t11*«endlCOUt<<"\t\t1"«1[4]くく"课设平均分以下的 |*«endlCOUt<<"\t\t11"<<endlCOUt<<"\t\t1[5"く"返回至主菜单 |"«endlCOUt<<"\t\t11"«endlCOUIXX\I\L*«endlcout<<endl<<endl<<endl<<endl<<endl;switch(getchO)case'I1:m--;if(mニニT)m=5;break;case*2>:m++;it(mニニ6)m=0;break;case’3,:case32:m++;if(mニニ6)m=0;break; 〃空格键等同于右方向case'5':m--;if(m==-l)m=5;break;case27:return;〃按[ESC]键返回case'\r:stringtl,t2;switch(m)(caseO:OutputT(strcat(strcat(strcpy(tl,”数学平均分3,gcvt(s,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->sx<s)pー〉Print();break;OutputT(strcat(strcat(strcpy(tl,“英语平均分*),gcvt(y,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->yy<y)p->Print();break;OutputT(strcat(strcat(strcpy(tl,“物理平均分"),gcvt(w,4,t2)),"分以下"));for(p=ps;p!=0;p=p->next)if(p->wl<w)p->Print();break;OutputT(strcat(strcat(strcpy(tl,"C++平均分9,gcvt(c,4,t2)),"分以下"));for(p=ps;p!=0;p=p->next)if(p->cpp<c)p->Print();break;OutputT(strcat(strcat(strcpy(tl,“课设平均分"),gcvt(k,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->ks<k)p->Print();break;return;)OutputLO;getch();〃不及格的学生voidSchool::Bjg()intm=0;
string1[6];while(l)for(inti=0;i<6;i++)strcpy(1[i]," ");strcpy(1[m],“systemC'cis");cout<<endl«endl<<endl«endl;纬卄券小り自 ーCOUIX\.\L\l||りし!T十王思 1"«endlCOUt<<"\t\t11"くくendlCOUt<<"\t\t1[〇"〈"数学不及格的学生 1"«endlCOUt«"\t\t1i"«endlCOUt«"\t\t1〈"英语不及格的学生 1"«endlCOUt«"\t\t11"«endlCOUt«"\t\t1"〈く1[2]く〈”物理不及格的学生 |"«endlCOUt<<*\t\t11"«endlCOUt«"\t\t1"〈〈1[3]〈〈"C++不及格的学生 |"«endlCOUt«"\t\t11"«endlCOUt«"\t\t1"〈〈1[4]〈〈"课设不及格的学生 |"«endlCOUt«"\t\t11"«endlCOUt<<*\t\t1"〈〈1[5]〈〈"返回至主菜单 |"«endlCOUt«"\t\t11"«endlIICOLlLXX\L\L"«endlcout<<endl«endl<<endl«endl«endl;switch(getchO){case'T:m--;if(m==-l)m=5;break;case'2':m++;if(m-6)m=0;break;casej':case32:m++;if(m=6)m=0;break; 〃空格键等同于右方向键case'5':m--;if(m=-l)m=5;break;case27:returnJ〃按[ESC]键返回case'\r':switch(m)(case0:OutputT("数学不及格的学生〃);for(p=ps;p!=0;p=p->next)if(p->sx<60)p->Print();break;caseLOutputT("英语不及格的学生〃);for(p=ps;p!=0;p=p->next)if(p->yy<60)p->Print();break;case2:OutputT(〃物理不及格的学生〃);for(p=ps;p!=0;p=p->next)if(p->wl<60)p->Print();break;case3:0utputT(〃C++不及格的学生〃);for(p=ps;p!=0;p=p->next) if(p->cppく60)p->Print();break;case4:0utputT(〃课设不及格的学生〃);for(p=ps;p!=0;p=p->next)if(p->ks<60)pー〉Print。;break;case5:return;)OutputL。:getchO;)〃修改登录密码voidSchool::Setpass()system(//color4b");stringt,st="";while(l){for(inti=0;i<16;i++){system("cls");cout«endl<<endl<<endl«endl;coutくく“、t\tr~===~=~===™修改登录密码====~:"«endl;COUt«"\t\tI"«endl;COUt«"\t\tI"«endl;cout«"\t\tI 请输入原密码:"«setw(18X<st«""«endl;cout«"\t\tI"«endl;cout«**\t\tu "«endl;cout<<endl<<endl<<endl«endl;chark=getch();if(k=='\r')break;t[i]=k;st[i]='*';t[i+l]=st[i+l]=0;}if(strcmp(password,t)==0)break;system(〃cls);cout<<endl<<endl<<endl<<endl;coulくく〃、l\tp 修改登录密码 "«endl;cout«"\t\tI"«endl;cout«"\t\tI"«endl;cout«*\t\t[ 密码错误!请重新输入!«endl;cout«*\t\tI«endl;cout«*\t\tu «endl;cout<<,\a*<<endl<<endl«endl<<endl;strcpy(st,;getchO;)strcpy(st,);stringt1;while(l){for(inti=0;i<16;i++)(system(^cls,z);cout<<endl<<endl<<endl<<endl;COUt«*\t\t[j 修改登录密码 «endl;coutくく"、t\tI"«endl;COUt<<"\t\tI,z«endl;cout<<"\t\t!请输入新密码:"<<setw(18)«st<<""«endl;COUt<<"\t\tI"«endl;COUt<<"\t\tN"«endl;cout<<endl<<endl<<endl<<endl;chark=getchO;if(k==,\r')break;t[i]=k;st[i]=,*,;t[i+l]=st[i+l]=0;strcpy(st,"");for(i=0;i<16;i++)system(z/cls,z);cout<<endl<<endl<<endl«endl;COUt«*\t\t[j 修改登录密码 "くくendl;COUt<<"\t\tI"«endl;cout«"\t\tI"«endl;cout«"\t\tI 请确认新密码:"<<setw(18)«st«""«endl;COUt«"\t\tI"«endl;cout<<"\t\tu— "«endl;cout<<endl<<endl«endl<<endl;chark=getch();if(kニニ'\r')break;tl[i]=k;st[i]='*';tl[i+l]=st[i+l]=O;}if(strcmp(tl,t)==0){strcpy(password,t);system(zzcls");cout<<endl<<endl<<endl<<endl;cout«"\t\tn 修改登录密码 "«endl;cout<<"\t\tI"«endl;cout«"\t\tI"«endl;cout«"\t\t! 密码修改成功!"«endl;cout<<"\t\tI«endl;cout«*\t\tu *«endl;cout<<endl<<endl<<endl<<endl;getchO;break;)else{system("cls");cout«endl<<endl<<endl<<endl;cout«*\t\t卜 ・修改登录密码—”くくendl;COUt«*\t\tI*«endl;COUt«*\t\tI"くくendl;cout«"\t\t!两次输入不一致!请重新输入!"«endl;cout«"\t\tI"«endl;cout<<*\t\t11"«endl;coutくく‘、a'くくendlくくendlくくendlくくendl;strcpy(st,);getchO;}}system("col
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 楼宇自控系统托管服务合同
- 伺服电机供货协议
- 橡胶制胶工风险识别模拟考核试卷含答案
- 列车长岗前核心能力考核试卷含答案
- 汽车代驾员岗前创新应用考核试卷含答案
- 巡检无人机驾驶员操作安全知识考核试卷含答案
- 熔体镁工安全综合测试考核试卷含答案
- 玻璃制品加工工QC考核试卷含答案
- 高空作业机械操作工冲突解决考核试卷含答案
- 海藻繁育工绩效目标竞赛考核试卷含答案
- 2026贵州农商联合银行社会招聘20人备考题库附答案详解(综合题)
- 2025国企风控合规管理岗笔试真题及答案全解析
- 2025-2026学年浙教版(新教材)初中科学八年级第二学期教学计划附进度表
- 煤矿安全监察培训制度
- 快递业务运营经理绩效评定表
- 安全联锁保护系统管理制度
- TCECS 1680-2024 消能减震楼梯应用技术规程
- 2025年注册安全工程师金属冶炼安全实务真题及答案(附解析)
- 泌尿系影像课件
- 华为ensp教学课件
- 精神病人健康指导
评论
0/150
提交评论