C语言课程设计报告运动会分数统计系统Word下载.docx
- 文档编号:19056243
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:38
- 大小:140.62KB
C语言课程设计报告运动会分数统计系统Word下载.docx
《C语言课程设计报告运动会分数统计系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告运动会分数统计系统Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
写出各模块的类C码算法;
画出函数的调用关系图。
④调试分析以及设计体会:
测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;
程序调试中遇到的问题以及解决问题的方法;
课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
设计课题七:
运动会分数统计系统
一、问题描述:
参加运动会的n个学校编号为l~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为l~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;
还有些项目只取前三名,得分顺序为5,3,2。
设计一个统计程序按名次产生各种成绩单、得分报表。
二、基本要求:
1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;
产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;
均按名次排序。
2.比赛项目既要有径赛,又要有田赛。
三、测试数据:
对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
四、实现提示:
1.数据结构:
线性表
2.数据库结构:
下面四张表构成该系统的基本数据库,全部输出报表由系统根据基本表自动生成。
3.可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。
五、选作内容:
允许用户指定某项目采取其他名次取法。
三:
详细设计:
9
四:
调试分析及其体会:
11
五:
使用说明:
14
六:
附录:
16
七:
评分表:
33
一.需求分析
1问题描述
参加运动会有n个系,系编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;
取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;
哪些取前五名或前三名由学生自己设定。
(m<
=20,n<
=20)
2.基本要求:
(1).运动员检录;
(2).运动员检录,
(3).运动员成绩排序;
(4).运动员评奖
3.测试数据
《1》输入:
1进入添加系的界面,根据提示,再输入:
汽车系。
再输入:
8,成功添加了一个系。
2进入运动项目添加界面,根据提示,再输入:
跳高;
1;
0;
2;
3。
之后输入0。
再次进入系统界面。
《2》输入:
3查看输出结果。
《3》:
输入:
4查看输出结果。
《4》:
5查看输出结果。
《5》:
6查看输出结果。
《6》:
7根据提示输入项目编号:
2。
查看输出结果。
《7》:
8根据提示输入系编号:
二、概要设计
1.数据结构
<
1>
系:
名称,编号,男子团体总分,女子固体总分。
2>
运动项目:
项目编号,名称,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。
2.程序模块及之间的调用关系
三、详细设计
1、数据类型定义
(1)系的定义:
typedefstructDepartment//系的结构
{
charname[20];
//系的名称
intnumber;
//系的编号
intboy;
//男子团体总分
intgirl;
//女子团体总分
Department*next;
}Department;
(2)运动项目定义:
typedefstructSport//运动项目结构
//运动项目名称
intisboy;
//0为女项目,1为男项目
intis3;
//0为取前五名,1为取前五名
//项目编号
intfirst;
//第一名系的编号
intsecond;
//第二名系的编号
intthird;
//第三名系的编号
intfourth;
//第四名系的编号
intfifth;
//第五名系的编号
Sport*next;
}Sport;
、
2、函数之间的调用关系
(1)系调用图
department_add
department_Order
<
Departmentdepartment_search
department_addmark
department_show
department_isexist
department_output
department_read
department_write
department_getlong
sport_isexist
sport_add
sport_getlong
sport_write
Sportsport_read
sport_output
sport_search
3、算法设计
主要算法的设计思想:
本程序主要是使用链表来实现操作。
一个运动会包括运动项目和参加运动会的成员。
因此构造两个链表Department,Sport。
为了操作的方便,并且能够保存输入数据,所以通过文件操作来实现数据的写和读。
每次添加新的数据后都要输入0退出,数据才能保存。
对于总分的排序使用了冒泡排序。
为了使整个程序看起来更加友好,又添加了程序启动画面。
四、调试分析以及设计体会
1、调试中遇到问题及解决方法
1)、程序调试过程中常会出现一些小错误,如i,j混淆少括号少分号等小问题都可以按照提示找到,然后改正。
2)、语句错误语句使用不当造成程序无法运行出正常的结果。
3)、在排序过程中输出的结果是按总分顺序排序的,但是却不能够正确的输出是哪个学校的总分,解决方法是在新申请的顺序表的节点中加入了一个纪录学校代号的内容,在输出的同时就可以把学校代号也正确的输出来了。
2、设计体会
通过这次课程设计使我进一步达到理论与实际相结合,提高了自己组织数据及编写程序的能力,使我们能够根据问题要求和数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并用软件解决问题,培养良好的程序设计技能,掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务,锻炼自己的动脑能力,学会用自己的思路解决现实中的实际问题,虽然一开始也走了一些弯路不过在同学和老师的点拨下完成了该程序,这次课程设计中遇到了很多问题,一开始准备用二维数组存放的可考虑到同一个学校同一个项目有好几个人参加,就不能用二维数组了,如果每个学校都申请一个二维数组也非常不方便,还是用顺序表方便也不浪费空间,在这次课程设计的过程中虽然很多次都参照了课本及资料,不过这使我更加熟悉了顺序表以及结构体的定义及实现,调试过程中也遇到了一些问题也都是自己独立思考完成的,还有一个体会是,遇到不会的地方可以参考课本也可以去图书馆或网上查资料,当然主要思路有了也就简单点了,一开始思路不是很清楚就开始在敲程序了,浪费了很多时间,在老师的指导下,把自己的思路理清楚了再来敲程序果真是事半功倍,这真是个很好的收获。
3、性能分析
在排序时用到了直接插入排序,从算法描述中可以看到,在搜索插入位置时,遇到关键字相等的元素就停止比较和移动元素,可以确定该算法是稳定的排序算法。
从空间角度上看,它只需要一个元素的辅助空间r[0]。
从时间角度上看,主要时间耗费在关键字的比较和移动元素上。
n为顺序表表长,平均时间复杂度为O(n2)最坏时间复杂度为O(n2)辅助存储空间r[0]。
2、调试结果
多组数据输入与输出:
(1)输入:
3
输出:
系名编号男团总分女团总分总分
法律系6000
电子系5325
数学系4606
历史系39716
中文系2151126
计算机系1211132
旅游系7077
(2)输入:
4
系名编号男团总分女团总分总分
旅游系7077
(3)输入:
5
输出:
法律系6000
(4)输入:
6
输出:
(5)输入:
7
输出:
请输入项目编号:
输入:
1回车
项目名:
100m
项目类型:
女子项目
第一名:
计算机系
第二名:
中文系
第三名:
法律系
第四名:
无
第五名:
(6)输入:
8
请输入系的编号:
再输入2
则输出:
系名:
中文系男子团体总分:
3女子团体部分:
10总分:
13
(7)输入:
0退出
五、使用说明
1、运行环境
Windows,VC++6.0
2、用户界面
4、操作过程
(1)用户进入程序启动界面,等load完成后进入主菜单.主菜单有以下9个选项
1.输入系别
2.输入运动项目
3.按系别编号输出总分
4.按总分排序
5.按男团体总分排序
6.按女团体总分排序
7.按项目编号查询
8.按系别编号查询
0.退出
(2)输入0~8中的一个数
(3)输入1,进行添加系操作,分别输入系的名称和编号
(4)输入2,进行添加运动项目操作,分别输入项目名称,编号,项目类型,名次选
取,排名情况
(5)输入0,则退出系统,并且保存输入的信息.每次添加完都要输入0退出系统
才有效
(6)输入3,输出按系编号总分排名.
(7)输入4,输出按总分排名
(8)输入5,输出按男团体总分排序
(9)输入6,输出按女团体总分排序
(10)输入7,进入按项目编号查询界面.输入要查询的项目编号
(11)输入8,进入按系别编号查询界面,输入要查询的系的编号
六附录
1、源程序
#include<
iostream.h>
iomanip.h>
string.h>
fstream.h>
stdlib.h>
ctype.h>
stdio.h>
conio.h>
intgetint(inta)//字符转换成数字
return(int)(a-'
0'
);
}
Department*head1;
//-------启动画面函数----------
voidCover()
{system("
color1b"
charline[]={"
程序读取中 请耐心等待..."
};
charbar[]={"
...."
inti,j,k=0,x=0,y=0;
for(i=0;
i<
=strlen(line)/2;
)
{
system("
cls"
for(j=0;
j<
9;
j++)//改变行坐标
cout<
endl;
(75-strlen(line))/2;
j++)//改变列坐标
"
"
;
for(j=1;
=i;
j++)//进度显示器
●"
for(x=strlen(line)/2;
x>
i;
x--)
○"
if(k==4)
i++;
j++)//行坐标定位
line;
//输出线条
(65-strlen(bar))/2;
j++)
(i+7)*5<
%Loading"
cout.write(bar,k);
10;
24;
程序设计员5080906石行"
=18;
─"
10000000;
j++);
//延时效果
k++;
if(k>
4)
k=0;
}
voiddepartment_add()//添加系
Department*p;
intmark=0;
p=newDepartment;
请输入系的名称:
cin>
>
p->
name;
charc;
while(mark!
=1)
请输入系的编号:
c;
if(!
isdigit(c))//是否为数字
数据非法"
else
mark=1;
p->
number=c;
boy=0;
girl=0;
next=head1->
next;
head1->
next=p;
成功添加了一个系"
intdepartment_getlong(Department*first)//得到链表长度
inti=0;
while(first->
next!
=NULL)
first=first->
returni;
voiddepartment_write()//将系数据写入文本
p=head1;
p=p->
ofstreamoutfile("
Department.txt"
ios:
:
out);
outfile<
department_getlong(p)+1<
while(p!
name<
number<
boy<
girl<
outfile.close();
WriteSuccess!
voiddepartment_read()//从文本读入系数据
inti;
ifstreaminfile("
in);
infile>
while(i>
0)
name>
number>
boy>
girl;
i--;
DepartmentDataReadSuccess!
voiddepartment_output(Department*p)//输出系
系名 编号 男团总分 女团总分 总分\t\n"
while(p)
\t"
getint(p->
number)<
\t"
\t"
(p->
girl+p->
boy)<
intdepartment_isexist(inta)//检验系是否存在
intb=0;
Department*p;
if(p->
number==a)
return1;
return0;
voiddepartment_show(inta)//输出所有系
"
return;
无 "
voiddepartment_search(inta)//按编号搜索系
系名:
男子团体总分:
女子团体总分:
总分:
boy+p->
girl)<
无此编号"
voiddepartment_addmark(inta,intb,intc)//a为分数,b为系编号,c=1表示男,c=0表示女
number==b)
if(c=='
1'
boy=p->
boy+a;
girl=p->
girl+a;
voiddepartment_order(Department*temp,inttype)//type=0按总分,type=1按男总分,type=2按女总分,
Department*p,*q,*small,*temp1;
temp1=newDepartment;
temp1->
next=NULL;
p=temp;
while(p)
small=p;
q=p->
while(q)
switch(type)
case0:
if((q->
boy+q->
(small->
girl+small->
boy))
small=q;
break;
case1:
if(q->
small->
boy)
case2:
girl)
default:
error"
if(small!
=p)
boy;
boy=small->
small->
boy=temp1->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 运动会 分数 统计 系统