数据结构运动会分数统计Word下载.docx
《数据结构运动会分数统计Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构运动会分数统计Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
![数据结构运动会分数统计Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/23/7c54da38-9a24-41a9-be45-d66addf75b11/7c54da38-9a24-41a9-be45-d66addf75b111.gif)
一.题目分析
这次课程设计题目是运动会的分数统计系统,它要求参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号为1~m和m+1~m+w。
需要产生各学校的成绩单和团体总分报表。
为了实现这个程序,调用了多个子函数。
save函数实现对数据的存储,getchar函数是从stdin流中读取字符,system函数是向系统发出一个DOS命令程序中用到的system(“pause”);
其功能是运行的时候就可以出现:
“请按任意键继续”,由于在这个从程序中的下一条命令是返回主菜单界面若不加一条命令得话,就会使显示的结果一闪而到主菜单界面就会看不清楚。
程序中用到的system(“cls”),其功能是清屏。
malloc函数的功能是内存分配如:
g1=(ALLitems*)malloc(sizeof(ALLitems))
g2=(ALLNode*)malloc(sizeof(ALLNode));
;
就是给g1和g2指针分配内存地址空间大小。
函数fclose的功能是关闭数据流,如程序中用到的fclose(fp2)就是将fp2文件的数据流关闭,用在本程序的save函数中,当执行funct1输入信息保存后关闭当前信息流。
程序中自定义的funct1-8的功能分别是:
funct1():
输入各个项目成绩并存储文件
funct2():
统计各学校总分
funct3():
按学校编号排序输出
funct4():
按学校总分排序输出
funct5():
按男团体总分排序输出
funct6():
按女团体总分排序输出
funct7():
按学校编号查询学校某个项目情况
funct8():
按项目编号查询取得名次的学校
funct0():
退出
最后是主函数main()它是所有程序运行的入口。
目录:
1.需求分析:
4
功能要求:
性能需求:
2.概要设计:
1.存储结构设计:
2.流程图设计:
6
3.详细设计:
10
4.菜单窗口:
19
1.主菜单窗口19
2.输入各个项目成绩并存储文件19
3.统计各学校总分22
4.按学校编号排序输出23
5.按学校总分排序输出23
6.按男团体总分排序输出24
7.按女团体总分排序输出24
8.按学校编号查询学校某个项目情况25
9.按项目编号查询取得名次的学校25
10退出25
5.课程设计总结与体会:
26
6.致谢:
任务:
参加运动会有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.可以按学校编号查询学校某个项目的情况;
可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
主菜单
1
2
3
4
5
6
7
8
输入各个项目成绩并存储文件
统计各学校总分
按学校编号排序输出
按学校总分排序输出
按男团体总分排序输出
按女团体总分排序输出
按学校编号查询学校某个项目情况
按项目编号查询取得名次的学校
退出
1输入各个项目成绩并存储文件
输入男子项目总数m
输入女子项目总数w
输入参加运动会的学校总数n
男子项目
女子项目
输入项目:
0返回主菜单界面
输入项目编号(如1)
……
输入项目编号(如m)
输入项目编号(如m+1)
输入项目编号(如m+n)
选择运动会项目1.前三名2.前五名
输入第五名(或第三名):
学校(编号为:
):
输入第一名学校(编号为:
选择运动会项目m.前三名2.前五名
选择运动会项目(m+1.)前三名2.前五名
2.统计各学校的总分
显示:
各学校的总分
退出:
按enter键
3.按学校编号排序输出
输入学校编号
退出(返回菜单主界面):
按enter
显示按学校排序输出结果
返回到主界面
4.按学校总分排序输出
显示按学校总分排序结果
5.按男团体总分排序输出
显示按学校编号排序结果
6.按女团体总分排序输出
显示按女团体总分排序结果
7.按学校编号查询学校某个项目情况
输入要查询的学校编号
输入要查询的项目编号
显示要查询学校的某个项目的获奖情况
8.按项目编号查询取得名次的学校(前三名或前五名)
显示某个项目编号的学校名次(前三或前五)
0.退出
按任意键可以推出
Main()函数流程图
Funct1()函数流程图
Save()函数流程图Funct2()函数流程图funct3()函数流程图funct4()函数流程图
Funct5()函数流程图Funct6()函数流程图funct7()函数流程图funct8()函数流程图
#include<
stdio.h>
stdlib.h>
string.h>
io.h>
//#include<
conio.h>
/*屏幕操作函数*/
#defineMAX50
//#defineNULL0
typedefstructnode1{
intschool;
/*学校编号*/
intrecord;
/*项目成绩*/
structnode1*next;
/*链域*/
}Schools;
typedefstruct{
intitem;
/*项目编号*/
Schools*firstschool;
/*链域指向链表中第一个结点*/
}ITEM;
intz;
/*项目总数*/
ITEMa[MAX];
}ALLitems;
typedefstructnode2{
/*该学校获奖的项目*/
structnode2*next;
}Items;
intscore;
/*学校总分*/
intboys;
/*男团体总分*/
intgirls;
/*女团体总分*/
Items*firstitem;
/*链域指向链表中第一个获奖项目的结点*/
}SCHNode;
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);
//……添加的
printf("
\n电子信息工程系08电子信息工程2班—运动会分数统计系统"
);
\n(王晓楠)\n\n"
\n******输入各个项目信息******\n\n"
输入男子项目总数m:
"
scanf("
%d"
&
m);
if(m<
0||m>
20)
{printf("
输入有误,m是20以内的整数,请重新输入:
}
输入女子项目总数w:
w);
if(w<
0||w>
输入有误,w是20以内的整数,请重新输入:
输入参加运动会的学校总数n:
g2->
n);
if(g2->
n<
0||g2->
n>
输入有误,n是20以内的整数,请重新输入:
g1->
z=m+w;
则项目编号为男