python 员工管理系统 (基础版)
各位小伙伴们大家好, 最近自学 python 已经差不多把基础学完了, 现在运用这些基础知识写了一个简单版本的员工管理系统
因为在大学里我是学过 java 的, 所以, 当有了一定的基础和熏陶外, 真心觉得 python 比 java 要简单的多, 而且学起来特快, 业务
逻辑没那么复杂, 理解起来更好理解, 接下里就慢慢给大家讲讲思路:
(尤其是初学者, 不要只顾着敲, 要多想想业务逻辑, 思路才是最重要的)
先放几张图, 给大家看看运行效果, 再慢慢跟大家层层剖析
看到这些图片, 是不是觉得挺简单的, 确实, 只要掌握了基础, 自然这些是有把握的敲出来的
此次这个员工管理系统大致的功能就是 增删改查, 就是我们俗称的 curd, 只是这些都是假数据, 并没有连接数据库 MySQL 的那种
第一部分:
1.1 菜单栏的展示
这个菜单栏 99% 的同学都可以敲得出来, 就好比 1+1=2 那样简单, 但是这里有个小注意的地方, 为了代码的美观性和避免冗长, 一般
都是封装在一个函数里, 把它独立成块, 你可以就放在同一个文件里, 也可以另外新建一个 python 文件, 导入并调用即可
=
我就是建立了两个文件夹, 把他单独写在另外一个文件夹中, 但是一定要记得导入 import
1.2 如何循环并且选择操作
第一行的 while True 时起着循环的作用whileTrue:
employee_tools.show_menu()
action_str=input("请输入您的操作:")
ifaction_str=="1":
# 1. 添加员工信息
employee_tools.add_info()
elifaction_str=="2":
# 2. 修改员工信息
employee_tools.update_info()
elifaction_str=="3":
# 3. 删除员工信息
employee_tools.delete_info()
elifaction_str=="4":
# 4. 显示所有员工信息
employee_tools.show_all_info()
elifaction_str=="5":
# 5. 退出系统
print("欢迎您再次使用员工管理系统!!!")
break
else:
# 输入其他任意数字
print("您输入的有误, 请重新输入:")
第二部分: 增删查改的功能实现(尽量别看代码, 多看思路, 逻辑思维才是最重要的!!!)
1. 添加员工 实现的步骤:
1. 输入员工的工号, 姓名, 性别, 工资等等
1.1 判断员工编号是否存在, 如果存在则拒绝添加, 提示 "编号已存在, 不能重复添加"
1.2 如果不重复, 则继续接下来的操作
2. 把这些信息保存在一个字典里(键值对)
2.1 员工工号作为键, 剩下的属性 (姓名, 性别, 工资) 作为值,
这才是最重要的, 因为 id 是唯一的, 后面的修改, 删除都是以 id 为突破口, 这点一定要重视
2.2 类似: '1001' {'name':xxx, 'sex':xxx, 'salary':xxx}
3. 提示添加成功defadd_info():
"""添加员工信息"""
print("添加员工 ===>")
employ_id=input("请输入要添加员工的工号:")
# 先找到所有的字典的键, 再将这些键转化为列表的形式
all_id=list(employee_dict.keys())
ifemploy_idinall_id:
print("员工工号已存在, 不能重复添加!!!")
return
employ_name=input("请输入要添加员工的姓名:")
employ_sex=input("请输入要添加员工的性别:")
employ_salary=input("请输入要添加员工的工资:")
# 把这些信息保存在一个字典里
info_dict={"name":employ_name,"sex":employ_sex,"salary":employ_salary}
# 再放在大字典里, 怎么放, 根据 id 号相对应
employee_dict[employ_id]=info_dict
print("工号为 %s 的员工信息添加成功!!!"%employ_id)
# 这里只是起到打印观察的作用, 可注释掉下面这一行
# 说明仅仅还是放在字典里面, 毕竟输出是字典形式, 怎么显示那是第四个功能该做的事
# print(employee_dict) # {'1001': {'name': '张三', 'sex': '男', 'salary': '5000'}}
2. 修改员工 实现的步骤:
1. 拿到要修改员工的工号
1.1 如果工号不存在, 则提示错误信息, 终止函数执行, 返回
1.2 如果存在, 则修改对应的信息
1.2.1 显示原来的信息再修改
2. 因为并不是所有的信息都需要修改, 万一不需要修改的怎么办? 如何简化使用操作?
2.1 判断修改时输入的是不是惟恐, 为空就保持不变, 不为空则说明修改了defupdate_info():
"""修改员工信息"""
print("修改员工 ===>")
employ_id=input("请输入你要修改的员工的工号")
all_id=list(employee_dict.keys())
ifemploy_idnotinall_id:
print("该员工工号不存在, 不能进行修改!!!")
return
new_name=input("姓名是:%s 修改后的姓名:"%employee_dict[employ_id]['name'])
new_sex=input("性别是:%s 修改后的性别:"%employee_dict[employ_id]['sex'])
new_salary=input("工资是:%s 修改后的工资:"%employee_dict[employ_id]['salary'])
# 因为并不是所有的信息都需要修改, 万一不需要修改的怎么办? 如何简化使用操作?
ifnew_name!="":
employee_dict[employ_id]['name']=new_name
ifnew_sex!="":
employee_dict[employ_id]['sex']=new_sex
ifnew_salary!="":
employee_dict[employ_id]['salary']=new_salary
print("工号为 %s 的员工信息修改成功!!!"%employ_id)
3. 删除员工# 实现步骤: 1. 输入要删除员工的工号
# 2. 判断工号是否存在, 不存在就给出提示信息, 终止函数执行
# 3. 如果存在, 则直接删除
defdelete_info():
"""删除员工信息"""
print("删除员工 ===>")
employ_id=input("请输入你要删除的员工的工号")
all_id=list(employee_dict.keys())
ifemploy_idnotinall_id:
print("该员工工号不存在, 不能进行删除!!!")
return
else:
# 直接删除这个字典
delemployee_dict[employ_id]
print("工号为 %s 的员工信息删除成功!!!"%employ_id)
4. 显示所有员工信息# 实现步骤: 1. 判断员工是否存在, 如果不存在则提示返回
# 1.1 怎么判断? 当列表长度为 0 时, 则说明不存在
# 2. 如果存在, 就打印表头
# 3. 打印分割线
# 4. 遍历员工信息, 依次输出字典信息
defshow_all_info():
"""显示员工信息"""
print("显示所有员工信息 ===>")
# 判断员工是否存在
iflen(list(employee_dict.keys()))==0:
print("当前没有任何的员工信息, 请先选择操作 1, 添加员工!!!")
# return 下方的代码不会被执行
return
# 打印表头
print("-"*40)
forpeoplein["工号","姓名","性别","工资"]:
print(people,end="\t\t")
# 打印分割线
# 增加换行
print("")
print("-"*40)
# 遍历员工信息, 依次输出字典信息
# 这个 items 方法是把字典转换成列表的方法, 须特别注意
forjoberinemployee_dict.items():
print("%s\t\t%s\t\t%s\t\t\t%s"%(jober[0],
jober[1]['name'],
jober[1]['sex'],
jober[1]['salary']))
print("-"*40)
以上就是增删改查四个部分的功能实现, 思路都写的非常详细, 希望初学者们能重视思路的重要性
反思几个问题:
1为什么哪里都有这段?employ_id=input("请输入你要 (删除, 修改, 添加) 的员工的工号")
all_id=list(employee_dict.keys())
ifemploy_idnotinall_id:
print("该员工工号不存在, 不能进行(修改, 删除, 添加)!!!")
return
前面我就提到过, id 此时是唯一能提供识别的
还有, 为什么哪段都写呢, 因为每一个函数都是独立的, 定义在函数内部的, 你在另外一个函数不能直接拿来用, 涉及到局部变量和全局变量的知识
2在专门定义函数的最上面, 不要忘记这行代码, 这是大字典, 在写第一个功能前, 就必须用到, 放在外面第一行, 其他功能的实现也会用到
提示: 在这个 tools 文件中, 第一行需要加一行代码:# 存储所有的员工信息, 空数据时
employee_dict={}
3有的同学会问, 我可以在一个 python 文件中, 实现这些所有功能吗?
当然可以, 因为咱们这只有四个主要功能, 数量基数小, 放在一个文件中写是绝对可以的, 那作为技术一般的小编我为什么又要分开写呢?
因为, 企业的开发肯定要实现的功能多, 放在不同的文件中利于项目后期的版本修改和维护, 添加或者修改某个功能都会方便很多, 这么说吧,
在后期维护中, 代码能不动的尽量别动, 如果你把所有的东西都放在一个文件中, 那改起来如果不小心, 牵一发而动全身, 后悔莫及
4有没有什么值得推荐的自学 python 的网站呢?
接下来, 小编我就把自己觉得质量还可以的教学视频链接发在这里: 自己用心慢慢看哦(其实 B 站资源很丰富的)
https://www.bilibili.com/video/av14184325/?spm_id_from=333.788.videocard.1
如果你觉得看视频太长, 太耗费时间, 可以去菜鸟教程上面看文档,(有的地方有点绕, 建议最好还是看视频)
https://www.runoob.com/python3/python3-tutorial.html
最后的最后, 我把这个简易版的员工管理系统代码全搬出来, 小伙伴们有需要的可以直接复制, 你只需要建立两个文件就行
1.employee_main.py 文件importemployee_tools
whileTrue:
employee_tools.show_menu()
action_str=input("请输入您的操作:")
ifaction_str=="1":
# 1. 添加员工信息
employee_tools.add_info()
elifaction_str=="2":
# 2. 修改员工信息
employee_tools.update_info()
elifaction_str=="3":
# 3. 删除员工信息
employee_tools.delete_info()
elifaction_str=="4":
# 4. 显示所有员工信息
employee_tools.show_all_info()
elifaction_str=="5":
# 5. 退出系统
print("欢迎您再次使用员工管理系统!!!")
break
else:
# 输入其他任意数字
print("您输入的有误, 请重新输入:")
2.employee_tools.py 文件# 存储所有的员工信息, 空数据时
# employee_dict = {}
# 这是原本就有固定数据时的字典
employee_dict={'1001':{'name':'张三','sex':'男','salary':'5000'},
'1002':{'name':'李四','sex':'男','salary':'7000'},
'1003':{'name':'小红','sex':'女','salary':'9000'},
}
defshow_menu():
"""进入菜单页面"""
print("*"*11+"员工管理系统 V_1.0"+"*"*11)
# print("员工管理系统 V1.0")
print("1, 添加员工信息")
print("2, 修改员工信息")
print("3, 删除员工信息")
print("4, 显示所有员工信息")
print("5, 退出系统")
print("*"*40)
defadd_info():
"""添加员工信息"""
# 实现步骤: 1. 输入员工的工号, 姓名, 性别, 工资等等
# 1.1 判断员工编号是否存在, 如果存在则拒绝添加, 提示 "编号已存在, 不能重复添加"
# 1.2 如果不重复, 则继续接下来的操作
# 2. 把这些信息保存在一个字典里
# 2.1 员工工号作为键, 剩下的属性 (姓名, 性别, 工资) 作为值
# 2.2 类似: '1001' {'name':xxx, 'sex':xxx, 'salary':xxx}
# 3. 提示添加成功
print("添加员工 ===>")
employ_id=input("请输入要添加员工的工号:")
# 先找到所有的字典的键, 再将这些键转化为列表的形式
all_id=list(employee_dict.keys())
ifemploy_idinall_id:
print("员工工号已存在, 不能重复添加!!!")
return
employ_name=input("请输入要添加员工的姓名:")
employ_sex=input("请输入要添加员工的性别:")
employ_salary=input("请输入要添加员工的工资:")
# 把这些信息保存在一个字典里
info_dict={"name":employ_name,"sex":employ_sex,"salary":employ_salary}
# 再放在大字典里, 怎么放, 根据 id 号相对应
employee_dict[employ_id]=info_dict
print("工号为 %s 的员工信息添加成功!!!"%employ_id)
# 这里只是起到打印观察的作用, 可注释掉下面这一行
# 说明仅仅还是放在字典里面, 毕竟输出是字典形式, 怎么显示那是第四个功能该做的事
# print(employee_dict) # {'1001': {'name': '张三', 'sex': '男', 'salary': '5000'}}
defupdate_info():
"""修改员工信息"""
print("修改员工 ===>")
# 实现步骤 1. 拿到要修改员工的工号
# 1.1 如果工号不存在, 则提示错误信息, 终止函数执行, 返回
# 1.2 如果存在, 则修改对应的信息
# 1.2.1 显示原来的信息再修改
# 2. 因为并不是所有的信息都需要修改, 万一不需要修改的怎么办? 如何简化使用操作?
# 2.1 判断修改时输入的是不是惟恐, 为空就保持不变, 不为空则说明修改了
employ_id=input("请输入你要修改的员工的工号")
all_id=list(employee_dict.keys())
ifemploy_idnotinall_id:
print("该员工工号不存在, 不能进行修改!!!")
return
new_name=input("姓名是:%s 修改后的姓名:"%employee_dict[employ_id]['name'])
new_sex=input("性别是:%s 修改后的性别:"%employee_dict[employ_id]['sex'])
new_salary=input("工资是:%s 修改后的工资:"%employee_dict[employ_id]['salary'])
# 因为并不是所有的信息都需要修改, 万一不需要修改的怎么办? 如何简化使用操作?
ifnew_name!="":
employee_dict[employ_id]['name']=new_name
ifnew_sex!="":
employee_dict[employ_id]['sex']=new_sex
ifnew_salary!="":
employee_dict[employ_id]['salary']=new_salary
print("工号为 %s 的员工信息修改成功!!!"%employ_id)
defdelete_info():
"""删除员工信息"""
print("删除员工 ===>")
# 实现步骤: 1. 输入要删除员工的工号
# 2. 判断工号是否存在, 不存在就给出提示信息, 终止函数执行
# 3. 如果存在, 则直接删除
employ_id=input("请输入你要删除的员工的工号")
all_id=list(employee_dict.keys())
ifemploy_idnotinall_id:
print("该员工工号不存在, 不能进行删除!!!")
return
else:
# 直接删除这个字典
delemployee_dict[employ_id]
print("工号为 %s 的员工信息删除成功!!!"%employ_id)
defshow_all_info():
"""显示员工信息"""
print("显示所有员工信息 ===>")
# 实现步骤: 1. 判断员工是否存在, 如果不存在则提示返回
# 1.1 怎么判断? 当列表长度为 0 时, 则说明不存在
# 2. 如果存在, 就打印表头
# 3. 打印分割线
# 4. 遍历员工信息, 依次输出字典信息
# 判断员工是否存在
iflen(list(employee_dict.keys()))==0:
print("当前没有任何的员工信息, 请先选择操作 1, 添加员工!!!")
# return 下方的代码不会被执行
return
# 打印表头
print("-"*40)
forpeoplein["工号","姓名","性别","工资"]:
print(people,end="\t\t")
# 打印分割线
# 增加换行
print("")
print("-"*40)
# 遍历员工信息, 依次输出字典信息
# 这个 items 方法是把字典转换成列表的方法, 须特别注意
forjoberinemployee_dict.items():
print("%s\t\t%s\t\t%s\t\t\t%s"%(jober[0],
jober[1]['name'],
jober[1]['sex'],
jober[1]['salary']))
print("-"*40)
欢迎各位大佬评论和交流, 咱们一起学习, 一起进步
来源: https://www.cnblogs.com/xj-excellent/p/12560611.html