1、一、 需求分析说明需求分析说明 本题对学生的某门课程成绩管理做一个简单的模拟,为了实现学生成绩的管理与分析,设 计一个学生成绩管理系统。 学生信息包括:学号、姓名、性别,要确保其信息的准确性。 课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=平时成绩*0.4+实 验成绩*0.3+期末成绩*0.3, 用菜单选择方式完成下列功能: (1)登记学生成绩;(2)插入学生成绩;(3)修改学生成绩;(4)删除学生成绩; (5)查询学生成绩;(6)对学生成绩进行排序;(7)输出学生成绩。 在完成上述基本要求的操作后,要应用功能(6)进行测试。 二、 总体设计总体设计 设计功能表如下:(附:
2、功能解释) 学生成绩管理 1、输入学生成绩 (输入学生的基本信息:学号、姓名、性别和成绩信息) 2、插入学生成绩 (按照学号进行所需信息的插入) 3、修改学生成绩 (对其学生信息和成绩信息根据一定的需求进行修改) 4、删除个人信息 (按照学号进行删除) 5、查询个人成绩 (按照学号进行删除) 6、学生成绩排名 (升序排名) 7、查询全体信息 (显示全体学生的学生信息及成绩信息) 8、查看成绩排名 (排名后显示成绩排名) 三、三、 详细设计详细设计 1 1、 系统功能分析: 学生信息包括:学号、姓名、性别,要确保其信息的准确性。 课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=
3、平时成绩*0.4+实验 成绩*0.3+期末成绩*0.3, 以及功能上述功能。 在完成上术基本要求的操作后, 要应用功能 (6) 2 / 16 进行测试。得出该题目以创建两个类,一个类保存成绩信息:平时成绩、实验成绩、期未成绩、 总评成绩,一个类保存学生信息:学号姓名、性别。从功能分析可知该存储方式适合用链表存 储结构:此类功能中在未排序前应该以学号为主键,排序后应该以总评成绩为主键。 (1) 定义一个成绩类: class score public: (访问控制属性),平时成绩(float peacetime),实验成绩(float experiment) , 期末成绩(float final)
4、 ,总评成绩(float total) (2)定义一个 学生类: Class student public: (访问控制属性) ,int sno(学号) ,string name(姓名) string sex(性别)score course(课程)student *next(下一个学生地址指针) student *registed();/登记学生成绩 void insert(student *s,int i);/插入学生成绩 void alter(student *s,int i);/修改学生成绩 void deleted(student *s,int i);/删除学生成绩 void seek
5、(student *s,int i);/查询学生成绩 student *sort(student *s);/成绩排序 void print(student *s);/输出学生成绩 void sortprint(student *s);/排序后的成绩输出; 2 2、 存储结构设计分析 学生的信息: 学生的信息和成绩信息都储存在一个链表里, 每个节点表示一个学生的信息, 包括学号,姓名及平时成绩(float peacetime),实验成绩(float experiment) ,期末 成绩(float final) ,总评成绩(float total)等数据项。 3 3、 程序流程图 3 / 16
6、四、四、 代码代码 #include #include #include using namespace std; class score public: float peacetime;/平时成绩 float experiment;/实验成绩 float final;/期末成绩 float total;/总评成绩 ; class student public: int sno;/学号 string name;/姓名 学生成绩管理 1 输 入 学 生 成 绩 2 插 入 学 生 成 绩 3 修 改 学 生 成 绩 4 删 除 个 人 信 息 5 查 询 个 人 成 绩 6 学 生 成 绩 排 名 7 查 询 全 体 信 息 8 查 看 成 绩 排 名 开始 菜单 退出 4 / 16 string sex;/性别 score course;/课程 student *next; student *registed();/登记学生成绩 void insert(student *s,int i);/插入学生成绩 void alter(s