这是一个面向高校师生的学生成绩管理工具。传统的学生成绩记录方式往往依赖Excel表格,操作繁琐且容易出错。该系统通过命令行交互界面,实现学生信息的增删改查、成绩排名、文件持久化存储等功能,适用于小型班级或课程的成绩管理工作,可作为C++课程设计的参考实现。
点击空白处退出提示
这是一个面向高校师生的学生成绩管理工具。传统的学生成绩记录方式往往依赖Excel表格,操作繁琐且容易出错。该系统通过命令行交互界面,实现学生信息的增删改查、成绩排名、文件持久化存储等功能,适用于小型班级或课程的成绩管理工作,可作为C++课程设计的参考实现。
本项目实现了一个完整的学生成绩管理系统,支持以下核心功能:
1. 添加学生:录入学号、姓名、语文/数学/英语三科成绩
2. 显示全部:以表格形式展示所有学生信息及总分
3. 搜索学生:按学号查找并显示学生信息
4. 删除学生:按学号删除指定学生记录
5. 修改学生:按学号更新学生信息和成绩
6. 总分排名:按总分从高到低排序显示
7. 文件持久化:程序启动时自动加载数据,退出时自动保存
本项目使用C++实现,基于面向对象设计和STL容器构建,在Linux环境下完成开发与测试。
**1. 数据结构设计**
定义了Student结构体,包含五个成员:
- string id:学号
- string name:姓名
- double chinese:语文成绩
- double math:数学成绩
- double english:英语成绩
StudentSystem类封装了所有业务逻辑,使用vector作为核心存储容器,利用STL的算法库实现排序和查找功能。
**2. 模块划分**
系统分为以下功能模块,各模块职责清晰:
文件读写模块:
- loadFromFile:从文本文件读取学生数据,支持程序启动时自动恢复
- saveToFile:将学生数据写入文本文件,支持数据持久化存储
数据管理模块:
- addStudent:录入学生信息,添加到容器中
- deleteStudent:按学号删除指定学生记录
- updateStudent:按学号更新学生信息
- searchStudent:按学号查找并显示学生信息
展示与统计模块:
- displayAll:以表格形式展示所有学生信息及总分
- rankByTotal:按总分从高到低排序,显示排名
- calcTotal / calcAverage:计算单个学生的总分和平均分
**3. 核心算法实现**
排序功能使用STL的sort算法,配合Lambda表达式自定义比较规则:
- 按总分降序排列:calcTotal(a) > calcTotal(b)
- 利用vector的迭代器实现删除和遍历
查找功能使用范围for循环遍历vector,通过学号匹配目标学生。
**4. 文件持久化**
存储格式:每行一条记录,字段间用空格分隔
格式示例:2024001 张三 85.5 92.0 78.5
读取时逐行解析并构造Student对象,追加到vector中
**5. 交互界面**
采用命令行菜单驱动,循环显示功能选项,用户输入数字选择对应操作。输入验证确保程序在用户输入无效选项时不会崩溃。
**6. 编译与运行**
使用g++编译器,单文件即可编译运行:
g++ -std=c++11 student_system.cpp -o student_system
./student_system






评论