1、2、 2.输入输出的要求63、 3.测试数据6二、概要设计74、 1.程序设计组成框图75、 2.程序流程图88三、详细设计86、 1.函数的入口和出口87、 2.主函数88、 3.成员函数9四、调试分析9五、核心源程序清单和执行结果109、 1.程序清单1010、 2.执行结果14六、参考文献16一、需求分析1.程序的功能 设计一个学生作业完成情况程序,实现对学生作业完成情况的修改,对学生信息的删除,对总成绩的排序,输出平均分数。2.输入输出的要求必须符合输入输出函数的定义。3.测试数据系统保存的学生信息:stu1(1,David,1); stu2(2Mikestu3(3Tom,2);学号
2、第几次作业 成绩 1 1 22 1 2 33 1 3 44 2 1 55 2 2 66 2 3 77 3 1 88 3 2 993 3 100二、概要设计1.程序设计组成框图在主函数main()中调用各函数定义学生作业情况的一维数组以菜单形式提示输入用switch语句对输入作出反应实现输出声明student类各学生学号学生班级各学生姓名在类中调用setPoint等函数学号、姓名、10次作业的完成情况2.程序流程图三、详细设计1.函数的入口和出口cout -输入操作1-7 8退出-nn;cout (1)通过键盘输入某位学生某次作业的分数,请按1n cout (2)给定学号,显示某位学生作业完成情
3、况,请按2n (3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3n (4)给定某位学生的学号,修改该学生的作业完成信息,请按4n (5)给定某位学生的学号,删除该学生的信息,请按5n (6)按学生的最终平时成绩进行排序,请按6n (7)输出平均分数,请按7n (8)退出,请按8nn2.主函数void main()string name,id;double point;int index,i,cls;int select;vector students;Student stu1(0001ClarkStudent stu2(0002MacStudent stu3(0003Timstu
4、dents.push_back(stu1);students.push_back(stu2);students.push_back(stu3);3.成员函数getTotal():用来实现十次作业的情况输入和。showHomework():用来实现某个学生十次完成作业的情况。getName():让后面的类调用此函数,名字函数。getId():让后面的类调用此函数,学号函数,实现根据学号显示此学生的作业完成情况。getSClass():让后面的类调用此函数,班级函数,实现根据班级显示学生作业完成情况的功能。SetPoint():记录成绩函数,使后面的类调用此函数用来显示修改后的成绩。getHome
5、work():获得作业完成情况函数,使后面的类调用此函数实现修改后的学生作业完成情况。void Sort():排序函数,使用快速排序实现对学生总成绩的排序。四、调试分析(1)在类中调用函数时,出现了一些错误,问题出现在调用时的函数变量和初始化函数时的变量不一致,然后又检查程序,将变量匹配。(2)运用了快速排序的方法,到调用排序函数时出现变量不匹配,检查程序,并修改。(3)在输出平均成绩的时候,循环出现错误,没有语法错误,但是输出结果与正确结果不一致,后来发现是最后输出在循环内,所以又进行了修改。(4)运用了容器vector,在用之前并不熟悉这个功能,也出现了不少错误,比如它的定义,装载,输出,
6、最后通过上网了解了容器的功能对程序加以修改直至没有错误。(5)运用了map功能,这个功能适用于对这次设计的查询并修改的程序,使程序更优化。(6)对数据结构有了进一步的理解,使用算法后可以使设计思路更加清晰,对所学过东西的结合,也学了新的东西vector,map。五、核心源程序清单和执行结果1.程序清单#includestringvector /属于STL库,为了把c和c+分开map /map是一种关联容器,它定义了一种数据结构,类似查表功能,每一个数据都有自己的键值,通过键值可以查找和排序相应的数 据using namespace std;class Studentstring id; /学生
7、学号string name; /学生姓名int sClass; /学生所正在班级double sum; /所有作业成绩之和double homework10; /十次作业完成情况及成绩enumunfinished=-1; /枚举类型,枚举初始化,将学生完成情况一一枚举出来,等待成绩赋值public: Student(string id,string na,int cls):name(na),id(id),sClass(cls) /构造函数赋值for(int i=0;i10;i+)homeworki=unfinished; /初始化学生的10次作业都是未完成的void setPoint(int
8、index,double point) /录入成绩函数,index是每次作业计数,point是作业分数homeworkindex-1=point; /把每次作业成绩赋给作业完成情况double getHomework(int index) /得到作业完成情况函数returnhomeworkindex-1;double getTotal() /作业总成绩函数sum=0;i+) if(homeworki!=unfinished)sum+=homeworki;return sum;void showHomework() /显示最后学生作业完成情况函数if(homeworki=unfinished)c
9、outunfinishedtelsehomeworkitcouti)&(aj=x) j-; if (ji) ai=aj; bi=bj; i+; while (j(aii) aj=ai; bj=bi; j-;ai=x;bi=y;i+;if (js) sort(s,j,a,b);if (iselect;switch(select)case 1:coutidindexpoint;for(i=0;students.size();if (id=studentsi.getId()studentsi.setPoint(index,point);break;case 2:给定学号,显示某位学生作业完成情况n/
10、2号功能id;for( i=0;studentsi.showHomework();case 3:给定某个班级的班号,显示该班所有学生的作业完成情况n/3号功能cls;if (cls=studentsi.getSClass()coutstudentsi.getName()=1;i-)biai;endl;case 7: cout输出平均分数n/7号功能tol+=studentsi.getTotal(); couttol/students.size();default:return;/switch/while2.执行结果 -输入操作1-7 8退出- (1)通过键盘输入某位学生某次作业的分数,请按1
11、(2)给定学号,显示某位学生作业完成情况,请按2 (3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3 (4)给定某位学生的学号,修改该学生的作业完成信息,请按4 (5)给定某位学生的学号,删除该学生的信息,请按5 (6)按学生的最终平时成绩进行排序,请按6 (7)输出平均分数,请按7 (8)退出,请按8输入操作1-7 8退出1输入某位学生学号某次作业的分数2223334455667788991006按学生的最终平时成绩进行排序Tom 287Mike 198David 997输出平均分数194.667给定学号,显示某位学生作业完成情况55 66 77 unfinished unfi
12、nished unfinished unfinished unfinished unfinished unfinished给定某个班级的班号,显示该班所有学生的作业完成情况David22 33 44 unfinished unfinished unfinished unfinishMike4给定某位学生的学号,修改该学生的作业完成信息为未完成88 unfinished 100 unfinished unfinished unfinishedunfinished unfinished unfinished unfinished5给定某位学生的学号,删除该学生的信息六、参考文献1数据结构. 王红梅. 清华大学出版社2数据结构学习辅导与实验指导. 王红梅. 清华大学出版社3C+程序设计. 钱能. 清华大学出版社4C+程序设计试验指导. 钱能. 清华大学出版社5C+程序设计.谭浩强. 清华大学出版社12
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2