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

 

posted @ 2016-11-17 13:50  Tonychiu  阅读(167)  评论(0编辑  收藏  举报