亲爱的慕友们,学习到本阶段,相信大家已掌握Python语言中最关键的思想 — 面向对象程序设计思想,也熟悉了Python中类和对象的相关操作,现在让我们亲自动手运用所学知识来完成下图所示的程序开发吧!
题目要求:
根据业务需求,现要对慕课学院(1)班的所有学员进行选修课程分配,使得每一名学生都可以选修到一门课程。具体要求如下:
1、自定义学生信息、课程信息、教师信息三者的具体描述
2、自定义example.py和file_exe.py模块,分别用以定义(1)中的描述信息和作为启动文件
3、启动文件中主要包含5个方法,包括星号(“*”)分割线设置、初始化课程信息并装载入列表返回、初始化教师信息并装载入列表返回、遍历课程对象并绑定教师至课程对象的对应属性并装载入列表返回、初始化学生信息并装载入列表返回
4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。
运行效果图:
一、开发语言与环境要求
1、语言版本:Python3.6及以上
2、开发工具:Pycharm
二、程序整体要求
1、划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
2、要求项目结构清晰、规范,添加适量的注释以提高程序可读性
3、将作业项目形成压缩文件并提交
三、详细设计
由题目要求和运行效果,可以分析出项目中可以抽取两大模块:example.py和file_exe.py
example.py主要完成相关类的定义(要求编码时注意面向对象思想及封装特性的应用):
1、学生类:
类型描述:能够描述学生的学号、姓名、已选课程(默认值为空列表)三项信息,要求:
1、设定course_detail方法以属性的方式返回学生的已选课程信息
2、设定add_course(self,cour_info)方法,实现添加课程信息(cour_info)至学生对象的已选课程属性
3、正确设置学生类信息的字符串(__str__(self))显示方法,返回如效果图所示学生信息表的学生姓名,学生学号,注:使用format格式化学生的姓名和学号
2、教师类:
类型描述:能够描述教师编号、教师姓名、手机号码三项信息,要求:
正确设置教师类信息的字符串(__str__(self))显示方法,返回教师编号与教师姓名属性
3、课程类:
类型描述:能够描述课程编号、课程名称、授课教师(teacher默认值为None),要求:
设定binding(self,teacher)方法实现课程绑定授课教师功能,这里的teacher传入的是教师类的实例,在file_exe.py中会体现到,
(1)使用if语句判断教师类的实例是否存在,如果存在,将该实例赋值给课程类的授课教师属性,并将课程名称和教师名称包装成字典进行返回,如效果图{'课程名称': 'xxx', '教师名称': 'xxx'}格式。注:教师名称为教师类实例中的名称属性
(2)如果不存在教师类的实例,返回空
file_exe.py主要完成相应的业务逻辑,并进行如效果图所示的效果展示:
1、从example.py文件中导入学生类,教师类,课程类,
2、定义introduction(str)方法,str变量接收标题名字,使用format格式化为效果图中标题的样式,并输出,这里的*号不做数量要求
3、自定义prepare_course()方法,创建课程信息初始化,并以列表形式返回所创建的8门课程对象,描述如下:
(1)创建字典接收课程信息
课程信息:
"01": "网络爬虫", "02": "数据分析",
"03": "人工智能", "04": "机器学习",
"05": "云计算", "06": "大数据",
"07": "图像识别", "08": "Web开发"
(2)创建空列表
(3)循环遍历字典中的数据,将课程编号和课程姓名传入课程类得到课程类的实例,空列表追加每一次的课程类实例
(4)返回追加后的列表
4、自定义create_teacher()方法,创建教师信息初始化,并以列表形式返回所创建的8名教师对象,描述如下:
————教师信息:
"T1", "张亮", "13301122001"
"T2", "王朋", "13301122002"
"T3", "李旭", "13301122003"
"T4", "黄国发", "13301122004"
"T5", "周勤", "13301122005"
"T6", "谢富顺", "13301122006"
"T7", "贾教师", "13301122007"
"T8", "杨教师", "13301122008"
(1)将教师信息的每条数据分别传入教师类,分别使用变量接收
(2)创建列表存储步骤(1)教师类的八个实例对象,并返回
5、自定义course_to_teacher()方法,实现课程与教师逐一绑定(每一课程信息绑定倒叙的每一老师信息),并以列表形式返回所课程与教师的绑定结果,描述如下:
(1)创建空列表
(2)调用课程信息初始化方法,使用变量ls_course接收
(3)调用教师信息初始化方法,使用变量ls_teacher接收
(4)循环遍历课程信息初始化方法的长度:结合课程信息初始化方法与遍历的数字,得到课程信息初始化方法列表中的每条课程类实例,通过每条课程类实例去绑定(课程类中已定义绑定方法,直接调用即可)倒叙的每一条教师类信息,将绑定后的每条数据追加到空列表
(5)返回追加后的列表
6、自定义create_student()方法,创建学生信息初始化,并以列表形式返回所创建的8名学生对象,描述如下:
————学生信息:
"小亮", "小明", "李红", "小丽", "Jone", "小彤", "小K", "慕慕"
(1)使用变量ls_student接收学生信息
(2)使用range取得学号列表,其中学号的范围为1000~1007
(3)创建空列表
(4)循环遍历学生信息的长度,将学号与(据效果图所示)倒叙的学生姓名传入学生类,得到学生类的实例,将学生类实例追加至空列表
(5)返回追加后的列表
7、根据‘__name__ == __main__’魔法属性,实现函数调用,运行效果与效果图所示,描述如下:
(1)调用课程绑定教师函数
(2)调用学生信息初始化函数
(3)调用introduction(str),传入参数,实现效果图标题一展示
(4)循环输出学生信息
(5)调用introduction(str),传入参数,实现效果图标题二展示
(6)循环遍历课程绑定教师函数的长度,为学生初始化信息的每一对象添加绑定老师之后的课程信息
(7)遍历学生初始化信息,实现如效果图Name:xxx, Selected:[{'课程名称': 'xxx', '教师名称': 'xxx'}]的展示
一、项目规范 【10分】
1、作业所涉及的类都封装在独立的 ".py"文件中;
2、类的定义、类的成员变量命名规范;
3、代码结构要层次分明;
4、Python代码规范及添加适量注释。
二、程序整体运行效果【10分】
程序正常运行效果,且满足效果图要求。信息间分隔符“*”号数量不做统一要求
三、学生类详细设计【18分】
能够描述学号、姓名、已选课程(私有属性)等信息;
设定方法拟完成以下功能:
1、能够查看自己的已选课程
2、以属性的方式查看自己的已选课程
3、添加课程至已选课程列表
四、教师类详细设计【6分】
能够描述教师的编号、姓名、手机号三项信息
五、课程类详细设计【18分】
能够描述课程编号、名称、授课教师等信息,其中授课教师默认值为None
设定方法拟完成以下功能:
1、实现课程类信息的字符串显示
2、为课程绑定教师并进行记录
3、添加课程至已选课程列表
六、主文件【38分】
主文件中主要完成标题引导展示、课程对象与教师对象、学生对象的初始化(3个不同的方法)、课程与教师绑定等主要功能