石碣镇做网站,财经门户网站开发,长安手机网站建设,洛阳网站建设优惠公司本项目是一个简易的学生信息管理系统#xff0c;用户可以通过命令行界面完成学生信息的增加、删除、修改、查询、排序和列表展示等功能。数据以txt文件形式存储#xff0c;实现了数据持久化。项目采用模块化设计#xff0c;具有较好的可读性和扩展性。适用于初学者学习c语言…本项目是一个简易的学生信息管理系统用户可以通过命令行界面完成学生信息的增加、删除、修改、查询、排序和列表展示等功能。数据以txt文件形式存储实现了数据持久化。项目采用模块化设计具有较好的可读性和扩展性。适用于初学者学习c语言也适用于高校学生课程设计毕业设计参考。
一开发环境需求 操作系统 windows, linux 开发环境工具 qt vscode, visual studio 技术要求 语言: C数据结构: 链表文件操作: 文件读写操作
二功能说明 三功能实现
录入学生信息
void addStudent(StudentList *list) {Student newStudent;printf(请输入学生信息\n);printf(学号: );scanf(%d, (newStudent.id));while(getchar() ! \n);printf(姓名: );fgets(newStudent.name, sizeof(newStudent.name), stdin);newStudent.name[strlen(newStudent.name)-1] \0; // remove the newlineprintf(年龄: );scanf(%d, (newStudent.age));while(getchar() ! \n);printf(性别: );fgets(newStudent.gender, sizeof(newStudent.gender), stdin);newStudent.gender[strlen(newStudent.gender)-1] \0;printf(专业: );fgets(newStudent.major, sizeof(newStudent.major), stdin);newStudent.major[strlen(newStudent.major)-1] \0;printf(班级: );fgets(newStudent.class_name, sizeof(newStudent.class_name), stdin);newStudent.class_name[strlen(newStudent.class_name)-1] \0;printf(成绩: );scanf(%f, (newStudent.score));// add the new student to the listStudentNode *newNode (StudentNode*)malloc(sizeof(StudentNode));newNode-data newStudent;newNode-next list-head;list-head newNode;list-count;printf(学生信息已添加成功!\n);
}此函数用于添加学生信息。
删除学生信息
void deleteStudent(StudentList *list) {int id;printf(请输入要删除的学生的学号: );scanf(%d, id);StudentNode *current list-head;StudentNode *previous NULL;while (current ! NULL) {if (current-data.id id) {if (previous NULL) {list-head current-next;} else {previous-next current-next;}free(current);list-count--;printf(学生信息已删除。\n);return;}previous current;current current-next;}printf(未找到该学生的信息。\n);
}此函数用于删除指定学生信息。
3.s 修改学生信息
void modifyStudent(StudentList *list) {int id;printf(请输入要修改的学生的学号: );scanf(%d, id);StudentNode *current list-head;while (current ! NULL) {if (current-data.id id) {printf(请输入新的学生信息\n);printf(姓名: );while(getchar() ! \n); // clear bufferfgets(current-data.name, sizeof(current-data.name), stdin);current-data.name[strlen(current-data.name)-1] \0; // remove newlineprintf(年龄: );scanf(%d, (current-data.age));printf(性别: );while(getchar() ! \n);fgets(current-data.gender, sizeof(current-data.gender), stdin);current-data.gender[strlen(current-data.gender)-1] \0;printf(专业: );while(getchar() ! \n);fgets(current-data.major, sizeof(current-data.major), stdin);current-data.major[strlen(current-data.major)-1] \0;printf(班级: );while(getchar() ! \n);fgets(current-data.class_name, sizeof(current-data.class_name), stdin);current-data.class_name[strlen(current-data.class_name)-1] \0;printf(成绩: );scanf(%f, (current-data.score));printf(学生信息已修改。\n);return;}current current-next;}printf(未找到该学生的信息。\n);
}此函数用于修改指定学生信息。
查询学生信息
void queryStudent(const StudentList *list) {int id;printf(请输入要查询的学生的学号: );scanf(%d, id);StudentNode *current list-head;while (current ! NULL) {if (current-data.id id) {printf(学号: %d\n, current-data.id);printf(姓名: %s\n, current-data.name);printf(年龄: %d\n, current-data.age);printf(性别: %s\n, current-data.gender);printf(专业: %s\n, current-data.major);printf(班级: %s\n, current-data.class_name);printf(成绩: %.2f\n, current-data.score);return;}current current-next;}printf(未找到该学生的信息。\n);
}此函数用于查询指定学生信息。
对学生信息排序
// 排序学生信息这里以学号为例升序排列
void sortStudents(StudentList *list) {// 使用冒泡排序算法if (list-count 2) return;StudentNode *i, *j;for (i list-head; i-next ! NULL; i i-next) {for (j list-head; j-next ! NULL; j j-next) {if (j-data.id j-next-data.id) {// 交换数据Student temp j-data;j-data j-next-data;j-next-data temp;}}}printf(学生信息已排序。\n);
}此函数用于对学生信息进行排序。
列出所有学生信息
void displayAllStudents(const StudentList *list) {if (!list-head) {printf(没有学生信息可供显示。\n);return;}printf(学号 姓名 年龄 性别 专业 班级 成绩\n);printf(-----------------------------------------------------------------\n);StudentNode *current list-head;while (current ! NULL) {printf(%-6d %-10s %-4d %-4s %-20s %-10s %.2f\n,current-data.id, current-data.name, current-data.age,current-data.gender, current-data.major, current-data.class_name,current-data.score);current current-next;}printf(-----------------------------------------------------------------\n);
}此函数用于显示所有学生的信息。
四效果图 五源码
代码已开源可访问gitee下载。
六总结
本项目是一个简单的学生信息管理系统通过命令行界面与用户交互。主要实现了学生信息的增、删、查、改等功能。项目中主要使用C语言进行开发并使用链表作为主要数据结构。经过严格的测试和修正现在可以正常运行并满足基本的需求。