数据结构课程设计运动会分数统计Word格式文档下载.docx
《数据结构课程设计运动会分数统计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会分数统计Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。
![数据结构课程设计运动会分数统计Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/250fb550-6833-4e90-afe4-197f4ca55eb8/250fb550-6833-4e90-afe4-197f4ca55eb81.gif)
一、概要
1题目:
2要求:
任务:
参加运动会有n个学校,学校编号为1……n。
竞赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;
取前五名的积分别离为:
7、五、3、二、1,前三名的积分别离为:
五、3、2;
哪些取前五名或前三名由学生自己设定。
(m<
=20,n<
=20)
功能要求:
1)能够输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分,
3)能够按学校编号或名称、学校总分、男女集体总分排序输出;
4)能够按学校编号查询学校某个项目的情形;
能够按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
能够输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每一个功能能够设立菜单,依照提示,能够完成相关的功能要求。
存储结构:
学生自己依照系统功能要求自己设计,可是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方式等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求利用一、全数合法数据;
二、整体非法数据;
3、局部非法数据。
进行程序测试,以保证程序的稳固。
测试数据及测试结果请在上交的资料中写明。
二、分析
1整体设计
参赛人数即为顺序表表长,在顺序表节点中有成绩,在成立学生信息时可直接输入成绩,输入学生信息时编码是自动加的,统计学校总分或男女项目总分时都用2个for循环来实现,统计出来的得分都可放入另一个顺序表中以便于排序,在查询时用户输入要查询的学校代号或项目代号即可查询,在成立信息时会挪用保留在文件的函数来实现学生信息的保留。
2数据结构的选择
运动会分数统计程序用到的是顺序表的数据类型,由于一开始参赛人数确实是确信下来的,参赛人数即为顺序表表长,故顺序表的表长也就确信下来了,顺序表的要紧内容有学校数、男子项目数、女子项目数、总的参赛人数。
节点要紧内容包括:
学生的姓名、学校代号、项目代号和学生的成绩。
顺序表类型如下:
typedefstruct{
uexiao==i&
&
L->
sc[j].xiangmu==n)ame,L->
sc[j].score);
}
按项目代号查取得成绩的学校是也是按编号查询,只要学校项目代号与输入要查的项目相同而且有成绩就输出。
函数如下:
voidsearch2(seqlist*L){iangmu==k&
sc[j].score!
=0)
printf("
学校代号%d在该项目姓名%s取得成绩%d\n"
L->
sc[j].xuexiao,L->
sc[j].name,L->
}
}
(2)统计
在统计学校总分和各学校男女项目总分时思路大致相同,在统计男(女)项目总分时只需确信下是不是是男(女)子项目,若是是就加,判定方式确实是男子项目的项目代号小于等于男子项目数(即:
sc[j].xiangmu)<
(L->
m))而女子项目那么大于男子项目数(即L->
sc[j].xiangmu)>
m))
统计各学校总分函数介绍如下:
voidtongfen(seqlist*L,list*s){uexiao==i){core;
}iaohao=i;
ey=sum;
和uexiao,&
sc[i].xiangmu,&
sc[i].name,&
sc[i].score);
}
savefile(L);
printf("
成立成功!
:
"
);
voidsearch1(seqlist*L){uexiao==i&
sc[j].xiangmu==n)
该学校在该项目姓名为%s取得成绩%d\n"
voidsearch2(seqlist*L){iangmu==k&
voidtongfen(seqlist*L,list*s){uexiao==i){
sum=sum+L->
sc[j].score;
s->
r[i].xiaohao=i;
s->
r[i].key=sum;
printf("
学校代号为%d的学校取得的总分为%d\n"
i,sum);
voidtongfenboy(seqlist*L,list*s){uexiao==i){
if((L->
m)||(L->
sc[j].xiangmu)==(L->
m)){
}
学校代号为%d在男子项目取得的总分为%d\n"
voidtongfengirl(seqlist*L,list*s){uexiao==i){
学校代号为%d在女子项目取得的总分为%d\n"
voidpaixu(seqlist*L,list*s){ey<
s->
r[j].key){iaohao,s->
r[k].key);
}
voidoutput(seqlist*L){
intj;
学校代号编号项目号姓名成绩:
\n"
for(j=1;
j<
=L->
r;
j++){
printf("
%d\t%d\t%d\t%s\t%d\n"
sc[j].xuexiao,j,L->
sc[j].xiangmu,L->
};
seqlist*loadfile()xt"
"
r"
seqlist*s;
s=(seqlist*)malloc(sizeof(seqlist));
fscanf(fp,"
%d%d%d%d"
&
r,&
n,&
m,&
w);
for(inti=1;
i<
=s->
i++)
{
fscanf(fp,"
%s"
buf);
strcpy(s->
sc[i].name,buf);
%d%d%d"
sc[i].xuexiao,&
fclose(fp);
returns;
voidsavefile(seqlist*s)xt"
a+"
))==NULL)
Cannotopenthefile!
return;
fprintf(fp,"
%d\t"
s->
r);
n);
m);
%d\n"
fprintf(fp,"
%s\t"
sc[i].name);
sc[i].xuexiao);
sc[i].xiangmu);
intmenu_select(){
inti,sn;
------欢迎来到大学生运动会治理系统------\n"
请您先建立参赛者信息并记录成绩
(1)\n"
查询(按校查某个项目)
(2)\n"
查询(按项目查取得成绩的学校)(3)\n"
统计各学校总分并排序输出(4)\n"
统计各学校男子项目总分并排序输出(5)\n"
统计各学校女子项目总分并排序输出(6)\n"
输出(7)\n"
退出(0)\n"
----------------请选择------------------\n"
for(i=0;
100;
i++){
scanf("
%d"
&
sn);
if(sn<
0||sn>
7)
\n\t输入错误,重选0-7:
elsebreak;
returnsn;
voidmain(){
intm,n,w,r;
FILE*fp;
seqlistS,*L=&
S;
listp,*s=&
p;
if((fp=fopen("
运动员系统.txt"
L=(seqlist*)malloc(sizeof(seqlist));
输入参赛的学校数,男子项目数,女子项目数,总的参赛人数:
scanf("
w,&
L->
n=n;
m=m;
w=w;
r=r;
else
L=loadfile();
for(;
;
){
switch(menu_select()){
case1:
set(L);
break;
case2:
search1(L);
case3:
search2(L);
case4:
tongfen(L,s);
paixu(L,s);
case5:
tongfenboy(L,s);
case6:
tongfengirl(L,s);
case7:
output(L);
case0: