版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计 运动会分数统计系统 数据结构课程设计报告 题目:运动会分数统计系统 学生姓名: 学 号: 班 级: 指导教师: 2010年 5 月 28 日目 录一、题目3二、时间3三、地点3四、程序要求3五、数据结构设计41.概述42.关键算法53.查询操作8六、详细代码9七、测试结果211.主菜单窗口213. 统计各学校总分224. 按学校编号排序输出235. 按学校总分排序输出236. 按男团体总分排序输出247. 按女团体总分排序输出248. 按学校编号查询学校某个项目情况259. 按项目编号查询取得名次的学校25八、 测试非法数据25九、课程设计总结26一、题目:运动会分数统计系统
2、二、时间:2010.05.2405.28三、地点:软件楼606四、程序要求:任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前前三名积分;前三名的积分分别为:5、3、2。(m、w=20,n=10)功能要求:1).可以输入各个学校、各项目、以及各项目前三名的数据信息;2)能统计各学校总分、男子项目和女子项目总分;3)可以按学校编号(或学校名称)、学校总分、男女团体总分排序输出;4).可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目编号查询取得前三的学校。规定:输入数据形式和范围:10以内的整数(如果
3、做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计。请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。五、数据结构设计1.概述本程序中学校的存储结构为链表,prev school1 next头结点prev school(最后) next其中school类为:class school:public athlet
4、e /*学校*/ public: int 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 *hea
5、d)总分快速排序tquicksort(vector& v, int first, int last)总分基数排序 tbasesort(vector& v, int d) 2.关键算法 添加项目号for ( i = 1 ; i serial =要添加的编号) (first-athfirst-count).item =要添加的项目号;(first-athfirst-count).range =i(名次) first指向的学校的项目加一;更新总分break;first = first-next;开始输入项目编号temp是数字ny0temp18ny输出“项目不存在”学校遍历结束temp存在ynnext
6、 schoolntemp是奇数 ny取5名取3名输入获奖的学校编号se1senext;输出向量中的内容1. 所有学校总分统计表2. 学校成绩查询3. 项目情况查询4. 返回主菜单1. 按学校编号统计2. 按学校名次统计3. 按男团总分统计4. 按女团总分统计5. 返回查询菜单6. 返回主菜单/按学校编号顺序输出所有参赛学校运动会成绩void serialsort(vector& v)for(int i=0;iv.size();i+)cout*vi;六、详细代码:#include #include #include #include /#include /*屏幕操作函数*/ #define ma
7、x 50 /#define null 0 typedef struct node1 int school; /*学校编号*/ int record; /*项目成绩*/ struct node1 *next; /*链域*/ schools; typedef struct int item; /*项目编号*/ schools *firstschool; /*链域指向链表中第一个结点*/ item; typedef struct int z; /* 项目总数 */ item amax; allitems; typedef struct node2 int item; /*该学校获奖的项目*/ int
8、 record; /*项目成绩*/ struct node2 *next; /*链域*/ items; typedef struct int school; /*学校编号*/ int score; /*学校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ schnode; typedef struct int n; /* 学校总数 */ schnode bmax; allnode; allitems *g1; allnode *g2; void funct1(allitem
9、s *g1,allnode *g2) schools *p1; items *p2; int i,j,k,m,w,h,x; p1=(schools *)malloc(sizeof(schools); p2=(items *)malloc(sizeof(items); if(!p1|!p2) exit(1); nn); printf(n *输入各个项目信息 * nn); printf( 输入男子项目总数m:); scanf(%d,&m); if(m20) printf( 输入有误,m是20以内的整数,请重新输入:); scanf(%d,&m); printf( 输入女子项目总数w:); scan
10、f(%d,&w); if(w20) printf( 输入有误,w是20以内的整数,请重新输入:); scanf(%d,&w); printf( 输入参加运动会的学校总数n:); scanf(%d,&g2-n); if(g2-nn20) printf( 输入有误,n是20以内的整数,请重新输入:); scanf(%d,&g2-n); g1-z=m+w; printf( 则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z); printf(nn *记录运动会成绩*); printf(nn (输入0标志结束)n); for(k=1;kz;k+) g1-ak.item=k; g1-ak.f
11、irstschool=null; for(k=1;kn;k+) g2-bk.school=k; g2-bk.firstitem=0; g2-bk.score=0; g2-bk.boys=0; g2-bk.girls=0; g2-b0.score=0; g2-b0.boys=0; g2-b0.girls=0; while(i!=0) printf(n 项目:); scanf(%d,&i); if(i!=0) printf( 1.前三名 2.前五名n); printf( 请选择:); scanf(%d,&j); if(j!=1&j!=2) printf( 输入有误,请重新选择:); scanf(%
12、d,&j); if(j=1) h=3; do printf( 第%d名:学校(学校编号为数字),h); scanf(%d,&x); p1=(schools *)malloc(sizeof(schools); p1-school=x; p2=(items *)malloc(sizeof(items); p2-item=i; if(h=3) p2-record=p1-record=2; if(h=2) p2-record=p1-record=3; if(h=1) p2-record=p1-record=5; p1-next=g1-ai.firstschool; g1-ai.firstschool=
13、p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团体总分 */ h-; while(x!=0&h!=0); if(j=2) h=5; do printf( 第%d名:学校(学校编号为数字),h); scanf(%d,&x); p1=(schools *)malloc(s
14、izeof(schools); p1-school=x; p2=(items *)malloc(sizeof(items); p2-item=i; if(h=5) p2-record=p1-record=1; if(h=4) p2-record=p1-record=2; if(h=3) p2-record=p1-record=3; if(h=2) p2-record=p1-record=5; if(h=1) p2-record=p1-record=7; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstite
15、m; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团体总分 */ h-; while(x!=0&h!=0); void save() file *fp1,*fp2; fp1=(file *)malloc(sizeof(file); fp2=(file *)malloc(sizeof(file); if(fp1=fopen(
16、sports1,wb)=null) printf(cannot open file.n); return; if(fwrite(g1,sizeof(allitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=null) printf(cannot open file.n); return; if(fwrite(g2,sizeof(allnode),1,fp2)!=1) printf(file write error.n); fclose(fp2); void funct2(alln
17、ode *g2) /* 输出各学校总分 */ int k; printf(nn * 输出各学校总分 *n); printf( 学校编号t 总分 n); for(k=1;kn;k+) printf( %dttt %dn,k,g2-bk.score); printf(n); system(pause); printf( 按任意键返回主菜单.); getchar(); void funct3(allnode *g2) /* 按学校编号排序输出 */ int k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按学校编号排序输出 *n
18、); printf( 学校编号ttt获奖情况 n); scanf(%d,&k); for(k=1;kn;k+) printf(tttttt%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(项目%d:得%d分 ,p2-item,p2-record); p2=p2-next; printf(n); printf(n); system(pause); printf(按任意键返回主菜单.); getchar(); void funct4(allnode *g2) /* 按学校总分排序输出 */ int i,j,k; items *p2; printf
19、(nn * 按学校总分排序输出 *n); printf( 学校编号tt总分 n); scanf(%d,&k); /printf(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(%d tt%dn,g2-bk.school,g2-bk.score); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-b
20、i.school; j=i-1; while(g2-b0.scorebj.score&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%d tt%dn,g2
21、-bk.school,g2-bk.score); system(pause); printf(按任意键返回主菜单.); getchar(); void funct5(allnode *g2) /* 按男团体总分排序输出 */ int i,j,k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按男团体总分排序输出 *n); printf(学校编号tt男团体总分 n); scanf(%d,&k); /printf(输入要查询的学校编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.first
22、item; while(p2!=null) printf(%dtt %dn,g2-bk.school,g2-bk.boys); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.boysbj.boys&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls;
23、 g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.boys); system(pause); / 暂停等待 printf(按任意键返回主菜单.); getchar(); void funct6(allnode *g2) /* 按女团体总分排序输出 */ int i,
24、j,k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按女团体总分排序输出 *n); printf(学校编号tt女团体总分 n); scanf(%d,&k); / printf(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(%dtt %dn,g2-bk.school,g2-bk.girls); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0
25、.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.girlsbj.girls&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2
26、-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.girls); system(pause); printf(按任意键返回主菜单.); getchar(); void funct7(allnode *g2) /* 按学校编号查询学校某个项目情况 */ int i,j; items *p2; printf(n * 按学校编号查询学校某个项目情况 *n); printf( 输入要查询的学校编号:); scanf(%d,&i); printf( 输入要查询的项目编号:); scanf(%d,&j)
27、; p2=g2-bi.firstitem; while(p2!=null) if(p2-item=j) printf( 学校编号:%dt项目%d:得%d分n,i,p2-item,p2-record); p2=p2-next; printf(n); system(pause); printf( 按任意键返回主菜单.); getchar(); void funct8(allitems *g1) /* 按项目编号查询取得名次的学校 */ int i; schools *p1; printf(n* 按项目编号查询取得名次的学校 *n); printf(输入要查询的项目编号:); scanf(%d,&i
28、); printf(项目编号ttt取得名次的学校n); printf(%dt,i); p1=g1-ai.firstschool; while(p1!=null) printf( 学校%d:得%d分 ,p1-school,p1-record); p1=p1-next; printf(nn); system(pause); printf(按任意键返回主菜单.); getchar(); void main() int t; g2=(allnode*)malloc(sizeof(allnode); g1=(allitems*)malloc(sizeof(allitems); if(!g2|!g1) e
29、xit(1); /textcolor(white); /textbackground(blue); /clrscr(); system(cls); for(;) printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt 运动会分数统计系统 n); printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt* 1.输入各个项目成绩并存储文件 *t n); printf(tt* 2.统计各学校总分 *t n); printf(tt* 3.按学校编
30、号排序输出 *t n); printf(tt* 4.按学校总分排序输出 *t n); printf(tt* 5.按男团体总分排序输出 *t n); printf(tt* 6.按女团体总分排序输出 *t n); printf(tt* 7.按学校编号查询学校某个项目情况 *t n); printf(tt* 8.按项目编号查询取得名次的学校 *n); printf(tt* 0.退出 *n); printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt n); printf(tt n); printf(tt n); print
31、f(tt 请选择(0-8):); loop:scanf(%d,&t); system(cls); switch(t) case 1:funct1(g1,g2);save();break; case 2:funct2(g2);break; case 3:funct3(g2);break; case 4:funct4(g2);break; case 5:funct5(g2);break; case 6:funct6(g2);break; case 7:funct7(g2);break; case 8:funct8(g1);break; case 0:exit(0); default: printf(输入有误,请重新选择:); goto loop; /clrscr(); system(cls); 七、测试结果1.主菜单窗口2. 输入各个项目成绩并存储文件 3. 统计各学校总分4. 按学校编号排序输出 5. 按学校总分排序输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信号浮标产业链招商引资的调研报告
- 冷热饮料机加热或制冷产业链招商引资的调研报告
- 医用皮褶厚度计产业链招商引资的调研报告
- 人寿保险行业营销策略方案
- 产品销售排名信息行业市场调研分析报告
- 可适应网络安全技术
- 2024年滨州市市场监督管理局所属滨州市检验检测中心公开招聘合同制编外工作人员(6人)笔试模拟试题及答案解析
- 会计政策变更对财务的影响计划
- 分层次教学与个性化辅导计划
- 定期教师培训与发展活动计划
- 满族介绍(课堂PPT)
- 小学生主题班会教学设计 队会《男女平等》 通用版
- 原发性醛固酮增多症护理查房
- 【北汽蓝谷新能源汽车公司税收筹划方案设计(5000字论文)】
- 成为公关高手:我在奥美、联想、美团的15年公关经验总结
- 小学英语课程与教学论(小学教育专业)PPT完整全套教学课件
- 云计算与大数据技术PPT全套完整教学课件
- 节约能源资源实施方案
- 第三节-脊椎摄影课件
- 创新实践(理论)学习通超星课后章节答案期末考试题库2023年
- 贸易公司奖励制度
评论
0/150
提交评论