以下是一道软考案例题中级真题:
某公司的员工工资分为基本工资和绩效工资两部分,其中绩效工资根据员工的绩效评定结果计算。公司要求每个员工每年至少进行一次绩效评定,评定结果分为A、B、C、D四个等级,对应的绩效工资分别为基本工资的20%、10%、5%、0%。现有员工信息如下:
| 员工编号 | 姓名 | 岗位 | 基本工资 |
| -------- | ---- | ---- | -------- |
| 001 | 张三 | 经理 | 10000 |
| 002 | 李四 | 员工 | 5000 |
| 003 | 王五 | 员工 | 6000 |
请编写一个程序,实现以下功能:
1. 输入员工编号和绩效评定结果,计算该员工的绩效工资并输出;
2. 统计公司所有员工的绩效工资总和并输出;
3. 统计公司各岗位员工的绩效工资总和并输出。
要求:
1. 使用面向对象的方式实现;
2. 使用文件存储员工信息,文件格式自定;
3. 使用异常处理机制处理输入错误等异常情况。
提示:
1. 可以定义一个员工类,包含员工编号、姓名、岗位、基本工资、绩效评定结果和绩效工资等属性,以及计算绩效工资的方法;
2. 可以定义一个公司类,包含员工列表、统计绩效工资总和和统计各岗位员工绩效工资总和的方法;
3. 可以使用CSV文件存储员工信息,每行记录包含员工编号、姓名、岗位和基本工资四个字段,以逗号分隔。
样例输入:
```
001,A
002,B
003,C
```
样例输出:
```
员工编号:001,姓名:张三,岗位:经理,基本工资:10000,绩效评定结果:A,绩效工资:2000
员工编号:002,姓名:李四,岗位:员工,基本工资:5000,绩效评定结果:B
,绩效工资:500
员工编号:003,姓名:王五,岗位:员工,基本工资:6000,绩效评定结果:C,绩效工资:300
公司所有员工的绩效工资总和为:2800
经理的绩效工资总和为:2000
员工的绩效工资总和为:800
```
解析:
这道题目要求我们使用面向对象的方式实现,因此我们可以定义一个员工类和一个公司类。员工类包含员工编号、姓名、岗位、基本工资、绩效评定结果和绩效工资等属性,以及计算绩效工资的方法;公司类包含员工列表、统计绩效工资总和和统计各岗位员工绩效工资总和的方法。我们可以使用CSV文件存储员工信息,每行记录包含员工编号、姓名、岗位和基本工资四个字段,以逗号分隔。在输入员工编号和绩效评定结果时,需要进行异常处理,例如输入的员工编号不存在或绩效评定结果不合法等情况。最后,我们需要输出每个员工的绩效工资、公司所有员工的绩效工资总和以及各岗位员工的绩效工资总和。