python面向對象之練習題1


  1. 定義管理員類,管理員有屬性(name,password),可以創建學校、創建課程、創建老師

  2. 定義老師類,老師有屬性(name,password),可以添加課程、給學生打分,但發現學生沒有購買課程時,不能打分,並給出提示

  3. 定義學生類,學生有屬性(name,password),可以獲取當前學校、選擇學校、選擇課程,但學校沒有該課程時,需要提示,並且不能選擇該課程

  4. 定義學校類,學校有屬性(name,addr),可以添加課程

  5. 定義課程類,課程有屬性(name),可以添加學生

    # 人類
    class Person(object):
        def __init__(self,name,password):
            self.name = name
            self.password = password
    
    # 管理員類,繼承Person
    class Admin(Person):
        school_list = []
        def __init__(self,name,password):
            super().__init__(name,password)
    
        def create_school(self,school_name,school_addr):
            school = School(school_name,school_addr)
            Admin.school_list.append(school)
            print(f'{self.name} 創建了 {school.name}')
            return school
    
        def create_coures(self,course_name,course_prize):
            course = Course(course_name,course_prize)
            print(f'{self.name} 創建了 {course.name}課程')
            return course
    
        def create_teacher(self,teacher_name,teacher_passwd):
            teacher = Teacher(teacher_name,teacher_passwd)
            print(f'{self.name}  招聘  {teacher.name}為老師')
            return  teacher
    
    # 教師類,繼承Person
    class Teacher(Person):
        def __init__(self,name,password):
            super().__init__(name,password)
            self.courses = list()
    
        def add_course(self,course):
            self.courses.append(course)
            print(f'{self.name} 增加了 {course.name}')
    
        def scoring(self, student,course, grade):
            print("開始打分")
            if course in  student.courses:
                print(f'{self.name} 老師給 {student.name} 的{course.name}打了 {grade}分')
            else:
                print(f'{self.name}老師發現 學生{student.name} 沒有購買{course.name}課程')
    
    # 學生類,繼承Person
    class Student(Person):
        def __init__(self,name,password):
            super().__init__(name,password)
            self.courses = list()
            self.school = ''
    
        def get_school_list(self,admin):
            for i in admin.school_list:
                print(f'當前學校有{i.name}')
    
        def choice_school(self,school):
            self.school = school
            print(f'{self.name} 選擇了 {school.name}')
    
        def choice_course(self,course):
            if course.name in self.school.courses:
                self.courses.append(course)
                course.students.append(self.name)
                print(f'{self.name} 選擇了 {course.name} 課程')
            else:
                print(f'{self.school.name} 沒有 {course.name} 課程')
    
    
    # 學校類
    class School(object):
        def __init__(self,name,addr):
            self.name = name
            self.addr = addr
            self.courses = list()
        def add_course(self,course):
            course_name = course.name
            self.courses.append(course_name)
            print(f'{self.name} 學校 增加了 {course_name}課程')
    
    # 課程類
    class Course(object):
        def __init__(self,name,prize):
            self.name = name
            self.prize = prize
            self.students = list()
    
        def add_student(self,student):
            self.students.append(student)
            print(f'{student} 學了 {self.name}課程')
    
    
    # 管理員
    admin = Admin('冉宏元','123')
    
    # 管理員創建了school
    bj_school = admin.create_school('北京oldboy教育公司','北京')
    sz_school = admin.create_school('深圳oldboy教育公司','深圳')
    sh_school = admin.create_school('上海oldboy教育公司','上海')
    wh_school = admin.create_school('武漢oldboy教育公司','武漢')
    
    # 管理員創建了課程
    python = admin.create_coures('Python',21000)
    linux = admin.create_coures('Linux',18000)
    go = admin.create_coures('go',16000)
    
    
    # 學校增加課程
    '''北京'''
    bj_school.add_course(python)
    bj_school.add_course(linux)
    bj_school.add_course(go)
    '''上海'''
    sh_school.add_course(go)
    sh_school.add_course(python)
    '''武漢'''
    wh_school.add_course(linux)
    '''深圳'''
    sz_school.add_course(python)
    sz_school.add_course(go)
    
    # 管理員招聘老師
    nick = admin.create_teacher('nick','456')
    tank = admin.create_teacher('tank','789')
    
    # 學生
    one = Student('張三','123')
    one.get_school_list(admin)
    one.choice_school(sh_school)
    one.choice_course(linux)
    one.choice_course(python)
    one.choice_course(go)
    
    two = Student('李四','123')
    two.get_school_list(admin)
    two.choice_school(wh_school)
    two.choice_course(linux)
    two.choice_course(python)
    two.choice_course(go)
    
    
    # 老師給學生打分
    nick.scoring(one,linux,12)
    
    
    # 打印one學生的課程記錄
    print("打印one學生的課程記錄")
    for i in one.courses:
        print(i.name)
    
    
    print("打印two學生的課程記錄")
    for i in two.courses:
        print(i.name)
    
    
    '''打印python課程學習的人'''
    for i in python.students:
        print(i)
    '''打印linux課程學習的人'''
    for i in linux.students:
        print(i)
    '''打印go課程學習的人'''
    for i in go.students:
        print(i)
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM