#include #include #define N 2 #define M 1 #define W 1 typedef struct score { int mark[5]; int itmnum; int itmkind; char itmname[20]; char name[10]; int level; int range[5]; }sc; typedef struct school { int sclnum; char sclname[20]; sc a[M+W]; int mscore; int wscore; int sum; struct school *next; }scl; scl *p,*q,*head,*g,*s,*u; void menu() { system("cls"); printf("★----------------------------------------运动会比赛计分系统------------------------------------- ★\n"); printf("** 1-------------------键盘输入 **\n"); printf("** 2-------------------输出 **\n"); printf("** 3-------------------查询 **\n"); printf("** 4-------------------退出 **\n"); printf("**该系统计分方式为: **\n"); printf("**男子前三名依次得分:5分 3分 2分 **\n"); printf("**女子前五名依次得分:7分 5分 3分 2分 1分 **\n"); printf("★----------------------------------------------------------------------------------------------- ★\n"); } /*******************************计 分 函 数*******************************/ void calculate(int i,int x,int k) { if(k==5) { switch(p->a[x].range[i]) { case 0: p->a[x].mark[p->a[x].range[i]]=0;break; case 1: p->a[x].mark[p->a[x].range[i]]=5;break; case 2: p->a[x].mark[p->a[x].range[i]]=3;break; case 3: p->a[x].mark[p->a[x].range[i]]=2;break; default: printf("输入有误!\n"); exit(0); } } else { switch(p->a[x].range[i]) { case 0: p->a[x].mark[p->a[x].range[i]]=0;break; case 1: p->a[x].mark[p->a[x].range[i]]=7;break; case 2: p->a[x].mark[p->a[x].range[i]]=5;break; case 3: p->a[x].mark[p->a[x].range[i]]=3;break; case 4: p->a[x].mark[p->a[x].range[i]]=2;break; case 5: p->a[x].mark[p->a[x].range[i]]=1;break; default: printf("输入有误!\n");break; } } } /***********************输 入 函 数***********************/ scl *input() { int i,x,y=1,k; p=(scl*)malloc(sizeof(scl)); printf("\n**-------------------按如下格式输入(请勿输入重复编号)-----------------------**\n"); printf("**-----------------项目类型有:222---男子 111---女子-----------------------**\n"); printf("***学校编号\n**学校名称\n**项目编号**项目类型**项目名称**获得名次数**名次**姓名***\n"); p->mscore=0;p->wscore=0; scanf("%d",&p->sclnum); scanf("%s",p->sclname); for(x=0;xa[x].itmnum); scanf("%d",&p->a[x].itmkind); scanf("%s",p->a[x].itmname); scanf("%d",&p->a[x].level); for(i=0;ia[x].level;i++) { scanf("%d",&p->a[x].range[i]); scanf("%s",p->a[x].name); } if(p->a[x].itmkind==222) k=5; else k=3; for(i=0;ia[x].level;i++) { calculate(i,x,k); if(p->a[x].itmkind==222 ) p->mscore+=p->a[x].mark[p->a[x].range[i]]; else p->wscore+=p->a[x].mark[p->a[x].range[i]]; } } p->sum=p->mscore+p->wscore; head=p; q=p; while(ymscore=0;p->wscore=0; scanf("%d",&p->sclnum); scanf("%s",p->sclname); for(x=0;xa[x].itmnum); scanf("%d",&p->a[x].itmkind); scanf("%s",p->a[x].itmname); scanf("%d",&p->a[x].level); for(i=0;ia[x].level;i++) { scanf("%d",&p->a[x].range[i]); scanf("%s",p->a[x].name); } if(p->a[x].itmkind==222) k=5; else k=3; for(i=0;ia[x].level;i++) { calculate(i,x,k); if(p->a[x].itmkind==222) p->mscore+=p->a[x].mark[p->a[x].range[i]]; else p->wscore+=p->a[x].mark[p->a[x].range[i]]; } } p->sum=p->mscore+p->wscore; q->next=p; q=p; } p->next=NULL; menu(); return head; } /********************输 出 函 数********************/ void output(scl *head) { scl *q=head; int i,x,y=1; FILE *fp; int number; printf("****1---------不输出,存入文件\n"); printf("****2---------输出,不存入文件\n"); scanf("%d",&number); switch(number) { case 1: { fp=fopen("d:\\clanguage.txt","w+"); if(fp==NULL) {printf("无法打开文件!");exit(0);} while(q!=NULL) { fprintf(fp,"学校编码为:%d",q->sclnum); fprintf(fp,"学校名称为:%s\n",q->sclname); for(x=0;xa[x].itmkind); fprintf(fp,"项目名称为:%s\n",q->a[x].itmname); fprintf(fp,"获奖数目为:%d\t\n",q->a[x].level); for(i=0;ia[x].level;i++) fprintf(fp,"第%d名",q->a[x].range[i]); fprintf(fp,"得主:%s\n",q->a[x].name); fprintf(fp,"\n"); } q=q->next; } fclose(fp); }break; case 2: while(q!=NULL) { printf("★-------------------------------------结果公示-------------------------------------★\n"); printf("*--------------------------------------学校编号:\t"); printf("%d\n",q->sclnum); printf("*--------------------------------------学校名称:\t"); printf("%s\n",q->sclname); for(x=0;xa[x].itmnum); printf("*--------------------------------------项目类型:\t"); printf("%d\n",q->a[x].itmkind); printf("*--------------------------------------项目名称:\t"); printf("%s\n",q->a[x].itmname); printf("*--------------------------------------有%d个获奖名次:\t",q->a[x].level); for(i=0;ia[x].level;i++) { printf("第%d名\t",q->a[x].range[i]); //printf("%s",q->a[x].name); } printf("\n\n"); }printf("男子团体项目总分:\t%d\n",q->mscore); printf("女子团体项目总分:\t%d\n",q->wscore); printf(" 学校项目总得分:\t%d\n\n",q->sum); printf("望再接再厉!\n"); printf("\n"); q=q->next; }break; default : puts("输入有误!"); exit(0); } } int main() //主函数1 { int ch; menu(); while(1) { printf("--------------请选择\t"); scanf("%d",&ch); switch(ch) { case 1: menu();g=input(); break; case 2: menu();output(g); break; //case 3: menu();find(g); break; case 4: menu();printf("******************************谢谢您的使用!******************************\n"); printf("******************************生命在于运动!******************************\n");exit(0); default: menu();printf("对不起!输入有误!\n");exit(0); } } }