简单的职工管理系统
◆ 问题描述
对单位的职工进行管理,包括插入、删除、查找、排序等功能。
◆ 要求
职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
(2)删除一名职工:从职工管理文件中删除一名职工对象。
(3)查询:从职工管理文件中查询符合某些条件的职工。
(4)修改:检索某个职工对象,对其某些属性进行修改。
(5)排序:按某种需要对职工对象文件进行排序。
◆ 实现提示
职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
(2)对职工对象中的"姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改等操作。
要代码私信我
引用 皆我百晓生 小程序回复内容作答:
数据结构:
算法设计:
代码思路:
示例代码如下:
# 定义职工管理文件
employee_file = []
# 新增一名职工
def add_employee():
employee = {}
employee["姓名"] = input("请输入姓名:")
employee["性别"] = input("请输入性别:")
employee["出生年月"] = input("请输入出生年月:")
employee["工作年月"] = input("请输入工作年月:")
employee["学历"] = input("请输入学历:")
employee["职务"] = input("请输入职务:")
employee["住址"] = input("请输入住址:")
employee["电话"] = input("请输入电话:")
employee_file.append(employee)
print("新增职工成功")
# 删除一名职工
def delete_employee():
name = input("请输入要删除的职工姓名:")
for employee in employee_file:
if employee["姓名"] == name:
employee_file.remove(employee)
print("删除职工成功")
return
print("未找到该职工")
# 查询职工
def search_employee():
keyword = input("请输入查询关键字:")
result = []
for employee in employee_file:
for attr, value in employee.items():
if keyword in value:
result.append(employee)
break
if len(result) > 0:
print("查询结果:")
for employee in result:
print(employee)
else:
print("未找到符合条件的职工")
# 修改职工
def modify_employee():
name = input("请输入要修改的职工姓名:")
for employee in employee_file:
if employee["姓名"] == name:
attr = input("请输入要修改的属性名:")
if attr in employee:
value = input("请输入新的属性值:")
employee[attr] = value
print("修改成功")
return
print("未找到该职工")
# 排序职工
def sort_employee():
sorted_file = sorted(employee_file, key=lambda x: x["姓名"])
print("排序结果:")
for employee in sorted_file:
print(employee)
# 主函数
def main():
while True:
print("请选择操作:")
print("1. 新增职工\n2. 删除职工\n3. 查询职工\n4. 修改职工\n5. 排序职工\n6. 退出")
choice = input("请输入选项:")
if choice == "1":
add_employee()
elif choice == "2":
delete_employee()
elif choice == "3":
search_employee()
elif choice == "4":
modify_employee()
elif choice == "5":
sort_employee()
elif choice == "6":
break
else:
print("输入无效,请重新选择")
if __name__ == '__main__':
main()
以上代码是一个简单的职工管理系统,可以通过菜单选项实现新增、删除、查询、修改和排序职工对象的功能。用户可以选择操作,程序根据用户的选择进行相应的操作,并将结果输出。职工对象通过一个字典表示,并存储在一个列表中。
该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。
思路:
根据要求,我们需要建立一个职工管理系统,包括录入、删除、查询、修改、排序等功能。为方便操作,我们选择以文件方式存储职工信息。程序开始运行时会将文件中的职工信息读取到内存中,以便于操作。下面进一步阐述。
数据结构:
为了方便操作,我们需要定义一个职工类,该类包含姓名、性别、出生年月、工作年月、学历、职务、住址和电话等信息。此外,我们可以将职工信息存储在字典中,以便于查找和排序操作。在排序过程中,我们可以根据姓名的字典序排序。
算法设计:
(1)插入职工信息:在文件中追加新的职工信息,并在字典中添加该职工信息。
(2)删除职工信息:从文件中删除指定职工信息,并在字典中删除该职工信息。
(3)查询职工信息:根据指定条件在字典中查找符合条件的职工信息,并输出。
(4)修改职工信息:根据指定条件在字典中查找指定职工信息,对其进行修改,并更新文件。
(5)排序职工信息:根据姓名的字典序排序,将排序结果写入文件。
代码实现:
class Staff:
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
class StaffManage:
def __init__(self, file):
self.staff_dict = {}
self.file = file
with open(file, 'r') as f:
for line in f:
item = line.strip().split(',')
name, gender, birth_date, work_date, education, position, address, phone = item
staff = Staff(name, gender, birth_date, work_date, education, position, address, phone)
self.staff_dict[name] = staff
def add_staff(self, staff):
with open(self.file, 'a') as f:
f.write(','.join([staff.name, staff.gender, staff.birth_date, staff.work_date, staff.education, staff.position, staff.address, staff.phone]) + '\n')
self.staff_dict[staff.name] = staff
def delete_staff(self, name):
with open(self.file, 'r') as f:
lines = f.readlines()
with open(self.file, 'w') as f:
for line in lines:
if line.strip().split(',')[0] != name:
f.write(line)
del self.staff_dict[name]
def search_staff(self, **kwargs):
results = []
for name, staff in self.staff_dict.items():
flag = True
for key, value in kwargs.items():
if getattr(staff, key) != value:
flag = False
break
if flag:
results.append(staff)
return results
def modify_staff(self, name, **kwargs):
with open(self.file, 'r') as f:
lines = f.readlines()
with open(self.file, 'w') as f:
for line in lines:
if line.strip().split(',')[0] == name:
items = line.strip().split(',')
for key, value in kwargs.items():
items[Staff.__dict__[key].fget(Staff)] = value
f.write(','.join(items) + '\n')
self.staff_dict[name].__dict__.update(kwargs)
else:
f.write(line)
def sort_by_name(self):
sorted_staff = sorted(self.staff_dict.values(), key=lambda x: x.name)
with open(self.file, 'w') as f:
for staff in sorted_staff:
f.write(','.join([staff.name, staff.gender, staff.birth_date, staff.work_date, staff.education, staff.position, staff.address, staff.phone]) + '\n')
self.staff_dict = {staff.name: staff for staff in sorted_staff}
使用示例:
staff_manage = StaffManage('staff.txt')
staff = Staff('Tom', 'male', '1990-01-01', '2010-01-01', '本科', '经理', '上海', '123456789')
staff_manage.add_staff(staff)
staff_manage.delete_staff('Tom')
results = staff_manage.search_staff(education='本科')
for staff in results:
print(staff.name)
staff_manage.modify_staff('Tom', education='博士')
staff_manage.sort_by_name()
你可以参考这个代码来看
class EmployeeManagementSystem:
def __init__(self):
self.employees = {} # 使用字典来管理职工信息
def add_employee(self, name, info):
# 添加职工信息
self.employees[name] = info
def remove_employee(self, name):
# 删除职工信息
if name in self.employees:
del self.employees[name]
else:
print(f"职工 {name} 不存在")
def search_employee(self, keyword):
# 查询职工信息
results = []
for name, info in self.employees.items():
if keyword in name or keyword in info:
results.append((name, info))
return results
def modify_employee(self, name, attribute, new_value):
# 修改职工信息
if name in self.employees:
if attribute in self.employees[name]:
self.employees[name][attribute] = new_value
else:
print(f"属性 {attribute} 不存在")
else:
print(f"职工 {name} 不存在")
def sort_employees(self):
# 按姓名排序职工信息
sorted_employees = sorted(self.employees.items(), key=lambda x: x[0])
return sorted_employees
# 示例用法
if __name__ == "__main__":
emp_system = EmployeeManagementSystem()
emp_system.add_employee("John", {
"gender": "Male",
"birthdate": "1990-01-15",
"hire_date": "2015-03-20",
"education": "Bachelor's Degree",
"position": "Manager",
"address": "123 Main St",
"phone": "555-1234"
})
emp_system.add_employee("Alice", {
"gender": "Female",
"birthdate": "1988-05-22",
"hire_date": "2018-07-10",
"education": "Master's Degree",
"position": "Engineer",
"address": "456 Elm St",
"phone": "555-5678"
})
# 查询职工
results = emp_system.search_employee("John")
print("查询结果:")
for name, info in results:
print(f"姓名: {name}, 详细信息: {info}")
# 修改职工信息
emp_system.modify_employee("John", "position", "Senior Manager")
# 删除职工
emp_system.remove_employee("Alice")
# 按姓名排序并打印
sorted_employees = emp_system.sort_employees()
print("按姓名排序后的职工信息:")
for name, info in sorted_employees:
print(f"姓名: {name}, 详细信息: {info}")
引用chargpt作答
class EmployeeManagementSystem:
def __init__(self):
self.employees = {} # 使用字典来管理职工信息
def add_employee(self, name, info):
# 添加职工信息
self.employees[name] = info
def remove_employee(self, name):
# 删除职工信息
if name in self.employees:
del self.employees[name]
else:
print(f"职工 {name} 不存在")
def search_employee(self, keyword):
# 查询职工信息
results = []
for name, info in self.employees.items():
if keyword in name or keyword in info:
results.append((name, info))
return results
def modify_employee(self, name, attribute, new_value):
# 修改职工信息
if name in self.employees:
if attribute in self.employees[name]:
self.employees[name][attribute] = new_value
else:
print(f"属性 {attribute} 不存在")
else:
print(f"职工 {name} 不存在")
def sort_employees(self):
# 按姓名排序职工信息
sorted_employees = sorted(self.employees.items(), key=lambda x: x[0])
return sorted_employees
# 示例用法
if __name__ == "__main__":
emp_system = EmployeeManagementSystem()
emp_system.add_employee("John", {
"gender": "Male",
"birthdate": "1990-01-15",
"hire_date": "2015-03-20",
"education": "Bachelor's Degree",
"position": "Manager",
"address": "123 Main St",
"phone": "555-1234"
})
emp_system.add_employee("Alice", {
"gender": "Female",
"birthdate": "1988-05-22",
"hire_date": "2018-07-10",
"education": "Master's Degree",
"position": "Engineer",
"address": "456 Elm St",
"phone": "555-5678"
})
# 查询职工
results = emp_system.search_employee("John")
print("查询结果:")
for name, info in results:
print(f"姓名: {name}, 详细信息: {info}")
# 修改职工信息
emp_system.modify_employee("John", "position", "Senior Manager")
# 删除职工
emp_system.remove_employee("Alice")
# 按姓名排序并打印
sorted_employees = emp_system.sort_employees()
print("按姓名排序后的职工信息:")
for name, info in sorted_employees:
print(f"姓名: {name}, 详细信息: {info}")
使用ChatGPT自己写一下更快些。
代码框架和思路:
class Employee:
def __init__(self, name, gender, date_of_birth, date_of_employment, education, position, address, phone):
self.name = name
self.gender = gender
self.date_of_birth = date_of_birth
self.date_of_employment = date_of_employment
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, employee):
self.employees.remove(employee)
def search_employees(self, condition):
result = []
for employee in self.employees:
# 根据条件筛选符合的职工对象
if condition(employee):
result.append(employee)
return result
def modify_employee(self, employee, new_info):
# 修改职工对象的属性
employee.name = new_info.get('name', employee.name)
employee.gender = new_info.get('gender', employee.gender)
employee.date_of_birth = new_info.get('date_of_birth', employee.date_of_birth)
employee.date_of_employment = new_info.get('date_of_employment', employee.date_of_employment)
employee.education = new_info.get('education', employee.education)
employee.position = new_info.get('position', employee.position)
employee.address = new_info.get('address', employee.address)
employee.phone = new_info.get('phone', employee.phone)
def sort_employees(self):
# 按照姓名进行排序
self.employees.sort(key=lambda employee: employee.name)
# 使用示例
if __name__ == '__main__':
# 创建一个职工管理系统对象
system = EmployeeManagementSystem()
# 添加一些职工对象
system.add_employee(Employee('John', 'Male', '1990-01-01', '2020-01-01', 'Bachelor', 'Manager', 'Address 1', '1234567890'))
system.add_employee(Employee('Alice', 'Female', '1995-02-01', '2021-03-01', 'Master', 'Engineer', 'Address 2', '9876543210'))
# 查询符合条件的职工对象
result = system.search_employees(lambda employee: employee.gender == 'Male')
for employee in result:
print(employee.name)
# 修改职工对象的属性
employee_to_modify = system.search_employees(lambda employee: employee.name == 'John')[0]
system.modify_employee(employee_to_modify, {'address': 'New Address'})
# 删除一名职工
employee_to_remove = system.search_employees(lambda employee: employee.name == 'Alice')[0]
system.remove_employee(employee_to_remove)
# 排序职工对象
system.sort_employees()
上述代码中,职工对象使用Employee
类来表示,而职工管理系统使用EmployeeManagementSystem
类来实现具体的管理功能。可以根据需要自行添加其他功能或改进算法。