在本篇文章中,我将介绍如何使用Python构建一个基于命令行的简单员工管理系统。它是用 Python 编写的命令行应用,提供了基本的员工信息管理功能,如添加、删除、修改和查询员工信息。该项目演示了如何使用面向对象编程和 JSON 文件来持久化数据。
项目结构
该员工管理系统主要包含两个类:
- Workers:负责创建员工对象。
- WorkersManager:负责管理员工列表及相关操作。
Workers 类
Workers
类是员工信息的封装,包括员工的 ID、姓名、年龄和电话号码。它还实现了 __str__
方法,以便在打印时能够友好地显示员工信息。
class Workers:
def __init__(self,id,name,age,tel):
self.id = id
self.name = name
self.age = age
self.tel = tel
def __str__(self):
return f"员工ID:{self.id} 姓名:{self.name} 年龄:{self.age} 电话:{self.tel}"
WorkersManager 类
WorkersManager
类负责管理所有员工的操作,包括:
- 添加员工:从用户输入获取员工信息并保存。
- 删除员工:根据员工 ID 删除特定员工。
- 修改员工信息:通过员工 ID 查找员工并允许修改其信息。
- 查询员工:根据员工 ID 查询并显示员工信息。
- 显示所有员工信息:列出所有员工的详细信息。
- 数据保存与加载:将员工列表保存在 JSON 文件中,支持从文件中读取员工数据。
import sys
import json
from .workers import Workers
class WorkersManager:
def __init__(self,filename):
self.filename = filename
self.workers_list = self.load_workers_from_file()
def save_workers_to_file(self):
"""将员工列表保存到 JSON 文件中"""
with open(self.filename,'w',encoding = 'utf-8') as f:
json.dump([vars(worker) for worker in self.workers_list],f,ensure_ascii=False,indent=4) #字典列表
print("员工信息已保存成功!")
def load_workers_from_file(self):
"""从 JSON 文件中加载员工列表"""
try:
with open(self.filename,'r',encoding = 'utf-8') as f:
data = json.load(f)
#**worker 解包字典作为关键字参数传递给 Workers 类的构造函数,返回创建好的 Workers 对象列表
return [Workers(**worker) for worker in data]
except FileNotFoundError:
return []
def add_worker(self):
"""添加员工信息"""
id = input("请输入员工ID(或者回车退出添加操作):")
if id == '':
return
if any(worker.id == id for worker in self.workers_list):
print("员工ID已存在,添加失败")
return
name = input("请输入员工姓名:")
age = int(input("请输入年龄:"))
tel = int(input("请输入电话号码:"))
new_worker = Workers(id,name,age,tel)
self.workers_list.append(new_worker)
print(f"员工添加成功:{self.workers_list[-1]}")
self.save_workers_to_file()
def delete_worker(self):
"""删除员工信息"""
id = input("请输入要删除的员工ID(或回车退出删除操作):")
if id == '':
return
for worker in self.workers_list:
if worker.id == id:
self.workers_list.remove(worker)
print(f"员工{id}删除成功")
self.save_workers_to_file()
return
print("未找到员工ID,删除失败")
def update_worker(self):
"""修改员工信息"""
id = input("请输入要修改的员工ID(或回车退出修改操作):")
if id == '':
return
for worker in self.workers_list:
if worker.id == id:
name = input("请输入修改之后的名字(或输入空格不修改):")
age = input("请输入修改之后的年龄(或输入空格不修改):")
tel = input("请输入修改之后的电话号码(或输入空格不修改):")
if name.strip() == '':
pass
else:
worker.name = name
print(f"员工ID {id} 的姓名已修改为 {name}")
if age.strip() == '':
pass
else:
worker.age = int(age)
print(f"员工ID {id} 的年龄已修改为 {worker.age}")
if tel.strip() == '':
pass
else:
worker.tel = int(tel)
print(f"员工ID {id} 的电话号码已修改为 {worker.tel}!")
self.save_workers_to_file()
return
print("未找到员工ID,更新失败")
def query_workers(self):
"""查询员工信息"""
id = input("请输入要查询的员工ID(或回车退出查询操作):")
if id == '':
return
for worker in self.workers_list:
if worker.id == id:
print(worker)
return
print("员工ID不存在!")
def show_workers(self):
"""显示所有员工信息"""
if not self.workers_list:
print("当前没有员工信息")
return
for worker in self.workers_list:
print(worker)
def exit(self):
"""退出系统"""
print("感谢使用员工管理系统!")
sys.exit(0)
主程序逻辑
主函数 mian()
负责展示菜单,并接收用户的输入以执行相应的操作。用户可以选择不同的功能,比如添加、删除、修改员工信息等。
from package1.workersmanager import WorkersManager
def mian():
print("\n----------欢迎使用员工管理系统----------")
manager = WorkersManager("workers.json")
while True:
print("\n【1】添加员工信息")
print("【2】删除员工信息")
print("【3】修改员工信息")
print("【4】查询员工信息")
print("【5】显示所有员工信息")
print("【6】保存员工信息")
print("【7】退出系统")
choice = input("请输入您要操作的功能编号:")
if choice == "1":
manager.add_worker()
elif choice == "2":
manager.delete_worker()
elif choice == "3":
manager.update_worker()
elif choice == "4":
manager.query_workers()
elif choice == "5":
manager.show_workers()
elif choice == "6":
manager.save_workers_to_file()
elif choice == "7":
manager.exit()
else:
print("无效的选择,请重新输入。")
if __name__ == '__main__':
mian()
总结
通过以上代码,我们成功地构建了一个简单的员工管理系统。虽然这个系统是基本的并且仅限于命令行界面,但它为理解如何使用Python进行数据管理和用户交互提供了一个很好的起点。
希望这篇文章能帮助你开始构建自己的员工管理系统!