当前位置:首页 > 开发教程 > C语言 >

c语言实现足球比赛积分统计系统

时间:2022-05-30 11:32 来源:未知 作者:深拥与我 收藏

这篇文章主要为大家详细介绍了c语言实现足球比赛积分统计系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了c语言实现足球比赛积分统计系统的具体代码,供大家参考,具体内容如下

c语言实现足球比赛积分统计系统

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持源码搜藏网。


下一篇:没有了

C语言阅读排行

最新文章