基于C语言设计的学生成绩管理系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85651924
资源下载地址:https://download.csdn.net/download/sheziqiong/85651924
设计及要求

问题描述:

设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。

实现要求:

实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。

⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩

⑵ 显示全部学生各科成绩信息;

⑶ 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);

⑷ 统计各科各分数段人数;

⑸ 按学号或姓名查找并显示某个学生的各科成绩;

⑹ 按课程成绩或总分由高到低排序显示;

⑺ 更新某个学生的基本信息或课程成绩;

⑻ 设计一个字符菜单界面,具有上述规定的操作要求、退出系统等最基本的功能。

总体分析与设计

该程序包括 2 个头文件和 1 个源文件和 3 个文本文件。3 个头文件名分别是:operator.h、GradeManagement.h;源文件名为 Test.cpp,

3 个文本文件名分别是 stu_info.txt、cou_intfo.txt、stu_grade.txt。

其具体作用如下:

文件名作用
operator.h程序功能函数的具体实现
GradeManagement.h头文件和自定义类型的声明
Test.cpp启动程序
stu_info.txt学生信息文件
cou_intfo.txt课程信息文件
stu_grade.txt学生成绩文件

详细设计

本程序有多个类,类中具体内容如下图所示:

具体设计思路

由设计需求可知,增删查改,用的最频繁的功能会是查询,同时学号与学生之间,课程与课程号之间也存在映射关系,自然选用 STL 库中的 map 和 set 作为容器,因为其底层是红黑树实现,效率很高,但是由于学生与成绩多对多,故容易出现数据冗余,结合数据库范式相关知识决定将学号作为学生的唯一标识,将课程号作为课程的唯一标识。

获得信息的方式都是通过映射,成绩只存储一份在总成绩单中,从总成绩单中获得单科成绩。

通过学号获得学生的具体信息,通过课程号获得课程的具体信息。

排序选用 algorithm 中的 sort 函数,底层是快排,效率也十分可观,同时利用记录等方式避免多次重复排序。

核心类

Couse 类

存储着课程的基本信息

Student 类

存储着学生的基本信息

StuTable

学生信息表,可通过文件或者手动录入的方式录入数据

CouTable

课程信息表,可通过文件或者手动录入的方式录入数据

CourseGrade 类

CourseGrade 存储着课程号、成绩和考试状态(缺考,作弊等定义为不正常,成绩置为 0)。通过课程号可以获取课程的具体信息。

GradeTable 类

GradeTable 是核心类,通过学号可以找到这个学生所有的课程成绩。学号可以找到一个 set 容器,容器里放的是 CourseGrade 类型。

CourseGradeTab 类

课程成绩单,不存储具体信息,只存储选了这门课的学生学号,通过学号再去获取这门课的成绩和学生的具体信息。

算法

下面算法均只举一个例子,代码实现中可能实现多个,但是实现思路大体相同。

map 和 set 排序自定义类型,可以通过仿函数和重载运算符的方法,这里采用后一种,重载了小于号(bool operator<(…))

map 为 Key-Value 结构,默认以 Key 排序,排序成绩时需要通过 Value。所以这里根据 value 对 map 进行排序,写一个比较函数,再利用库函数 sort 进行自定义排序

数据结构

数据结构采用红黑树、顺序表和字符串,表现为 map,set,vector 和 string。利用合理的数据结构和准确的映射(哈希)可以大大提高程序运行的效率

输入与输出

输入采用文件读取和手动输入两种方式,文件读取用了 ifstream 流,手动输入和输出通过外部设备(显示器)完成。

此外,程序功能过多,使用起来界面难以区分,利用部分 Windows 编程修改了控制台的标签,字体,颜色等,功能的颜色也不尽相同,便于用户操作。

文件读取时由于需要判断文件是否为空和文件是否存在,所以文件首行加了字符’/’作为标志,若去掉会导致读取错误,如信息遗漏,此外为了防止末行数据重复读取,文件末尾并没有设置换行!

  • 调试与测试

加载学生文件

加载课程文件

加载学生成绩文件

查看成绩

查看所有人成绩(自动清屏)

删除

删除后查看所有人成绩

修改学生成绩

更改学生信息

对学生成绩进行排序和分类

退出程序


在这里插入图片描述

资源下载地址:https://download.csdn.net/download/sheziqiong/85651924
资源下载地址:https://download.csdn.net/download/sheziqiong/85651924

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值