高校学科竞赛管理系统C语言代码实现管理员功能,管理员能将实现保存在文件中的成批导入到系统中
时间: 2024-02-21 16:57:09 浏览: 71
管理员功能主要包含以下几个方面:
1. 成批导入功能
管理员可以将保存在文件中的数据批量导入到系统中,方便管理和统计。
2. 数据管理功能
管理员可以对系统中的数据进行增、删、改、查等操作,确保数据的准确性和完整性。
3. 用户管理功能
管理员可以对系统中的用户进行管理,包括添加、删除、修改用户信息等操作。
4. 系统设置功能
管理员可以对系统进行设置,包括修改系统配置、备份和恢复数据等操作。
下面是一个简单的高校学科竞赛管理系统的管理员功能的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 结构体定义
typedef struct {
char name[50]; // 名称
int id; // 编号
float score; // 成绩
} Record;
// 函数声明
void importData(char* filename, Record* data, int* count); // 成批导入函数
void addRecord(Record* data, int* count); // 添加记录函数
void deleteRecord(Record* data, int* count); // 删除记录函数
void updateRecord(Record* data, int* count); // 修改记录函数
void displayRecord(Record* data, int count); // 显示记录函数
void saveData(char* filename, Record* data, int count); // 数据保存函数
int main() {
Record data[1000]; // 最大存储记录数为 1000 条
int count = 0; // 记录数初始为 0
char filename[50]; // 文件名
printf("Please input filename: ");
scanf("%s", filename);
// 成批导入
importData(filename, data, &count);
// 管理员功能
int choice = 0;
while (1) {
printf("\nPlease choose a function:\n");
printf("1. Add record\n");
printf("2. Delete record\n");
printf("3. Update record\n");
printf("4. Display record\n");
printf("5. Save data\n");
printf("6. Exit\n");
printf("Your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addRecord(data, &count);
break;
case 2:
deleteRecord(data, &count);
break;
case 3:
updateRecord(data, &count);
break;
case 4:
displayRecord(data, count);
break;
case 5:
saveData(filename, data, count);
break;
case 6:
exit(0);
default:
printf("Invalid input!\n");
break;
}
}
return 0;
}
// 成批导入函数
void importData(char* filename, Record* data, int* count) {
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s!\n", filename);
exit(1);
}
while (!feof(fp)) {
fscanf(fp, "%s %d %f", data[*count].name, &data[*count].id, &data[*count].score);
(*count)++;
}
fclose(fp);
}
// 添加记录函数
void addRecord(Record* data, int* count) {
printf("\nPlease input name, id and score (separated by space):\n");
scanf("%s %d %f", data[*count].name, &data[*count].id, &data[*count].score);
(*count)++;
}
// 删除记录函数
void deleteRecord(Record* data, int* count) {
int id;
printf("\nPlease input the id of the record you want to delete:\n");
scanf("%d", &id);
int i, j;
for (i = 0; i < *count; i++) {
if (data[i].id == id) {
for (j = i; j < *count - 1; j++) {
data[j] = data[j + 1];
}
(*count)--;
printf("Record deleted successfully!\n");
return;
}
}
printf("Record not found!\n");
}
// 修改记录函数
void updateRecord(Record* data, int* count) {
int id;
printf("\nPlease input the id of the record you want to update:\n");
scanf("%d", &id);
int i;
for (i = 0; i < *count; i++) {
if (data[i].id == id) {
printf("Please input new name, id and score (separated by space):\n");
scanf("%s %d %f", data[i].name, &data[i].id, &data[i].score);
printf("Record updated successfully!\n");
return;
}
}
printf("Record not found!\n");
}
// 显示记录函数
void displayRecord(Record* data, int count) {
printf("\nName\t\tID\t\tScore\n");
int i;
for (i = 0; i < count; i++) {
printf("%s\t\t%d\t\t%.2f\n", data[i].name, data[i].id, data[i].score);
}
}
// 数据保存函数
void saveData(char* filename, Record* data, int count) {
FILE* fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file %s!\n", filename);
exit(1);
}
int i;
for (i = 0; i < count; i++) {
fprintf(fp, "%s %d %.2f\n", data[i].name, data[i].id, data[i].score);
}
fclose(fp);
}
```
这个代码实现了管理员功能中的成批导入、增、删、改、查和数据保存等功能,可以针对具体需求进行修改和扩展。
阅读全文