大一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;
}