酷代码 AI
菜单

学生信息管理系统 题量: 1 满分: 100 作答时间:12-17 15:52至12-22 23:30 一. 简答题(共1题,100分) 1. (简答题) 学生信息管理系统 编程实现学生信息管理系统,学生信息包含:学号、姓名、性别、年龄、五门课成绩。 功能包括: 1、学生信息输入、输出。 2、分别按学号和姓名查询。 3、学生信息修改。 4、学生信息插入。 5、学生信息删除。 6、按照学生姓名进行排序。 7、将学生信息写入文件,再次运行时能够从文件中读出信息。 使用c语言实现

以下是一个使用 C 语言实现的学生信息管理系统的代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 100 #define COURSES 5 // 定义学生结构体 typedef struct { char id[20]; char name[50]; char gender[10]; int age; float scores[COURSES]; } Student; // 全局变量,存储学生信息 Student students[MAX_STUDENTS]; int studentCount = 0; // 从文件中读取学生信息 void readStudentsFromFile() { FILE *file = fopen("students.txt", "r"); if (file == NULL) { return; } studentCount = 0; while (studentCount < MAX_STUDENTS && fscanf(file, "%s %s %s %d", students[studentCount].id, students[studentCount].name, students[studentCount].gender, &students[studentCount].age) != EOF) { for (int i = 0; i < COURSES; i++) { fscanf(file, "%f", &students[studentCount].scores[i]); } studentCount++; } fclose(file); } // 将学生信息写入文件 void writeStudentsToFile() { FILE *file = fopen("students.txt", "w"); if (file == NULL) { printf("无法打开文件!\n"); return; } for (int i = 0; i < studentCount; i++) { fprintf(file, "%s %s %s %d", students[i].id, students[i].name, students[i].gender, students[i].age); for (int j = 0; j < COURSES; j++) { fprintf(file, " %.2f", students[i].scores[j]); } fprintf(file, "\n"); } fclose(file); } // 输入学生信息 void inputStudent() { if (studentCount >= MAX_STUDENTS) { printf("学生数量已达到上限!\n"); return; } printf("请输入学号:"); scanf("%s", students[studentCount].id); printf("请输入姓名:"); scanf("%s", students[studentCount].name); printf("请输入性别:"); scanf("%s", students[studentCount].gender); printf("请输入年龄:"); scanf("%d", &students[studentCount].age); printf("请输入五门课成绩:"); for (int i = 0; i < COURSES; i++) { scanf("%f", &students[studentCount].scores[i]); } studentCount++; writeStudentsToFile(); } // 输出学生信息 void outputStudents() { for (int i = 0; i < studentCount; i++) { printf("学号:%s,姓名:%s,性别:%s,年龄:%d,成绩:", students[i].id, students[i].name, students[i].gender, students[i].age); for (int j = 0; j < COURSES; j++) { printf("%.2f ", students[i].scores[j]); } printf("\n"); } } // 按学号查询 void queryById() { char id[20]; printf("请输入要查询的学号:"); scanf("%s", id); for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].id, id) == 0) { printf("学号:%s,姓名:%s,性别:%s,年龄:%d,成绩:", students[i].id, students[i].name, students[i].gender, students[i].age); for (int j = 0; j < COURSES; j++) { printf("%.2f ", students[i].scores[j]); } printf("\n"); return; } } printf("未找到该学号的学生!\n"); } // 按姓名查询 void queryByName() { char name[50]; printf("请输入要查询的姓名:"); scanf("%s", name); for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].name, name) == 0) { printf("学号:%s,姓名:%s,性别:%s,年龄:%d,成绩:", students[i].id, students[i].name, students[i].gender, students[i].age); for (int j = 0; j < COURSES; j++) { printf("%.2f ", students[i].scores[j]); } printf("\n"); return; } } printf("未找到该姓名的学生!\n"); } // 修改学生信息 void modifyStudent() { char id[20]; printf("请输入要修改的学生学号:"); scanf("%s", id); for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].id, id) == 0) { printf("请输入新的姓名:"); scanf("%s", students[i].name); printf("请输入新的性别:"); scanf("%s", students[i].gender); printf("请输入新的年龄:"); scanf("%d", &students[i].age); printf("请输入新的五门课成绩:"); for (int j = 0; j < COURSES; j++) { scanf("%f", &students[i].scores[j]); } writeStudentsToFile(); printf("学生信息修改成功!\n"); return; } } printf("未找到该学号的学生!\n"); } // 插入学生信息 void insertStudent() { inputStudent(); } // 删除学生信息 void deleteStudent() { char id[20]; printf("请输入要删除的学生学号:"); scanf("%s", id); for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].id, id) == 0) { for (int j = i; j < studentCount - 1; j++) { students[j] = students[j + 1]; } studentCount--; writeStudentsToFile(); printf("学生信息删除成功!\n"); return; } } printf("未找到该学号的学生!\n"); } // 按姓名排序 void sortStudentsByName() { for (int i = 0; i < studentCount - 1; i++) { for (int j = i + 1; j < studentCount; j++) { if (strcmp(students[i].name, students[j].name) > 0) { Student temp = students[i]; students[i] = students[j]; students[j] = temp; } } } writeStudentsToFile(); printf("学生信息已按姓名排序!\n"); } // 主菜单 void menu() { int choice; 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("8. 按姓名排序\n"); printf("9. 退出\n"); printf("请输入你的选择:"); scanf("%d", &choice); switch (choice) { case 1: inputStudent(); break; case 2: outputStudents(); break; case 3: queryById(); break; case 4: queryByName(); break; case 5: modifyStudent(); break; case 6: insertStudent(); break; case 7: deleteStudent(); break; case 8: sortStudentsByName(); break; case 9: printf("退出系统!\n"); break; default: printf("无效的选择,请重新输入!\n"); } } while (choice != 9); } int main() { readStudentsFromFile(); menu(); return 0; } ``` 代码说明: 1. 结构体定义:定义了 `Student` 结构体,包含学号、姓名、性别、年龄和五门课成绩。 2. 文件操作:`readStudentsFromFile` 函数从文件中读取学生信息,`writeStudentsToFile` 函数将学生信息写入文件。 3. 功能函数:实现了输入、输出、查询、修改、插入、删除和排序等功能。 4. 主菜单:通过 `menu` 函数提供用户交互界面,用户可以选择不同的功能。 注意事项: - 学生信息存储在 `students.txt` 文件中,程序启动时会自动读取该文件的信息。 - 学生数量上限为 `MAX_STUDENTS`,可根据需要修改。 [2025-12-21 13:44:02 | AI问答 | 2248点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多