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++简单模拟教务处的学生选课系统,其中有文件操作,容器使用,有一些设计模式的影子,继承与多态
角色:学校、学员、课程、讲师 要求: 1. 创建北京、上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, ...
为实现选课和退课功能,维护学生和课程之间的二元关系及其逆关系(用指针序偶的集合实现)。可见,学生信息和课程信息在内存中是唯一的,选课和退课的操作都是对指针进行的,节省内存。注意,与硬盘交互的文件功能...
简单的选课系统,可以模拟简单的学校选课系统,这里学院只设置一个,可依此增加
本实验主要为基于继承关系改进学生选课模拟系统,即在实验二的基础上做继承变动 (1)新建一个 package 包,将原程序中需要被继承的父类提取出来 (2)在子类中运用继承关键字 extends,调用继承父类中方法、数据,...
微信小程序实现的简单教务管理系统。 此系统为本人本科毕业设计时所做的一个简单小程序,最简单的教务管理系统,设计数据的增删改查功能。可作为新学习微信小程序的人员的参考代码。其中的数据为写死的数据(不是...
# ChatGPT在高校选修课管理系统中的运用,开发选课小游戏代码 本文将介绍如何在高校选修课管理系统中运用ChatGPT技术,以及如何开发一个选课小游戏的代码。 ## ChatGPT在高校选修课管理系统中的运用 ChatGPT是一...
java编写的简单的教务系统,数据库采用mysql。主要功能是学生选课、教师成绩录入、管理员管理老师和学生等。
本项目只是简单模拟教务管理系统的基本功能,通过熟悉的教务管理系统开发来综合训练Struts2和 Hibernate5框架技术的整合应用,并进一步提高项目实践能力。 项目实现的功能包括学生管理部分,教师管理部分和管理员管理...
给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。完成下面的工作 2.1 ...
让你的会员无论身在何处也可以随时用手机上网查看您网站提供的股票信息文章会员个人信息,及享受会员特殊服务 ASK在线专家问题系统 会员可通过该系统向网站专家提出各种股票相关的问题,网站专家可及时解答会员提出...
伴随着信息行业的蓬勃发展和人们办公自动化意识的增强,会员管理部门的工作也越来越繁重,原来的会员管理系统已经不能完全满足相关人员使用的需要。为了协助信息行业开展会员管理工作,提高工作效率,充分利用信息...
选择购买VIP会员服务,无需积分下载资源 。 http://vip.csdn.net 评价资源返积分: 立即评价 第一次绑定手机,将获50下载积分及100论坛可用分。 立即绑定 论坛可用分兑换下载积分。 立即兑换 下载资源意味着您...
会员类型管理 - 分为普通用户和商业用户(收费用户)管理,并可以自由转换类型,模拟登录会员中心 会员管理系统 - 会员注册、登录、重设密码、会员资料修改 权限控制系统 - 针对会员类型或单个会员设置提交业务的权限...
睿祺美发行业管理软件是一套专业的为美容美发店设计的店务收银管理系统,使用该系统可以迅速、快捷的服务于顾客。方便的管理会员卡消费和员工提成工资核算。让老板更容易的实时查询店面经营情况,让美发店管理人员从...
一对多的方式,有2种系统,一个服务器端,多个手持终端,项目中,服务器端可以用一台电脑模拟,手持终端是用实验箱模拟,一个实验箱对应一个手持终端。由于硬件受限,我们只要完成一对一的方式,即只有一个手持终端...
PageAdmin是一款支持多分站、多语种,集成内容发布、信息发布、自定义表单、自定义模型、会员系统、业务管理等功能于一体的企业级网站管理系统,于2009年正式发布,目前全国用户已经超过50万以上,被广泛用于企业、...
A、数据库系统复杂,而文件系统简单 B、文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决 C、文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件 D、文件系统管理的数据量较少,而...
应用与windows软件一样安装,卸载简单,应用独立系统其它升级安装不影响应用运行,二次开发学习简单。 1.完美的 应用扩展 二次开发应用直接后台创建,安装应用支持批量安装 zip 压缩包或安装解压包,无限的扩展...
数据库课程设计——学生信息管理系统 开发平台:sqlserver2000、vs2005 语言:C#