实例要求
一个学生可以选多门课程, 门课程可以有多个学生参加,那么这就是一个典型的多对多关系。要完成本程序,首先应该定义两个类:学生信息类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多场耦合经典实例讲解(下)”中,我们将深入探讨如何利用这款软件解决实际问题,特别是针对多场耦合的高级应用。 一、多物理场耦合基础 多物理场耦合是指在一个系统中,不同物理现象之间存在着相互影响...
**示例:** 考虑表1中的学生信息表,这个表显然不满足第一范式的要求,因为存在多对多的关系(学生和课程之间的关系)和重复数据。 | 学号 | 姓名 | 学院 | 院长 | 课程名 | 任课教师 | 成绩 | |------|------|-----...
UML类图关系讲解 ...UML类图关系讲解了类图中的各种关系,包括继承关系、实现关系、关联关系、聚合关系、合成关系和依赖关系等。这些关系都是UML类图的基本组成部分,用于描述类和对象之间的关系。
HIS的医院数据仓库实例讲解的联机分析处理可以对HIS中产生的海量数据进行科学的分析处理,反映出大量数据之间的关系与差异。 知识点9:HIS的医院数据仓库实例讲解的医院数据仓库应用 HIS的医院数据仓库实例讲解的...
在这个实例讲解中,我们将深入理解C++友元的概念,并通过实际例子来阐述其应用。 一、友元的概念 友元不是类的成员,但它可以访问类的私有和保护成员。C++中的友元声明有两种形式:友元函数和友元类。友元函数是一...
本文将从入门到精通,详细讲解Protel_DXP2004的核心知识点。 ### **1.1 认识Protel_DXP2004** Protel_DXP2004的主要特点包括: - **集成环境**:提供了一个统一的设计平台,涵盖了从原理图设计到PCB布局的整个...
《Visual C++编程实例讲解》是一本专注于通过实践案例教授Visual C++编程技术的书籍。在深入探讨这个强大的Microsoft开发工具时,它旨在帮助初学者和有经验的开发者更好地理解和应用MFC(Microsoft Foundation ...
以下是对给定文件中SQL语句的详细讲解和实例分析: 1. **复制表结构:** ```sql SELECT * INTO b FROM a WHERE 1<>1 ``` 这个命令会创建一个新的表`b`,并从表`a`中复制所有的列定义,但不复制任何数据。`WHERE...
本资料包包含Redis的学习资料与实例讲解,旨在帮助你深入理解和熟练运用Redis。 首先,Redis的核心概念包括: 1. **键(Key)**:Redis中的每个操作都基于键进行,键是唯一的标识符,可以是字符串类型。 2. **值...
在这个实例讲解中,我们将深入探讨数据流图的概念、构成以及如何创建一个数据流图。 数据流图由四个基本元素构成:数据流(Data Flow)、加工(Process)、数据存储(Data Store)和外部实体(External Entity)。...
【黑盒测试法因果图实例讲解】 在软件测试领域,黑盒测试是一种广泛采用的方法,主要关注软件功能的外部表现,而不涉及内部结构。在黑盒测试中,因果图法是一种设计测试用例的有效工具,尤其适用于处理输入条件的...
《数据库的理论与实践》以实例讲解关系代数,该主题深入探讨了数据库的基础知识,特别是关系代数在数据库管理中的应用。关系代数是一种形式化的查询语言,它基于关系模型,是数据库理论的重要组成部分。关系模型由E....
《JAVA WEB整合开发实例精通:Struts+Hibernate+Spring》这本书深入探讨了Java Web开发中...它涵盖了从基本概念到实战技巧的全方位内容,通过实例讲解如何有效地利用这三个框架协同工作,从而提高开发效率和应用性能。
通过运行这些程序,我们可以观察不同参数下MIMO系统的性能表现,如信噪比(SNR)与误码率的关系,以及不同天线配置对系统性能的影响。 在学习和使用这个MIMO通信系统实例时,应重点理解以下几个方面: - **理解...
3. **关系**: 在Access中,多个表可以通过共同的字段建立关系,如一对一、一对多和多对多关系。这有助于组织复杂的数据结构,并在查询中进行联接操作。 4. **查询**: 查询是访问和操作数据的主要方式。SQL(结构化...
网上商城项目实例讲解 在当前数字化时代,网上商城已经成为企业不可或缺的一部分,它们为商家提供了与全球消费者接触的平台。网上商城项目的开发涉及多个技术领域,包括前端用户界面、后端服务器处理、数据库管理...
本教程将详细讲解如何在Hibernate中实现一对多的关系实例,涵盖一对多的插入和查询操作。 首先,我们要理解一对多关系的基本概念。在数据库设计中,一对多关系意味着一个实体可以与多个其他实体相关联。例如,一个...
**PowerDesign(PD)是数据库设计中的一个强大工具,它被广泛用于创建数据模型,以支持软件开发和数据库管理系统...通过本次实例讲解,无论你是初学者还是经验丰富的专业人士,都能从中受益,提升你的数据库设计技能。
《UML用例图实例讲解》 UML(统一建模语言)是软件开发中用于系统建模的重要工具,其中用例图是描述系统功能需求的关键图表。本章将深入探讨用例图的概念、建模技术和一个实际的图书馆管理系统用例图的案例。 5.1 ...
用例图实例讲解PPT课件 用例图是一种常用的系统设计方法,它可以帮助开发者更好地理解系统的需求和行为。下面是对用例图的详细讲解: 概述 用例图显示谁将是相关的用户、用户希望系统提供什么服务以及用户需要为...