`
veivei5521
  • 浏览: 6776 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

简单模拟选课系统

阅读更多
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写的 学生选课系统

    【描述】:“自习用VB写的 学生选课系统”通常是指一个初学者或者自学者使用Visual Basic (VB)编程语言开发的一个教育管理软件,旨在模拟学校的学生选课流程。这个系统可能包括学生登录、课程浏览、选课操作、退课...

    基于Java实现学生模拟选课系统【100011987】

    在本项目"基于Java实现学生模拟选课系统【100011987】"中,我们主要探讨的是如何运用Java编程语言来构建一个能够模拟学生选课流程的系统。这个系统的设计旨在帮助初学者理解面向对象编程的基本概念,并通过实际操作...

    学生学生选课系统源代码

    【学生选课系统源代码】是一个基于C#编程语言开发的应用程序,主要用于高校或教育机构的学生选课管理。这个系统提供了高效、便捷的选课功能,使得学生能够在线选择自己感兴趣的课程,同时方便教务管理人员对选课数据...

    选课系统demo.rar

    【标题】"选课系统demo.rar"是一款基于微信小程序开发的高校选课系统演示版本,它包括了Java后端服务和微信小程序的前端界面。这个压缩包提供的内容旨在展示一个完整的选课流程,帮助理解如何将这两者结合来构建一个...

    python选课系统

    角色:学校、学员、课程、讲师 要求: 1. 创建北京、上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, ...

    web学生选课系统源码

    【描述】:“学生选课系统源码是一个简单的学生选课系统,适用于毕业设计。其主要功能涵盖了院系管理、专业管理、课程管理、学生管理以及教师管理。” 该系统的核心功能模块包括: 1. **院系管理**:允许管理员...

    使用Django、python简单的实现学生选课管理系统.zip

    这个系统旨在模拟一个基础的学生选课流程,帮助我们理解如何将Python和Django结合应用于Web开发。下面我们将深入探讨该项目涉及的关键知识点。 1. Django框架: Django是一个基于Python的开源Web应用框架,遵循...

    基于SSH的学校教学管理系统 学生选课系统 源代码

    本教学管理系统就是利用这三大框架进行设计与实现的,主要功能包括学生选课、教师排课、课程管理等,适用于模拟学校教学场景。 1. **Struts2框架**:Struts2作为表现层框架,负责处理HTTP请求,通过Action类进行...

    java dos界面实现的简单学生选课系统

    Java DOS界面实现的简单学生选课系统是一种基于命令行接口(DOS界面)的应用程序,它主要用于模拟学校中的选课流程。在这个系统中,学生可以通过输入特定的命令来完成选课操作,而无需图形用户界面(GUI)。这个设计...

    C++作业_选课系统

    为实现选课和退课功能,维护学生和课程之间的二元关系及其逆关系(用指针序偶的集合实现)。可见,学生信息和课程信息在内存中是唯一的,选课和退课的操作都是对指针进行的,节省内存。注意,与硬盘交互的文件功能...

    1_C语言_学生选课系统_

    在本项目中,C语言被用来创建一个简单的学生选课系统,这需要开发者对C语言的基本语法、数据结构和控制流程有深入的理解。 【描述】中提到的“管理员登录和学生登录界面”是系统的核心功能之一,这涉及到用户身份...

    简单学生选课系统

    【简单学生选课系统】是一个非常适合初学者学习的项目,旨在提供一个基础的教育环境,让学生模拟进行课程选择。这个系统可能包含用户管理、课程管理、选课操作以及相关的数据存储功能。通过这个项目,初学者可以深入...

    courseselect.rar_选课_选课系统

    《构建简易选课系统——基于"courseselect.rar"的解析》 在当今信息化时代,教育领域的数字化进程日益加快,选课系统作为高校教学管理的重要组成部分,其功能与体验直接影响到师生的教学活动。本文将深入探讨一款名...

    简单的学生选课系统,新手可以看看

    这个系统旨在模拟实际高校的选课流程,帮助学生选择课程并管理他们的课程表。下面我们将深入探讨构建这样一个系统的几个关键知识点。 一、系统架构与设计 学生选课系统的基础架构通常包括前端用户界面和后端服务器...

    c++选课系统小系统案例

    C++选课系统是一种基于C++编程语言实现的教育管理软件,它主要用于模拟高校或培训机构的学生选课流程。这个小型系统通常包含学生信息管理、课程信息管理、选课操作以及一些基本的查询功能。下面我们将详细探讨该系统...

    超级简单的大学生数据库课设--学生选课系统

    在本项目中,“超级简单的大学生数据库课设--学生选课系统”是一个针对初学者设计的简单应用程序,旨在帮助大学生理解和实践数据库与编程技术。这个系统主要使用C#语言进行前端开发,并结合SQL语言处理后端数据,...

    学生选课系统(c源码+报告)

    《学生选课系统(C源码+报告)详解》 在信息技术日新月异的...总的来说,这个学生选课系统虽然简单,但涵盖了软件开发的基本流程,是学习C语言和系统设计的宝贵资源。希望读者能从中受益,进一步提升自己的编程技能。

    基于SSH的简易选课系统(含数据库文件).zip

    SSH简易选课系统是一个典型的基于Java技术的Web应用程序,用于模拟大学中的在线选课流程。SSH是三个核心技术的缩写,分别是Spring、Struts和Hibernate,它们共同构建了一个强大的MVC(Model-View-Controller)架构。...

Global site tag (gtag.js) - Google Analytics