C语言校运动会管理系统代码
时间: 2023-08-01 07:07:08 浏览: 55
很抱歉,我无法提供完整的C语言校运动会管理系统代码,因为这是一个相对复杂的项目,需要考虑到很多细节问题,而且涉及到具体的数据结构和算法设计等方面。但是,我可以提供一些参考代码,帮助您了解这个项目的一些基本实现思路。
1. 运动员信息管理模块
1.1 定义运动员结构体
```c
struct Athlete {
int id; // 运动员编号
char name[20]; // 运动员姓名
char gender[4]; // 运动员性别
char grade[10]; // 运动员年级
char className[20]; // 运动员班级
char project[20]; // 参赛项目
float score; // 成绩
};
```
1.2 运动员信息录入
```c
void addAthlete() {
struct Athlete athlete;
printf("请输入运动员编号:");
scanf("%d", &athlete.id);
printf("请输入运动员姓名:");
scanf("%s", athlete.name);
printf("请输入运动员性别:");
scanf("%s", athlete.gender);
printf("请输入运动员年级:");
scanf("%s", athlete.grade);
printf("请输入运动员班级:");
scanf("%s", athlete.className);
printf("请输入参赛项目:");
scanf("%s", athlete.project);
printf("请输入成绩:");
scanf("%f", &athlete.score);
// 将运动员信息写入文件
FILE *fp = fopen("athlete.dat", "ab+");
fwrite(&athlete, sizeof(struct Athlete), 1, fp);
fclose(fp);
printf("运动员信息录入成功!\n");
}
```
1.3 运动员信息查询
```c
void queryAthlete() {
int id;
printf("请输入要查询的运动员编号:");
scanf("%d", &id);
// 从文件中查找运动员信息
FILE *fp = fopen("athlete.dat", "rb");
struct Athlete athlete;
bool found = false;
while (fread(&athlete, sizeof(struct Athlete), 1, fp)) {
if (athlete.id == id) {
printf("编号\t姓名\t性别\t年级\t班级\t项目\t成绩\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\n", athlete.id, athlete.name, athlete.gender, athlete.grade, athlete.className, athlete.project, athlete.score);
found = true;
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该运动员信息!\n");
}
}
```
1.4 运动员信息修改
```c
void modifyAthlete() {
int id;
printf("请输入要修改的运动员编号:");
scanf("%d", &id);
// 从文件中查找运动员信息
FILE *fp = fopen("athlete.dat", "rb+");
struct Athlete athlete;
bool found = false;
while (fread(&athlete, sizeof(struct Athlete), 1, fp)) {
if (athlete.id == id) {
printf("编号\t姓名\t性别\t年级\t班级\t项目\t成绩\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\n", athlete.id, athlete.name, athlete.gender, athlete.grade, athlete.className, athlete.project, athlete.score);
printf("请输入修改后的运动员姓名:");
scanf("%s", athlete.name);
printf("请输入修改后的运动员性别:");
scanf("%s", athlete.gender);
printf("请输入修改后的运动员年级:");
scanf("%s", athlete.grade);
printf("请输入修改后的运动员班级:");
scanf("%s", athlete.className);
printf("请输入修改后的参赛项目:");
scanf("%s", athlete.project);
printf("请输入修改后的成绩:");
scanf("%f", &athlete.score);
fseek(fp, -sizeof(struct Athlete), SEEK_CUR);
fwrite(&athlete, sizeof(struct Athlete), 1, fp);
found = true;
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该运动员信息!\n");
} else {
printf("运动员信息修改成功!\n");
}
}
```
1.5 运动员信息删除
```c
void deleteAthlete() {
int id;
printf("请输入要删除的运动员编号:");
scanf("%d", &id);
// 从文件中查找运动员信息
FILE *fp = fopen("athlete.dat", "rb");
FILE *temp = fopen("temp.dat", "wb");
struct Athlete athlete;
bool found = false;
while (fread(&athlete, sizeof(struct Athlete), 1, fp)) {
if (athlete.id != id) {
fwrite(&athlete, sizeof(struct Athlete), 1, temp);
} else {
found = true;
}
}
fclose(fp);
fclose(temp);
if (!found) {
printf("未找到该运动员信息!\n");
} else {
remove("athlete.dat");
rename("temp.dat", "athlete.dat");
printf("运动员信息删除成功!\n");
}
}
```
2. 赛程安排模块
2.1 定义赛程结构体
```c
struct Schedule {
char project[20]; // 比赛项目
char date[20]; // 比赛日期
char time[20]; // 比赛时间
char location[50]; // 比赛地点
};
```
2.2 赛程安排录入
```c
void addSchedule() {
struct Schedule schedule;
printf("请输入比赛项目:");
scanf("%s", schedule.project);
printf("请输入比赛日期:");
scanf("%s", schedule.date);
printf("请输入比赛时间:");
scanf("%s", schedule.time);
printf("请输入比赛地点:");
scanf("%s", schedule.location);
// 将赛程信息写入文件
FILE *fp = fopen("schedule.dat", "ab+");
fwrite(&schedule, sizeof(struct Schedule), 1, fp);
fclose(fp);
printf("赛程安排录入成功!\n");
}
```
2.3 赛程安排查询
```c
void querySchedule() {
char project[20];
printf("请输入要查询的比赛项目:");
scanf("%s", project);
// 从文件中查找赛程信息
FILE *fp = fopen("schedule.dat", "rb");
struct Schedule schedule;
bool found = false;
while (fread(&schedule, sizeof(struct Schedule), 1, fp)) {
if (strcmp(schedule.project, project) == 0) {
printf("项目\t日期\t时间\t地点\n");
printf("%s\t%s\t%s\t%s\n", schedule.project, schedule.date, schedule.time, schedule.location);
found = true;
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该比赛项目的赛程安排!\n");
}
}
```
2.4 赛程安排修改
```c
void modifySchedule() {
char project[20];
printf("请输入要修改的比赛项目:");
scanf("%s", project);
// 从文件中查找赛程信息
FILE *fp = fopen("schedule.dat", "rb+");
struct Schedule schedule;
bool found = false;
while (fread(&schedule, sizeof(struct Schedule), 1, fp)) {
if (strcmp(schedule.project, project) == 0) {
printf("项目\t日期\t时间\t地点\n");
printf("%s\t%s\t%s\t%s\n", schedule.project, schedule.date, schedule.time, schedule.location);
printf("请输入修改后的比赛日期:");
scanf("%s", schedule.date);
printf("请输入修改后的比赛时间:");
scanf("%s", schedule.time);
printf("请输入修改后的比赛地点:");
scanf("%s", schedule.location);
fseek(fp, -sizeof(struct Schedule), SEEK_CUR);
fwrite(&schedule, sizeof(struct Schedule), 1, fp);
found = true;
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该比赛项目的赛程安排!\n");
} else {
printf("赛程安排修改成功!\n");
}
}
```
2.5 赛程安排删除
```c
void deleteSchedule() {
char project[20];
printf("请输入要删除的比赛项目:");
scanf("%s", project);
// 从文件中查找赛程信息
FILE *fp = fopen("schedule.dat", "rb");
FILE *temp = fopen("temp.dat", "wb");
struct Schedule schedule;
bool found = false;
while (fread(&schedule, sizeof(struct Schedule), 1, fp)) {
if (strcmp(schedule.project, project) != 0) {
fwrite(&schedule, sizeof(struct Schedule), 1, temp);
} else {
found = true;
}
}
fclose(fp);
fclose(temp);
if (!found) {
printf("未找到该比赛项目的赛程安排!\n");
} else {
remove("schedule.dat");
rename("temp.dat", "schedule.dat");
printf("赛程安排删除成功!\n");
}
}
```
3. 成绩统计模块
```c
void calculateScore() {
char project[20];
printf("请输入要计算成绩的项目:");
scanf("%s", project);
// 从文件中查找参加该项目的运动员信息
FILE *fp = fopen("athlete.dat", "rb");
struct Athlete athlete;
bool found = false;
float maxScore = 0;
char winner[20];
while (fread(&athlete, sizeof(struct Athlete), 1, fp)) {
if (strcmp(athlete.project, project) == 0) {
found = true;
if (athlete.score > maxScore) {
maxScore = athlete.score;
strcpy(winner, athlete.name);
}
}
}
fclose(fp);
if (!found) {
printf("未找到参加该项目的运动员信息!\n");
} else {
printf("获胜者:%s\n", winner);
printf("成绩:%f\n", maxScore);
}
}
```
4. 数据备份模块
```c
void backupData() {
FILE *src = fopen("athlete.dat", "rb");
FILE *dst = fopen("backup.dat", "wb");
char buf[1024];
int count;
while ((count = fread(buf, 1, sizeof(buf), src)) > 0) {
fwrite(buf, 1, count, dst);
}
fclose(src);
fclose(dst);
printf("数据备份成功!\n");
}
```
以上代码仅作为参考,具体实现还需要考虑到更多的细节问题,如数据校验、界面设计等。