day4-用户管理程序
1、流程图
2、代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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()
3、界面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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,账户类型:普通用户
作者: Tonychiu
出处: http://www.cnblogs.com/tonychiu
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明