数据结构课程设计运动会分数统计系统完整报告word文档.doc
- 文档编号:1526558
- 上传时间:2022-10-22
- 格式:DOC
- 页数:26
- 大小:399.50KB
数据结构课程设计运动会分数统计系统完整报告word文档.doc
《数据结构课程设计运动会分数统计系统完整报告word文档.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会分数统计系统完整报告word文档.doc(26页珍藏版)》请在冰豆网上搜索。
《数据结构》
课程设计
专业:
班级:
姓名:
指导教师:
2011年6月28日
目录
题目 1
时间 1
分析 1
程序要求 2
数据结构设计 2
1.概述 2
2.关键算法 3
3.查询操作 4
详细代码 6
测试结果 18
1.主菜单窗口 18
3.统计各学校总分 19
4.按学校编号排序输出 20
5.按学校总分排序输出 20
6.按男团体总分排序输出 21
7.按女团体总分排序输出 21
8.按学校编号查询学校某个项目情况 22
9.按项目编号查询取得名次的学校 22
测试非法数据 22
课程设计总结 26。
运动会分数统计
任务:
参加运动会有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)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形;
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求;
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
时间:
2011年6月22日—2011年6月28日星期二
a)需求分析
程序功能:
系统主要用于运动会分数统计方案;
输入方式:
键盘输入整形数据
输出方式:
屏幕显示
用户界面:
中文菜单提示操作
存储方式:
存储结构为链表
b)设计概要
本程序中学校的存储结构为链表:
Prevschool1next
头结点
Prevschool(最后)next
…………
……
school类为:
classschool:
publicathlete/*学校*/
{
……
public:
intcount;/*学校获奖数*/
intserial;/*学校编号*/
intmenscore;/*男选手总分*/
intwomenscore;/*女选手总分*/
inttotalscore;/*总分*/
athleteath[MaxSize];/*获奖运动员信息数组,包括分数,名次,项目*/
school*prev;//前指针
school*next;//后指针
};
部分主要的函数:
添加操作add(school*&head)
查询操作checkFunc(school*head,int&n)
文件保存save(school*head)
总分快速排序tquicksort(vector
总分基数排序tbaseSort(vector
关键算法:
{……
添加项目号
for(i=1;i<=n;i++)
{输入第i名运动员的学校编号temp
……
while(first!
=head) //遍历链表,直到找到编号为serial的学校所在结点,或first指向表头head
{ if(first->serial==要添加的编号)
{
(first->ath[first->count]).item=要添加的项目号;
(first->ath[first->count]).range=i(名次)
First指向的学校的项目加一;
更新总分
break; }
first=first->next;
……}
c) 详细设计
开始
输入项目编号temp
是数字
N
Y
0 N Y 输出“项目不存在” 学校遍历结束 temp存在 Y N Nextschool N temp是奇数 N Y 取5名 取3名 输入获奖的学校编号se 1 N Y 项目号、名次、运动员名字添进学校所在结点 Y 继续添加 Y N 结束 查询操作: while(first! =head) {…… if(输入的项目编号==学校第i位运动员的项目) { 把第i位运动员的项目,学校编号、名次、得分信息压入向量; }…… } first=first->next; …… 输出向量中的内容 //按学校编号顺序输出所有参赛学校运动会成绩 voidserialSort(vector { for(inti=0;i { cout<<*v[i]; } } 1.按学校编号统计 2.按学校名次统计 3.按男团总分统计 4.按女团总分统计 5.返回查询菜单 6.返回主菜单 1.所有学校总分统计表 2.学校成绩查询 3.项目情况查询 4.返回主菜单 详细代码: #include #include #include #include //#include #defineMAX50 //#defineNULL0 typedefstructnode1{ intschool;/*学校编号*/ intrecord;/*项目成绩*/ structnode1*next;/*链域*/ }Schools; typedefstruct{ intitem;/*项目编号*/ Schools*firstschool;/*链域指向链表中第一个结点*/ }ITEM; typedefstruct{ intz;/*项目总数*/ ITEMa[MAX]; }ALLitems; typedefstructnode2{ intitem;/*该学校获奖的项目*/ intrecord;/*项目成绩*/ structnode2*next;/*链域*/ }Items; typedefstruct{ intschool;/*学校编号*/ intscore;/*学校总分*/ intboys;/*男团体总分*/ intgirls;/*女团体总分*/ Items*firstitem;/*链域指向链表中第一个获奖项目的结点*/ }SCHNode; typedefstruct{ intn;/*学校总数*/ SCHNodeb[MAX]; }ALLNode; ALLitems*g1; ALLNode*g2; voidfunct1(ALLitems*g1,ALLNode*g2) {Schools*p1; Items*p2; inti,j,k,m,w,h,x; p1=(Schools*)malloc(sizeof(Schools)); p2=(Items*)malloc(sizeof(Items)); if(! p1||! p2) exit (1); \n\n"); printf("\n******输入各个项目信息******\n\n"); printf("输入男子项目总数m: "); scanf("%d",&m); if(m<0||m>20) {printf("输入有误,m是20以内的整数,请重新输入: "); scanf("%d",&m); } printf("输入女子项目总数w: "); scanf("%d",&w); if(w<0||w>20) {printf("输入有误,w是20以内的整数,请重新输入: "); scanf("%d",&w); } printf("输入参加运动会的学校总数n: "); scanf("%d",&g2->n); if(g2->n<0||g2->n>20) {printf("输入有误,n是20以内的整数,请重新输入: "); scanf("%d",&g2->n); } g1->z=m+w; printf("则项目编号为男子1-%d,女子%d-%d",m,m+1,g1->z); printf("\n\n****记录运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 运动会 分数 统计 系统 完整 报告 word 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)