运动会分数统计程序代码

更新时间:2023-09-06 18:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

#include <stdlib.h>

#include <string.H>

#include <IO.H>

#include <conio.h> /*屏幕操作函数*/

#include<stdio.h>

#define MAX 50

#define NULL 0

typedef struct node1{

int school; /*学校编号*/

int record; /*项目成绩*/

struct node1 *next; /*链域*/

}Schools;

typedef struct {

int item; /*项目编号*/

Schools *firstschool; /*链域指向链表中第一个结点*/

}ITEM;

typedef struct {

int z; /* 项目总数 */

ITEM a[MAX];

}ALLitems;

typedef struct node2 {

int item; /*该学校获奖的项目*/

int record; /*项目成绩*/

struct node2 *next; /*链域*/

}Items;

typedef struct {

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

int school; /*学校编号*/

int score; /*学校总分*/

int boys; /*男团体总分*/

int girls; /*女团体总分*/

Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/

}SCHNode;

typedef struct {

int n; /* 学校总数 */

SCHNode b[MAX];

}ALLNode;

ALLitems *g1;

ALLNode *g2;

void funct1(ALLitems *g1,ALLNode *g2) /* 输入各个项目成绩 */ { Schools *p1;

Items *p2;

int i,j,k,m,w,h,x,t;

printf("\n*** Enter all project information ***\n\n");

printf("Enter the total number of men's m:");

scanf("%d",&m);

if(m<0||m>20)

{ printf("Entry error, m is an integer less than 20, please re-enter the:");

scanf("%d",&m);

}

printf("Enter the total number of women's events w:");

scanf("%d",&w);

if(w<0||w>20)

{ printf("Entry error, w is an integer less than 20, please re-enter the:");

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

}

printf("Enter total number of schools participate in the Games n:");

scanf("%d",&g2->n);

if(g2->n<0||g2->n>20)

{ printf("Entry error, n is an integer less than 20, please re-enter the :");

scanf("%d",&g2->n);

}

t=m+w;

g1->z=t;

printf("Then the item number for the men's 1 -% d, women% d-% d",m,m+1,g1->z); printf("\n\n**Record Games Results ** \ n (enter 0 marks the end of)");

for(k=1;k<=g1->z;k++) /* 对两个邻接表置初态 */

{ g1->a[k].item=k;

g1->a[k].firstschool=NULL;

}

for(k=1;k<=g2->n;k++)

{ g2->b[k].school=k;

g2->b[k].firstitem=NULL;

g2->b[k].score=g2->b[k].boys=g2->b[k].girls=0;

}

g2->b[0].score=g2->b[0].boys=g2->b[0].girls=0;

i=1;

while(i)

{ printf("\nItem:");

scanf("%d",&i);

if(i!=0)

{ printf("1.Top three 2.Top five\n");

printf("Select:");

scanf("%d",&j);

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

{ printf("Entry error, please re-select:");

scanf("%d",&j);

}

if(j==1) /* 该项目只有前三名时执行此语句 */

{ h=3;

do{ printf("No.% d Name: School (school number is number)",h);

scanf("%d",&x);

p1=(Schools *)malloc(sizeof(Schools));

p1->school=x;

p2=(Items *)malloc(sizeof(Items));

p2->item=i;

if(h==3) p2->record=p1->record=2;

if(h==2) p2->record=p1->record=3;

if(h==1) p2->record=p1->record=5;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->b[x].firstitem=p2;

g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分 */

if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record;/* 累计男团体总分*/ else g2->b[x].girls=g2->b[x].girls+p2->record; /* 累计女团体总分*/ h--;

}while(x!=0&&h!=0);

}

if(j==2) /* 该项目有前五名时执行此语句 */

{ h=5;

do{ printf("No.% d Name: School (school number is number)",h);

scanf("%d",&x);

p1=(Schools *)malloc(sizeof(Schools));

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

p1->school=x;

p2=(Items *)malloc(sizeof(Items));

p2->item=i;

if(h==5) p2->record=p1->record=1;

if(h==4) p2->record=p1->record=2;

if(h==3) p2->record=p1->record=3;

if(h==2) p2->record=p1->record=5;

if(h==1) p2->record=p1->record=7;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->b[x].firstitem=p2;

g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分 */

if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record; /* 累计男团体总分 */ else g2->b[x].girls=g2->b[x].girls+p2->record; /* 累计女团体总分 */ h--;

}while(x!=0&&h!=0);

}

}

}

}

void save() /* 存储数据文件 */

{ FILE *fp1,*fp2;

if((fp1=fopen("sports1","wb"))==NULL)

{ printf("cannot open file.\n");

return;

}

if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1)

printf("file write error.\n");

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

fclose(fp1);

if((fp2=fopen("sports2","wb"))==NULL)

{ printf("cannot open file.\n");

return;

}

if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1)

printf("file write error.\n");

fclose(fp2);

}

void funct2(ALLNode *g2)

{ int k;

printf("\n\n*** Total output of all schools ***\n");

printf("School No. \ t Total\n");

for(k=1;k<=g2->n;k++)

printf("%d\t\t %d\n",k,g2->b[k].score);

printf("\n");

printf("Press any key to return to the main menu......");

getch();

}

void funct3(ALLNode *g2)

{ int k;

Items *p2;

printf("\n\n*** Sort the output by the school number ***\n");

printf("School Number \t\t\t Awards \n");

for(k=1;k<=g2->n;k++)

{ printf("%d\t",k);

p2=g2->b[k].firstitem;

while(p2!=NULL) /* 输出各学校总分 */ /* 按学校编号排序输出 */

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

{ printf("Item% d: was% d points",p2->item,p2->record);

p2=p2->next;

}

printf("\n");

}

printf("\n");

printf("Press any key to return to the main menu......");

getch();

}

void funct4(ALLNode *g2)

{ int i,j,k;

printf("\n\n*** Total sorted out by the school ***\n");

printf("School No. \t Total \n");

for(i=2;i<=g2->n;i++)

{ g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].score<g2->b[j].score&&j>0)

{ g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls; /* 按学校总分排序输出 */

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d \t\t%d\n",g2->b[k].school,g2->b[k].score);

printf("Press any key to return to the main menu......");

getch();

}

void funct5(ALLNode *g2)

{ int i,j,k;

printf("\n*** Total sorted out by male groups ***\n");

printf("School No. \t male group Total \n");

for(i=2;i<=g2->n;i++)

{ g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].boys<g2->b[j].boys&&j>0)

{ g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school; /* 按男团体总分排序输出 */

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].boys);

printf("Press any key to return to the main menu......");

getch();

}

void funct6(ALLNode *g2)

{ int i,j,k;

printf("\n*** Total sorted out by women groups ***\n");

printf("School No. \t Total female groups \n");

for(i=2;i<=g2->n;i++)

{ g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].girls<g2->b[j].girls&&j>0)

{ g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++) /* 按女团体总分排序输出 */

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].girls);

printf("Press any key to return to the main menu......");

getch();

}

void funct7(ALLNode *g2) /* 按学校编号查询学校某个项目情况 */ { int i,j;

Items *p2;

printf("\n *** Search Schools by School Number of an item ***\n");

printf("Enter a query School Number:");

scanf("%d",&i);

printf("Enter a query item number:");

scanf("%d",&j);

p2=g2->b[i].firstitem;

while(p2!=NULL)

{ if(p2->item==j)

printf("School Number:% d \t item% d: was% d points\n",i,p2->item,p2->record); p2=p2->next;

}

printf("\n");

printf("Press any key to return to the main menu......");

getch();

}

void funct8(ALLitems *g1) /* 按项目编号查询取得名次的学校 */ { int i,k;

Schools *p1;

printf("\n*** Search by item number to obtain ranking of schools***\n");

printf("Enter a query item number:");

scanf("%d",&i);

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

printf("Item Number \t\t\t get the school ranking\n");

printf("%d\t",i);

p1=g1->a[i].firstschool;

while(p1!=NULL)

{ printf("school%d: Score %d ",p1->school,p1->record);

p1=p1->next;

}

printf("\n\n");

printf("Press any key to return to the main menu......");

getch();

}

main()

{

ALLitems *g1;

ALLNode *g2;

int t;

for(;;)

{ printf("\t \n"); printf("\t Games Score Statistics \n"); printf("\t \n"); printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");

printf("\t* 1.Enter all project achievements and store files *\n"); printf("\t* 2.Statistics of schools Total *\n"); printf("\t* 3.Sort the output by the school number *\n"); printf("\t* 4.Total sorted out by the school *\n"); printf("\t* 5.Total sorted out by male groups *\n"); printf("\t* 6.Total sorted out by women groups *\n"); printf("\t* 7.Search Schools by School Number of an item *\n"); printf("\t* 8.Search by item number to obtain ran king of schools *\n");

做课程设计绝对有用哦,自己改过的,能通过。设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校

printf("\t* 0.Exit *\n"); printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");

printf("\t Select(0-8):");

loop:scanf("%d",&t);

switch(t)

{ case 1:funct1(g1,g2);save();break;

case 2:funct2(g2);break;

case 3:funct3(g2);break;

case 4:funct4(g2);break;

case 5:funct5(g2);break;

case 6:funct6(g2);break;

case 7:funct7(g2);break;

case 8:funct8(g1);break;

case 0:exit(0);

default:{ printf("Entry error, please re-select:");

goto loop;}

}

}

}

本文来源:https://www.bwwdw.com/article/qnch.html

Top