1、学 号: C+面向对象程序设计大作业题 目学 院专 业信息工程班 级姓 名王继文指导教师2015年11月15日目录一 大作业的目的1二 大作业的内容1三 大作业的要求与数据2四 大作业应完成的工作2五 总体设计(包含几大功能模块)2六 详细设计(各功能模块的具体实现算法流程图)3七 调试分析(包含各模块的测试用例,及测试结果)5八 总结18九 参考资料19一 大作业的目的面向对象程序设计是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C+语言
2、独立地编写、调试应用程序和进行其它相关设计的技能。二 大作业的内容 (1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;(2) 各项目名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。三 大作业的要求与数据1、用C+语言实现系统;2、由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。所有信息记录完毕后,用户可以查询
3、各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。3、各项目名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1。四 大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。内容包括:1) 封面扉页2) 设计任务书3) 目录4) 总体设计方案(包括流程图)5) 使用说明及运行实例(包括界面)6) 成员设计内容简介7) 项目源程序代码(注意注释的使用)8) 指导教师评语五 总体设计(包含几大功能模块)本文研究开发的运动会管理系统用于支持用于查询各个学校在运动会
4、中的成绩。有几种目标: 1.支持输入各个项目的基本信息;2可以按比赛项目编号或名称查询、删除、修改信息。3可以按运动员编号或姓名查询、删除、修改信息4数据输入信息并能随时查询 六 详细设计(各功能模块的具体实现算法流程图)开始信息录入信息修改信息查询信息输出信息删除 结束6.1各函数的功能和实现1.本实验中,对不同的对象采取不同的存储结构,对比赛项目采取链式结构,而对于参赛运动员采取一个结构就可以了。本程序中主要用到线性表的一些基本操作,将比赛项目信息,运动员信息,赛事信息都构造成线性表。具体功能通过主函数分别调用各函数实现。2.参考本实验的功能要求,本程序分为七个模块:主函数、信息录入函数、
5、信息修改函数、信息删除函数、信息查询函数,信息输出函数。3.信息录入函数有包括比赛项目信息录入函数(包括比赛编号、名称等),运动员信息录入函数(运动员的编号、姓名、性别、年龄、工作单位或省份)、比赛赛事信息录入函数(某运动员参加某比赛项目,成绩、名次)。4.信息修改函数包括比赛项目、运动员信息、赛事信息修改。5.信息查询函数包括根据比赛项目、运动员编号进行查修6.信息输出函数包括比赛项目、运动员信息、赛事信息输出等。7.退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。如图6.1结束开始输出菜单根据菜单输入n的值选择程序输入退出输出查找插入
6、删除 图 6.1七 调试分析(包含各模块的测试用例,及测试结果) 7.1主函数#include#include#includeusing namespace std;void fun1() cout*endl; coutendl; cout*学校运动会管理系统*endl;cout-数据录入 请按:1-endl;cout-数据修改 请按:2-endl;cout-数据删除 请按:3-endl;cout-数据查询 请按:4-endl;cout-数据显示 请按:5-endl;cout-退出系统 请按:6-endl;coutendl;cout*endl;coutendl;cout*请输入一个数据,并按回
7、车键!*endl;class Matchpublic:Match *next;/为创建链表做准备int number; /比赛项目编号char call10; /比赛项目名称char time10; /比赛时间char place20; /比赛地点 friendvoid input1();7.2输入相关信息void input1() ofstream fout(e:比赛项目.dat,ios:app);char ch;Match a;do cout请分别输入比赛项目编号、名称、比赛时间、比赛地点.a.numbera.calla.placea.time; a.next=NULL; fout.wri
8、te(char *)&a,sizeof(Match); cout是否继续输入,如果继续键入Y|ych;while(ch=y|ch=Y); fout.close();Match *head1;void creat() head1=NULL; Match *p,*q=head1; ifstream fin(e:比赛项目.dat,ios:in); if(!fin) cout文件打开失败!next=p;q=p; p=new Match; fin.read(char*)p,sizeof(Match); fin.close(); 7.3信息修改int change1() /对比赛项目相关信息修改cout您
9、正在进行修改比赛项目有关事项操作!endl;creat(); Match *p1; p1=head1;cout请输入要修改比赛项目的编号:number1;while(p1!=NULL) if(p1-number=number1) sign=1;break; p1= p1-next; if (sign=0)cout没有找到要修改的记录!endl; elsecout请选择要修改比赛项目的那些信息endl;cout-修改比赛项目的编号-1endl;cout-修改比赛项目的名称-2endl;cout-修改比赛时间-3endl;cout-修改比赛地点-4endl;cout请输入对应信息的编号a;swit
10、ch(a)case 1:cout请输入新的比赛编号:nu; p1-number=nu; cout比赛项目编号修改成功!endl; break; case 2:cout请输入新的比赛项目名称:info; strcpy(p1-call,info);cout比赛项目名称修改成功!endl; break; case 3:cout请输入新的比赛时间:info;strcpy(p1-time,info);cout比赛项目时间修改成功!endl; break; case 4:cout请输入新的比赛地点:info;strcpy(p1-place,info);cout比赛项目地点修改成功!next; fout.c
11、lose(); return 0;7.4信息删除int delete1() /对比赛项目相关信息进行删除 creat(); Match *p1,*p2; p2=p1=head1;cout请选择要删除比赛项目的那些信息endl;cout-删除比赛项目的编号-1endl;cout-删除比赛项目的名称-2endl; cout请输入对应信息的编号n; int num,flag=0; char cal10; switch(n) case 1: cinnum; while(p1!=NULL) if(p1-number=num) flag=1;break; p2=p1; p1= p1-next; if (f
12、lag=0) cout没有找到要删除的记录!next=p1-next;case 2: cincal; while(p1!=NULL) if(!strcmp(p1-call,cal) flag=1;break; p2=p1; p1= p1-next; if (flag=0) cout没有找到要删除的记录!next=p1-next; ofstream fout(e:比赛项目.dat,ios:out); p1=head1;while(p1!=NULL) fout.write(char*)p1,sizeof(Match);p1=p1-next; fout.close();return 0; 7.5信息
13、查询void print1() creat(); Match *p1=head1; cout请分别输出比赛项目编号、名称、比赛时间、比赛地点.endl;while(p1!=NULL) coutnumbertcallttimetplacenext; void find1() creat(); Match *p1; p1=head1; int sign=0;/设置的标记变量 cout请选择要查询比赛项目的哪些信息endl;cout-按比赛项目的编号查询-1endl;cout-按比赛项目的名称查询-2endl;cout-按比赛时间查询-3endl;cout-按比赛地点查询-4endl;cout请输入
14、对应信息的编号a;switch(a)case 1:cout请输入要查询的比赛编号:nu; while(p1!=NULL) if(p1-number=nu) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl; break; case 2:cout请输入要查询的比赛项目名称:info; while(p1!=NULL) if(p1-call=info) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!
15、endl; else coutnumbertcallttimetplaceendl; break; case 3:cout请输入要查询的比赛时间:info;while(p1!=NULL) if(!strcmp(p1-time,info) sign=1;break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl; break; case 4:cout请输入要查询的比赛地点:info;while(p1!=NULL) if(!strcmp(p1-place,info) sign=1;
16、break; p1= p1-next; if (sign=0) cout没有找到要查询的记录!endl; else coutnumbertcallttimetplaceendl;break;class Athletepublic:Athlete *next;int number; /运动员的编号char name10; /运动员的姓名 char part20; /运动员所属工作单位或省份char sex20; /运动员性别int age; /运动员年龄friend void input2(); 7.6退出系统八 总结 通过这次大作业使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够
17、的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。本次大作业结束了,通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力.编写程序是件细心活,稍不留神就会出错,这就必须要求我对待事情要认真!但我们总结出了一点点的经验如下:1、要对系统的功能和要求做出详细的分析,并合理分解任务。2、把分解出来的子任务,做给一个相对独立的模块。3、在设计一个模块之前,要简单构想一下总界面的显视情况。4、针对构想出来的界面进行程序的编写。九 参考资料1
18、 陈维兴,林小茶C+面向对象程序设计教程(第3版), 清华大学出版社,2012 2 钱能 主编 C+程序设计教程 北京:清华大学出版社 1999年4月3 (美)斯特朗斯特鲁普 著,裘宗燕 译, C+程序设计语言, 机械工业出版社,20104网上相关资料 本科生大作业成绩评定表班级:姓名:学号:序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2015 年11月18日