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. 软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...
随机推荐
- hdu2795billboard线段树
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2795/ 题目大意:有一块长方形木板,从上到下被分成h*w的区域,现要将n个长条放进这些区域中,要求从上到下只要后 ...
- Effective python(五):内置模块
1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held ...
- mysql数据库中的mybatis中xml解决in不起作用的问题
在sql语句中,某个字段进行in条件的时候,不起作用, 但是执行语句查询为null数据,但是根据表中数据来看是不可能有null数据的可能性的,所以不知道什么原因导致数据出不来 我因此想到以下解决办法来 ...
- 如何搭建本地web服务
IIS服务是windows自带的web服务,我们可以用来搭建本地网站,供局域网内的用户之前访问,比如办公室的同事之间,一个教室里的同学们. 先说明这是Windows10 x64位 家庭普通版的系统. ...
- docker下centos7编译安装ffmpeg
1.安装基础命令 docker下精简版centos没有make等命令,先安装: yum -y install gcc automake autoconf libtool make yum instal ...
- Pytest系列(8) - 使用自定义标记mark
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest 可以支持自定义 ...
- vue post请求 参数带有中文后端无法接收或者收到乱码,无法返回数据问题
问题来源: 在使用axios时,和java联调,发现调接口服务器始终拿不到参数data,但是检查network也的确传了data,才有了该文章. 基于 vue-axios 和 $.ajax 两种请求方 ...
- 七、【Docker笔记】Docker中网络基础配置
一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...
- C++模板心得
C++模板心得 我开始学模板的时候一脸懵逼,真的看不懂模板是怎么作用的.因为大多数人的代码把模板声明和函数.类的声明分行写,让我以为模板的作用是全局的,实际上应该像如下理解. 函数模板 templat ...
- 感动,我终于学会了Java对数组求和
前言 看到题目是不是有点疑问:你确定你没搞错?!数组求和???遍历一遍累加起来不就可以了吗??? 是的,你说的都对,都听你的,但是我说的就是数组求和,并且我也确实是刚刚学会.╮(╯▽╰)╭ 继续看下去 ...