python之路之课后作业

以下代码只包含管理员代码,用户代码和管理员相似
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import random
import time
import pickle
import os
from lib import modles
from lib.modles import Admin from config import setting def create_course(admin_obj):
teacher_list = pickle.load(open(setting.TEACHER_db_dir, 'rb'))
for num, item in enumerate(teacher_list, 1):
print(num, item.name, item.age, item.create_time, item.create_admin.username)
course_list = []
while True:
name = input('请输入课程(q退出):')
if name == 'q':
break
cost = input('请输入课时费:')
num = input('选择老师(序号):')
obj = modles.Course(name, cost, teacher_list[int(num)-1], admin_obj)
course_list.append(obj)
if os.path.exists(setting.COURSE_db_dir):
exists_list = pickle.load(open(setting.COURSE_db_dir, 'rb'))
course_list.extend(exists_list)
pickle.dump(course_list, open(setting.COURSE_db_dir, 'wb')) def create_teacher(admin_obj):
teacher_list = []
while True:
teacher_name = input('请输入老师姓名(q表示退出)')
if teacher_name == 'q':
break
teacher_age = input('请输入老师年龄')
obj = modles.Teacher(teacher_name, teacher_age, admin_obj)
teacher_list.append(obj) if os.path.exists(setting.TEACHER_db_dir):
exists_list = pickle.load(open(setting.TEACHER_db_dir, 'rb'))
teacher_list.extend(exists_list)
pickle.dump(teacher_list, open(setting.TEACHER_db_dir, 'wb')) def login(user, pwd):
if os.path.exists(os.path.join(setting.BASE_ADMIN_DIR, user)):
# 这有bug,已解决,导入Admin和添加文件路径os.path.join(setting.BASE_ADMIN_DIR
admin_obj = pickle.load(open(os.path.join(setting.BASE_ADMIN_DIR, user), 'rb'))
if admin_obj.login(user, pwd):
while True:
sel = input("1、创建老师: 2、创建课程:q、退出")
if sel == '':
create_teacher(admin_obj)
elif sel == '':
create_course(admin_obj)
else:
break
else:
return 1
else:
return 0 def register(user, pwd):
admin_obj = modles.Admin()
admin_obj.register(user, pwd) def main():
inp = input("1、管理员登录:2、管理员注册:\n >>>>>")
user = input('请输入用户名:')
pwd = input('请输入密码:')
if inp == '':
ret = login(user, pwd)
if ret == 1:
print('密码错误')
elif ret == 0:
print('用户不存在') elif inp == '':
register(user, pwd) if __name__ == "__main__":
main()
admin
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) BASE_ADMIN_DIR = os.path.join(BASE_DIR, "db", "adminall") TEACHER_db_dir = os.path.join(BASE_DIR, "db", "teacher_list") COURSE_db_dir = os.path.join(BASE_DIR, "db", "course_list")
setting
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import time
import pickle
from config import setting
import os class Teacher:
"""
封装老师的相关信息
"""
def __init__(self, name, age, admin):
self.name = name
self.age = age
self.__assets = 0
self.create_time = time.strftime('%Y-%m-%d %H:%M:%S')
self.create_admin = admin def gain(self, cost):
"""
:param cost: 资产的增加
:return:
"""
self.__assets += cost def decrease(self, cost):
"""
:param cost: 资产的减少
:return:资产
"""
self.__assets -= cost class Course:
"""
课程相关信息
"""
def __init__(self,course_name, cost, teacher_obj, admin):
self.course_name = course_name
self.cost = cost
self.teacher_obj = teacher_obj
self.create_time = time.strftime('%Y-%m-%d %H:%M:%S')
self.create_admin = admin def have_lesson(self):
"""
课程上课,自动给相关联的任课老师增加课时费 :return:课程内容返回上课者
"""
self.teacher.gain(self.cost) content = random.randrange(10, 100)
r = time.strftime('%Y-%m-%d %H:%M:%S')
temp = "课程:%s: 老师:%s: 内容: %d: 时间:" %(self.course_name, self.teacher, content, r)
return temp def absence(self):
"""
教学事故
""" class Admin:
def __init__(self):
self.username = None
self.password = None def login(self, user, pwd):
"""
管理员登录
:param user:用户名
:param pwd: 密码
:return:
"""
if self.username == user and self.password == pwd:
return True
else:
return False def register(self, user, pwd): """
管理员注册
:param user: 用户名
:param pwd: 密码
:return:
""" self.username = user
self.password = pwd path = os.path.join(setting.BASE_ADMIN_DIR,self.username) pickle.dump(self, open(path, 'xb'))
modles
python之路之课后作业的更多相关文章
- python基础一之课后作业:编写登录接口
1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...
- 【python之路16】作业
#!usr/bin/env python # -*- coding:utf-8 -*- # 数据库中原有 old_dict = { "#1": {'hostname': 'c1', ...
- 短篇文档兼职看过来 python 课后作业 assignment project
文档兼职 开题报告 读后感 课后作业 等 代写 编程,Java ,Python,R,等语言的,国内外课程作业指导,写作. 有经验,有作品,成交快,放心! 可联系 QQ 550987425
- Python之路
Python学习之路 第一天 Python之路,Day1 - Python基础1介绍.基本语法.流程控制 第一天作业第二天 Python之路,Day2 - Pytho ...
- python 之路,Day11 (下)- sqlalchemy ORM
python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM ...
- Python之路,Day10 - 异步IO\数据库\队列\缓存
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- Python之路,Day8 - Socket编程进阶
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- python之路1
python之路 http协议 html HTML2 CSS选择器 CSS属性操作 CSS属性操作/下 JavaScript(js)/上 JavaScript的对象 JavaScript的对象/下 前 ...
随机推荐
- JN_0015:ping IP 地址
1,打开命令窗口 2,ping www.baidu.com
- 备战2020年金三银四,看这一篇面试文章就够了(合适各级Java人员)
本文不是原创.为整理所得!但是内容是很干货的!我看了也有帮助.做个分享. 企业开始上班,就意味着大批量的招聘需求正在路上.在即将到来的金三银四跳槽面试季,提前祝贺大家拿到大厂offer.前程似锦.前程 ...
- 请求 - Fetch(未完)
概念和用法 可以被使用到更多地应用场景中:无论是service workers.Cache API.又或者是其他处理请求和响应的方式,甚至是任何一种需要你自己在程序中生成响应的方式. Cache 接口 ...
- python三器
1.1 装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 ...
- SDN-数据控制分离
严格来说,控制面与数据面分离并不是SDN的专利.从一个chassis角度看,传统路由器其实控制面和转发面也是分离的.Route-enginee和line card分别负责控制面板和转发面.但是传统网络 ...
- LeetCode 836. 矩形重叠
题目链接:https://leetcode-cn.com/problems/rectangle-overlap/ 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左 ...
- Codeforces #454 div1 C party(状态压缩bfs)
题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团. 解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点 ...
- Hadoop学习之路(5)Mapreduce程序完成wordcount
程序使用的测试文本数据: Dear River Dear River Bear Spark Car Dear Car Bear Car Dear Car River Car Spark Spark D ...
- 前后端分离开发,跨域时jsessionid每次请求都变化的问题解决方法
本解决方法的使用前提是,前端开发使用的是vue,后端使用java(SpringMVC) 在前后端分离开发过程中,可能会出现因跨域而导致每次请求的jsessionid不一致的情况 解决方法: 前端:要在 ...
- 关于向sql中插入datetime部分问题总结
非int型数据要加单引号, 用format格式化当前时间后用String插入即可 读取时用时间戳读取datetime或转化为string存储 读 public static String gainTi ...