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; 如果想看指定数据库中的数据表,可以用如下语句: ...
随机推荐
- I know 项目Alpha冲刺随笔集
Alpha冲刺 Day 1 Alpha冲刺 Day 2 Alpha冲刺 Day 3 Alpha冲刺 Day 4 Alpha冲刺 Day 5 Alpha冲刺 Day 6 Alpha冲刺 Day 7 Al ...
- 张金禹 C语言--第0次作业
1:在填报专业的时候,我也犹豫了很久,但最后还是选择了计算机专业.因为在上大学之前我就对编程.设计等有浓厚的兴趣,但繁重的高中学习任务使我没有过多的去关注,所以我选择了计算机专业去培养我在这方面的兴趣 ...
- TCP和UDP的最完整的区别
TCP UDP TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少: 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); ...
- 用greenlet实现Python中的并发
from greenlet import greenlet def test1(): print 12 gr2.switch() print 34 def test2(): print 56 gr1. ...
- 洛谷P2894 [USACO08FEB]酒店Hotel
P2894 [USACO08FEB]酒店Hotel https://www.luogu.org/problem/show?pid=2894 题目描述 The cows are journeying n ...
- map的infowindow的show事件(ArcGIS API for JS)
- raid5 / raid5e / raid5ee的性能对比及其数据恢复原理
RAID 5 是一种存储性能.数据安全和存储成本兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低 ...
- 为SRS流媒体服务器添加HLS加密功能(附源码)
为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...
- 基本数据类型 Symbol
ES6 规范之前, JavaScript 一共有六种数据类型,分别是五种基本数据类型: string . number , boolean , null , undefined ,和一种引用数据类型: ...
- 《javascript设计模式与开发实践》阅读笔记(13)—— 职责链模式
职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 书里的订单的例子 假设我们负责一个售卖手机 ...