Java中面向对象中员工信息管理系统

it2022-05-05  151

项目简介

这个项目是个主要是实现员工各种信息的增删改查并且在控制台设置其客户端进行操作

项目实现

首先这个项目需要一个员工基本信息类,还需要实现增删改查的功能类,最后一个main入口 设置控制台输入输出的类 话不多说上代码

Emp(员工类)

1.给员工设置属性代码如下:

/**工号*/ private int eno; /**姓名*/ private String ename; /**职位*/ private String job; /**年龄*/ private int age; /**月薪*/ private double sal; /**所在部门*/ private String dname;

2.private修饰的属性不能被其它类调用所以使用set/get方法调用属性 直接用软件自动生成所有属性的set/get方法 3.生成一个构造器把属性全部加进去代码如下:

public Emp(int eno, String ename, String job, int age, double sal, String dname) { super(); this.eno = eno; this.ename = ename; this.job = job; this.age = age; this.sal = sal; this.dname = dname; }

4.最后将toString重写一下:

@Override public String toString() { return eno + "\t" + ename + "\t" + job + "\t" + age + "\t" + sal + "\t" + dname; }

Emp(员工属性类就完成了)

EmpManager(员工方法类)

1.声明一个集合储存所以员工 用ArraryList操作,这里使用静态(static)的方式定义可以在创建对象时始终都只有一个集合

static ArrayList<Emp> list = new ArrayList<>();

2.添加员工

public void addEmp(Emp e){ list.add(e); }

3.根据员工工号查询员工信息

public Emp findByEno(int eno){ Emp emp = null; for(Emp e:list){ //判断是否找到匹配工号的员工 if(e.getEno() == eno){ emp = e; break; } } return emp; }

4.根据部门名查询员工集合

public ArrayList<Emp> findByDname(String dname){ ArrayList<Emp> emps = new ArrayList<>(); for(Emp e:list){ //查询集合中是否存在员工的部门名称跟参数部门名一致 if(dname.equals(e.getDname())){ emps.add(e); } } return emps; }

5.查询所有员工信息

public ArrayList<Emp> findAll(){ return list; }

6.根据工号删除员工

public boolean delete(int eno){ Emp emp = findByEno(eno); if(emp != null){ return list.remove(emp); } return false; }

7.根据工号修改薪资

public boolean modifySal(int eno,double sal){ Emp emp = findByEno(eno); if(emp != null){ emp.setSal(sal); return true; } return false; }

这样就完成了所有方法的设计完成了这个类

这几个方法没有什么太大难度,注意细节即可,这里提一下:

在构造方法时尽量将每个方法单独写,这样可以增强代码的复用性循环的时候用forEach(增强for循环)也可以减少代码量是代码看起来更加简洁

EmpClient(员工客户端类)

这个并不太重要,只是一个在控制台控制输入的方式,因为前期我们输入只能在控制台进行,所以只能先这样,后期在网页上可以输入,没这么复杂,以下仅供参考,这个类就是main 方法的一个入口 main方法里面代码就一排,非常的简洁。

给大家稍微讲解一下思路

首先创建EmpManager em(方法类)的对象要用的控制台输入也需要创建Scanner的对象 private EmpManager em = new EmpManager(); private Scanner sc; 创建方法的时候合理运用递归的方式可以实现方法之间的串联循环从而达到自己的目的 public void menu(){ msg("========================="); msg("====SOFTEEM员工管理系统====="); msg("====【1】员工添加==========="); msg("====【2】员工列表==========="); msg("====【3】根据工号查询员工====="); msg("====【4】根据部门名查询员工==="); msg("====【5】删除员工==========="); msg("====【6】修改员工薪资========"); msg("====【0】退出系统==========="); msg("========================="); msg("请输入操作指令:"); start(); } private void start() { sc = new Scanner(System.in); int i = sc.nextInt(); switch(i){ case 1: add(); break; case 2: list(); break; case 3: queryByEno(); break; case 4: queryByDname(); break; case 5: delete(); break; case 6: update(); break; case 0: exit(); break; default: msg("请输入正确的操作指令!!!"); break; } menu(); }

在这里可以清楚看到 menu()与start()方法之间的联动

后面就是方法与控制台连接

/***/ public void msg(Object obj){ System.out.println(obj); } /**员工添加的客户端实现*/ private void add() { msg("请输入员工信息(按以下格式:工号/姓名/职位/年龄/薪资/部门名)"); sc = new Scanner(System.in); String s = sc.nextLine(); //根据“/”截取员工信息 String[] info = s.split("/"); if(em.findByEno(Integer.parseInt(info[0])) != null){ msg("该编号的员工已存在,请重新输入"); add(); return; }else{ Emp e = new Emp(Integer.parseInt(info[0]), info[1], info[2], Integer.parseInt(info[3]), Double.parseDouble(info[4]), info[5]); em.addEmp(e); msg("添加成功"); } } /**员工列表的客户端实现*/ private void list() { msg("工号\t姓名\t职位\t年龄\t月薪\t部门名"); for (Emp e: em.findAll()) { msg(e); } } /**根据工号查询员工的客户端实现*/ private void queryByEno() { sc = new Scanner(System.in); msg("请输入需要查询的员工工号:"); int eno = sc.nextInt(); Emp e = em.findByEno(eno); if(e == null){ msg(eno+"号员工不存在,请重新输入"); queryByEno(); return; } msg("工号\t姓名\t职位\t年龄\t月薪\t部门名"); msg(e); } /**根据部门名查询员工的客户端实现*/ private void queryByDname() { sc = new Scanner(System.in); msg("请输入需要查询的部门名称:"); String dname = sc.nextLine(); ArrayList<Emp> list = em.findByDname(dname); msg("工号\t姓名\t职位\t年龄\t月薪\t部门名"); if(list.size()>0){ for (Emp e : list) { msg(e); } } } /**根据员工号删除员工的客户端实现*/ private void delete() { sc = new Scanner(System.in); msg("请输入员工的工号:"); int eno = sc.nextInt(); if(em.delete(eno)){ msg("删除成功!"); }else{ msg("删除失败!"); } } /**根据员工号修改员工薪资的客户端实现*/ private void update() { sc = new Scanner(System.in); msg("请输入员工的工号:"); int eno = sc.nextInt(); msg("请输入需要调整的薪资:"); double sal = sc.nextDouble(); if(em.modifySal(eno, sal)){ msg("修改成功!"); }else{ msg("修改失败!"); } } /**系统退出*/ private void exit() { sc = new Scanner(System.in); msg("是否确定退出?(Y/N)"); String op = sc.next(); if(op.equalsIgnoreCase("y")){ msg("谢谢使用,再见!"); System.exit(1); } }

最后在main方法中写一句即可

public static void main(String[] args) { new EmpClient().menu(); }

EmpClient (员工客户端类)就完成了,整个员工信息管理系统就做完了,这只是基础的很多漏洞的系统,只是让我们先建立起面对象对象的思维,以及语法的运用,熟练掌握了才能继续向前。

项目总结

这次这个员工管理系统让我收获很多,没想到能够在main方法中就只有一行代码就完成了这些操作,真的很神奇,老铁们一起加油学java呀 哈哈


最新回复(0)