package day1201;
import java.util.HashMap;
import java.util.Map;
public class Course {
public static Map<String,Integer> hm = new HashMap();
private String course;//课程名
public Course(){}
public Course(String course){
this.setCourse(course);
hm.put(course, 0);
}
public void SelectCourse(String course){// 该学生成功选课,该课程选修人数加一
Integer n = hm.get(course);
hm.put(course,Integer.valueOf(n+1));//更新 HashMap 中的key为course的相应值
}
public void deleteCourse(String course){// 该学生成功退选课,该课程选修人数减一
Integer n = hm.get(course);
hm.put(course, Integer.valueOf(n-1));//更新 HashMap 中的key为course的相应值
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
@Override
public String toString(){
return course;
}
}
********************************
package day1201;
import java.util.HashSet;
import java.util.Iterator;
public class Student {
private HashSet hs;
private int id; //学生学号
private String name;
public Student(){
hs = new HashSet(3);
}
public Student(int id,String name){
this();
this.setId(id);
this.setName(name);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void addCourse(Course c){ //添加该学生的选课
if(hs.add(c)){
c.SelectCourse(c.getCourse());
}
}
public void removeCourse(String name){ //删除该学生所选的对应课程
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Course c =(Course)obj;
while(c.getCourse().equals(name)){
it.remove();
c.deleteCourse(name);
break;
}
}
}
public void removeAllCourse(){ //删除该学生所选的所有课程
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Course c =(Course)obj;
it.remove();
c.deleteCourse(c.getCourse());
}
}
@Override
public String toString(){
return name+"\t选的课程为:"+hs.toString();
}
}
************************
package day1201;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class SchoolClass {
private HashSet hs;
public SchoolClass(){
hs = new HashSet(3);
}
public void addStudent(Student s){//添加学生
hs.add(s);
}
public void removeStudent(String name){//开除学生
Iterator it = hs.iterator();
while(it.hasNext()){
Object obj = it.next();
Student s =(Student)obj;
while(s.getName().equals(name)){
it.remove();
s.removeAllCourse();
break;
}
}
}
public static void main(String[] args) {
SchoolClass sc1 = new SchoolClass();//创建一个班级
Student s1 = new Student(1,"zhang");//构造3个学生,名字前面的是学号
Student s2 = new Student(2,"li");
Student s3 = new Student(3,"wang");
Course c1 = new Course("math");//构造4门课程
Course c2 = new Course("computer");
Course c3 = new Course("history");
Course c4 = new Course("physics");
sc1.addStudent(s1);//将3名学生放入班级sc1中
sc1.addStudent(s2);
sc1.addStudent(s3);
s1.addCourse(c1);//给学生1选课
s1.addCourse(c2);
s1.addCourse(c3);
s1.addCourse(c4);
s2.addCourse(c1);//给学生2选课
s2.addCourse(c2);
s2.addCourse(c3);
s2.addCourse(c2);//选一重复课程,检验程序用
s3.addCourse(c2);//给学生3选课
s3.addCourse(c1);
s2.removeCourse("computer");//学生2退选一门课程
sc1.removeStudent("wang");//开除一学生
//输出各门课程的选课人数
Map<String,Integer> hh=Course.hm;
Set<String> set =hh.keySet();
for(String str : set){
System.out.println("选["+str+"] \t的人数为:"+hh.get(str));
}
System.out.println();
//输出各个学生的选课情况
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
*********************
运行结果:
选[history] 的人数为:2
选[computer] 的人数为:1
选[math] 的人数为:2
选[physics] 的人数为:1
zhang 选的课程为:[physics, math, history, computer]
li 选的课程为:[history, math]
wang 选的课程为:[]
分享到:
相关推荐
在本项目中,"简单模拟教务处的选课系统的实现"是一个基于C++编程语言设计的教育管理软件。这个系统旨在模拟实际教务处的选课流程,为学生提供虚拟的选课环境。通过使用文件操作、容器管理和设计模式,开发者已经...
### 学生选课系统维护与测试知识点 #### 一、引言与项目背景 - **项目背景**:随着教育改革的推进,选修课在学生培养计划中的比重逐渐增加,传统的选课方式已不能满足现代教学的需求。网上选课系统可以提供一个...
【描述】:“自习用VB写的 学生选课系统”通常是指一个初学者或者自学者使用Visual Basic (VB)编程语言开发的一个教育管理软件,旨在模拟学校的学生选课流程。这个系统可能包括学生登录、课程浏览、选课操作、退课...
在本项目"基于Java实现学生模拟选课系统【100011987】"中,我们主要探讨的是如何运用Java编程语言来构建一个能够模拟学生选课流程的系统。这个系统的设计旨在帮助初学者理解面向对象编程的基本概念,并通过实际操作...
【学生选课系统源代码】是一个基于C#编程语言开发的应用程序,主要用于高校或教育机构的学生选课管理。这个系统提供了高效、便捷的选课功能,使得学生能够在线选择自己感兴趣的课程,同时方便教务管理人员对选课数据...
【标题】"选课系统demo.rar"是一款基于微信小程序开发的高校选课系统演示版本,它包括了Java后端服务和微信小程序的前端界面。这个压缩包提供的内容旨在展示一个完整的选课流程,帮助理解如何将这两者结合来构建一个...
角色:学校、学员、课程、讲师 要求: 1. 创建北京、上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, ...
【描述】:“学生选课系统源码是一个简单的学生选课系统,适用于毕业设计。其主要功能涵盖了院系管理、专业管理、课程管理、学生管理以及教师管理。” 该系统的核心功能模块包括: 1. **院系管理**:允许管理员...
这个系统旨在模拟一个基础的学生选课流程,帮助我们理解如何将Python和Django结合应用于Web开发。下面我们将深入探讨该项目涉及的关键知识点。 1. Django框架: Django是一个基于Python的开源Web应用框架,遵循...
本教学管理系统就是利用这三大框架进行设计与实现的,主要功能包括学生选课、教师排课、课程管理等,适用于模拟学校教学场景。 1. **Struts2框架**:Struts2作为表现层框架,负责处理HTTP请求,通过Action类进行...
Java DOS界面实现的简单学生选课系统是一种基于命令行接口(DOS界面)的应用程序,它主要用于模拟学校中的选课流程。在这个系统中,学生可以通过输入特定的命令来完成选课操作,而无需图形用户界面(GUI)。这个设计...
为实现选课和退课功能,维护学生和课程之间的二元关系及其逆关系(用指针序偶的集合实现)。可见,学生信息和课程信息在内存中是唯一的,选课和退课的操作都是对指针进行的,节省内存。注意,与硬盘交互的文件功能...
在本项目中,C语言被用来创建一个简单的学生选课系统,这需要开发者对C语言的基本语法、数据结构和控制流程有深入的理解。 【描述】中提到的“管理员登录和学生登录界面”是系统的核心功能之一,这涉及到用户身份...
【简单学生选课系统】是一个非常适合初学者学习的项目,旨在提供一个基础的教育环境,让学生模拟进行课程选择。这个系统可能包含用户管理、课程管理、选课操作以及相关的数据存储功能。通过这个项目,初学者可以深入...
《构建简易选课系统——基于"courseselect.rar"的解析》 在当今信息化时代,教育领域的数字化进程日益加快,选课系统作为高校教学管理的重要组成部分,其功能与体验直接影响到师生的教学活动。本文将深入探讨一款名...
这个系统旨在模拟实际高校的选课流程,帮助学生选择课程并管理他们的课程表。下面我们将深入探讨构建这样一个系统的几个关键知识点。 一、系统架构与设计 学生选课系统的基础架构通常包括前端用户界面和后端服务器...
C++选课系统是一种基于C++编程语言实现的教育管理软件,它主要用于模拟高校或培训机构的学生选课流程。这个小型系统通常包含学生信息管理、课程信息管理、选课操作以及一些基本的查询功能。下面我们将详细探讨该系统...
在本项目中,“超级简单的大学生数据库课设--学生选课系统”是一个针对初学者设计的简单应用程序,旨在帮助大学生理解和实践数据库与编程技术。这个系统主要使用C#语言进行前端开发,并结合SQL语言处理后端数据,...
《学生选课系统(C源码+报告)详解》 在信息技术日新月异的...总的来说,这个学生选课系统虽然简单,但涵盖了软件开发的基本流程,是学习C语言和系统设计的宝贵资源。希望读者能从中受益,进一步提升自己的编程技能。
SSH简易选课系统是一个典型的基于Java技术的Web应用程序,用于模拟大学中的在线选课流程。SSH是三个核心技术的缩写,分别是Spring、Struts和Hibernate,它们共同构建了一个强大的MVC(Model-View-Controller)架构。...