需求:
实现代码:
# Author: Severen
import pickle
class Course(object): # 课程类
def __init__(self, type, price, time, id):
self.id = id
self.type = type
self.price = price
self.time = time
self.classrooms = []
def add_classroom(self, obj):
self.classrooms.append(obj)
print("%s加入了%s" % (self.type, obj.name))
class Classroom(object): # 教室类
def __init__(self, name, id):
self.name = name
self.id = id
self.courses = []
self.stus = []
def add_course(self, obj):
self.courses.append(obj)
print("为%s添加了一门%s课程" % (self.name, obj.type))
def add_stu(self, obj):
self.stus.append(obj)
print("为%s添加了一个学生-%s" % (self.name, obj.name))
class School(object): # 学校类
def __init__(self, id, name, addr):
self.id = id
self.name = name
self.addr = addr
self.students = []
self.staffs = []
self.courses = []
self.classrooms = []
def enroll(self, stu_obj):
self.students.append(stu_obj)
print("为学员%s办理注册手续" % stu_obj.name)
def hire(self, staff_obj):
self.staffs.append(staff_obj)
print("雇佣%s" % staff_obj.name)
def create_course(self, course_type, price, time, course_id):
course = Course(course_type, price, time, course_id)
self.courses.append(course)
print("新增一门%s课程成功!" % course_type)
def create_classroom(self, name, id):
self.classrooms.append(Classroom(name, id))
print("新增%s成功!" % name)
class SchoolMember(object): # 成员类
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def tell(self):
pass
class Teacher(SchoolMember): # 老师类
def __init__(self, name, age, sex, salary, course_obj, school, id):
super(Teacher, self).__init__(name, age, sex)
self.id = id
self.salary = salary
self.course_obj = course_obj
self.school =school
def tell(self):
print("""
--- info of Teacher:
Name: %s
Age: %s
Sex: %s
Salary: %s
Course: %s
""" % (self.name, self.age, self.sex, self.salary, self.course_obj.type))
def teach(self):
print("%s is teaching course[%s]" % (self.name, self.course_obj.type))
class Student(SchoolMember): # 学生类
def __init__(self, name, age, sex, grade, id):
super(Student, self).__init__(name, age, sex)
self.stu_id = id
self.grade = grade
self.classroom = None
def tell(self):
print("""
--- info of Student:
Name: %s
Age: %s
Sex: %s
Stu_id: %s
Grade: %s
""" % (self.name, self.age, self.sex, self.stu_id, self.grade))
def pay_tuition(self): # 学费
tuition = 0
for course in self.classroom.courses:
print(course.type, course.price, course.time)
tuition += int(course.price)
print("%s需要支付学费$%s" % (self.name, str(tuition)))
x = input("请确认并输入支付密码: ")
def schoolView(schools): # 学校视图
for i in schools:
print(i.id, i.name)
sc_id = input("请选择要管理的学校(输入学校编号): ")
while 1:
print("1、新增课程; 2、新增班级; 3、雇佣教师; 4、班级管理")
choice_type = input("请选择要进行的操作(输入编号): ")
if choice_type == '1':
if schools[int(sc_id)].courses == []:
course_id = 0
else:
course_id = int(schools[int(sc_id)].courses[-1].id)
course_type = input("课程类型: ")
price = input("课程价格: ")
time = input("课程周期: ")
schools[int(sc_id)].create_course(course_type, price, time, (course_id+1))
elif choice_type == '2':
if schools[int(sc_id)].classrooms == []:
room_id = 0
else:
room_id = int(schools[int(sc_id)].classrooms[-1].id)
classroom_name = input("班级名称: ")
schools[int(sc_id)].create_classroom(classroom_name, (room_id+1))
elif choice_type == '3':
if schools[int(sc_id)].staffs == []:
staff_id = 0
else:
staff_id = int(schools[int(sc_id)].staffs[-1].id)
for x in schools[int(sc_id)].courses:
print(x.id, x.type)
course_id = int(input("教师教授课程编号: "))
name = input("教师姓名: ")
age = input("教师年龄: ")
sex = input("教师性别: ")
salary = input("教师薪水: ")
t = Teacher(name, age, sex, salary, schools[int(sc_id)].courses[course_id-1], schools[int(sc_id)], (staff_id+1))
schools[int(sc_id)].hire(t)
elif choice_type == '4':
for classroom in schools[int(sc_id)].classrooms:
print(classroom.id, classroom.name)
classroom_id = input("输入选择管理的班级的编号:")
classroom_id = int(classroom_id)
print("请选择要添加的课程编号:")
for course in schools[int(sc_id)].courses:
print(course.id, course.type)
while 1:
c = input("输入课程编号:")
if c == "q":
print("已选课程:")
for x in schools[int(sc_id)].classrooms[classroom_id-1].courses:
print(x.type)
break
schools[int(sc_id)].classrooms[classroom_id-1].add_course(schools[int(sc_id)].courses[int(c)-1])
schools[int(sc_id)].courses[int(c)-1].add_classroom(schools[int(sc_id)].classrooms[classroom_id-1])
elif choice_type == "q":
break
def stuView(schools): # 学生视图
for i in schools:
print(i.id, i.name)
sc_id = input("请选择您的学校(输入学校编号): ")
if schools[int(sc_id)].students == []:
stu_id = 0
else:
stu_id = int(schools[int(sc_id)].students[-1].stu_id)
name = input("请输入姓名:")
age = input("请输入年龄:")
sex = input("请输入性别:")
grade = input("请输入年级:")
stu = Student(name, age, sex, grade, stu_id+1)
schools[int(sc_id)].enroll(stu)
print("请选择班级(输入班级编号):")
for classroom in schools[int(sc_id)].classrooms:
print(classroom.id, classroom.name)
id = input("班级编号:")
schools[int(sc_id)].classrooms[int(id)-1].add_stu(stu)
stu.classroom = schools[int(sc_id)].classrooms[int(id)-1]
stu.pay_tuition()
def teacherView(schools): # 老师视图
for i in schools:
print(i.id, i.name)
sc_id = input("请选择要您的学校编号: ")
for x in schools[int(sc_id)].staffs:
print(x.id, x.name)
tc_id = int(input("请选择您的教师编号:"))
print("您的班级如下:")
for x in schools[int(sc_id)].staffs[tc_id-1].course_obj.classrooms:
print(x.id, x.name)
i = input("输入班级编号查看班级成员:")
for x in schools[int(sc_id)].staffs[tc_id-1].course_obj.classrooms[int(i)-1].stus:
print(x.stu_id, x.name)
schools = []
with open("test.txt", 'rb') as f:
try:
schools = pickle.loads(f.read()) #data = pickle.load(f)
except EOFError as e:
print("little thing...")
if schools == []:
schools.append(School(0, '北京大学', 'beijing'))
schools.append(School(1, '上海交大', 'shanghai'))
print("add_done...")
while 1:
print("1、学校入口; 2、学生入口; 3、教师入口")
choice = input("请输入您要进行的操作(输入编号): ")
if choice == '1':
schoolView(schools)
elif choice == '2':
stuView(schools)
elif choice == '3':
teacherView(schools)
elif choice == "q":
with open("test.txt", "wb") as f:
f.write(pickle.dumps(schools))
break