您的当前位置:首页正文

数据结构代码运动会计分程序编写

来源:好兔宠物网
任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求:1).可以输入各个项目的前三名或前五名的成绩; 2).能统计各学校总分,

3).可以按学校编号、学校总分、男女团体总分排序输出;

4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

输出形式:有中文提示,各学校分数为整形

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;

测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;

#include #include #include #include using namespace std; int n,m,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 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;ifor(j=i;j<=n;j++)

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;ifor(j=i;j<=n;j++)

if(sch[i].score{t=sch[i];sch[i]=sch[j];sch[j]=t;} }

printf(\"\\n按学校总分排列:\\n\");

printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i);

ofstream fout;

fout.open(\"运动会分数统计.txt\");

fout<<\"编号 学校名称 总分 男子总分 女子总分\"<{fout<}

void malezf() //按学校男总分排序 { int i,j; school t;

for(i=1;ifor(j=i;j<=n;j++)

if(sch[i].male{t=sch[i];sch[i]=sch[j];sch[j]=t;} }

printf(\"\\n按学校男子总分排列:\\n\");

printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); }

void femalezf() //按学校女总分排序 { int i,j; school t;

for(i=1;ifor(j=i;j<=n;j++)

if(sch[i].femaleprintf(\"\\n按学校女子总分排列:\\n\");

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 #include #include #include using namespace std; int n; //n个学校

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;ifor(j=i;j<=n;j++)

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;ifor(j=i;j<=n;j++)

if(sch[i].score{t=sch[i];sch[i]=sch[j];sch[j]=t;} }

printf(\"\\n按学校总分排列:\\n\");

printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i);

ofstream fout;

fout.open(\"运动会分数统计.txt\");

fout<<\"编号 学校名称 总分 男子总分 女子总分\"<for(i=1;i<=n;i++)

{fout<void malezf() //按学校男总分排序 { int i,j; school t;

for(i=1;ifor(j=i;j<=n;j++)

if(sch[i].male{t=sch[i];sch[i]=sch[j];sch[j]=t;} }

printf(\"\\n按学校男子总分排列:\\n\");

printf(\"编号 学校名称 总分 男子总分 女子总分\\n\"); for(i=1;i<=n;i++) print(i); }

void femalezf() //按学校女总分排序 { int i,j; school t;

for(i=1;ifor(j=i;j<=n;j++)

if(sch[i].femaleprintf(\"\\n按学校女子总分排列:\\n\");

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; }

因篇幅问题不能全部显示,请点此查看更多更全内容