(C/C++)运动会分数统计(源码)

运动会分数统计(C/C++)

任务:参加运动会有10个学校,学校编号为1……10。比赛分成18个男子项目,和12个女子项目。项目编号为男子1……18,女子19……30。不同的项目取前三名积分,前三名的积分分别为:5、3、2。
功能要求:
a) 可以输入各个项目的前三名的成绩;
b) 能统计各学校总分;
c) 可以按学校编号或名称、学校总分、男女团体总分排序输出;
d) 数据存入文件并能随时查询 ;
e) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称;
输出形式:有中文提示,各学校分数为整型;
存储结构:根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

源码下载链接:运动会分数统计C/C++

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define L 20//数据最大长度
#define N 10//学校数
#define M 30//项目数
typedef struct RNode{//成绩结点
    char Name[L];//运动员姓名
    int ProNum;//项目编号
    char ProName[L];//项目名称
    char School_name[L];//学校名称
    int Rank;//排名
    char Score[L];//成绩
    struct RNode *next;
}Record;
typedef struct{//学校信息
    char name[L];//学校名称
    int num;//学校编号
    Record *RList;//学校成绩表
    int Total_score;//总分
    int Man_Total_score;//男子团体总分
    int Woman_Total_score;//女子团体总分
}School;
typedef struct{//项目
    char name[L];//项目名称
    int num;//项目编号
    Record *First;//第一名成绩信息
    Record *Second;//第二名成绩
    Record *Third;//第三名成绩
}Project;
typedef struct
{
    int num;
    int score;
}Pm;
Pm Schoolpm[N];
Pm Manpm[18];
Pm Womanpm[12];
int score[3]={5,3,2};//积分
School Schools[N];
Project Projects[M]={
  {"男子50m",1,NULL,NULL,NULL},{"男子100m",2,NULL,NULL,NULL},{"男子200m",3,NULL,NULL,NULL},{"男子400m",4,NULL,NULL,NULL},{"男子800m",5,NULL,NULL,NULL},
                     {"男子1000m",6,NULL,NULL,NULL},{"男子1500m",7,NULL,NULL,NULL},{"男子2000m",8,NULL,NULL,NULL},{"男子3000m",9,NULL,NULL,NULL},{"男子5000m",10,NULL,NULL,NULL},
                     {"男子跳高",11,NULL,NULL,NULL},{"男子跳远",12,NULL,NULL,NULL},{"男子4*100接力",13,NULL,NULL,NULL},{"男子实心球",14,NULL,NULL,NULL},{"男子飞饼",15,NULL,NULL,NULL},
                     {"50米自由泳",16,NULL,NULL,NULL},{"100米自由泳",17,NULL,NULL,NULL},{"男子羽毛球",18,NULL,NULL,NULL},{"女子50m",19,NULL,NULL,NULL},{"女子100m",20,NULL,NULL,NULL},
                     {"女子200m",21,NULL,NULL,NULL},{"女子400m",22,NULL,NULL,NULL},{"女子800m",23,NULL,NULL,NULL},{"女子1000m",24,NULL,NULL,NULL},{"女子1500m",25,NULL,NULL,NULL},
                     {"女子2000m",26,NULL,NULL,NULL},{"女子跳高",27,NULL,NULL,NULL},{"女子跳远",28,NULL,NULL,NULL},{"女子4*100接力",29,NULL,NULL,NULL},{"女子羽毛球",30,NULL,NULL,NULL}};
int str_to_int(char A[]){//字符串转数字
    int i=0,e=0,flag=1;
    if(A[0]=='-'){flag=-1;i++;}
    while(A[i]!='\0')
        e=e*10+(A[i++]-'0');
    return e*flag;
}
void GetName(char Info[]){//将用户输入的字符串处理为文件名
    char s[5]=".txt";
    int i=0,j=0;
    while(Info[i]!='\0')i++;
    while(s[j]!='\0')Info[i++]=s[j++];
    Info[i]='\0';
}
void qsort(Pm s[], int l, int r){
    int i = l, j = r;
    Pm tmp;
    if(i<j){
        tmp = s[i];
        while (i < j){   
            while (i < j && s[j].score <= tmp.score)    j--;
            s[i] = s[j];
            while (i < j && s[i].score >= tmp.score)    i++;
            s[j] = s[i];
        }
        s[i] = tmp;
        qsort(s, l, i - 1);
        qsort(s, i + 1, r);
    }
}
bool Empty(){//是否初始化
    return !(Schools[0].RList==NULL);
}
int Find(char *Info,char m){//查找学校或项目,两个模式,m:'S':查找学校;'P':查找项目
    int
  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[问题描述] 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) [基本要求] (1)可以输入各个项目的前三名或前五名的成绩; (2)能统计各学校总分 (3)可以按学校编号、学校总分、男女团体总分排序输出; (4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称) 输出形式:有中文提示,各学校分数为整形   界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值