"""
业务要求:
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))
略懂,略懂....