选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合
ps:不会写的同学,可以先用普通的方式,先把数据与功能都给写好,再考虑基于面向对象的思想进行整合
数据部分:
校区的名字:如"老男孩上海校区"
校区的地址:如"上海虹桥"
班级名字
班级所在校区
学生的学校
学生的姓名
学生的年龄
学号
学生的性别
课程名字
课程周期
课程价格
老师的名字
老师的年龄
老师的薪资
老师的等级
功能部分:
校区创建完毕后,可以为每个校区创建班级
班级创建完毕后,可以为每个班级创建课程
学生创建完毕后,学生可以选择班级
老师创建完毕后,可以为学生打分
class School:
school_name = 'Oldboy'
def __init__(self, nickname, addr):
self.nickname = nickname
self.address = addr
self.classes = []
def related_classes(self, classes_obj):
self.classes.append(classes_obj)
def tell_class(self):
print(self.nickname.center(50, '='))
for class_obj in self.classes:
class_obj.tell_course()
class Class:
def __init__(self, name):
self.name = name
self.course = []
def related_courses(self, course_obj):
self.course.append(course_obj)
def tell_course(self):
print(f'班级名称:{self.name}')
for course_obj in self.course:
course_obj.tell_course()
class Student:
def __init__(self, name, age, gender, id_num, school):
self.name = name
self.age = age
self.gender = gender
self.id_num = id_num
self.school = school
self.mark = None
self.classes = None
def related_class(self, class_obj):
self.classes = class_obj
def tell_class(self):
print('学生姓名:%s' % self.name)
self.classes.tell_course()
def tell_school(self):
print(self.school.nickname)
def tell_mark(self):
print('学生姓名:%s 分数: %s' % (self.name, self.mark))
class Course:
def __init__(self, name, peirod, price):
self.name = name
self.peirod = peirod
self.price = price
self.students = []
def ralated_student(self, student_obj):
self.students.append(student_obj)
def tell_course(self):
print('课程名:%s 周期:%s 价格:%s' % (self.name, self.peirod, self.price))
class Teacher:
def __init__(self, name, age, salary, rank):
self.name = name
self.age = age
self.salary = salary
self.rank = rank
def scoring(self, student_obj, mark):
student_obj.mark = mark
def tell_teacher_info(self):
print('姓名:%s 年龄:%s 薪资:%s' % (self.name, self.age, self.salary))
school1 = School('老男孩上海', '上海')
school2 = School('老男孩北京', '北京')
class1 = Class('脱产15期')
class2 = Class('脱产31期')
course1 = Course('python', '6mons', 20000)
course2 = Course('linux运维', '5mons', 18000)
student1 = Student('Alex', 23, 'male', 123456, school1)
student2 = Student('egon', 18, 'male', 887766, school2)
teacher1 = Teacher('tank', 18, 30, 10)
teacher2 = Teacher('wusir', 18, 30, 10)
school1.related_classes(class1)
school2.related_classes(class2)
'''
======================老男孩上海=======================
班级名称:脱产15期
======================老男孩北京=======================
班级名称:脱产31期'''
class1.related_courses(course1)
class2.related_courses(course2)
'''
======================老男孩上海=======================
班级名称:脱产15期
课程名:python 周期:6mons 价格:20000
======================老男孩北京=======================
班级名称:脱产31期
课程名:linux运维 周期:5mons 价格:18000'''
student1.related_class(class1)
student2.related_class(class2)
'''
学生姓名:Alex
班级名称:脱产15期
课程名:python 周期:6mons 价格:20000
学生姓名:egon
班级名称:脱产31期
课程名:linux运维 周期:5mons 价格:18000
'''
teacher1.scoring(student1, 98)
teacher2.scoring(student2, 50)
student1.tell_mark()
student2.tell_mark()
'''
学生姓名:Alex 分数: 98
学生姓名:egon 分数: 50
'''