学生信息管理系统 题量: 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点数解答]
- [字节豆包] c语音 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-30 00:37:20)392
- [字节豆包] 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98 李四 10002 100 王五 10003 95 赵六 10004 99 钱七 10005 93 输出样例: 请输入第1位同学的信息:姓名 学号 成绩 请输入第2位同学的信息:姓名 学号 成绩 请输入第3位同学的信息:姓名 学号 成绩 请输入第4位同学的信息:姓名 学号 成绩 请输入第5位同学的信息:姓名 学号 成绩 钱七,10005,93 王五,10003,95 张三,10001,98 赵六,10004,99 李四,10002,100(354点数解答 | 2024-10-30 18:45:58)326
- [字节豆包] c语言定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-31 19:49:58)317
- [字节豆包] c语音定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(326点数解答 | 2025-01-01 20:11:47)309
- [字节豆包] 学生信息管理系统 题量: 1 满分: 100 作答时间:12-17 15:52至12-22 23:30 一. 简答题(共1题,100分) 1. (简答题) 学生信息管理系统 编程实现学生信息管理系统,学生信息包含:学号、姓名、性别、年龄、五门课成绩。 功能包括: 1、学生信息输入、输出。 2、分别按学号和姓名查询。 3、学生信息修改。 4、学生信息插入。 5、学生信息删除。 6、按照学生姓名进行排序。 7、将学生信息写入文件,再次运行时能够从文件中读出信息。 使用c语言实现(2248点数解答 | 2025-12-21 13:44:02)24
- [字节豆包] #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <stdbool.h> /* 学生管理系统 包括:学号(long long int),姓名(char[]),性别(char[]),年龄(int) 存储结构:顺序表 顺序表用动态内存分配实现创建,初始容量设置为1 主要功能: 1.学生信息的插入 尾部插入 插入到指定学号后面 插入到指定姓名后面 注意:需要输入 学号(long long int),姓名(char[]),性别(char[]),年龄(int) 学号必须输入且不能重复 2.学生信息删除 尾部删除 根据学号删除学生 根据姓名删除学生 3.修改学生信息 根据学号修改学生 根据姓名修改学生 4.查询学生信息 根据学号查询学生 根据姓名查询学生 文件存储(stuinfo.txt) 结束销毁顺序表 */ //创建学生结构 struct student { long long int id;//学号(2323点数解答 | 2024-11-01 02:41:20)254
- [GPT] 设计内容及要求:学生信息要求:不少于2个班级,每个班级不少于10位学生,格式如下:学号(10位,如2023030201) 、姓名、性别、班级、数据结构、linux编程基础、python程序设计。学生数据存储到文件中(也可以使用数据库),示例如下: 序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计 备注 1 2023300201 张三 男 计科1班 90 88 85 2 2023300202 李丽 女 计科2班 85 76 80 实习功能如下: (1)按班级顺序输出学生信息列表; (2)创建:插入一条学生信息,并输出验证是否插入成功; (3)删除:按学号删除一条学生记录,并输出验证是否删除成功; (4)修改:修改某位学生的课程成绩,并验证是否修改成功; (5)查找:按照学生姓名查找学生某门课程成绩并输出显示; (6)排序:要体现不少于两种排序算法 (a)统计每个学生的总分,按总分降序输出; (b)统计每个学生的平均分,按平均分增序输出; (c)统计每个班中总分前三名和后三名,并输出; (7)退出程序,用c语言写(2547点数解答 | 2024-12-15 22:08:58)332
- [GPT] 设计内容及要求:学生信息要求:不少于2个班级,每个班级不少于10位学生,格式如下:学号(10位,如2023030201) 、姓名、性别、班级、数据结构、linux编程基础、python程序设计。学生数据存储到文件中(也可以使用数据库),示例如下: 序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计 备注 1 2023300201 张三 男 计科1班 90 88 85 2 2023300202 李丽 女 计科2班 85 76 80 实习功能如下: (1)按班级顺序输出学生信息列表; (2)创建:插入一条学生信息,并输出验证是否插入成功; (3)删除:按学号删除一条学生记录,并输出验证是否删除成功; (4)修改:修改某位学生的课程成绩,并验证是否修改成功; (5)查找:按照学生姓名查找学生某门课程成绩并输出显示; (6)排序:要体现不少于两种排序算法 (a)统计每个学生的总分,按总分降序输出; (b)统计每个学生的平均分,按平均分增序输出; (c)统计每个班中总分前三名和后三名,并输出; (7)退出程序,用c语言写,给出完整的代码(6408点数解答 | 2024-12-15 22:10:03)321
- [GPT] c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 请录入“c++编程”课程成绩 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单(6361点数解答 | 2024-05-24 02:01:02)497
- [GPT] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 如: 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt中的行 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后为 1:l p[54(811点数解答 | 2024-12-05 12:58:37)350
- [讯飞星火] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(531点数解答 | 2024-12-05 13:20:42)339
- [阿里通义] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(495点数解答 | 2024-12-05 13:22:26)327