首頁 > 軟體

c語言實現足球比賽積分統計系統

2022-05-30 14:02:03

本文範例為大家分享了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     integraln");
            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     integraln");
    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;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com