作业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