生日祝贺 某企业有为员工祝贺生日的传统,但随着企业规模的扩大,员工人数的增 多,要求输入生 日(月、日),系统查找出指定日期过生日的员工。 要求用文件保存员工 数据,对输入的员工数据做合理性检查。例如,员工的工号不能重复、 生日数据的年、月、 日必须在合理范围内。
时间: 2023-05-21 11:02:06 浏览: 127
非常感谢您的问题!针对您的需求,我们可以使用文件来保存员工数据,并通过输入的生日日期来查找出指定日期过生日的员工。在输入员工数据时,我们需要对工号和生日数据进行合理性检查,以确保数据的准确性和完整性。以下是一个简单的示例代码,供您参考:
```python
import datetime
# 定义员工类
class Employee:
def __init__(self, id, name, birthday):
self.id = id
self.name = name
self.birthday = birthday
# 定义员工管理类
class EmployeeManager:
def __init__(self, file_path):
self.file_path = file_path
self.employees = []
# 从文件中加载员工数据
def load_employees(self):
with open(self.file_path, 'r') as f:
for line in f:
data = line.strip().split(',')
id = int(data[0])
name = data[1]
birthday = datetime.datetime.strptime(data[2], '%Y-%m-%d').date()
employee = Employee(id, name, birthday)
self.employees.append(employee)
# 保存员工数据到文件
def save_employees(self):
with open(self.file_path, 'w') as f:
for employee in self.employees:
f.write(f'{employee.id},{employee.name},{employee.birthday.strftime("%Y-%m-%d")}\n')
# 添加员工
def add_employee(self, employee):
if employee.id in [e.id for e in self.employees]:
print('工号已存在')
return
self.employees.append(employee)
self.save_employees()
# 查找指定日期过生日的员工
def find_employees_by_birthday(self, month, day):
result = []
for employee in self.employees:
if employee.birthday.month == month and employee.birthday.day == day:
result.append(employee)
return result
# 示例代码
if __name__ == '__main__':
manager = EmployeeManager('employees.txt')
manager.load_employees()
# 添加员工
employee1 = Employee(1, '张三', datetime.date(1990, 1, 1))
manager.add_employee(employee1)
# 查找指定日期过生日的员工
employees = manager.find_employees_by_birthday(1, 1)
for employee in employees:
print(f'工号:{employee.id},姓名:{employee.name},生日:{employee.birthday.strftime("%Y-%m-%d")}')
```
在上面的示例代码中,我们定义了一个员工类和一个员工管理类。员工类包含了员工的工号、姓名和生日信息,员工管理类则负责管理员工数据的加载、保存、添加和查找等操作。我们使用文件来保存员工数据,每行数据包含工号、姓名和生日三个字段,以逗号分隔。在添加员工时,我们需要检查工号是否重复,如果重复则提示错误信息。在查找指定日期过生日的员工时,我们遍历所有员工,找出生日月份和日期与指定日期相同的员工,并将结果返回。
希望这个示例代码能够帮助您解决问题,如果您有任何疑问或建议,请随时联系我。