作业21

作业21

# 选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合
# 1、学校数据与功能整合
# 2、课程数据与功能进行整合
# 3、学生数据与功能进行整合
# 4、讲师数据与功能进行整合
# 5、班级数据与功能进行整合
# ps:不会写的同学,可以先用普通的方式,先把数据与功能都给写好,再考虑基于面向对象的思想进行整合

# 数据部分:
     #  校区的名字:如"老男孩上海校区"
     #  校区的地址:如"上海虹桥"

     # 班级名字
     # 班级所在校区

     # 学生的学校
     # 学生的姓名
     # 学生的年龄
     # 学号
     # 学生的性别

     # 课程名字
     # 课程周期
     # 课程价格

     # 老师的名字
     # 老师的年龄
     # 老师的薪资
     # 老师的等级


# 功能部分:
     # 校区创建完毕后,可以为每个校区创建班级

     # 班级创建完毕后,可以为每个班级创建课程

     # 学生创建完毕后,学生可以选择班级

     # 老师创建完毕后,可以为学生打分
class Schools:
    def __init__(self, name, adress):
        self.name = name
        self.adress = adress

    def school_info(self):
        print("校区地址:{}     校区名字:{}".format(self.adress, self.name))

    # 校区创建完毕后,可以为每个校区创建班级
    def add_class(self, class_name):
        # 根据传入的班级名字创建班级,得到返回值---班级
        class_var = Classes(self, class_name)
        return class_var


class Classes:
    def __init__(self, school, name):
        self.name = name
        self.school = school

    def class_info(self):
        print("班级名字:{}    班级所在的校区名字:{}".format(self.name, self.school.name))

    # 班级创建完毕后,可以为每个班级创建课程
    def add_course(self, name, time, price):
        course_var = Courses(self, name, time, price)
        return course_var


class Courses:
    def __init__(self, course_class, name, time, price):
        self.name = name
        self.time = time
        self.price = price
        self.course_class = course_class

    def show_info(self):
        print(
            "所属班级为:{} 课程名字:{} 课程周期:{} 课程价格:{}".format(self.course_class.name, self.name, self.time, self.price))


school_sh = Schools("老男孩上海校区", "上海虹桥")
school_sh.school_info()
python14 = school_sh.add_class("上海python14期")
python14.class_info()
python = python14.add_course("python", "5 month", 22200)
python.show_info()


class Students:
    def __init__(self, stu_name, stu_age, stu_num, stu_gender):
        self.name = stu_name
        self.age = stu_age
        self.num = stu_num
        self.gender = stu_gender
        self.stu_class = None

    # 学生创建完毕后,学生可以选择班级
    def choose_class(self, stu_class):
        self.stu_class = stu_class
        print("选择班级成功")

    def stu_info(self):
        if self.stu_class is None:
            print("所在班级:还未选择班级 姓名:{} 年龄:{} 学号:{} 性别:{}".format 
                      (self.name, self.age, self.num, self.gender))
        else:
            print("所在班级:{} 姓名:{} 年龄:{} 学号:{} 性别:{}".format 
                      (self.stu_class.name, self.name, self.age, self.num, self.gender))


stu1 = Students("wu", 22, 999, "male")
stu1.choose_class(python14)
stu1.stu_info()


class Teacher:
    def __init__(self, name, age, salary, level):
        self.name = name
        self.age = age
        self.salary = salary
        self.level = level

    def show_info(self):
        print("教师姓名:{} 年龄:{} 工资:{} 等级:{}".format(self.name, self.age, self.salary, self.level))

    # 老师创建完毕后,可以为学生打分
    def add_score(self, student, score):
        student.score = score
        print("打分成功")


egon = Teacher("egon", 40, 2220000, "3级")
egon.show_info()
tank = Teacher("tank", 30, 1555000, "2级")
tank.show_info()
egon.add_score(stu1, 100)
print(stu1.score)

1

原文地址:https://www.cnblogs.com/achai222/p/12654477.html