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. 软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...
随机推荐
- django缓存和跨域解决和短信验证码的使用
缓存 在实际项目中,存在大量的数据检索,比如我们刷微博的时候,刚开始加载速度慢一点,然后第一次加载完毕之后,如果你此时的手机没有网络,但是你发现你的微博还是可以照样刷,但是刷到一定的页面就走不动了,那 ...
- http服务部署
[root@xiaoyi ~]# vim /etc/ssh/sshd_config 17行 Port 22 49行 PermitRootLogin yes 观察IP地址与物理机属于同一个网段 打开Fi ...
- 概率-拒绝采样 Rejection Sampling
2018-12-09 16:40:30 一.使用Rand7()来生成Rand10() 问题描述: 问题求解: 这个问题字节跳动算法岗面试有问到类似的,有rand6,求rand8,我想了好久,最后给了一 ...
- java,jq,ajax写分页
1.先写好html基础样式 我懒得去写css样式233,能看就行 <style> #page { width: 20px; } </style> <table> & ...
- 2020面试整理【java】
spring面试题 1.你对spring的理解 Spring 是个Java企业级应用的开源开发框架. Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用. Sprin ...
- CVPR 2019细粒度图像分类竞赛中国团队DeepBlueAI获冠军 | 技术干货分享
[导读]CVPR 2019细粒度图像分类workshop的挑战赛公布了最终结果:中国团队DeepBlueAI获得冠军.本文带来冠军团队解决方案的技术分享. 近日,在Kaggle上举办的CVPR 201 ...
- nginx负载均衡例子
upstream demo { ip_hash;//客户连接后, 一直用这个IP,直到会话结束,否则,动态程序可能会在换IP后出错 server 192.168.1.1:80 weight=5 | d ...
- 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST
目录 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST 下载数据集 加载数据集 构建神经网络 反向传播(BP)算法 进行预测 F1验证 总结 参考 数据挖掘入门系 ...
- iOS 真机查看沙盒目录
iExplorer 的方法试的时候设备都无法检测到,建议放弃 启用iTunes文件共享,才能够看沙盒内的文件,只需要在plist文件中添加如下信息: <key>UIFileSharingE ...
- iOS 静态:动态 Pod
一.静态和动态 在项目中使用 pod 实现模块化,对于子模块和第三类库的导入方式存在两种:静态库.动态库. 当在 podfile 中指定 use_frameworks! 时,子模块和第三方类库将被打包 ...