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))

 

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