多章案例(简单的企业人力资源管理系统)分析与实现(二)

1.系统分析

由于企业员工可以分为普通员工、部门经理和管理员三种级别,在前面我们已经定义了一个Employee类实现了各类员工的共同功能。但是各类员工既有相同的功能,也有各自特定的功能,因此,在这里可以设计三个类:Staff、Manager和Admin类分别对应三类员工,通过继承Employee类重用相关代码,并且各自实现特定功能:普通员工实现“汇报工作”功能,部门经理实现“查看工作汇报”功能,管理员实现“修改员工级别”功能和“查看员工信息”功能。
由于“汇报工作”和“查看工作汇报”模块都需要“汇报Id、汇报人姓名和汇报内容”等信息,所以可以定义一个汇报类Report。
为了代码逻辑清晰,可以新建一个保存所有数据的Data类,保存员工信息和汇报内容。

2.本次任务

(1)通过继承Employee类定义Staff类、Manager类和Admin类。
(2)定义一个汇报类Report,包含“汇报Id、汇报人Id和汇报内容”等信息。
(3)定义一个保存数据的类Data,该类包含员工数据、汇报数据以及数据的初始化方法。
(4)实现Staff类的“汇报工作”功能。
(5)实现Manager类的“查看工作汇报”功能。
(6)实现Admin类的“修改员工级别”功能和“查看员工信息”功能。
(7)修改Menu类,增加员工汇报工作、经理查看汇报、管理员修改员工级别和查看员工信息的功能调用。
(8)修改测试类StartMenu,测试各业务功能。

3.代码实现

1)Report类

package hrms.entitly;
//汇报类
public class Report{
    private int reportId;         //汇报Id
    private String reporterId;//汇报人Id
    private Sting content;     //汇报内容
    public Report(){
    }
    public Report(int reportId,String reporterId,Sting content){
        this.reportId=reportId;
        this.reporterId=reporterId;
        this.content=content;
    }
    public int getReportId(){
        return reportId;
    }
    public void setReportId(int reportId){
        this.reportId=reportId;
    }
    public int getReporterId(){
        return reporterId;
    }
    public void setReportIdString reporterId){
        this.reporterId=reporterId;
    }
    public int getContent(){
        return content;
    }
    public void setReportId(Sting content){
        this.content=content;
    }
}

2)Data类

package hrms.util;
import hrms.entitly.Admin;
import hrms.entitly.Employee;
import hrms.entitly.Manager;
import hrms.entitly.Report;
import hrms.entitly.Staff;
public class Data{
    //当前登录员工
    public static Employee currentEmployee;
    public static Staff staff=new Staff("0001","111","张三","男",1,"技术部",3000.5);       //实例化普通员工
    public static Manager manager=new Manager("0002","222","李四","男",2,"技术部",4000.5); //实例化部门经理
    public static Admin admin=new Admin("0003","333","王五","男",3,"技术部",5000.5);       //实例化管理员
    public static int reportcount=0;  //初始化汇报数目
    public static Report[] reports=new Report[1000];//声明并创建存储员工汇报内容的数组
    //将元素初始化
    public static void init(){
        for(int i=0;i<reports.length;i++){
            reports[i]=new Report();
        }
    }
}

3)Staff类

package hrms.entitly;
import hrms.util.Data;
import java.util.Scanner;
public class Staff extends Employee{
    public Staff(String empNo,String password,String empName,String sex,int empLevel,String department,double salary){
        super(empNo,password,empName,sex,empLevel,department,salary);
    }
    //汇报工作
    public void addReport(Report report){
        Data.reports[Data reportcount++]=report;
    }
}

4)Manager类

package hrms.entitly;
import hrms.util.Data;
public class Manager extends Employee{
    public Manager(String empNo,String password,String empName,String sex,int empLevel,String department,double salary){
        super(empNo,password,empName,sex,empLevel,department,salary);
    }
    //查看所有汇报
    public void displayReports(){
        System.out.println("汇报如下:");
        System.out.println("*****************************************");
        System.out.println("汇报 Id:"+"\t"+"汇报人 Id"+"\t\t"+"汇报内容");
        for(int i=0;i<Data.reportcount;i++){
            System.out.println(Data.reports[i].getReportId()+"\t"+Data.reports[i],getReporterId()+"\t\t"+Data.reports[i].getContent());
        }}
}


5)Admin类

package hrms.entitly;
import hrms.util.Data;
public class Admin extends Employee{
    public Admin(String empNo,String password,String empName,String sex,int empLevel,String department,double salary){
        super(empNo,password,empName,sex,empLevel,department,salary);
}
    //修改员工级别
    public void modifyEmployeeLevel(String empNo,int newLevel){    
        if(empNo.equals(Data.staff.getEmpNo())){
            Data.staff.setEmpLevel(newLevel);
        }else if(empNo.equals(Data.manager.getEmpNo())){
                Data.manager.setEmpLevel(newLevel);
        }else if(empNo.equals(Data.admin.getEmpNo())){
                Data.admin.setEmpLevel(newLevel);
        }
    }
    /**
    *显示员工信息
    */
    public void dispiayEmployeeInfo(){
        System.out.println("普通员工信息如下:");
        Data.staff.displayInfo();
        System.out.println("经理信息如下:");
        Data.manger.displayInfo();
        System.out.println("管理员信息如下:");
        Data.admin.displayInfo();
    }
}

6)修改Menu类

public class Menu{
Scanner input=new Scanner(System.in);
      /**
       *登陆主菜单
       */
      public void showLoginMenu(){
            System.out.println("\n\t\t\t欢迎进入企业人力资源管理系统\n");
            System.out.println("******************************************");
            System.out.println("\t\t\t1.登陆系统\n");
            System.out.println("\t\t\t2.退出系统\n");
            System.out.println("******************************************");
            System.out.println("请输入菜单项数字:");
      }
      /**
       *返回登陆菜单
       */
      private void returnLoginMenu(){
            boolean flag=true;
            do{
                  String num=input.next();
                  if(num.toUpperCase().equals("R")){
                        flag=false;
                        showLoginMenu();
                        break;
                  }else{
                        System.out.prinln("具体功能留待以后实现,请输入r/R返回登陆菜单");
                  }
            }while(flag);
      }
      /**
       *普通员工菜单
       */
      public void showStaffMenu(){
            System.out.println("人力资源管理系统=>普通员工");
            System.out.println("******************************************");
            System.out.println("\t\t\t1.汇报工作\n");
            System.out.println("\t\t\t2.查看个人信息\n");
            System.out.println("\t\t\t3.修改密码\n");
            System.out.println("\t\t\t4.查看考评信息\n");
            System.out.println("\t\t\t5.查看工资等级\n");
            System.out.println("\t\t\t6.今日工作内容\n");
            System.out.println("******************************************");
            System.out.println("请输入菜单项数字或输入r/R返回上一级菜单:");
            boolean flag=true;
            do{
                String num=input.next();
                if(num.equals("1")){
                //汇报工作
                Report report=new Report();
                report.setReportId(Data.reportcount+1);
                report.setReporertId(Data.currentEmployee.getEmpNo());
                System.out.println("请输入汇报信息:");
                String content=input.next();
                report.setContent(content);
                Data.staff.addReport(report);
                System.out.println("汇报完毕!");
                showStaffMenu();//重新显示普通员工菜单
                break;
                }else if(num.equals("2")){
                Data.staff.displayInfo();//显示个人信息
                showStaffMenu();
                break;
                }else if(num.equals("3")){
                //修改个人密码
                System.out.println("请输入新密码:");
                String newPassword=inpit.next();
                Data.staff.modifyPassword(newPassword);
                showStaffMenu();
                break;
                }else if(num.equals("4")){
                //查看考评信息
                System.out.println("本功能以后实现");
                showStaffMenu();
                break;
                }else if(num.equals("5")){
                //查看工资等级
                System.out.println("本功能以后实现");
                showStaffMenu();
                break;
                }else if(num.equals("6")){
                //今日工作内容
                System.out.println("本功能以后实现");
                showStaffMenu();
                break;
                }else if(num.equals("r")||num.equals("R")){
                flag=false;
                showLoginMenu();
                break;
                }else{
                System.out.print("输入错误,请重新输入数字:");
                }
            }while(flag);
      }
      /**
       *部门经理菜单
       */
      public void showManagerMenu(){
            System.out.println("人力资源管理系统=>部门经理");
            System.out.println("******************************************");
            System.out.println("\t\t\t1.查看员工汇报工作\n");
            System.out.println("\t\t\t2.考评员工\n");
            System.out.println("\t\t\t3.查看个人信息\n");
            System.out.println("\t\t\t4.修改密码\n");
            System.out.println("\t\t\t5.查看工资等级\n");
            System.out.println("\t\t\t6.今日工作内容\n");
            System.out.println("******************************************");
            System.out.println("请输入菜单项数字或输入r/R返回上一级菜单:");
            boolean flag=true;
            do{
                String num=input.next();
                if(num.equals("1")){
                Data.manger.displayReports();//查看员工工作汇报
                System.out.println("查看完毕!");
                showManagerMenu();//重新显示经理菜单
                break;
                }else if(num.equals("2")){
                //考评员工
                System.out.println("本功能以后实现");
                showManagerMenu();
                break;
                }else if(num.equals("3")){
                Data.manger.displayInfo();//查看个人信息
                showManagerMenu();
                break;
                }else if(num.equals("4")){
                //修改个人密码
                System.out.println("请输入新密码:");
                String newPassword=inpit.next();
                Data.manger.modifyPassword(newPassword);
                showManagerMenu();
                break;
                }else if(num.equals("5")){
                //查看工资等级
                System.out.println("本功能以后实现");
                showManagerMenu();
                break;
                }else if(num.equals("6")){
                //今日工作内容
                System.out.println("本功能以后实现");
                showManagerMenu();
                break;
                }else if(num.equals("r")||num.equals("R")){
                flag=false;
                showLoginMenu();
                break;
                }else{
                System.out.print("输入错误,请重新输入数字:");
                }
            }while(flag);
      }
      /**
       *管理员菜单
       */
      public void showAdminMenu(){
            System.out.println("人力资源管理系统=>管理员");
            System.out.println("******************************************");
            System.out.println("\t\t\t1.查看员工信息\n");
            System.out.println("\t\t\t2.修改员工级别\n");
            System.out.println("\t\t\t3.查看个人信息\n");
            System.out.println("\t\t\t4.修改密码\n");
            System.out.println("\t\t\t5.查看工资等级\n");
            System.out.println("\t\t\t6.今日工作内容\n");
            System.out.println("******************************************");
            System.out.println("请输入菜单项数字或输入r/R返回上一级菜单:");
            boolean flag=true;
            do{
                String num=input.next();
                if(num.equals("1")){
                Data.manger.displayEmployeeInfo();//查看员工信息
                showAdminMenu();
                break;
                }else if(num.equals("2")){
                //修改员工等级
                Syetem.out.println("请输入员工编号:");
                String empNo=input.next();
                Syetem.out.println("请输入员工新等级(1:普通员工,2:部门经理,3:管理员)");
                int level=input.next();
                Data.admin.modifyEmployeeLevel(empNo,level);
                Syetem.out.println("修改成功!");
                showAdminMenu();
                break;
                }else if(num.equals("3")){
                Data.admin.displayInfo();//查看个人信息
                showAdminMenu();
                break;
                }else if(num.equals("4")){
                //修改个人密码
                System.out.println("请输入新密码:");
                String newPassword=inpit.next();
                Data.admin.modifyPassword(newPassword);
                showAdminMenu();
                break;
                }else if(num.equals("5")){
                //查看工资等级
                System.out.println("本功能以后实现");
                showAdminMenu();
                break;
                }else if(num.equals("6")){
                //今日工作内容
                System.out.println("本功能以后实现");
                showAdminMenu();
                break;
                }else if(num.equals("r")||num.equals("R")){
                flag=false;
                showLoginMenu();
                break;
                }else{
                System.out.print("输入错误,请重新输入数字:");
                }
            }while(flag);
      }
}

7)修改StartMenu类

package hrms.util;
import java.util.Scanner;
public class StartMenu{
    public static void main(String[] args){
    Data.init();//数据初始化
    //实例化菜单
    Menu menu=new Menu();
    //实例化登陆主菜单
    menu.showLoginMenu();
    //循环标志位
    boolean flag=true;
    Scanner input=new Scanner(System.in);
    while(flag){
      int choice=input.next();
      //根据输入不同的选项进行不同功能操作
        switch(choice){
        case 1:System.out.println("请输入员工序号:");
            String name=input.next();
            System.out.println("请输入密码");
            String password=input.next();
            //如果是普通员工,显示普通员工菜单
            if(name.equals(staff.getEmpNo())&&password.equals(staff.getPassword())){
                Data.currentEmployee=Data.staff;
                menu.showStaffMenu();
            }
            //如果是经理,显示经理菜单
            else if(name.equals(manager.getEmpNo())&&password.equals(manager.getPassword())){
                Data.currentEmployee=Data.manager;
                menu.showManagerMenu();
            }
            //如果是管理员,显示管理员菜单
            else if(name.equals(admin.getEmpNo())&&password.equals(admin.getPassword())){
                Data.currentEmployee=Data.admin;
                menu.showAdminMenu();
            }
            else{
                System.out.println("员工编号或者密码不对,请重新输入菜单项数字:");
                menu.showLoginMenu();
            }
            break;
        case 2:flag=false;
            System.out.println("您退出了系统!");
            break;
        default:
            System.out.println("输入选项不正确,请重新输入菜单项数字:");
            menu.showLoginMenu();
            break;
        }
      if(!flag) break;
   }
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容