冲啊
2016-02-29 18:18:55浏览 5326
package com.imooc;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* 学生类
*
* @author jiuhu
*
*/
public class Student {
private String id; // 学号
private String name;// 姓名
private Set<Course> studentSelectCourses; // 学生选的课程 SET类里的元素是无序不可重复的对象;
// 构造方法
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
this.studentSelectCourses = new HashSet<Course>();
}
// getter,setter
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 Set<Course> getStudentSelectCourses() {
return studentSelectCourses;
}
public void setStudentSelectCourses(Set<Course> studentSelectCourses) {
this.studentSelectCourses = studentSelectCourses;
}
@Override // 覆写toString方法
public String toString() {
return "学号:" + id + ",姓名:" + name;
}
// 学生选课
public void addCourses(Course course) {
this.studentSelectCourses.add(course);
}
// 学生取消选课
public void removeCourses(Course course) {
this.studentSelectCourses.remove(course);
}
// 显示学生选课信息
public void printCourses() {
Iterator<Course> it = this.studentSelectCourses.iterator();
System.out.println(this.name + "同学所选的课程如下:");
while (it.hasNext()) {
System.out.println(it.next().toString());
}
}
}
package com.imooc;
/**
* 课程类
*
* @author jiuhu
*
*/
public class Course {
private String id; // 课程编号
private String name;// 课程名称
// 构造方法
public Course(String id, String name) {
super();
this.id = id;
this.name = name;
}
// getter,setter
public String getId() {
return id;
}
// 课程名称
public String getName(String id) {
return this.name;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override // 覆写toString方法
public String toString() {
return id + "." + name;
}
}
package com.imooc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/*
* 备选课程类
*/
public class SelectToCourses {
private List<Course> coursesList; // 课程列表 -- List对象里的元素有序可重复;
// 注意:实际生活中,这个备选课程应该是没有重复的,所以建议使用Set创建对象
public SelectToCourses() {
super();
this.coursesList = new ArrayList<Course>(); // 创建备选课程对象
}
public List<Course> getCoursesList() {
return coursesList;
}
public void setCoursesList(List<Course> coursesList) {
this.coursesList = coursesList;
}
// 增加备选课程
public void addCourses() {
Course[] courses = { new Course("1", "数据结构"), new Course("2", "C语言"), new Course("3", "大学英语"),
new Course("4", "高等数学"), new Course("5", "微机原理") };
this.coursesList.addAll(Arrays.asList(courses));
// 显示备选课程
this.printCourses();
}
// 显示备选课程
public void printCourses() {
Iterator<Course> it = this.coursesList.iterator();
System.out.println("**可选课程如下:**");
while (it.hasNext()) {
System.out.println(it.next().toString());
}
}
// 删除备选课程
public void removeCourses() {
Course[] courses = { new Course("1", "数据结构"), new Course("2", "C语言") };
this.coursesList.removeAll(Arrays.asList(courses));
// 显示课程
this.printCourses();
}
// 修改备选课程
public void modifyCourses() {
// 把4.高等数学改为4.离散数学
this.coursesList.set(0, new Course("1", "JAVA编程"));
this.printCourses();
}
}
package com.imooc;
import java.util.Scanner;
/**
* 测试类
*
* @author jiuhu
*
*/
public class Test {
public static void main(String[] args) {
String courseId; // 课程ID
int continueSelectCourse; // 继续选课标识 1是 0否
boolean flag; // 成功选课标识
Course course = null; // 课程 保存删除前的课程信息
// 创建备选课程对象
SelectToCourses selectTocourses = new SelectToCourses();
selectTocourses.addCourses();
// 创建学生对象
Student student = new Student("1", "小明");
System.out.println("欢迎学生:" + student.getName() + "选课!");
// 创建输入流对象
Scanner input = new Scanner(System.in);
while (true) {
// 输入课程的门数count
System.out.println("你想选多少门课?");
int count = input.nextInt(); // 课程门数
// 检查想选的课程数量
while (count > selectTocourses.getCoursesList().size() || count < 0) {
System.out.println("所选课程数量异常,请重新输入!");
System.out.println("你想选多少门课?");
count = input.nextInt(); // 课程门数
}
// 遍历课程门数
for (int i = 0; i < count; i++) {
System.out.print("请输入第" + (i + 1) + "门课程的编号:");
courseId = input.next();
flag = false; // 默认未找到匹配的课程
while (true) {
int j = 0;
// 遍历检查输入的课程编号
for (; j < selectTocourses.getCoursesList().size(); j++) {
// 课程编号存在,则加入学生所选的课程中去
if (courseId.equals(selectTocourses.getCoursesList().get(j).getId())) {
student.addCourses(selectTocourses.getCoursesList().get(j)); // 把学生所选的课程加入学生选的课程列表
// 保存删除前的课程信息
course = selectTocourses.getCoursesList().get(j);
// 把该课程从可选课程列表中删除,防止学生重复输入同一课程ID
selectTocourses.getCoursesList().remove(j);
// 打印学生所选的课程
student.printCourses();
// 找到匹配的课程
flag = true;
// 退出课程遍历
break;
}
}
// 未找到匹配的课程或输入的课程已选课
if (!flag) {
// 课程编号存在,但课程已选,则提示重新输入
if (student.getStudentSelectCourses().contains(course)) {
course = null;
System.out.println("你输入的课程ID=" + courseId + "已经选课,请重新输入!");
} else {
System.out.println("你输入的课程ID=" + courseId + "不存在,请重新输入!");
}
// 提示输入课程ID
System.out.print("请输入第" + (i + 1) + "门课程的编号:");
courseId = input.next();
} else { // 找到匹配的课程,完成一门选课
break;
}
}
}
// 检查是否还有课程可选
if (selectTocourses.getCoursesList().size() == 0) {
System.out.println("*已无可选的课程,自动退出系统!*");
break;
}
System.out.println("继续选课: 1是 0否");
continueSelectCourse = input.nextInt();
if (continueSelectCourse == 1) {
selectTocourses.printCourses();
continue;
} else {
input.close(); // 关闭输入流
System.out.println("**您已退出选课系统!**");
break;
}
}
}
}
热门评论
先写表 再写视图 然后写代码
我建议先把项目的框架显示出来,有源代码更好!
我觉得应该在选课前,先要把所有可选的课程都显示出来,这样输入课程ID的时候才知道应该输入多少?否则用户盲目输入,总是显示课程ID不存在的话,会影响用户体验!个人建议,仅供参考!