首页 > 编程 > Java > 正文

java实现选课系统

2019-11-26 09:16:04
字体:
来源:转载
供稿:网友

本文实例为大家分享了java实现选课系统的具体代码,供大家参考,具体内容如下

这个程序主要是练习IO(文件读写,序列化),集合框架的使用

学生端可以实现,查找课程,增加选课,删除选课的功能

管理端可以实现对备选课程,学生信息的增删查改

缺点:登陆操作没有实现密码验证和多态。           

另外map对象明明put了,可是get的时候竟然会取到null,而且尝试多次,有时候成功,有时候取到null,并不确定。据说这是由多线程引起的map取值为null,因为多线程部分还没开始学习,所以也没做修改。

//课程信息package selectCourse; import java.io.Serializable; public class Course implements Serializable{ private String id; private String name;  public Course(String id, String name) { super(); this.id = id; this.name = name; }  public Course() { super(); }  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 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; } 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 (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; }  public String toString() { return "课程号:" + id + " " + "课程名:" + name; } }
//学生信息package selectCourse; import java.io.Serializable;import java.util.HashSet;import java.util.Set; public class Student implements Serializable,Comparable<Student>{  private int id; private String name; private Set<Course> courses;  public Student(int id, String name) { super(); this.id = id; this.name = name; this.courses = new HashSet<Course>(); }  public Student() { super(); this.id = 0; this.name = null; this.courses = new HashSet<Course>(); }  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 Set<Course> getCourses() { return courses; }  public void setCourses(Set<Course> courses) { this.courses = courses; }  public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; return result; }  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 != other.id)  return false; return true; }   public String toString() { return "学号:"+id+" " +"姓名:"+name; } //遍历输出所选课程 public void travese() { if(courses.size()>0) { for (Course course : courses) {  System.out.println(course); } } else {  System.out.println("还没有选课"); } }  public int compareTo(Student s) {   int result=this.id-s.id;  return result; }  }
//管理端package selectCourse; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Scanner; public class AdministratorOp {//管理端,用来管理学生信息和备选课程  List<Student> students = new ArrayList<Student>(); Map<Integer, Student> map1 = new HashMap<Integer, Student>(); List<Course> courses = new ArrayList<Course>(); Map<String, Course> map2 = new HashMap<String, Course>(); Scanner in = new Scanner(System.in);  public AdministratorOp() { } //~~~~~~~~~~~~~~~~~从文件读入List~~~~~~~~~~~~~~~~~~~~~ public void load1() { File file = new File("students.txt"); if (!file.exists()) {  try {  file.createNewFile();  } catch (IOException e) {  e.printStackTrace();  } } FileInputStream fis; try {  fis = new FileInputStream(file);  ObjectInputStream ois = new ObjectInputStream(fis);  students = (List<Student>) ois.readObject();  ois.close();  fis.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); } catch (ClassNotFoundException e) {  e.printStackTrace(); }  }  public void load2() { File file = new File("courses.txt"); if (!file.exists()) {  try {  file.createNewFile();  } catch (IOException e) {  e.printStackTrace();  } } FileInputStream fis; try {  fis = new FileInputStream(file);  ObjectInputStream ois = new ObjectInputStream(fis);  courses = (List<Course>) ois.readObject();  ois.close();  fis.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); } catch (ClassNotFoundException e) {  e.printStackTrace(); }  } //将信息写回文件 public void save1() { File file = new File("students.txt"); FileOutputStream fos; try {  fos = new FileOutputStream(file);  ObjectOutputStream oos = new ObjectOutputStream(fos);  oos.writeObject(students);  oos.close();  fos.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  // TODO 自动生成的 catch 块  e.printStackTrace(); }  }  public void save2() { File file = new File("courses.txt"); FileOutputStream fos; try {  fos = new FileOutputStream(file);  ObjectOutputStream oos = new ObjectOutputStream(fos);  oos.writeObject(courses);  oos.close();  fos.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  // TODO 自动生成的 catch 块  e.printStackTrace(); }  } //~~~~~~~~~~~~~~~~~~~~~~~~~ 根据List来创建Map~~~~~~~~~~~~~~~~~~~~~~~ public void createMap1() { for (int i = 0; i < students.size(); i++) {  map1.put(students.get(i).getId(), students.get(i)); } }  public void createMap2() { for (int i = 0; i < courses.size(); i++) {  map2.put(courses.get(i).getId(), courses.get(i)); } }  // ~~~~~~~~~~~~~~~~~~~~~~ 增删查改~~~~~~~~~~~~~~~~~~~~~~~ // 增加学生基本信息 public void add() { System.out.println("输入学生信息,输入0结束"); while (true) {  int id = in.nextInt();  if(id!=0) {  String name = in.next();  Student s = new Student(id, name);  students.add(s);  Collections.sort(students);  map1.put(id, s);  System.out.println("添加成功");  }  if (id == 0) {  break;  } } }  // 删除学生信息 public void del() { while(true) {  int id = in.nextInt();  Student s = map1.get(id);  students.remove(s);  map1.remove(id);  System.out.println("移除成功");  if (id == 0) {  break;  } } } // 增加课程基本信息 public void add2() { System.out.println("输入课程信息,输入end结束"); while (true) {   String id = in.nextLine();  if(!id.equals("end"))  {  String name = in.nextLine();  Course cr = new Course(id, name);  courses.add(cr);  map2.put(id, cr);  System.out.println("添加成功");  }  else{  //System.out.println("添加结束");  break;  } } }  // 删除课程信息 public void del2() { while(true) {  String id = in.next();  if(!id.equals("end")) {  Course cr = map2.get(id);  courses.remove(cr);  map2.remove(id);  System.out.println("移除成功");  }  else  {  break;  } } }  // 根据学号查找学生 public void query1() { System.out.println("请输入要查询的学生学号:"); if (in.hasNext()) {  int id = in.nextInt();  System.out.println(map1.get(id));  map1.get(id).travese(); } }  // 根据课程号查找课程 public void query2() { System.out.println("请输入要查询的课程号:"); if (in.hasNext()) {  String id = in.nextLine();  System.out.println(map2.get(id)); } }  // 修改学生基本信息 public void modify1() { System.out.println("请输入要修改的学生的学号:"); int id = in.nextInt(); Student s = map1.get(id); System.out.println("输入修改后的学生信息:"); int no = in.nextInt(); String name = in.next(); int i = students.indexOf(s); students.set(i, new Student(no, name)); Collections.sort(students); map1.remove(id); map1.put(no, new Student(no, name)); System.out.println("修改成功"); }  // 修改课程信息 public void modify2() { System.out.println("请输入要修改的课程的课程号:"); String id = in.nextLine(); Course cr = map2.get(id); System.out.println("输入修改后的课程信息:"); String no = in.nextLine(); String name = in.nextLine(); int i = courses.indexOf(cr); courses.set(i, new Course(no, name)); map2.remove(id); map2.put(no, new Course(no, name)); System.out.println("修改成功"); } // ~~~~~~~~~~~~~~~~~~~~~~ 遍历list~~~~~~~~~~~~~~~~~~~~~~~ void display1() { System.out.println("所有的学生信息:"); for (Student s : students) {  System.out.println(s.toString());  s.travese(); } }  void display2() { System.out.println("所有的备选课程信息:"); for (Course course : courses) {  System.out.println(course.toString()); } }public void close(){ in.close();}}
//学生操作端package selectCourse; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Scanner; public class StudentOp { Scanner in = new Scanner(System.in); Student st; List<Student> students = new ArrayList<Student>(); List<Course> courses = new ArrayList<Course>(); Map<String, Course> map = new HashMap<String, Course>();  public StudentOp(int no) { load3(no); load4();  }  // ~~~~~~~~~~~~~~~~~从文件读入信息~~~~~~~~~~~~~~~~~~~~~ public void load3(int n) { File file = new File("students.txt"); FileInputStream fis; try {  fis = new FileInputStream(file);  ObjectInputStream ois = new ObjectInputStream(fis);  students = (List<Student>) ois.readObject();  ois.close();  fis.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); } catch (ClassNotFoundException e) {  e.printStackTrace(); } for (int i = 0; i < students.size(); i++) {  if (n == students.get(i).getId()) {  st = students.get(i);  break;  } }  }  public void load4() { File file = new File("courses.txt"); if (!file.exists()) {  try {  file.createNewFile();  } catch (IOException e) {  e.printStackTrace();  } } FileInputStream fis; try {  fis = new FileInputStream(file);  ObjectInputStream ois = new ObjectInputStream(fis);  courses = (List<Course>) ois.readObject();  ois.close();  fis.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); } catch (ClassNotFoundException e) {  e.printStackTrace(); }  } // 将信息写回文件 public void save3() { File file = new File("students.txt"); FileOutputStream fos; try {  fos = new FileOutputStream(file);  ObjectOutputStream oos = new ObjectOutputStream(fos);  oos.writeObject(students);  oos.close();  fos.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  // TODO 自动生成的 catch 块  e.printStackTrace(); }  }  public void save4() { File file = new File("courses.txt"); FileOutputStream fos; try {  fos = new FileOutputStream(file);  ObjectOutputStream oos = new ObjectOutputStream(fos);  oos.writeObject(courses);  oos.close();  fos.close(); } catch (FileNotFoundException e) {  e.printStackTrace(); } catch (IOException e) {  // TODO 自动生成的 catch 块  e.printStackTrace(); }  } //~~~~~~~~~~~~~~~~~~~~~~~~~ 根据List来创建Map~~~~~~~~~~~~~~~~~~~~~~~ public void createMap() { for (int i = 0; i < courses.size(); i++) {  map.put(courses.get(i).getId(), courses.get(i)); }  //遍历map  /*Set<String> set = map.keySet(); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) {  String key = iterator.next();  System.out.println(key + " " + map.get(key)); } */ } //遍历显示备选课程 public void displayAllCourse() { System.out.println("所有的备选课程信息:"); for (Course course : courses) {  System.out.println(course.toString()); } } //根据课程号查询备选课程 public void queryCourse() { System.out.println("请输入要查询的课程号:"); String str = in.next(); System.out.println(str); System.out.println((map.containsKey(str) ? "yes" : "no")); System.out.println(map.get(str)); } //显示所选课程 public void display() { System.out.println("所选课程:"); st.travese(); } //增加所选课程 public void addSelect() { System.out.println("输入所选课程的课程号,输入end结束"); while (true) {  String id = in.nextLine();  if (!id.equals("end")) {  Course cr = map.get(id);  st.getCourses().add(cr);  System.out.println("选课成功");  } else {  // System.out.println("添加结束");  break;  } } } //减少所选课程 public void deleteSelect() { System.out.println("要删除课程的课程号,输入end结束"); while (true) {  String id = in.nextLine();  if (!id.equals("end")) {  Course cr = map.get(id);  st.getCourses().remove(cr);  System.out.println("删除成功");  } else {  // System.out.println("添加结束");  break;  } } }  public void close() { in.close(); }}
//测试类package selectCourse; import java.util.Scanner; public class Test {  public static void main(String[] args) {//~~~~~~~~~~~~~测试管理端~~~~~~~~~~~~~~~~~~~~~~~~~~   /*添加学生 AdministratorOp a1=new AdministratorOp(); a1.add(); //a1.display1(); // a1.close(); a1.save1();*/ /*添加课程 AdministratorOp a2=new AdministratorOp(); a2.add2(); //a2.display2(); a2.close();       a2.save2();*//* // 测试删除,查找,修改   AdministratorOp a3=new AdministratorOp(); a3.load1(); a3.createMap1(); a3.load2(); a3.createMap2();// a3.display1();// a3.display2();// a3.del();// a3.display1();// a3.del2();// a3.display2();// a3.query1();// a3.query2();// a3.modify1();// a3.display1();// a3.modify2();// a3.display2();    a3.close();    // a3.save1();    // a3.save2();*///~~~~~~~~~~~~~~~~测试学生端~~~~~~~~~~~~~~~~~~~~~~~~~  /*Scanner in=new Scanner(System.in);  System.out.println("请输入学号:");  int id=in.nextInt(); StudentOp sto=new StudentOp(id); sto.createMap(); //sto.displayAllCourse(); //sto.queryCourse(); // sto.addSelect();// sto.deleteSelect(); sto.display(); sto.close(); in.close();// sto.save3();// sto.save4();*/ } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表