东华大学数据结构设计C语言运动会分数统计系统.docx
- 文档编号:7316485
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:18
- 大小:170.20KB
东华大学数据结构设计C语言运动会分数统计系统.docx
《东华大学数据结构设计C语言运动会分数统计系统.docx》由会员分享,可在线阅读,更多相关《东华大学数据结构设计C语言运动会分数统计系统.docx(18页珍藏版)》请在冰豆网上搜索。
东华大学数据结构设计C语言运动会分数统计系统
东华大学数据结构课程设计
实验报告
实验名称:
运动会分数统计系统
指导教师:
学生姓名:
学生学号:
实验日期:
目录
一、设计题目……………………………………………………(3)
二、任务…………………………………………………………(3)
三、功能要求和测试数据……………………………………(3)
四、需求分析……………………………………………………(4)
5、概要设计……………………………………………………(5)
5.1系统的流程框图…………………………………………(5)
5.2系统各函数的功能、相互调用关系…………………(6)
6、详细设计……………………………………………………(5)
6.1各变量的定义和作用………………………………(8)
6.2系统各函数的功能…………………………………(8)
7、调试分析……………………………………………………(21)
8、用户手册…………………………………………………(22)
九、测试结果……………………………………………………(22)
十、心得体会与参考文献………………………………………(22)
设计题目
运动会分数统计
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1~m,女子m+1~m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些项目取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
1)可以输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分;
3)可以按学校编号、学校总分、男女团体总分排序输出;
4)可以按学校编号查询学校某个项目的情况;
5)可以按项目编号查询取得前三或前五名的学校。
测试数据:
学校数据
校名
东华大学
上海交大
复旦大学
同济大学
华东师范大学
编号
1
2
3
4
5
项目数据
项目编号
项目名称
1
男子100米
2
男子200米
3
男子400米
4
男子跳高
5
男子跳远
6
女子跳高
7
女子跳远
8
女子铅球
9
女子100米
10
女子400米
需求分析
4.1需求分析
本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点,应具备一定的实用性。
4.1.1功能实现
(1)记录功能。
能记录一次运动会的所有项目信息,如其编号,名称,是男子项目还是女子项目,是取前三名还是前五名,以及取得名次的学校编号;能记录参加本次运动会的学校个数,以及学校的编号,并能添加,修改,删除其中的信息。
(2)查询功能。
能根据项目编号查询在该项目上获得名次的学校编号,并按名次先后顺序输出;能根据学校编号和项目编号查询该学校在该项目上获得的名次以及得分情况。
(3)统计功能。
能统计各个学校的总分,男子团体总分,女子团体总分。
4.1.2相关规定:
输入数据形式和范围:
20以内的整数,也可以输入学校的名称,运动项目的名称
4.1.3输出形式:
有中文提示,各学校分数为整形。
4.1.4界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
概要设计
4.1系统的流程框图
程序调用关系
voidmain()调用了voidbasic(),voidmatchoutvoid,voidinput(),voidoutput(),voidteamoutput();
voidoutput()调用了voidindex();
voidteamoutput()调用了voidteamsco();
voidteamsco()调用了voidindex();
详细设计
#include
#include
#include
*/
#defineN20/*参赛学校数量*/
inthelp[N];/*成绩排序时使用*/
intn,m,w;/*定义代表学校、男子项目、女子项目数量的变量*/
inta,b;/*项目编号,项目名次个数*/
structScore/*定义项目比赛结果名次列表元素结构体*/
{
intschnum;/*学校编号*/
charname[20];/*姓名*/
intposition;/*名次*/
intscore;/*得分*/
};
structMatch/*定义运动项目结构体*/
{
intmatnum;/*项目编号*/
intnum;/*项目名次个数*/
structScorelist[5];/*名次列表数组,结构体数组*/
}ma[50];
structSchoolScore/*定义学校成绩单元素*/
{
intmatnum;/*项目编号*/
intposition;/*名次*/
//charname[20];/*姓名*/
intscore;/*得分*/
};
structSchool/*定义学校结构体*/
{
intschnum;/*学校编号*/
structSchoolScorelist[50];/*成绩单列表数组*/
intteam;/*团体总分*/
intmteam;/*男子团体总分*/
intfteam;/*女子团体总分*/
intnum;/*累加数*/
}sc[20];
voidinput()/*输入比赛数据*/
{inti,rank,c;
cout<<"请输入比赛结果资料"< for(i=0;i ma[i].matnum=i+1;/*初始化项目编号matnum*/ cout<<"请输入比赛项目编号1-"< cin>>c;/*项目编号*/ if((c>0)&&(c<=m+w)) do { cout<<"选择名次类型: 取前3名输入3,取前5名输入5: ";/*判断名次类型*/ cin>>rank; if(rank==3) ma[c-1].num=3;/*项目名次个数为3*/ if(rank==5) ma[c-1].num=5; elseif(rank! =3&&rank! =5) cout<<"输入错误,请重新输入: "; }while(rank! =3&&rank! =5); cout<<"第"< "<<"取前"< for(i=0;i { ma[c-1].list[i].position=i+1; do { cout< "; cin>>ma[c-1].list[i].schnum; if(ma[c-1].list[i].schnum<1||ma[c-1].list[i].schnum>n) cout<<"错误! 输入的编号应为1-"< ";/*输出出错信息*/ }while(ma[c-1].list[i].schnum<1||ma[c-1].list[i].schnum>n); cout<<"请输入该比赛项目学校得分"; cin>>ma[c-1].list[i].score; } } voidindex()/*整理比赛数据函数,将输入的分数赋值给sc[]*/ { inti,j,k; for(i=0;i { sc[i].schnum=i+1;/*初始化学校编号*/ sc[i].num=0;/*初始化累加数*/ } for(i=0;i for(j=0;j for(k=0;k if(ma[i].list[j].schnum==sc[k].schnum)/*schnum学校编号*/ { sc[k].list[sc[k].num].matnum=ma[i].matnum;/*matnum项目编号,运动项目编号赋值给SchoolScore的运动项目*/ sc[k].list[sc[k].num].position=ma[i].list[j].position;/*Score名次赋值给School*/ sc[k].list[sc[k].num].score=ma[i].list[j].score; sc[k].num++; } return; } voidteamsco()/*团体成绩计算函数*/ { inti,j; for(i=0;i { sc[i].team=0; sc[i].mteam=0; sc[i].fteam=0; } for(i=0;i for(j=0;j { sc[i].team=sc[i].team+sc[i].list[j].score;/*团体总分成绩计算*/ if(sc[i].list[j].matnum<=m)/*项目编号小于m,为男子项目*/ sc[i].mteam=sc[i].mteam+sc[i].list[j].score;/*男子团体成绩计算*/ elsesc[i].fteam=sc[i].fteam+sc[i].list[j].score;/*女子团体成绩计算*/ } return; } voidoutput()/*输出学校成绩列表函数*/ { inti,a; cout<<"按学校编号查询学校某个项目的比赛情况"< cout<<"请输入学校编号: "< cin>>a; cout<<"比赛项目编号名次得分"< for(i=0;i cout< return; } voidteamoutput()/*输出团体报表函数*/ { inti,j,k; for(i=0;i { cout<<"1.按学校编号排序输出"< cout<<"2.按学校总分排序输出"< cout<<"3.按学校男子团体总分排序输出"< cout<<"4.按学校女子团体总分排序输出"< cout<<"5.返回上一级"< cout<<"******************************************************"< cin>>j; switch(j) { case1: cout<<"学校编号学校总分男子团体总分女子团体总分"< for(i=0;i cout< break; case2: for(i=0;i help[i]=i;/*用辅助数组帮助排序,辅助数组改变,而原来排序不变*/ for(i=0;i { for(j=i+1;j if(sc[help[i]].team { k=help[i]; help[i]=help[j]; help[j]=k; } }/*用冒泡排序方法从大到小排序*/ cout<<"学校编号学校总分男子团体总分女子团体总分"< for(i=0;i cout< break; case3: for(i=0;i help[i]=i;/*用辅助数组帮助排序,辅助数组改变,而原来排序不变*/ for(i=0;i { for(j=i+1;j if(sc[help[i]].mteam { k=help[i]; help[i]=help[j]; help[j]=k; } }/*用冒泡排序方法从大到小排序*/ cout<<"学校编号学校总分男子团体总分女子团体总分"< for(i=0;i cout< break; case4: for(i=0;i help[i]=i;/*用辅助数组帮助排序,辅助数组改变,而原来排序不变*/ for(i=0;i { for(j=i+1;j if(sc[help[i]].fteam { k=help[i]; help[i]=help[j]; help[j]=k; } }/*用冒泡排序方法从大到小排序*/ cout<<"学校编号学校总分男子团体总分女子团体总分"< for(i=0;i cout< break; case5: i=N;break; default: cout<<"输入出错"< break; } } } voidmatchoutput()/*输出比赛项目名次列表函数*/ { inti,t=1; while(t! =0) { cout<<"请输入需要查询排名的项目编号1-"< "; cin>>t; if(t==0)break; elseif((t>0)&&(t<=m+w)) { cout<<"比赛项目名次列表请输入项目编号: "< cout<<"比赛项目编号名次学校编号得分"; for(i=0;i cout< } } } voidmain()/*主菜单*/ { intchose; voidbasic(); voidmatchoutput(); voidoutput(); voidteamsco(); voidindex(); voidteamoutput(); voidinput(); cout<<"******************运动会分数统计系统*****************"< for(;;) { cout<<"您好,欢迎使用运动会分数统计系统系统"< cout<<"**1.录入比赛基本信息**"< cout<<"**2.录入各个项目的前三名或前五名的成绩**"< cout<<"**3.按学校编号查询学校某个项目的情况**"< cout<<"**4.按学校编号、学校总分、男女团体总分排序输出**"< cout<<"**5.按项目编号查询取得前三或前五名的学校**"< cout<<"**6.清屏;**"< cout<<"**7.退出操作;**"< cout<<"您选择的操作选项是: "; cin>>chose; switch(chose) { case1: { basic(); break; } case2: { input(); break; } case3: { index(); output(); break; } case4: { index(); teamsco(); teamoutput(); break; } case5: { matchoutput(); break; } case6: { system("cls");/*清屏功能,美化界面*/ break; } case7: { exit(0); cout<<"退出系统! ";break; } default: { cout<<"\007输入有误,请重新选择"; break; } } } } voidbasic() { cout<<"****************************************\n"; do { cout<<"请输入参加运动会的学校个数: "; cin>>n; if(n<=0||n>20)/*输出出错信息*/ cin>>"输入的学校数目不正确! 请重新输入! "; }while(n<=0||n>20); do { cout<<"有多少个男子项目: "; cin>>m; if(m<0||m>20)/*输出出错信息*/ cout<<"输入的男子项目数目不正确! 请重新输入! "; }while(m<0||m>20); do { cout<<"有多少个女子项目: "; cin>>w; if(w<0||w>20)/*输出出错信息*/ cout<<"输入的女子项目数目不正确! 请重新输入! "; }while(w<0||w>20); cout<<"本运动会共有"< } 调试分析 用户手册 (1)演示程序的运行环境为Windows7系统,MicrosoftVisualC++6.0中运行。 执行文件为: yundonghui.exe (2)进入演示程序后即显示界面: (3)请根据提示进行操作,按规范输入,如上一界面下一步可以输入的值为 1——7,然后继续按需要和提示操作。 测试结果 进入程序后界面 录入比赛基本信息 录入项目的前三名或前五名的成绩 输入学校编号查询学校比赛项目情况 按学校编号排序输出 按学校男子团体总分排序输出 按项目编号查询取得前三或前五名的学校 十心得与体会与参考文献 这次数据结构课程设计实验让自己经历了一个从没有思路到方法渐渐明晰的过程,从实验想法到实验报告完成,程序运行正确的历程,从刚开始错误较多的程序到慢慢调试成功,无限喜悦尽在此! 在这次课程设计中,自己不仅开发一个小型实用系统,而且掌握了“清屏”美化界面的语句,通过学习数据结构的知识更好地理解了运用结构化程序设计的思想和方法,学会了调试一个较长程序的基本方法,提升了书写程序设计开发文档的能力,对实验报告作用的认识更加清晰…… 回顾此次课程设计,从拿到题目到完成整个编程,从理论到实践,自己学到了很多的东西,不仅可以巩固所学的C++语言知识,把前面所学过的知识重新温习了一遍,而且学到了很多在书本上所没有学到过的知识(比如清屏作用)。 通过这次数据结构课程设计收获知识,提高能力的同时,我也学到了很多人生的哲理,比如懂得怎样去制定计划,怎样去实现这个计划,掌握了在执行过程中怎么样去克服心理上的不良情绪(在程序调试阶段苦苦报错的阶段),以及在错误自己无法解决的情况下如何去请教同学和老师,获取帮助。 谭浩强《C程序设计(第四版)》清华大学出版社 谭浩强《C程序设计题解与上机指导》清华大学出版社 严蔚敏《数据结构(C语言版)》清华大学出版社 《C++语言基础教程(第二版)》清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华 大学 数据 结构设计 语言 运动会 分数 统计 系统