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

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

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

运动会管理系统


#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;
}

CHATGPT生成,能不能用自己试试吧

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_NAME_LENGTH 50
#define MAX_DEPARTMENTS 100
#define MAX_EVENTS 10
#define MAX_ATHLETES 1000

typedef struct {
    char name[MAX_NAME_LENGTH];
    int score;
} Athlete;

typedef struct {
    char name[MAX_NAME_LENGTH];
    int numAthletes;
    Athlete athletes[MAX_ATHLETES];
} Event;

typedef struct {
    char name[MAX_NAME_LENGTH];
    int numEvents;
    Event events[MAX_EVENTS];
} Department;

void createEvent(Event *event, const char *name, int numAthletes) {
    strcpy(event->name, name);
    event->numAthletes = numAthletes;
    for (int i = 0; i < numAthletes; i++) {
        strcpy(event->athletes[i].name, "");
        event->athletes[i].score = 0;
    }
}

void createDepartment(Department *department, const char *name, int numEvents) {
    strcpy(department->name, name);
    department->numEvents = numEvents;
    for (int i = 0; i < numEvents; i++) {
        createEvent(&(department->events[i]), "", 0);
    }
}

void enrollAthlete(Department *department, int eventIndex, int athleteIndex, const char *name) {
    strcpy(department->events[eventIndex].athletes[athleteIndex].name, name);
}

void inputScores(Department *department) {
    for (int i = 0; i < department->numEvents; i++) {
        printf("Enter scores for %s:\n", department->events[i].name);
        for (int j = 0; j < department->events[i].numAthletes; j++) {
            printf("Score for %s: ", department->events[i].athletes[j].name);
            scanf("%d", &(department->events[i].athletes[j].score));
        }
    }
}

void calculateTotalScores(Department *department, int *totalScores) {
    for (int i = 0; i < department->numEvents; i++) {
        for (int j = 0; j < department->events[i].numAthletes; j++) {
            totalScores[j] += department->events[i].athletes[j].score;
        }
    }
}

void printAthleteInfo(Department *department, const char *athleteName) {
    printf("Athlete: %s\n", athleteName);
    for (int i = 0; i < department->numEvents; i++) {
        for (int j = 0; j < department->events[i].numAthletes; j++) {
            if (strcmp(department->events[i].athletes[j].name, athleteName) == 0) {
                printf("%s: %d\n", department->events[i].name, department->events[i].athletes[j].score);
                break;
            }
        }
    }
}

void printDepartmentInfo(Department *department) {
    printf("Department: %s\n", department->name);
    for (int i = 0; i < department->numEvents; i++) {
        printf("Event: %s\n", department->events[i].name);
        for (int j = 0; j < department->events[i].numAthletes; j++) {
            printf("%s: %d\n", department->events[i].athletes[j].name, department->events[i].athletes[j].score);
        }
    }
}

void printTotalScores(int *totalScores, int numAthletes) {
    printf("Total Scores:\n");
    for (int i = 0; i < numAthletes; i++) {
        printf("Athlete: %d, Score: %d\n", i+1, totalScores[i]);
    }
}

int main() {
    int N, M, W;
    printf("Enter the number of departments: ");
    scanf("%d", &N);
    printf("Enter the number of events for men: ");
    scanf("%d", &M);
    printf("Enter the number of events for women: ");
    scanf("%d", &W);

    Department departments[MAX_DEPARTMENTS];
    int totalScores[MAX_ATHLETES] = {0};

    for (int i = 0; i < N; i++) {
        char departmentName[MAX_NAME_LENGTH];
        printf("Enter the name of department %d: ", i+1);
        scanf("%s", departmentName);
        createDepartment(&(departments[i]), departmentName, M + W);

        for (int j = 0; j < M; j++) {
            char eventName[MAX_NAME_LENGTH];
            printf("Enter the name of event %d for men: ", j+1);
            scanf("%s", eventName);
            createEvent(&(departments[i].events[j]), eventName, 0);
        }

        for (int j = M; j < M + W; j++) {
            char eventName[MAX_NAME_LENGTH];
            printf("Enter the name of event %d for women: ", j-M+1);
            scanf("%s", eventName);
            createEvent(&(departments[i].events[j]), eventName, 0);
        }
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M + W; j++) {
            int numAthletes;
            printf("Enter the number of athletes for department %s, event %s: ", departments[i].name, departments[i].events[j].name);
            scanf("%d", &numAthletes);
            departments[i].events[j].numAthletes = numAthletes;

            for (int k = 0; k < numAthletes; k++) {
                char athleteName[MAX_NAME_LENGTH];
                printf("Enter the name of athlete %d: ", k+1);
                scanf("%s", athleteName);
                enrollAthlete(&(departments[i]), j, k, athleteName);
            }
        }
    }

    inputScores(&(departments[0])); // Assuming only one department for simplicity

    calculateTotalScores(&(departments[0]), totalScores); // Assuming only one department for simplicity

    printAthleteInfo(&(departments[0]), "John"); // Assuming only one department for simplicity

    printDepartmentInfo(&(departments[0])); // Assuming only one department for simplicity

    printTotalScores(totalScores, departments[0].events[0].numAthletes); // Assuming only one department for simplicity

    return 0;
}