以下代码只包含管理员代码,用户代码和管理员相似

#!/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之路之课后作业的更多相关文章

  1. python基础一之课后作业:编写登录接口

    1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...

  2. 【python之路16】作业

    #!usr/bin/env python # -*- coding:utf-8 -*- # 数据库中原有 old_dict = { "#1": {'hostname': 'c1', ...

  3. 短篇文档兼职看过来 python 课后作业 assignment project

    文档兼职 开题报告 读后感 课后作业 等 代写 编程,Java ,Python,R,等语言的,国内外课程作业指导,写作. 有经验,有作品,成交快,放心! 可联系 QQ 550987425

  4. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  5. python 之路,Day11 (下)- sqlalchemy ORM

    python 之路,Day11 - sqlalchemy ORM   本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM ...

  6. Python之路,Day10 - 异步IO\数据库\队列\缓存

    Python之路,Day9 - 异步IO\数据库\队列\缓存   本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...

  7. Python之路,Day8 - Socket编程进阶

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  8. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  9. python之路1

    python之路 http协议 html HTML2 CSS选择器 CSS属性操作 CSS属性操作/下 JavaScript(js)/上 JavaScript的对象 JavaScript的对象/下 前 ...

随机推荐

  1. ECMAScript基本对象——Number 对象

    Number 对象,原始数值的包装对象. 1.创建 var num = new Number(value); 2.方法 toExponential(x)把对象的值转换为指数计数法. toFixed(x ...

  2. CF1227F2 Wrong Answer on test 233 (Hard Version)

    题意 \(n\)道题,每道题有\(k\)种选项,其中第\(i\)道题正确答案是\(a_i\),但是填答案的时候填错啦,第一道题的选择填到了第二道题...第\(n\)道题的选择填到了第一道题,求在\(k ...

  3. 简单记账本APP开发一

    在对Android的一些基础的知识有了一定了解,以及对于AndroidStudio的如何使用有了 一定的熟悉后,决定做一个简单的记账本APP 开发流程 1.记账本的页面 2.可以添加新的账目 (一)页 ...

  4. latex技巧:弧AB

    \usepackage{yhmath} $\wideparen{ABCDEFG}$

  5. One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:

    C:\Users\arn>webpack -v One CLI for webpack must be installed. These are recommended choices, del ...

  6. window服务session隔离

    在window服务中抓取窗体是做不到的,因为window系统的session隔离机制:如果想要调用外部程序,可以通过 创建代理进程 进行操作(通过非托管代码CreateProcessAsUser函数进 ...

  7. 关于JavaScript的原型继承与原型链

    在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性. 这样一来,每个实例都有自己的实例属性 ...

  8. jQuery---淘宝精品案例

    淘宝精品案例 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  9. Git分支规范说明

    1.分支类型说明 分支名称 分支描述 唯一 权限管理 release 发布分支,内部分支,当确定需要发布版本时,从develop分支拉出此分支 唯一 最高权限,由版本经理或者团队核心成员组管理 mas ...

  10. JS编解码与Java编解码的对应关系

    最近前段在导出数据时会遇到“illegal character”的异常错误,结果发现是在请求地址中请求参数包含了空白字符(其编码为%C2%A0)或者是空格字符(其编码为%20),之前对空格字符情况是做 ...