工资管理系统(附源码,直接复制就可以跑起来)

分享一个Java Application的工资系统。

运行界面如下:

其他分类专栏也有一些其他的Java Web系统

点击分类专栏介绍查看

 直接创建如下的5个Java类文件。

1.项目工程

2.CommonEmployee类

package study;



import java.util.*;


public class TestEMD {
 
 /**
  * len代表数组的当前下标
  */
 static int len = -1;
 static Employee[] emp = new Employee[100];
 static Scanner sc = new Scanner(System.in);
 
 /**
  * 增加新雇员
  */
 public void addEmployee() {
  Employee em = null;
  System.out.println("---增加员工---");
 
  System.out.print("请输入员工编号:");
  String id = sc.next();
  System.out.print("请输入员工姓名:");
  String name = sc.next();
 
  System.out.print("请输入员工职务(员工、经理、懂事):");
  String job = sc.next();  
  System.out.print("请输入员工请假天数:");
  int holiday = sc.nextInt();
 
  System.out.print("请输入员工基本工资:");
  double salary = sc.nextDouble();
 
  //在此作一下逻辑判断,根据job的不同,创建不同的Employee子类
  if(job.equals("员工")) {
   em = new CommonEmployee();
  } else if(job.equals("经理")) {
   em = new ManagerEmployee();
  } else if(job.equals("懂事")) {
   em = new DirectorEmployee();
  } else {
   System.out.println("输入不正确!");
  }
 
  em.setID(id);  
  em.setName(name);  
  em.setJob(job);  
  em.setHoliday(holiday);  
  em.setSalary(salary);
  //len先加1后使用,变为emp[0]
  emp[++len] = em;
  printEmployee(emp[len]);
  System.out.println("添加成功!");
 }
 
 /**
  * 删除员工
  */
 public void deleteEmployee() {
  System.out.println("------删除员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for(int i=0; i<=len; i++) {
   //若查找成功,则把emp[i]数组后面的指针往前移一位,覆盖掉当前的指向对象
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    for(int j=i; j<=len; j++) {
     emp[j] = emp[j+1];
    }
    //前移后,最后一位置空,len--
    emp[len] = null;
    len--;
    System.out.println("删除成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   deleteEmployee();
  }
 }
 /**
  * 修改雇员信息
  * @param args
  * @return 
  */
 public void updateEmployee() {
  System.out.println("------修改员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for(int i=0; i<=len; i++) {
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    System.out.println("---请按照提示输入修改信息---");
    System.out.print("请输入员工编号:");
    emp[i].setID(sc.next());
    System.out.print("请输入员工姓名:");
    emp[i].setName(sc.next());
    System.out.print("请输入员工职务(员工、经理、懂事):");
    emp[i].setJob(sc.next());
    System.out.print("请输入员工请假天数:");
    emp[i].setHoliday(sc.nextInt());
    System.out.print("请输入员工基本工资:");
    emp[i].setSalary(sc.nextDouble());
    //修改完成后打印一下
    printEmployee(emp[i]);
    System.out.println("修改成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   updateEmployee();
  }
 }
 /**
  * 根据姓名查找雇员信息
  * @param args
  */
 public void findEmployee() {
  System.out.println("------查找员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for( int i=0; i<=len; i++) {
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    System.out.println("查找成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   findEmployee();
  }
 }
 
 /**
  * 打印雇员信息
  * @param args
  */
 public void printEmployee(Employee em) {  
  System.out.print(" 编号: " + em.getID());
  System.out.print(" 姓名: " + em.getName());
  System.out.print(" 职务: " + em.getJob());
  System.out.print(" 请假天数 : " + em.getHoliday());
  //参数:1.基本工资 2.请假天数
  double sum = em.sunSalary(em.getSalary(), em.getHoliday());
  System.out.println(" 工资:" + sum);
 }
 
 public static void main(String[] args) {
 
  TestEMD te = new TestEMD();
 
  //开始界面

  System.out.println("|-----1. 增加 -----|");
  System.out.println("|-----2. 删除 -----|");
  System.out.println("|-----3. 修改 -----|");
  System.out.println("|-----4. 查询 -----|");
  System.out.println("|-----0. 退出 -----|");

 
  //业务选择
  label : while(true) {
   System.out.println("请选择业务:");
   int select = sc.nextInt();
   switch (select) {
   case 1: //添加新雇员
    te.addEmployee();
    break;
   case 2: //删除雇员
    te.deleteEmployee();
    break;
   case 3: //修改雇员信息
    te.updateEmployee();
    break;
   case 4: //根据姓名查找雇员信息
    te.findEmployee();
    break;
   case 0: //退出
    System.out.println("退出成功!");
    break label;
 
   default:
    System.out.println("您输入的数字不正确!");
    break;
   }
  }
 }
 
}

3.DirectorEmployee类

package study;

public class DirectorEmployee extends Employee {
	 
	 /**
	  * 经理工资
	  * 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
	  * @param 工资
	  * @param 请假天数
	  */
	 @Override
	 public double sunSalary(double salary, int holiday) {
	  double sum = salary + salary*0.2 + salary*0.5 + 500;
	  return sum - sum/30 * holiday;
	 }
	 
	}

4.Employee类

package study;

public class Employee {
	 
	 /**
	  * 成员属性:ID、姓名、职务、请假天数、基本工资
	  */
	 private String ID;
	 private String name;
	 private String job;
	 private int holiday;
	 private double salary;
	 
	 /**
	  * 计算工资
	  */
	 public double sunSalary(double salary, int holiday) {
	  return salary - (salary/30) * holiday;
	 }
	 
	 /**
	  * get和set方法
	  */
	 public String getID() {
	  return ID;
	 }
	 
	 public void setID(String iD) {
	  ID = iD;
	 }
	 
	 public String getName() {
	  return name;
	 }
	 
	 public void setName(String name) {
	  this.name = name;
	 }
	 
	 public String getJob() {
	  return job;
	 }
	 
	 public void setJob(String job) {
	  this.job = job;
	 }
	 
	 public int getHoliday() {
	  return holiday;
	 }
	 
	 public void setHoliday(int holiday) {
	  this.holiday = holiday;
	 }
	 
	 public double getSalary() {
	  return salary;
	 }
	 
	 public void setSalary(double salary) {
	  this.salary = salary;
	 }
	 
	 /**
	  * toString()方法
	  */
	 public String toString() {
	  return "编号:" + ID + ", 姓名:" + name + ", 职务" + job
	    + ", 请假天数:" + holiday + ", 工资:" + salary;
	 }
	 
	}

5.ManagerEmployee类

package study;

public class ManagerEmployee extends Employee {
	 
	 /**
	  * 经理工资
	  * 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
	  * @param 工资
	  * @param 请假天数
	  */
	 @Override
	 public double sunSalary(double salary, int holiday) {
	  double sum = salary + salary*0.2 + salary*0.5 + 500;
	  return sum - sum/30 * holiday;
	 }
	 
	}

6.TestEMD类(main class)

package study;



import java.util.*;


public class TestEMD {
 
 /**
  * len代表数组的当前下标
  */
 static int len = -1;
 static Employee[] emp = new Employee[100];
 static Scanner sc = new Scanner(System.in);
 
 /**
  * 增加新雇员
  */
 public void addEmployee() {
  Employee em = null;
  System.out.println("---增加员工---");
 
  System.out.print("请输入员工编号:");
  String id = sc.next();
  System.out.print("请输入员工姓名:");
  String name = sc.next();
 
  System.out.print("请输入员工职务(员工、经理、懂事):");
  String job = sc.next();  
  System.out.print("请输入员工请假天数:");
  int holiday = sc.nextInt();
 
  System.out.print("请输入员工基本工资:");
  double salary = sc.nextDouble();
 
  //在此作一下逻辑判断,根据job的不同,创建不同的Employee子类
  if(job.equals("员工")) {
   em = new CommonEmployee();
  } else if(job.equals("经理")) {
   em = new ManagerEmployee();
  } else if(job.equals("懂事")) {
   em = new DirectorEmployee();
  } else {
   System.out.println("输入不正确!");
  }
 
  em.setID(id);  
  em.setName(name);  
  em.setJob(job);  
  em.setHoliday(holiday);  
  em.setSalary(salary);
  //len先加1后使用,变为emp[0]
  emp[++len] = em;
  printEmployee(emp[len]);
  System.out.println("添加成功!");
 }
 
 /**
  * 删除员工
  */
 public void deleteEmployee() {
  System.out.println("------删除员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for(int i=0; i<=len; i++) {
   //若查找成功,则把emp[i]数组后面的指针往前移一位,覆盖掉当前的指向对象
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    for(int j=i; j<=len; j++) {
     emp[j] = emp[j+1];
    }
    //前移后,最后一位置空,len--
    emp[len] = null;
    len--;
    System.out.println("删除成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   deleteEmployee();
  }
 }
 /**
  * 修改雇员信息
  * @param args
  * @return 
  */
 public void updateEmployee() {
  System.out.println("------修改员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for(int i=0; i<=len; i++) {
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    System.out.println("---请按照提示输入修改信息---");
    System.out.print("请输入员工编号:");
    emp[i].setID(sc.next());
    System.out.print("请输入员工姓名:");
    emp[i].setName(sc.next());
    System.out.print("请输入员工职务(员工、经理、懂事):");
    emp[i].setJob(sc.next());
    System.out.print("请输入员工请假天数:");
    emp[i].setHoliday(sc.nextInt());
    System.out.print("请输入员工基本工资:");
    emp[i].setSalary(sc.nextDouble());
    //修改完成后打印一下
    printEmployee(emp[i]);
    System.out.println("修改成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   updateEmployee();
  }
 }
 /**
  * 根据姓名查找雇员信息
  * @param args
  */
 public void findEmployee() {
  System.out.println("------查找员工------");
  System.out.println("---请输入员工姓名:---");
  //设置一个boolean类型的flg标志,若查找不到则为false
  boolean flg = false;
  String name = sc.next();
  for( int i=0; i<=len; i++) {
   if(emp[i].getName().equals(name)) {
    printEmployee(emp[i]);
    System.out.println("查找成功!");
    flg = true;
    break;
   }   
  }
  if(!flg) {
   System.out.println("查无此人,请重新输入:");
   findEmployee();
  }
 }
 
 /**
  * 打印雇员信息
  * @param args
  */
 public void printEmployee(Employee em) {  
  System.out.print(" 编号: " + em.getID());
  System.out.print(" 姓名: " + em.getName());
  System.out.print(" 职务: " + em.getJob());
  System.out.print(" 请假天数 : " + em.getHoliday());
  //参数:1.基本工资 2.请假天数
  double sum = em.sunSalary(em.getSalary(), em.getHoliday());
  System.out.println(" 工资:" + sum);
 }
 
 public static void main(String[] args) {
 
  TestEMD te = new TestEMD();
 
  //开始界面

  System.out.println("|-----1. 增加 -----|");
  System.out.println("|-----2. 删除 -----|");
  System.out.println("|-----3. 修改 -----|");
  System.out.println("|-----4. 查询 -----|");
  System.out.println("|-----0. 退出 -----|");

 
  //业务选择
  label : while(true) {
   System.out.println("请选择业务:");
   int select = sc.nextInt();
   switch (select) {
   case 1: //添加新雇员
    te.addEmployee();
    break;
   case 2: //删除雇员
    te.deleteEmployee();
    break;
   case 3: //修改雇员信息
    te.updateEmployee();
    break;
   case 4: //根据姓名查找雇员信息
    te.findEmployee();
    break;
   case 0: //退出
    System.out.println("退出成功!");
    break label;
 
   default:
    System.out.println("您输入的数字不正确!");
    break;
   }
  }
 }
 
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那条学长V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值