视频加载失败

员工管理系统函数版本

1644 字
8 分钟
员工管理系统函数版本

【一】需求#

'''
功能列表
1.添加用户
2.查看指定用户
3.查看所有用户
4.删除指定用户
5.删除所有用户
6.修改指定用户信息
7.退出系统
用户信息总览
编号 名字 年龄 爱好 身份信息
指定编号(自定义):可以根据指定编号,修改查看指定员工信息
指定名字(自定义)
指定年龄(自定义)
指定爱好(自定义):可以有多个爱好,可以修改时在原有基础上增加新的爱好
指定身份信息(管理员/员工):管理员具有删除和修改信息功能,员工只能登录注册添加和查看
'''

【二】代码#

from datetime import datetime
# 用户名和密码信息存储位置 user_pwd.txt
# 用户信息存储位置 user_info.txt
# 用户日志存储位置 user_log.txt
# 登录信息存储字典
login_user_dict = {'username': '', "is_admin": False}
def _read_data(path):
try:
with open(path, 'r', encoding='utf8') as fp:
data = fp.read()
return True, data
except Exception as error:
return False, f'文件不存在'
def _create_data_dict(**kwargs):
user_data_dict = {}
if kwargs:
user_data_dict.update(kwargs)
return user_data_dict
# 读取用户名和密码信息
def _read_pwd_data():
user_pwd_dict = {}
# 读取文件数据
flag, data = _read_data(path='user_pwd.txt')
if not flag:
return data
# 对数据进行切分
for data in data.split('\n'):
if len(data) == 0:
continue
else:
username, password, role = data.split('|')
# 'dream': {'password': '521', 'role': 'admin'}
user_pwd_dict[username] = _create_data_dict(password=password, role=role)
# {'dream': {'password': '521', 'role': 'admin'}, 'hope': {'password': '369', 'role': 'normal'}}
return user_pwd_dict
def _read_info_data():
user_info_dict = {}
flag, data = _read_data(path='user_info.txt')
if not flag:
return data
for data in data.split('\n'):
if len(data) == 0:
continue
else:
user_id, username, age, hobby = data.split('|')
hobby_list = []
for hobby_every in hobby.split('-'):
if 'None' == hobby_every:
continue
else:
hobby_list.append(hobby_every)
user_info_dict[username] = _create_data_dict(user_id=user_id, age=age, hobby=hobby_list)
return user_info_dict
# 【1】读取用户信息
def read_data(tag_pwd=None, tag_info=None):
# 【2】读取用户名和密码信息
user_pwd_dict = _read_pwd_data()
if 'None' in user_pwd_dict.keys():
user_pwd_dict.pop('None')
# 【3】读取用户详细信息
user_info_dict = _read_info_data()
if 'None' in user_info_dict.keys():
user_info_dict.pop('None')
# 【4】如果标志位(密码)为真并且密码信息为真
if tag_pwd and user_pwd_dict:
return user_pwd_dict
# 【5】如果标志位(用户详细信息)为真并且用户详细信息为真
elif tag_info and user_info_dict:
return user_info_dict
# 【6】默认为全部信息
else:
return user_pwd_dict, user_info_dict
def _create_data(tag, data):
if tag == 'pwd':
pwd_data = f'{data.get("username_input")}|{data.get("password_input")}|{data.get("role")}'
return pwd_data
elif tag == 'info':
# music-listen
hobby_all = '-'.join(data.get('hobby_list'))
# 001|dream|88|music-listen
info_data = f'{data.get("user_id")}|{data.get("username_input")}|{data.get("age_input")}|{hobby_all}'
return info_data
def save_data(path, data, mode='a'):
try:
with open(path, mode, encoding='utf8') as fp:
fp.write(data + '\n')
return True, None
except Exception as error:
return False, error
def get_user_pwd():
username_input = input("请输入用户名 :>>>> ").strip()
password_input = input("请输入密码 :>>>> ").strip()
return username_input, password_input
def check_user_exists(username):
user_pwd_data = read_data(tag_pwd=True)
if username in user_pwd_data:
return True, user_pwd_data.get(username)
else:
return False, None
# 注册
def register():
username_input, password_input = get_user_pwd()
if username_input == 'dream' and password_input == '521':
pwd_data = _create_data(tag='pwd', data={"username_input": username_input,
"password_input": password_input,
"role": 'admin'})
else:
pwd_data = _create_data(tag='pwd', data={"username_input": username_input,
"password_input": password_input,
"role": 'normal'})
flag, msg = save_data(path='user_pwd.txt', data=pwd_data)
if flag:
# 001|dream|88|music-listen
info_data = f'None|{username_input}|None|None'
save_data('user_info.txt', data=info_data)
save_data('user_log.txt',
data=f'当前用户 *{username_input}* :>>>> 注册成功! 时间为 :>>>> {datetime.now().strftime("%Y年%m月%d日 %H时%M分%S秒")}')
return True, f'当前用户 *{username_input}* :>>>> 注册成功!'
else:
return False, msg
def _check_login():
if not login_user_dict.get('username'):
return False, f'请先登录!谢谢!'
else:
return True, None
# 登陆
def login():
username_input, password_input = get_user_pwd()
flag, user_pwd_data = check_user_exists(username_input)
if not flag:
return False, f'当前用户 *{username_input}* :>>>> 不存在!请先注册!'
if password_input != user_pwd_data.get('password'):
return False, f'当前用户 *{username_input}* :>>>> 用户名或密码失败!'
else:
login_user_dict['username'] = username_input
if user_pwd_data.get('role') == 'admin':
login_user_dict['is_admin'] = True
save_data('user_log.txt',
data=f'当前用户 *{username_input}* :>>>> 登陆成功! 时间为 :>>>> {datetime.now().strftime("%Y年%m月%d日 %H时%M分%S秒")}')
return True, f'当前用户 *{username_input}* :>>>> 登陆成功!'
def _create_info_data():
try:
# 编号
user_id = input("请输入用户编号 :>>>> ").strip()
# 用户昵称
# username_input = input("请输入用户昵称(默认为当前登录用户) :>>>> ").strip()
# if not username_input:
username_input = login_user_dict.get('username')
# 年龄
age_input = input("请输入年龄 :>>>> ").strip()
# 爱好
hobby_list = []
while True:
hobby_input = input("请输入爱好(q结束) :>>>> ").strip()
if hobby_input == 'q':
break
else:
hobby_list.append(hobby_input)
return user_id, username_input, age_input, hobby_list
except Exception as error:
return None
# 添加用户
def add_user():
if not _check_login()[0]:
return False, _check_login()[1]
# 编号 名字 年龄 爱好 身份信息
user_id, username_input, age_input, hobby_list = _create_info_data()
info_data = _create_data(tag='info',
data={'user_id': user_id, 'username_input': username_input, 'age_input': age_input,
'hobby_list': hobby_list})
flag, msg = save_data(path='user_info.txt', data=info_data)
if flag:
return True, f'当前用户 *{username_input}* :>>>> 信息修改成功!'
else:
return False, msg
def _check_user_id(tag_del=False):
user_info_data = read_data(tag_info=True)
user_id_dict = {item.get('user_id'): username for username, item in user_info_data.items()}
if 'None' in user_id_dict:
return False, f'请先修改用户 {user_id_dict.get("None")} 编号信息!'
print(f'当前用户信息如下 :>>>> {user_id_dict}')
user_id_input = input(f'请输入需要查找的编号 :>>>> ').strip()
if user_id_input not in user_id_dict:
return False, f'当前 *{user_id_input}* :>>>> 不存在'
username_out_put = ''
for username, user_info in user_info_data.items():
if user_id_input == user_info.get('user_id'):
username_out_put = username
if not username_out_put:
return False, f'当前 *{user_id_input}* :>>>> 编号查找失败!'
if not tag_del:
return username_out_put, user_info_data[username_out_put]
else:
return username_out_put, user_info_data
# 查看指定用户
def search_user_one():
if not _check_login()[0]:
return False, _check_login()[1]
flag, data = _check_user_id()
if flag:
msg = f'''
----------------- 当前用户 {flag} 信息如下 -----------------
姓名 :>>>> {flag}
编号 :>>>> {data.get('user_id')}
年龄 :>>>> {data.get('age')}
爱好 :>>>> {data.get('hobby')}
--------------------** END **----------------------
'''
return True, msg
else:
return flag, data
# 查看所有用户
def search_user_all():
if not _check_login()[0]:
return False, _check_login()[1]
user_info_data = read_data(tag_info=True)
for username, user_info in user_info_data.items():
msg = f'''
----------------- 当前用户信息 {username} 如下 -----------------
姓名 :>>>> {username}
编号 :>>>> {user_info.get('user_id')}
年龄 :>>>> {user_info.get('age')}
爱好 :>>>> {user_info.get('hobby')}
--------------------** END **----------------------
'''
print(msg)
return True, ''
# 删除指定用户
def del_user_one():
if not _check_login()[0]:
return False, _check_login()[1]
flag, data = _check_user_id(tag_del=True)
print(data)
if flag:
data.pop(flag)
print(f'删除后 :>>> {data}')
return True, data
else:
return False, data
# 删除所有用户
def del_user_all():
if not _check_login()[0]:
return False, _check_login()[1]
save_data(path='user_pwd.txt', mode='w', data='None|None|None')
save_data(path='user_info.txt', mode='w', data='None|None|None|None')
return True, f'用户信息已清除'
def _change_user_info(username):
user_info_data = read_data(tag_info=True).get(username)
try:
# 编号
user_id = user_info_data.get('user_id')
# 用户昵称
username_input = username
# 年龄
age_input = input("请输入年龄 :>>>> ").strip()
# 爱好
hobby_list = user_info_data.get('hobby')
while True:
hobby_input = input("请输入爱好(q结束) :>>>> ").strip()
if hobby_input == 'q':
break
elif hobby_input in hobby_list:
print(f"当前爱好 {hobby_input} :>>>> 已存在!")
continue
else:
hobby_list.append(hobby_input)
return user_id, username_input, age_input, hobby_list
except Exception as error:
return None
# 修改指定用户信息
def change_user_one():
if not _check_login()[0]:
return False, _check_login()[1]
flag, data = _check_user_id()
print(data)
if flag:
user_id, username_input, age_input, hobby_list = _change_user_info(username=flag)
info_data = _create_data(tag='info', data={'user_id': user_id,
'username_input': username_input,
'age_input': age_input,
'hobby_list': hobby_list})
flag, msg = save_data(path='user_info.txt', data=info_data)
if flag:
return True, f'当前用户 *{username_input}* :>>>> 信息修改成功!'
else:
return False, msg
else:
return False, data
# 退出系统
def back():
return False, 'break'
func_menu = '''
--------------- 欢迎来到梦梦员工系统 ---------------
1:注册
2:登陆
3:添加员工信息
4:查看指定员工信息
5:查看所有员工信息
6:删除指定员工信息
7:删除所有员工信息
8:修改指定员工信息
9:退出系统
'''
func_dict = {
1: register,
2: login,
3: add_user,
4: search_user_one,
5: search_user_all,
6: del_user_one,
7: del_user_all,
8: change_user_one,
9: back
}
# 系统入口
def main_system():
# 【1】打印功能菜单
while True:
print(func_menu)
func_id = input("请输入功能ID :>>>> ").strip()
if not func_id.isdigit():
print(f'{func_id} :>>>> 非法字符')
continue
func_id = int(func_id)
if func_id not in func_dict.keys():
print(f"{func_id} :>>>> 不存在该功能!")
continue
func = func_dict.get(func_id)
flag, msg = func()
if flag:
print(msg)
elif not flag and msg == 'break':
print(f"欢迎下次使用!再见!")
break
else:
print(msg)
continue
if __name__ == '__main__':
main_system()

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Profile Image of the Author
Dream
Hello, I'm Dream.
公告
欢迎来到我的博客!爱学习爱进步。
分类
标签
最新动态
站点统计
文章
300
分类
5
标签
26
总字数
640,882
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录