1 题目
某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。
这三类人员共同拥有的相关属性:姓名、编号; 相关方法:获取当月薪水的getPay()方法、显示个人信息的toString()方法。
人员编号基数为1000,每创建一个人员实例对象,其编号属性的值顺序加1。月薪计算方法:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销人员的月薪按当月的销售额的4%提成。
要求:根据题意,自己确定需要定义的类及各类的属性、构造方法和其他方法,并编写Java Applcation程序实现功能:存储若干个职工信息,然后分行显示所有职工的姓名、编号、月工资等相关信息,另外计算所有职工的月薪总和并显示出来。
2 框图
3 源代码
staff.java
/*生成虚拟员工类*/
public abstract class staff
{
public String name;
public String cno;//职工编号
public static int count;
abstract double getPay();//获取员工的工资
abstract void tostring();//显示员工的信息
staff(String name,String cno)
{
this.name = name;
this.cno = cno;
count++;
}
public static int get_Count()//每增加一个员工,count++
{
return count;
}
}
Manager.java
/*生成经理类*/
public class Manager extends staff
{
private int Monthly_Salary;//工资
Manager(String name,String cno,int Monthly_Salary)
{
super(name,cno);
this.Monthly_Salary = Monthly_Salary;
}
double getPay()
{
return Monthly_Salary;
}
void tostring()
{
System.out.println("员工信息:" + '\n');
System.out.println("姓名:" + name + '\n');
System.out.println("编号:" + cno + '\n');
}
}
Part_Time_Technicist.java
/*生成兼职技术人员类*/
public class Part_Time_Technicist extends staff
{
private int Worked_hours;//一个月工作的时间长度
Part_Time_Technicist(String name,String cno,int Worked_hours)
{
super(name,cno);
this.Worked_hours = Worked_hours;
}
double getPay()
{
return 100*Worked_hours;
}
void tostring()
{
System.out.println("员工信息:" + '\n');
System.out.println("姓名:" + name + '\n');
System.out.println("编号:" + cno + '\n');
}
}
Part_Time_Salesman.java
/*生成兼职推销人员类*/
public class Part_Time_Salesman extends staff
{
private int Sales;//销售额
Part_Time_Salesman(String name,String cno,int Sales)
{
super(name,cno);
this.Sales = Sales;
}
double getPay()
{
return 0.04*Sales;
}
void tostring()
{
System.out.println("员工信息:" + '\n');
System.out.println("姓名:" + name + '\n');
System.out.println("编号:" + cno + '\n');
}
}
Company.java
public class Company
{
public static void main(String[] args)
{
double sum = 0;
int cnt = 0;
int i = 0;
//存储十个员工信息
staff Staff[] = new staff[10];//定义一个数组
Staff[0] = new Manager("可爱","1000",8000);
Staff[1] = new Manager("大可爱","1001",8000);
Staff[2] = new Manager("小可爱","1002",8000);
Staff[3] = new Manager("一号可爱","1003",8000);
Staff[4] = new Part_Time_Technicist("二号可爱","1004",4 * 30);
Staff[5] = new Part_Time_Technicist("三号可爱","1005",6 * 30);
Staff[6] = new Part_Time_Technicist("四号可爱","1006",8 * 30);
Staff[7] = new Part_Time_Salesman("五号可爱","1007",180000);
Staff[8] = new Part_Time_Salesman("六号可爱","1008",16000);
Staff[9] = new Part_Time_Salesman("七号可爱","1009",14000);
//获取员工总数
cnt = staff.get_Count();
//显示员工信息
for(i = 0;i < cnt;i++)
{
Staff[i].tostring();
}
//计算员工的月薪总和
for(i = 0;i < cnt;i++)
{
sum += Staff[i].getPay();
}
//显示员工的月薪总和
System.out.println("所有员工的月薪总和为:" + sum + '\n');
}
}