"""
业务要求:
1、自定义学生信息、课程信息、老师信息三者的具体描述
2、自定义example.py和file_exe.py模块,分别用以定义(1)中的描述信息和作为启动文件
3、启动文件中主要包含5个方法,包括星号(“*”)分割线设置、初始化课程信息并装载入列表返回、初始化老师信息并装载入列表返回、遍历课程对象并绑定老师至课程对象的对应属性并装载入列表返回、初始化学生信息并装载入列表返回
4、启动文件中利用‘__main__'魔法属性实现(3)中定义方法的调用,并遍历所返回的学生;对象列表以添加课程至学生对象的属性
效果:
**********学生信息*********
name:Harold,s_number:1000
name:Jim,s_number:1001
**********选课结果*********
name:Harold,Selected:[{'课程名称':'网络爬虫','教师名称':'杨老师'}]
name:Jim,Selected:[{'课程名称':'大数据','教师名称':'李老师'}]
详细设计:
1、学生类:
类型描述:能够描述学生的学号、姓名、已选课程(列表)三项信息,要求:
1)设定方法以循环遍历打印学生的已选课程信息
2)设定方法以属性的方式返回学生的已选课程信息
3)设定方法实现添加课程信息至学生对象的已选课程属性
4)正确设置学生类信息的字符串显示显示方法,实现学生学号与学生姓名的显示
2、老师类:
类型描述:能够描述老师编号、老师姓名、手机号三项信息,要求:
1)正确设置老师类信息的字符串显示显示方法,实现老师编号与老师姓名的显示
3、课程类:
类型描述:能够描述课程编号、课程名称、授课老师(默认为None),要求:
1)设定方法实现课程绑定授课老师功能,并将课程名称和老师名称包装成字典进行返回
实现功能:
1、自定义星号分割显示的方法
2、自定义课程信息初始化的方法,并以列表形式返回所创建的8门课程对象
3、自定义老师信息初始化方法,并以列表形式返回所创建的8名老师对象
4、自定义课程与老师逐一绑定的方法,并以列表形式返回所有课程与老师绑定的结果
5、自定义学生对象初始化的方法,并以列表形式返回所创建的8名学生对象,其中学号范围为1000~1007
6、根据'__name__ == __main__'魔法属性,实现上述方法调用,并调整展示效果
"""
course_selection_system_example.py
#!/usr/bin/env python3 # coding=utf-8 # Version:python3.6.1 # Project:practice # File:course_selection_system_example.py # Data:2020/7/23 14:32 # Author:LGSP_Harold class Student(object): def __init__(self, s_no, s_name, course=[]): self.s_no = s_no self.s_name = s_name self.course = course @property def course_detail(self): return self.course def add_course(self, course_info): self.course = course_info def __str__(self): return 'name:{0},s_number:{1}'.format(self.s_name, self.s_no) class Teacher(object): def __init__(self, t_no, t_name, t_phone): self.t_name = t_name self.t_phone = t_phone self.t_no = t_no def __str__(self): return 'name:{0},t_number{1}'.format(self.t_name, self.no) class Course(object): def __init__(self, c_no, c_name, teacher=None): self.c_name = c_name self.c_no = c_no self.teacher = teacher def binding(self, teacher): if not teacher: return None self.teacher = teacher course_dict = {'课程名称': self.c_name, '教师名称': self.teacher.t_name} return course_dict
course_selection_system_file_exe.py
#!/usr/bin/env python3 # coding=utf-8 # Version:python3.6.1 # Project:practice # File:course_selection_system_file_exe.py # Data:2020/7/23 14:32 # Author:LGSP_Harold from course_selection_system_example import Course, Teacher, Student def introduction(title): print('{0}{1}{0}'.format('*' * 9, title)) def init_course(): course_dict = {'01': '网络爬虫', '02': '数据分析', '03': '人工智能', '04': '机器学习', '05': '云计算', '06': '大数据', '07': '图像识别', '08': 'Web开发'} course_list = [] for k, v in course_dict.items(): t = Course(k, v) course_list.append(t) return course_list def init_teacher(): t1 = Teacher('T1', 'aa', '13131313131') t2 = Teacher('T2', 'qq', '13131313132') t3 = Teacher('T3', 'ww', '13131313133') t4 = Teacher('T4', 'dd', '13131313134') t5 = Teacher('T5', 'ff', '13131313135') t6 = Teacher('T6', 'gg', '13131313136') t7 = Teacher('T7', 'hh', '13131313137') t8 = Teacher('T8', 'bb', '13131313138') t_list = [t1, t2, t3, t4, t5, t6, t7] return t_list def course_to_teacher(): bd_list = [] ls_course = init_course() ls_teacher = init_teacher() for n in range(len(ls_course)): # dic = ls_course[n].binding(ls_teacher[len(ls_course) - 1 - n]) try: dic = ls_course[n].binding(ls_teacher[n]) except IndexError: dic = ls_course[n].binding('') # print('dic_', dic) bd_list.append(dic) return bd_list def init_student(): ls_student = ['pp', 'll', 'ii','uu', 'mm', 'nn', 'yy', 'hh'] s_number = [s_num for s_num in range(1000, 1008)] stu_list = [] for n in range(len(ls_student)): # st = Student(s_number[n], ls_student[len(ls_student) - 1 - n]) st = Student(s_number[n], ls_student[n]) stu_list.append(st) return stu_list if __name__ == '__main__': t_course = course_to_teacher() student = init_student() introduction('学生信息') for s in student: print(s) introduction('选课结果') for i in range(len(t_course)): student[i].add_course(t_course[i]) for stu in student: print('Name:{0}, Selected:[{1}]'.format(stu.s_name, stu.course_detail))