题目要求:要求使用emp表(empno、ebane、job、sal、comm、mgr、deptno)和dep(deptno、dname、loc)进行操作,要求可以实现以下功能:
- 功能一:可以输出部门的完整信息,同时输出部门所有雇员以及雇员直接领导的信息
- 功能二:可以根据一个雇员找到雇员的领导信息,和他所在的部门信息
在本程序中有两个关联的对应关系
- 关系一:雇员和部门之间依靠的deptno字段联系
- 关系二:雇员和领导之间的联系,依靠mgr字段
代码如下
class Emp {
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
private Dept dept; //一个雇员属于一个部门
private Emp mgr;
public Emp(){ };
public Emp(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;
}
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Emp getMgr(){
return this.mgr;
}
public void setDept(Dept dept){
this.dept = dept;
}
public Dept getDept(){
return this.dept;
}
public String getInfo(){
return "雇员编号:" + this.empno + ",姓名:" + this.ename + ",职位:" + this.job + ",工资:" + this.sal + ",佣金:" + this.comm ;
}
}
class Dept{
private int deptno;
private String dname;
private String loc;
private Emp emps[]; //多个雇员
public void setEmps(Emp emps[]){
this.emps = emps;
}
public Emp[] getEmps(){
return this.emps;
}
public Dept(){}
public Dept(int deptno, String dname, String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public String getInfo(){
return "部门编号:" + this.deptno+ ",名称:" + this.dname + ",位置:" + this.loc ;
}
}
public class TextDemo8{
public static void main(String srgs[]){
//第一层次:设置关系
//1.分别设置个个对象实体,彼此之间没有联系
Emp ea = new Emp(7369 , "SMITH" , "CLERK" , 800.0 , 0.0);
Emp eb = new Emp(8633 , "FORD" , "MANAGER" , 2500.0 , 0.0);
Emp ec = new Emp(7528 , "KING" , "PRESIDENT" , 5000.0 , 0.0);
Dept dept = new Dept(10 , "ACCOUNTING" , "New York");
//2.设置雇员和领导关系
ea.setMgr(eb);
eb.setMgr(ec);//ec没有领导
//3.设置雇员和部门关系
ea.setDept(dept); //雇员和部门
eb.setDept(dept); //雇员和部门
ec.setDept(dept); //雇员和部门
Emp[] temp = new Emp[]{ea,eb,ec};
dept.setEmps(temp);
//第二层次:根据关系取数据
//1.取出部门信息
System.out.println(dept.getInfo());
//2.取出部门之中所有雇员的信息
Emp[] allEmps = dept.getEmps();//先接收
for(int x = 0 ;x<allEmps.length ; x++){
Emp e = allEmps[x]; //去除一个雇员
System.out.println("\t" + e.getInfo());
if(e.getMgr() != null){ //有领导
System.out.println("\t\t|-" + e.getMgr().getInfo());
}
}
//3.根据雇员获取信息
System.out.println(ea.getInfo());
if(ea.getMgr() != null){
System.out.println(ea.getMgr().getInfo());
}
if(ea.getDept() != null){
System.out.println(ea.getDept().getInfo());
}
}
}