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; 如果想看指定数据库中的数据表,可以用如下语句: ...
随机推荐
- shell之九九乘法表
echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 而不是 123 456 echo - ...
- Windows 安装nginx并开机启动
Win安装nginx并 开机启动 下载nginx安装包 nginx-1.12.2.zip,解压到D盘. https://pan.baidu.com/s/1InQa527yq35Q68c73RBb-A# ...
- 敏捷冲刺每日报告二(Java-Team)
第二天报告(10.26 周四) 团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://gi ...
- socket_sever实现多客户端并发
#!/usr/bin/env python # -*- coding:utf-8 -*- import socketserver class mysever(socketserver.BaseRequ ...
- JAVA中最容易让人忽视的基础。
可能很多找编程工作的人在面试的时候都有这种感受,去到一个公司填写面试试题的时候,多数人往往死在比较基础的知识点上.不要奇怪,事实就是如此一般来说,大多数公司给出的基础题大概有122道,代码题19道左右 ...
- CentOS7安装配置iptables防火墙
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/50779761 CentOS7默认的防火墙不是iptables,而是firewall ...
- 学习UI的总结
学习前端有一段时间了,一直在看书上的理论知识,而实战项目却很少.老师常说,想要知道自己的实力有多少,知识掌握了多少,最好的方法就是去实践了,实践出真知嘛.于是在学习中,总要是通过项目的实践以及理论知识 ...
- c# gridview 新增行
string[] newRow = {"long","d","b"}; Gridview.Rows.Insert(Gridview.Rows ...
- Python内置函数(9)——int
英文文档: class int(x=0) class int(x, base=10) Return an integer object constructed from a number or str ...
- Docker学习笔记 - Docker的简介
传统硬件虚拟化:虚拟硬件,事先分配资源,在虚拟的硬件上安装操作系统,虚拟机启动起来以后资源就会被完全占用. 操作系统虚拟化:docker是操作系统虚拟化,借助操作系统内核特性(命名空间.cgroups ...