2301_77054721 2023-06-14 15:52 采纳率: 66.7%
浏览 130
已结题

学校运动会管理系统c语言

大一C语言,看问题描述,不要给我发个链接去参考别人的,有一点不一样就要改好多,代码我自己也又不是不会找,要能改好了给我也行,可以先发运行截图,价格也可以协商

学校运动会管理系统
问题描述:
1.运动会管理系统需要支持运动项目创建,包括但不限于:乒乓球,跳远,跳高,短跑,接力赛
2.运动项目分为:男子组,女子组
3.运动员需要通过系统进行报名,选择相应的项目和组别
4.初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;
5.各项目名次取法有如下几种:
取前5名:第1名得分7,2-5,3名得3,4-2,5名1;
6.由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
7.所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报
表,查看参赛院系信息、获奖运动员、比赛项目信息等。

  • 写回答

2条回答 默认 最新

  • Minuw 2023-06-14 16:05
    关注

    运动会管理系统

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    // 运动员结构体
    typedef struct {
        char name[20];
        char department[20];
        int score;
    } Athlete;
    
    // 运动项目结构体
    typedef struct {
        char name[20];
        char group[10];
        int numAthletes;
        Athlete* athletes[100];
    } Sport;
    
    // 运动会结构体
    typedef struct {
        int numDepartments;
        int numMaleSports;
        int numFemaleSports;
        char** departments;
        Sport** maleSports;
        Sport** femaleSports;
    } SportsMeeting;
    
    // 创建运动会
    SportsMeeting* createSportsMeeting(int numDepartments, int numMaleSports, int numFemaleSports) {
        SportsMeeting* meeting = (SportsMeeting*)malloc(sizeof(SportsMeeting));
        meeting->numDepartments = numDepartments;
        meeting->numMaleSports = numMaleSports;
        meeting->numFemaleSports = numFemaleSports;
        meeting->departments = (char**)malloc(numDepartments * sizeof(char*));
        meeting->maleSports = (Sport**)malloc(numMaleSports * sizeof(Sport*));
        meeting->femaleSports = (Sport**)malloc(numFemaleSports * sizeof(Sport*));
        return meeting;
    }
    
    // 销毁运动会
    void destroySportsMeeting(SportsMeeting* meeting) {
        for (int i = 0; i < meeting->numDepartments; i++) {
            free(meeting->departments[i]);
        }
        free(meeting->departments);
        for (int i = 0; i < meeting->numMaleSports; i++) {
            free(meeting->maleSports[i]);
        }
        free(meeting->maleSports);
        for (int i = 0; i < meeting->numFemaleSports; i++) {
            free(meeting->femaleSports[i]);
        }
        free(meeting->femaleSports);
        free(meeting);
    }
    
    // 添加运动项目
    void addSport(SportsMeeting* meeting, int index, const char* name, const char* group) {
        Sport* sport = (Sport*)malloc(sizeof(Sport));
        strcpy(sport->name, name);
        strcpy(sport->group, group);
        sport->numAthletes = 0;
        meeting->maleSports[index] = sport;
    }
    
    // 注册运动员
    void registerAthlete(SportsMeeting* meeting, int sportIndex, const char* department, const char* name) {
        Athlete* athlete = (Athlete*)malloc(sizeof(Athlete));
        strcpy(athlete->name, name);
        strcpy(athlete->department, department);
        athlete->score = 0;
        Sport* sport;
        if (sportIndex < meeting->numMaleSports) {
            sport = meeting->maleSports[sportIndex];
        }
        else {
            sport = meeting->femaleSports[sportIndex - meeting->numMaleSports];
        }
        if (sport->numAthletes < 100) {
            sport->athletes[sport->numAthletes] = athlete;
            sport->numAthletes++;
        }
        else {
            printf("该项目已报满\n");
        }
    }
    
    // 输入比赛结果
    void inputResults(SportsMeeting* meeting) {
        for (int i = 0; i < meeting->numMaleSports; i++) {
            Sport* sport = meeting->maleSports[i];
            printf("请输入%s(%s)的比赛结果:\n", sport->name, sport->group);
            for (int j = 0; j < sport->numAthletes; j++) {
                printf("请输入第%d名运动员的得分:", j + 1);
                scanf("%d", &(sport->athletes[j]->score));
            }
        }
        for (int i = 0; i < meeting->numFemaleSports; i++) {
            Sport* sport = meeting->femaleSports[i];
            printf("请输入%s(%s)的比赛结果:\n", sport->name, sport->group);
            for (int j = 0; j < sport->numAthletes; j++) {
                printf("请输入第%d名运动员的得分:", j + 1);
                scanf("%d", &(sport->athletes[j]->score));
            }
        }
    }
    
    // 查询院系比赛成绩
    void queryDepartmentScore(SportsMeeting* meeting, const char* department) {
        int totalScore = 0;
        for (int i = 0; i < meeting->numMaleSports; i++) {
            Sport* sport = meeting->maleSports[i];
            for (int j = 0; j < sport->numAthletes; j++) {
                if (strcmp(sport->athletes[j]->department, department) == 0) {
                    totalScore += sport->athletes[j]->score;
                }
            }
        }
        for (int i = 0; i < meeting->numFemaleSports; i++) {
            Sport* sport = meeting->femaleSports[i];
            for (int j = 0; j < sport->numAthletes; j++) {
                if (strcmp(sport->athletes[j]->department, department) == 0) {
                    totalScore += sport->athletes[j]->score;
                }
            }
        }
        printf("%s院系的总分为:%d\n", department, totalScore);
    }
    
    // 查询个人比赛成绩
    void queryAthleteScore(SportsMeeting* meeting, const char* name) {
        int totalScore = 0;
        for (int i = 0; i < meeting->numMaleSports; i++) {
            Sport* sport = meeting->maleSports[i];
            for (int j = 0; j < sport->numAthletes; j++) {
                if (strcmp(sport->athletes[j]->name, name) == 0) {
                    totalScore += sport->athletes[j]->score;
                }
            }
        }
        for (int i = 0; i < meeting->numFemaleSports; i++) {
            Sport* sport = meeting->femaleSports[i];
            for (int j = 0; j < sport->numAthletes; j++) {
                if (strcmp(sport->athletes[j]->name, name) == 0) {
                    totalScore += sport->athletes[j]->score;
                }
            }
        }
        printf("%s的总分为:%d\n", name, totalScore);
    }
    
    int main() {
        int numDepartments, numMaleSports, numFemaleSports;
        printf("请输入院系数量:");
        scanf("%d", &numDepartments);
        printf("请输入男子项目数量:");
        scanf("%d", &numMaleSports);
        printf("请输入女子项目数量:");
        scanf("%d", &numFemaleSports);
    
        SportsMeeting* meeting = createSportsMeeting(numDepartments, numMaleSports, numFemaleSports);
    
        // 输入院系名称
        for (int i = 0; i < numDepartments; i++) {
            char department[100];
            printf("请输入第%d个院系名称:", i + 1);
            scanf("%s", department);
            meeting->departments[i] = (char*)malloc(strlen(department) * sizeof(char));
            strcpy(meeting->departments[i], department);
        }
    
        // 输入男子项目名称和分组
        for (int i = 0; i < numMaleSports; i++) {
            char name[100];
            char group[100];
            printf("请输入第%d个男子项目名称:", i + 1);
            scanf("%s", name);
            printf("请输入第%d个男子项目分组:", i + 1);
            scanf("%s", group);
            addSport(meeting, i, name, group);
        }
    
        // 输入女子项目名称和分组
        for (int i = 0; i < numFemaleSports; i++) {
            char name[100];
            char group[100];
            printf("请输入第%d个女子项目名称:", i + 1);
            scanf("%s", name);
            printf("请输入第%d个女子项目分组:", i + 1);
            scanf("%s", group);
            addSport(meeting, numMaleSports + i, name, group);
        }
    
        // 注册运动员
        printf("请输入注册运动员的个数:");
        int numAthletes;
        scanf("%d", &numAthletes);
        for (int i = 0; i < numAthletes; i++) {
            char department[100];
            char name[100];
            int sportIndex;
            printf("请输入第%d个运动员所在院系:", i + 1);
            scanf("%s", department);
            printf("请输入第%d个运动员的姓名:", i + 1);
            scanf("%s", name);
            printf("请输入第%d个运动员参加的项目序号:", i + 1);
            scanf("%d", &sportIndex);
            registerAthlete(meeting, sportIndex, department, name);
        }
    
        // 输入比赛结果
        inputResults(meeting);
    
        // 查询院系比赛成绩
        printf("请输入要查询的院系名称:");
        char department[100];
        scanf("%s", department);
        queryDepartmentScore(meeting, department);
    
        // 查询个人比赛成绩
        printf("请输入要查询的运动员姓名:");
        char name[100];
        scanf("%s", name);
        queryAthleteScore(meeting, name);
    
        destroySportsMeeting(meeting);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月14日
  • 已采纳回答 6月14日
  • 修改了问题 6月14日
  • 创建了问题 6月14日