> # ♻️ 资源
> **大小:** 1.68MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010791**](https://www.yuque.com/sxbn/ks/100010791)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87450282**](https://download.csdn.net/download/s1t16/87450282)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 基于C语言设计的学生成绩管理系统
## 课程设计题目及要求
问题描述:
设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。
实现要求:
实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩
⑵ 显示全部学生各科成绩信息;
⑶ 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);
⑷ 统计各科各分数段人数;
⑸ 按学号或姓名查找并显示某个学生的各科成绩;
⑹ 按课程成绩或总分由高到低排序显示;
⑺ 更新某个学生的基本信息或课程成绩;
⑻ 设计一个字符菜单界面,具有上述规定的操作要求、退出系统等最基本的功能。
总体分析与设计
该程序包括 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 | 学生成绩文件 |
## 详细设计
本程序有多个类,类中具体内容如下图所示:
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409463-b9968e1f-1cef-4979-8a97-aa0fd5c98797.png#averageHue=%23fafaf9&from=url&id=VMQ8r&originHeight=609&originWidth=559&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409576-54d3a115-1427-41d1-801d-d7f7bc9165a3.png#averageHue=%23b3a993&from=url&id=oirjU&originHeight=977&originWidth=719&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409635-d7ab42ba-97d9-4a3d-af68-cea4fc11d979.png#averageHue=%23a9a89b&from=url&id=Bsg10&originHeight=250&originWidth=275&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
## 具体设计思路
由设计需求可知,增删查改,用的最频繁的功能会是查询,同时学号与学生之间,课程与课程号之间也存在映射关系,自然选用 STL 库中的 map 和 set 作为容器,因为其底层是红黑树实现,效率很高,但是由于学生与成绩多对多,故容易出现数据冗余,结合数据库范式相关知识决定将学号作为学生的唯一标识,将课程号作为课程的唯一标识。
获得信息的方式都是通过映射,成绩只存储一份在总成绩单中,从总成绩单中获得单科成绩。
通过学号获得学生的具体信息,通过课程号获得课程的具体信息。
排序选用 algorithm 中的 sort 函数,底层是快排,效率也十分可观,同时利用记录等方式避免多次重复排序。
核心类
Couse 类
存储着课程的基本信息
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409716-c8f3be98-274d-4d0d-a33e-7b5e92cd88d2.png#averageHue=%23dfc49a&from=url&id=FrYMS&originHeight=213&originWidth=978&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
Student 类
存储着学生的基本信息
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409772-14c8baee-ddbb-48b6-8f16-e6cf07819fe1.png#averageHue=%23e0c59d&from=url&id=WGYFY&originHeight=204&originWidth=951&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
```
StuTable
```
学生信息表,可通过文件或者手动录入的方式录入数据
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409841-5f6f95ae-5e1c-4825-b6b0-05769e8b16f1.png#averageHue=%23e0c69e&from=url&id=JGLfW&originHeight=185&originWidth=963&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
```
CouTable
```
课程信息表,可通过文件或者手动录入的方式录入数据
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409906-3d2ed376-1b85-44ca-86ed-718de7f1d22b.png#averageHue=%23e0c59c&from=url&id=frppQ&originHeight=184&originWidth=987&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
CourseGrade 类
CourseGrade 存储着课程号、成绩和考试状态(缺考,作弊等定义为不正常,成绩置为 0)。通过课程号可以获取课程的具体信息。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734409973-88360d03-6d74-45f2-ba68-0f273be7f218.png#averageHue=%23f2f2f1&from=url&id=uj7PV&originHeight=249&originWidth=974&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
GradeTable 类
GradeTable 是核心类,通过学号可以找到这个学生所有的课程成绩。学号可以找到一个 set 容器,容器里放的是 CourseGrade 类型。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734410039-ed2620f2-4df2-45ff-bc8b-7d66626c51ca.png#averageHue=%23d3b78e&from=url&id=Abczu&originHeight=188&originWidth=933&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
CourseGradeTab 类
课程成绩单,不存储具体信息,只存储选了这门课的学生学号,通过学号再去获取这门课的成绩和学生的具体信息。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734410175-f696bce8-ac55-42b4-a21f-6298985366eb.png#averageHue=%23d0b583&from=url&id=iG2am&originHeight=135&originWidth=958&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
## 算法
下面算法均只举一个例子,代码实现中可能实现多个,但是实现思路大体相同。
map 和 set 排序自定义类型,可以通过仿函数和重载运算符的方法,这里采用后一种,重载了小于号(bool operator<(...))
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734410243-b32ed131-3e8a-494b-b125-dcc4294a4071.png#averageHue=%23fefdfd&from=url&id=a9Pg0&originHeight=179&originWidth=538&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
map 为 Key-Value 结构,默认以 Key 排序,排序成绩时需要通过 Value。所以这里根据 value 对 map 进行排序,写一个比较函数,再利用库函数 sort 进行自定义排序
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734410304-b94858f5-3fd4-4cac-96c0-b66f8ac8f265.png#averageHue=%23fefdfc&from=url&id=ZsRLz&originHeight=315&originWidth=584&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715734410355-1ae2dd08-4f55-4c41-a5b1-42fcb49faef2.png#averageHue=%23f6f1ed&from=url&id=onQLU&originHeight=51&originWidth=517&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
切割�
没有合适的资源?快使用搜索试试~ 我知道了~
基于 C++ 设计的(控制台)学生成绩管理系统【100010791】
共31个文件
txt:15个
h:4个
exe:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 101 浏览量
2023-02-14
11:12:44
上传
评论 2
收藏 1.69MB ZIP 举报
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010791 问题描述:设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。 实现要求:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩;⑵ 显示全部学生各科成绩信息;⑶ 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);⑷ 统计各科各分数段人数;⑸ 按学号或姓名查找并显示某个学生的各科成绩;⑹ 按课程成绩或总分由高到低排序显示;⑺ 更新某个学生的基本信息或课程成绩;⑻ 设计一个字符菜单界面,具有上述规定的操作要求、退出系统等最基本的功能。
资源推荐
资源详情
资源评论
收起资源包目录
100010791-基于 C++ 设计的(控制台)学生成绩管理系统.zip (31个子文件)
grademanagesystem
LICENSE 1KB
成绩管理系统(debuf版).exe 406KB
stu_grade.txt 121B
operator.h 19KB
课设演示 .gif 812KB
代码
文本文档第一行的字符不能删!.txt 1B
main.cpp 398B
stu_grade.txt 475B
account.txt 17B
operator.h 27KB
GradeManagement.h 3KB
cou_info.txt 250B
账号密码.txt 32B
stu_info.txt 323B
Markdown笔记
2022_5_13_成绩管理系统.md 47KB
启动
成绩管理系统_release.exe 80KB
文本文档第一行的字符不能删!.txt 3B
stu_grade.txt 497B
account.txt 17B
cou_info.txt 193B
成绩管理系统_debug.exe 447KB
账号密码.txt 32B
stu_info.txt 149B
GradeManagement.h 4KB
cou_info.txt 59B
C++课设.docx 996KB
Test.cpp 2KB
README.md 14KB
成绩管理系统2 1B
成绩管理系统(release版 界面美化被优化掉了但是速度更快).exe 64KB
stu_info.txt 66B
共 31 条
- 1
神仙别闹
- 粉丝: 2679
- 资源: 7667
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页