简单的职工管理系统
◆ 问题描述
对单位的职工进行管理,包括插入、删除、查找、排序等功能。
◆ 要求
职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
(2)删除一名职工:从职工管理文件中删除一名职工对象。
(3)查询:从职工管理文件中查询符合某些条件的职工。
(4)修改:检索某个职工对象,对其某些属性进行修改。
(5)排序:按某种需要对职工对象文件进行排序。
◆ 实现提示
职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
(2)对职工对象中的"姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改等操作。
import json
class Employee:
def __init__(self, name, gender, birth_date, work_date, education, position, address, phone):
self.name = name
self.gender = gender
self.birth_date = birth_date
self.work_date = work_date
self.education = education
self.position = position
self.address = address
self.phone = phone
def __str__(self):
return f"姓名:{self.name}\n性别:{self.gender}\n出生年月:{self.birth_date}\n工作年月:{self.work_date}\n学历:{self.education}\n职务:{self.position}\n住址:{self.address}\n电话:{self.phone}"
class EmployeeManagementSystem:
def __init__(self):
self.employees = []
def add_employee(self, employee):
self.employees.append(employee)
def remove_employee(self, name):
for employee in self.employees:
if employee.name == name:
self.employees.remove(employee)
return True
return False
def search_employee(self, name):
for employee in self.employees:
if employee.name == name:
return employee
return None
def modify_employee(self, name, attribute, new_value):
employee = self.search_employee(name)
if employee:
setattr(employee, attribute, new_value)
return True
return False
def sort_employees(self):
self.employees.sort(key=lambda x: x.name)
def display_employees(self):
for employee in self.employees:
print(employee)
print()
def save_employees(self, filename):
data = []
for employee in self.employees:
data.append({
"name": employee.name,
"gender": employee.gender,
"birth_date": employee.birth_date,
"work_date": employee.work_date,
"education": employee.education,
"position": employee.position,
"address": employee.address,
"phone": employee.phone
})
with open(filename, "w") as file:
json.dump(data, file)
def load_employees(self, filename):
try:
with open(filename, "r") as file:
data = json.load(file)
for item in data:
employee = Employee(
item["name"],
item["gender"],
item["birth_date"],
item["work_date"],
item["education"],
item["position"],
item["address"],
item["phone"]
)
self.add_employee(employee)
except FileNotFoundError:
print("未找到保存的职工信息文件!")
def main():
emp_sys = EmployeeManagementSystem()
# 加载之前保存的职工信息
emp_sys.load_employees("employees.json")
while True:
print("********** 职工管理系统 **********")
print("1. 新增职工")
print("2. 删除职工")
print("3. 查询职工")
print("4. 修改职工")
print("5. 排序职工")
print("6. 显示职工")
print("0. 退出系统")
choice = input("请输入您的选择:")
if choice == "1":
name = input("请输入姓名:")
gender = input("请输入性别:")
birth_date = input("请输入出生年月:")
work_date = input("请输入工作年月:")
education = input("请输入学历:")
position = input("请输入职务:")
address = input("请输入住址:")
phone = input("请输入电话:")
employee = Employee(name, gender, birth_date, work_date, education, position, address, phone)
emp_sys.add_employee(employee)
print("职工添加成功!\n")
elif choice == "2":
name = input("请输入要删除的职工姓名:")
if emp_sys.remove_employee(name):
print("职工删除成功!\n")
else:
print("未找到该职工!\n")
elif choice == "3":
name = input("请输入要查询的职工姓名:")
employee = emp_sys.search_employee(name)
if employee:
print(employee)
print()
else:
print("未找到该职工!\n")
elif choice == "4":
name = input("请输入要修改的职工姓名:")
attribute = input("请输入要修改的属性:")
new_value = input("请输入新的属性值:")
if emp_sys.modify_employee(name, attribute, new_value):
print("职工修改成功!\n")
else:
print("未找到该职工!\n")
elif choice == "5":
emp_sys.sort_employees()
print("职工排序成功!\n")
elif choice == "6":
emp_sys.display_employees()
elif choice == "0":
# 保存职工信息
emp_sys.save_employees("employees.json")
break
else:
print("请输入有效的选项!\n")
if __name__ == "__main__":
main()
楼上几个都是ai机器写的,建议你还是别用,老师也不是傻瓜。
给你一个人工写的代码:
info_list = [] #用来存放所有职员数据,每一个职员的数据都是一个列表
while True:
# 1、界面
print("-------职员信息管理系统-------")
print("--1、添加职员信息")
print("--2、删除职员信息")
print("--3、查看所有职员信息")
print("--4、退出管理系统")
print("-"*30)
# 2、输入、接收用户的输入的数字,执行对应操作
command = int(input("请输入1到4之间的数字,进行相应操作:"))
# 3、通过判断用户输入的数字来执行对应的操作
if command == 1:
#添加员工信息
#让用户输入姓名、员工ID、身份证号
em_name = input("请输入员工姓名:")
#获取员工id,长度为5位,并且只能为纯数字
while True:
em_work_id = input("请输入员工ID:")
if len(em_work_id) == 5 and em_work_id.isdigit():
break
else:
print("【ERROR】:员工ID必须为5位数字")
#身份证号18位,要求除了第18位可以x,其余都只能为数字
while True:
em_id_num = input("请输入员工身份证号:")
if len(em_id_num) == 18 and em_id_num[0:17].isdigit() and (em_id_num[-1] in "0123456789xX"):
break
else:
print("【ERROR】:员工身份证号必须为18位,且除了第18位可以为x或者X,其余都是数字!")
info_list.append([em_name,em_work_id,em_id_num])
print("【INFO】:添加成功!")
elif command == 2:
#删除员工信息
em_name = input("请输入姓名:")
#遍历info_list这个列表(找到这个人)
for i in info_list:
if em_name in i:
#在这个列表中就执行删除
info_list.remove(i)
print("【INFO】:删除成功!")
break #找到了此人,所以后面不再需要遍历
else:
print("【ERROR】:查无此人!")
elif command == 3:
#查询所有员工信息
print("【INFO】:所有员工信息如下")
print(info_list)
elif command == 4:
#退出系统
print("【INFO】:退出成功!谢谢使用")
else:
print("【ERROR】:请重新输入1到4之间的数字!")
引用 皆我百晓生 小程序回复内容作答:
下面是一个简单的职工管理系统的Python代码实现:
class Staff:
def __init__(self, name, gender, birthdate, workdate, education, position, address, phone):
self.name = name
self.gender = gender
self.birthdate = birthdate
self.workdate = workdate
self.education = education
self.position = position
self.address = address
self.phone = phone
def __str__(self):
return f"姓名:{self.name},性别:{self.gender},出生年月:{self.birthdate},工作年月:{self.workdate},学历:{self.education},职务:{self.position},住址:{self.address},电话:{self.phone}"
def get_name(self):
return self.name
def get_attr(self, attr):
return getattr(self, attr, None)
class StaffManagementSystem:
def __init__(self):
self.staff_list = []
def add_staff(self):
name = input("请输入姓名:")
gender = input("请输入性别:")
birthdate = input("请输入出生年月:")
workdate = input("请输入工作年月:")
education = input("请输入学历:")
position = input("请输入职务:")
address = input("请输入住址:")
phone = input("请输入电话:")
staff = Staff(name, gender, birthdate, workdate, education, position, address, phone)
self.staff_list.append(staff)
print("添加职工成功!")
def delete_staff(self):
name = input("请输入要删除的职工姓名:")
for staff in self.staff_list:
if staff.get_name() == name:
self.staff_list.remove(staff)
print("删除职工成功!")
return
print("未找到要删除的职工!")
def search_staff(self):
option = input("请选择查询方式(1-按姓名查询,2-按属性查询):")
if option == "1":
name = input("请输入要查询的职工姓名:")
for staff in self.staff_list:
if staff.get_name() == name:
print(staff)
return
print("未找到符合条件的职工!")
elif option == "2":
attr = input("请输入要查询的属性:")
value = input("请输入要查询属性的值:")
for staff in self.staff_list:
if staff.get_attr(attr) == value:
print(staff)
print("未找到符合条件的职工!")
else:
print("无效的选项!")
def modify_staff(self):
name = input("请输入要修改的职工姓名:")
for staff in self.staff_list:
if staff.get_name() == name:
attr = input("请输入要修改的属性:")
value = input("请输入要修改属性的值:")
setattr(staff, attr, value)
print("修改职工成功!")
return
print("未找到要修改的职工!")
def sort_staff(self):
self.staff_list.sort(key=lambda staff: staff.get_name())
print("职工排序成功!")
def print_staff_list(self):
for staff in self.staff_list:
print(staff)
if __name__ == "__main__":
system = StaffManagementSystem()
while True:
print("""
职工管理系统菜单:
1. 新增职工
2. 删除职工
3. 查询职工
4. 修改职工
5. 排序职工
6. 显示所有职工
0. 退出系统
""")
option = input("请输入菜单选项:")
if option == "1":
system.add_staff()
elif option == "2":
system.delete_staff()
elif option == "3":
system.search_staff()
elif option == "4":
system.modify_staff()
elif option == "5":
system.sort_staff()
elif option == "6":
system.print_staff_list()
elif option == "0":
break
else:
print("无效的选项!")
这个代码实现了一个简单的职工管理系统,通过菜单选项来实现新增职工、删除职工、查询职工、修改职工、排序职工以及显示所有职工的功能。其中,职工信息存储在一个列表中,在进行查询、修改和排序操作时,使用Lambda表达式对职工对象进行匹配和排序。
如果需要答辩,线路2、12、9、1,可以帮助你答辩
这是一个Python实现的简单职工管理系统的例子。它使用了Python的内置模块,比如json
和os
,并且所有的数据都保存在内存中,所以不需要进行内外存交换。
首先,我们定义一个职工类:
class Employee:
def __init__(self, name, gender, birth_year, work_year, education, position, address, phone):
self.name = name
self.gender = gender
self.birth_year = birth_year
self.work_year = work_year
self.education = education
self.position = position
self.address = address
self.phone = phone
然后,我们定义一个管理类,用于管理职工:
import json
import os
class EmployeeManager:
def __init__(self, file_path):
self.file_path = file_path
self.employees = []
if os.path.exists(file_path):
with open(file_path, 'r') as f:
self.employees = json.load(f)
def save(self):
with open(self.file_path, 'w') as f:
json.dump(self.employees, f)
def add_employee(self, employee):
self.employees.append(employee)
self.save()
def remove_employee(self, name):
self.employees = [employee for employee in self.employees if employee.name != name]
self.save()
def find_employee(self, predicate):
return [employee for employee in self.employees if predicate(employee)]
def update_employee(self, name, new_values):
for employee in self.employees:
if employee.name == name:
for key, value in new_values.items():
setattr(employee, key, value)
self.save()
return employee
return None
这个管理类提供了添加职工、删除职工、查找职工和更新职工的方法。其中,查找职工的方法接受一个函数作为参数,这个函数用于判断是否符合查找条件。更新职工的方法接受一个名字和一个字典作为参数,这个字典包含了需要更新的属性和新的值。
注意,这个管理类的初始化方法会尝试从文件中读取职工数据。如果文件不存在,那么职工列表就会为空。保存方法会将当前的职工列表写入文件。添加、删除、查找和更新职工的方法都会调用保存方法,以确保数据的一致性。
import pickle
class Employee:
def __init__(self, name, gender, birth_year, work_year, education, position, address, phone):
self.name = name
self.gender = gender
self.birth_year = birth_year
self.work_year = work_year
self.education = education
self.position = position
self.address = address
self.phone = phone
def __repr__(self):
return f'Employee({self.name}, {self.gender}, {self.birth_year}, {self.work_year}, {self.education}, {self.position}, {self.address}, {self.phone})'
def load_employees():
try:
with open('employees.pkl', 'rb') as file:
employees = pickle.load(file)
except FileNotFoundError:
employees = {}
return employees
def save_employees(employees):
with open('employees.pkl', 'wb') as file:
pickle.dump(employees, file)
def add_employee(employees, employee):
employees[employee.name] = employee
save_employees(employees)
def remove_employee(employees, name):
if name in employees:
del employees[name]
save_employees(employees)
def find_employee(employees, name):
return employees.get(name)
def modify_employee(employees, name, attribute, value):
if name in employees:
setattr(employees[name], attribute, value)
save_employees(employees)
def sort_employees(employees):
sorted_employees = sorted(employees.values(), key=lambda x: x.name)
return sorted_employees
def main():
employees = load_employees()
while True:
print('1: 添加员工')
print('2: 删除员工')
print('3: 查找员工')
print('4: 修改员工信息')
print('5: 排序员工')
print('6: 退出')
choice = input('请输入您的选择:')
if choice == '1':
name = input('请输入员工姓名:')
gender = input('请输入员工性别:')
birth_year = input('请输入员工出生年份:')
work_year = input('请输入员工工作年份:')
education = input('请输入员工学历:')
position = input('请输入员工职务:')
address = input('请输入员工住址:')
phone = input('请输入员工电话:')
employee = Employee(name, gender, birth_year, work_year, education, position, address, phone)
add_employee(employees, employee)
print('员工添加成功!')
elif choice == '2':
name = input('请输入要删除的员工姓名:')
remove_employee(employees, name)
print('员工删除成功!')
elif choice == '3':
name = input('请输入要查找的员工姓名:')
employee = find_employee(employees, name)
if employee:
print(f'找到员工:{employee}')
else:
print('未找到员工。')
elif choice == '4':
name = input('请输入要修改的员工姓名:')
attribute = input('请输入要修改的属性:')
value = input('请输入新的属性值:')
modify_employee(employees, name, attribute, value)
print('员工信息修改成功!')
elif choice == '5':
sorted_employees = sort_employees(employees)
for employee in sorted_employees:
print(employee)
elif choice == '6':
break
else:
print('无效的选项,请重新输入。')
save_employees(employees)
print('程序结束。')
结合GPT给出回答如下请题主参考
您好,下面是用Python写职工管理系统的示例代码,其中包括插入、删除、查找和排序等功能。这里使用了面向对象编程的思想,将职工信息封装在一个类中进行处理。
class Employee:
def __init__(self, name, gender, birthday, jobtime, education, position, address, phone):
self.name = name
self.gender = gender
self.birthday = birthday
self.jobtime = jobtime
self.education = education
self.position = position
self.address = address
self.phone = phone
class EmployeeManagementSystem:
def __init__(self):
self.employees = []
def add_employee(self, employee):
self.employees.append(employee)
def remove_employee(self, name):
for employee in self.employees:
if employee.name == name:
self.employees.remove(employee)
print(f"已删除职工{name}的信息。")
return
print(f"未找到姓名为{name}的职工。")
def search_employee(self, name):
for employee in self.employees:
if employee.name == name:
print(f"职工姓名:{employee.name}")
print(f"性别:{employee.gender}")
print(f"出生年月:{employee.birthday}")
print(f"工作年月:{employee.jobtime}")
print(f"学历:{employee.education}")
print(f"职务:{employee.position}")
print(f"住址:{employee.address}")
print(f"电话:{employee.phone}")
return
print(f"未找到姓名为{name}的职工。")
def sort_employees(self, key):
sorted_employees = sorted(self.employees, key=lambda employee: getattr(employee, key))
for employee in sorted_employees:
print(f"职工姓名:{employee.name},{key}:{getattr(employee, key)}")
def print_employees(self):
print("所有职工信息如下:")
for employee in self.employees:
print(f"职工姓名:{employee.name}")
print(f"性别:{employee.gender}")
print(f"出生年月:{employee.birthday}")
print(f"工作年月:{employee.jobtime}")
print(f"学历:{employee.education}")
print(f"职务:{employee.position}")
print(f"住址:{employee.address}")
print(f"电话:{employee.phone}")
print()
ems = EmployeeManagementSystem()
employee1 = Employee("张三", "男", "1980-01-01", "2000-01-01", "本科", "经理", "北京市", "13333333333")
ems.add_employee(employee1)
employee2 = Employee("李四", "女", "1985-01-01", "2005-01-01", "硕士", "工程师", "上海市", "14444444444")
ems.add_employee(employee2)
ems.print_employees()
ems.search_employee("张三")
ems.search_employee("王五")
ems.remove_employee("张三")
ems.remove_employee("王五")
ems.sort_employees("jobtime")
使用上述代码,您可以创建一个职工管理系统,并实现添加、删除、查找和排序等功能。在这个示例中,我们首先定义了一个职工类 Employee
,它具有姓名、性别、出生年月、工作年月、学历、职务、住址和电话等基本属性。然后我们通过定义职工管理系统类 EmployeeManagementSystem
将职工信息进行管理。
在 EmployeeManagementSystem
类中,我们实现了以下方法:
__init__()
:初始化职工列表。add_employee(employee)
:将职工信息添加到职工列表中。remove_employee(name)
:从职工列表中删除指定姓名的职工信息。search_employee(name)
:根据姓名查找职工信息。sort_employees(key)
:根据指定属性对职工信息进行排序。print_employees()
:打印所有职工信息。最后,我们创建了两个职工实例,并通过 add_employee()
方法将它们添加到职工列表中。然后,我们调用 print_employees()
方法打印所有职工信息。接下来,我们调用 search_employee()
方法查找指定姓名的职工信息,并尝试删除职工信息。最后,我们通过 sort_employees()
方法将职工列表按照入职时间进行排序,并打印排序结果。
【以下回答由 GPT 生成】
问题描述: 我需要使用Python编写一个简单的职工管理系统,其中包括插入、删除、查找和排序等功能。职工对象包括一些基本信息,如姓名、性别、出生年月、工作年月、学历、职务、住址和电话。要求实现以下功能: - 新增一名职工:将新增的职工对象按照姓名的字典顺序保存在职工管理文件中。 - 删除一名职工:从职工管理文件中删除指定的职工对象。 - 查询:从职工管理文件中查询符合特定条件的职工。 - 修改:找到指定的职工对象,并对其某些属性进行修改。 - 排序:将职工管理文件中的职工对象按照指定的需求进行排序。
实现提示:职工对象数目较少,可以将所有操作保存在内存中,无需进行内外存交换。可以通过键盘输入职工对象,并以文件方式保存。程序执行时可以先将文件读入内存。对职工对象中的姓名按字典顺序进行排序,然后在排序后的职工对象上进行增删查改等操作。
【相关推荐】
你安装了Django了吗
用Django的话,可以参考一下这个:
在Django中定义一个模型来表示职工:
# models.py
from django.db import models
class Employee(models.Model):
name = models.CharField(max_length=100)
gender = models.CharField(max_length=10)
birth_year = models.IntegerField()
work_year = models.IntegerField()
education = models.CharField(max_length=50)
position = models.CharField(max_length=50)
address = models.CharField(max_length=200)
phone = models.CharField(max_length=20)
def __str__(self):
return self.name
在创建相应的视图来处理职工的增、删、查、改操作
# views.py
from django.shortcuts import render, redirect
from .models import Employee
def index(request):
employees = Employee.objects.all().order_by('name')
return render(request, 'index.html', {'employees': employees})
def add_employee(request):
if request.method == 'POST':
name = request.POST['name']
gender = request.POST['gender']
birth_year = request.POST['birth_year']
work_year = request.POST['work_year']
education = request.POST['education']
position = request.POST['position']
address = request.POST['address']
phone = request.POST['phone']
Employee.objects.create(name=name, gender=gender, birth_year=birth_year, work_year=work_year, education=education, position=position, address=address, phone=phone)
return redirect('/')
return render(request, 'add_employee.html')
def delete_employee(request, id):
Employee.objects.get(id=id).delete()
return redirect('/')
def update_employee(request, id):
if request.method == 'POST':
employee = Employee.objects.get(id=id)
employee.name = request.POST['name']
employee.gender = request.POST['gender']
employee.birth_year = request.POST['birth_year']
employee.work_year = request.POST['work_year']
employee.education = request.POST['education']
employee.position = request.POST['position']
employee.address = request.POST['address']
employee.phone = request.POST['phone']
employee.save()
return redirect('/')
employee = Employee.objects.get(id=id)
return render(request, 'update_employee.html', {'employee': employee})
代码解释:
对于查询功能,可以在index视图中完成,通过Employee对象的all()方法获取所有的职工,然后使用filter()方法进行筛选。例如,可以筛选出所有性别为男的职工:Employee.objects.filter(gender='男')。
对于排序功能,我们可以在查询职工时使用order_by()方法,例如,可以按姓名进行排序:Employee.objects.all().order_by('name')
解决问题的话,记得采纳哦