您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > C++成绩管理系统实验报告(含源代码)
《面向对象的程序设计》大作业题目:学生成绩管理系统物联网工程学院学院计算机科学与技术专业学号:0304110516学生姓名:王显朝班级:计科1105班成绩:2012年6月学生成绩管理系统一、需求分析:1学生信息录入功能用户从键盘输入每个学生的信息:学号、姓名、数学、英语、数据结构、物理四科成绩。2学生成绩查询功能用户可以按学号或者姓名查询学生的信息。3学生成绩输出功能用户可以通过这个功能实现对所有学生成绩的浏览。4学生信息修改功能用户可对学生的信息进行修改。5学生信息删除功能用户可删除学生的成绩信息。6学生成绩的排序功能用户可以对学生成绩排序。二、概要设计学生的信息用结构体来存储,把要实现的功能封装在一个类里面,最后在主函数里通过选择语句对类中相应的功能函数调用,从而实现学生成绩的管理。三、详细设计1.构造学生信息结构体存储学生信息学生信息包括:姓名,学号,数学,英语,数构,物理,总分,平均分等信息。构造代码如下:structStudent//声明一个名为student的结构体类型{stringname;//姓名stringnumber;//学号doublemaths;//数学doubleenglish;//英语doubledatastruct;//数构doublephysical;//物理doubletotal;//总分doubleaverage;//均分};2.系统功能函数类的设计把该系统要实现的功能封装在此类中,方便增加和修改。在本系统中设计了七个函数分别实现学生成绩的录入,查询,输出,修改,删除,求总分和平均分。其代码如下::classSYSTEM//声明类system{public:SYSTEM(){n=0;}//构造函数voidadd();//添加voidshow();//显示voidsearch();//查询voidchange();//修改voiddelet();//删除voidsort();//排序voidMax();//最高分voidMin();//最低分private:Studentstu[1000];//定义一个结构体类型student的变量stuintn;};各功能函数代码如下:(1)学生信息输入函数add()voidSYSTEM::add()//添加{cout学号:endl;cinstu[n].number;cout姓名:endl;cinstu[n].name;cout数学:endl;cinstu[n].maths;cout英语:endl;cinstu[n].english;cout数构:endl;cinstu[n].datastruct;cout物理:endl;cinstu[n].physical;stu[n].total=stu[n].maths+stu[n].english+stu[n].datastruct+stu[n].physical;stu[n].average=stu[n].total/4;n++;//学生人数增加一个}(2)学生成绩查询函数search()voidSYSTEM::search()//查询{cout请选择查询方式:endl;cout1.按学号查询endl;cout2.按姓名查询endl;intc,i;cinc;switch(c){case1://按照学号查询{stringnum;cout请输入要查询的学号:endl;cinnum;for(i=0;in;i++)if(stu[i].number==num){cout学号姓名数学英语数构物理总分平均分endl;coutstu[i].numberstu[i].namestu[i].mathsstu[i].englishstu[i].datastructstu[i].physicalstu[i].totalstu[i].averageendl;break;}if(stu[i].number!=num)cout未找到该学生信息!!endl;break;}case2://按照学号查询{stringname1;cout请输入要查询的姓名:endl;cinname1;for(i=0;in;i++)if(stu[i].name==name1){cout学号姓名数学英语数构物理总分平均分endl;coutstu[i].numberstu[i].namestu[i].mathsstu[i].englishstu[i].datastructstu[i].physicalstu[i].totalstu[i].averageendl;break;}(3)学生成绩输出函数show()voidSYSTEM::show()//输出{cout学号姓名数学英语数构物理总分平均分endl;for(inti=0;in;i++){coutstu[i].numberstu[i].namestu[i].mathsstu[i].englishstu[i].datastructstu[i].physicalstu[i].totalstu[i].averageendl;}}voidSYSTEM::change()//修改{stringnum;inti;cout请输入要修改的学生学号:endl;cinnum;for(i=0;in;i++)if(stu[i].number==num){cout该学号的学生信息如下:endl;cout学号姓名数学英语数构物理总分平均分endl;coutstu[i].numberstu[i].namestu[i].mathsstu[i].englishstu[i].datastructstu[i].physicalstu[i].totalstu[i].averageendl;cout请输入新的学生信息:endl;cout学号:endl;cinstu[i].number;stu[n].number=stu[i].number;cout姓名:endl;cinstu[i].name;stu[n].name=stu[i].name;cout数学:endl;cinstu[i].maths;stu[n].maths=stu[i].maths;cout英语:endl;cinstu[i].english;stu[n].english=stu[i].english;cout数构:endl;cinstu[i].datastruct;stu[n].datastruct=stu[i].datastruct;cout物理:endl;cinstu[i].physical;stu[n].physical=stu[i].physical;stu[i].total=stu[i].maths+stu[i].english+stu[i].datastruct+stu[i].physical;stu[i].average=stu[i].total/4;break;}if(stu[i].number!=num)cout无此学生信息!!endl;}voidSYSTEM::delet()//删除{stringnum;cout请输入要删除学生的学号,然后按回车确认:endl;cinnum;for(inti=0;in;i++)if(stu[i].number==num){for(intj=i;jn-1;j++)stu[j]=stu[j+1];//用后一个学生信息覆盖前一个学生信息n--;//学生人数减少一个cout已成功删除该学生信息!!endl;break;}}(4)排序函数sort()voidSYSTEM::sort()//排序{cout请选择排序方式:endl;cout1.按学生总分排序endl;cout2.按学生平均分排序endl;cout3.返回endl;intk;cink;switch(k){case1://按学生总分排序{Studentp;for(inti=0;in;i++)for(intj=0;jn-i;j++){if(stu[j].totalstu[j+1].total){p=stu[j];stu[j]=stu[j+1];stu[j+1]=p;}}cout学号姓名数学英语数构物理总分endl;for(intm=0;mn;m++){coutstu[m].numberstu[m].namestu[m].mathsstu[m].englishstu[m].datastructstu[m].physicalstu[m].totalendl;}}break;case2://按学生平均分排序{Studentp;//定义一个Student类型的变量pfor(inti=0;in;i++)for(intj=0;jn-i;j++){if(stu[j].averagestu[j+1].average){p=stu[j];stu[j]=stu[j+1];stu[j+1]=p;}}cout学号姓名数学英语数构物理平均分endl;for(intm=0;mn;m++){coutstu[m].numberstu[m].namestu[m].mathsstu[m].englishstu[m].datastructstu[m].physicalstu[m].averageendl;}}break;case3:return;//返回}}(5)求各科最高分函数Max()voidSYSTEM::Max()//最高分{doublemax1,max2,max3,max4,max5,max6;max1=stu[0].maths;max2=stu[0].english;max3=stu[0].datastruct;max4=stu[0].physical;max5=stu[0].total;max6=stu[0].average;for(inti=0;in;i++){if(stu[i].mathsmax1)max1=stu[i].maths;if(stu[i].englishmax2)max2=stu[i].english;if(stu[i].datastructmax3)max3=stu[i].datastruct;if(stu[i].physicalmax4)max4=stu[i].physical;if(stu[i].totalmax5)max5=stu[i].total;if(stu[i].averagemax6)max6=stu[i].average;}cout数学最高分英语最高分数构最高分物理最高分总分最高平均分最高endl;coutmax1max2max3max4max5max6endl;}(6)求各科最低分函数Min()voidSYSTEM::Min()//最低分{doublemin1,min2,min3,min4,min5,min6;min1=stu[0].maths;min2=stu[0].english;min3=stu[0].datastruct;min4=stu[0].physical;min5=stu[0].total;min6=stu[0].average;for(inti=0;i
本文标题:C++成绩管理系统实验报告(含源代码)
链接地址:https://www.777doc.com/doc-5234857 .html