链表综合算法设计,已知简单的人事信息系统中职工记录包含职工编号(no)、职工姓名(name)、部门名称(depname)、职称(title)和工资数(salary)等信息,设计并完成一个简单的人事信息管理系统,要求完成但不限于以下功能: (1)增加一个职工信息; (2)显示所有职工信息; (3)按部门名称分类显示该部门所有职工信息; (4)按部门显示各部门职工工资总额; (5)删除职工信息(可以删除符合条件的一批记录) (6)按职称调整工资; (7)可自行增加功能(例如按职工编号排序等),使用PYTHON
时间: 2023-06-16 10:02:21 浏览: 44
下面是一个基本的链表实现人事信息管理系统的代码,包括了题目所要求的各种功能:
```python
class Employee:
def __init__(self, no, name, depname, title, salary):
self.no = no
self.name = name
self.depname = depname
self.title = title
self.salary = salary
self.next = None
class EmployeeList:
def __init__(self):
self.head = None
def add_employee(self, employee):
if not self.head:
self.head = employee
else:
current = self.head
while current.next:
current = current.next
current.next = employee
def display_all(self):
current = self.head
while current:
print(f"{current.no} {current.name} {current.depname} {current.title} {current.salary}")
current = current.next
def display_by_depname(self, depname):
current = self.head
while current:
if current.depname == depname:
print(f"{current.no} {current.name} {current.depname} {current.title} {current.salary}")
current = current.next
def display_dep_salary(self):
dep_salary = {}
current = self.head
while current:
if current.depname not in dep_salary:
dep_salary[current.depname] = current.salary
else:
dep_salary[current.depname] += current.salary
current = current.next
for depname, salary in dep_salary.items():
print(f"{depname}: {salary}")
def delete_employee(self, condition):
current = self.head
previous = None
while current:
if eval(condition):
if not previous:
self.head = current.next
else:
previous.next = current.next
current = current.next
else:
previous = current
current = current.next
def adjust_salary_by_title(self, title, salary_adjustment):
current = self.head
while current:
if current.title == title:
current.salary += salary_adjustment
current = current.next
# 示例代码
if __name__ == "__main__":
employee_list = EmployeeList()
# 增加职工信息
employee_list.add_employee(Employee(1, "张三", "销售部", "销售员", 5000))
employee_list.add_employee(Employee(2, "李四", "技术部", "程序员", 8000))
employee_list.add_employee(Employee(3, "王五", "财务部", "会计", 6000))
# 显示所有职工信息
employee_list.display_all()
# 按部门名称分类显示该部门所有职工信息
employee_list.display_by_depname("销售部")
# 按部门显示各部门职工工资总额
employee_list.display_dep_salary()
# 删除职工信息(可以删除符合条件的一批记录)
employee_list.delete_employee("employee.no >= 2")
# 按职称调整工资
employee_list.adjust_salary_by_title("程序员", 1000)
# 显示所有职工信息
employee_list.display_all()
```
这个代码中,我们定义了两个类,`Employee` 和 `EmployeeList`。`Employee` 类表示一个职工记录,`EmployeeList` 类表示职工记录的链表。在 `EmployeeList` 类中,我们定义了各种函数来实现系统的各种功能。其中,`add_employee` 函数用于增加职工信息,`display_all` 函数用于显示所有职工信息,`display_by_depname` 函数用于按部门名称分类显示该部门所有职工信息,`display_dep_salary` 函数用于按部门显示各部门职工工资总额,`delete_employee` 函数用于删除职工信息,`adjust_salary_by_title` 函数用于按职称调整工资。
在示例代码中,我们首先创建了一个 `EmployeeList` 对象,并调用了各种函数来测试系统的各种功能。你可以根据自己的需求修改这个代码,添加更多的功能。