学生选课系统是我们很常见的一种web应用程序,大家可以通过web登陆校园网,并且访问后台数据库,修改个人信息等方式进行选课,其实现原理大家可能并不是特别了解,下面这段代码则简单的将这个过程进行了一次演示,这不仅仅是一次简单的对选课系统的演示,也是对面向对象思想的一次实践,在整个过程中,用到了一些容器类,所以这段代码也是对容器类的一次整合应用和加深对List的体会,也同样是对分布式开发的一次尝试

选课系统的设计要求是:学生可以选择多门课程,课程也应该包含多个学生。

选课系统的设计思路是:分别创建学生类Student和课程类Course。学生类中包含课程列表和课程名称等属性;课程类中包含学生列表等属性

具体代码如下:

①:首先是创建Student类

public class Student {

private String name;                  //姓名

private String course;                //课程名称

private List courseList;      //课程队列

//实现对属性的封装

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getCourse() {

return course;

}

public void setCourse(String course) {

this.course = course;

}

public List getCourseList() {

return courseList;

}

public void setCourseList(List courseList) {

this.courseList = courseList;

}

//重写构造函数

public Student(String name)

{

this.setName(name);

this.setCourseList(new ArrayList());

}

//构造添加方法,对list进行添加行为

public void add(Course c)

{

this.courseList.add(c);

}

}

②:创建课程类:

public class Course {

private String name;                                    //课程名称

private float score;                                      //课程学分

private List studentList;               //学生队列

//实现属性的封装

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public float getScore() {

return score;

}

public void setScore(float score) {

this.score = score;

}

public List getStudentList() {

return studentList;

}

public void setStudentList(List studentList) {

this.studentList = studentList;

}

//重写构造函数

public Course(String name , float score)

{

this.setName(name);

this.setScore(score);

this.setStudentList(new ArrayList());

}

//构造田间函数,对list进行添加动作

public void add(Student s)

{

this.studentList.add(s);

}

}

③:创建测试类:

public class TestSelectCourse {

public static void main(String args[])

{

List c = new ArrayList();                //创建课程队列,并通过泛型进行限制

List s = new ArrayList();                //创建学生队列

//实例化出几个学生,模拟数据库中的学生档案

Student s1 = new Student("张三");

Student s2 = new Student("李四");

Student s3 = new Student("王五");

//  Student s4 = new Student("赵六");

//  Student s5 = new Student("嘎嘎");

//将初始化出的学生加入队列

s.add(s1);

s.add(s2);

s.add(s3);

//初始化几门课程,并添加到课程队列

Course c1 = new Course("课程一",2.0f);

Course c2 = new Course("课程二",2.5f);

Course c3 = new Course("课程三",3.0f);

c.add(c1);

c.add(c2);

c.add(c3);

//设置关系,不但将学生添加到所选课程中的学生队列了,而且还应该将课程也添加进学生的课程队列

s1.add(c1);

s1.add(c2);

c1.add(s1);

c2.add(s1);

s2.add(c3);

s2.add(c1);

c3.add(s2);

c1.add(s2);

s3.add(c2);

c2.add(s3);

//通过双循环进行对数据的遍历并在控制台中输出

Iterator iter = c.iterator();

while(iter.hasNext())

{

Course cc = iter.next();

System.out.println("课程信息:"+cc.getName());

Iterator iters = cc.getStudentList().iterator();

while(iters.hasNext())

{

Student ss = iters.next();

System.out.println("|-"+ss.getName());

}

}

System.out.println("********分**割**线*********");

Iterator iter1 = s.iterator();

while(iter1.hasNext())

{

Student ss1 = iter1.next();

System.out.println("学生信息:"+ss1.getName());

Iterator iterc1 = ss1.getCourseList().iterator();

while(iterc1.hasNext())

{

Course cc1 = iterc1.next();

System.out.println("|-"+cc1.getName());

}

}

}

}

运行结果如下:

课程信息:课程一

|-张三

|-李四

课程信息:课程二

|-张三

|-王五

课程信息:课程三

|-李四

********分**割**线*********

学生信息:张三

|-课程一

|-课程二

学生信息:李四

|-课程三

|-课程一

学生信息:王五

|-课程二

结果分析:

结果正确的完成了学生含有多门课程,课程含有多个学生的业务要求

posted on 2010-10-30 22:59 Soap MacTavish 阅读(366) 评论(0)  编辑  收藏

java模拟选课_模拟学生选课系统的练习相关推荐

  1. IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统

    一.系统介绍 1.开发环境 开发工具:IDEA2018 JDK版本:jdk1.8 Mysql版本:8.0.13 2.技术选型 Java+Servlet+Boostrap+Jsp+Mysql 3.系统功 ...

  2. 基于JAVA+Servlet+JSP+MYSQL的学生选课系统

    项目功能: <学生选课系统>,本系统有三种角色,分别为管理员.老师.学生.每种角色可以登录系统,操作的功能也不一样.总体功能模块如下: 个人信息管理 学生信息管理 课程排名 学生成绩分析 ...

  3. Java基础案例3-4:学生投票系统

    [案例3-4]学生投票系统 [案例介绍] 某班级投票竞选班干部,班级学生人数为100人,每个学生只能投一票. 本任务要求,编程实现一个投票程序,每个学生只能投一次票,投票成功提示"感谢你的投 ...

  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生选课系统

    项目功能: 系统包括学生登录注册,查看个人资料,修改密码,查看排课信息,选课,退选,参加考试,查看我的考试,老师登录注册,查看个人资料,查看我的课程信息,添加课程,后台管理员登录,学生管理,用户管理, ...

  5. Java项目:JSP在线学生选课管理系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 管理员角色包含以下功能: 管理员登录,学生管理,教师管理,班级管理,添加班级,添加教师 ...

  6. 基于JAVA+Servlet+JSP+MYSQL的学生选课管理系统

    项目功能: 系统分为管理员.老师和学生三个角色,管理员登录后可以对用户进行管理(管理员管理.学生管理.教师管理),课程管理(分配课程.修改课程.搜索课程),浏览新闻,退出登录.学生登录后可以进行选课, ...

  7. 计算器程序java开方运算_模拟计算器java程序

    1 /*实现基本数学运算.函数等功能:加.减.乘.除.阶乘.正弦.余弦和指数运算.2 界面将模拟Windows中的计算器程序.*/ 3 import javax.swing.*;4 import ja ...

  8. java小球反弹_模拟小球运动、撞击、反弹效果

    [实例简介] 模拟一个小球在屏幕内运动,当撞击到边缘时会反弹,底部不会反弹,底部有一个长条,左右移动来使小球反弹 [实例截图] [核心代码] b79af779-cdf0-4383-9460-5ab61 ...

  9. java chunked 解码_模拟http请求 带 chunked解析办法一

    今天在干坏事抓取别人页面时候遇到一个问题,平时我们在post数据后,大不了要求提交cookie,但是今天这个测试了N遍不需要coookie都行的,但是抓取到的始终是乱码,怎么解析都不行.于是自己又把c ...

  10. mos 多路模拟电子开关_模拟多路开关-MOSFET全解.ppt

    模拟多路开关-MOSFET全解 1. 漏电流 漏电流:通过断开的模拟开关的电流,用IS表示. 3.3.4 多路开关的电路特性 在n个模拟开关的并联组合中,当一个开关导通时,其它n-1个开关是断开的,未 ...

最新文章

  1. java domain层_java框架中的controller层、dao层、domain层、service层、view层
  2. AI语音算法“个性”强 与芯片端“磨合”挑战多
  3. python自动控制windows、Android的软件用来实现机器人流程自动化--RPA,外挂、自动化测试等方面的解决方案
  4. Android 硬件 OpenGL ES 模拟设计概述
  5. 手机屏幕宽高像素计算_2020年的智能手机拍照新设计,就全看下半年了
  6. 十六进制字符串转整形
  7. 阿里云 centos 安装图形化界面
  8. 不用for loop循环一个读取一个文件
  9. 项目搭建 windows_08. SpringCloud实战项目-配置Git
  10. WSDL文件生成Java代码
  11. 华为各系列交换机限速配置
  12. hugging face transformer文本分类运行
  13. AR8035芯片手册 解析|CSDN创作打卡
  14. android 自动发短信的代码,Android点击按钮时自动发送短信
  15. 网络曝光华为自研操作系统“鸿蒙” (图)
  16. 计算机作品大赛微课,我校微课作品获2018年中国大学生计算机设计大赛二等奖...
  17. 金仓数据库 KingbaseGIS 使用手册(9.4. 拓扑结构构造函数、9.5. 拓扑结构编辑函数)
  18. 学会这10招,让你的服装短视频带货率提升50%
  19. 初一下册计算机教案,七年级下册信息技术教案
  20. 如何下载谷歌地球海底高程并生成DWG格式的等深线

热门文章

  1. Echarts地图实现点击某地区跳转到指定页面
  2. 中国双酚F树脂市场趋势报告、技术动态创新及市场预测
  3. 【实践】基于CentOS7部署Ceph集群(版本10.2.2)
  4. MySQL讲义第 46 讲——select 查询之查询练习(四)
  5. 选型宝分享数据爆炸时代,如何驾驭海量日志?
  6. Android 软键盘的那些坑,原理篇来了!
  7. nu.xom:Serializer
  8. android 异常 android Removing unused resources requires unused code shrinking to be turned on.
  9. 武汉市科技企业孵化器认定条件
  10. 地理学中的经典统计分析方法