我们将使用 Python 语言和 面向对象编程 的思想来实现,因为这种方式结构清晰,易于扩展。
Employee 类来表示每一个员工对象,这个类将包含员工的各项属性。Employee 对象,在实际应用中,数据通常会存储在数据库(如 MySQL, PostgreSQL)或文件(如 CSV, JSON)中,但为了简化,我们先用内存列表。EmployeeManagementSystem 类来封装所有操作,如添加员工、查询员工、显示所有员工等。下面是完整的 Python 代码实现。

import datetime
# 1. 数据模型:员工类
class Employee:
"""员工类,用于存储单个员工的信息"""
def __init__(self, employee_id, name, department, position, hire_date, contact):
self.employee_id = employee_id # 工号
self.name = name # 姓名
self.department = department # 部门
self.position = position # 职位
self.hire_date = hire_date # 入职日期
self.contact = contact # 联系方式
def __str__(self):
"""返回员工信息的格式化字符串,方便打印"""
return (f"工号: {self.employee_id}\n"
f"姓名: {self.name}\n"
f"部门: {self.department}\n"
f"职位: {self.position}\n"
f"入职日期: {self.hire_date}\n"
f"联系方式: {self.contact}\n"
"-" * 20)
# 2. 核心功能模块:员工管理系统类
class EmployeeManagementSystem:
"""员工信息管理系统,负责管理所有员工数据"""
def __init__(self):
# 使用列表来存储所有员工对象
self.employees = []
# 初始化一些示例数据
self._init_sample_data()
def _init_sample_data(self):
"""初始化一些示例员工数据,方便测试"""
self.add_employee("E001", "张三", "技术部", "软件工程师", "2025-01-15", "13800138001")
self.add_employee("E002", "李四", "市场部", "市场专员", "2025-08-20", "13800138002")
self.add_employee("E003", "王五", "技术部", "项目经理", "2025-05-10", "13800138003")
self.add_employee("E004", "赵六", "人力资源部", "招聘专员", "2025-03-01", "13800138004")
def add_employee(self, employee_id, name, department, position, hire_date, contact):
"""添加新员工"""
# 检查工号是否已存在
for emp in self.employees:
if emp.employee_id == employee_id:
print(f"错误:工号 {employee_id} 已存在,无法添加!")
return False
# 创建新员工对象并添加到列表
new_employee = Employee(employee_id, name, department, position, hire_date, contact)
self.employees.append(new_employee)
print(f"成功添加员工:{name}")
return True
def find_employee_by_id(self, employee_id):
"""根据工号精确查询员工"""
for emp in self.employees:
if emp.employee_id == employee_id:
return emp
return None
def find_employees_by_name(self, keyword):
"""根据姓名模糊查询员工"""
found_employees = []
for emp in self.employees:
if keyword.lower() in emp.name.lower():
found_employees.append(emp)
return found_employees
def find_employees_by_department(self, department):
"""根据部门查询员工"""
found_employees = []
for emp in self.employees:
if emp.department == department:
found_employees.append(emp)
return found_employees
def display_all_employees(self):
"""显示所有员工信息"""
if not self.employees:
print("当前系统中没有员工信息。")
return
print("\n--- 所有员工信息 ---")
for emp in self.employees:
print(emp)
print("--------------------\n")
def display_employee(self, employee):
"""显示单个员工信息"""
if employee:
print("\n--- 查询结果 ---")
print(employee)
print("---------------\n")
else:
print("\n未找到该员工信息,\n")
# 3. 用户界面:主程序
def main():
"""主程序入口,提供用户交互界面"""
# 创建一个管理系统实例
system = EmployeeManagementSystem()
while True:
print("\n===== 企业员工信息查询系统 =====")
print("1. 查询所有员工")
print("2. 按工号查询")
print("3. 按姓名查询")
print("4. 按部门查询")
print("5. 添加新员工 (管理员功能)")
print("0. 退出系统")
print("===============================")
choice = input("请输入您的选择 (0-5): ")
if choice == '1':
system.display_all_employees()
elif choice == '2':
employee_id = input("请输入要查询的工号: ")
employee = system.find_employee_by_id(employee_id)
system.display_employee(employee)
elif choice == '3':
keyword = input("请输入要查询的姓名关键词: ")
found_employees = system.find_employees_by_name(keyword)
if found_employees:
print(f"\n--- 找到 {len(found_employees)} 名匹配的员工 ---")
for emp in found_employees:
print(emp)
print("----------------------------------------\n")
else:
print("\n未找到匹配的员工,\n")
elif choice == '4':
department = input("请输入要查询的部门: ")
found_employees = system.find_employees_by_department(department)
if found_employees:
print(f"\n--- 找到 {len(found_employees)} 名 {department} 员工 ---")
for emp in found_employees:
print(emp)
print("----------------------------------------\n")
else:
print(f"\n未找到 {department} 部门的员工,\n")
elif choice == '5':
print("--- 添加新员工 ---")
emp_id = input("请输入工号: ")
name = input("请输入姓名: ")
dept = input("请输入部门: ")
pos = input("请输入职位: ")
hire_date = input("请输入入职日期 (YYYY-MM-DD): ")
contact = input("请输入联系方式: ")
system.add_employee(emp_id, name, dept, pos, hire_date, contact)
elif choice == '0':
print("感谢使用,再见!")
break
else:
print("无效的输入,请重新选择 (0-5)。")
# 程序启动
if __name__ == "__main__":
main()
Employee 类:
__init__ 方法是构造函数,在创建 Employee 对象时被调用,用于初始化员工的各项属性。__str__ 方法是一个“魔术方法”,当你使用 print() 打印一个 Employee 对象时,这个方法会被自动调用,返回一个格式化好的字符串,使得输出更美观。EmployeeManagementSystem 类:
__init__:创建系统实例时,初始化一个空的 employees 列表,并调用 _init_sample_data() 方法添加几条初始数据,方便我们测试。add_employee:负责添加新员工,它会先检查工号是否重复,防止数据冲突。find_employee_by_id:遍历员工列表,找到工号匹配的员工并返回,如果没找到则返回 None。find_employees_by_name:实现了模糊查询,它不要求姓名完全匹配,只要包含用户输入的关键词即可(不区分大小写)。find_employees_by_department:根据部门名称精确查找所有属于该部门的员工。display_all_employees 和 display_employee:这两个方法专门用于格式化输出查询结果,将业务逻辑和展示逻辑分开。main() 函数:
EmployeeManagementSystem 的实例。while True 循环构成了一个永不退出的主菜单,直到用户选择退出。input() 函数获取用户的键盘输入。if/elif/else 结构根据用户的输入选择调用 system 对象的不同方法。如何运行:

employee_system.py。python employee_system.py 运行程序。如何扩展这个系统:
这个基础版本已经具备了核心功能,但你可以从以下几个方面进行扩展,使其更接近真实的企业应用:
数据持久化:
employees.json 文件读取数据到 self.employees 列表,在程序退出或数据发生改变时,将整个列表写回文件。csv 模块来读写表格数据。使用数据库:

sqlite3, pymysql)。Employee 类的属性将对应数据库表中的列。增加更多功能:
main() 函数中增加登录验证步骤。改进用户界面:
Tkinter, PyQt 或 Kivy 等库创建带有窗口、按钮、文本框的图形界面,而不是命令行。Flask 或 Django 框架,将系统部署成一个网站,用户可以通过浏览器访问。这个企业员工信息查询系统是一个非常好的编程练习项目,它涵盖了面向对象、数据结构、文件I/O(如果扩展)和用户交互等多个核心概念,希望这个详细的实现能帮助你理解!
#企业员工信息查询系统数据安全防护#员工信息查询系统数据安全保障措施#企业员工信息查询系统隐私数据安全保护