学士学位论文数据结构课程设计运动会Word格式文档下载.docx
《学士学位论文数据结构课程设计运动会Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学士学位论文数据结构课程设计运动会Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
10以内的整数(如果做得更好可以输入学校的名称和运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;
2、整体非法数据;
3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
1.存储结构设计:
主菜单
1
2
3
4
5
6
7
8
输入各个项目成绩并存储文件
统计各学校总分
按学校编号排序输出
按学校总分排序输出
按男团体总分排序输出
按女团体总分排序输出
按学校编号查询学校某个项目情况
按项目编号查询取得名次的学校
退出
1输入各个项目成绩并存储文件
输入男子项目总数m
输入女子项目总数w
输入参加运动会的学校总数n
男子项目
女子项目
输入项目:
0返回主菜单界面
输入项目编号(如1)
输入项目编号(如m)
输入项目编号(如m+1)
输入项目编号(如m+n)
2.统计各学校的总分
显示:
各学校的总分
退出:
按enter键
3.按学校编号排序输出
输入学校编号
退出(返回菜单主界面):
按enter
显示按学校排序输出结果
返回到主界面
4.按学校总分排序输出
显示按学校总分排序结果
5.按男团体总分排序输出
显示按学校编号排序结果
6.按女团体总分排序输出
显示按女团体总分排序结果
7.按学校编号查询学校某个项目情况
输入要查询的学校编号
输入要查询的项目编号
显示要查询学校的某个项目的获奖情况
8.按项目编号查询取得名次的学校(前三名或前五名)
显示某个项目编号的学校名次(前三或前五)
0.退出
按任意键可以推出
2.流程程图设计:
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,k,m,w,h,x;
p1=(Schools*)malloc(sizeof(Schools));
p2=(Items*)malloc(sizeof(Items));
if(!
p1||!
p2)
exit
(1);
printf("
\n"
);
\n\n\n"
\n******输入各个项目信息******\n\n"
输入男子项目总数m:
"
scanf("
%d"
&
m);
while(m<
0||m>
10)
{printf("
输入有误,m是10以内的整数,请重新输入:
}
输入女子项目总数w:
w);
while(w<
0||w>
输入有误,w是10以内的整数,请重新输入:
输入参加运动会的学校总数n:
g2->
n);
while(g2->
n<
0||g2->
n>
输入有误,n是10以内的整数,请重新输入:
}
g1->
z=m+w;
则项目编号为男子1-%d,女子%d-%d"
m,m+1,g1->
z);
\n\n****记录运动会成绩****"
\n\n(输入0标志结束)\n"
for(k=1;
k<
=g1->
z;
k++)/*对两个邻接表置初态*/
{g1->
a[k].item=k;
a[k].firstschool=NULL;
=g2->
n;
k++)
{g2->
b[k].school=k;
g2->
b[k].firstitem=0;
b[k].score=0;
b[k].boys=0;
b[k].girls=0;
b[0].score=0;
b[0].boys=0;
b[0].girls=0;
while(i!
=0)
\n项目:
i);
while(i<
0||i>
m+w)
{printf("
输入有误,无此项目编号,请重新输入数字:
}
{
if(i!
{h=3;
do{printf("
第%d名:
学校(学校编号为数字)"
h);
x);
while(x<
0||x>
n)
输入有误,无此学校编号,请重新输入数字:
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=3;
if(h==1)p2->
record=5;
next=g1->
a[i].firstschool;
a[i].firstschool=p1;
next=g2->
b[x].firstitem;
b[x].firstitem=p2;
g2->
b[x].score=g2->
b[x].score+p2->
record;
累计总分
if(i<
=m)g2->
b[x].boys=g2->
b[x].boys+p2->
累计男团体总分
elseg2->
b[x].girls=g2->
b[x].girls+p2->
累计女团体总分
h--;
}while(x!
=0&
&
h!
=0);
voidsave()存储数据文件
{FILE*fp1,*fp2;
fp1=(FILE*)malloc(sizeof(FILE));
fp2=(FILE*)malloc(sizeof(FILE));
if((fp1=fopen("
sports1"
"
wb"
))==NULL)
cannotopenfile.\n"
return;
}
if(fwrite(g1,sizeof(ALLitems),1,fp1)!
=1)
filewriteerror.\n"
fclose(fp1);
if((fp2=fopen("
sports2"
if(fwrite(g2,sizeof(ALLNode),1,fp2)!
=1)
fclose(fp2);
voidfunct2(ALLNode*g2)输出各学校总分
{intk;
学校编号\t总分\n"
%d\t\t\t%d\n"
k,g2->
b[k].score);
\n"
system("
pause"
按任意键返回主菜单......"
getchar();
voidfunct3(ALLNode*g2)按学校编号排序输出
{
intk;
\n\n"
\n\n******按学校编号排序输出******\n"
学校编号\t\t\t获奖情况\n"
\t\t\t\t\t\t%d\t"
k);
p2=g2->
b[k].firstitem;
while(p2!
=NULL)
项目%d:
得%d分"
p2->
item,p2->
record);
p2=p2->
next;
按任意键返回主菜单......"
voidfunct4(ALLNode*g2)按学校总分排序输出
{inti,j,k;
Items*p2;
\n\n******按学校总分排序输出******\n"
学校编号\t\t总分\n"
按1继续\n"
k);
//printf("
输入要查询的项目编号:
for(i=2;
i<
i++)
{
%d\t"
%d\t\t%d\n"
g2->
b[k].school,g2->
b[0].score=g2->
b[i].score;
b[0].boys=g2->
b[i].boys;
b[0].girls=g2->
b[i].girls;
b[0].school=g2->
b[i].school;
j=i-1;
b[0].score<
b[j].score&
j>
0)
b[j+1].score=g2->
b[j].score;
b[j+1].boys=g2->
b[j].boys;
b[j+1].girls=g2->
b[j].girls;
b[j+1].school=g2->
b[j].school;
j--;
b[0].score;
b[0].boys;
b[0].girls;
b[0].school;
voidfunct5(ALLNode*g2)按男团体总分排序输出
\n\n******按男团体总分排序输出******\n"
学校编号\t\t男团体总分\n"
printf("
输入要查询的学校编号:
%d\t\t%d\n"
b[k].boys);
b[0].boys<
b[j].boys&
//暂停等待
voidfunct6(ALLNode*g2)按女团体总分排序输出
\n\n******按女团体总分排序输出******\n"
学校编号\t\t女团体总分\n"
b[k].girls);
b[0].girls<
b[j].girls&
{g2->
voidfunct7(ALLNode*g2)按学校编号查询学校某个项目情况
{inti,j;
\n******按学校编号查询学校某个项目情况******\n"
输入要查询的学校编号:
输入要查询的项目编号:
j);
b[i].firstitem;
{if(p2->
item==j)
学校编号:
%d\t项目%d:
得%d分\n"
i,p2->
voidfunct8(ALLitems*g1)按项目编号查询取得名次的学校
{inti;
Schools*p1;
\n***按项目编号查询取得名次的学校***\n"
项目编号\t\t\t取得名次的学校\n"
i);
p1=g1->
while(p1!
学校%d:
p1->
school,p1->
p1=p1->
\n\n"
syst