收藏 分销(赏)

数据结构课设-运动会分数统计源码.docx

上传人:仙人****88 文档编号:11257791 上传时间:2025-07-11 格式:DOCX 页数:12 大小:17.30KB 下载积分:10 金币
下载 相关 举报
数据结构课设-运动会分数统计源码.docx_第1页
第1页 / 共12页
数据结构课设-运动会分数统计源码.docx_第2页
第2页 / 共12页


点击查看更多>>
资源描述
#include<stdio.h> #include<string.h> #include<process.h> typedef struct School //学校 { int num; //学校编号 int sumscore; //学校总成绩 int score; //获奖项目成绩 int man; //男团总成绩 int woman; //女团总成绩 int n; //学校总数 char name[15]; //学校名称 }School11; typedef struct Item { int Inum[6]; //获奖项目编号 int Iscore[21][21]; //项目成绩 int Isum; //项目总数 }Item11; Item11 Item1[21]; School11 School1[21];; void Putscore() //输入成绩函数 { int m,w,k,b,j,h; printf("\n"); printf("\n *********请输入各项目信息 *********\n\n"); printf(" 输入学校总数:"); scanf("%d",&School1[0].n); while(School1[0].n<=0||School1[0].n>20) { printf(" 输入错误,请重新输入。\n"); printf(" 输入学校总数:"); scanf("%d",&School1[0].n); } printf(" 输入男子项目总数:"); scanf("%d",&m); while(m<=0||m>=20) { printf(" 输入错误,请重新输入。\n"); printf(" 输入男子项目总数:"); scanf("%d",&m); } printf(" 输入女子项目总数:"); scanf("%d",&w); while(w<=0||w>20) { printf(" 输入错误,请重新输入。\n"); printf(" 输入女子项目总数:"); scanf("%d",&w); } Item1[0].Isum=m+w; printf(" 男子项目编号为1至%d\n",m); printf(" 女子项目编号为%d至%d\n",m+1,m+w); for(k=1;k<=School1[0].n;k++) { printf(" 输入第%d个学校名称:",k); scanf("%s",&School1[k].name); School1[k].sumscore=0; School1[k].man=0; School1[k].woman=0; School1[k].num=k; } printf(" 输入项目编号,以-1作为结束:"); scanf("%d",&b); while(b!=EOF) //以-1为结束 { printf(" 前三名按3,前五名按5:"); scanf("%d",&j); while(j!=3&&j!=5) { printf(" 输入错误,请重新输入。\n"); printf(" 前三名按3,前五名按5:"); scanf("%d",&j); } if(j==3) { printf(" 输入获得第一名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=5; Item1[b].Inum[1]=h; School1[h].score=School1[h].score+5; if(b<=m) School1[h].man=School1[h].man+5; else School1[h].woman=School1[h].woman+5; printf(" 输入获得第二名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=3; Item1[b].Inum[2]=h; School1[h].score=School1[h].score+3; if(b<=m) School1[h].man=School1[h].man+3; else School1[h].woman=School1[h].woman+3; printf(" 输入获得第三名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=2; Item1[b].Inum[3]=h; School1[h].score=School1[h].score+2; if(b<=m) School1[h].man=School1[h].man+2; else School1[h].woman=School1[h].woman+2; } if(j==5) { printf(" 输入获得第一名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=7; Item1[b].Inum[1]=h; School1[h].score=School1[h].score+7; if(b<=m) School1[h].man=School1[h].man+7; else School1[h].woman=School1[h].woman+7; printf(" 输入获得第二名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=5; Item1[b].Inum[2]=h; School1[h].score=School1[h].score+5; if(b<=m) School1[h].man=School1[h].man+5; else School1[h].woman=School1[h].woman+5; printf(" 输入获得第三名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=3; Item1[b].Inum[3]=h; School1[h].score=School1[h].score+3; if(b<=m) School1[h].man=School1[h].man+3; else School1[h].woman=School1[h].woman+3; printf(" 输入获得第四名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=2; Item1[b].Inum[4]=h; School1[h].score=School1[h].score+2; if(b<=m) School1[h].man=School1[h].man+2; else School1[h].woman=School1[h].woman+2; printf(" 输入获得第五名的学校编号:"); scanf("%d",&h); Item1[0].Iscore[h][b]=1; Item1[b].Inum[5]=h; School1[h].score=School1[h].score+1; if(b<=m) School1[h].man=School1[h].man+1; else School1[h].woman=School1[h].woman+1; } printf(" 输入项目编号,以-1作为结束:"); scanf("%d",&b); } system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void save() //存储数据文件 { FILE *fp1,*fp2; int i,j; if((fp1=fopen("a1","wb"))==NULL) //打开文件 { printf("cannot open this file\n"); return; } for(i=0;i<20;i++) if(fwrite(&Item1[i],sizeof(struct Item),1,fp1)!=1) //写数据块 printf("file write error\n"); fclose(fp1); //关闭文件 if((fp2=fopen("a2","wb"))==NULL) //打开文件 { printf("cannot open this file\n"); return; } for(j=0;j<20;j++) if(fwrite(&School1[j],sizeof(struct School),1,fp2)!=1) //写数据块 printf("file write error\n"); fclose(fp2); //关闭文件 } void totalscore(School11 r[]) //统计各学校总分 { int k; printf("\n\n ****** 输出各学校总分 ******\n"); printf(" 学校编号 学校总分\n"); for(k=1;k<=r[0].n;k++) { School1[k].sumscore=School1[k].man+School1[k].woman; printf(" %d %d",School1[k].num,School1[k].sumscore); printf("\n"); } system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void schoolname(School11 School1[20]) //按名称排序 { int i,j; School11 t; for(i=1;i<School1[0].n;i++) { for(j=i+1;j<=School1[0].n;j++) if(strcmp(School1[i].name,School1[j].name)>0) { t=School1[i]; School1[i]=School1[j]; School1[j]=t; } } printf("\n ******按名称排列:******\n"); printf(" 学校编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=School1[0].n;i++) { printf(" %2d%8s%7d%8d%8d\n", School1[i].num,School1[i].name,School1[i].man+School1[i].woman,School1[i].man,School1[i].woman); } system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void schoolnum(School11 School1[20],Item11 Item1[20]) //按编号排序 { int i,j; School11 t; for(i=1;i<School1[0].n;i++) { for(j=i+1;j<=School1[0].n;j++) if(School1[i].num>School1[j].num) { t=School1[i]; School1[i]=School1[j]; School1[j]=t; } } printf("\n ******按编号排列:******\n"); printf(" 学校编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=School1[0].n;i++) { printf(" %2d%8s%7d%8d%8d\n",School1[i].num,School1[i].name,School1[i].man+School1[i].woman,School1[i].man,School1[i].woman); } system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void bubble1(School11 r[],int n) //总分冒泡法排序 { School11 a; int i,j,flag=1; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=1;j<=n-1;j++) if(r[j+1].man+r[j+1].woman<r[j].man+r[j].woman) { a=r[j]; r[j]=r[j+1]; r[j+1]=a; flag=1; } } } void maopao2(School11 r[],int n) //男子总分排序 {School11 a; int i,j,flag=1; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=1;j<=n-1;j++) if(r[j+1].man<r[j].man) { a=r[j]; r[j]=r[j+1]; r[j+1]=a; flag=1; } } } void maopao3(School11 r[],int n) //女子总分排序 {School11 a; int i,j,flag=1; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=1;j<=n-1;j++) if(r[j+1].woman<r[j].woman) { a=r[j]; r[j]=r[j+1]; r[j+1]=a; flag=1; } } } void zongfen(School11 r[],int n) //按总分排序输出 { int i; bubble1(r, n); //执行冒泡法排序1 printf(" 按学校总分排序结果为:\n"); printf(" ********************************************************\n"); printf(" * 学校名称 编号 总成绩 男团总成绩 女团总成绩 *\n"); for(i=n;i>=1;i--) printf(" * %s\t %d\t%d\t %d\t\t %d\t *\n",r[i].name,r[i].num,r[i].man+r[i].woman,r[i].man,r[i].woman); printf(" ********************************************************\n"); system("pause"); printf("按任意键返回主菜单......"); getchar(); system("cls"); } void man(School11 r[],int n) //男子团体总分排序 { int i; maopao2(r, n); //执行冒泡法排序2 printf(" 按男子团体总分排序结果为:\n"); // printf(" ********************************************************\n"); printf(" * 学校名称 编号 总成绩 男团总成绩 女团总成绩 *\n"); for(i=n;i>=1;i--) printf(" * %s\t %d\t%d\t %d\t\t %d\t *\n",r[i].name,r[i].num,r[i].man+r[i].woman,r[i].man,r[i].woman); printf(" ********************************************************\n"); system("pause"); printf("按任意键返回"); getchar(); } void woman(School11 r[],int n) //女子团体总分排序 { int i; maopao3(r, n); //执行冒泡法排序3 printf(" 按女子团体总分排序结果为:\n"); // printf(" ********************************************************\n"); printf(" * 学校名称 编号 总成绩 男团总成绩 女团总成绩 *\n"); for(i=n;i>=1;i--) printf(" * %s\t %d\t%d\t %d\t\t %d\t *\n",r[i].name,r[i].num,r[i].man+r[i].woman,r[i].man,r[i].woman); printf(" ********************************************************\n"); system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void search1(School11 School1[],Item11 Item1[]) //根据学校信息查询某个项目情况 { int i,j; printf("\n"); printf("\n"); printf("\n ******根据学校信息查询某个项目情况******\n"); printf("\n"); printf("\n"); printf(" 请输入要查询学校编号:"); scanf("%d",&i); printf("\n"); if(i<=0||i>School1[0].n) { printf(" 输入有误,请重新输入:"); scanf("%d",&i); } printf(" 输入要查询的项目编号:"); scanf("%d",&j); printf("\n"); printf(" 学校编号:%d 项目%d:得%d分\n",i,j,Item1[0].Iscore[i][j]); system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void search2(School11 School2[20],Item11 Item2[20]) //根据项目信息查询学校情况 { int i,j; printf("\n"); printf("\n"); printf("\n ******根据项目信息查询学校情况******\n"); printf("\n"); printf("\n"); printf(" 请输入要查询项目编号:"); scanf("%d",&i); printf("\n"); if(i<=0||i>Item1[0].Isum) { printf(" 输入有误,请重新输入:"); scanf("%d",&i); } for(j=1;j<=School1[0].n;j++) //所有的学校 { if (Item1[0].Iscore[j][i]!=0) { printf(" 项目编号:%d 学校编号%d,得分%d\n",i,j,Item1[0].Iscore[j][i]); } } system("pause"); printf("按任意键返回"); getchar(); system("cls"); } void screen() //主菜单 { printf("\n"); printf("\n"); printf(" **************************************************************\n"); printf(" 运动会分数统计系统\n"); printf(" ***********************************************************\n"); printf(" * *\n"); printf(" * *\n"); printf(" * 1.输入成绩 *\n"); printf(" * 2.统计各学校总分 *\n"); printf(" * 3.按学校编号排序输出 *\n"); printf(" * 4.按学校名称排序输出 *\n"); printf(" * 5.按学校总分排序输出 *\n"); printf(" * 6.统计男团体总分 *\n"); printf(" * 7.统计女团体总分 *\n"); printf(" * 8.按学校编号查询学校某个项目情况 *\n"); printf(" * 9.按项目编号查询某个学校情况 *\n"); printf(" * 0.退出 *\n"); printf(" * *\n"); printf(" * *\n"); printf(" **************************************************************\n"); printf("\n"); printf("\n"); printf(" 选择编号:"); } void main() { int t; while(1) { screen(); loop:scanf("%d",&t); system("cls"); switch(t) { case 1:Putscore();save();break; case 2:totalscore(School1);break; case 3:schoolnum(School1,Item1);break; case 4:schoolname(School1);break; case 5:zongfen(School1,School1[0].n);break; case 6:man(School1,School1[0].n);break; case 7:woman(School1,School1[0].n);break; case 8:search1(School1,Item1);break; case 9:search2(School1,Item1);break; case 0:exit(0); default: { printf("输入有误,请重新选择:"); goto loop; } } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服