高校学科竞赛管理系统设计C语言代码通过文件实现教师的审核功能
时间: 2024-01-08 17:02:03 浏览: 64
学生成绩管理系统C语言代码实现
5星 · 资源好评率100%
以下是一个简单的示例程序,实现了通过文件的方式实现教师审核功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体,用于存储竞赛信息
struct competition {
int id; // 竞赛编号
char name[50]; // 竞赛名称
char category[20]; // 竞赛类别
int status; // 竞赛状态(0:未审核,1:已通过,2:未通过)
};
// 定义一个函数,用于读取竞赛信息
void read_competition(struct competition *cp, int n) {
int i;
for (i = 0; i < n; i++) {
printf("请输入第 %d 个竞赛的编号:", i + 1);
scanf("%d", &(cp[i].id));
printf("请输入第 %d 个竞赛的名称:", i + 1);
scanf("%s", cp[i].name);
printf("请输入第 %d 个竞赛的类别:", i + 1);
scanf("%s", cp[i].category);
cp[i].status = 0; // 初始化状态为未审核
}
}
// 定义一个函数,用于显示竞赛信息
void display_competition(struct competition *cp, int n) {
int i;
printf("竞赛编号\t竞赛名称\t竞赛类别\t竞赛状态\n");
for (i = 0; i < n; i++) {
printf("%d\t\t%s\t\t%s\t\t", cp[i].id, cp[i].name, cp[i].category);
switch (cp[i].status) {
case 0:
printf("未审核\n");
break;
case 1:
printf("已通过\n");
break;
case 2:
printf("未通过\n");
break;
}
}
}
// 定义一个函数,用于审核竞赛
void approve_competition(struct competition *cp, int n) {
int id, i;
printf("请输入要审核的竞赛编号:");
scanf("%d", &id);
for (i = 0; i < n; i++) {
if (cp[i].id == id) {
printf("请输入审核结果(1:通过,2:未通过):");
scanf("%d", &(cp[i].status));
printf("竞赛审核完成!\n");
return;
}
}
printf("未找到编号为 %d 的竞赛!\n", id);
}
// 定义一个函数,用于保存竞赛信息到文件
void save_competition(struct competition *cp, int n, char *filename) {
FILE *fp = fopen(filename, "wb");
if (fp == NULL) {
printf("无法打开文件 %s!\n", filename);
return;
}
fwrite(&n, sizeof(int), 1, fp); // 先将竞赛数量写入文件
fwrite(cp, sizeof(struct competition), n, fp); // 再将竞赛信息写入文件
fclose(fp);
}
// 定义一个函数,用于从文件中读取竞赛信息
int load_competition(struct competition *cp, char *filename) {
FILE *fp = fopen(filename, "rb");
if (fp == NULL) {
printf("无法打开文件 %s!\n", filename);
return 0;
}
int n;
fread(&n, sizeof(int), 1, fp); // 先读取竞赛数量
fread(cp, sizeof(struct competition), n, fp); // 再读取竞赛信息
fclose(fp);
return n; // 返回读取的竞赛数量
}
int main() {
struct competition cp[100]; // 定义一个竞赛数组,最多存储100个竞赛信息
int n, choice;
char filename[50];
printf("请输入竞赛数量:");
scanf("%d", &n);
read_competition(cp, n); // 读取竞赛信息
printf("请输入文件名:");
scanf("%s", filename);
save_competition(cp, n, filename); // 将竞赛信息保存到文件
while (1) {
printf("请选择要进行的操作:\n");
printf("1. 显示竞赛信息\n");
printf("2. 审核竞赛\n");
printf("3. 退出程序\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
n = load_competition(cp, filename); // 从文件中读取竞赛信息
if (n > 0) {
display_competition(cp, n); // 显示竞赛信息
}
break;
case 2:
n = load_competition(cp, filename); // 从文件中读取竞赛信息
if (n > 0) {
approve_competition(cp, n); // 审核竞赛
save_competition(cp, n, filename); // 将竞赛信息保存到文件
}
break;
case 3:
exit(0); // 退出程序
default:
printf("无效选项!\n");
}
}
return 0;
}
```
该程序使用了文件读写操作,通过 save_competition 函数将竞赛信息保存到文件,通过 load_competition 函数从文件中读取竞赛信息。在审核竞赛时,用户需要输入要审核的竞赛编号,并输入审核结果。审核结果包括两个选项:1 表示通过,2 表示未通过。审核完成后,程序会自动将竞赛信息保存到文件。在显示竞赛信息时,程序会先从文件中读取竞赛信息,然后显示在屏幕上。
阅读全文