day28作业

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()
day28作业的更多相关文章
- day28 作业
import uuid import pickle import os # 学校类 class School: #校区的名字:如"老男孩上海校区" #校区的地址:如"上海 ...
- python 作业
Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...
- day28 进程(Process)
day28 进程(Process) 1.进程的概念 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. # 进程是系统进行 ...
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- SQLServer2005创建定时作业任务
SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...
- 使用T-SQL找出执行时间过长的作业
有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下: SELECT sj.name , ...
- T-SQL检查停止的复制作业代理,并启动
有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...
- Python09作业思路及源码:高级FTP服务器开发(仅供参考)
高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...
- 个人作业week3——代码复审
1. 软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...
随机推荐
- [WPF]总结一些我在开发WPF时常用的工具
我从一万二千年前开始写XAML,这么多年用了很多各式各样的工具,现在留在电脑里的.现在还在用的.在写WPF时用的也就那么几个.这篇文章总结了这些工具,希望这些工具可以让WPF开发者事半功倍. 1. V ...
- effective-java学习笔记---使用接口模拟可扩展的枚举38
枚举类型( BasicOperation )不可扩展,但接口类型( Operation )是可以扩展的,并且它是用于表示 API 中的操作的接口类型. // Emulated extensible e ...
- CSS常用属性之选择器
css选择器 序号 选择器 例子 例子描述 1 .class .intro 选择class="intro"的所有元素 2 #id #firstname 选择id="fir ...
- redis吊锤面试官,这篇足够了!
原理篇 redis 时单线程的为什么还能那么快? 数据都在内存中,运算都是内存级别的运算. redis既然是单线程的为什么能处理那么多的并发数? 多路复用,操作系统时间轮训epoll 函数作为选择器, ...
- 让vscode支持WePY框架 *.wpy
WePY框架的.wpy 文件在微信开发者工具中无法打开,这里使用vscode 打开,并安装vetur 和vetur-wepy 插件即可
- WePY的开发环境的安装
2020-03-24 1.安装Node.js 官网:https://nodejs.org/ 两个版本 LTS为稳定的长期支持版本 Current为最新的版本 安装完毕后,cmd下输入 node -v ...
- coding++:kafka问题:zookeeper is not a recognized option zookeeper参数不支持
– zookeeper is not a recognized option主要原因是 Kafka 版本过高,命令不存在. 使用新版本: ./bin/kafka-console-consumer.sh ...
- 将图片base64格式转换为file对象并读取(两种方式读取)
两种方式读取,一种URL.createObjectURL,另一种fileReader var base64 = ` data:image/jpeg;base64,/9j/4AAQSkZJRgABA ...
- pycharm 2.7 快捷键
提示 CTRL Q: 在参数列表位置,显示可以输入的所有参数 CTRL Q: 查看选中方法的文档字符串 阅读 CTRL -: 折叠当前代码 CTRL +: 展开当前代码 CTRL SHIFT -: 折 ...
- [bzoj1191]超级英雄hero<二分图匹配*匈牙利算法>
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191 今天随便在bzoj找了一题做,题一读完就发现是个匈牙利算法的裸题,原本以为可以一次过 ...