描述:
1、分权限(普通用户,管理员)
普通用户可以查看和修改个人信息;管理员可以对所有用户信息进行增删改查;
2、用户的信息从文件中读取,增加、修改、删除完成后,文件中的内容也要同步;
思路:
1、查、改、删;将文件中的内容读取存入一个字典person中,对该字典进行查、改、删操作;
2、增;增加新用户时直接在文件末尾下一行插入即可。
函数:
1、打印用户信息
2、从文件中读取信息
3、将字典中的内容存到文件
4、修改用户信息
5、增加用户信息
6、删除用户信息
# ************************打印用户信息***********************
def print_info(dict, username):
data = dict.get(username)
# 打印格式
form = '''
-------------%s的个人信息-------------
姓名:%s
密码:%s
年龄:%s
职业:%s
行业:%s
---------------------------------------
''' % (username, data[0], data[1], data[2], data[3], data[4])
print(form)
# **********************从文件中读取信息*********************
def readFile(dict):
f = open("user.txt", "r+", encoding="utf-8")
raw_data = f.readlines() # 得到的是列表
# ['alex,abc123,24,Engineer,IT\n', 'rain,df2@423,25,Teacher,Teaching']
# dict={} #创建一个空字典,等待将文件中的内容存入
for line in raw_data:
line = line.strip() # alex,abc123,24,Engineer,IT
items = line.split(",") # 根据“,”分割line的内容返回一列表,如:
# ['alex', 'abc123', '24', 'Engineer', 'IT']
# ['rain', 'df2@423', '25', 'Teacher', 'Teaching']
dict[items[0]] = items # 第0个元素为key,后面的为values
# ******************将字典中的内容存到文件******************
def saveFile(dict): # 把整个内容替换为更改后的内容
f = open('user.txt', 'w', encoding='utf-8')
for key in dict:
row = ",".join(dict[key]) # 用join链接的序列中的元素必须都是字符串,否则会报错。比如列表中的age不能是数字,得加“”
f.write("%s\n" % row) # 这里要记得加换行,否则存到文件里的内容都在一行了
f.close()
# **********************新增用户信息*************************
def add():
print("*****新增用户信息界面,退出请输入q******")
new_name = input("用户名:")
if new_name == 'q':
pass
else:
new_pwd = input("密码:")
new_check_pwd = input("再次输入密码:")
if new_pwd != new_check_pwd:
print("两次密码不一致!")
else:
new_age = input("年龄:")
new_position = input("职业:")
new_industry = input("行业:")
# 将新增信息存入一个列表,然后把这个列表中的元素以“,”分隔,追加存入文件
list = [new_name, new_pwd, new_age, new_position, new_industry]
f = open('user.txt', 'a+', encoding='utf-8')
new_row = ",".join(list)
f.write("%s\n" % new_row) # 记得存入换行
print("增加成功!")
f.close()
# **********************删除用户信息*************************
def delete(dict, username):
if username not in dict:
print("%s 不存在!", username)
else:
print("确定要删除 %s 的全部信息?" % username)
confirm = input("Y/N :")
if confirm == 'Y' or confirm == 'y':
del dict[username] # 删除key为username的条目
print("删除成功!")
else:
pass
saveFile(dict)
# **********************修改用户信息*************************
def update(dict, username):
print("*****修改用户信息界面,退出请输入q******")
data = dict.get(username) # 得到的是列表
print(data)
info = '''
----------------------------------
属性 代码
姓名 1
密码 2
年龄 3
职业 4
行业 5
----------------------------------
'''
while True:
print(info)
code = input("请输入要修改的属性代码-->:")
# 如果输入“q”则退出
if code == 'q':
break
# 判断输入的代码是否是数字和是否在1-4范围内
if code != '1' and code != '2' and code != '3' and code != '4' and code != '5':
print("输入的代码不存在!")
continue
else:
# 输入的代码符合要求后,进行相关修改
# 修改用户名
if code == '1':
new_name = input("请输入新的用户名:")
if not new_name:
print("输入有误!")
else:
data[0] = new_name
print("用户名修改成功!")
# 修改密码
elif code == '2':
new_pwd = input("输入新密码:")
new_check_pwd = input("再次输入新密码:")
if (new_pwd != new_check_pwd):
print("两次密码输入不一致!")
else:
data[1] = new_pwd
print("用户密码修改成功!")
# 修改年龄
elif code == '3':
new_age = input("输入新的年龄:")
if not new_age:
print("输入有误!")
else:
data[2] = new_age
print("年龄修改成功!")
# 修改职位
elif code == '4':
new_position = input("输入新的职位:")
if not new_position:
print("输入有误")
else:
data[3] = new_position
print("职位修改成功!")
# 修改行业
elif code == '5':
new_industry = input("输入新的行业:")
if not new_industry:
print("输入有误!")
else:
data[4] = new_industry
print("行业修改成功!")
saveFile(dict)
# #**************************主函数******************************
# 从文件中读取内容存入字典person
person = {} # 创建一个空字典,等待将文件中的内容存入
readFile(person)
while True:
# 先登录
print("登录-->")
login_name = input("用户名:")
login_pwd = input("密码:")
if login_name not in person:
print("用户名不存在!")
continue
elif person.get(login_name)[1] != login_pwd:
print("密码错误!")
continue
else:
print("******登录成功******!")
# 登录成功后,选择要进行的操作
while True:
info = '''
----------------------------------
操作 代码
查看个人信息 1
修改个人信息 2
----------------------------------
'''
admin_info = '''
----------------------------------
操作 代码
查看全部用户信息 1
修改用户信息 2
新增用户信息 3
删除用户信息 4
----------------------------------
'''
# 用户权限
# 若登录的是管理员,这里管理员设为heather
if login_name == "heather":
print(admin_info)
operate = input("输入要进行的操作代码:")
if operate == 'q':
break
elif operate == '1':
# 把读取出来的内容打印到屏幕
for line in person:
print_info(person, line)
elif operate == '2':
# 修改用户信息
update_name = input("输入要修改的条目的用户名:")
update(person, update_name)
# 新增用户信息
elif operate == '3':
add()
# 删除用户信息
elif operate == '4':
del_name = input("输入要删除的条目的用户名:")
delete(person, del_name)
# 登陆的是普通用户,只能查看和修改个人信息
else:
print(info)
operate = input("输入要进行的操作代码:")
if operate == 'q':
break
elif operate == '1':
# 把读取出来的内容打印到屏幕
print(login_name)
print_info(person, login_name)
elif operate == '2':
# 修改个人信息
update(person, login_name)
else:
print("输入有误!")