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)

相关推荐

  • C语言实现魔方比赛管理系统

    本文实例为大家分享了C语言实现魔方比赛管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILABLE 0 #define UNAVAILABLE 1 #define MAXNAME 30 #define CLEAR "cls"   typedef struct match{     char *name;     i

  • C语言实现歌手比赛系统

    本文实例为大家分享了C语言实现歌手比赛系统的具体代码,供大家参考,具体内容如下 一.项目简介 对一次歌手比赛的成绩进行管理输入每个选手的数据包括编号.姓名.十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分). 二.任务概述 要求歌手比赛系统实现对学生基本信息(如编号.姓名.性别等)及十个评委的成绩的管理(增加.删除.修改或更新.查询.统计.保存到文件.从文件装载等操作). 三.功能展示 四.思维导图 五.程序源码 #include<stdio.h> #include<

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

    本文实例为大家分享了c语言实现足球比赛积分统计系统的具体代码,供大家参考,具体内容如下 /* 足球比赛积分统计系统    作者:施瑞文    时间:2018.2 */   //为简单化,这里没有加上文件的操作  #include <stdio.h> #include <stdlib.h> #include <string.h> #include<windows.h> #include<conio.h> #define LEN sizeof(mat

  • ASP.NET MVC 3实现访问统计系统

    运营网站,我们经常需要分析用户的行为.用户的习惯,用户看重网站的哪一部分,哪一部分是对用户有用的之类的信息,这些信息从哪里来,这时我们就需要用到访问统计系统了. 网上已经有很多的统计系统,如站长统计.百度统计.谷歌分析之类的,别人的东西始终是别人的,为什么我们不自己实现统计的功能呢,而且自己写的可以实现一些特殊的功能,如登录,下单行为,能够更好的融合自己的系统! 下面我们就用ASP.NET MVC 3来实现一个访问统计系统!首先,使用程序生成一段js代码,包括读写Cookie,及写入一个唯一值到

  • PHP递归统计系统中代码行数

    本文实例为大家分享了PHP递归统计系统中代码行数的具体代码,供大家参考,具体内容如下 1.统计代码行数,必然用到的两个关键的知识点:函数递归以及文件读取. 函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环 function A($param){ if('condition') A($param_son); else return $result; } 在文件读取中,有很多读取方式,采用了file()读取,按行读取,形成一个数组. $file_open = file($file);

  • go语言之给定英语文章统计单词数量(go语言小练习)

    给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出.思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下: package main import ( "fmt" "sort" ) func wordCounterV1(str string) { /*定义变量*/ stringSlice := str[:] temp := str[:] wordStatistic := make(map[string]int) /*把所有出现的单

  • C语言实现英文文本词频统计

    这几天写了一个基于C语言对文本词频进行统计的程序,开发及调试环境:mac集成开发环境Xcode:测试文本,马丁.路德金的<I have a dream>原文演讲稿. 主要运行步骤: 1. 打开文本把文本内容读入流中并且开辟相应空间放入内存 2 .对文本内容进行处理,去除大写字母(转化为小写),去除特殊字符 3. 基于单链表对词频进行统计 4. 把统计结果进行归并排序 5.打印输出全部词频或者频率最高的10个单词和其出现次数 6.释放所有结点消耗的内存 废话不多说,上代码! // // main

  • C语言实现乒乓球比赛

    本文实例为大家分享了C语言实现乒乓球比赛的具体代码,供大家参考,具体内容如下 1).基本要求 用8个LED发光管(红黄绿)的来回滚动显示来模拟打乒乓球时乒乓球在两边球台上的来回运动.比赛双方用按钮/开关(双方各用1个按钮/开关)的方法来模拟发球与接球,即发球方按动其控制的按钮/开关/健,球从发球方一侧向对方运动(LED发光管从发球方到对方逐个点亮,滚动显示),当球运动至接球方时,接球方立即按动其控制的按钮/开关/键,"击球"使球"弹回"发球方一侧,如此周而复始,直至

  • C语言实现ATM机存取款系统

    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统. 主要功能有: 利用三种方法查询.开户.登陆.菜单.取款.修改密码.存款.转账.创建个人信息.输出.删除.增加.退出. 是一个功能齐全,完备的ATM机系统. #include<stdio.h> #include<string.h> #include<stdlib.h> struct per //定义结构体 { char name

  • C语言编程银行ATM存取款系统实现源码

    目录 一.课程设计的目的 二.课程设计的题目 三.设计内容 银行ATM存取款系统 实现的效果 源码 业务流程 1.用户开户 2.登录流程 3.密码修改 这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借鉴. 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容 (主要技

  • Unity 制作一个分数统计系统

    项目中经常遇到分数统计的需求,例如我们执行了某项操作或做了某个题目,操作正确则计分,相反则不计分失去该项分数,为了应对需求需要一个分数统计系统. 首先定义一个分数信息的数据结构,使用Serializable特性使其可序列化: using System; using UnityEngine; namespace SK.Framework { /// <summary> /// 分数信息 /// </summary> [Serializable] public class ScoreI

随机推荐