// 导入所需的头文件 #include <stdio.h> #include <string.h> // 定义学生结构体 typedef struct { char number[11]; // 学号 char name[20]; // 姓名 char gender[5]; // 性别 char class[20]; // 班级 int data_structure; // 数据结构成绩 int linux_programming; // linux编程基础成绩 int python_programming; // python程序设计成绩 } Student; // 定义函数原型 void readFromFile(Student students[], int *numStudents); void writeToFile(Student students[], int numStudents); void printStudent(Student student); void printStudents(Student students[], int numStudents); void sortByTotalScore(Student students[], int numStudents); void sortByAverageScore(Student students[], int numStudents); int main() { Student students[20]; // 最多存储20个学生信息 int numStudents = 0; // 当前学生数量 int choice; // 从文件中读取学生信息 readFromFile(students, &numStudents); do { // 显示功能菜单 printf("\n请选择功能:\n"); printf("1. 按班级顺序输出学生信息列表\n"); printf("2. 创建:插入一条学生信息\n"); printf("3. 删除:按学号删除一条学生记录\n"); printf("4. 修改:修改某位学生的课程成绩\n"); printf("5. 查找:按照学生姓名查找学生某门课程成绩\n"); printf("6. 排序:统计每个学生的总分、平均分并排序\n"); printf("7. 退出程序\n"); printf("\n请输入选择:"); scanf("%d", &choice); switch(choice) { case 1: printf("按班级顺序输出学生信息列表:\n"); printStudents(students, numStudents); break; // 实现插入、删除、修改、查找、排序功能 // ... case 7: printf("退出程序\n"); break; default: printf("无效选择,请重新选择\n"); } } while(choice != 7); // 退出程序前将学生信息写入文件 writeToFile(students, numStudents); return 0; } // 从文件中读取学生信息 void readFromFile(Student students[], int *numStudents) { FILE *file = fopen("students.txt", "r"); if (file) { while (fscanf(file, "%s %s %s %s %d %d %d\n", students[*numStudents].number, students[*numStudents].name, students[*numStudents].gender, students[*numStudents].class, &students[*numStudents].data_structure, &students[*numStudents].linux_programming, &students[*numStudents].python_programming) != EOF) { (*numStudents)++; } fclose(file); } } // 将学生信息写入文件 void writeToFile(Student students[], int numStudents) { FILE *file = fopen("students.txt", "w"); for (int i = 0; i < numStudents; i++) { fprintf(file, "%s %s %s %s %d %d %d\n", students[i].number, students[i].name, students[i].gender, students[i].class, students[i].data_structure, students[i].linux_programming, students[i].python_programming); } fclose(file); } // 输出单个学生信息 void printStudent(Student student) { printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\n", student.number, student.name, student.gender, student.class, student.data_structure, student.linux_programming, student.python_programming); } // 输出所有学生信息 void printStudents(Student students[], int numStudents) { printf("序号\t学号\t姓名\t性别\t班级\t数据结构\tlinux编程基础\tpython程序设计\n"); for (int i = 0; i < numStudents; i++) { printf("%d\t", i + 1); printStudent(students[i]); } } // 按总分排序学生信息 void sortByTotalScore(Student students[], int numStudents) { // 实现排序功能,可选择冒泡排序、快速排序等算法 } // 按平均分排序学生信息 void sortByAverageScore(Student students[], int numStudents) { // 实现排序功能,可选择选择冒泡排序、快速排序等算法 } [2024-12-15 22:08:58 | AI写代码神器 | 2547点数解答]