Java中数据表的建立
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中数据表的建立的更多相关文章
- 使用DB查询分析器实现异构数据源中数据表的相互访问
1 引言 硕士程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本DB 查询分析器.英文版本<DB Query A ...
- Java中数据类型转换&基本类型变量和对象型变量
1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型 byte,short,int,lo ...
- Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?
NET[C#]Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射? 问题描述 比如有如下的数据表结构:Person: person_id int first_name va ...
- MySQL创建数据表并建立主外键关系
为mysql数据表建立主外键需要注意以下几点: 需要建立主外键关系的两个表的存储引擎必须是InnoDB. 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型. 外键列和参照列必须创建索引, ...
- MySQL中数据表的基本操纵
本文基于对国家863中部软件孵化器编著的<MySQL从入门到精通>一书的操作实践. 一.创建数据表 数据表属于数据库,在创建数据表之前,应该使用语句 USE 数据库名 指定操作是在那个 ...
- Java中数据存储分配
(1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给 ...
- 菜鸡的Java笔记 数据表与简单java类映射
利用实际的数据表实现表与类的操作转换 简单java类是整个项目开发中的灵魂所在,它有自己严格的开发标准,而最为重要的是它需要于数据表是完全对应的 不过考虑到现在没有接触到过 ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- 查看MYSQL中数据表占用的空间
由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...
随机推荐
- 初始CSS3
初始CSS31.1.什么是CSSCSS全程为层叠样式表(Cascading Style Sheet),通常又称为风格样式表(Style Sheet)它是用来进行网页风格设计的.1.CSS在网页中的应用 ...
- oracle--dba和表的备份与恢复
数据库管理员 每个oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责,那么一个数据库管理员的主 ...
- python web——Django架构
环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...
- 201621123050 《Java程序设计》第8周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:ArrayLi ...
- 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)
移动快捷支付,往往需要集成支付宝的sdk,集成的过程相对简单,只要按照支付宝的文档,进行操作一般不会出问题. 下面主要说明一下,集成sdk后报"系统繁忙 请稍后再试(A ...
- thinkphp后台向前台传值没有传过去的小问题
if($listyyarr){ $this->assign('listyyarr',$listyyarr); //$this->assign('nowDated',$endDated); ...
- JMeter入门(03)多台JMeter联合测试
一.配置各个节点 1.配置jmeter.properties # Remote Hosts - comma delimited#remote_hosts=localhost:1099,localhos ...
- SpringBoot应用的监控与管理
spring-boot-starter-actuator模块 /health /autoconfig /beans /configprops:应用配置属性信息 /env:环境属性,如:环境变量.jvm ...
- angular2 学习笔记 ( angular cli & npm version manage npm 版本管理 )
更新 : 2017-05-05 现在流行 Yarn ! 它是 facebook google 推出的东西. 算是补助 npm 做的不够好的地方. 源码依然是发布去 npm,只是下载接口换掉罢了哦. n ...
- Docker学习笔记 - Docker的守护进程
学习目标: 查看Docker守护进程的运行状态 启动.停止.重启Docker守护进程 Docker守护进程的启动选项 修改和查看Docker守护进程的启动选项 1.# 查看docker运行状态 方 ...