`

实例讲解:多对多关系

    博客分类:
  • 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

 

分享到:
评论

相关推荐

    comsol多场耦合经典实例讲解(下)

    在“comsol多场耦合经典实例讲解(下)”中,我们将深入探讨如何利用这款软件解决实际问题,特别是针对多场耦合的高级应用。 一、多物理场耦合基础 多物理场耦合是指在一个系统中,不同物理现象之间存在着相互影响...

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

    **示例:** 考虑表1中的学生信息表,这个表显然不满足第一范式的要求,因为存在多对多的关系(学生和课程之间的关系)和重复数据。 | 学号 | 姓名 | 学院 | 院长 | 课程名 | 任课教师 | 成绩 | |------|------|-----...

    UML中类图实例讲解关系

    UML类图关系讲解 ...UML类图关系讲解了类图中的各种关系,包括继承关系、实现关系、关联关系、聚合关系、合成关系和依赖关系等。这些关系都是UML类图的基本组成部分,用于描述类和对象之间的关系。

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

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

    实例讲解C++友元,利用实例讲解C++友元的知识

    在这个实例讲解中,我们将深入理解C++友元的概念,并通过实际例子来阐述其应用。 一、友元的概念 友元不是类的成员,但它可以访问类的私有和保护成员。C++中的友元声明有两种形式:友元函数和友元类。友元函数是一...

    Protel_DXP2004经典教程(从入门到精通,实例讲解,极容易上手

    本文将从入门到精通,详细讲解Protel_DXP2004的核心知识点。 ### **1.1 认识Protel_DXP2004** Protel_DXP2004的主要特点包括: - **集成环境**:提供了一个统一的设计平台,涵盖了从原理图设计到PCB布局的整个...

    visual c++编程实例讲解

    《Visual C++编程实例讲解》是一本专注于通过实践案例教授Visual C++编程技术的书籍。在深入探讨这个强大的Microsoft开发工具时,它旨在帮助初学者和有经验的开发者更好地理解和应用MFC(Microsoft Foundation ...

    sql语句详细讲解及实例

    以下是对给定文件中SQL语句的详细讲解和实例分析: 1. **复制表结构:** ```sql SELECT * INTO b FROM a WHERE 1&lt;&gt;1 ``` 这个命令会创建一个新的表`b`,并从表`a`中复制所有的列定义,但不复制任何数据。`WHERE...

    Redis资料+实例讲解

    本资料包包含Redis的学习资料与实例讲解,旨在帮助你深入理解和熟练运用Redis。 首先,Redis的核心概念包括: 1. **键(Key)**:Redis中的每个操作都基于键进行,键是唯一的标识符,可以是字符串类型。 2. **值...

    软件工程——数据流图实例讲解

    在这个实例讲解中,我们将深入探讨数据流图的概念、构成以及如何创建一个数据流图。 数据流图由四个基本元素构成:数据流(Data Flow)、加工(Process)、数据存储(Data Store)和外部实体(External Entity)。...

    黑盒测试法因果图实例讲解

    【黑盒测试法因果图实例讲解】 在软件测试领域,黑盒测试是一种广泛采用的方法,主要关注软件功能的外部表现,而不涉及内部结构。在黑盒测试中,因果图法是一种设计测试用例的有效工具,尤其适用于处理输入条件的...

    《数据库的理论与实践》以实例讲解关系代数

    《数据库的理论与实践》以实例讲解关系代数,该主题深入探讨了数据库的基础知识,特别是关系代数在数据库管理中的应用。关系代数是一种形式化的查询语言,它基于关系模型,是数据库理论的重要组成部分。关系模型由E....

    JAVA WEB整合开发实例精通:Struts+Hibernate+Spring

    《JAVA WEB整合开发实例精通:Struts+Hibernate+Spring》这本书深入探讨了Java Web开发中...它涵盖了从基本概念到实战技巧的全方位内容,通过实例讲解如何有效地利用这三个框架协同工作,从而提高开发效率和应用性能。

    MATLAB SIMULINK通信系统建模仿真实例讲解 中MIMO通信系统 程序

    通过运行这些程序,我们可以观察不同参数下MIMO系统的性能表现,如信噪比(SNR)与误码率的关系,以及不同天线配置对系统性能的影响。 在学习和使用这个MIMO通信系统实例时,应重点理解以下几个方面: - **理解...

    access经典的罗斯文数据库实例讲解

    3. **关系**: 在Access中,多个表可以通过共同的字段建立关系,如一对一、一对多和多对多关系。这有助于组织复杂的数据结构,并在查询中进行联接操作。 4. **查询**: 查询是访问和操作数据的主要方式。SQL(结构化...

    网上商城项目实例讲解

    网上商城项目实例讲解 在当前数字化时代,网上商城已经成为企业不可或缺的一部分,它们为商家提供了与全球消费者接触的平台。网上商城项目的开发涉及多个技术领域,包括前端用户界面、后端服务器处理、数据库管理...

    Hibernate一对多实例

    本教程将详细讲解如何在Hibernate中实现一对多的关系实例,涵盖一对多的插入和查询操作。 首先,我们要理解一对多关系的基本概念。在数据库设计中,一对多关系意味着一个实体可以与多个其他实体相关联。例如,一个...

    PowerDesign实例讲解PPT

    **PowerDesign(PD)是数据库设计中的一个强大工具,它被广泛用于创建数据模型,以支持软件开发和数据库管理系统...通过本次实例讲解,无论你是初学者还是经验丰富的专业人士,都能从中受益,提升你的数据库设计技能。

    uml用例图实例讲解

    《UML用例图实例讲解》 UML(统一建模语言)是软件开发中用于系统建模的重要工具,其中用例图是描述系统功能需求的关键图表。本章将深入探讨用例图的概念、建模技术和一个实际的图书馆管理系统用例图的案例。 5.1 ...

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

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

Global site tag (gtag.js) - Google Analytics