高校学科竞赛管理系统C语言实现管理员功能,管理员有重置密码功能,添加竞赛和学生信息功能,查询竞赛和学生信息功能
时间: 2024-02-11 10:07:15 浏览: 88
以下是一个简单的高校学科竞赛管理系统的C语言实现,包括管理员的重置密码、添加竞赛和学生信息以及查询竞赛和学生信息功能。该系统使用了文件存储数据,数据存储在文本文件中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生信息结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
char gender[5]; // 性别
char major[20]; // 专业
char competition[20]; // 参赛项目
} Student;
// 竞赛信息结构体
typedef struct {
char name[20]; // 竞赛名称
char date[20]; // 举办时间
char organizer[20]; // 主办单位
} Competition;
// 重置管理员密码函数
void reset_password() {
char username[20];
char password[20];
char new_password[20];
int found = 0;
// 获取用户名和密码
printf("请输入管理员用户名:");
scanf("%s", username);
printf("请输入管理员密码:");
scanf("%s", password);
// 验证用户名和密码
if (strcmp(username, "admin") == 0 && strcmp(password, "admin123") == 0) {
found = 1;
}
if (found) {
// 获取新密码
printf("请输入新密码:");
scanf("%s", new_password);
// 更新密码
FILE *fp = fopen("admin.txt", "w");
fprintf(fp, "%s\n", username);
fprintf(fp, "%s\n", new_password);
fclose(fp);
printf("密码已重置。\n");
} else {
printf("用户名或密码错误。\n");
}
}
// 添加竞赛信息函数
void add_competition() {
Competition comp;
// 获取竞赛信息
printf("请输入竞赛名称:");
scanf("%s", comp.name);
printf("请输入举办时间:");
scanf("%s", comp.date);
printf("请输入主办单位:");
scanf("%s", comp.organizer);
// 写入文件
FILE *fp = fopen("competition.txt", "a");
fprintf(fp, "%s %s %s\n", comp.name, comp.date, comp.organizer);
fclose(fp);
printf("竞赛信息已添加。\n");
}
// 添加学生信息函数
void add_student() {
Student stu;
// 获取学生信息
printf("请输入学号:");
scanf("%s", stu.id);
printf("请输入姓名:");
scanf("%s", stu.name);
printf("请输入性别:");
scanf("%s", stu.gender);
printf("请输入专业:");
scanf("%s", stu.major);
printf("请输入参赛项目:");
scanf("%s", stu.competition);
// 写入文件
FILE *fp = fopen("student.txt", "a");
fprintf(fp, "%s %s %s %s %s\n", stu.id, stu.name, stu.gender, stu.major, stu.competition);
fclose(fp);
printf("学生信息已添加。\n");
}
// 查询竞赛信息函数
void query_competition() {
char name[20];
int found = 0;
// 获取竞赛名称
printf("请输入竞赛名称:");
scanf("%s", name);
// 读取文件
FILE *fp = fopen("competition.txt", "r");
Competition comp;
while (fscanf(fp, "%s %s %s", comp.name, comp.date, comp.organizer) != EOF) {
if (strcmp(name, comp.name) == 0) {
found = 1;
printf("竞赛名称:%s\n", comp.name);
printf("举办时间:%s\n", comp.date);
printf("主办单位:%s\n", comp.organizer);
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该竞赛信息。\n");
}
}
// 查询学生信息函数
void query_student() {
char id[20];
int found = 0;
// 获取学号
printf("请输入学号:");
scanf("%s", id);
// 读取文件
FILE *fp = fopen("student.txt", "r");
Student stu;
while (fscanf(fp, "%s %s %s %s %s", stu.id, stu.name, stu.gender, stu.major, stu.competition) != EOF) {
if (strcmp(id, stu.id) == 0) {
found = 1;
printf("学号:%s\n", stu.id);
printf("姓名:%s\n", stu.name);
printf("性别:%s\n", stu.gender);
printf("专业:%s\n", stu.major);
printf("参赛项目:%s\n", stu.competition);
break;
}
}
fclose(fp);
if (!found) {
printf("未找到该学生信息。\n");
}
}
int main() {
int choice;
// 主菜单循环
while (1) {
printf("欢迎使用高校学科竞赛管理系统!\n");
printf("1. 重置管理员密码\n");
printf("2. 添加竞赛信息\n");
printf("3. 添加学生信息\n");
printf("4. 查询竞赛信息\n");
printf("5. 查询学生信息\n");
printf("6. 退出系统\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
reset_password();
break;
case 2:
add_competition();
break;
case 3:
add_student();
break;
case 4:
query_competition();
break;
case 5:
query_student();
break;
case 6:
printf("再见!\n");
exit(0);
default:
printf("无效的选择。\n");
break;
}
}
return 0;
}
```
该系统实现了管理员的重置密码、添加竞赛和学生信息以及查询竞赛和学生信息功能。管理员用户名为"admin",密码为"admin123",存储在"admin.txt"文件中。竞赛信息存储在"competition.txt"文件中,每行为一个竞赛信息,包括竞赛名称、举办时间和主办单位。学生信息存储在"student.txt"文件中,每行为一个学生信息,包括学号、姓名、性别、专业和参赛项目。需要注意的是,该系统没有对数据进行加密或者进行其他安全处理,因此不适用于真实的系统。
阅读全文