#include iostream#include fstream#include string#include iomanip#include vector#include algorithmusing namespace std; 学生基本信息结构体struct StudentInfo string id; 学号 string name; 姓名 string gende
本次实验是一个学籍管理系统,通过该系统可以实现学生基本信息的录入、查询和删除,以及学生成绩的录入、查询和排序等功能。在实现过程中,我采用了面向对象的编程思想,使用了C++语言和文件读写操作。
首先,在构造函数中,我读取了学生的基本信息和成绩信息,并将其存储在对应的结构体数组中。读取基本信息的过程中,我使用了ifstream和getline函数,逐行读取文件中的数据,并将其分割存储到结构体中。读取成绩信息的过程类似,只是分割的字段不同,并且计算了综合成绩和实得学分。
接下来,我实现了数据录入功能。在该功能中,首先通过用户输入获取学生的基本信息和成绩信息,然后将其存储到对应的结构体中,并将结构体的数据写入到文件中,以便后续的查询和排序操作。
然后,我实现了学生基本情况查询功能。在该功能中,用户可以选择按学号或姓名进行查询。通过遍历存储学生基本信息的结构体数组,找到匹配的学生并输出其基本信息。如果没有找到匹配的学生,则输出“未找到该学生”。
接着,我实现了成绩查询功能。用户需要输入学号,然后通过遍历存储学生成绩的结构体数组,找到匹配的学生的成绩信息,并输出每门课程的课程编号、课程名称、综合成绩和实得学分。同时,计算并输出实得总学分。
接下来,我实现了删除功能。用户需要输入要删除的学号,然后通过遍历存储学生基本信息的结构体数组,找到匹配的学生并删除其基本信息。同时,也需要遍历存储学生成绩的结构体数组,找到匹配的学生并删除其成绩信息。最后,将更新后的数据重新写入到文件中。
最后,我实现了排序功能。用户可以选择按综合成绩或实得学分进行排序,以及升序或降序排序。通过调用sort函数,传入自定义的比较函数,对存储学生成绩的结构体数组进行排序。然后,将排序后的结果输出。
总的来说,通过本次实验,我进一步熟悉了C++语言的文件读写操作和结构体的使用,掌握了面向对象的编程思想,并且加强了对排序算法的理解和应用。通过实现学籍管理系统,我不仅巩固了所学知识,还提高了问题解决能力和编程能力。此外,我也意识到了代码的复用性和可维护性的重要性,通过合理设计类和函数,可以使代码更加清晰、简洁和易于扩展
原文地址: https://www.cveoy.top/t/topic/hPk9 著作权归作者所有。请勿转载和采集!