题目:

完成一个企业人事管理系统,该系统中包含两个实体类:员工(Emp),部门(Dept),两个类中分别包含以下属性:
员工(工号,姓名,性别,职位,年龄,月薪,部门)
部门(编号,部门名,部门介绍,分机号)
要求实现以下功能:
完成部门的创建,添加3个部门向各个部门中添加若干员工查询所有的员工信息和所在的部门信息根据员工工号显示员工信息修改指定工号员工的薪资根据部门号查询出门中的所有员工
1、根据类的特征给类进行属性的添加
2、根据类的行为,处理增删改查相关的操作需要先定义一个接口,然后根据接口的内容指定抽象方法
3、创建操作类(DAO)相关的类来进行数据和逻辑的处理还需要使用集合进行数据的存储,修改,删除,查询操作重点:集合只能在一个类中,不能到处创建集合,要保证所有的方法都操作的是菜单栏中的集合
4、对每一个方法要进行充分的测试,每写一个方法就要测试功能是否完善

员工实体类:

package cn.java.dto;/*** 员工类*/
public class Emp {//工号private String eid;//姓名private String name;//性别private String sex;//职位private String job;//年龄private int age;//月薪private double salary;//部门private Dept dept;public Emp() {}public Emp(String eid, String name, String sex, String job, int age, double salary, Dept dept) {this.eid = eid;this.name = name;this.sex = sex;this.job = job;this.age = age;this.salary = salary;this.dept = dept;}public String getEid() {return eid;}public void setEid(String eid) {this.eid = eid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public Dept getDept() {return dept;}public void setDept(Dept dept) {this.dept = dept;}@Overridepublic String toString() {return "Emp{" +"eid='" + eid + '\'' +", name='" + name + '\'' +", sex='" + sex + '\'' +", job='" + job + '\'' +", age=" + age +", dept=" + dept +'}';}
}

部门实体类

package cn.java.dto;/*** 部门类*/
public class Dept {//编号private String did;//部门名private String dname;//部门介绍private String introduce;//分机号private String tel;public Dept() {}public Dept(String did, String dname, String introduce, String tel) {this.did = did;this.dname = dname;this.introduce = introduce;this.tel = tel;}public String getDid() {return did;}public void setDid(String did) {this.did = did;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getIntroduce() {return introduce;}public void setIntroduce(String introduce) {this.introduce = introduce;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}@Overridepublic String toString() {return "部门编号 = '" + did + '\'' +", 部门名称 = '" + dname + '\'' +", 部门简介 = '" + introduce + '\'' +", 部门分机号 = '" + tel + '\'' +'}';}
}

接口

package cn.java.dao;public interface Base<T> {public T add(Object o);public int delete(Object o);public void update(Object o);public void find();public void findAll(Object o);
}

员工实现类:

package cn.java.dao.impl;import cn.java.dao.Base;
import cn.java.dto.Dept;
import cn.java.dto.Emp;import java.util.ArrayList;
import java.util.Scanner;/*** 员工类的操作类*/
public class EmpDao implements Base<Emp> {Scanner scanner = new Scanner(System.in);/*** 添加员工信息* @param o* @return*/@Overridepublic Emp add(Object o) {Object[] objects = (Object[]) o;ArrayList<Emp> emps = (ArrayList<Emp>) objects[0];//员工集合ArrayList<Dept> depts = (ArrayList<Dept>) objects[1];//部门集合获取String eid = "";for(;;){System.out.println("请输入员工编号:");eid = scanner.next();boolean flag = true;for (int i = 0; i < emps.size(); i++){if(emps.get(i).getEid().equals(eid)){System.out.println("员工工号不能重复");flag = false;}}if(flag){break;}else{System.out.println("请重新输入");}}System.out.println("请输入员工姓名:");String name = scanner.next();String sex = "";for (;;){System.out.println("请输入员工性别(1、男 2、女):");int num = scanner.nextInt();if(num == 1){sex = "男";break;}else if(num == 2){sex = "女";break;}else{System.out.println("请选择你正确的性别");}}System.out.println("请输入员工职业:");String job = scanner.next();System.out.println("请输入员工年龄:");int age = scanner.nextInt();System.out.println("请输入员工月薪:");double salary = scanner.nextDouble();System.out.println("序号\t编号\t名称\t");for(int i = 0; i < depts.size(); i++){System.out.println((i + 1)+ "\t" + depts.get(i).getDid()+ "\t" + depts.get(i).getDname());}System.out.println("----------------------------------");Dept dept = null;for (;;){System.out.println("请输入员工部门:");int index = scanner.nextInt();if(index >= 1 && index <= depts.size()){dept = depts.get(index - 1);break;}}Emp emp = new Emp(eid,name,sex,job,age,salary,dept);return emp;}/*** 删除员工* @param o* @return*/@Overridepublic int delete(Object o) {//将传过来的部门信息进行强制转换ArrayList<Emp> emps = (ArrayList<Emp>)o;int index = -1;//将所有的员工信息获取到System.out.println("请问你要删除的员工的工号是哪个:");String eid = scanner.next();for(int i = 0; i < emps.size(); i++){if(eid.equals(emps.get(i).getEid())){index = i;}}return index;}/*** 修改员工信息* @param o*/@Overridepublic void update(Object o) {Object[] arr = (Object[]) o;ArrayList<Emp> emps = (ArrayList<Emp>)arr[0];ArrayList<Dept> depts = (ArrayList<Dept>)arr[1];System.out.println("请输入你要修改的员工的编号:");String eid = scanner.next();boolean flag = false;int index = -1;for (int i = 0; i < emps.size(); i++){if(eid.equals(emps.get(i).getEid())){flag = true;index = i;}}if(flag){System.out.println("请输入你要修改的员工职位:");emps.get(index).setJob(scanner.next());System.out.println("请输入你要修改的员工年龄:");emps.get(index).setAge(scanner.nextInt());for(int i = 0; i < depts.size(); i++){System.out.println(depts.get(i));}System.out.println("请输入你要修改的员工部门的id:");String did = scanner.next();for(int i = 0; i < depts.size(); i++){if(did.equals(depts.get(i).getDid())){emps.get(index).setDept(depts.get(i));}}}else{System.out.println("你输入的员工信息是错误的,请重新输入");update(o);}}@Overridepublic void find() {}/*** 查询所有的员工* @param o*/@Overridepublic void findAll(Object o) {ArrayList<Emp> emps = (ArrayList<Emp>)o;//遍历所有的员工信息for (int i = 0; i < emps.size(); i++){System.out.println(emps.get(i));}}/*** 修改员工工资* @param emps*/public void updateByEid(ArrayList<Emp> emps) {System.out.println("请输入你要修改的员工的工号:");String eid = scanner.next();for(int i = 0; i < emps.size(); i++){if (eid.equals(emps.get(i).getEid())) {System.out.println("工号:" + emps.get(i).getEid() + "\t"+ "姓名:" + emps.get(i).getName() + "\t"+ "工资:" + emps.get(i).getSalary() + "元");System.out.println("请问你要将其工资修改为多少?");double salary = scanner.nextDouble();emps.get(i).setSalary(salary);System.out.println("修改之后的员工薪资为");System.out.println("工号:" + emps.get(i).getEid() + "\t"+ "姓名:" + emps.get(i).getName() + "\t"+ "工资:" + emps.get(i).getSalary() + "元");}}}/*** 根据部门名称来查询员工* @param emps*/public void findByDname(ArrayList<Emp> emps) {for(int i = 0; i < emps.size(); i++){System.out.println((i + 1) + "\t"+emps.get(i).getDept().getDname());}System.out.println("请输入你要查询的部门:");String dname = scanner.next();for(int i = 0; i < emps.size(); i++){if(dname.equals(emps.get(i).getDept().getDname())){System.out.println(emps.get(i));}}}/*** 根据员工id查询员工信息* @param emps*/public void findByEid(ArrayList<Emp> emps) {System.out.println("请输入你要查询的员工的工号:");String eid = scanner.next();for(int i = 0; i < emps.size(); i++){if(eid.equals(emps.get(i).getEid())){System.out.println(emps.get(i));}}}
}

部门实现类

package cn.java.dao.impl;import cn.java.dao.Base;
import cn.java.dto.Dept;import java.util.ArrayList;
import java.util.Scanner;/*** 部门类的操作类*/
public class DeptDao implementsBase<Dept> {Scanner scanner = new Scanner(System.in);/*** 添加部门信息* @param o* @return*/@Overridepublic Dept add(Object o) {ArrayList<Dept> depts = (ArrayList<Dept>)o;findAll(o);System.out.println("请输入部门编号:");String did = "";for(;;){did = scanner.next();boolean flag = true;for (int i = 0; i < depts.size(); i++){if(depts.get(i).getDid().equals(did)){System.out.println("部门编号不能重复");flag = false;}}if(flag){break;}else{System.out.println("请重新输入");}}System.out.println("请输入部门名称:");String dname = "";for(;;){dname = scanner.next();boolean flag = true;for (int i = 0; i < depts.size(); i++){if(depts.get(i).getDname().equals(dname)){System.out.println("部门名称不能重复");flag = false;}}if(flag){break;}else{System.out.println("请重新输入");}}System.out.println("请输入部门介绍:");String introduce = scanner.next();System.out.println("请输入部门分机号:");String tel = scanner.next();Dept dept = new Dept(did,dname,introduce,tel);return dept;}/*** 删除部门信息* 删除之前需要先确定部门中是否有员工 如果还有员工,就不能删除部门信息** 1、查询部门中是否还有员工,如果还有员工就将员工信息或者员工信息删除* 2、如果部门中还有员工,但是删除部门信息之后,员工信息的部门一栏就没有了*    更改所有没有部门员工的部门信息* @param o*/@Overridepublic int delete(Object o) {//将传过来的部门信息进行强制转换ArrayList<Dept> depts = (ArrayList<Dept>)o;int index = -1;//将所有的部门信息获取到for (int i= 0; i < depts.size(); i++){System.out.println(depts.get(i).getDname());}System.out.println("请问你要删除的部门信息是哪个:");String dname = scanner.next();for(int i = 0; i < depts.size(); i++){if(dname.equals(depts.get(i).getDname())){index = i;}}return index;}/*** 修改部门的信息* @param o*/@Overridepublic void update(Object o) {ArrayList<Dept> depts = (ArrayList<Dept>)o;System.out.println("以下是所有的部门相关信息:");//遍历所有的部门信息findAll(o);System.out.println("请输入你要修改的部门的编号:");String did = scanner.next();boolean flag = false;int index = -1;for (int i = 0; i < depts.size(); i++){if(did.equals(depts.get(i).getDid())){flag = true;index = i;}}if(flag){System.out.println("请输入你要修改的部门名称:");depts.get(index).setDname(scanner.next());System.out.println("请输入你要修改的部门介绍:");depts.get(index).setIntroduce(scanner.next());System.out.println("请输入你要修改的部门分机号:");depts.get(index).setTel(scanner.next());}else{System.out.println("你输入的部门信息是错误的,请重新输入");update(o);}}@Overridepublic void find() {}/*** 查询所有的部门* @param o*/@Overridepublic void findAll(Object o) {ArrayList<Dept> depts = (ArrayList<Dept>)o;//遍历所有的部门信息for (int i = 0; i < depts.size(); i++){System.out.println(depts.get(i));}}}

菜单类

package cn.java.testDept;import cn.java.dao.impl.DeptDao;
import cn.java.dao.impl.EmpDao;
import cn.java.dto.Dept;
import cn.java.dto.Emp;import java.util.ArrayList;
import java.util.Scanner;/*** 菜单类* 数据相关的信息放在菜单类中*/
public class Menu {ArrayList<Emp> emps = new ArrayList<Emp>();ArrayList<Dept> depts = new ArrayList<Dept>();DeptDao deptDao = new DeptDao();EmpDao empDao = new EmpDao();Scanner scanner = new Scanner(System.in);/*** 主菜单*/public void menu(){System.out.println("请输入你要执行的操作(1、部门 2、员工 0、退出):");int num = scanner.nextInt();switch (num){case 1:deptMenu();break;case 2:empMenu();break;case 0:System.exit(0);break;default:System.out.println("输入指令错误请重新输入");menu();break;}}/*** 部门菜单*/public void deptMenu(){System.out.println("--------------------------------------------");System.out.println("1、添加部门信息");System.out.println("2、修改部门信息");System.out.println("3、查询所有的部门");System.out.println("4、删除部门");System.out.println("5、回到上一级菜单");System.out.println("请输入你对部门的操作:");int num = scanner.nextInt();switch (num){case 1:depts.add(deptDao.add(depts));deptMenu();break;case 2:deptDao.update(depts);deptMenu();break;case 3:deptDao.findAll(depts);deptMenu();break;case 4:try {int index = deptDao.delete(depts);depts.remove(index);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("没有找到你要删除的部门");deptMenu();}deptMenu();break;case 5:menu();break;default:System.out.println("输入指令有误请重新输入");deptMenu();break;}}/*** 员工菜单*/public void empMenu(){System.out.println("--------------------------------------------");System.out.println("1、添加员工信息");System.out.println("2、修改员工信息");//修改 职位 年龄 部门 不修改薪资System.out.println("3、查询所有的员工");//除了 薪资System.out.println("4、根据工号删除员工信息");System.out.println("5、根据工号修改员工工资");System.out.println("6、根据部门查询所有的员工");System.out.println("7、根据工号查询员工信息");System.out.println("8、回到上一级菜单");System.out.println("请输入你对员工的操作:");int num = scanner.nextInt();switch (num){case 1://使用数组存储两个集合,并且将数组以对象的形式传到参数中去Object[] objects = {emps,depts};emps.add(empDao.add(objects));empMenu();break;case 2:Object[] object = {emps,depts};empDao.update(object);empMenu();break;case 3:empDao.findAll(emps);empMenu();break;case 4:try {int index = empDao.delete(emps);emps.remove(index);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("没有找到你要删除的员工工号");deptMenu();}empMenu();break;case 5:empDao.updateByEid(emps);empMenu();break;case 6:empDao.findByDname(emps);empMenu();break;case 7:empDao.findByEid(emps);empMenu();break;case 8:menu();break;default:break;}}
}

测试类

package cn.java.testDept;import java.util.HashMap;
import java.util.LinkedHashMap;public class Test {public static void main(String[] args) {Menu menu=new Menu();menu.menu();}
}

Java面向对象练习题 企业人事管理系统相关推荐

  1. ssm基于Java的微小企业人事管理系统的设计与实现毕业设计源码231012

    ssm微小企业人事管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时 ...

  2. java计算机毕业设计企业人事管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计企业人事管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计企业人事管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...

  3. (附源码)ssm+mysql+基于Java的微小企业人事管理系统的设计与实现 毕业设计231012

    ssm微小企业人事管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时 ...

  4. ssm+mysql+基于Java的微小企业人事管理系统的设计与实现 毕业设计-附源码231012

    ssm微小企业人事管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时 ...

  5. java企业人事管理系统源码_基于Java+SSH的企业人事管理系统

    需求分析 基于Spring, Struts2, Hibernate,Java 实现一个企业人事管理系统, 实现 权限管理.人事管理.考勤管理.数据统计等.主要功能为签到.请假.离岗及数据汇总的功能 本 ...

  6. 【附源码】Java计算机毕业设计企业人事管理系统(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. 企业管理系统java web_JavaWeb 基于 web的 企业人事管理系统 Jsp/Servlet 242万源代码下载- www.pudn.com...

    文件名称: JavaWeb下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 8310 KB 上传时间: 2015-07-16 下载次数: 0 提 供 者: 汪伟棋 ...

  8. Java项目实战(企业人事管理系统)-李兴华-专题视频课程

    Java项目实战(企业人事管理系统)-7733人已学习 课程介绍         本课程主要为Java项目开发课程,在整体课程之中主要以一个实际的雇员信息管理项目为例,讲解了企业人事系统的基础开发,在 ...

  9. 计算机毕业设计Java企业人事管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java企业人事管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java企业人事管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. NSSet所有API学习。
  2. python工程师薪资坑吗-python能到什么程度
  3. k8s单节点部署(master ,node部分)
  4. js 递归查询所有的叶子结点_json树递归js查询json父子节点
  5. C++STL与泛型编程(3)容器之分类与测试
  6. 【Java】不要直接使用引用未判空的对象
  7. 华为车规芯片麒麟990A架构曝光
  8. HTML设置单边圆角,如何在html中做圆角矩形和 只有右边的分隔线
  9. 贪心算法及几个常用的例题
  10. html渲染自动保存图片,3dmax设置渲染完自动保存图片的方法
  11. 那款软件可以测试平板电脑性能,性能测试和应用体验
  12. IDEA 代码分析工具
  13. Docker实现ElasticSearch集群搭建
  14. 项目管理包括哪些内容
  15. 【CPU占用高】software_reporter_tool.exe
  16. 优雅使用Jsdelivr/CDN加速博客访问速度
  17. 时间序列平稳性检验—R语言KPSS检验
  18. 微信小程序开发手记1.0
  19. python3 file_Python3-file
  20. 用.bat文件多开微信及打开固定浏览器浏览固定页面 开机自启

热门文章

  1. 交换机的正确连接方式
  2. c4d物体自发光_C4D怎么绘制发光小球并渲染GI?
  3. 操作系统|DMA控制方式与中断控制方式/通道控制方式的区别
  4. SparkStreaming 系列(二)kafka与Streaming集成direct流实战---多流集群高并发场景代码演示
  5. 四、FFmpeg使用---FFmpeg的编译
  6. 只想发泄一下!!很气愤!!也许是很气愤!!!!!
  7. 罗振宇新书被“喷”,网红打广告是否要讲明利益相关?
  8. hyengine - 面向移动端的高性能通用编译/解释引擎
  9. 一周热图|孙燕姿演绎全新TVC;谢霆锋助阵特步;苗苗成为自然堂女士护肤代言人...
  10. 观看慕课老师milanlover视频Servlet+手工编写Servlet+用Eclipse编写Servlet+Servlet执行流程和生命周期