简单的Java类在实际开发中都是根据其数据表的定义来实现的,在项目开发中有着无可替代的作用。
下面给出数据中字段的名称及意义如下:
-
部门表(dept):部门编号(deptno)、部门名称(dname)、部门位置(loc)
-
雇员表(emp):雇员编号(empno)、姓名(ename)、职位(job)、工资(sal)、佣金(comm)、领导编号(mgr)、部门编号(deptno)
在本程序中还存在以下引用关系定义:
-
一个雇员属于一个部门,应该在雇员里面保存部门信息,所以在Emp类定义了一个dept属性,如果有部门则设置一个Dept类的实例化对象,否则设置为null
-
一个部门有多个雇员,如果描述多这个概念应该是使用对象数组来完成
-
可以根据一个雇员查询他所对应的领导信息和部门信息
-
可以根据一个部门取出所有的雇员以及每个雇员的领导信息
代码实现
package oop; /** * 数据表和简单JAVA类的映射 * 数据表中字段的名称和意义如下: * 部门类:部门编号、部门名称、部门位置 * 雇员类:雇员编号、姓名、职位、工资、领导编号、部门编号 */ //定义部门类 class Dept{ private int deptno;//部门编号 private String dname;//部门名称 private String loc;//部门位置 private Emp1 emps[];//多个雇员 //定义构造方法 //无参 public Dept() { } //有参 public Dept(int deptno, String dname, String loc) { this.deptno = deptno; this.dname = dname; this.loc = loc; } //定义get 和set方法 public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public Emp1[] getEmps() { return emps; } public void setEmps(Emp1[] emps) { this.emps = emps; } //定义输出的方法 public String getInfo(){ return "部门编号"+this.deptno+" "+"部门名称"+this.dname+" "+"部门位置"+this.loc; } } //定义雇员类 class Emp1{ private int empno;//雇员编号 private String ename;//雇员姓名 private String job;//雇员职位 private double sal;//基本工资 private double comm;//佣金 private Emp1 mgr;//表示雇员对应的领导 private Dept dept;//表示雇员对应的部门编号 //定义构造方法 //无参 public Emp1() { } //有参 public Emp1(int empno, String ename, String job, double sal, double comm) { this.empno = empno; this.ename = ename; this.job = job; this.sal = sal; this.comm = comm; } //定义get 和set方法 public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } public double getComm() { return comm; } public void setComm(double comm) { this.comm = comm; } public Emp1 getMgr() { return mgr; } public void setMgr(Emp1 mgr) { this.mgr = mgr; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } //定义输出的方法 public String getInfo(){ return "雇员编号"+this.empno+" "+"雇员姓名"+this.ename+" "+"雇员职位"+this.job +" "+"雇员基本工资"+this.sal+" "+"雇员佣金"+" "+this.comm; } } //定义测试类 public class TestDemo02 { public static void main(String[] args) { //根据数据表结构描述设置数据 //实例化对象 Dept de=new Dept(10086,"策划部","东方明珠"); Emp1 e1=new Emp1(12345,"小齐","策划部副总",8900.98,2345); Emp1 e2=new Emp1(12346,"小罗","策划部秘书",10000,3456); Emp1 e3=new Emp1(12347,"哲少","策划部总经理",18999,5678); //设置雇员和领导的关系 e1.setMgr(e2); //设置雇员领导 e2.setMgr(e3); //设置雇员领导 //设置雇员和部门的关系 e1.setDept(de);//雇员与部门 e2.setDept(de);//雇员与部门 e3.setDept(de);//雇员与部门 de.setEmps(new Emp1[]{e1,e2,e3});//部门与雇员、 //根据表结构描述取得设置的数据 //取得雇员信息 System.out.println(e1.getInfo()); //取得雇员的领导信息 System.out.println("雇员领导信息:"+"\t|-"+e1.getMgr().getInfo()); //取得雇员部门信息 System.out.println("雇员部门信息:"+"\t|-"+e1.getDept().getInfo()); System.out.println("------------------------------------------------------"); //取得雇员信息 System.out.println(e2.getInfo()); //取得雇员领导信息 System.out.println("雇员领导信息:"+"\t|-"+e2.getMgr().getInfo()); //取得雇员部门信息 System.out.println("雇员部门信息:"+"\t|-"+e2.getDept().getInfo()); //取得部门完整信息,包括部门基础信息已经部门中所有员工和每一个员工的领导信息 System.out.println("-------------------------------------------------------"); System.out.println(de.getInfo());//取得部门信息 //遍历所有雇员信息 for (int i = 0; i < de.getEmps().length; i++) { System.out.println("雇员信息:"+"\t|-"+de.getEmps()[i].getInfo());//所有雇员信息 if(de.getEmps()[i].getMgr()!=null){ System.out.println("领导信息:"+"\t|-"+de.getEmps()[i].getMgr().getInfo());//所有雇员的领导信息 } } } } //程序运行结果为: 雇员编号12345 雇员姓名小齐 雇员职位策划部副总 雇员基本工资8900.98 雇员佣金 2345.0 雇员领导信息: |-雇员编号12346 雇员姓名小罗 雇员职位策划部秘书 雇员基本工资10000.0 雇员佣金 3456.0 雇员部门信息: |-部门编号10086 部门名称策划部 部门位置东方明珠 ------------------------------------------------------ 雇员编号12346 雇员姓名小罗 雇员职位策划部秘书 雇员基本工资10000.0 雇员佣金 3456.0 雇员领导信息: |-雇员编号12347 雇员姓名哲少 雇员职位策划部总经理 雇员基本工资18999.0 雇员佣金 5678.0 雇员部门信息: |-部门编号10086 部门名称策划部 部门位置东方明珠 ------------------------------------------------------- 部门编号10086 部门名称策划部 部门位置东方明珠 雇员信息: |-雇员编号12345 雇员姓名小齐 雇员职位策划部副总 雇员基本工资8900.98 雇员佣金 2345.0 领导信息: |-雇员编号12346 雇员姓名小罗 雇员职位策划部秘书 雇员基本工资10000.0 雇员佣金 3456.0 雇员信息: |-雇员编号12346 雇员姓名小罗 雇员职位策划部秘书 雇员基本工资10000.0 雇员佣金 3456.0 领导信息: |-雇员编号12347 雇员姓名哲少 雇员职位策划部总经理 雇员基本工资18999.0 雇员佣金 5678.0 雇员信息: |-雇员编号12347 雇员姓名哲少 雇员职位策划部总经理 雇员基本工资18999.0 雇员佣金 5678.0
-