C语言课程设计----运动会分数统计系统源代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

源代码:#includestdio.h#includemath.h#includeconio.h#includeprocess.h#definen2//学校数目#definem1//男子项目数目#definew1//女子项目数目#definenull0typedefstruct{intitemnum;//项目编号inttop;//取名次的数目intrange[5];//名次intmark[5];//分数}itemnode;//定义项目结点的类型typedefstruct{intschoolnum;//学校编号intscore;//学校总分intmscore;//男团体总分intwscore;//女团体总分itemnodec[m+w];//项目数组}headnode;//定义头结点类型headnodeh[n];//定义一个头结点数组voidinputinformation()//输入信息,建立系统{inti,j,k,s;for(i=0;in;i++){h[i].score=0;h[i].mscore=0;h[i].wscore=0;}//初始化头结点for(i=0;in;i++){printf(*****学校编号:);scanf(%d,&h[i].schoolnum);//输入头结点信息for(j=0;jm+w;j++){printf(*****项目编号:);scanf(%d,&h[i].c[j].itemnum);printf(*****取前3名or前5名:);scanf(%d,&h[i].c[j].top);printf(*****获得几个名次:);scanf(%d,&k);//输入项目信息for(s=0;s5;s++)h[i].c[j].range[s]=0,h[i].c[j].mark[s]=0;//初始化排名和分数for(s=0;sk;s++){printf(*****名次:);scanf(%d,&h[i].c[j].range[s]);//输入所获名次信息if(h[i].c[j].top==3)switch(h[i].c[j].range[s]){case0:h[i].c[j].mark[s]=0;break;case1:h[i].c[j].mark[s]=5;break;case2:h[i].c[j].mark[s]=3;break;case3:h[i].c[j].mark[s]=2;break;}elseswitch(h[i].c[j].range[s]){case0:h[i].c[j].mark[s]=0;break;case1:h[i].c[j].mark[s]=7;break;case2:h[i].c[j].mark[s]=5;break;case3:h[i].c[j].mark[s]=3;break;case4:h[i].c[j].mark[s]=2;break;case5:h[i].c[j].mark[s]=1;break;}h[i].score=h[i].score+h[i].c[j].mark[s];//按取前三名还是取前五名分别记分if(j=m-1)h[i].mscore=h[i].mscore+h[i].c[j].mark[s];//是男子项目则记到男子分数里面去elseh[i].wscore=h[i].wscore+h[i].c[j].mark[s];//是女子项目则记到女子项目里面去}printf(\n);}}}voidoutput()//输出函数{intchoice,i,j,k;intremember[n];intsign;do{printf(*******************1.按学校编号输出.*******************\n);printf(*******************2.按学校总分输出.*******************\n);printf(*******************3.按男团总分输出.*******************\n);printf(*******************4.按女团总分输出.*******************\n);printf(\n\n*******************请选择编号*************************\n\n:);scanf(%d,&choice);switch(choice){case1:for(i=0;in;i++){printf(\n\n*****学校编号:%d\n,h[i].schoolnum);printf(*****学校总分:%d\n,h[i].score);printf(*****男团总分:%d\n,h[i].mscore);printf(*****女团总分:%d\n\n\n,h[i].wscore);}//按编号顺序输出break;case2:for(i=0;in;i++)remember[i]=i;for(i=0;in;i++){for(j=i+1;jn;j++)if(h[remember[i]].scoreh[j].score)k=remember[i];remember[i]=remember[j],remember[j]=k;}//用冒泡排序方法,用辅助数组记住头结点下标for(i=0;in;i++){printf(\n\n*****学校编号:%d\n,h[remember[i]].schoolnum);printf(*****学校总分:%d\n,h[remember[i]].score);printf(*****男团总分:%d\n,h[remember[i]].mscore);printf(*****女团总分:%d\n\n\n,h[remember[i]].wscore);//按所记下标顺序输出}//按学校总分输出break;case3:for(i=0;in;i++)remember[i]=i;for(i=0;in;i++){for(j=i+1;jn;j++)if(h[remember[i]].mscoreh[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;in;i++){printf(\n\n*****学校编号:%d\n,h[remember[i]].schoolnum);printf(*****学校总分:%d\n,h[remember[i]].score);printf(*****男团总分:%d\n,h[remember[i]].mscore);printf(*****女团总分:%d\n\n\n,h[remember[i]].wscore);}//按男团总分输出break;case4:for(i=0;in;i++)remember[i]=i;for(i=0;in;i++){for(j=i+1;jn;j++)if(h[remember[i]].wscoreh[j].wscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;in;i++){printf(\n\n*****学校编号:%d\n,h[remember[i]].schoolnum);printf(*****学校总分:%d\n,h[remember[i]].score);printf(*****男团总分:%d\n,h[remember[i]].mscore);printf(*****女团总分:%d\n\n\n,h[remember[i]].wscore);}break;//按女团总分输出}printf(请选择2继续,0跳出\n);scanf(%d,&sign);}while(sign==2);//循环执行输出语句}voidinquiry()//查询函数{intchoice;inti,j,k,s;printf(\n*****1:按学校编号查询\n);printf(\n*****2:按项目编号查询\n);printf(\n\n*****请选择查询方式:);//提供两种查询方式scanf(%d,&choice);switch(choice){case1:do{printf(要查询的学校编号:);scanf(%d,&i);if(in)printf(错误:这个学校没有参加此次运动会!\n\n\n);else{printf(要查询的项目编号:);scanf(%d,&j);if(jm+w||j==0)printf(此次运动会没有这个项目\n\n\n);//学校编号超出范围,则输出警告else{printf(这个项目取前%d名,该学校的成绩如下:\n,h[0].c[j-1].top);for(k=0;k5;k++)if(h[i-1].c[j-1].range[k]!=0)printf(名次:%d\n,h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩}}printf(请选择2继续,0跳出\n);scanf(%d,&s);printf(\n\n\n);}while(s==2);//循环执行输出语句break;case2:do{printf(要查询的项目编号:);scanf(%d,&s);if(sm+w||s==0)printf(此次运动会不包括这个项目.\n\n\n);//项目编号超出范围则输出警告else{printf(该项目取前%d名,取得名次的学校\n,h[0].c[s-1].top);for(i=0;in;i++)for(j=0;j5;j++)if(h[i].c[s-1].range[j]!=0)printf(学校编号:%d,名次:%d\n,h[i].schoolnum,h[i].c[s-1].range[j]);}//输出该项目取得名次学校的成绩printf(\n\n\n继续2,跳出0\n);scanf(%d,&i);printf(\n\n\n);}while(i==2);break;}}voidwritedata()//把数据存储在文件中{FILE*report;inti;if((report=fopen(sportsdata.txt,w))==null){printf(不能打开文件\n);exit(1);}for(i=0;in;i++)fwrite(&h[i],sizeof(headnode),1,report);fclose(report);}//按头结点块写入voidreaddata()//读出文件中数据的函数{FILE*report;inti,j,k,s;if((report=fopen(sportsdata.txt,r))==null){printf(filecannotbeopened\n);exit(1);}for(i=0;in;i++){printf(******学校编号:);fread(&k,sizeof(int),1,report);printf(%d\n,k);printf(******学校总分:);fread(&k,sizeof(int),1,report);printf(%d\n,k);printf(******男团总分:);fread(&k,sizeof(int),1,report);printf(%d\n,k);printf(******女团总分:);fread(&k,sizeof(int),1,report);printf(%d\n,k);printf(\n\n\n);getch();for(j=0;jm+w;j++){printf(******项目编号:);fread(&k,sizeof(int),1,report);printf(%d\n,k);printf(******所取名次数量:);fread(&k,sizeof(int),1,report);printf(%d\n,k);

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功