学生作业完成情况管理程序_第1页
学生作业完成情况管理程序_第2页
学生作业完成情况管理程序_第3页
学生作业完成情况管理程序_第4页
学生作业完成情况管理程序_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、天津城市建设学院课程设计任务书20112012 学年第 1 学期电子与信息工程系专业班级课程设计名称:数据结构课程设计设计题目:学生作业完成情况管理程序完成期限:自2012 年 1 月 2 日至2012 年 1 月6 日共1 周设计依据、要求及主要内容(可另加附页):一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求(1)重视课程设计环节,用严谨、 科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以

2、零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容1)请设计一个学生作业完成情况管理程序。假设某门课程一学期要留10 次作业, 每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100) 。作业登记信息应该包含:学号、姓名、10 次作业的完成情况。2)基本要求该程序应该具有下列功能:(1) 通过键盘输入某位学生某次作业的分数;(2) 给定学号,显示某位学生作业完成情况;(3) 给定某个班级的班号,显示该班所有学生的作业完成情况;(4) 给定某位学生的学号,修改该学生

3、的作业完成信息;(5) 给定某位学生的学号,删除该学生的信息;(6) 按学生的最终平时成绩进行排序;(7) 输平均分数1 目录一、需求分析 . 21、1. 程序的功能 . 22、2. 输入输出的要求 . 23、3. 测试数据 . 2二、概要设计 . 34、1. 程序设计组成框图. 35、2. 程序流程图 . 4 . 4三、详细设计 . 46、1. 函数的入口和出口. 47、2. 主函数 . 48、3. 成员函数 . 5四、调试分析 . 5五、核心源程序清单和执行结果 . 69、1. 程序清单 . 610、. 2. 执行结果 . 10 六、参考文献 . 12 2 一、需求分析1. 程序的功能设计

4、一个学生作业完成情况程序,实现对学生作业完成情况的修改,对学生信息的删除,对总成绩的排序,输出平均分数。2. 输入输出的要求必须符合输入输出函数的定义。3. 测试数据系统保存的学生信息:stu1(1,david,1); stu2(2,mike,1); stu3(3,tom,2); 学号第几次作业成绩 1 1 22 1 2 33 1 3 44 2 1 55 2 2 66 2 3 77 3 1 88 3 2 99 3 3 100 3 二、概要设计1. 程序设计组成框图在主函数main()中调用各函数定义学生作业情况的一维数组以 菜 单 形式 提 示 输入用 switch语句对输入作出反应实现输出声

5、明student类各学生学号学生班级各学生姓名在类中调用setpoint 等函数学号、姓名、 10 次作业的完成情况4 2. 程序流程图三、详细设计1. 函数的入口和出口cout -输入操作1-7 8退出 -nn; cout (1)通过键盘输入某位学生某次作业的分数,请按1n; cout (2)给定学号,显示某位学生作业完成情况,请按2n; cout (3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3n; cout (4)给定某位学生的学号,修改该学生的作业完成信息,请按4n; cout (5)给定某位学生的学号,删除该学生的信息,请按5n; cout (6)按学生的最终平时成绩

6、进行排序,请按6n; cout (7)输出平均分数,请按7n; cout (8)退出,请按8nn; 2. 主函数void main() string name,id; double point; int index,i,cls; 5 int select; vector students; student stu1(0001,clark,1); student stu2(0002,mac,1); student stu3(0003,tim,2); students.push_back(stu1); students.push_back(stu2); students.push_back(stu

7、3); 3. 成员函数gettotal():用来实现十次作业的情况输入和。showhomework ():用来实现某个学生十次完成作业的情况。getname():让后面的类调用此函数,名字函数。getid ():让后面的类调用此函数,学号函数,实现根据学号显示此学生的作业完成情况。getsclass () :让后面的类调用此函数,班级函数,实现根据班级显示学生作业完成情况的功能。setpoint () :记录成绩函数,使后面的类调用此函数用来显示修改后的成绩。gethomework() :获得作业完成情况函数,使后面的类调用此函数实现修改后的学生作业完成情况。void sort() : 排序函

8、数,使用快速排序实现对学生总成绩的排序。四、调试分析(1)在类中调用函数时,出现了一些错误,问题出现在调用时的函数变量和初始化函数时的变量不一致,然后又检查程序,将变量匹配。(2)运用了快速排序的方法,到调用排序函数时出现变量不匹配,检查程序,并修改。(3)在输出平均成绩的时候,循环出现错误,没有语法错误,但是输出结果与正确结果不一致,后来发现是最后输出在循环内,所以又进行了修改。(4)运用了容器vector ,在用之前并不熟悉这个功能,也出现了不少错误,比如它的定义,装载,输出,最后通过上网了解了容器的功能对程序加以修改直至没有错误。(5)运用了map功能,这个功能适用于对这次设计的查询并修

9、改的程序,使程序更优化。(6)对数据结构有了进一步的理解,使用算法后可以使设计思路更加清晰,对所学过东西的结合,也学了新的东西vector ,map 。6 五、核心源程序清单和执行结果1. 程序清单#include #include #include /属于 stl库,为了把c 和 c+分开#include /map是一种关联容器,它定义了一种数据结构,类似查表功能,每一个数据都有自己的键值,通过键值可以查找和排序相应的数据using namespace std; class student string id; /学生学号string name; /学生姓名int sclass; /学生所正

10、在班级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 index,double point) /录入成绩函数,index

11、是每次作业计数,point是作业分数homeworkindex-1=point; /把每次作业成绩赋给作业完成情况 double gethomework(int index) /得到作业完成情况函数return homeworkindex-1; double gettotal() /作业总成绩函数sum=0; for(int i=0;i10;i+) if(homeworki!=unfinished) sum+=homeworki; return sum; void showhomework() /显示最后学生作业完成情况函数for(int i=0;i10;i+) if(homeworki=un

12、finished) coutunfinishedt; 7 else couthomeworkit; couti)&(aj=x) j-; if (ji) ai=aj; bi=bj; i+; while (ji)&(aii) aj=ai; bj=bi; j-; ai=x; bi=y; i+; j-; if (js) sort(s,j,a,b); if (it) sort(i,t,a,b); void main() string name,id; double point; int index,i,cls; int select; 8 vector students; /定义容器st

13、udents student stu1(1,david,1); /把三个学生信息存到容器中student stu2(2,mike,1); student stu3(3,tom,2); students.push_back(stu1); students.push_back(stu2); students.push_back(stu3); double a1000; string b1000; cout -输入操 作1-7 8退出-nn; cout (1)通过键盘输入某位学生某次作业的分数,请按1n; cout (2)给定学号,显示某位学生作业完成情况,请按2n; cout (3)给定某个班级的

14、班号,显示该班所有学生的作业完成情况,请按3n; cout (4)给定某位学生的学号,修改该学生的作业完成信息,请按4n; cout (5)给定某位学生的学号,删除该学生的信息,请按5n; cout (6)按学生的最终平时成绩进行排序,请按6n; cout (7)输出平均分数,请按7n; cout (8)退出,请按8nn; while(true) coutselect; switch(select) case 1: coutidindexpoint; for(i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.setpoint

15、(index,point); break; case 2: coutid; for( i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.showhomework(); break; case 3: coutcls; for( i=0;istudents.size();i+) 9 if (cls=studentsi.getsclass() coutstudentsi.getname()n; studentsi.showhomework(); break; case 4: coutidindex; for( i=0;istude

16、nts.size();i+) for(i=0;istudents.size();i+) if (id=studentsi.getid() studentsi.setpoint(index,-1); break; case 5: coutid; for( i=0;istudents.size();i+) if (id=studentsi.getid() students.erase(&studentsi); break; case 6: cout 按学生的最终平时成绩进行排序n;/6号功能for(i=0;i=1;i-) coutbitai; coutendl; break; case 7

17、: cout输出平均分数n;/7号功能for( i=0;istudents.size();i+) tol+=studentsi.gettotal(); couttol/students.size(); coutendl; break; default: return; /switch 10 /while 2. 执行结果 -输入操作1-7 8 退出 - (1)通过键盘输入某位学生某次作业的分数,请按1 (2)给定学号,显示某位学生作业完成情况,请按2 (3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3 (4)给定某位学生的学号,修改该学生的作业完成信息,请按4 (5)给定某位学生的

18、学号,删除该学生的信息,请按5 (6)按学生的最终平时成绩进行排序,请按6 (7)输出平均分数,请按7 (8)退出,请按8 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数1 1 22 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数1 2 33 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数1 3 44 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数2 1 55 输入操作1-7 8 退出11 1 输入某位学生学号某次作业的分数2 2 66 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数2 3 77 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数3 1 88 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数3 2 99 输入操作1-7 8 退出1 输入某位学生学号某次作业的分数3 3 100 输入操作1-7 8 退出6 按学生的最终平时成绩进行排序tom 287 mike 198 david 99 输入操作1-7 8 退出7 输出平均分数194.667 输入操作1-7 8 退出2 给定学号,显示某位学生作业完成情况2 55 66 77 unfinished unfinished unfinished 12 unfinish ed unfinished u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论