python作业之用户管理程序
数据库的格式化如下
分别为姓名|密码|电话号码|邮箱|用户类型
admin|admin123.|28812341026|admin@126.com|1
root|admin123.|134456634887|root@126.com|1
Cevin|admin123.|45566778990|Cevin@126.com|0
bob|admin|12345678|bob@126.com|1
# 1、普通用户
# 登陆,注册,修改密码,查看本用户信息 # 2、管理员用户
# 登陆,注册,修改密码,查看本用户信息
# 删除普通虚拟机,添加普通用户信息
# 查看所有的普通用户,按照指定的关键字搜索用户信息
# 提高普通用户的权限 # 3、要求
# 权限用装饰器
# 用户信息,用文件存储 # 4、文件内容
# 用户名|密码|手机号码|邮箱地址|用户类型
代码如下
#Auther Bob
#--*--coding:utf-8--*--
# 1、普通用户
# 登陆,注册,修改密码,查看本用户信息 # 2、管理员用户
# 登陆,注册,修改密码,查看本用户信息
# 删除普通虚拟机,添加普通用户信息
# 查看所有的普通用户,按照指定的关键字搜索用户信息
# 提高普通用户的权限 # 3、要求
# 权限用装饰器
# 用户信息,用文件存储 # 4、文件内容
# 用户名|密码|手机号码|邮箱地址|用户类型 login_dict = {"is_login": None, "login_type": None}
login_list = []
user_list = []
tmpe_user_list = []
with open("db", "r", encoding="utf-8") as f:
for line in f:
tmpe_user_list = line.strip().split("|")
user_list.append(tmpe_user_list[0])
tmpe_user_list = [] def manage_user(func):
def inner(*args, **kwargs):
if login_dict["is_login"] == "1" and login_dict["login_type"] == "1":
ret = func(*args, **kwargs)
return ret
elif login_dict["is_login"] == None:
print("请先登陆")
login()
elif login_dict["is_login"] == "1" and login_dict["login_type"] == None:
print("请使用管理员账号登陆")
login()
else:
pass return inner def common_user(func):
def inner(*args, **kwargs):
if login_dict["is_login"] == None:
print("请先登陆")
login()
elif login_dict["is_login"] == "1":
ret = func()
return ret return inner def login():
user_name = input("请输入用户名:")
user_passwd = input("请输入%s的密码:" %(user_name))
if user_name in user_list:
with open("db", "r", encoding="utf-8") as f:
for line in f:
login_list = line.strip().split("|")
# print(login_list[0])
# print(login_list[1])
if user_name == login_list[0] and user_passwd == login_list[1]:
print('欢迎%s登陆管理平台' %(user_name))
if login_list[4] == "1":
login_dict["is_login"] = "1"
login_dict["login_type"] = "1"
print(login_dict)
else:
login_dict["is_login"] = "1"
login_dict["login_type"] = None
print(login_dict)
break
else:
print("用户名或者密码错误,请重新登陆:")
login_dict["is_login"] = None
login_dict["login_type"] = None
login()
else:
print("用户名或者密码错误,请重新登陆")
login_dict["is_login"] = None
login_dict["login_type"] = None
login() @common_user
def regi_common():
break_flag = False
while True:
if break_flag == True:
break
else:
login_name = input("请输入需要注册的用户名:")
if login_name in user_list:
print("该用户名已经存在,请重新输入注册的用户名")
regi_common()
else:
login_paswd = input("请输入%s的用户密码:" % (login_name))
login_number = input("请输入%s的电话号码:" % (login_name))
login_email = input("请输入%s的邮箱地址:" % (login_name))
while True:
if login_dict["is_login"] == "1" and login_dict["login_type"] == "1":
option = input("请输入%s的用户类型\n1:管理员\n2:普通用户\n" % (login_name))
if option == "1":
login_type = "1"
with open("db","a",encoding="utf-8") as f1:
user_info = "\n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type
f1.write(user_info)
break_flag = True
user_list.append(login_name)
break
elif option == "2":
login_type = "0"
with open("db", "a", encoding="utf-8") as f1:
user_info = "\n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type
f1.write(user_info)
break_flag = True
user_list.append(login_name)
break
else:
print("无效的输入,请重新输入")
continue elif login_dict["is_login"] == "1" and login_dict["login_type"] == None:
option = input("请输入%s的用户类型\n1:普通用户\n" % (login_name))
if option == "1":
login_type = "0"
with open("db", "a", encoding="utf-8") as f1:
user_info = "\n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type
f1.write(user_info)
break_flag = True
user_list.append(login_name)
break
else:
print("无效的输入,请重新输入")
else:
pass @manage_user
def change_password():
while True:
change_name = input("请输入需要修改密码的欧用户名")
if change_name in user_list:
# old_passwd = input("请输入%s的旧密码" %(change_name))
change_passwd = input("请输入%s的新密码" %(change_name))
with open("db","r",encoding="utf-8") as f1,open("temp","w",encoding="utf-8") as f2:
for line in f1:
change_list = line.strip().split("|")
if change_name == change_list[0]:
new = line.replace(line.strip().split("|")[1],change_passwd)
f2.write(new)
else:
f2.write(line)
change_list = []
with open("temp","r",encoding="utf-8") as f1,open("db","w",encoding="utf-8") as f2:
for line in f1:
f2.write(line)
print("用户%s密码已经修改成功" %(change_name))
break
# break else:
print("%s不在用户列表中,请重新输入要修改的用户名:" %(change_name))
option = input("是否要继续1:退出;2:继续")
if option == "1":
exit()
elif option == "2":
break
else:
continue @manage_user
def view_user():
while True:
print(user_list)
view_name_db = str(input("请输入要查询的用户名:"))
if view_name_db in user_list:
# print(view_name_db)
with open("db","r",encoding="utf-8") as f1:
for line in f1:
view_list = line.strip().split("|")
if view_name_db == view_list[0]:
if view_list[4] == "1":
view_type = "管理员"
elif view_list[4] == "0":
view_type = "普通用户"
s = "%s的信息如下" %(view_name_db)
print(s.center(100,"-"))
view_info = "用户名:" + view_list[0] + "\n" + "密码:" + view_list[1] + "\n" + "电话号码:" + view_list[2] + "\n" + "邮箱地址:" + view_list[3] + "\n" + "用户类型:" + view_type
print(view_info)
option = input("是否需要继续查询用户名:\n1:是\n2:否")
if option == "1":
continue
elif option == "2":
return True
else:
continue
# view_list = []
else:
print("用户名%s不存在" %(view_name_db))
option = input("是否需要重新查询用户名:\n1:是\n2:否")
if option == 1:
continue
elif option == 2:
break
else:
continue @manage_user
def del_user():
while True:
del_name = input("请输入需要删除的用户")
if del_name not in user_list:
option = input("用户名%s不存在,是否需要重新删除用户名:\n1:是\n2:否" %(del_name))
if option == "1":
continue
elif option == "2":
break
else:
continue
else:
with open("db","r",encoding="utf-8") as f1,open("temp","w",encoding="utf-8") as f2:
for line in f1:
if line.strip().startswith(del_name):
continue
else:
f2.write(line)
with open("temp","r",encoding="utf-8") as f1,open("db","w",encoding="utf-8") as f2:
for line in f1:
f2.write(line)
print("用户名%s已经删除成功" %(del_name))
user_list.remove(del_name)
while True:
option = input("是否需要继续删除用户:\n1:是\n2:否")
if option == "1":
break
elif option == "2":
return True
else:
print("无效的输入,请重新输入") def main():
while True:
s = "请输入你要做什么"
print(s.center(100,"-"))
option = input("1、登陆\n2、查看用户\n3、删除用户\n4、修改密码\n5、注册用户")
if option == "1":
login()
elif option == "2":
view_user()
elif option == "3":
del_user()
elif option == "4":
change_password()
elif option == "5":
regi_common()
else:
while True:
option = input("无效的输入,是否需要继续:\n1、退出\n2、继续\n")
if option == "1":
exit()
elif option == "2":
break
else:
continue main()
python作业之用户管理程序的更多相关文章
- Python作业之用户管理
作业 流程图没有画,懒,不想画 readme没有写,懒,不想写.看注释吧233333 #! /usr/bin/env python # -*- coding: utf-8 -*- # __author ...
- Python作业第一课
零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...
- python作业学员管理系统(第十二周)
作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学 ...
- python作业ATM(第五周)
作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...
- Python作业-选课系统
目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...
- (转)Python作业day2购物车
Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现) ...
- python入门:用户登录,三次错误机会
#!/usr/bin/env python # -*- coding:utf-8 -*- #用户登录,三次机会重试 #主要分为两个部分,一部分是写三次循环,一部分写用户输入 #用户登录的实现,循环3次 ...
- python初步编写用户登录
python初步编写用户登录 python编写用户登录 用python写一个脚本,使得这个脚本在执行后,可以产生如下的效果: 1.用户的账号为:root 密码为:westos 2.用户账号和密码均输 ...
- Python之读取用户指令和格式化打印
Python之读取用户指令和格式化打印 一.读取用户指令 当你的程序要接收用户输入的指令时,可以用input函数: name = input("请输入你的名字:") print(& ...
随机推荐
- 最全的CSS浏览器兼容问题http://www.68design.net/Web-Guide/HTMLCSS/37154-1.html
最全的CSS浏览器兼容问题 来源:68design.net 作者:邓飞飞 2008年09月23日 14:17 网友评论:7条 点击:71865 CSS 对浏览器的兼容性有时让人很头疼,或许当你了解当中 ...
- FileSync plugin for Eclipse 安装注意事项 Eclipse文件同步插件
习惯了使用MyEclipse,各种插件不用自己安装,觉得开发起来很方便,现在大家都用Eclipse了,还有不用Eclipse用更高级的,IT当然开发大型项目没人用UltraEdit吧,虽然是一个不错的 ...
- mysql设置索引
1.添加PRIMARY KEY(主键索引) 语法:ALTER TABLE `表名` ADD PRIMARY KEY ( `列名称` ) mysql>ALTER TABLE `table_name ...
- 哈希与位图(Hash and BitMap)
Hash:哈希机制 BitMap:位图机制 目的:都是为了保证检索方便而设置的数据结构 对于大数据进行排序,由于内存限制,不可能在内存中进行,所以采取BitMap机制 为了在大数据中快速检索以及操作数 ...
- 用javac编译servlet类出现问题
本人写了一个关于servlet的webapp,但是在用javac编译的时候,只是单纯的将jsp-api.jar和servlet-api.jar拷贝放在了其目录下面,然后利用命令行 javac XXX. ...
- 随着firefox的迭代更新:FireBug不能用了?使用火狐Try Xpath插件替代Firebug和Firepath
本篇文章讲解如何在火狐中安装和使用Try Xpath(插件替代Firebug和Firepath). 在火狐中安装Try Xpath 1. 打开火狐浏览器 FireFox57以上的版本 2. 在火狐菜单 ...
- openlayers-热地图加载(完整版及代码)
//地圖加載function mapInit(data){ //底图// var raster = new ol.layer.Tile({// source: new ol.source.Stamen ...
- 装机 win7 64 IE11
英文版win7,更改语言包 英文版 http://windows.microsoft.com/en-us/internet-explorer/download-ie 中文版 http://window ...
- VB6 内存释放
VB在内存释放方面是这样的, 首先和其他任何语言一样,如果是在stack分配的空间的话,操作系统自动进行管理 比如下面的语句 dim a as string '当a 超出它的作用范围以后,就会被释放掉 ...
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏. 有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中. 这样就不需要,在安装APK之后,去下载资 ...