Java项目案例之---计算公司员工的工资(面向对象复习)
计算公司员工的工资(面向对象复习)
某公司的雇员分为以下若干类:
Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪
HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数
SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。
写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。
注意:要求把每个类都做成完全封装,不允许非私有化属性。
import java.util.Calendar;
public class Employee {
private String name;//员工姓名
private int month;//生日月份
public Employee(){
}
public Employee(String name,int month){
this.setName(name);
this.setMonth(month);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
/**
* 判断员工是否当月过生日
* @param month
* @return 是的话返回100,不是返回0
*/
public static double getSalary(int month){
//获取当前月份,属于工具类中的内容
Calendar ca=Calendar.getInstance();
int m=ca.get(Calendar.MONTH)+1;
if(month==m){
return 100;
}else{
return 0;
}
}
}
//固定月薪
public class SalariedEmployee extends Employee {
private double monthsalary;//月薪
public SalariedEmployee(){
}
public SalariedEmployee(String name,int month){
super(name,month);
}
public double getMonthsalary() {
return monthsalary;
}
public void setMonthsalary(double monthsalary) {
this.monthsalary = monthsalary;
}
/**
* 计算固定月薪员工的工资
* @param monthsalary
* @param month
* @return 固定月薪员工的工资
*/
public double getmonth(double monthsalary,int month){
double n=monthsalary+Employee.getSalary( month);
return n;
}
}
//时薪*小时 超过160小时,超过部分1.5工资
public class HourlyEmployee extends Employee{
private double hourlyWage;//时薪
private int hour;//总时长
public HourlyEmployee(){
}
public HourlyEmployee(String name,int month){
super(name,month);
}
public double getHourlyWage() {
return hourlyWage;
}
public void setHourlyWage(double hourlyWage) {
this.hourlyWage = hourlyWage;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
/**
* 计算时薪员工的工资
* @param hour
* @param hourlyWage
* @param month
* @return 时薪员工的工资
*/
public double gethour(int hour,double hourlyWage,int month){
double n;
if(hour>160){
n=160*hourlyWage+(hour-160)*hourlyWage*1.5+Employee.getSalary(month);
}else{
n=hour*hourlyWage+Employee.getSalary(month);
}
return n;
}
}
//销售额*提成率
public class SalesEmployee extends Employee{
private int salesVolume;//销售额
private double royalty;//提成率
public SalesEmployee(){
}
public SalesEmployee(String name,int month){
super(name,month);
}
public int getSalesVolume() {
return salesVolume;
}
public void setSalesVolume(int salesVolume) {
this.salesVolume = salesVolume;
}
public double getRoyalty() {
return royalty;
}
public void setRoyalty(double royalty) {
this.royalty = royalty;
}
/**
* 计算提成
* @param salesVolume
* @param royalty
* @return 提成
*/
public double getroyalty(int salesVolume,double royalty){
return salesVolume*royalty;
}
}
//销售额*提成+底薪
public class BasePlusSalesEmployee extends SalesEmployee{
private double baseSalary;//底薪
public BasePlusSalesEmployee(){
}
public BasePlusSalesEmployee(String name,int month){
super(name,month);
}
public double getBaseSalary() {
return baseSalary;
}
public void setBaseSalary(double baseSalary) {
this.baseSalary = baseSalary;
}
/**
* 计算销售人员的工资
* @param salesVolume
* @param royalty
* @param baseSalary
* @param month
* @return 销售人员月薪
*/
public double getroyalty(int salesVolume,double royalty,double baseSalary,int month){
return salesVolume*royalty+baseSalary+Employee.getSalary(month);
}
}
public class EmployeeTest {
public static void main(String[] args){
SalariedEmployee a=new SalariedEmployee("月薪人",7);
HourlyEmployee b=new HourlyEmployee("时薪人",10);
BasePlusSalesEmployee c=new BasePlusSalesEmployee("提成人",1);
System.out.println( a.getName()+":\n月薪"+a.getmonth(10000,a.getMonth()));
System.out.println(b.getName()+":\n月薪"+b.gethour(170,20,b.getMonth()));
System.out.println(c.getName()+":\n月薪"+c.getroyalty(100,50,1000,c.getMonth()));
}
}
运行结果:
月薪人:
月薪10100.0
时薪人:
月薪3500.0
提成人:
月薪6000.0
Java项目案例之---计算公司员工的工资(面向对象复习)的更多相关文章
- Java项目案例之--封装的实例
Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...
- Java项目案例之---常用工具类练习
常用工具类练习 1. 请根据控制台输入的特定日期格式拆分日期,如:请输入一个日期(格式如:**月**日****年),经过处理得到:****年**月**日 import java.util.Scanne ...
- Java项目案例之---登录和修改(JSP)
登录和修改(JSP) 通过案例学习jsp的常用知识点: 1.创建一个Map集合,用于存放学生信息,将学生信息存入Map中 2.通过page将需要的包导入 3.用request.getParameter ...
- Java项目案例之---加法计算器(转发和重定向)
加法计算器(转发和重定向) 运行显示: 转发 重定向 代码: index.jsp <%-- Created by IntelliJ IDEA. User: Administrator Date: ...
- Java项目案例:酒店前台客服管理系统
import java.util.Scanner; public class HelloWorld { public static void main(String[] args){ String [ ...
- Java项目案例之---定时器的使用
定时器的使用 使用定时器,在当前时间的10秒后调用方法,输出语句 import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- Java项目案例之---开灯(面向对象复习)
开灯(面向对象复习) 设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法 设计一个灯泡类(Buble),灯泡类有发亮的方法 其中有红灯泡类(RedBuble)和 ...
- 收藏基本Java项目开发的书
一.Java项目开发全程实录 第1章 进销存管理系统(Swing+SQL Server2000实现) 第2章企业内部通信系统(Swing+JavaDB实现) 第3章 企业人事管理系统( Swing+H ...
- Java学生管理系统项目案例
这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...
随机推荐
- WPF DataGrid的LoadingRow事件
<Window x:Class="DataGridExam.MainWindow" xmlns="http://schemas.microsoft.c ...
- Android中对sqlite加密--SQLCipher
原文:Android中对sqlite加密--SQLCipher android中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容,所 ...
- PHP获得指定日期所在月的第一天和最后一天
function getdays($day){ $firstday = date('Y-m-01',strtotime($day)); $lastday = date('Y-m-d',strtotim ...
- 使用VC2005编译真正的静态Qt程序 good
首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关 ...
- [机器学习]SVM原理
SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位.本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick ...
- 值得推荐的C/C++框架和库(深度好文)
[本文系外部转贴,原文地址:http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.html http://coolshell.info ...
- 一顶博士帽能带来什么——访GOOGLE公司中国区总裁李开复
在读了博士生远潇给本报的来信后,GOOGLE公司中国区总裁李开复说,有这些困惑和担心,实际上是很多博士生们在读博士之前并没有认真地想过,自己是不是能耐得住寂寞做学问,是不是能抵御来自物质世界的诱惑 ...
- RPG Maker MV游戏解包
该文章最新版本请前往:https://www.crowsong.xyz/127.html 前言 使用Petschko's RPG-Maker-MV File-Decrypter进行解包 使用Petsc ...
- ObjectForScripting 注册
c#和javascript函数的相互调用(ObjectForScripting 的类必须对 COM 可见.请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性. ...
- 用node.js(socket.io)实现数据实时推送
在做商品拍卖的时候,要求在商品的拍卖页面需要实时的更新当前商品的最高价格.实现的方式有很多,比如: 1.setInterval每隔n秒去异步拉取数据(缺点:更新不够实时) 2. AJAX轮询方式方式推 ...