Python就业班——初识面向对象——练习——course_selection_system

"""
业务要求:
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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章