java选课系统_Java实现选课系统(用集合实现)

这个博客介绍了一个使用Java实现的选课系统,包括Course类、CourseList类、Student类和StudentMap类。系统能进行添加、查询、修改和删除课程,以及学生选课、退课操作。博客提供了完整的代码示例并展示了运行结果。
摘要由CSDN通过智能技术生成

实现步骤:

构造课程类Course

构造课程列表类CourseList

构造学生类Student

构造学生--课程映射StudentMap类

主运行程序类Index类

Course.java:

package dk.courses;

/**

* @author Administrator

* 课程类

*/

public class Course {

private String id;

private String name;

public Course(String id, String name) {

super();

this.id = id;

this.name = name;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String toString(){

return "课程编号:"+this.getId()+"\t课程名称:"+this.getName();

}

/*public boolean equals(Object obj){

if(this==obj)

return true;

if(obj==null)

return false;

if(!(obj instanceof Course))

return false;

Course c = (Course)obj;

if(this.name==null){

if(c.name==null)

return true;

else

return false;

}else{

if(this.name.equals(c.name))

return true;

else

return false;

}

}*/

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Course other = (Course) obj;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

CourseList.java:

package dk.courses;

import java.util.List;

import java.util.Iterator;

import java.util.ArrayList;

/**

* @author Administrator

* 课程列表类

*/

public class CourseList {

public static List courselist = new ArrayList();;//课程集合

public CourseList() {}

public List getCourselist() {

return courselist;

}

public void setCourselist(List courselist) {

CourseList.courselist = courselist;

}

//添加课程

public static void addCourse(String id, String name){

Course c = new Course(id, name);

System.out.println("添加了课程:\t"+"课程编号:"+c.getId()+"\t"+"课程名称:"+c.getName());

courselist.add(c);

}

//查询课程

public static Course getCourse(String id){

Iterator it = CourseList.courselist.iterator();

while(it.hasNext()){

Course c = it.next();

if(c.getId()==id)

return c;

}

return null;

}

//获取课程在集合中的索引

public static int getCourseIndex(String id){

int len = CourseList.courselist.size();

for(int i=0; i

Course c = CourseList.courselist.get(i);

if(c.getId()==id)

return i;

}

return -1;

}

//获取课程在集合中的索引

public static int getCourseIndex(Course c){

return CourseList.courselist.indexOf(c);

}

//修改课程

public static boolean setCourse(String id, String name){

int index = getCourseIndex(id);

if(index>=0){

Course c = CourseList.courselist.get(index);

c.setName(name);

CourseList.courselist.set(index, c);

return true;

}

return false;

}

//移除课程

public static boolean removeCourse(String id){

int index = getCourseIndex(id);

if(index>=0){

return CourseList.courselist.remove(index) != null;

}

return false;

}

//移除所有课程

public static boolean removeAllCourse(){

CourseList.courselist.clear();

return true;

//return this.courselist.removeAll(courselist);

}

//获取所有课程

public static void getAllCourse(){

Iterator it = CourseList.courselist.iterator();

show("=========================================================");

show("课程列表如下:(共有"+CourseList.courselist.size()+"门课程)");

show("=========================================================");

while(it.hasNext()){

Course c = it.next();

show(c.toString());

}

show("=========================================================");

}

public static void show(Object obj){

System.out.println(obj.toString());

}

//查找是否存在课程

public static boolean containCourse(Course c){

return CourseList.courselist.contains(c);

}

}

Student.java

package dk.students;

import java.util.ArrayList;

import dk.courses.Course;

import dk.courses.CourseList;

/**

* @author Administrator

* 学生类

*/

public class Student implements Comparable{

private String id;

private String name;

private ArrayList courses;//储存课程编号

public Student(String id, String name) {

super();

this.id = id;

this.name = name;

this.courses = new ArrayList();

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public ArrayList getCourses() {

return courses;

}

public void setCourses(ArrayList courses) {

this.courses = courses;

}

//选择课程

public boolean selectCourses(String id){

if(CourseList.getCourseIndex(id)==-1){

CourseList.show("课程不存在!");

return false;

}

Course c = CourseList.getCourse(id);

show("您选择了以下课程:");

show(c.toString());

return this.courses.add(id);

}

//获取课程信息

public void printCourses(){

show("=========================================================");

show(this.toString());

show("=========================================================");

show("课表如下:");

for(String id:this.courses){

Course c = CourseList.getCourse(id);

show(c.toString());

}

show("=========================================================");

}

//删除课程

public boolean removeCourse(String id){

int index = this.getIndex(id);

if(index==-1){

return false;

}

this.courses.remove(index);

return true;

}

public int getIndex(String id){

for(int i=0;i

if(this.courses.get(i)==id)

return i;

}

return -1;

}

public String toString(){

return "学号:"+this.getId()+"\t姓名:"+this.getName()+"\t共选择了门"+this.courses.size()+"课";

}

public static void show(Object obj){

System.out.println(obj.toString());

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((id == null) ? 0 : id.hashCode());

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Student other = (Student) obj;

if (id == null) {

if (other.id != null)

return false;

} else if (!id.equals(other.id))

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

@Override

public int compareTo(Student o) {

//return this.name.compareTo(o.name);

return this.id.compareTo(o.id);

}

}

StudentMap.java

package dk.map;

import java.util.Map.Entry;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;

import dk.students.Student;

public class StudentMap {

public Map students;

private Scanner console;

public StudentMap(){

this.students = new HashMap();

}

//创建键值对

public void putStudents(){

console = new Scanner(System.in);

int i = 0;

while(i<3){

System.out.println("请输入学生ID");

String Id = console.next();

Student st = this.students.get(Id);

if(st==null){

show("请输入学生的姓名");

String Name = console.next();

Student student = new Student(Id,Name);

this.students.put(Id, student);

show("成功添加了学生:"+students.get(Id).getName());

i++;

}else{

show("该学生Id已被占用");

continue;

}

}

}

//获取键值对

public void getKeySet(){

Set keyset = students.keySet();

show("总有"+students.size()+"个学生");

for(String id:keyset){

Student st = students.get(id);

if(st!=null){

show("学生:"+st.getName());

}

}

}

//删除键值对

public void removeKey(){

while(true){

show("请输入要删除学生的Id:");

String Id = console.next();

Student st = students.get(Id);

if(st==null){

show("学生信息不存在!");

continue;

}

students.remove(Id);

show("成功删除学生"+st.getName());

break;

}

}

//遍历集合

public void printEntrySet(){

Set> entryset = students.entrySet();

for(Entryentry:entryset){

show("取得的键值:"+entry.getKey());

show("取得的值:"+entry.getValue().toString());

}

}

//修改键值对

public void setKey(){

while(true){

show("请输入要修改的学生Id:");

String Id = console.next();

Student st = students.get(Id);

if(st==null){

show("学生不存在,请重新输入");

continue;

}

show("当前学生Id对应的学生姓名:"+st.getName());

show("请重新输入学生姓名:");

String newName = console.next();

Student nst = new Student(Id,newName);

students.put(Id, nst);

show("修改学生成功!");

getKeySet();

break;

}

}

public void test(){

students.containsValue(new Student(null,"001"));

}

public static void show(Object obj){

System.out.println(obj.toString());

}

}

Index.java

package dk.main;

import dk.courses.Course;

import dk.courses.CourseList;

import dk.students.Student;

public class Index {

public static void main(String[] args){

//CourseList list = new CourseList();

CourseList.show("开始添加课程");

CourseList.show("=========================================================");

CourseList.addCourse("001","Java课程设计");

CourseList.addCourse("002","数据结构");

CourseList.addCourse("003","高等数学");

CourseList.addCourse("004","Java课程设计");

CourseList.addCourse("005","计算机网络基础");

CourseList.getAllCourse();

CourseList.setCourse("001", "C语言程序设计");

CourseList.getAllCourse();

Course c = CourseList.getCourse("002");

Course c1 = new Course("0088",c.getName());

CourseList.show(CourseList.getCourseIndex(c1));

//Course c = CourseList.getCourse("001");

//Course c1 = new Course(c.getId(),c.getName());

CourseList.show(CourseList.containCourse(c1));

CourseList.removeCourse("004");

//CourseList.removeAllCourse();

CourseList.show(c.toString());

CourseList.getAllCourse();

Student s = new Student("007","DekingChen");

s.selectCourses("001");

s.selectCourses("002");

s.selectCourses("003");

s.selectCourses("005");

s.removeCourse("003");

s.printCourses();

}

}

运行结果:

开始添加课程

=========================================================

添加了课程: 课程编号:001 课程名称:Java课程设计

添加了课程: 课程编号:002 课程名称:数据结构

添加了课程: 课程编号:003 课程名称:高等数学

添加了课程: 课程编号:004 课程名称:Java课程设计

添加了课程: 课程编号:005 课程名称:计算机网络基础

=========================================================

课程列表如下:(共有5门课程)

=========================================================

课程编号:001 课程名称:Java课程设计

课程编号:002 课程名称:数据结构

课程编号:003 课程名称:高等数学

课程编号:004 课程名称:Java课程设计

课程编号:005 课程名称:计算机网络基础

=========================================================

=========================================================

课程列表如下:(共有5门课程)

=========================================================

课程编号:001 课程名称:C语言程序设计

课程编号:002 课程名称:数据结构

课程编号:003 课程名称:高等数学

课程编号:004 课程名称:Java课程设计

课程编号:005 课程名称:计算机网络基础

=========================================================

1

true

课程编号:002 课程名称:数据结构

=========================================================

课程列表如下:(共有4门课程)

=========================================================

课程编号:001 课程名称:C语言程序设计

课程编号:002 课程名称:数据结构

课程编号:003 课程名称:高等数学

课程编号:005 课程名称:计算机网络基础

=========================================================

您选择了以下课程:

课程编号:001 课程名称:C语言程序设计

您选择了以下课程:

课程编号:002 课程名称:数据结构

您选择了以下课程:

课程编号:003 课程名称:高等数学

您选择了以下课程:

课程编号:005 课程名称:计算机网络基础

=========================================================

学号:007 姓名:DekingChen 共选择了门3课

=========================================================

课表如下:

课程编号:001 课程名称:C语言程序设计

课程编号:002 课程名称:数据结构

课程编号:005 课程名称:计算机网络基础

=========================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值