1、用C编写的运动会统计系统/*输入各项目的前三名或前五名*/#include#include#define N 5/*学校参加数*/#define M 5/*男子项目数*/#define W 5/*女子项目数*/ typedef struct char schoolno10;/*学校编号*/ char schoolname20;/*学校名称*/ int score; /*各学校所得的分数*/ school;typedef struct item /*定义项目结构体*/ school schN; char itemno10;/*项目编号*/ item; item itemsetM+W;/*初始化项
2、目数组*/ /*凡是输入以后都从文件中读入*/void init_itemset(item itemset) int i,j; for(i=0;iM+W;i+) printf(输入第%d个项目n,i+1); scanf(%s,itemseti.itemno); for(j=0;jN;j+) printf(输入学校编号和名称n); scanf(%s,itemseti.schj.schoolno); scanf(%s,itemseti.schj.schoolname); itemseti.schj.score=0; void createDataBase(item itemset)/*写文件*/
3、FILE *fp; int i,j; for(i=0;iM+W;i+) for(j=0;jN;j+) scanf(%s,itemseti.schj.schoolno); scanf(%s,itemseti.schj.schoolname); scanf(%d,&itemseti.schj.score); scanf(%s,itemseti.itemno); if(fp=fopen(wenjian5,wb)=NULL) printf(cannot open filen); return; for(i=0;iM+W;i+) if(fwrite(&itemseti,sizeof(struct ite
4、m),1,fp)!=1) printf(file write error); fclose(fp); void readDataBase()/*读文件*/ int i,j; FILE *fp; if(fp=fopen(wenjian5,rb)=NULL) printf(cannot open filen); return; /*for(i=0;iM+W;i+) if(fread(&itemseti,sizeof(struct item),1,fp)!=1) if(feof(fp)fclose(fp);return; printf(file read error); */ for(i=0;iM+
5、W;i+) fread(&itemseti,sizeof(struct item),1,fp); fclose(fp); for(i=0;iM+W;i+) for(j=0;jN;j+) printf(%s,%s,%dn,itemseti.schj.schoolno,itemseti.schj.schoolname,itemseti.schj.score); printf(,%sn,itemseti.itemno); getch(); /*用以查找与输入项目号,学校相应的信息,并修改相应学校在相应项目所得分等其他信息*/void search(item itemset,char itemno,c
6、har schoolno,char schoolname,int score) int i,j,k; for(i=0;iN;i+) if(strcmp(itemset0.schi.schoolno,schoolno)=0) /*先找到学校编号*/ break; for(j=0;jN) printf( 输入的学校编号出错n); if(iM+W) printf( 输入的项目编号出错n); void inputData(item itemset)/*用i决定输入的是前三名还是前五名*/ char schoolno10; char schoolname20; int score; int i,j; i
7、nt k; int n; int m=1; char itemno10; printf( 输入第%d组数据n,m); printf( 请输入项目号:); scanf(%s,itemno); while(strcmp(itemno,-1)/*以项目号为-1作为输入的结束标志*/ printf( 请输入3或5代表输入前三名或前五名:); scanf(%d,&k); if(k=3)/*如果i等于0,就代表输入的是前三名*/ printf( 第一名加5分n); printf( 第二名加3分n); printf( 第三名加2分n); printf( 请输入学校编号:); scanf(%s,schooln
8、o); printf( 请输入学校名称:); scanf(%s,schoolname); printf( 请输入所得分数:); scanf(%d,&score); if(score=5)|(score=3)|(score=2) m+; search(itemset,itemno,schoolno,schoolname,score); else printf( 输入的分数有误n); if(k=5)/*如果i等于5,就代表输入的是前五名*/ printf( 第一名加7分n); printf( 第二名加5分n); printf( 第三名加3分n); printf( 第四名加2分n); printf(
9、 第五名加1分n); printf( 请输入学校编号:); scanf(%s,schoolno); printf( 请输入学校名称:); scanf(%s,schoolname); printf( 请输入所得分数:); scanf(%d,&score); if(score=7)|(score=5)|(score=3)|(score=2)|(score=1) m+; search(itemset,itemno,schoolno,schoolname,score); else printf( 输入的分数有误n); printf( 请输入项目号:); scanf(%s,itemno); if(str
10、cmp(itemno,-1) system(cls); printf(n); printf( =n); printf( *欢迎进入数据输入系统*n); printf( =n); printf(nn); printf( 输入第%d组数据n,m); printf( 项目号%s:n,itemno); printf(nn); /*求各学校的总分,记住要把结果写到文件中去*/void schoolSumScore(item itemset,int schScoreN)/*schScoreN要在主函数里初始化*/ int i,j; for(i=0;iN;i+) for(j=0;jM+W;j+) schSc
11、orei+=itemsetj.schi.score; printf( 学校编号=学校名称=所得总分n); for(i=0;iN;i+) printf( %s %s %dn,itemseti.schi.schoolno,itemseti.schi.schoolname,schScorei); /*实现排序的函数*/void paiXu(int a,item item)int i,j,t;/ item itemM+W; school temp; /for(i=0;iM+W;i+) /itemi=itemseti; for(j=0;jN;j+) /*冒泡排序*/ for(i=0;iN-j;i+) i
12、f(aiai+1) t=ai; temp=item0.schi; ai=ai+1; item0.schi=item0.schi+1; ai+1=t; item0.schi+1=temp; printf( 学校编号=学校名称=所得分n); for(i=0;iN;i+)/*输出排序后的结果,并带有学校编号和学校名称*/ printf( %s %s %d,item0.schi.schoolno,item0.schi.schoolname,ai); printf(n); /*计算男团体总分,并排序*/void maleSumScore(item itemset) int i,j; int maleSc
13、oreN; item maleItemM; for(i=0;iM;i+) maleItemi=itemseti; for(i=0;iN;i+) maleScorei=0; for(i=0;iN;i+) for(j=0;jM;j+) maleScorei+=maleItemj.schi.score; /printf(%d ,maleScorei); paiXu(maleScore,maleItem);/*调用排序函数*/ /*计算女团体总分,并排序*/ void femaleSumScore(item itemset) int i,j; item femaleItemW; int femaleS
14、coreN; for(i=M;iM+W;i+) femaleItemi-M=itemseti; for(i=0;iN;i+) femaleScorei=0; for(i=0;iN;i+) for(j=M;jM+W;j+) femaleScorei+=femaleItemj-M.schi.score; / printf(%d ,femaleScorei); paiXu(femaleScore,femaleItem);/*调用排序函数*/ /*按学校编号查询学校某个项目的情况*/void searchItemSchool(item itemset,char schoolno,char itemno
15、) int i,j,k; for(i=0;iN;i+) if(strcmp(itemset0.schi.schoolno,schoolno)=0) /*先找到学校编号*/ break; for(j=0;jM+W;j+) if(strcmp(itemsetj.itemno,itemno)=0) break; printf( 项目编号 学校编号 学校名称 分数n); printf( %s %s %s %dn,itemsetj.itemno,itemsetj.schi.schoolno,itemsetj.schi.schoolname,itemsetj.schi.score);/*从文件中读出第i个
16、学校,第j个项目的总分情况,男女团体总分情况*/ /*按项目查询该项目的前五名或前三名*/void topSchoolByItem(item itemset,char itemno,int q)/*用i来确定是输出前五名还是前三名*/ int i,j,k,n; item itemM+W; school schTemp; for(i=0;iM+W;i+) itemi=itemseti; for(i=0;iM+W;i+) if(strcmp(itemseti.itemno,itemno)=0) break; for(j=0;jN;j+) for(k=0;kN-j;k+) if(itemi.schk
17、.scoreitemi.schk+1.score) schTemp=itemi.schi; itemi.schi=itemi.schi+1; itemi.schi+1=schTemp; printf( 项目编号 名次 学校编号 学校名称 分数n); if(q=3)/*用q=3表示输出前三名*/ for(n=0;n3;n+) printf( %s %d %s %s %d,itemi.itemno,n+1,itemi.schn.schoolno,itemi.sch n.schoolname,itemi.schn.score); printf(n); if(q=5)/*用q=5表示输出前五名*/ f
18、or(n=0;n5;n+) printf( %s %d %s %s %d,itemi.itemno,n+1,itemi.schn.schoolno,itemi.schn.schoolname,itemi.schn.score); printf(n); void welcomeJieMian() system(cls); printf(nnnn); printf( =n); printf( *欢迎进入运动会统计系统*n); printf( =n); printf(nn); printf( 1 输入数据 n); printf( 2 排序 n); printf( 3 查询 n); printf( -
19、1 退出运动会统计系统 n); printf( 请选择您所需要的功能: ); printf(nnn); printf( =n); printf( *欢迎进入运动会统计系统*n); printf( =n); void paixuJieMian() system(cls); printf(n); printf( =n); printf( *欢迎进入排序系统*n); printf( =n); printf(nn); printf( 1 得到按各学校总分排序的结果 n); printf( 2 得到按各学校男团体总分排序的结果 n); printf( 3 得到按各学校女团体总分排序的结果 n); pri
20、ntf( -1 退出排序系统 n); printf( 请选择您所需要的功能: ); printf(nnn); printf( =n); printf( *欢迎进入排序系统*n); printf( =n);void chaXunJieMian() system(cls); printf(nnnn); printf( =n); printf( *欢迎进入查询系统*n); printf( =n); printf(nn); printf( 1 按学校编号查询学校某个项目的情况 n); printf( 2 按项目查询该项目的前五名或前三名 n); printf( -1 退出查询系统 n); printf
21、( 请选择您所需要的功能: ); printf(nnn); printf( =n); printf( *欢迎进入查询系统*n); printf( =n);void xuanZeJieMian() printf(nnnn); printf( =n); printf( *欢迎进入运动会统计系统*n); printf( =n); printf(nnn); printf( 1 管理员 n); printf( 2 非管理员 n); printf( -1 退出查询系统 n); printf( 请选择: n); printf(nnn); printf( =n); printf( *欢迎进入运动会统计系统*n
22、); printf( =n);void main() int choice,choice1,choice2,choice3;/选择界面 int q; int i; long key;/密码 int exitno;/控制界面跳转 char schoolno10; char itemno10; int schScoreN; / item itemsetM+W; /init_itemset(itemset); / createDataBase(itemset); readDataBase(); for(i=0;iN;i+) schScorei=0; welcomeJieMian();/进入主菜单界面
23、 scanf(%d,&choice);/ xuanZeJieMian(); /scanf(%d,choice3);/*while(choice3!=-1) if(choice3!=1&choice3!=2) system(cls); xuanZeJieMian(); printf( 功能选择错误n); printf( 请选择您所需要的功能:); scanf(%d,&choice3); switch(choice3)case 1:*/welcomeJieMian();/进入主菜单界面 scanf(%d,&choice); while(choice!=-1)/实现界面跳转 if(choice!=1&choice!=2&choice!=3) system(cls); welcomeJieMian(); printf( 功能选择错误n); printf( 请选择您所需要的功能:);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1