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('\n','')
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("\n"+"%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("\n"+"%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