import os
import uuid
import pickle
from conf import settings class School: def __init__(self,name,addr):
self.name = name
self.addr = addr
self.uuid = str(uuid.uuid4())
self.grades = {}
self.save()
self.save_name_uuid() def create_grade(self):
# 创建班级对象
name = input("请输入班级名称:").strip()
grade_obj = Grade(name)
grade_obj.save()
# 将班级名称与uuid存字典当成学校的属性。
self.grades[grade_obj.name] = grade_obj.uuid
self.save()
print("创建成功。") def save(self):
file_path = os.path.join(settings.SCHOOL_PATH,str(self.uuid))
with open(file_path,"wb") as f:
pickle.dump(self,f) def save_name_uuid(self):
'''将所有学校和对应的uuid保存成字典存放到Info文件中。'''
try:
with open(settings.INFO_PATH,"rb") as f:
school_dict = pickle.load(f)
except EOFError:
school_dict = {}
# school_dict = eval(f.read())
school_dict[self.name] = self.uuid
with open(settings.INFO_PATH,"wb") as f:
pickle.dump(school_dict,f) class Grade: def __init__(self,name):
self.name = name
self.uuid = uuid.uuid4()
self.course = None
self.students = {} def create_course(self):
name = input("请输入课程名称:").strip()
period = input("请输入课程周期:").strip()
price = input("请输入课程价格:").strip()
course_obj = Course(name,period,price)
self.course = course_obj.uuid
self.save()
print("创建课程成功") def save(self):
file_path = os.path.join(settings.GRADE_PATH, str(self.uuid))
with open(file_path, "wb") as f:
pickle.dump(self, f) class Course: def __init__(self,name,period,price):
self.name = name
self.period = period
self.price = price
self.uuid = uuid.uuid4() def save(self):
file_path = os.path.join(settings.COURSE_PATH, str(self.uuid))
with open(file_path, "wb") as f:
pickle.dump(self, f) class Student: def __init__(self,name):
self.name = name
self.uuid = uuid.uuid4()
self.grade = None def choice_grade(self): with open(settings.INFO_PATH,"rb") as f:
schools = pickle.load(f)
while True:
print("选课".center(40,"="))
schools_list = list(schools)
for k,school in enumerate(schools,0):
print(f"编号:{k} 学校名:{school}")
choice = input("请输入选择的学校编号:").strip()
school_uuid = schools[schools_list[int(choice)]]
school_path = os.path.join(settings.SCHOOL_PATH,school_uuid)
with open(school_path,"rb") as f:
school_obj = pickle.load(f)
grades = list(school_obj.grades)
for k,grade in enumerate(grades,0):
print(f"编号:{k} 班级名:{grade}")
choice2 = input("请输入所选班级编号:").strip()
grade_uuid = school_obj.grades[grades[int(choice2)]]
grade_path = os.path.join(settings.GRADE_PATH,str(grade_uuid))
with open(grade_path,"rb") as f:
grade_obj = pickle.load(f)
grade_obj.students[self.name] = self.uuid
grade_obj.save()
self.grade = grade_obj.uuid
print("选课成功")
break def save(self):
file_path = os.path.join(settings.STUDENT_PATH, str(self.uuid))
with open(file_path, "wb") as f:
pickle.dump(self, f) # 创建两个学校
school_1 = School("魔都校区","魔都飞车站")
school_2 = School("帝都校区","帝都飞盘站")
# 创建班级
school_1.create_grade()
school_1.create_grade() # 学生选课
stu_1 = Student("tom")
stu_1.choice_grade()

最新文章

  1. CharSequence cannot be resolved. It is indirectly referenced from required .class files
  2. 服务器.htaccess 详解以及 .htaccess 参数说明(转载)
  3. 0,SFDC 开发篇 - 开发框架和APEX语法
  4. Windows 安装 MongoDB 服务
  5. struts.xml中出现Package struts2 extends undefined package struts-default解决办法
  6. Unity3D入门(一):环境搭建
  7. Hadoop介绍及最新稳定版Hadoop 2.4.1下载地址及单节点安装
  8. GNOME与KDE的战争
  9. 显示 SQLite 日志
  10. UITapGestureRecognizer会屏蔽掉Button的点击事件( 转载)
  11. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
  12. java.lang.ClassNotFoundException: org.apache.lucene.store.Directory
  13. material design 的android开源代码整理
  14. mybati源码之ReuseExecutor
  15. winfrom 改变图片透明度 Alpha
  16. 【Python64-tkinter_label组件】
  17. 一个 CPU 核 开多少个 线程 比较合适 ?
  18. 字符串分割(C++)(转载)
  19. PU-bound(计算密集型) 和I/O bound(I/O密集型)
  20. 更新teaching中fdSubjectID为null的老数据

热门文章

  1. zabbix笔记_002
  2. React Native升级
  3. url,解释器,响应器,版本控制,分页
  4. hdu1495 倒水bfs
  5. Aleax prize (开放域聊天系统比赛)2018冠军论文阅读笔记
  6. fastText 训练和使用
  7. OpenCV-Python 形态学转换 | 十七
  8. 最小生成树(次小生成树)(最小生成树不唯一) 模板:Kruskal算法和 Prim算法
  9. BurpSuit工具安装和基本使用方法
  10. python—异常处理try