员工管理系统数组版

来源:互联网 发布:谷歌学术镜像 知乎 编辑:程序博客网 时间:2024/04/29 17:06

第一部分 案例描述

案例目的

学习面向对象的主要特征和基本概念,包括类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字等。

案例难度

★★★

案例覆盖技能点

1、 流程控制语句

2、 类、对象

3、 封装、继承、多态

4、 方法的重载、重写

5、 访问修饰符

6、 staticfinally

适用课程和对象

JAVA面向对象编程基础


第二部分需求和开发环境


需求说明:

员工信息的基本情况

普通员工

属性:员工编号、员工姓名、员工职务、请假天数、基本工资

普通员工工资:

在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助

基本工资+基本工资*0.1+基本工资*0.5+200

经理

属性:员工编号、员工姓名、员工职务、请假天数、基本工资

经理工资:

在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助

基本工资+基本工资*0.2+基本工资*0.5+500

董事

属性:员工编号、员工姓名、员工职务、请假天数、基本工资

董事工资:

在基本工资的基础上增加8%的工作餐,30%的岗位补助,2000元住房补助,3000元投资补助

基本工资+基本工资*0.08+基本工资*0.3+2000+3000


工资扣除部分,所有员工都一样 

无请假,基本工资全发,有请假,扣除每天平均工资 请假天数


通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100,业务流程如下

一、 启动业务选择界面
















二、 增加员工

1.增加普通员工


2.增加经理



3.增加董事长



三、 删除


四、 修改



五、查询


系统基本模块包括:



项目类汇总

代码:


Employee类

public class Employee {//成员属性private String id;private String name;private String position;private int holiday;private double salary;//构造方法public Employee(String id, String name, String position, int holiday,double salary) {super();this.id = id;this.name = name;this.position = position;this.holiday = holiday;this.salary = salary;}//工资计算方法public double sumSalary(){return salary-salary/30*holiday;}//显示详细信息public void display(){}//get,set方法public String getID() {return id;}public void setID(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}public int getHoliday() {return holiday;}public void setHoliday(int holiday) {this.holiday = holiday;}public double getSalary() {return salary-salary/30*holiday;}//public void setSalary(double salary) {this.salary = salary;}}

CommonEmployee类

public class CommonEmployee extends Employee {private double commonSalary;public CommonEmployee(String id, String name, String position, int holiday,double salary) {super(id, name, position, holiday, salary);commonSalary=0;}@Overridepublic void display() {System.out.println("编号:"+super.getID()+",姓名:"+super.getName()+",职位:"+super.getPosition()+",请假天数:"+super.getHoliday()+",工资:"+sumSalary());}@Override/** * 普通员工工资计算方法 * 普通员工工资: * 在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助     * 基本工资+基本工资*0.1+基本工资*0.5+200 */public double sumSalary() {double baseSalary = super.getSalary();commonSalary = baseSalary + baseSalary*0.1 + baseSalary*0.5 + 200;return commonSalary;}}

Director类

public class Director extends Employee {private double directorCalary;public Director(String id, String name, String position, int holiday,double salary) {super(id, name, position, holiday, salary);directorCalary=0;}@Overridepublic void display() {System.out.println("编号:"+super.getID()+",姓名:"+super.getName()+",职位:"+super.getPosition()+",请假天数:"+super.getHoliday()+",工资:"+sumSalary());}@Override/** * 董事工资: * 在基本工资的基础上增加8%的工作餐,30%的岗位补助,2000元住房补助,3000元投资补助 * 基本工资+基本工资*0.08+基本工资*0.3+2000+3000 */public double sumSalary() {double baseSalary = super.getSalary();directorCalary = baseSalary + baseSalary*0.08 + baseSalary*0.3 + 2000 + 3000;return directorCalary;}}

Manager类

public class Manager extends Employee {private double managerCalary;public Manager(String id, String name, String position, int holiday,double salary) {super(id, name, position, holiday, salary);managerCalary=0;}@Overridepublic void display() {System.out.println("编号:"+super.getID()+",姓名:"+super.getName()+",职位:"+super.getPosition()+",请假天数:"+super.getHoliday()+",工资:"+sumSalary());}@Override/** * 经理工资: * 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助 * 基本工资+基本工资*0.2+基本工资*0.5+500 */public double sumSalary() {double baseSalary = super.getSalary();managerCalary = baseSalary + baseSalary*0.2 + baseSalary*0.5 + 500;return managerCalary;}}

TestEMD类

import java.util.Scanner;public class TestEMD {static Scanner sc = new Scanner(System.in);static Employee[] ems = new Employee[100];static int i = 0;static int maxEmployee = -1;public static void main(String[] args) {start();}/** * start */public static void start(){System.out.println("丨-----------丨");System.out.println("丨---1.增加 ---丨");System.out.println("丨---2.删除 ---丨");System.out.println("丨---3.修改 ---丨");System.out.println("丨---4.查找 ---丨");System.out.println("丨---0.退出 ---丨");System.out.println("丨-----------丨");System.out.println("请选择业务:");int choose = sc.nextInt();switch (choose) {case 1://增加addEmployee();break;case 2://删除delEmployee();break;case 3://修改updateEmployee();break;case 4://查找queryEmployee();break;case 0://退出sc.close();System.exit(0);System.out.println("已退出程序!");break;default:System.out.println("请输入正确的格式!");start();break;}}/** * 添加员工 */public static void addEmployee(){System.out.println("请输入员工编号:");String id = sc.next();System.out.println("请输入员工姓名:");String name = sc.next();System.out.println("请输入员工职务(普通员工,经理,董事长):");String position = sc.next();System.out.println("请输入请假天数:");int holiday = sc.nextInt();System.out.println("请输入员工基本工资:");double salary = sc.nextDouble();switch (position) {case "普通员工":ems[++maxEmployee] = new CommonEmployee(id, name, position, holiday, salary);ems[maxEmployee].display();break;case "经理":ems[++maxEmployee] = new Manager(id, name, position, holiday, salary);ems[maxEmployee].display();break;case "董事长":ems[++maxEmployee] = new Director(id, name, position, holiday, salary);ems[maxEmployee].display();break;default:break;}System.out.println("已存记录:");for (int i = 0;i <= maxEmployee;i++) {ems[i].display();}start();}/** * 删除员工 */private static void delEmployee() {System.out.println("请输入删除员工姓名:");String name = sc.next();for (int i = 0; i <= maxEmployee; i++) {if(name.equals(ems[i].getName())){ems[i].display();System.out.println("确认删除?(1.是2.否)");int n = sc.nextInt();if(n == 1){for(int j=i;j<maxEmployee;j++){ems[j]=ems[j+1];}maxEmployee--;System.out.println("删除成功");start();}else{start();}}}System.out.println("无此员工");start();}/** * 修改员工 */private static void updateEmployee() {System.out.println("请输入修改员工姓名:");String name = sc.next();for (int i = 0; i <= maxEmployee; i++) {if(name.equals(ems[i].getName())){ems[i].display();System.out.println("请重新输入:");System.out.println("请输入员工编号:");String id = sc.next();System.out.println("请输入员工职务(普通员工,经理,董事长):");String position = sc.next();System.out.println("请输入请假天数:");int holiday = sc.nextInt();System.out.println("请输入员工基本工资:");double salary = sc.nextDouble();switch (position) {case "普通员工":ems[i] = new CommonEmployee(id, name, position, holiday, salary);break;case "经理":ems[i] = new Manager(id, name, position, holiday, salary);break;case "董事长":ems[i] = new Director(id, name, position, holiday, salary);break;default:System.out.println("职位输入错误,退出程序");break;}ems[i].display();System.out.println("修改成功!");start();}}}/** * 查询员工 */private static void queryEmployee() {System.out.println("请输入查询员工姓名:");String name = sc.next();for (int i = 0; i <= maxEmployee; i++) {if(name.equals(ems[i].getName())){ems[i].display();start();}}System.out.println("无此员工");start();}}




0 0