c语言实现足球比赛积分统计系统
本文实例为大家分享了c语言实现足球比赛积分统计系统的具体代码,供大家参考,具体内容如下
/* 足球比赛积分统计系统 作者:施瑞文 时间:2018.2 */ //为简单化,这里没有加上文件的操作 #include <stdio.h> #include <stdlib.h> #include <string.h> #include<windows.h> #include<conio.h> #define LEN sizeof(match) typedef struct football { char name[20];//[足球]队名 int num[4];//num[0]为单支球队需比赛场数, num[1]为赢场数,num[2]为平场数,num[3]为负场数 int goal;//进球数 int lose;//失球数 int integral;//积分 int pure;//净胜球 struct football *next; }match; void menu();//声明菜单函数 match *creat();//输入球队信息 void print(match *head);//排序 match *Add(match *head);//增加球队信息 match *Amend(match *head);//修改球队信息 match *Del(match *head);//删除球队信息 void End();//退出该软件 int n=0;//记录节点长度 match *p2; void toxy(int x, int y)//将光标移动到X,Y坐标处 { COORD pos = { x , y }; HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos); } void menu() { system("cls");//清屏 system("color 72");//颜色 toxy(30,6); printf("--------------------MENU-----------------------\n"); toxy(30,8); printf("| 1. Record the information of this match |\n"); toxy(30,10); printf("| 2. Add the information of this match |\n"); toxy(30,12); printf("| 3. Check the information of this match |\n"); toxy(30,14); printf("| 4. delete the information of the match |\n"); toxy(30,16); printf("| 5. Amend the information of the match |\n"); toxy(30,18); printf("| 6. End this operation |\n"); toxy(30,20); printf("-----------------------------------------------\n"); toxy(30,22); printf("What are you want to do ? Input please:"); } match *creat() { system("cls");//清屏 system("color 74");//颜色 int t,n=0; match *head,*p1; p2=p1=(match *)malloc(LEN); head=NULL; /*录入足球队名,比赛场数,得、失 球数和进球积分*/ /*输入第一个节点数据 */ printf("Enter the total number of the football teams:");//参赛的球队数量 scanf("%d",&t); while(n!=t) { n++; printf("the name of team %d :",n);//球队名 scanf("%s",p1->name); printf("team %d win round(s):",n);//该球队赢局场数 scanf("%d",&p1->num[1]); printf("team %d draw round(s):",n);//该球队平局场数 scanf("%d",&p1->num[2]); printf("team %d goal:",n); scanf("%d",&p1->goal); printf("team %d lose:",n); scanf("%d",&p1->lose); p1->integral=p1->num[1]*2+p1->num[2]; p1->pure=p1->goal-p1->lose; if(n==1) { head=p1; } else { p2->next=p1; p2=p1; } p1=(match *)malloc(LEN); } p2->next=NULL; return head; } match *Add(match *head)//增加球队 { system("cls");//清屏 system("color 72");//颜色 match *p,*q,*newhead; int x,y=0; newhead=NULL; p=q=(match *)malloc(LEN); printf("How many teams you want to add?Input please:"); scanf("%d",&x); while(y!=x) { y++; printf("the name of team %d :",y);//球队名 scanf("%s",p->name); printf("team %d win round(s):",y);//该球队赢局场数 scanf("%d",&p->num[1]); printf("team %d draw round(s):",y);//该球队平局场数 scanf("%d",&p->num[2]); printf("the number of team %d goal:",y); scanf("%d",&p->goal); printf("the number of team %d lose:",y); scanf("%d",&p->lose); p->integral=p->num[1]*2+p->num[2]; p->pure=p->goal-p->lose; if(y==1) { newhead=p; } else { q->next=p; q=p; } p=(match *)malloc(LEN); } q->next=NULL; p2->next=newhead;//让新增加的信息接入原有链表的后面 return head; } match *Amend(match *head)//修改信息 { system("cls"); system("color 72"); do{ match *p=head; char name[10]; printf("Please input the team's name which you want to modify:"); gets(name); while(p!=NULL&&strcmp(p->name,name)!=0) { p=p->next; } if(p!=NULL) { toxy(25,4); printf("team_name win draw goal lose integral\n"); toxy(25,6); printf("|%3s%10d%10d%10d%10d%10d|\n",p->name,p->num[1],p->num[2],p->goal,p->lose,p->integral); printf("Enter the new information please;\n"); printf("the name of new team :");//球队名 scanf("%s",p->name); printf("team win round(s):");//该球队赢局场数 scanf("%d",&p->num[1]); printf("team draw round(s):");//该球队平局场数 scanf("%d",&p->num[2]); printf("the number of new team's goal:"); scanf("%d",&p->goal); printf("the number of new team's lose:"); scanf("%d",&p->lose); p->integral=p->num[1]*2+p->num[2]; p->pure=p->goal-p->lose; break; } else { printf("Input error!Please input again:"); } }while(1); return head; } match *Del(match *head)//删除信息 { system("cls");//清屏 do{ match *p=head,*pre=NULL;//pre是p的前驱结点 char name[10]; printf("Please input the team's name which you want to delete;"); gets(name); while(p!=NULL&&strcmp(p->name,name)!=0) { pre=p; p=p->next; } if(p!=NULL) { if(pre==NULL) { head=p->next; } else { pre->next=p->next; } free(p); break; } else { printf("Input error!Please input again:"); } }while(1); return head; } void End() { system("cls"); system("color 74"); toxy(20,10); printf("Thanks for your using!^-^"); exit(0);//退出 getch(); } void print(match *head) { system("cls"); system("color 74"); match *p,*q,t1,t2,t3,*pt; for(p=head;p!=NULL;p=p->next)//球队排序,冒泡法排序 ,关于链表的排序有点小复杂哦~ { for(q=p->next;q!=NULL;q=q->next) //这里有3重排序 { if(p->integral<q->integral) { t1=*p; *p=*q; *q=t1; pt=p->next; p->next=q->next; q->next=pt; } else if(p->integral==q->integral) { if(p->pure<q->pure) { t2=*p; *p=*q; *q=t2; pt=p->next; p->next=q->next; q->next=pt; } else if(p->pure==q->pure) { if(p->goal<q->goal) { t3=*p; *p=*q; *q=t3; pt=p->next; p->next=q->next; q->next=pt; } } } } } p=head;//重新让p指向第一个结点 toxy(20,4); printf("--------------------the football match imformation----------------------\n"); toxy(20,6); printf("team_name win draw goal lose integral\n"); int m=8; while(p!=NULL) { toxy(20,m); printf("|%3s%10d%10d%10d%10d%10d|\n",p->name,p->num[1],p->num[2],p->goal,p->lose,p->integral); p=p->next; m+=2; } printf("\nPlease press any key return to MENU. "); getch(); } int main() { match *head; char x; do{ system("cls"); system("color 72"); menu(); x=getch(); switch(x) { case '1': head=creat(); break; case '2': head=Add(head); break; case '3': print(head); break; case '4': head=Del(head); break; case '5': head=Amend(head); break; case '6': End(); break; default: printf("Input error!Please input again:"); } }while(1);//永远为真 return 0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
赞 (0)