主题:[原创]运动会成绩统计
////////////head01.h///////////
#ifndef HEAD_FILE_01
#define HEAD_FILE_01
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct shuju //数据育定义
{
int no;
int type;
int sex;
char sport[5][20];
char schoolname[5][20];
}itemnode;
typedef struct N //项目结点定义
{
shuju x;
N *next;
}point,*ppt;
typedef struct R{ //运动员成绩接点
char sportername[20];
int position;
int sex;
int score;
int itemnumber;
R *next;
}result,*pr;
typedef struct S{ //学校接点
int number;
char name[20];
result *nextresult;
S *next;
}school,*ps;
//////////////////////////////////////////////////////////////////
int begin();
void madedata(itemnode &a);
int returnscore(shuju node,int position);
ppt madelist(int n,int f);
int addschool(shuju data,int i);//重载创建学校连表
void output(ppt* head);//
void output(ps* head);//重载输出学校
void outputstr(shuju a);
#endif
/***************function.cpp********************/
#include"head01.h"
#define TEST printf("***********here is OK!***************\n");
////////////全局变量定义////////////////
ppt itemhead; //项目
ps psch; //学校
void madedata(itemnode &a)//
{
int i;
printf("男子项目-1******女子项目-2\n");
scanf("%d",&a.sex);
printf("请输入该项目评选的名次:(5或3)\n");
scanf("%d",&a.type);
for(i=0;i<a.type;i++)
{
printf("请输入第%d名运动员姓名:\n",i+1);
scanf("%s",&a.sport[i]);
printf("请输入该运动员所在学校名称\n");
scanf("%s",&a.schoolname[i]);
addschool(a,i);
}
};
////////////////////////////////////////
ppt madelist(int n,int f)//
{
int i;
ppt p,head;
head=p=(ppt)malloc(sizeof(point));
for(i=1;i<=n;i++){
printf("*********************************下面进行第%d项比赛*****************************\n",i);
p->next=(ppt)malloc(sizeof(point));
p=p->next;
p->x.no=i;
madedata(p->x);
}
p->next=NULL;
return head;
};
////////////////////////////////////////////////////////////////
/////////////////////////////////////////
int addschool(itemnode data,int i) //
{
static int number=1;
ps p=psch; //指向学校的指针
pr ppr; //指向成绩的指针
for(;p->next!=NULL;p=p->next){
if(strcmp(p->name,data.schoolname[i])==0){ ///学校已经登记
ppr=p->nextresult;
for(;ppr->next!=NULL;ppr=ppr->next);
ppr->next=(pr)malloc(sizeof(result));
ppr=ppr->next;
ppr->itemnumber=data.no;
ppr->position=i+1;
ppr->sex=data.sex;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
return 1;
};
}
if(strcmp(p->name,data.schoolname[i])==0){
ppr=p->nextresult;
for(;ppr->next!=NULL;ppr=ppr->next);
ppr->next=(pr)malloc(sizeof(result));
ppr=ppr->next;
ppr->sex=data.sex;
ppr->itemnumber=data.no;
ppr->position=i+1;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
return 1;
};
///////////////////////////////////////////////////////学校没有登记
p->next=(ps)malloc(sizeof(school));
p=p->next;
p->number=number;
{ //将成绩加入到链表中
ppr=(pr)malloc(sizeof(result));
p->nextresult=ppr;
strcpy(p->name,data.schoolname[i]);
ppr->itemnumber=data.no;
ppr->position=i+1;
ppr->sex=data.sex;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
}
p->next=NULL;
return 1;
};
////////////////////////////////////////////////////////////////////////
int returnscore(shuju node,int position)
{
if(node.type==5)
switch(position)
{
case 1:return 7;
case 2:return 5;
case 3:return 3;
case 4:return 2;
case 5:return 1;
}
else if(node.type==3)
switch(position)
{
case 1:return 5;
case 2:return 3;
case 3:return 2;
}
return 0;
};
////////////////////////////////////
void outputstr(shuju a){
printf("比赛项目:%d\n",a.no);
if(a.sex==1)printf(" 男子 ");
else printf(" 女子 ");
printf("本项目评选前%d名\n",a.type);
for(int i=0;i<a.type;i++)
printf("第%d名获得者是来自%s大学的%s\n\n",i+1,a.schoolname[i],a.sport[i]);
};
////////////////////////////////////////////
int output(ppt p)
{
if(p->next==NULL)
{printf("没有进行任何比赛!!\n");return 0;}
printf("\n");
for(;p->next!=NULL;){
p=p->next;
outputstr(p->x);
}
printf("\n\n");
return 1;
};
////////////////////////////////////////////////
void output(ps head)
{
int score,boy,girl;
printf("下面是各学校的成绩:\n");
ps p;
pr s;
p=head;
p=p->next;
for(;p!=NULL;p=p->next)
{
score=0;
boy=0;
girl=0;
printf("%s大学 成绩如下\n",p->name);
s=p->nextresult;
for(;s!=NULL;s=s->next){
if(s->sex==1)
boy=boy+(s->score);
else if(s->sex==2)
girl=girl+s->score;
printf("%s同学参加了第%d项比赛,获得第%d名,得分%d!\n",s->sportername,s->itemnumber,s->position,s->score);
}
score=boy+girl;
printf("该大学的男子团体总分是:%d\n女子总分是:%d\n总分是:%d\n\n",boy,girl,score);
}
};
int begin()
{
int itemn;//**项目数量 **
psch=(ps)malloc(sizeof(school));
psch->next=NULL;
printf("请输入比赛项目数量:\n");
scanf("%d",&itemn);
itemhead=madelist(itemn,1);//创建比赛项目表
output(itemhead);
output(psch);
return 1;
};
/////////////////////////////////////////////////////////////
//
void main()
{
begin();
}
//虽然很丑,自己动手,高手多多,大家指点,发表看法~~~谢谢
//代码写的不规范,还望海涵
//QQ271743617
#ifndef HEAD_FILE_01
#define HEAD_FILE_01
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct shuju //数据育定义
{
int no;
int type;
int sex;
char sport[5][20];
char schoolname[5][20];
}itemnode;
typedef struct N //项目结点定义
{
shuju x;
N *next;
}point,*ppt;
typedef struct R{ //运动员成绩接点
char sportername[20];
int position;
int sex;
int score;
int itemnumber;
R *next;
}result,*pr;
typedef struct S{ //学校接点
int number;
char name[20];
result *nextresult;
S *next;
}school,*ps;
//////////////////////////////////////////////////////////////////
int begin();
void madedata(itemnode &a);
int returnscore(shuju node,int position);
ppt madelist(int n,int f);
int addschool(shuju data,int i);//重载创建学校连表
void output(ppt* head);//
void output(ps* head);//重载输出学校
void outputstr(shuju a);
#endif
/***************function.cpp********************/
#include"head01.h"
#define TEST printf("***********here is OK!***************\n");
////////////全局变量定义////////////////
ppt itemhead; //项目
ps psch; //学校
void madedata(itemnode &a)//
{
int i;
printf("男子项目-1******女子项目-2\n");
scanf("%d",&a.sex);
printf("请输入该项目评选的名次:(5或3)\n");
scanf("%d",&a.type);
for(i=0;i<a.type;i++)
{
printf("请输入第%d名运动员姓名:\n",i+1);
scanf("%s",&a.sport[i]);
printf("请输入该运动员所在学校名称\n");
scanf("%s",&a.schoolname[i]);
addschool(a,i);
}
};
////////////////////////////////////////
ppt madelist(int n,int f)//
{
int i;
ppt p,head;
head=p=(ppt)malloc(sizeof(point));
for(i=1;i<=n;i++){
printf("*********************************下面进行第%d项比赛*****************************\n",i);
p->next=(ppt)malloc(sizeof(point));
p=p->next;
p->x.no=i;
madedata(p->x);
}
p->next=NULL;
return head;
};
////////////////////////////////////////////////////////////////
/////////////////////////////////////////
int addschool(itemnode data,int i) //
{
static int number=1;
ps p=psch; //指向学校的指针
pr ppr; //指向成绩的指针
for(;p->next!=NULL;p=p->next){
if(strcmp(p->name,data.schoolname[i])==0){ ///学校已经登记
ppr=p->nextresult;
for(;ppr->next!=NULL;ppr=ppr->next);
ppr->next=(pr)malloc(sizeof(result));
ppr=ppr->next;
ppr->itemnumber=data.no;
ppr->position=i+1;
ppr->sex=data.sex;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
return 1;
};
}
if(strcmp(p->name,data.schoolname[i])==0){
ppr=p->nextresult;
for(;ppr->next!=NULL;ppr=ppr->next);
ppr->next=(pr)malloc(sizeof(result));
ppr=ppr->next;
ppr->sex=data.sex;
ppr->itemnumber=data.no;
ppr->position=i+1;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
return 1;
};
///////////////////////////////////////////////////////学校没有登记
p->next=(ps)malloc(sizeof(school));
p=p->next;
p->number=number;
{ //将成绩加入到链表中
ppr=(pr)malloc(sizeof(result));
p->nextresult=ppr;
strcpy(p->name,data.schoolname[i]);
ppr->itemnumber=data.no;
ppr->position=i+1;
ppr->sex=data.sex;
strcpy(ppr->sportername,data.sport[i]);
ppr->score=returnscore(data,i+1);
ppr->next=NULL;
}
p->next=NULL;
return 1;
};
////////////////////////////////////////////////////////////////////////
int returnscore(shuju node,int position)
{
if(node.type==5)
switch(position)
{
case 1:return 7;
case 2:return 5;
case 3:return 3;
case 4:return 2;
case 5:return 1;
}
else if(node.type==3)
switch(position)
{
case 1:return 5;
case 2:return 3;
case 3:return 2;
}
return 0;
};
////////////////////////////////////
void outputstr(shuju a){
printf("比赛项目:%d\n",a.no);
if(a.sex==1)printf(" 男子 ");
else printf(" 女子 ");
printf("本项目评选前%d名\n",a.type);
for(int i=0;i<a.type;i++)
printf("第%d名获得者是来自%s大学的%s\n\n",i+1,a.schoolname[i],a.sport[i]);
};
////////////////////////////////////////////
int output(ppt p)
{
if(p->next==NULL)
{printf("没有进行任何比赛!!\n");return 0;}
printf("\n");
for(;p->next!=NULL;){
p=p->next;
outputstr(p->x);
}
printf("\n\n");
return 1;
};
////////////////////////////////////////////////
void output(ps head)
{
int score,boy,girl;
printf("下面是各学校的成绩:\n");
ps p;
pr s;
p=head;
p=p->next;
for(;p!=NULL;p=p->next)
{
score=0;
boy=0;
girl=0;
printf("%s大学 成绩如下\n",p->name);
s=p->nextresult;
for(;s!=NULL;s=s->next){
if(s->sex==1)
boy=boy+(s->score);
else if(s->sex==2)
girl=girl+s->score;
printf("%s同学参加了第%d项比赛,获得第%d名,得分%d!\n",s->sportername,s->itemnumber,s->position,s->score);
}
score=boy+girl;
printf("该大学的男子团体总分是:%d\n女子总分是:%d\n总分是:%d\n\n",boy,girl,score);
}
};
int begin()
{
int itemn;//**项目数量 **
psch=(ps)malloc(sizeof(school));
psch->next=NULL;
printf("请输入比赛项目数量:\n");
scanf("%d",&itemn);
itemhead=madelist(itemn,1);//创建比赛项目表
output(itemhead);
output(psch);
return 1;
};
/////////////////////////////////////////////////////////////
//
void main()
{
begin();
}
//虽然很丑,自己动手,高手多多,大家指点,发表看法~~~谢谢
//代码写的不规范,还望海涵
//QQ271743617