class Emp{
private int empno;//职工编号
private String ename;//姓名
private String job;//职位
private double sal;//基本工资
private double comm;
private Emp mgr;//所属领导
private Dept dept;//所在部门 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 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 Dept(){ }
public Dept(int deptno,String dname,String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
} public void setEmps(Emp[] emps) {
this.emps = emps;
} public Emp[] getEmps() {
return emps;
} public String getInfo(){
return "部门编号:" + this.deptno +",部门名称:" + this.dname +",所在地址:" + this.loc;
}
}
public class Main {
public static void main(String[] args) {
// 创建各自的实例化对象
Dept dept = new Dept(10,"ACCOUNTING","NEW YORK");
Emp ea = new Emp(7369,"SMITH","CLERK",800.0,0.0);
Emp eb = new Emp(7466,"ALLEN","MANAGER",2450.0,0.0);
Emp ec = new Emp(7839,"KING","PRESIDENT",5000.0,0.0);
//设置领导关系
ea.setMgr(eb);
eb.setMgr(ec);//ec对象没有领导,因为他是头
//设置员工和部门关系
ea.setDept(dept);
eb.setDept(dept);
ec.setDept(dept);
//设置部门和员工的关系
dept.setEmps(new Emp[]{ea,eb,ec}); //读取数据
System.out.println(dept.getInfo());//输出部门信息
for(int x=0;x<dept.getEmps().length;x++){
System.out.println("\t"+dept.getEmps()[x].getInfo());
if(dept.getEmps()[x].getMgr()!=null){ //若有领导
System.out.println("\t"+dept.getEmps()[x].getMgr().getInfo());
}
}
System.out.println("************************");
//根据员工找到对应的领导信息和部门信息
System.out.println(eb.getInfo());
if(eb.getMgr()!=null)
System.out.println("\t"+eb.getMgr().getInfo());
if(eb.getDept()!=null)
System.out.println("\t"+eb.getDept().getInfo());
}
}

上面代码是实现一对多的数据表,基于公司人事管理的例子(根据员工可以输出其基本信息及所在部门信息和所属领导信息,根据部门可以输出所有员工及领导),在Java一对多的数据关系中,需要遵循以下设计原则:

简单Java类设计原则:Java类与数据表的关系

  1、Java的名称 = 实体表的名称

  2、Java类的属性 = 实体表的字段

  3、Java类的一个对象 = 表的一行记录

  4、对象数组 = 表的多行记录

  5、外键关系 = 引用配置

多对多的数据表(学生成绩管理):根据学生可以输出所修课程信息及成绩,根据课程可以输出学习该课程的学生信息及成绩

class Student{//学生表
private int stuid;
private String sname;
private int age;
private StudentCourse studentCourse[];//学生成绩信息
public Student(){}
public Student(int stuid,String sname,int age){
this.stuid = stuid;
this.sname = sname;
this.age = age;
}
public void setStudentCourse(StudentCourse[] studentCourse) {
this.studentCourse = studentCourse;
} public StudentCourse[] getStudentCourse() {
return studentCourse;
} public String getInfo(){
return "学号:" + this.stuid + ",学生姓名:" + this.sname + ",年龄:" + this.age;
}
}
class Course{//课程表
private String name;
private int cid;
private int credit;
private StudentCourse studentCourse[];
public Course(){}
public Course(String name,int cid,int credit){
this.cid = cid;
this.name = name;
this.credit = credit;
} public StudentCourse[] getStudentCourse() {
return studentCourse;
} public void setStudentCourse(StudentCourse[] studentCourse) {
this.studentCourse = studentCourse;
} public String getInfo(){
return "课号:" + this.credit + ",名称:" + this.name + ",学分:" + this.credit;
}
}
class StudentCourse{//学生选课表
private Student student;
private Course course;
private double score;//成绩
public StudentCourse(){
}
public StudentCourse(Student student,Course course,double score){
this.course = course;
this.score = score;
this.student = student;
} public Course getCourse() {
return course;
} public Student getStudent() {
return student;
} public double getScore() {
return score;
}
}
public class Main { public static void main(String[] args) {
//创建各自的独立对象
Student stu1 = new Student(1,"张三",18);
Student stu2 = new Student(1,"李四",20);
Student stu3 = new Student(1,"王五",19);
Course ca = new Course("高等数学",1001,5);
Course cb = new Course("线性代数",1002,4);
//设置各自的关系
//设置学生和课程的关系
stu1.setStudentCourse(new StudentCourse[]{
new StudentCourse(stu1,ca,92.5),
new StudentCourse(stu1,cb,94.0)
});
stu2.setStudentCourse(new StudentCourse[]{
new StudentCourse(stu2,ca,89.0)
});
stu3.setStudentCourse(new StudentCourse[]{
new StudentCourse(stu3,cb,95.0),
new StudentCourse(stu3,ca,90.5)
});
//设置课程和学生的关系
ca.setStudentCourse(new StudentCourse[]{
new StudentCourse(stu1,ca,92.5),
new StudentCourse(stu2,ca,89.0)
new StudentCourse(stu3,ca,90.5)
});
cb.setStudentCourse(new StudentCourse[]{
new StudentCourse(stu1,cb,94.0),
new StudentCourse(stu3,cb,95.0)
});
//找到一门课程,并且输出学习此课程的所有学生的信息及成绩
System.out.println(ca.getInfo());
for(int x = 0;x < ca.getStudentCourse().length;x++){
System.out.println("\t"+ca.getStudentCourse()[x].getStudent().getInfo()
+",成绩:"+ca.getStudentCourse()[x].getScore());
};
System.out.println("***********");
//根据学生输出其信息及选修的课程信息和所得成绩
System.out.println(stu1.getInfo());
for(int x = 0;x < stu1.getStudentCourse().length;x++){
System.out.println("\t选修课程:" + stu1.getStudentCourse()[x].getCourse().getInfo()
+ ",所得成绩:" + stu1.getStudentCourse()[x].getScore());
} }
}

Java中数据表的建立的更多相关文章

  1. 使用DB查询分析器实现异构数据源中数据表的相互访问

    1  引言   硕士程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本DB 查询分析器.英文版本<DB Query A ...

  2. Java中数据类型转换&基本类型变量和对象型变量

    1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,lo ...

  3. Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?

    NET[C#]Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射? 问题描述 比如有如下的数据表结构:Person: person_id int first_name va ...

  4. MySQL创建数据表并建立主外键关系

    为mysql数据表建立主外键需要注意以下几点: 需要建立主外键关系的两个表的存储引擎必须是InnoDB. 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型. 外键列和参照列必须创建索引, ...

  5. MySQL中数据表的基本操纵

    本文基于对国家863中部软件孵化器编著的<MySQL从入门到精通>一书的操作实践.  一.创建数据表 数据表属于数据库,在创建数据表之前,应该使用语句 USE 数据库名  指定操作是在那个 ...

  6. Java中数据存储分配

    (1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给 ...

  7. 菜鸡的Java笔记 数据表与简单java类映射

    利用实际的数据表实现表与类的操作转换        简单java类是整个项目开发中的灵魂所在,它有自己严格的开发标准,而最为重要的是它需要于数据表是完全对应的        不过考虑到现在没有接触到过 ...

  8. MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  9. 查看MYSQL中数据表占用的空间

    由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...

随机推荐

  1. grep -vFf 比较2个文件差异

    grep -vFf 1.txt 2.txt   打印出2.txt中与1.txt有差异的数据. #cat .txt 192.168.0.1 192.168.0.2 192.168.0.3 #cat .t ...

  2. werkzeug(flask)中的local,localstack,localproxy探究

    1.关于local python中有threading local处理方式,在多线程环境中将变量按照线程id区分 由于协程在Python web中广泛使用,所以threading local不再满足需 ...

  3. 蓝桥杯java历年真题及答案整理1~20.md

    蓝桥杯java历年真题及答案整理(闭关一个月,呕心沥血整理出来的) 1 算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种.如:给定 A.B.C三个不同的字符,则结果为:A ...

  4. 【IntelliJ IDEA】使用idea解决新建jsp文件而找不到jsp文件模版的新建选项

    使用idea解决新建jsp文件而找不到jsp文件模版的新建选项,这样每次创建一个新的jsp文件岂不是很耗时间? 解决办法: 就是要让idea知道你需要在这个目录下创建jsp文件 左上角,file中点击 ...

  5. iOS开发-继承特征详解

    面向对象的三大特性:封装,继承,多态. 1.继承 继承既能保证类的完整,又能简化代码. 把公共的方法和实例变量写在子类,子类只需要写父类独有的实例变量和方法即可. 继承是面向对象三大特性之一,合理的继 ...

  6. 创建带缩进的XML

    from xml.etree import ElementTree as ET from xml.dom import minidom root = ET.Element('}) son=ET.Sub ...

  7. Django-rest-framework源码分析----权限

    添加权限 (1)API/utils文件夹下新建premission.py文件,代码如下: message是当没有权限时,提示的信息 # utils/permission.py class SVIPPr ...

  8. 一次“峰回路转”的troubleshooting经历

    某天,用户现场人员找到我,说应用的某个功能一点就报错,在数据库上直接跑功能对应的SQL也报错,SQL大致如下: 后来向他们要了alert.log和trace files,通过分析,确定为用户数据库版本 ...

  9. OAuth2.0学习(1-9)新浪开放平台微博认证-web应用授权(授权码方式)

    1. 引导需要授权的用户到如下地址: URL 1 https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&respons ...

  10. global文件中的application_start方法中做: 定时器

    <%@ Application Language="C#" %> <%@ import Namespace="System.Data" %&g ...