基于C++实现一个简单的(控制台)班级成绩管理系统

张开发
2026/6/21 11:19:31 15 分钟阅读
基于C++实现一个简单的(控制台)班级成绩管理系统
“班级成绩管理系统”系统设计文档1 系统总体描述实现一个控制台应用用来进行班级成绩的管理功能大致有有班级、学生、成绩的增、删、改、查进行学生排名前十名获得奖学金按照一定规则计算班级得分获得最高分的班级评为优秀班级。2 相关功能描述由用户设置所有课程的名称、成绩所占权重一旦设定则程序运行结束前不能更改显示菜单根据用户输入判断执行什么操作添加新班级同时批量添加学生添加学生先确定加入的班级删除班级删除学生查找班级查找学生修改学生信息排名并评选奖学金评选优秀班级先执行功能 10。实现班级管理、学生管理、成绩管理的基本功能包括增、删、改、查。按规则实现年级奖学金评定功能具体规则为将每门课程的学分设置权重采用加权平均的方式计算平均成绩成绩最好的前 10 名获得奖学金。按规则实现优秀班级评定功能具体规则为按照一下公式计算班级得分班级得分获得奖学金的人数20所有课程都及格人数-获得奖学金的人数80/班级总人数。班级得分最高的班级为优秀班级。2 系统主要结构2.1 概述根据系统功能的要求基本需要设计三个类Lesson 类Student 类以及 Class 类。它们分别代表某门课程某个学生某个班级的抽象。最后还需要设计一个 SystemManager 类来进行系统的管理和与用户的交互。2.2 Lesson 类包括课程名课程成绩权重课程成绩等私有属性以及相关外部接口和判断该课程成绩是否及格的方法。图 2.1 Lesson 类2.3 Student 类包含学生所学课程所组成的数组包含学生的姓名加权成绩是否获得奖学金是否全部课程都及格的私有属性及外部接口和修改单个学生信息设置单个学生各门课的成绩显示单个学生的信息等方法。图 2.2 Student 类2.4 Class 类包含班级中的学生组成的数组包含该班级的总人数班级编号获得奖学金的人数最终班级得分及外部接口和向数组中添加学生显示班级信息增加和减少班级人数计算班级分数等方法。图 2.3 Class 类2.5 SystemManager 类本类设计为功能最强的类用来管理整个系统实现与用户的交互。包含一个由所有班级组成的数组含有显示菜单退出系统初始化课程添加新班级显示目前系统中所有信息添加新学生查找班级查找学生删除班级删除学生改动学生信息清除所有信息降序排名评选奖学金评定优秀班级等方法。图 2.4 SystemManager 类2.6 主程序过程设计图 2.5 运行流程运行开始后先由用户进行课程的初始化包括数目名称权重。显示菜单提示用户输入选项。根据用户输入选择执行的操作。执行相关操作若选择退出系统则退出否则在执行完后返回第 2 步。3 相关成果截图1初始化课程。2显示菜单。3未输入任何信息的时候系统会打印提示信息。4添加班级以编号为 2 的班级为例。5查找班级按照班级编号。6修改学生信息按照学生姓名查找。删除功能类似都是先查找再执行操作7查找学生按照学生姓名。此时可以看到之前修改的学生信息已经成功得到修改。8排名并评选奖学金。此后会输出提示信息询问用户是否需要继续进行评选优秀班级的操作。此时如果选择否则会清屏并重新显示菜单。如此设计是因为在计算班级得分的规则中需要知道班级中共有几人获得了奖学金故评选优秀班级的操作必须在排名并评选了奖学金后进行。反之则会出现默认为所有班级中获得奖学金的人数均为零的情况9评选优秀班级。10清空系统与清空后的输出。11退出系统。退出系统后在系统中保存的数据也丢失4 作业成果总结与反思基本实现了要求的功能进一步巩固了 C 程序设计的相关基础知识。为了用动态数组来实现储存课程、学生、班级的对象学习使用了 vector 容器以及它相关的函数如 size()、clear()、push_back()和 erase()等。为了实现根据成绩排名自己动手实现了简单的冒泡排序算法。根据现实世界三个类的特点练习了对事物抽象的能力。设计了类似组合类的结构例如 Student 类中含有一个 Lessons 类的 vector 动态数组作为其公有属性。基本熟悉程序设计的流程尤其是开始写代码之前的设计过程开发过程中将类的定义的.h 的头文件和类的实现以及程序主体 main()函数分开在不同文件中减小了单个文件的代码量同时使开发过程更清晰。有些设想的功能没有实现。比如课程一旦设置就无法修改再如没有加入文件读写的功能程序结束运行后所有数据就丢失了这直接导致程序的实用性降低而且增加了开发时调试的复杂程度又如没有图形交互界面等等。程序中有部分遗留问题没有解决。除了在系统中没有信息时进行操作时程序会打印“系统中无任何信息”的提示信息外本程序中绝大多数的输入没有检查输入合法性的检查。需要学习输入流的相关知识了解 cin 的相关操作。Visual Studio 2019 的编译器输出了如下警告在网上尝试搜索原因和解决方法后我认为是在这段代码中为了实现给所有学生成绩排序我动态申请了一片内存用来存放一个指针数组其中的每个元素都指向系统中的某个学生。因为有班级和学生两个层次所以我定义了一个局部变量 already 来存目前已被“传到”数组中的学生信息而它的值同时也是下一个将要被“传入”的数组位置的下标每“传入”一个学生already 都加 1。编译器认为在此过程中存在 already 的值可能过大导致数组下标越界的危险因此输出了这个警告。我仔细了检查程序认为这个地方不会越界但是不知道如何修改才能消除这个警告。♻️ 资源大小938KB➡️资源下载https://download.csdn.net/download/s1t16/87415909注更多内容可关注微信公众号【神仙别闹】如当前文章或代码侵犯了您的权益请私信作者删除

更多文章