创建一个集合储存员工信息,员工信息包括工号、姓名、年龄、工资等。要求员工信息中不允许出现同工号的员工的完整代码
时间: 2024-02-02 11:04:02 浏览: 28
以下是使用Python语言实现的员工信息集合,确保不允许出现同工号的员工:
```python
class Employee:
def __init__(self, emp_id, name, age, salary):
self.emp_id = emp_id
self.name = name
self.age = age
self.salary = salary
def __str__(self):
return f"Employee ID: {self.emp_id}, Name: {self.name}, Age: {self.age}, Salary: {self.salary}"
class EmployeeSet:
def __init__(self):
self.employees = set()
def add_employee(self, emp_id, name, age, salary):
for emp in self.employees:
if emp.emp_id == emp_id:
raise ValueError("Employee with the same ID already exists")
new_emp = Employee(emp_id, name, age, salary)
self.employees.add(new_emp)
def remove_employee(self, emp_id):
for emp in self.employees:
if emp.emp_id == emp_id:
self.employees.remove(emp)
return
raise ValueError("Employee with given ID not found")
def display_employees(self):
for emp in self.employees:
print(emp)
# Example usage
emp_set = EmployeeSet()
emp_set.add_employee(1001, "John Smith", 35, 80000)
emp_set.add_employee(1002, "Jane Doe", 28, 60000)
emp_set.add_employee(1003, "Bob Johnson", 42, 100000)
# emp_set.add_employee(1001, "Duplicate Employee", 25, 50000) # Raises ValueError
emp_set.display_employees()
```
在上面的代码中,`Employee`类表示一个员工对象,包含工号、姓名、年龄和工资等属性。`EmployeeSet`类表示员工信息集合,使用Python内置的`set()`数据结构来存储员工对象。在`add_employee()`方法中,通过遍历现有的员工列表来检查是否已经存在具有相同工号的员工。如果存在,则引发`ValueError`异常,否则将新员工添加到集合中。在`remove_employee()`方法中,通过遍历现有的员工列表来查找具有给定工号的员工并删除它。`display_employees()`方法用于显示所有员工的详细信息。