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

2024-01-12 01:50

本文主要是介绍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;
}

这篇关于c语言实现足球比赛积分统计系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596413

相关文章

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并