1、1 运动会分数统计 根据课程设计任务书要求,本系统开发主要完成以下功能和性能。 任务:参加运动会有 n个学校,学校编号为 1n。比赛分成 m 个男子项 目,和 w 个女子项目。项目编号为男子 1m,女子 m+1m+w。不同的项 目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的 积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。 (mm+w|j=0 k=0 kn时输出错误:这个学校没有参加此次运动会! 否则,输入项目编号, 如果 jm+w|j=0,输出此次运动会没有这个项目。否则,使用 for 循环输出相 关数据,从而实现查询功能。 4.5 调用统计结果调用统
2、计结果模块模块 调用统计模块从文件中读取数据输出,流程图如图 5 所示。 开始 FILE *report; int i,j,k,s; (report=fopen(“sports data.txt“,“r“)=null file can not be opened exit(1); i=0 im+w|j=0) printf(“此次运动会没有这个项目nnn“); /学校编号超出范围,则输出警告 else printf(“这个项目取前 %d 名,该学校的成绩如下:n“, h0.cj-1.top); for(k=0;km+w|s=0) printf(“此次运动会不包括这个项目.nnn“); /项目编号
3、超出范围则输出警告 else printf(“该项目取前 %d 名,取得名次的学校n“,h0.cs-1.top); for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(“学校编号:%d,名次:%dn“,hi.schoolnum, hi.cs-1.rangej); /输出该项目取得名次学校的成绩 printf(“nnn 继续 2,跳出 0n“); scanf(“%d“, printf(“nnn“); while(i=2); break; void writedata() /把数据存储在文件中 FILE *report; int
4、i; if(report=fopen(“sportsdata.txt“,“w“)=null) printf(“不能打开文件n“); exit(1); for(i=0;in;i+) fwrite( fclose(report); /按头结点块写入 void readdata() /读出文件中数据的函数 FILE *report; int i,j,k,s; if(report=fopen(“sportsdata.txt“,“r“)=null) printf(“file can not be openedn“); exit(1); for(i=0;in;i+) printf(“*学校编号:“); f
5、read( printf(“%dn“,k); printf(“*学校总分:“); fread( printf(“%dn“,k); printf(“*男团总分:“); fread( printf(“%dn“,k); printf(“*女团总分:“); fread( printf(“%dn“,k); printf(“nnn“); getch(); for(j=0;jm+w;j+) printf(“*项目编号:“); fread( printf(“%dn“,k); printf(“*所取名次数量:“); fread( printf(“%dn“,k); for(s=0;s5;s+) fread( if(k!=0) printf(“*名次:“), printf(“%dn“,k); for(s=0;s5;s+) fread( if(k!=0) printf(“*分数:“), printf(“%dn“,k); printf(“nnn“); getch(); fclose(report); /关闭文件 /按照读一个数据就输出一个数据的方式显示数据内容 void main() int choice; printf(“=