day4-用户管理程序
1、流程图
2、代码
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 #Author: Tony Chiu 4 #Blog:http://www.cnblogs.com/tonychiu 5 #Github:https://github.com/qiujichun 6 7 import sys,os 8 9 INFO = (r\'info.txt\') 10 LOGIN_USER = {"is_login":False} 11 USER_LIST = [] 12 13 def outer1(func): 14 def inner(): 15 if LOGIN_USER[\'is_login\']: 16 print("***用户信息如下***") 17 func() 18 return inner 19 20 21 def outer2(func): 22 def inner(): 23 r = func() 24 if os.path.exists(\'info.bak\'): 25 os.remove(\'info.bak\') 26 os.rename(\'info.txt\', \'info.bak\') 27 os.rename(\'info_tmp.txt\', \'info.txt\') 28 return r 29 return inner 30 31 @outer1 32 def check_self(): 33 \'\'\' 34 查看自身信息 35 :return: 36 \'\'\' 37 # if LOGIN_USER[\'is_login\']: 38 with open(INFO, \'r\') as f: 39 for line in f.readlines(): 40 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 41 if line.strip(): 42 User, Pass, Email, Type = line.strip().split(\'|\') 43 if LOGIN_USER[\'current_user\'] == User: 44 if Type == \'0\': 45 print("用户名:%s,邮箱:%s,账户类型:管理员" %(User,Email)) 46 elif Type == \'1\': 47 print("用户名:%s,邮箱:%s,账户类型:普通用户" % (User, Email)) 48 49 @outer1 50 def check_all(): 51 \'\'\' 52 查看所有用户信息 53 :return: 54 \'\'\' 55 # if LOGIN_USER[\'is_login\']: 56 with open(INFO, \'r\') as f: 57 for line in f.readlines(): 58 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 59 if line.strip(): 60 User, Pass, Email, Type = line.strip().split(\'|\') 61 if Type == \'1\': 62 print("用户名:%s,邮箱:%s,账户类型:普通用户" % (User, Email)) 63 elif Type == \'0\': 64 print("用户名:%s,邮箱:%s,账户类型:管理员" % (User, Email)) 65 66 @outer2 67 def changepwd(): 68 \'\'\' 69 定义函数:修改用户密码 70 :return: 71 \'\'\' 72 New_Pass = input("请输入新的密码:") 73 with open(INFO, \'r\') as old, open(r\'info_tmp.txt\',\'w\') as new: 74 for line in old: 75 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 76 if line.strip(): 77 User, Pass, Email, Type = line.strip().split(\'|\') 78 if LOGIN_USER[\'current_user\'] == User: 79 Pass = New_Pass 80 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type) + \'\n\') 81 else: 82 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type) + \'\n\') 83 # if os.path.exists(\'info.bak\'): 84 # os.remove(\'info.bak\') 85 # os.rename(\'info.txt\',\'info.bak\') 86 # os.rename(\'info_tmp.txt\',\'info.txt\') 87 88 @outer2 89 def changepwd_other(): 90 \'\'\' 91 定义函数:修改指定用户密码 92 :return: 93 \'\'\' 94 New_User = input("请输入要修改密码的用户:") 95 New_Pass = input("请输入新的密码:") 96 with open(INFO, \'r\') as old, open(r\'info_tmp.txt\',\'w\') as new: 97 for line in old: 98 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 99 if line.strip(): 100 User, Pass, Email, Type = line.strip().split(\'|\') 101 if New_User == User: 102 Pass = New_Pass 103 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type) + \'\n\') 104 else: 105 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type)+\'\n\') 106 # if os.path.exists(\'info.bak\'): 107 # os.remove(\'info.bak\') 108 # os.rename(\'info.txt\',\'info.bak\') 109 # os.rename(\'info_tmp.txt\',\'info.txt\') 110 111 @outer2 112 def delete(): 113 \'\'\' 114 定义删除用户功能函数 115 :return: 116 \'\'\' 117 Del_User = input("请输入要删除的用户:") 118 with open(INFO, \'r\') as old, open(r\'info_tmp.txt\',\'w\') as new: 119 for line in old: 120 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 121 if line.strip(): 122 User, Pass, Email, Type = line.strip().split(\'|\') 123 if Del_User == User: 124 pass 125 else: 126 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type)+\'\n\') 127 # if os.path.exists(\'info.bak\'): 128 # os.remove(\'info.bak\') 129 # os.rename(\'info.txt\',\'info.bak\') 130 # os.rename(\'info_tmp.txt\',\'info.txt\') 131 132 133 def search(): 134 \'\'\' 135 定义搜索功能函数,支持精确查找和模糊查找 136 :return: 137 \'\'\' 138 Search_info = input("请输入要搜索的用户信息:") 139 with open(INFO,\'r\') as f: 140 for line in f.readlines(): 141 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 142 if line.strip(): 143 User,Pass,Email,Type = line.strip().split(\'|\') 144 if Search_info in User: 145 if Type == \'1\': 146 print("用户名:%s,邮箱:%s,账户类型:普通用户" % (User, Email)) 147 elif Type == \'0\': 148 print("用户名:%s,邮箱:%s,账户类型:管理员" % (User, Email)) 149 elif Search_info in Email: 150 if Type == \'1\': 151 print("用户名:%s,邮箱:%s,账户类型:普通用户" % (User, Email)) 152 elif Type == \'0\': 153 print("用户名:%s,邮箱:%s,账户类型:管理员" % (User, Email)) 154 155 @outer2 156 def update(): 157 \'\'\' 158 定义函数:升级指定普通用户为管理员账户 159 :return: 160 \'\'\' 161 Update_User = input("请输入要提升为管理员权限的用户:") 162 with open(INFO, \'r\') as old, open(r\'info_tmp.txt\',\'w\') as new: 163 for line in old: 164 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 165 if line.strip(): 166 User, Pass, Email, Type = line.strip().split(\'|\') 167 if Update_User == User: 168 Type = \'0\' 169 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type) + \'\n\') 170 else: 171 new.write(str(User) + \'|\' + str(Pass) + \'|\' + str(Email) + \'|\' + str(Type)+\'\n\') 172 # if os.path.exists(\'info.bak\'): 173 # os.remove(\'info.bak\') 174 # os.rename(\'info.txt\',\'info.bak\') 175 # os.rename(\'info_tmp.txt\',\'info.txt\') 176 177 178 def main(): 179 \'\'\' 180 定义主函数 181 :return: 182 \'\'\' 183 print(\'-\'.center(3,\'-\'), "Welcome To The User Management Program", \'-\'.center(3,\'-\')) 184 print(" 1.注册 2.登录") 185 print(\'*\'.center(46, \'-\')) 186 inp = input("请键入您要的操作:") 187 if inp == "1": 188 register() 189 elif inp == "2": 190 login() 191 192 193 def register(): 194 \'\'\' 195 定义注册、添加用户功能函数 196 提供三次尝试机会避免注册已存在的用户 197 使用列表USER_LIST.append(User)保存已存在的用户 198 :return: 199 \'\'\' 200 for i in range(3): 201 username = input("请输入新的用户名:") 202 with open(INFO,\'r\') as f: 203 for line in f.readlines(): 204 if line.strip(): 205 User, Pass, Email, Type = line.strip().split(\'|\') 206 USER_LIST.append(User) 207 if username in USER_LIST: 208 print(\'xxxxxxxxxxxxxxxxxxxxxxxxxxxx\') 209 print("用户已存在!请选择其他用户名") 210 print(\'xxxxxxxxxxxxxxxxxxxxxxxxxxxx\') 211 continue 212 else: 213 pwd = input("请输入密码:") 214 mail = input("请输入邮箱:") 215 with open(INFO,\'a\') as f: 216 f.write(\'\n\'+str(username)+\'|\'+str(pwd)+\'|\'+str(mail)+\'|\'+\'1\') 217 print("恭喜!注册成功") 218 print("-".center(30,\'-\')) 219 main() 220 221 222 def login(): 223 \'\'\' 224 定义登录功能函数 225 提供三次尝试登陆机会 226 :return: 227 \'\'\' 228 for i in range(3): 229 username = input("请输入用户名:") 230 pwd = input("请输入密码:") 231 with open(INFO,\'r\') as f: 232 for line in f.readlines(): 233 # 布尔值判断是否为空行,strip()忽略空格和换行符\n 234 if line.strip(): 235 User,Pass,Email,Type = line.strip().split(\'|\') 236 if username == User and pwd ==Pass: 237 LOGIN_USER[\'is_login\'] = True #字典修改 238 LOGIN_USER[\'current_user\'] = username #字典添加 239 LOGIN_USER[\'Type\'] = Type 240 break 241 order() 242 243 244 def order(): 245 \'\'\' 246 定义功能列表函数 247 :return: 248 \'\'\' 249 if LOGIN_USER[\'is_login\']: 250 print("欢迎%s登录" % LOGIN_USER[\'current_user\']) 251 while True: 252 if LOGIN_USER[\'Type\'] == \'0\': 253 print(\'-\'.center(48,\'-\'), "您可以进行的操作", \'-\'.center(48,\'-\')) 254 print("1.查看信息;2.修改密码;3.添加用户;4.删除用户;5.搜索用户;6.提高权限;7.查看所有用户;8.修改普通用户密码;q.退出\n") 255 select = input("键入您的选择:") 256 if select == \'1\': 257 check_self() 258 elif select == \'2\': 259 changepwd() 260 elif select == \'3\': 261 register() 262 elif select == \'4\': 263 delete() 264 elif select == \'5\': 265 search() 266 elif select == \'6\': 267 update() 268 elif select == \'7\': 269 check_all() 270 elif select == \'8\': 271 changepwd_other() 272 elif select == \'q\': 273 exit() 274 elif LOGIN_USER[\'Type\'] == \'1\': 275 print(\'-\'.center(6, \'-\'), "您可以进行的操作", \'-\'.center(6, \'-\')) 276 print("1.查看信息;2.修改密码;q.退出\n") 277 select = input("键入您的选择:") 278 if select == \'1\': 279 check_self() 280 elif select == \'2\': 281 changepwd() 282 elif select == \'q\': 283 exit() 284 285 286 main()
View Code
3、界面
a、注册
--- Welcome To The User Management Program ---
1.注册 2.登录
----------------------*-----------------------
请键入您要的操作:1
请输入新的用户名:test
请输入密码:test
请输入邮箱:test@demo.com
恭喜!注册成功
b、登录(普通用户)
请键入您要的操作:2
请输入用户名:user1
请输入密码:user1
欢迎user1登录
------ 您可以进行的操作 ------
1.查看信息;2.修改密码;q.退出
键入您的选择:1
***用户信息如下***
用户名:user1,邮箱:user1@demo.com,账户类型:普通用户
c、登录(管理员)
请键入您要的操作:2
请输入用户名:admin
请输入密码:admin
欢迎admin登录
------------------------------------------------ 您可以进行的操作 ------------------------------------------------
1.查看信息;2.修改密码;3.添加用户;4.删除用户;5.搜索用户;6.提高权限;7.查看所有用户;8.修改普通用户密码;q.退出
键入您的选择:7
***用户信息如下***
用户名:admin,邮箱:admin@demo.com,账户类型:管理员
用户名:user1,邮箱:user1@demo.com,账户类型:普通用户
用户名:user2,邮箱:user2@demo.com,账户类型:普通用户
用户名:user3,邮箱:user3@demo.com,账户类型:普通用户
用户名:test,邮箱:test@demo.com,账户类型:普通用户
键入您的选择:5
请输入要搜索的用户信息:user1
用户名:user1,邮箱:user1@demo.com,账户类型:普通用户
键入您的选择:5
请输入要搜索的用户信息:@demo.com
用户名:admin,邮箱:admin@demo.com,账户类型:管理员
用户名:user1,邮箱:user1@demo.com,账户类型:普通用户
用户名:user2,邮箱:user2@demo.com,账户类型:普通用户
用户名:user3,邮箱:user3@demo.com,账户类型:普通用户
用户名:test,邮箱:test@demo.com,账户类型:普通用户
View Code
版权声明:本文为tonychiu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。