运动会分数统计设计报告_第1页
运动会分数统计设计报告_第2页
运动会分数统计设计报告_第3页
运动会分数统计设计报告_第4页
运动会分数统计设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程实验实验报告实验二运动会分数统计专业:计算机科学与技术班级:姓名:学号:完成日期:目录一、题目描述 3二、需求分析 4三、概要设计 4四、详细设计 9五、调试分析 13六、总结 17、题目描述参加运动会有n个学校,学校编号为1 n。比赛分成m 个男子项目,和 w个女子项目。项目编号为男子1m女子m+1m+w不同的项目取前五名或前三名积分;取前五名的 积分分别为: 7、5、3、2、1,前三名的积分分别为: 5、3、2。写一个统计程序产生的各种成绩和得分报表。基本要求: 产生各学校的成绩单,内容包括各校所取得的每项成绩的项 目号、名次(成绩) 、姓名和得分;产生团体总分报表,内 容包括

2、校号、男子团体总分、女子团体总分和团体总分。 实验提示:可以假设 n=20,m=30,w=20, 姓名长度不超过 20个字符, 每个项目结束时,将其编号、类型符(区分取前 3 名还是前 5 名)输入, 并按名次顺序输入运动员姓名、 校名(和成绩)1、需求分析1. 在该程序中,参赛学校编号为1n (nv=20)。比赛分成 m(m=30个男子项目和 w (w=20)个女子项目,分别编号为1m和m+1m+w姓名长度不超过 20个字符;2. 输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。3. 对于项目编号为奇数的取前五名,得分顺序为7, 5, 3, 2,1;为偶数的取前三名,得分顺序

3、为5,3,2。4. 程序执行的命令包括:可以输入各个项目的前三名或前五名的成绩;能统计各学校总分;可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。二、概要设计本程序中学校的存储结构为链表:Prevschool (最后)nextPrevschool1nexti id 八 iOwl 1 Wl 1i id 八 i其中school 类为:学校 */class school:public athlete /* 学校获奖数 */学校编号 */男选手总分 */ 女选手总分 */ 总分 */ 获奖运动员信息数组,public:in

4、t count; /* int serial; /* int menscore; /* int womenscore; /* int totalscore; /*athlete athMaxSize; /* 包括分数,名次,项目 */ school *prev;/ 前指针 school *next; / 后指针;其中部分主要的函数:添加操作 add(school* &head) 查询操作 checkFunc(school *head,int &n) 文件保存 save(school *head) 总分快速排序 tquicksort(vector& v, int first, int last)

5、总分基数排序 tbaseSort(vector& v, int d)2. 关键算法添加项目号for ( i = 1 ; i serial = 要添加的编号 )要添加的=i (名次)(first-athfirst-count).item = 项目号 ;(first-athfirst-count).range First 指向的学校的项目加一 更新总分 break; first = first-next;流程图:N是数字YN0temp18YNYNYYNNY1sen ext;输出向量中的内容1. 所有学校总分统计表2. 学校成绩查询3. 项目情况查询4. 返回主菜单1. 按学校编号统计2. 按学校名

6、次统计3. 按男团总分统计4. 按女团总分统计5. 返回查询菜单6. 返回主菜单/按学校编号顺序输出所有参 赛学校运动会成绩void serialSort(vector& v)for(i nt i=O;iv.size();i+)cout*vi;四、详细设计输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示, 可以完成相关的功能要求。主函数代码:int main() /规定男生项目前三名分别积分、 、,女生项目前五名分别积分、/规定没有名次则积分为,不考虑并列的情况/ 请正确输入各学校对应项目的积分int n,m,w,i,j;school a20;in

7、t summscore20,sumwscore20,sumscore20;/ 定义存储各个学校男 团、女团、总分RedType d20;定义排序所需的数组为 RedType型SqList L,Lm,Lw;/ 定义存放各个学校总分、男团、女团积分的顺序线性表List Lr;/ 定义积分排序所需的顺序线性表InitList(L);/ 初始化各线性表InitList(Lm);InitList(Lw);cout 请输入参加运动会的学校数目( 20): n;while(n20)cout 输入学校数目有误,请重新输入! endl;cout 请输入参加运动会的学校数目( 20): n;cout 请分别输入男

8、生、女生的项目数目( 20):mw;cout 规定男生项目前三名分别积分、 、endl;cout 女生项目前五名分别积分、 、endl;cout 没有名次则积分为 , 且本程序不涉及并列排名的情况! endl;cout 请正确输入各学校对应项目的积分! nendl; for(i=1;i=n;i+)ai-1.schnum=i;/ 赋给学校对应的编号printf( 请输入学校 %d 男生各个项目的成绩: n,i);for(j=1;jai-1.mscorej-1;printf( 请输入学校 %d 女生各个项目的成绩: n,i);for(j=1;jai-1.wscorej-1;for(i=0;in;i

9、+) summscorei=ai.mscore0; for(j=1;jm;j+)求出学校男团总分并存储到数组将学校男团总分插入存放在线性求出学校女团总分并存储到数组将学校女团总分插入存放在线性summscorei+=ai.mscorej;/ 中对应位置ListInsert(Lm,i+1,summscorei);/ 表对应位置sumwscorei=ai.wscore0; for(j=1;jch;当 flag 为真时执行循环请选择 :n);查看各学校总分统计,并按学校编号排序输出查看 n); 按学校总分排序输出查看 n); 按男团总分排序输出查看 n); 按女团总分排序输出查看 n);按学校编号查

10、询学校某个项目的情况 n); 按项目编号查询取得前三或前五名的学校 n); 退出程序 n);switch(ch)case 1:/查看各学校总分统计,并按学校编号排序输出查看for(i=0;in;i+)printf( 学校编号: %d 学校总分: %dn,i+1,L.elemi);break;case 2:/ 按学校总分排序输出查看Lr.length=n; for(i=0;in;i+) di.key=L.elemi; di.otherinfo=i+1;Lr.ri+1=di;InsertSort(Lr);cout 按学校总分排序后以 (名次,学校编号,学校总分 )形式输出为: endl;print

11、(Lr);break;case 3:/ 按男团总分排序输出查看Lr.length=n;for(i=0;in;i+) di.key=Lm.elemi; di.otherinfo=i+1;Lr.ri+1=di;InsertSort(Lr);cout 按男团总分排序后以 (名次,学校编号,男团总分 )形式输出为: endl;print(Lr);break;case 4:/按女团总分排序输出查看Lr.length=n;for(i=0;in;i+) di.key=Lw.elemi; di.otherinfo=i+1;Lr.ri+1=di;InsertSort(Lr);cout 按女团总分排序后以 (名次

12、,学校编号,女团总分 )形式输出为: endl;print(Lr);break;case 5:/ 按学校编号查询学校某个项目的情况int s,t;cout 请输入要查询的学校编号: s;while(sn)/ 输入学校编号不在初始定义范围之内 cerr 输入学校编号有误,请重新正确输入! endl; cout 请输入要查询的学校编号: s;/ 重新输入i=0;while(ai.schnum!=s)+i;/ 通过循环找到输入编号的对应学校在数组 a 中的位置 cout 请输入要查询的项目序号: t;while(tm+w)/ 输入项目序号不在初始定义范围之内 cout 输入项目序号有误,请重新正确输

13、入! endl; cout 请输入要查询的项目序号: t;/ 重新输入 if(t=m)/ 该项目属于男生项目 printf( 该学校该项目积分为: %dn,ai.mscoret-1);/ 从 学校男生项目积分数组里输出else / 该项目属于女生项目printf( 该学校该项目积分为: %dn,ai.wscoret-m-1);/ 从学校女生项目积分数组里输出break;case 6:/ 按项目编号查询取得前三或前五名的学校 cout 请输入要查询的项目序号: t;while(tm+w)/ 输入项目序号不在初始定义范围之内 cout 输入项目序号有误,请重新正确输入! endl; cout 请输

14、入要查询的项目序号: t;/ 重新输入 if(t=m)/ 该项目属于男生项目i=0; while(ai.mscoret-1!=5) +i;/ 通过循环找到该项目第一名学校在 a 中的位置printf(获得该项目第一名的是学校:%d号n,i+1);i=0;while(ai.mscoret-1!=3)+i;/ 通过循环找到该项目第二名学校在 a 中的位置printf(获得该项目第二名的是学校:%d号n,i+1);i=0;while(ai.mscoret-1!=2)+i;/ 通过循环找到该项目第三名学校在 a 中的位置 printf(获得该项目第三名的是学校:%d号n,i+1);else/ 该项目属

15、于女生项目i=0;while(ai.wscoret-m-1!=7)+i;/ 通过循环找到该项目第一名学校在 a 中的位置 printf(获得该项目第一名的是学校:%d号n,i+1);i=0;while(ai.wscoret-m-1!=5)+i;/ 通过循环找到该项目第二名学校在 a 中的位置 printf(获得该项目第二名的是学校:%d号n,i+1);i=0;while(ai.wscoret-m-1!=3)+i;/ 通过循环找到该项目第三名学校在 a 中的位置 printf(获得该项目第三名的是学校:%d号n,i+1);i=0;while(ai.wscoret-m-1!=2)+i;/ 通过循环

16、找到该项目第四名学校在 a 中的位置 printf(获得该项目第四名的是学校:%d号n,i+1);i=0;while(ai.wscoret-m-1!=1)+i;/ 通过循环找到该项目第五名学校在 a 中的位置 printf(获得该项目第五名的是学校:%d号n,i+1);break;default:flag=0;printf(程序结束,按任意键退出 !n);/ 退出程序getchar();五、调试分析1. 输入数据C:Us ers Ad mnistratorVDesktopX 习飞运动仝 亡畑口2. 查看学校总分排序统计,并按学校编号排号输出 GU ser5Ad m initrato rDe5k

17、tQexe请选择:L-查看各学校总分统计,并按学校编号排序岀查看2 按宇校忌兮排序输出愛看X按男园总分排序输二査看孔按女团总分排序输吕査看反按学校编号直询学校某亍项目的情:兄6.按顶目编寻查询取得前三或前五名的学校1 2 3 4 & nA I S * 号号号号号 十心*;:-.二4 咬戦咬佼I 丁*b 5 丁/y JJV 校校校校校 学学学学学2 55 4 9 113. 按学校总分排序输出查看请选)睪:Z. 3d一 萱看各学校总分统计,并按学校编号排臟岀查看愎学校总分排序输出查看惨判乳耳分排序输出杳看仁按衣13息分排序谕出查看氏按学枝編号查询学较某个顼目的情况 k按项目騙号查询取得前三或前近名

18、的学校 匸退出程序2敬学校总分排序后臥(名次,学校编号,学枝邕分)形式输岀为; 52,小 冋1冷)33, S)4,1.5.15:4. 按男团总分排序输出查看5. 按女团总分排序输出查看 C !U Eersdfld mini stratorDes etc piS 习运韵会工 me请1.查看各学校分统计,并按学校编号排序输岀查看乙按学校总分排序输出董看3 按男团总分押序输出竜音4+按女团魚分摊序输岀奋看反按沪校编号查询宁校苴八顶目的1祝按项目编弓査询取得前二或前五名的学杖i退岀程序4按女团总分排序后以(名次学校编号,女团总分)形式输出为,& 2)(生1,切 3, 6 4, 0)(1,10)6. 按学校编号查询学校某个项目的情况7. 按项目编号查询取得前三或前五名的学校GU sersm in istr:tori)es kto pj东习入运韵会 2 .exe3.4,b.请选择:查看各学枝总为统il并按学杖编弓排序输J蛮看 按学校总分排序输岀俺看按男团億分排序输出查看按女因总分抑序输岀查看按学校编詮询学校某贝目的情洞 按顶

温馨提示

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

评论

0/150

提交评论