要求通过java程序描述出dept-emp关系,使用字段:
dept:deptno、dname、locemp:empno、ename、job、sal、comm、deptno、mgr
在dept-emp表的关系里面存在有如下的关联:
一个部门有多个雇员;
一个雇员有一个或零个领导。
class Dept{
private int deptno;
private String dname;
privte String loc;
private Emp emps[];
public void setEmps(Emp [] emps){
this.emps = emps;
}
public Emp [] getEmps(){
return this.emps;
}
//setter、getter、无参构造略
public Dept (int deptno,String dname;String loc){
this.dptno = deptno;
this.dname = dname;
this.loc = loc;
}
public String getInfo(){
return "部门编号:" + this.deptno + ", 部门名称:" + this.dname + ",位置:" + this.loc;
}
}
class emp{
private int empno ;
private String ename ;
privare String job ;
private double sal ;
private double comm;
private Dept dept;//表示对应的部门信息
private Emp mgr;//表示雇员对应的领导
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Emp getMgr(){
return this.mgr;
}
public void setDept(Dept dept){
this.dept = dept;
}
pubic Dept getDept(){
return this.dept;
}
//setter、getter、无参构造略
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 String getInfo(){
return "雇员编号:" + this.empno + ",姓名:" + this.ename + ",职位:" + this.job + ",工资:" +this.sal + ",佣金:" + this.comm;
}
}
public class TestDemo{
public static void main(String args[]){
//第一步:设置数据
//产生各自的独立对象
Dept dept = new Dept(10,"ACCOUNTING
","New York");//部门信息
Emp ea = new Emp(7369,“SMITH”,“CLEAK”,800.00,0.00);//雇员信息
Emp eb = new Emp(7902,“FORD”,“MANAGER”,8245.00,0.00);//雇员信息Emp ec = new Emp(7839,“KING”,“PRESIDENT”,900.00,0.00);//雇员信息//设置雇员和领导关系ea.setMgr(eb);eb.setMgr(ec);//设置雇员和部门关系ea.setDept(dept);eb.setDept(dept);
ec.setDept(dept);
dept.setEmps(new Emp[](ea,eb,ec));//取出数据//通过雇员找到领导信息和部门信息System.out.println(ea.getMgr.getInfo());System.out.println(ea.getDept.getInfo());
//根据部门找到所有的雇员以及每个雇员的信息System.out.println(dept.getInfo);
for(int x=0;x<dept.getEmps().length;x++){System.out.println(dept.getEmps[x].getInfo());
if( dept.getEmps[x].getMgr()!=null ){System.out.println(dept.getEmps[x].getMgr().getInfo());}
}
}
}
第二步:解决外键关系
1、 一个雇员属于一个部门,在雇员里面应该有部门信息
修改Emp类
private Dept dept;//表示对应的部门信息
public void setDept(Dept dept){
this.dept = dept;
}
pubic Dept getDept(){
return this.dept;
}
2、一个部门有多个雇员,如果要描述多个概念应该使用数组完成;修改Dept类
private Emp emps[];
public void setEmps(Emp [] emps){
this.emps = emps;
}
public Emp [] getEmps(){
return this.emps;
}
3、一个雇员有一个领导;
private Emp mgr;//表示雇员对应的领导
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Emp getMgr(){
return this.mgr;
}
第三步:设置并取得数据
对于这种映射的方式一定要分两部完成,第一部根据结构设置数据,第二步根据结构取出数据。
1、设置数据
//第一步:设置数据
//产生各自的独立对象
Dept dept = new Dept(10,"ACCOUNTING
","New York");//部门信息
Emp ea = new Emp(7369,“SMITH”,“CLEAK”,800.00,0.00);//雇员信息
Emp eb = new Emp(7902,“FORD”,“MANAGER”,8245.00,0.00);//雇员信息Emp ec = new Emp(7839,“KING”,“PRESIDENT”,900.00,0.00);//雇员信息//设置雇员和领导关系ea.setMgr(eb);eb.setMgr(ec);//设置雇员和部门关系ea.setDept(dept);eb.setDept(dept);
ec.setDept(dept);
dept.setEmps(new Emp[](ea,eb,ec));2、取出数据,根据给定结构取出数据,要求如下:可以根据一个雇员查询他所对应的领导信息和部门信息;可以根据一个部门取出所有雇员以及每个雇员的领导信息;
//取出数据
//通过雇员找到领导信息和部门信息System.out.println(ea.getMgr.getInfo());System.out.println(ea.getDept.getInfo());
//根据部门找到所有的雇员以及每个雇员的信息System.out.println(dept.getInfo);
for(int x=0;x<dept.getEmps().length;x++){System.out.println(dept.getEmps[x].getInfo());
if( dept.getEmps[x].getMgr()!=null ){System.out.println(dept.getEmps[x].getMgr().getInfo());}
}