选课系统作业阻碍了我好几天,看了下别人的思路,自己整理下,从大到小。。学校>老师>班级>课程和学生
设计思路是逆向的,首先从学校开始。学校要包含所有信息,但是里面有的信息能包装起来,所以拆分很多小类(学生,教师,课程,班级),只有学校特有的是学校名称,学校地址。
然后老师可以通过班级,管理学生等,所以接下来是老师,对应老师名,年龄,包含班级
然后班级这个类其实最容易,班级对应课程,班级名,包含学生。
课程只有几个元素,名字,时间,价格。其它地址,老师啥的关系不用放在这里,因为这些在老师类,学校类里面。
最后学生也尽量简单,只有姓名和年龄。上面的类信息都有了,因此学生就简单了。
主要是类的定义,学生,课程,班级,老师,学校。依次复杂,能简单尽量简单。
学生只包含姓名 年龄
课程只包含课程名(类型),价格,时间(地点放在学校里)
#!/usr/bin/env python #-*-coding=utf-8-*- class Student(object): def __init__(self,student_name,student_age): self.student_name=student_name self.student_age=student_age class Course(object): def __init__(self,course_name,course_price,course_time,): self.course_name=course_name self.course_price=course_price self.course_time=course_time class Class(object): def __init__(self,class_name,course_obj): self.class_name=class_name self.class_course=course_obj self.students=[] class Teacher(object): def __init__(self,teacher_name,teacher_age,teacher_salary): self.teacher_age=teacher_age self.teacher_name=teacher_name self.teacher_salary=teacher_salary self.teacher_classes=[] class School(object): def __init__(self,school_name,school_addr): self.school_name=school_name self.school_addr=school_addr self.school_courses={} self.school_teachers={} self.school_classes={} self.school_students={} def create_course(self,course_name,course_price,course_tine): course_obj=Course(course_name,course_price,course_tine) self.school_courses[course_name]=course_obj