8.2.2 封装实践应用

8.2.2 封装实践应用

【案例8-2】 学生信息管理系统面向对象版。

1.案例设计目的

·理解并掌握类与对象的定义与创建。

·掌握类的属性和方法的使用规则。

·掌握封装的应用。

·熟练应用面向对象程序设计思想。

2.案例分析

将由第7章的面向过程方法实现的学生信息管理系统改编成由面向对象方法来实现,系统模块设计可改成如图8-2所示。

图8-2 学生信息管理系统模块图

设计思路如下。

将学生作为一个类,为它创建学号、姓名、各科成绩等属性。

创建一个字典,用于保存学生的学号、姓名、各科成绩。由于字典和列表的全局特性,所以只要不是在函数中创建同名字典,则所有函数可访问主程序中的字典。学生的学号具有唯一性,可将学号作为key,将姓名及各科成绩作为value。

添加学生信息:先判断输入的学号是否已经存在,若存在重新输入,不存在则继续输入姓名及各科成绩,最后将所有输入内容作为一个元素添加到字典中。

修改学生信息:先判断输入的学号是否存在,若存在则输入要修改的信息,若不存在则重新输入学号,最后将对应学号的value值进行修改。

删除学生信息:先判断输入的学号是否存在,若存在,则将学号对应的元素从字典中删除,不存在则给出提示。

查询学生信息:先判断输入的学号是否存在,若存在,则将学号对应的元素信息显示出来,不存在则给出提示。

显示学生信息:对字典进行遍历,将字典中所有的信息按指定格式显示出来。涉及成绩的总分与排名时,通过调用成绩排名函数获取,调用时需要将学号作为参数传递过去。

成绩排名:对字典进行遍历,为每个学生的成绩进行求和,并将对应的学号和求和数据保存到列表中;然后对列表进行降序排序,元素对应的索引值加1即每个学生的排名。函数的参数即学号,将该学号对应的总分和排名作为返回值。

运行结果如图8-3所示。

图8-3 学生信息管理系统运行效果