java大作业编一个程序打印出公司某月各员工工资
更新时间:2024-05-22 22:21:01 阅读量: 综合文库 文档下载
- java大作业推荐度:
- 相关推荐
姓名:王镱澍
Java大作业
一、 题目
白浪公司的雇员根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
雇员分为以下若干类:
SalariedEmployee:拿固定工资的员工。 HourlyEmployee:按小时拿工资的员工。
SalesEmployee:销售人员,工资由月销售额和提成率决定。
BasePlusSalesEmployee:有固定底薪的销售人员,工资由底薪加上销售提成。
公司会给SalaryEmployee每月另外发放2000元加班费,给 BasePlusSalesEmployee发放1000元加班费。编一个java程序创建上述若干类,并实现确定月份以及该月不同员工的工作情况后打印出该公司该月各员工工资,公司总的工资支出情况。
二、 程序功能说明
编一个java程序创建上述若干类,并实现确定该月不同员工的工作情况以及输入月份后打印出该公司该月各员工工资,公司总的工资支出情况。
三、 类、属性、方法说明
程序中已给出详细解释在此只作简要说明: Employee:这是所有员工总的父类。 属性:员工的姓名和生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。 属性:月薪。
方法:每月工作超出160小时的部分按照1.5倍工资发放。
HourlyEmployee:Employee的子类,按小时拿工资的员工。 属性:每小时的工资、每月工作的小时数。
SalesEmployee:Employee的子类,销售人员。 属性:月销售额、提成率。
方法:工资由月销售额和提成率决定。
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员。 属性:底薪。
方法:工资由底薪加上销售提成部分。
四、 程序代码
import java.util.*;
class MyException extends Exception {
MyException(){} //创建自己的异常定义 }
public class EmployeeTest {
//月份输入函数。
static int scanf() throws MyException {
Scanner in=new Scanner(System.in); int s=in.nextInt();
if(s<1|s>12) { throw new MyException(); } //月份不正确时抛出定义的异常。 else return s; }
//主函数入口。
public static void main(String[] args) {
Employee ep[] = new Employee[4];
ep[0] = new SalariedEmployee(\魏威\ ep[1] = new HourlyEmployee(\段利峰\ ep[2] = new SalesEmployee(\林龙\
ep[3] = new BasedPlusSalesEmployee(\华溪\ System.out.println(\请输入月份:\ int month=1; int data=1; while(data==1) {
try {month=scanf();data=0;}
catch(MyException e) { System.out.println(\月份是1-12月请输入正确月份\ }
System.out.println(\白浪集团\月工资表:\ for(int i=0;i System.out.println(ep[i].getName()+\ } //统计加班费 int result = 0; for(int i=0;i //统计本月给出员工的总工资 int salary=0; for(int i=0;i { salary +=ep[i].getSalary(month)+ep[i].getAddtionalSalary();} System.out.println(\本月给出员工的总工资: \ } } //定义加班费接口 interface AddtionalSalary { int getAddtionalSalary(); } /** *这是所有员工总的父类。 *属性:员工的姓名和生日月份。 *方法:getSalary(),getName(),getAddtionalSalary() */ class Employee implements AddtionalSalary { private String name;//员工姓名 private int birth;//员工生日月份 public Employee(String name,int birth) { this.name = name;this.birth = birth;} /** *方法说明:根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖 *励100元。 */ public int getSalary(int month) { int result = 0; if(month==birth) result = 100; return result; } public String getName() {return name;} //方法说明:获取员工姓名。 /** *方法说明: 公司会给SalaryEmployee每月另外发放2000元加班费,给 *BasePlusSalesEmployee发放1000元加班费 */ public int getAddtionalSalary() {return 0;} } /** *Employee的子类,拿固定工资的SalariedEmployee员工。 *属性:月薪 *方法:getSalary(),getAddtionalSalary(). */ class SalariedEmployee extends Employee { private int salaryPerMonth; public SalariedEmployee(String name,int birth,int salaryPerMonth) { super(name,birth); this.salaryPerMonth = salaryPerMonth; } //按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放. public int getSalary(int month) { return this.salaryPerMonth + super.getSalary(month)+ this.getAddtionalSalary(); } public int getAddtionalSalary() {return 2000;} } /** *Employee的子类,按小时拿工资的员工。 *属性:每小时的工资、每月工作的小时数。 *方法:getSalary() */ class HourlyEmployee extends Employee { private int salaryPerHour; private int hoursPerMonth; public HourlyEmployee(String name,int birth,int hoursPerMonth) { super(name,birth); this.salaryPerHour = salaryPerHour; this.hoursPerMonth = hoursPerMonth; } public int getSalary(int month) { int result = 0; if(this.hoursPerMonth<=160) {result = hoursPerMonth*salaryPerHour;} else { result = 160*salaryPerHour + (int)((hoursPerMonth-160)*1.5*salaryPerHour); } return result+super.getSalary(month); } } /** *Employee的子类,销售人员. *属性: 月销售额、提成率. salaryPerHour,int *方法: getSalary(). */ class SalesEmployee extends Employee { private int sales; private double rate; public SalesEmployee(String name,int birth,int sales,double rate) { super(name,birth); this.sales = sales; this.rate = rate; } //方法说明:工资由月销售额和提成率决定. public int getSalary(int month) {return (int)(sales*rate)+super.getSalary(month);} } /** *SalesEmployee的子类,有固定底薪的销售人员. *属性: 底薪. *方法: getSalary(),getAddtionalSalary(). */ class BasedPlusSalesEmployee extends SalesEmployee { private int basedSalary; public BasedPlusSalesEmployee(String name,int birth,int rate,int basedSalary) { super(name,birth,sales,rate); this.basedSalary = basedSalary; } public int getSalary(int month)// 工资由底薪加上销售提成部分 { return this.basedSalary+super.getSalary(month) + this.getAddtionalSalary(); } public int getAddtionalSalary() {return 1000;} } 五、运行结果 sales,double 在C:\\Program Files\\Java\\text目录下产生的类文件: 六、结果说明 当输入正确的1-12月月份后程序就根据开始定义的员工生日情况给本月过生的员工增加100工资例如输入月份为2时魏威工资7000+100=7100,同理分析列出的其他员工的工资情况和公司支出情况,与笔算结果相符,可见程序实现了题目的功能。 七、心得体会 通过这几个月的学习我感受到java是一门非常有用的面向对象语言,有着广泛的应用,我印象较深的是它可以创建丰富精彩的图形用户界面,这在互联网可以看到很多例子。这次编程虽然只是实现了一些简单的功能但是通过实践让我对java面向对象思想有了一定的体会,学到了一些基本的编程、调试步骤和方法。然而毕竟是初学者,很多概念还不够熟悉,我认识到只有经过更多实践练习才能掌握这种强大有用的语言。 在C:\\Program Files\\Java\\text目录下产生的类文件: 六、结果说明 当输入正确的1-12月月份后程序就根据开始定义的员工生日情况给本月过生的员工增加100工资例如输入月份为2时魏威工资7000+100=7100,同理分析列出的其他员工的工资情况和公司支出情况,与笔算结果相符,可见程序实现了题目的功能。 七、心得体会 通过这几个月的学习我感受到java是一门非常有用的面向对象语言,有着广泛的应用,我印象较深的是它可以创建丰富精彩的图形用户界面,这在互联网可以看到很多例子。这次编程虽然只是实现了一些简单的功能但是通过实践让我对java面向对象思想有了一定的体会,学到了一些基本的编程、调试步骤和方法。然而毕竟是初学者,很多概念还不够熟悉,我认识到只有经过更多实践练习才能掌握这种强大有用的语言。
正在阅读:
业务员实习报告12-12
党群众路线学习笔记12-11
起重机械安全规程第一部分总则12-20
物流可行性研究报告05-05
德育教育在数学教学中的渗透10-05
河南大学化学化工学院2009年攻读硕士学位研究生招生专12-14
劳动保障协理员三级理论知识201103-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 某月
- 作业
- 工资
- 员工
- 打印
- 程序
- 一个
- 公司
- java
- 自考财务管理学重点
- 度米文库汇编之恢弘志士之气不宜妄自菲薄关于自信的名言警句
- XX玉米烘干塔项目可行性研究报告
- 2011年上半年小学六年级语文单元测试卷(一)
- 李清照诗词全集
- 人力资源战略与规划作业及答案
- 职称英语词汇大全及讲义
- 2010.3高三数学(理科)模拟试题(4)
- 笑话集
- 葵花宝典之姚开建《西方经济学》名校考研专业课常考知识点
- 遥感地学分析考试资料 答案
- 中外政治思想史作业答案
- 中西医结合妇产科学题库——广中医【附答案】
- 病例分析题库(内科)
- 中国印制电路专业技术职称工程技术系列-中国印制电路行业协会
- 张萍四上七、八单元学案
- 2017新版2017部编版年级语文下册《一分钟》教案
- 两化融合项目验收报告
- 华为AC6005配置实例
- 管接头注塑模设计 - 图文