#!/usr/bin/env python#-*- coding:utf-8 -*-
"""模拟学校的选课系统"""
importrandomimporttimeimportpickleimportos#定义老师类
classTeacher:"""封装老师的相关信息"""
def __init__(self, name, age, admin):
self.name=name
self.age=age
self.__assets =0
self.create_time= time.strftime(‘%Y-%m-%d %H:%M:%S‘)
self.create_admin=admindefgain(self, cost):"""增加资产
:param cost: 增加的数量
:return:"""self.__assets +=costdefdecrease(self, cost):"""减少资产
:param cost: 减少的数量
:return:"""self.__assets -=cost#定义课程类
classCourse:"""课程相关信息"""
def __init__(self, course_name, cost, teacher_obj, admin):
self.course_name=course_name
self.cost=cost
self.teacher=teacher_obj
self.create_time= time.strftime(‘%Y-%m-%d %H:%M:%S‘)
self.create_admin=admin#定义管理员类
classAdmin:"""封装管理员"""
def __init__(self):
self.username=None
self.password=Nonedeflogin(self, user, pwd):"""管理员登录
:param user:
:param pwd:
:return:"""
if self.username == user and self.password ==pwd:returnTrueelse:returnFalsedefregister(self, user, pwd):"""管理员注册
:param user:
:param pwd:
:return:"""self.username=user
self.password=pwd
path=self.username
pickle.dump(self, open(path,‘xb‘))#定义创建老师的方法
defcreate_teacher(admin_obj):
teacher_list=[]whileTrue:
teacher_name= input("请输入老师的姓名:(q退出)")if teacher_name == "q":breakteacher_age= input("请输入老师的年龄:")
obj=Teacher(teacher_name, teacher_age, admin_obj)
teacher_list.append(obj)if os.path.exists("teacher_list"): #判断老师列表是否存在
exists_list = pickle.load(open(‘teacher_list‘, ‘rb‘))
teacher_list.extend(exists_list)
pickle.dump(teacher_list, open(‘teacher_list‘, ‘wb‘))#定义创建课程的方法
defcreate_course(admin_obj):
teacher_list= pickle.load(open(‘teacher_list‘, ‘rb‘))for num, item in enumerate(teacher_list, 1):print(num, item.name, item.age, item.create_time, item.create_admin.username)
course_list=[]whileTrue:
name= input("请输入课程名(q退出):")if name == "q":breakcost= input("请输入课时费:")
num= input(‘请选择老师(序号):‘)
obj= Course(name, cost, teacher_list[int(num) - 1], admin_obj)
course_list.append(obj)if os.path.exists("course_list"): #判断课程列表是否存在
exists_list = pickle.load(open(‘course_list‘, ‘rb‘))
course_list.extend(exists_list)
pickle.dump(course_list, open(‘course_list‘, ‘wb‘))#定义查看课程表的方法
deflook_course():
course_list= pickle.load(open(‘course_list‘, ‘rb‘))for num, item in enumerate(course_list, 1):print(num, item.course_name, item.cost, item.teacher.name, item.create_time, item.create_admin.username)#定义管理员登录方法
defto_login(user, pwd):ifos.path.exists(user):#从文件中将管理员对象读取出来(里面封装了用户信息以及提供了登录访求)
admin_obj = pickle.load(open(user, ‘rb‘))ifadmin_obj.login(user, pwd):print(‘登录成功!‘)whileTrue:
sel= input("1、创建老师;2、创建课程; 3、查看课程表(q退出程序) \n >>>>")if sel == ‘1‘: #创建老师
create_teacher(admin_obj)elif sel == ‘2‘: #创建课程
create_course(admin_obj)elif sel == ‘3‘:
look_course()else:break
else:return 1
else:return0#定义管理员注册方法
defto_register(user, pwd):
admin_obj=Admin()
admin_obj.register(user, pwd)defmain():
inp= input("1、管理员登录; 2、管理员注册;\n >>>>>")
user= input(‘请输入用户名:‘)
pwd= input(‘请输入密码:‘)if inp == ‘1‘:
ret=to_login(user, pwd)if ret == 1:print("密码错误!")elif ret ==0:print("用户不存在!")elif inp == ‘2‘:
to_register(user, pwd)if __name__ == "__main__":
main()