数据结构课程设计之运动会分数统计.docx

上传人:b****5 文档编号:5847141 上传时间:2023-01-01 格式:DOCX 页数:8 大小:16.88KB
下载 相关 举报
数据结构课程设计之运动会分数统计.docx_第1页
第1页 / 共8页
数据结构课程设计之运动会分数统计.docx_第2页
第2页 / 共8页
数据结构课程设计之运动会分数统计.docx_第3页
第3页 / 共8页
数据结构课程设计之运动会分数统计.docx_第4页
第4页 / 共8页
数据结构课程设计之运动会分数统计.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数据结构课程设计之运动会分数统计.docx

《数据结构课程设计之运动会分数统计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计之运动会分数统计.docx(8页珍藏版)》请在冰豆网上搜索。

数据结构课程设计之运动会分数统计.docx

数据结构课程设计之运动会分数统计

《数据结构》课程设计指导书

课程设计之文章编辑

数据结构课程设计之运动会分数统计

2009-12-0315:

30:

54|分类:

默认分类|标签:

|字号大中小订阅

#include"stdio.h"

#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;

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**记录运动会成绩**\n(输入0标志结束)");

for(k=1;k<=g1->z;k++)/*对两个邻接表置初态*/

{g1->a[k].item=k;

g1->a[k].firstschool=NULL;

}

for(k=1;k<=g2->n;k++)

{g2->b[k].school=k;

g2->b[k].firstitem=NULL;

g2->b[k].score=g2->b[k].boys=g2->b[k].girls=NULL;

}

g2->b[0].score=g2->b[0].boys=g2->b[0].girls=NULL;

while(i!

=0)

{printf("\n项目:

");

scanf("%d",&i);

if(i!

=0)

{printf("1.前三名2.前五名\n");

printf("请选择:

");

scanf("%d",&j);

if(j!

=1&&j!

=2)

{printf("输入有误,请重新选择:

");

scanf("%d",&j);

}

if(j==1)/*该项目只有前三名时执行此语句*/

{h=3;

do{printf("第%d名:

学校(学校编号为数字)",h);

scanf("%d",&x);

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=p1->record=3;

if(h==1)p2->record=p1->record=5;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->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->record;/*累计男团体总分*/

elseg2->b[x].girls=g2->b[x].girls+p2->record;/*累计女团体总分*/

h--;

}while(x!

=0&&h!

=0);

}

if(j==2)/*该项目有前五名时执行此语句*/

{h=5;

do{printf("第%d名:

学校(学校编号为数字)",h);

scanf("%d",&x);

p1=(Schools*)malloc(sizeof(Schools));

p1->school=x;

p2=(Items*)malloc(sizeof(Items));

p2->item=i;

if(h==5)p2->record=p1->record=1;

if(h==4)p2->record=p1->record=2;

if(h==3)p2->record=p1->record=3;

if(h==2)p2->record=p1->record=5;

if(h==1)p2->record=p1->record=7;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->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->record;/*累计男团体总分*/

elseg2->b[x].girls=g2->b[x].girls+p2->record;/*累计女团体总分*/

h--;

}while(x!

=0&&h!

=0);

}

}

}

}

voidsave()/*存储数据文件*/

{FILE*fp1,*fp2;

if((fp1=fopen("sports1","wb"))==NULL)

{printf("cannotopenfile.\n");

return;

}

if(fwrite(g1,sizeof(ALLitems),1,fp1)!

=1)

printf("filewriteerror.\n");

fclose(fp1);

if((fp2=fopen("sports2","wb"))==NULL)

{printf("cannotopenfile.\n");

return;

}

if(fwrite(g2,sizeof(ALLNode),1,fp2)!

=1)

printf("filewriteerror.\n");

fclose(fp2);

}

voidfunct2(ALLNode*g2)/*输出各学校总分*/

{intk;

printf("\n\n***输出各学校总分***\n");

printf("学校编号\t总分\n");

for(k=1;k<=g2->n;k++)

printf("%d\t\t%d\n",k,g2->b[k].score);

printf("\n");

printf("按任意键返回主菜单......");

getch();

}

voidfunct3(ALLNode*g2)/*按学校编号排序输出*/

{intk;

Items*p2;

printf("\n\n***按学校编号排序输出***\n");

printf("学校编号\t\t\t获奖情况\n");

for(k=1;k<=g2->n;k++)

{printf("%d\t",k);

p2=g2->b[k].firstitem;

while(p2!

=NULL)

{printf("项目%d:

得%d分",p2->item,p2->record);

p2=p2->next;

}

printf("\n");

}

printf("\n");

printf("按任意键返回主菜单......");

getch();

}

voidfunct4(ALLNode*g2)/*按学校总分排序输出*/

{inti,j,k;

printf("\n\n***按学校总分排序输出***\n");

printf("学校编号\t总分\n");

for(i=2;i<=g2->n;i++)

{g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].scoreb[j].score&&j>0)

{g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t%d\n",g2->b[k].school,g2->b[k].score);

printf("按任意键返回主菜单......");

getch();

}

voidfunct5(ALLNode*g2)/*按男团体总分排序输出*/

{inti,j,k;

printf("\n***按男团体总分排序输出***\n");

printf("学校编号\t男团体总分\n");

for(i=2;i<=g2->n;i++)

{g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].boysb[j].boys&&j>0)

{g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t%d\n",g2->b[k].school,g2->b[k].boys);

printf("按任意键返回主菜单......");

getch();

}

voidfunct6(ALLNode*g2)/*按女团体总分排序输出*/

{inti,j,k;

printf("\n***按女团体总分排序输出***\n");

printf("学校编号\t女团体总分\n");

for(i=2;i<=g2->n;i++)

{g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].girlsb[j].girls&&j>0)

{g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t%d\n",g2->b[k].school,g2->b[k].girls);

printf("按任意键返回主菜单......");

getch();

}

voidfunct7(ALLNode*g2)/*按学校编号查询学校某个项目情况*/

{inti,j,k;

Items*p2;

printf("\n***按学校编号查询学校某个项目情况***\n");

printf("输入要查询的学校编号:

");

scanf("%d",&i);

printf("输入要查询的项目编号:

");

scanf("%d",&j);

p2=g2->b[i].firstitem;

while(p2!

=NULL)

{if(p2->item==j)

printf("学校编号:

%d\t项目%d:

得%d分\n",i,p2->item,p2->record);

p2=p2->next;

}

printf("\n");

printf("按任意键返回主菜单......");

getch();

}

voidfunct8(ALLitems*g1)/*按项目编号查询取得名次的学校*/

{inti,k;

Schools*p1;

printf("\n***按项目编号查询取得名次的学校***\n");

printf("输入要查询的项目编号:

");

scanf("%d",&i);

printf("项目编号\t\t\t取得名次的学校\n");

printf("%d\t",i);

p1=g1->a[i].firstschool;

while(p1!

=NULL)

{printf("学校%d:

得%d分",p1->school,p1->record);

p1=p1->next;

}

printf("\n\n");

printf("按任意键返回主菜单......");

getch();

}

voidmain()

{intt;

ALLitems*g1;

ALLNode*g2;

/*清屏*/

for(;;)

{printf("\t\t运动会分数统计\n");

printf("\t\t***********************\n");

printf("\t\t\n");

printf("\t\t***********************\n");

printf("\t\t*1.输入各个项目成绩并存储文件*\n");

printf("\t\t*2.统计各学校总分*\n");

printf("\t\t*3.按学校编号排序输出*\n");

printf("\t\t*4.按学校总分排序输出*\n");

printf("\t\t*5.按男团体总分排序输出*\n");

printf("\t\t*6.按女团体总分排序输出*\n");

printf("\t\t*7.按学校编号查询学校某个项目情况*\n");

printf("\t\t*8.按项目编号查询取得名次的学校*\n");

printf("\t\t*0.退出*\n");

printf("\t\t***********************\n");

printf("\t\t请选择(0-8):

");

loop:

scanf("%d",&t);

switch(t)

{case1:

funct1(g1,g2);save();break;

case2:

funct2(g2);break;

case3:

funct3(g2);break;

case4:

funct4(g2);break;

case5:

funct5(g2);break;

case6:

funct6(g2);break;

case7:

funct7(g2);break;

case8:

funct8(g1);break;

case0:

exit(0);

default:

{printf("输入有误,请重新选择:

");

gotoloop;}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1