员工管理系统

在本篇文章中,我将介绍如何使用Python构建一个基于命令行的简单员工管理系统。它是用 Python 编写的命令行应用,提供了基本的员工信息管理功能,如添加、删除、修改和查询员工信息。该项目演示了如何使用面向对象编程和 JSON 文件来持久化数据。

项目结构

该员工管理系统主要包含两个类:

  1. Workers:负责创建员工对象。
  2. 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进行数据管理和用户交互提供了一个很好的起点。

希望这篇文章能帮助你开始构建自己的员工管理系统!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值