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. 软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...
随机推荐
- Leetcode——回溯法常考算法整理
Leetcode--回溯法常考算法整理 Preface Leetcode--回溯法常考算法整理 Definition Why & When to Use Backtrakcing How to ...
- swift 网络请求中含有特殊字符的解决方案
在网络请求时,URL出现中文或特殊字符时会造成请求失败,通常可使用 addingPercentEncoding(withAllowedCharacters: CharacterSet) 方法进行解决 ...
- TensorFlow 安装官方教程:Ubuntu 安装,Mac OS X 安装,Windows 安装
从我的使用体验来看 Ubuntu 是最好的, Mac 没有显卡,后期跑大项目比较鸡肋,Windows 安装各种依赖各种坑.Ubuntu 安装 TensorFlow 方便,后面安装 TensorFl ...
- php基本数据类型解说
一.简介: php语言是弱类型语言,声明变量的时候不需要指定数据类型.但每个数值都是有数据类型的.PHP共有九种数据类型. php基本数据类型共有四种:boolean(布尔型),integer(整型) ...
- 模块 subprocess 交互shell
subprocess 交互shell 执行shell命令, 与操作系统交互 三种执行命令的方法 subprocess.run(*popenargs, input=None, timeout=None, ...
- k8s删除namespace一直处于terminating状态
k8s删除namespace一直处于terminating状态 当遇到删除ns是一直处于terminating情况可以用调k8s api进行删除. 1.创建api proxy. [root@node1 ...
- 听说你还搞不定java中的==和equals?
相信很多读者关于==和equals懂了又懵,懵了又懂,如此循环,事实上可能是因为看到的博客文章之类的太多了,长篇大论,加上一段时间的洗礼之后就迷路了.本篇文章再一次理清楚.当然如果觉得本文太啰嗦的话, ...
- vulnhub~muzzybox
这个靶机是最新出的,Google了一番,发现walk trough少的可怜,最初是自己弄弄,但自己的确是菜. challenge 1.就是修改idcard.png 的内容,position princ ...
- Oracle ROWNUM用法
很多朋友应该跟我一样有个疑问,为什么rownum > 5 的时候会查不到一条数据,用rownum < 5就可以查到数据,明明查询所有的时候rownum有很多啊,小朋友,你是不是有很多问号? ...
- MATLAB实现一个EKF-2D-SLAM(已开源)
1. SLAM问题定义 同时定位与建图(SLAM)的本质是一个估计问题,它要求移动机器人利用传感器信息实时地对外界环境结构进行估计,并且估算出自己在这个环境中的位置,Smith 和Cheeseman在 ...