关于员工管理系统的设计与实现
【一】系统与功能介绍
# # 员工管理系统初级 # #
【一】 让用户直接看到打印序号的功能
# 功能列表有
1. 添加用户
2. 查看用户
3. 删除用户
4. 退出系统
【二】 需要实现的功能
1. 可以添加用户
2. 判断用户是否存在
2.1 用户存在则重新输入
2.2 用户不存在则添加
3. 用户可以添加自己的信息
信息包括:用户名、年龄、薪资、爱好
并将数据存储到信息列表里
3. 查看用户信息功能(可选择)
3.1 用户可以指定查看指定用户的信息
3.2 用户可以查看所有用户的信息
4. 删除用户功能
4.1 用户可以按照指定编号删除用户
5. 退出系统
'''
【二】系统功能分析
【0】流程图演示
【1】让用户直接看到打印序号的功能
- 定义一个列表存放所有的功能
- 方便修改每个功能的自定义命名
- 进入系统,打印功能菜单
【2】需要实现的功能
【2.1】添加用户功能
-
接收到正确指令,进入录入用户信息系统
-
先校验用户信息
-
如果用户信息存在。
- 则退出当前功能
-
如果用户信息不存在
-
录入用户信息
-
信息包括
-
姓名
-
年龄
-
薪资
-
爱好
-
总信息格式为
[{'username': 'dream', 'age': 18, 'salary': 10000, 'hobby': 'music'}]
-
-
-
-
录入信息结束,询问是否仅需录入或者退出当前功能
【2.2】查看用户信息功能
-
先接受指令,进入查看用户信息功能
-
录入指令
1.查看指定用户信息 2.查看全部用户信息
-
进入指令查看
【2.2.1】查看指定用户信息
- 接受指令,进入查看指定用户信息功能
- 输入需要查看的用户姓名
- 从数据库检索用户信息
- 如果存在
- 则打印输出用户信息
- 如果不存在
- 则提示这个用户不存在
- 如果存在
【2.2.2】查看全部用户信息
- 接受指令。进入查看全部用户信息功能
- 输入查看用户的姓名
- 从数据库检索信息并打印输出
【2.3】删除信息功能
-
先接受指令,进入删除用户信息功能
-
录入指令
1.删除指定用户信息 2.删除全部用户信息
-
进入指令查看
【2.3.1】删除指定用户信息功能
- 接受执行,进入删除指定用户信息功能
- 先打印输出数据库信息
- 输入需要删除的指定用户名
- 检索用户名是否存在
- 如果用户名存在
- 删除指定用户信息
- 如果用户不存在
- 退出功能
- 如果用户名存在
【2.3.2】删除全部信息功能
- 接受指令,进入删除全部用户信息功能
- 先打印输出数据库信息
- 数据库信息清空
【2.4】退出系统功能
-
先接受指令,进入退出用户系统
-
录入指令
1.退出到功能界面 2.完全退出系统
-
进入指令
【2.2.1】查看
【2.4.1】退出到用户功能选择界面
- 接受指令,进入退出用户系统界面
- 执行返回功能界面操作
【2.4.2】退出全部系统
- 接受指令,退出全部系统
【三】系统功能实现及演示
【1】进入系统打印功能序号
【1.1】功能实现
user_info = []
ueser_info_1 = {'username': 'dream', 'age': 18, 'salary': 10000, 'hobby': 'music'}
# 进入系统,打印功能菜单
print(function_List)
print(f'信息输入案例,请务必按照以下格式输入数据{ueser_info_1},\n温馨提示:>>>只有先录入信息才能进行信息操作!!')
# 得到指令代码ID
【1.2】演示
【2】添加用户功能
【2.1】功能实现(可添加多条数据)
# 进入系统,打印功能菜单
print(function_List)
print(f'信息输入案例,请务必按照以下格式输入数据{ueser_info_1},\n温馨提示:>>>只有先录入信息才能进行信息操作!!')
# 得到指令代码ID
function_ID = input('请输入你的功能代码ID::>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_ID.isdigit() or function_ID not in ['1', '2', '3', '4']:
print(f'请确认你的指令ID是否正确:>>{function_ID}')
# 正确则执行指令代码功能
else:
# 得到指令代码
function_ID = int(function_ID)
# 判断指令属于 1. 添加用户
if function_ID == 1:
# 打印欢迎语,展示功能
print(f'欢迎使用,当前功能是添加用户')
is_true = True
while is_true:
# 输入用户名
username = input('请输入你的姓名:>>').strip()
# 加一步判断:是否已经存在用户数据
for i in user_info: # 取到的数据类型 :{'username': 'dream', 'age': 18, 'salary': 10000, 'hobby': 'music'}
# print(i)
if username == i['username']: # 判断应户名是否一致
print(f'当前用户{username}已经存在,请重新确认!')
is_true = False
else:
# 输入年龄
age = input('请输入你的年龄:>>').strip()
# 输入薪资
salary = input('请输入你的薪资:>>').strip()
# 输入爱好
hobby = input('请输入你的爱好:>>').strip()
# 得到用户数据,进行用户数据存储
data = {
'username': username,
'age': age,
'salary': salary,
'hobby': hobby
}
user_info.append(data)
# 结束当前用户录入,重新进行校对
print(f'{username}信息已录入')
cmd = input(f'请确认是否继续录入数据(y/n)::>>>').strip()
if cmd == 'y':
continue
【2.2】演示
【3】查看用户信息功能
【3.1】查看指定用户信息功能
【3.1.1】功能实现
# 打印欢迎语,展示功能
# print(function_2)
is_true = True
while is_true:
print(function_2)
function_2ID = input('当前是查询用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_2ID.isdigit() or function_2ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_ID}')
break
# 正确则执行指令代码功能
else:
# 输入功能指令
function_2ID = int(function_2ID)
# 查看指定用户信息
is_true_inner1 = True
while is_true_inner1:
if function_2ID == 1:
is_true_inner = True
while is_true_inner:
print('当前功能是查看指定用户信息功能')
cmd_username = input('请输入你要查询的用户姓名:>>>').strip()
for i in user_info:
if i['username'] == cmd_username:
print(i)
chose = input('是否再次查询(y/n)或退出(N):>>>').strip()
if chose == 'y' or chose == 'Y':
continue
elif chose == 'n':
is_true_inner1 = False
is_true_inner = False
is_true = False
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print('感谢你的使用')
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print(f'查无此人{cmd_username},请确认用户姓名')
【3.1.2】演示
【3.2】查看全部信息功能
【3.2.1】功能实现
# 打印欢迎语,展示功能
# print(function_2)
is_true = True
while is_true:
print(function_2)
function_2ID = input('当前是查询用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_2ID.isdigit() or function_2ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_ID}')
break
# 正确则执行指令代码功能
else:
# 输入功能指令
function_2ID = int(function_2ID)
# 查看指定用户信息
is_true_inner1 = True
while is_true_inner1:
if function_2ID == 1:
is_true_inner = True
while is_true_inner:
print('当前功能是查看指定用户信息功能')
cmd_username = input('请输入你要查询的用户姓名:>>>').strip()
for i in user_info:
if i['username'] == cmd_username:
print(i)
chose = input('是否再次查询(y/n)或退出(N):>>>').strip()
if chose == 'y' or chose == 'Y':
continue
elif chose == 'n':
is_true_inner1 = False
is_true_inner = False
is_true = False
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print('感谢你的使用')
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print(f'查无此人{cmd_username},请确认用户姓名')
# 查看全部用户信息
elif function_2ID == 2:
print('当前功能是查看全部用户信息功能')
print(user_info)
chose = input('是否再次查询(y)或退出(N):>>>').strip()
if chose == 'y' or chose == 'Y':
break
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print('感谢你的使用')
【3.2.2】演示
【4】删除信息功能
【4.1】删除指定用户信息
【4.1.1】功能实现
# 打印欢迎语,展示功能
print(function_3)
function_3ID = input('当前是删除用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_3ID.isdigit() or function_3ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_3ID}')
break
else:
# 正确则执行指令代码功能
# 输入功能指令
function_3ID = int(function_3ID)
# 删除指定用户信息
is_true_inner1 = True
while is_true_inner1:
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_3ID == 1:
print('当前功能是删除指定用户信息功能')
cmd_username = input('请输入你要删除的用户姓名:>>>').strip()
# 循环遍历列表取出字典拿到 username(临时存放)
temporaryStorage = []
for info in user_info:
# 循环取到名字加入到列表中
temporaryStorage.append(info['username'])
# 名字在字典中表示数据库有数据
if cmd_username in temporaryStorage:
# 赋给特定值特定索引
# 定义初始值 i 为列表循环次数
# 定义初始值 a 为某个特定用户的索引值
i = 0
a = 0
for username_in in temporaryStorage:
# 循环次数 +1
# 如果名字相符合
a = i
i += 1
print(f'已查询到{cmd_username}信息::>>>{user_info[a]}')
#
chose = input('是否确认删除(y/Y)或退出(N/n):>>>').strip()
if chose == 'y' or chose == 'Y':
user = user_info[a]
# 删除特定索引的值
user_info.pop(a)
print(f'已删除用户信息::>>{user},其他用户信息为::>>{user_info}')
temporaryStorage = []
break
else:
print('感谢你的使用')
temporaryStorage = []
break
# 没有则退出
else:
print(f'查无此人{cmd_username},已退出')
is_true_inner1 = False
【4.2.2】演示
【4.2】删除全部用户信息
【4.2.1】功能实现
# 打印欢迎语,展示功能
print(function_3)
function_3ID = input('当前是删除用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_3ID.isdigit() or function_3ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_3ID}')
break
else:
# 正确则执行指令代码功能
# 输入功能指令
function_3ID = int(function_3ID)
# 删除指定用户信息
is_true_inner1 = True
while is_true_inner1:
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_3ID == 1:
print('当前功能是删除指定用户信息功能')
cmd_username = input('请输入你要删除的用户姓名:>>>').strip()
# 循环遍历列表取出字典拿到 username(临时存放)
temporaryStorage = []
for info in user_info:
# 循环取到名字加入到列表中
temporaryStorage.append(info['username'])
# 名字在字典中表示数据库有数据
if cmd_username in temporaryStorage:
# 赋给特定值特定索引
# 定义初始值 i 为列表循环次数
# 定义初始值 a 为某个特定用户的索引值
i = 0
a = 0
for username_in in temporaryStorage:
# 循环次数 +1
# 如果名字相符合
a = i
i += 1
print(f'已查询到{cmd_username}信息::>>>{user_info[a]}')
#
chose = input('是否确认删除(y/Y)或退出(N/n):>>>').strip()
if chose == 'y' or chose == 'Y':
user = user_info[a]
# 删除特定索引的值
user_info.pop(a)
print(f'已删除用户信息::>>{user},其他用户信息为::>>{user_info}')
temporaryStorage = []
break
else:
print('感谢你的使用')
temporaryStorage = []
break
# 没有则退出
else:
print(f'查无此人{cmd_username},已退出')
is_true_inner1 = False
# 功能代码2
# 删除全部用户信息
elif function_3ID == 2:
print('当前功能是删除全部用户信息功能')
print(f'当前用户的全部信息为{user_info}')
chose = input('是否确认执行删除全部信息操作(y/n)或退出功能(N):>>>').strip()
if chose == 'y':
user_info = []
elif chose == 'n':
print('感谢你的使用')
else:
print('感谢你的使用')
break
【4.2.2】演示
【5】退出系统功能
【5.1】退出到用户功能界面
【5.1.1】功能实现
# 打印欢迎语,展示功能
print(f'{function_4}')
function_4ID = input('当前是退出功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_4ID.isdigit() or function_4ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_4ID}')
continue
else:
# 正确则执行指令代码功能
# 输入功能指令
function_4ID = int(function_4ID)
# 退出到系统选择功能
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_4ID == 1:
print('返回功能界面,感谢使用!')
continue
【5.2】退出系统
【5.2.1】功能实现
# 打印欢迎语,展示功能
print(f'{function_4}')
function_4ID = input('当前是退出功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_4ID.isdigit() or function_4ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_4ID}')
continue
else:
# 正确则执行指令代码功能
# 输入功能指令
function_4ID = int(function_4ID)
# 退出到系统选择功能
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_4ID == 1:
print('返回功能界面,感谢使用!')
continue
# 完全退出系统
elif function_4ID == 2:
print('已退出系统,感谢使用!')
all_right = False
【四】系统功能代码完整版
# -*-coding: Utf-8 -*-
# @File : 01 .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/5/17
'''
# # 员工管理系统初级 # #
【一】 让用户直接看到打印序号的功能
# 功能列表有
1. 添加用户
2. 查看用户
3. 删除用户
4. 退出系统
【二】 需要实现的功能
1. 可以添加用户
2. 判断用户是否存在
2.1 用户存在则重新输入
2.2 用户不存在则添加
3. 用户可以添加自己的信息
信息包括:用户名、年龄、薪资、爱好
并将数据存储到信息列表里
3. 查看用户信息功能(可选择)
3.1 用户可以指定查看指定用户的信息
3.2 用户可以查看所有用户的信息
4. 删除用户功能
4.1 用户可以按照指定编号删除用户
5. 退出系统
'''
function_List = '''
---- 欢迎使用用户管理系统 ----
请选择你要使用的功能
1. 添加用户
2. 查看用户
3. 删除用户
4. 退出系统
'''
function_2 = '''
欢迎使用,当前功能是查看用户
请选择你要使用的功能
1.查看指定用户信息
2.查看全部用户信息
'''
function_3 = '''
欢迎使用,当前功能是删除用户
请选择你要使用的功能
1.删除指定用户信息
2.删除全部用户信息
'''
function_4 = '''
欢迎使用,当前功能是退出系统
请选择你要使用的功能
1.返回功能界面
2.完全退出系统
'''
# user_info = []
# user_info 示例 : {'username':'dream', 'age':18,salary':10000,'hobby':'music'}
user_info = []
ueser_info_1 = {'username': 'dream', 'age': 18, 'salary': 10000, 'hobby': 'music'}
all_right = True
while all_right:
# 进入系统,打印功能菜单
print(function_List)
print(f'信息输入案例,请务必按照以下格式输入数据{ueser_info_1},\n温馨提示:>>>只有先录入信息才能进行信息操作!!')
# 得到指令代码ID
function_ID = input('请输入你的功能代码ID::>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_ID.isdigit() or function_ID not in ['1', '2', '3', '4']:
print(f'请确认你的指令ID是否正确:>>{function_ID}')
# 正确则执行指令代码功能
else:
# 得到指令代码
function_ID = int(function_ID)
# 判断指令属于 1. 添加用户
if function_ID == 1:
# 打印欢迎语,展示功能
print(f'欢迎使用,当前功能是添加用户')
is_true = True
while is_true:
# 输入用户名
username = input('请输入你的姓名:>>').strip()
# 加一步判断:是否已经存在用户数据
for i in user_info: # 取到的数据类型 :{'username': 'dream', 'age': 18, 'salary': 10000, 'hobby': 'music'}
# print(i)
if username == i['username']: # 判断应户名是否一致
print(f'当前用户{username}已经存在,请重新确认!')
is_true = False
else:
# 输入年龄
age = input('请输入你的年龄:>>').strip()
# 输入薪资
salary = input('请输入你的薪资:>>').strip()
# 输入爱好
hobby = input('请输入你的爱好:>>').strip()
# 得到用户数据,进行用户数据存储
data = {
'username': username,
'age': age,
'salary': salary,
'hobby': hobby
}
user_info.append(data)
# 结束当前用户录入,重新进行校对
print(f'{username}信息已录入')
cmd = input(f'请确认是否继续录入数据(y/n)::>>>').strip()
if cmd == 'y':
continue
else:
is_true = False
elif function_ID == 2:
# 打印欢迎语,展示功能
# print(function_2)
is_true = True
while is_true:
print(function_2)
function_2ID = input('当前是查询用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_2ID.isdigit() or function_2ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_ID}')
break
# 正确则执行指令代码功能
else:
# 输入功能指令
function_2ID = int(function_2ID)
# 查看指定用户信息
is_true_inner1 = True
while is_true_inner1:
if function_2ID == 1:
is_true_inner = True
while is_true_inner:
print('当前功能是查看指定用户信息功能')
cmd_username = input('请输入你要查询的用户姓名:>>>').strip()
for i in user_info:
if i['username'] == cmd_username:
print(i)
chose = input('是否再次查询(y/n)或退出(N):>>>').strip()
if chose == 'y' or chose == 'Y':
continue
elif chose == 'n':
is_true_inner1 = False
is_true_inner = False
is_true = False
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print('感谢你的使用')
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print(f'查无此人{cmd_username},请确认用户姓名')
# 查看全部用户信息
elif function_2ID == 2:
print('当前功能是查看全部用户信息功能')
print(user_info)
chose = input('是否再次查询(y)或退出(N):>>>').strip()
if chose == 'y' or chose == 'Y':
break
else:
is_true_inner1 = False
is_true_inner = False
is_true = False
print('感谢你的使用')
elif function_ID == 3:
# 打印欢迎语,展示功能
print(function_3)
function_3ID = input('当前是删除用户信息功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_3ID.isdigit() or function_3ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_3ID}')
break
else:
# 正确则执行指令代码功能
# 输入功能指令
function_3ID = int(function_3ID)
# 删除指定用户信息
is_true_inner1 = True
while is_true_inner1:
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_3ID == 1:
print('当前功能是删除指定用户信息功能')
cmd_username = input('请输入你要删除的用户姓名:>>>').strip()
# 循环遍历列表取出字典拿到 username(临时存放)
temporaryStorage = []
for info in user_info:
# 循环取到名字加入到列表中
temporaryStorage.append(info['username'])
# 名字在字典中表示数据库有数据
if cmd_username in temporaryStorage:
# 赋给特定值特定索引
# 定义初始值 i 为列表循环次数
# 定义初始值 a 为某个特定用户的索引值
i = 0
a = 0
for username_in in temporaryStorage:
# 循环次数 +1
# 如果名字相符合
a = i
i += 1
print(f'已查询到{cmd_username}信息::>>>{user_info[a]}')
#
chose = input('是否确认删除(y/Y)或退出(N/n):>>>').strip()
if chose == 'y' or chose == 'Y':
user = user_info[a]
# 删除特定索引的值
user_info.pop(a)
print(f'已删除用户信息::>>{user},其他用户信息为::>>{user_info}')
temporaryStorage = []
break
else:
print('感谢你的使用')
temporaryStorage = []
break
# 没有则退出
else:
print(f'查无此人{cmd_username},已退出')
is_true_inner1 = False
# 功能代码2
# 删除全部用户信息
elif function_3ID == 2:
print('当前功能是删除全部用户信息功能')
print(f'当前用户的全部信息为{user_info}')
chose = input('是否确认执行删除全部信息操作(y/n)或退出功能(N):>>>').strip()
if chose == 'y':
user_info = []
elif chose == 'n':
print('感谢你的使用')
else:
print('感谢你的使用')
break
elif function_ID == 4:
# 打印欢迎语,展示功能
print(f'{function_4}')
function_4ID = input('当前是退出功能,请选择功能ID:>>>').strip()
# 判断输入的指令ID是否正确,属于数字类型(排除其他错误指令)
# 不正确则重新数据
if not function_4ID.isdigit() or function_4ID not in ['1', '2']:
print(f'请确认你的指令ID是否正确:>>{function_4ID}')
continue
else:
# 正确则执行指令代码功能
# 输入功能指令
function_4ID = int(function_4ID)
# 退出到系统选择功能
# 循环一:选择内部功能代码
# 功能代码为 1 执行 删除特定用户功能
if function_4ID == 1:
print('返回功能界面,感谢使用!')
continue
# 完全退出系统
elif function_4ID == 2:
print('已退出系统,感谢使用!')
all_right = False
【五】小结
【1】功能实现的弊端
(1)关于用户数据库存储
- 因为数据目前知识存在列表里,每次运行数据都会被重置,无法持久化存储数据
(2)关于添加用户信息
- 对于各种数据的格式没有明确的定类型,所以就导致了文字也可以作为年龄输入存储
(3)关于修改信息
- 目前还无法做到,将数据库信息查询到并将数据做更改
(4)关于各种数据类型的定义
- 部分数据类型没有明确定义
(5)功能实现有所弊端
- 目前的功能知识基础,仍有很大的扩展空间和BUG
【2】总结
(1)用到的知识
- if 循环的不断实现
- while 循环的不断实现
- 关于 循环嵌套的 不断实现
- 数据类型的转换和校验
(2)深度
- 知识用到了基础的知识
【3】拓展和展望
(1)数据库升级
- 本案例用到的是列表作为数据库,存在诸多弊端
- 下次将数据库升级为文档
- 将文档的读取和写入操作进行应用
(2)版本优化
- 可能会修改和完善部分代码(但是我懒,肯定不会,哈哈)