`

实例讲解:多对多关系

    博客分类:
  • JAVA
 
阅读更多

实例要求

一个学生可以选多门课程, 门课程可以有多个学生参加,那么这就是一个典型的多对多关系。要完成本程序,首先应该定义两个类:学生信息类Student、课程信息类Course,在一个学生类中存在一个集合,保存全部的课程,而在课程类中也要存在一个集合,保存全部的学生。

实例主要采用的知识

1、List 集合        2、引用传递           3、Iterator

学生类:

import java.util.List ;
import java.util.ArrayList ;
public class Student{
	private String name ;
	private int age ;
	private List<Course> allCourses ;
	public Student(){
		this.allCourses = new ArrayList<Course>() ;
	}
	public Student(String name,int age){
		this() ;
		this.name = name ;
		this.age = age ;
	}
	public List<Course> getAllCourses(){
		return this.allCourses ;
	}
	public void setName(String name){
		this.name = name ;
	}
	public void setAge(int age){
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public int getAge(){
		return this.age ;
	}
	public String toString(){
		return "学生姓名:" + this.name + ";年龄:" + this.age ;
	}
}

 

课程类:

import java.util.List ;
import java.util.ArrayList ;
public class Course{
	private String name ;
	private int credit ;
	private List<Student> allStudents ;
	public Course(){
		this.allStudents = new ArrayList<Student>() ;
	}
	public Course(String name,int credit){
		this() ;
		this.name = name ;
		this.credit = credit ;
	}
	public List<Student> getAllStudents(){
		return this.allStudents ;
	}
	public void setName(String name){
		this.name = name  ;
	}
	public void setCredit(int credit){
		this.credit = credit ;
	}
	public String getName(){
		return this.name ;
	}
	public int getCredit(){
		return this.credit ;
	}
	public String toString(){
		return "课程名称:" + this.name + ";课程学分:" + this.credit ;
	}
}

 

关系测试类:

import java.util.Iterator ;
public class TestMore{
	public static void main(String args[]){
		Course c1 = new Course("英语",3	) ;	// 第一门课程
		Course c2 = new Course("计算机",5) ;	// 第二门课程
		Student s1 = new Student("张三",20) ;
		Student s2 = new Student("李四",21) ;
		Student s3 = new Student("王五",22) ;
		Student s4 = new Student("赵六",23) ;
		Student s5 = new Student("孙七",24) ;
		Student s6 = new Student("钱八",24) ;
		// 第一门课程有三个学生参加
		c1.getAllStudents().add(s1) ;
		c1.getAllStudents().add(s2) ;
		c1.getAllStudents().add(s6) ;
		s1.getAllCourses().add(c1) ;
		s2.getAllCourses().add(c1) ;
		s6.getAllCourses().add(c1) ;
		// 第二门课程有六个学生参加
		c2.getAllStudents().add(s1) ;
		c2.getAllStudents().add(s2) ;
		c2.getAllStudents().add(s3) ;
		c2.getAllStudents().add(s4) ;
		c2.getAllStudents().add(s5) ;
		c2.getAllStudents().add(s6) ;
		s1.getAllCourses().add(c2) ;
		s2.getAllCourses().add(c2) ;
		s3.getAllCourses().add(c2) ;
		s4.getAllCourses().add(c2) ;
		s5.getAllCourses().add(c2) ;
		s6.getAllCourses().add(c2) ;
		// 输出一门课程的信息,观察一门课程有多少个学生参加\
		System.out.println(c1) ;
		Iterator<Student> iter1 = c1.getAllStudents().iterator() ;
		while(iter1.hasNext()){
			Student s = iter1.next() ;
			System.out.println("\t|- " + s) ;
		}
		// 通过学生找到学生参加的课程
		System.out.println(s6) ;
		Iterator<Course> iter2 = s6.getAllCourses().iterator() ;
		while(iter2.hasNext()){
			Course c = iter2.next() ;
			System.out.println("\t|- " + c) ;
		}
	}
}

 程序的输出结果:

课程名称:英语;课程学分:3
	|- 学生姓名:张三;年龄:20
	|- 学生姓名:李四;年龄:21
	|- 学生姓名:钱八;年龄:24
学生姓名:钱八;年龄:24
	|- 课程名称:英语;课程学分:3
	|- 课程名称:计算机;课程学分:5

 

分享到:
评论

相关推荐

    HIS的医院数据仓库实例讲解培训课件.ppt

    HIS的医院数据仓库实例讲解的联机分析处理可以对HIS中产生的海量数据进行科学的分析处理,反映出大量数据之间的关系与差异。 知识点9:HIS的医院数据仓库实例讲解的医院数据仓库应用 HIS的医院数据仓库实例讲解的...

    用实例讲解关系数据库规范化理论

    关于关系型数据库的设计规范与实例介绍. pdf,希望对大家有用

    UML中类图实例讲解关系

    这是一个根据动物生存关系编写的类图关系,详细介绍了类图的关系及代码写法。。

    数据库设计原理实例讲解

    5.2.3. 多值依赖 22 5.3. 范式理论 22 5.3.1. 规范化步骤 24 5.3.2. 范式之间的关系 24 5.3.3. 小结 25 6. 物理设计 25 6.1. 设计物理结构 25 6.2. 物理设计的内容 25 6.3. 物理设计的方法 26 6.3.1. 聚簇(Cluster...

    用例图实例讲解PPT课件.pptx

    用例图实例讲解PPT课件 用例图是一种常用的系统设计方法,它可以帮助开发者更好地理解系统的需求和行为。下面是对用例图的详细讲解: 概述 用例图显示谁将是相关的用户、用户希望系统提供什么服务以及用户需要为...

    uml图实例讲解

    UML图的实例的详细讲解。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用...

    模糊控制详细讲解实例.doc

    从描述中可以看到,这篇文章的主要内容是关于模糊控制的详细讲解和实例分析,文章将对模糊控制算法进行详细的讲解,并提供实例分析。 标签分析: 标签中有两个关键词:"计算机"和"互联网",这两个关键词表明了本文...

    UML用例图实例讲解

    通过实例讲解如何在建立UML用例图,了解用例之间的关系,对用例有个初步的认识

    c#委托与事件实例讲解

    根据经典的实例,详细而全面的介绍了c#委托与事件,以及他们之间的关系

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用...

    《SQLServer图书馆管理系统》实例讲解.doc

    《SQLServer图书馆管理系统》实例讲解 本文档主要讲解了《SQLServer图书馆管理系统》的设计和实现,旨在帮助读者了解图书馆管理系统的基本概念和实现方法。下面是本文档中提到的重要知识点: 1. 图书馆管理系统 E-...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用...

    实例讲解手机软件测试用例设计

    实例讲解手机软件测试用例设计,测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性。可以说,测试环节是手机软件开发的重要环节,是整个开发过程的“中枢神经”。...

    子网规划与划分实例讲解

    子网规划与划分实例讲解原打算从 IP 地址说起,但考虑到时间关系,再加上文字功底薄弱,就省略了,在往下阅读之前,建议先了解 IP 地址的分类、点分十进制与二进制间转换、网络掩码,逻辑“与”操作等网络基础知识。

    搜索引擎的实现原理-一本结合实例讲解SE的书

    结合天网搜索讲解搜索引擎的原理 从搜索引擎的结构原理到它的实例讲解

    数据库基础第二章关系数据模型与关系运算(共41张PPT)精选.pptx

    "数据库基础第二章关系数据模型与关系...*排序运算:按照指定的顺序对关系进行排序。 *分组运算:按照指定的条件将关系分组。 本节课主要讲解了关系数据模型和关系运算的基本概念和原理,为后续课程的学习奠定了基础。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用...

    PHP laravel中的多对多关系实例详解

    数据表之间是纵横交叉、相互关联的,laravel的一对一,一对多比较好理解,本文重点通过实例给大家讲解 laravel中的多对多关系,感兴趣的朋友一起看看吧

    Oracle语法实例讲解chm

    Oracle是一个对象关系数据库管理系统,是基于(Client/Server)"客户/服务器"系统结构.Oracle的体系结构,服务器和组件再此就不详细讲解了.以下主要让朋友们了解些基本的语法知识.

Global site tag (gtag.js) - Google Analytics