学生选课系统基础版

功能说明

1.通过Map<String,Student>进行学生信息管理,其中hey为学生ID。value为学生对象
2.通过键盘输入学生信息
3.对集合中的学生信息进行增、删、改操作

步骤一:先创建学生类和课程类

import java.util.HashSet;
import java.util.Set;

public class Student {		//学生类
	public String id;
	public String name;		//公有
	 
	public Set courses;
	
	public Student(String id,String name) { //添加构造器
		this.id = id;
		this.name = name;
		this.courses = new HashSet();
	}
}


public class Course {		//课程类

	public String id;		//公有
	public String name;
	
	public Course(String id,String name){ //添加构造器
		this.id = id;
		this.name = name;
	}
}

步骤二:添加课程

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListTest {   		//备选课程类

	public List coursesToSelect; //用于存放备选课程的List
	
	public ListTest() {
		this.coursesToSelect = new ArrayList();
	}
	
	public void testAdd() {      //用于往coursesToSelect中添加备选课程
		//创建一个课程对象,并通过调用add方法,添加到备选课程List中
		Course cr1 = new Course("1","web");
		coursesToSelect.add(cr1);
		Course temp = (Course) coursesToSelect.get(0);
		System.out.println("添加了课程:" + temp.id +"."+temp.name);
		
		Course cr2 = new Course("2","java");
		coursesToSelect.add(0,cr2);
		Course temp2 = (Course) coursesToSelect.get(0);
		System.out.println("添加了课程:" + temp2.id +"."+temp2.name);
		
		Course[] course = {new Course("3","计算机基础"),new Course("4","ps")};//用数组方法添加
		coursesToSelect.addAll(Arrays.asList(course));
		Course temp3 = (Course) coursesToSelect.get(2);
		Course temp4 = (Course) coursesToSelect.get(3);
		
		System.out.println("添加两门课程:"+temp3.id+":"+
				temp3.name +";"+temp4.id+":"+temp4.name);
	}
	public static void main(String[] args) {
		ListTest lt = new ListTest();
		lt.testAdd();
	}
}

步骤三:课程查询 

import java.util.Iterator;
public void testGet() {			//取得List中的元素方法
		int size = coursesToSelect.size();
		System.out.println("有如下课程待选:");
		for(int i = 0;i<size;i++) {
			Course cr = (Course) coursesToSelect.get(i);
			System.out.println("课程:"+cr.id+":"+cr.name);
		}
		
		public void testIterator() {		//通过迭代器来遍历List
		//通过集合的iterator方法,取得迭代器的实例
		Iterator it = coursesToSelect.iterator();
		System.out.println("有如下课程待选(通过迭代器访问):");
		while(it.hasNext()) {
			Course cr = (Course)it.next();
			System.out.println("课程:"+cr.id+":"+cr.name);
		}
		
		public void testForEach() {
		System.out.println("有如下课程待选(通过for each访问):");
		for(Object obj:coursesToSelect) {
			Course cr = (Course) obj;
			System.out.println("课程:"+cr.id+":"+cr.name);
		}
	}
	
		lt.testGet();
		lt.testIterator();
		

步骤四:课程修改,课程删除

修改:
/**
	 * 修改List中的元素
	 * @param args
	 * public void testModify(){
	 * coursesToSelect.set(索引位置,new Course(新的课程对象)("新id","新课程");
	 * 调用方法:
	 * lt.testModify();
	 * lt.testForEach();
	 * }
	 */
删除:
/**
	 * 课程删除
	 * @param args
	 * public void testRemove(){
	 * Course cr = (Course) coursesToSelect.get(4);
	 * System.out.println("即将删除的课程");
	 * coursesToSelect.remove(4);
	 * System.out.println("成功删除课程");
	 * testForEach();(调用的方法)
	 * lt.testRemove();(在main中调用的方法)
	 * }
	 */

步骤五:创建学生,学生自己选课

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class SetTest {
	public List<Course> coursesToSelect;
	
	public SetTest() {
		coursesToSelect = new ArrayList<Course>();
	}

	public void testAdd() {      //用于往coursesToSelect中添加备选课程
		//创建一个课程对象,并通过调用add方法,添加到备选课程List中
		Course cr1 = new Course("1","web");
		coursesToSelect.add(cr1);
		Course temp = (Course) coursesToSelect.get(0);
		//System.out.println("添加了课程:" + temp.id +"."+temp.name);
		
		Course cr2 = new Course("2","java");
		coursesToSelect.add(0,cr2);
		Course temp2 = (Course) coursesToSelect.get(0);
		//System.out.println("添加了课程:" + temp2.id +"."+temp2.name);
		
		Course[] course = {new Course("3","计算机基础"),new Course("4","ps")};//用数组方法添加
		coursesToSelect.addAll(Arrays.asList(course));
		Course temp3 = (Course) coursesToSelect.get(2);
		Course temp4 = (Course) coursesToSelect.get(3);
		//System.out.println("添加两门课程:"+temp3.id+":"+
				//temp3.name +";"+temp4.id+":"+temp4.name);
	}
	public void testForEach() {
		System.out.println("有如下课程待选(通过for each访问):");
		for(Object obj:coursesToSelect) {
			Course cr = (Course) obj;
			System.out.println("课程:"+cr.id+":"+cr.name);
		}
	}
	public static void main(String[] args) {
		SetTest st = new SetTest();
		st.testAdd();
		st.testForEach();
		//创建一个学生对象
		Student student = new Student("1","小明");
		System.out.println("欢迎学生:"+student.name+"选课");
		//创建一个Scanner对象,用来接收从键盘输入的课程ID
		Scanner console = new Scanner(System.in); 
		
		for(int i = 0;i<3;i++) {
			System.out.println("请输入课程ID");
			String courseId = console.next();
			for(Course cr :st.coursesToSelect) {
				if(cr.id.equals(courseId)) {
					student.courses.add(cr);
				}
			}
		}
		st.testForEachForSet(student);
	}
	public void testForEachForSet(Student student) {
		//打印输出,学生所选的课程
				for(Course cr:student.courses) {
					System.out.println("选择课程:"+cr.id+":"+cr.name);
					
	}
	}
}




步骤六:使用Map增加、删除、修改学生

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class MapText {
	public Map<String,Student>students;//用来承装学生类型对象
	public MapText() {		//在构造器中初始化students属性
		this.students = new HashMap<String,Student>();
	}
	//测试添加:输入学生ID,判断是否被占用 
	//若未被占用,则输入姓名,创建新学生对象,并且添加到students中
	public void testPut() {
		//创建一个Scanner对象,用来获取输入的学生ID和姓名
		Scanner console = new Scanner(System.in);
		int i = 0;
		while(i<3) {
			System.out.println("请输入学生ID:");
			String ID = console.next();
			//判断该ID是否被占用
			Student st = students.get(ID);
			if(st==null) {
			//提示输出学生名字
				System.out.println("请输入学生姓名");
				String name = console.next();
				//创建新的学生对象
				Student newStudent = new Student(ID,name);
				//通过通过students的put方法,添加ID-学生映射
				students.put(ID, newStudent);
				System.out.println("成功添加学生:"+students.get(ID).name);
				i++;
			}else {
				System.out.println("该学生ID已被占用!");
				continue;
			}
		}
	}

	//测试Map的keySet方法
	public void testKeySet() {
		//通过KeySet方法,返回Map中的所有“键”的Set集合
		Set<String> keySet = students.keySet();
		//取得students的容量
		System.out.println("总共有:"+ students.size()+"个学生");
		//遍历KeySet,取得每一个键,再调用get方法取得每个键对应的value
		for(String stuId:keySet) {
			Student st = students.get(stuId);
			if(st!=null)
				System.out.println("学生:"+st.name);
		}
	}
	
	//测试删除Map中的映射
	public void testRemove() {
		//获取从键盘输入的待删除学生ID字符串
		Scanner console = new Scanner(System.in);
		while(true) {
			//提示输入待删除的学生的ID
			System.out.println("请输入要删除的学生ID。"); 
			String ID = console.next();
			//判断该ID是否有对应的学生对象
			Student st = students.get(ID);
			if(st==null) {
				//提示输入的ID不存在
				System.out.println("该ID不存在");
				continue;
			}
			students.remove(ID);
			System.out.println("成功删除学生:"+st.name);
			break;
		}
	}
	
	//通过entrySet方法来遍历Map
	public void testEntrySet() {
		//通过entrySet方法,返回Map中的所有键值对
		Set<Entry<String,Student>>entrySet = students.entrySet();
		for(Entry<String,Student> entry:entrySet) {
			System.out.println("取得键:"+entry.getKey());
			System.out.println("对应的值为:"+entry.getValue());
		}
	}
	
	//利用put方法修改Map中的已有映射
	public void testModify() {
		//提示输入要修改的学生ID
		System.out.println("请输入要修改的学生ID:");
		//创建一个Scanner对象,去获取从键盘上输入的学生ID字符串
		Scanner console = new Scanner(System.in);
		while(true) {
			//取得从键盘输入的学生ID
			String stuID = console.next();
			//从students中查找该学生ID对应的学生对象
			Student student = students.get(stuID);
			if(student==null) {
				System.out.println("该ID不存在!请重新输入!");
				continue;
			}
			//提示当前对应的学生对象姓名
			System.out.println("当前该学生ID,所对应的学生为:"+student.name);
			//提示输入新的学生姓名,来修改已有的映射
			System.out.println("请输入新的学生姓名:");
			String name = console.next();
			Student newStudent = new Student(stuID,name);
			students.put(stuID, newStudent);
			System.out.println("修改成功!");
			break;
		}
	}
	
	public static void main(String[] args) {
		//调用方法
		MapText mt = new MapText();
		mt.testPut();
		mt.testKeySet();
		mt.testRemove();
		mt.testEntrySet();
		mt.testModify();
		mt.testEntrySet();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值