部分源码,完整源码看截图
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
struct Student {
int id;
char name[50];
char gender[10];
char birthdate[20];
char address[100];
float scores[5];
};
void displayMenu() {
//企鹅联系----------3765140556
printf("\n**********************************************************************\n");
printf("********** 欢迎来到学生成绩管理系统 *********\n");
printf("**********************************************************************\n");
printf("* 1. 添加学生信息 *\n");
printf("* 2. 修改学生信息 *\n");
printf("* 3. 删除学生信息 *\n");
printf("* 4. 显示学生信息 *\n");
printf("* 5. 计算平均分 *\n");
printf("* 6. 学生成绩排序 *\n");
printf("* 7. 查找不及格的名单 *\n");
printf("* 8. 查找某一分数段的名单 *\n");
printf("* 0. 退出系统 *\n");
printf("**********************************************************************\n");
}
void addStudent(struct Student students[], int *count) {
// 检查学生数量是否达到上限
if (*count >= MAX_STUDENTS) {
printf("无法添加更多的学生信息。\n");
return;
}
struct Student student;
// 输入学生信息
printf("请输入学号: ");
scanf("%d", &student.id);
printf("请输入姓名: ");
scanf("%s", student.name);
printf("请输入性别: ");
scanf("%s", student.gender);
printf("请输入出生年月: ");
scanf("%s", student.birthdate);
printf("请输入家庭地址: ");
scanf("%s", student.address);
printf("请输入各科成绩: ");
for (int i = 0; i < 5; i++) {
scanf("%f", &student.scores[i]);
}
// 将学生信息添加到数组中
students[*count] = student;
(*count)++;
printf("成功添加学生信息。\n");
}
void displayStudents(struct Student students[], int count) {
// 检查学生数量是否为0
if (count == 0) {
printf("没有学生信息。\n");
return;
}
// 显示学生信息表头
printf("\n学号\t姓名\t性别\t出生年月\t家庭地址\t数学\t英语\t物理\t化学\t生物\n");
// 遍历学生信息数组并显示每个学生的信息
for (int i = 0; i < count; i++) {
struct Student student = students[i];
printf("%d\t%s\t%s\t%s\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
student.id, student.name, student.gender, student.birthdate, student.address,
student.scores[0], student.scores[1], student.scores[2], student.scores[3], student.scores[4]);
}
}
void saveStudents(struct Student students[], int count) {
// 打开文件以写入学生信息
FILE *file = fopen("students.txt", "w");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
// 将学生信息写入文件中
for (int i = 0; i < count; i++) {
struct Student student = students[i];
fprintf(file, "%d %s %s %s %s %.2f %.2f %.2f %.2f %.2f\n",
student.id, student.name, student.gender, student.birthdate, student.address,
student.scores[0], student.scores[1], student.scores[2], student.scores[3], student.scores[4]);
}
// 关闭文件
fclose(file);
printf("学生信息保存成功。\n");
}
void loadStudents(struct Student students[], int *count) {
// 打开文件以读取学生信息
FILE *file = fopen("students.txt", "r");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
*count = 0;
// 从文件中读取学生信息并将其存储到数组中
while (!feof(file)) {
struct Student student;
int result = fscanf(file, "%d %s %s %s %s %f %f %f %f %f",
&student.id, student.name, student.gender, student.birthdate, student.address,
&student.scores[0], &student.scores[1], &student.scores[2], &student.scores[3], &student.scores[4]);
if (result == 10) {
students[*count] = student;
(*count)++;
}
}
// 关闭文件
fclose(file);
printf("学生信息加载成功。\n");
}