数据结构代码运动会计分程序编写
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:有中文提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
#include struct pro //表示项目的结构体 { string name; //项目名称 int snum[6]; //前5名学校的编号 }p[21]; struct school //表示学校的结构体 { int num; string name; //学校名称 int score; //学校总分 int male; //男子总分 int female; //女子总分 }sch[21]; int integral1[5]={7,5,3,2,1};//前五名得分 int integral2[3]={5,3,2};//前三名得分 void input() { int i,j,y,x; printf(\"输入学校数目:\"); y=0; scanf(\"%d\ if(n>=1&&n<=20) y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); for(i=1;i<=n;i++) { printf(\"输入第%d个学校的名称:\ scanf(\"%s\ sch[i].score=0; sch[i].female=0; sch[i].male=0; sch[i].num=i; } printf(\"输入男子项目数和女子项目数:\"); y=0; scanf(\"%d%d\ if(m<=20&&m>=1&&w<=20&&w>=1)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } for(i=1;i<=m+w;i++) { printf(\"输入第%d个项目的名称:\\n\ scanf(\"%s\ printf(\"输入第%d个项目的前5名的学校编号:\\n\ for(j=1;j<=5;j++) { y=0; while(1) { scanf(\"%d\ if(x>=1&&x<=20)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } p[i].snum[j]=x; sch[x].score+=integral[j-1]; if(i<=m)sch[x].male+=integral[j-1]; else sch[x].female+=integral[j-1]; } } } void print(int i) { printf(\"%d%d%s%d%d%d%d%d%d\9) ,sch[i].male,setw(10),sch[i].female); } void bianhao() //按编号排序 { int i,j; school t; for(i=1;i if(sch[i].num>sch[j].num) {t=sch[i];sch[i]=sch[j];sch[j]=t;} } printf(\"\\n按编号排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); } void zongfen() //按学校总分排序 { int i,j; school t; for(i=1;i if(sch[i].score printf(\"\\n按学校总分排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); ofstream fout; fout.open(\"运动会分数统计.txt\"); fout<<\"编号 学校名称 总分 男子总分 女子总分\"< void malezf() //按学校男总分排序 { int i,j; school t; for(i=1;i if(sch[i].male printf(\"\\n按学校男子总分排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); } void femalezf() //按学校女总分排序 { int i,j; school t; for(i=1;i if(sch[i].female printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); printf(\"\\n\"); } void cxsch() //查询学校信息 { int i,y,s; printf(\"输入需要查询的学校编号:\"); y=0; while(1) { scanf(\"%d\ if(s>=1&&s<=n)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } printf(\"该学校相关信息:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) { if(sch[i].num==s) { print(i); break; } } printf(\"\\n\"); } void cxxm() //查询项目信息 { int i,y,s; printf(\"输入需要查询的项目编号:\"); y=0; while(1) { scanf(\"%d\ if(s>=1&&s<=n)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } printf(\"%s前5名学校编号及名称为\\n\ printf(\"名次 编号 学校名称\\n\"); for(i=1;i<=5;i++) printf(\" %d %d%d%s\\n\ printf(\"\\n\"); } void solve() //菜单函数 { int z; while(1) { printf(\"\\n选择您需要的操作(选择序号):\\n\"); printf(\"1.按学校编号排序输出\\n\"); printf(\"2.按学校总分排序输出\\n\"); printf(\"3.按学校男总分排序输出\\n\"); printf(\"4.按学校女总分排序输出\\n\"); printf(\"5.查询某个学校成绩\\n\"); printf(\"6.查询某个项目成绩\\n\"); printf(\"7.结束\\n\\n\"); scanf(\"%d\ if(z==1)bianhao(); if(z==2)zongfen(); if(z==3)malezf(); if(z==4)femalezf(); if(z==5)cxsch(); if(z==6)cxxm(); if(z==7)break; } } int main() //主函数 { input(); solve(); return 0; } #include int m; //m个男子项目 int w; //w个女子项目 struct pro //表示项目的结构体 { string name; //项目名称 int snum[6]; //前5名学校的编号 }p[21]; struct school //表示学校的结构体 { int num; string name; //学校名称 int score; //学校总分 int male; //男子总分 int female; //女子总分 }sch[21]; int integral[5]={7,5,3,2,1};//前五名得分 void input() { int i,j,y,x; printf(\"输入学校数目:\"); y=0; while(1) { scanf(\"%d\ if(n>=1&&n<=20)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } for(i=1;i<=n;i++) { printf(\"输入第%d个学校的名称:\ scanf(\"%s\ sch[i].score=0; sch[i].female=0; sch[i].male=0; sch[i].num=i; } printf(\"输入男子项目数和女子项目数:\"); y=0; while(1) { scanf(\"%d%d\ if(m<=20&&m>=1&&w<=20&&w>=1)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } for(i=1;i<=m+w;i++) { printf(\"输入第%d个项目的名称:\\n\ scanf(\"%s\ printf(\"输入第%d个项目的前5名的学校编号:\\n\ for(j=1;j<=5;j++) { y=0; while(1) { scanf(\"%d\ if(x>=1&&x<=20)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } p[i].snum[j]=x; sch[x].score+=integral[j-1]; if(i<=m)sch[x].male+=integral[j-1]; else sch[x].female+=integral[j-1]; } } } void print(int i) { printf(\"%d%d%s%d%d%d%d%d%d\9) ,sch[i].male,setw(10),sch[i].female); } void bianhao() //按编号排序 { int i,j; school t; for(i=1;i if(sch[i].num>sch[j].num) {t=sch[i];sch[i]=sch[j];sch[j]=t;} } printf(\"\\n按编号排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); } void zongfen() //按学校总分排序 { int i,j; school t; for(i=1;i if(sch[i].score printf(\"\\n按学校总分排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); ofstream fout; fout.open(\"运动会分数统计.txt\"); fout<<\"编号 学校名称 总分 男子总分 女子总分\"< {fout< for(i=1;i if(sch[i].male printf(\"\\n按学校男子总分排列:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); } void femalezf() //按学校女总分排序 { int i,j; school t; for(i=1;i if(sch[i].female printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); printf(\"\\n\"); } void cxsch() //查询学校信息 { int i,y,s; printf(\"输入需要查询的学校编号:\"); y=0; while(1) { scanf(\"%d\ if(s>=1&&s<=n)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } printf(\"该学校相关信息:\\n\"); printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) { if(sch[i].num==s) { print(i); break; } } printf(\"\\n\"); } void cxxm() //查询项目信息 { int i,y,s; printf(\"输入需要查询的项目编号:\"); y=0; while(1) { scanf(\"%d\ if(s>=1&&s<=n)y=1; if(y)break; else printf(\"输入数据有误,请重新输入:\"); } printf(\"%s前5名学校编号及名称为\\n\ printf(\"名次 编号 学校名称\\n\"); for(i=1;i<=5;i++) printf(\" %d %d%d%s\\n\ printf(\"\\n\"); } void solve() //菜单函数 { int z; while(1) { printf(\"\\n选择您需要的操作(选择序号):\\n\"); printf(\"1.按学校编号排序输出\\n\"); printf(\"2.按学校总分排序输出\\n\"); printf(\"3.按学校男总分排序输出\\n\"); printf(\"4.按学校女总分排序输出\\n\"); printf(\"5.查询某个学校成绩\\n\"); printf(\"6.查询某个项目成绩\\n\"); printf(\"7.结束\\n\\n\"); scanf(\"%d\ if(z==1)bianhao(); if(z==2)zongfen(); if(z==3)malezf(); if(z==4)femalezf(); if(z==5)cxsch(); if(z==6)cxxm(); if(z==7)break; } } int main() //主函数 { input(); solve(); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容