python基础学习1-双层装饰器(实现登陆注册)

  1 LOGIN_USER = {"IsLogin":False}
  2 
  3  
  4 
  5 def check_login(func): #检查登陆的装饰器
  6     def inner(*args,**kwargs):
  7         if LOGIN_USER["IsLogin"]:
  8             r = func(*args,**kwargs)
  9             return r
 10         else:
 11             print("请先登录!")
 12     return  inner
 13 
 14  
 15 
 16 def check_role(func):#检查权限的装饰器
 17     def inner(*args,**kwargs):
 18        if LOGIN_USER["role"]=="2":
 19           r = func(*args,**kwargs)
 20           return r
 21        else:
 22           print("请用管理员帐户登录!")
 23     return  inner
 24 
 25  
 26 
 27 def login(username,pwd):#登陆函数
 28     f = open('db1',"r",encoding="utf-8")
 29     for line in f:
 30         r= line.split("|")
 31         if r[0]==username and r[1] == pwd:
 32             LOGIN_USER["IsLogin"] = True
 33             LOGIN_USER["username"] = username
 34             LOGIN_USER["pwd"]=r[1]
 35             LOGIN_USER["mail"]=r[2]
 36             LOGIN_USER["phone"]=r[3]
 37             LOGIN_USER["addr"]=r[4]
 38             LOGIN_USER["role"]=r[5].replace('
','')
 39             break
 40     f.close()
 41 
 42  
 43 
 44 @check_login
 45 def Register():#用户注册函数
 46     print("欢迎用户%s" %LOGIN_USER["username"])
 47     uname =input("输入注册用户名称:") #--取得新加注册记录的信息
 48     upwd = input("请输入注册用户密码")
 49     umail = input("请输入注册用户邮箱")
 50     uphone = input("请输入注册用户电话")
 51     uaddr = input("请输入注册用户地址")
 52     urole="1"
 53     fr= open('db1','r',encoding='utf-8') #---读取现有用户记录
 54     frs = fr.readlines()
 55     fr.close()
 56     fw = open('db1','w',encoding='utf-8') #--覆盖写入现有用户记录和新加用户记录
 57     for line in frs:
 58       fw.write(line)
 59     fw.write("
"+"%s|%s|%s|%s|%s|%s" % (uname,upwd,umail,uphone,uaddr,urole))#--写入新加用户记录
 60     fw.close()
 61     print("注册用户成功!")
 62 
 63  
 64 
 65 @check_login
 66 def ChangePwd(): #用户修改密码函数
 67      print("欢迎用户%s" %LOGIN_USER["username"])
 68      mpw=input("请输入修改的密码:")
 69      fr= open('db1','r',encoding='utf-8')  #---读取现有用户记录
 70      frs = fr.readlines()
 71      fr.close()
 72      fw = open('db1','w',encoding='utf-8') #--覆盖写入现有用户记录和新加用户记录
 73      for line in frs:
 74          ulist= line.split('|')
 75          if ulist[0]== LOGIN_USER["username"]:
 76             fw.write("%s|%s|%s|%s|%s|%s" % (ulist[0],mpw,ulist[2],ulist[3],ulist[4],ulist[5]))
 77          else:
 78             fw.write(line)
 79      fw.close()
 80      print("修改密码成功")
 81 
 82  
 83 
 84 @check_login
 85 def ShowUserInfo():#用户查看详细信息函数
 86     print("欢迎用户%s" %LOGIN_USER["username"])
 87     fr= open('db1','r',encoding='utf-8')#---读取现有用户记录
 88     frs = fr.readlines()
 89     fr.close()
 90 
 91    for line in frs:
 92          ulist= line.split('|')
 93          if ulist[0]== LOGIN_USER["username"]:
 94             uinfo =""" 用户信息
 95             ------------------------------
 96             username:%s
 97             email   :%s
 98             phone   :%s
 99             address :%s
100             role    :%s
101             ------------------------------
102             """ %(LOGIN_USER["username"],
103                      LOGIN_USER["mail"],
104                      LOGIN_USER["phone"],
105                      LOGIN_USER["addr"],
106                      LOGIN_USER["role"])
107     print(uinfo)
108 
109  
110 
111 @check_login #调用双层装饰器 先执行前面的装饰器 先检查登陆 ,在检查是否有权限
112 @check_role
113 def DeleteUser():#管理员删除用户信息
114      print("欢迎用户%s" %LOGIN_USER["username"])
115      duser = input("请输入需要删除用户:")
116      fr= open('db1','r',encoding='utf-8')   #---读取现有用户记录
117      frs = fr.readlines()
118      fr.close()
119      fw = open('db1','w',encoding='utf-8')
120      for line in frs:
121          ulist =line.split('|')
122          if ulist[0]==duser:
123              continue
124          else:
125              fw.write(line)
126      fw.close()
127      print("删除成功!")
128 
129  
130 
131 @check_login#调用双层装饰器
132 @check_role
133 def AddUser():#管理员添加用户信息
134     print("欢迎用户%s" %LOGIN_USER["username"])
135     uname =input("输入用户名称:")#--取得新加注册记录的信息
136     upwd = input("请输入用户密码")
137     umail = input("请输入用户邮箱")
138     uphone = input("请输入用户电话")
139     uaddr = input("请输入用户地址")
140     urole="1"
141     fr= open('db1','r',encoding='utf-8') #---读取现有用户记录
142     frs = fr.readlines()
143     fr.close()
144     fw = open('db1','w',encoding='utf-8')#--覆盖写入现有用户记录和新加用户记录
145     for line in frs:
146       fw.write(line)
147     fw.write("
"+"%s|%s|%s|%s|%s|%s" % (uname,upwd,umail,uphone,uaddr,urole)) #--写入新加用户记录
148     fw.close()
149     print("添加用户成功!")
150 
151  
152 
153 @check_login#调用双层装饰器
154 @check_role
155 def SeachUser():#管理员根据输入的关键字模糊查询用户信息
156      print("欢迎用户%s" %LOGIN_USER["username"])
157      search = input("请输入搜索关键字:")
158      fr= open('db1','r',encoding='utf-8')#---读取现有用户记录
159      frs = fr.readlines()
160      fr.close()
161      for line in frs:
162          ss = line.split('|')
163          if search in ss:
164              print("用户信息".center(50,'-'))
165              uinfo ="""
166             username:%s
167             email   :%s
168             phone   :%s
169             address :%s
170             role    :%s
171             """ %(ss[0],
172                      ss[2],
173                      ss[3],
174                      ss[4],
175                      ss[5])
176              print(uinfo)
177              print("End".center(50,'-'))
178 
179  
180 
181 @check_login#调用双层装饰器
182 @check_role
183 def ChangeRole():#管理员提升普通用户权限为管理员权限
184      print("欢迎用户%s" %LOGIN_USER["username"])
185      gname=input("请输入需提高权限的用户:")
186      fr= open('db1','r',encoding='utf-8')  #---读取现有用户记录
187      frs = fr.readlines()
188      fr.close()
189      fw = open('db1','w',encoding='utf-8')#--覆盖写入现有用户记录和新加用户记录
190      for line in frs:
191          ulist= line.split('|')
192          if ulist[0]== gname:
193             fw.write("%s|%s|%s|%s|%s|%s" % (ulist[0],ulist[1],ulist[2],ulist[3],ulist[4],"2"))
194          else:
195             fw.write(line)
196      fw.close()
197      print("提高权限成功")
198 
199  
200 
201 def main():#程序主入口函数
202     while True:
203         print("请选择操作模块")
204         qt= input( "1.注册 ;2.修改用户密码 ;3.修改用户权限 ;4.添加普通用户;5.查看本用户信息;6.删除用户;7.查询用户信息;Q-退出")
205         if not LOGIN_USER["IsLogin"] and qt !="q":
206             un = input("用户名:")
207             pd = input("密码:")
208             login(un,pd)
209         if qt =="1":
210             Register()
211         elif qt =="2":
212             ChangePwd()
213         elif qt =="3":
214             ChangeRole()
215         elif qt =="4":
216            AddUser()
217         elif qt=="5":
218            ShowUserInfo()
219         elif qt=="6":
220             DeleteUser()
221         elif qt =="7":
222             SeachUser()
223         elif qt=="q":
224          print("再见")
225          break
226 
227  
228 
229 main()#调用入口函数
230 
231  
View Code
原文地址:https://www.cnblogs.com/whzym111/p/5794451.html