您好,登錄后才能下訂單哦!
本文實(shí)例為大家分享了java實(shí)現(xiàn)選課系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
這個(gè)程序主要是練習(xí)IO(文件讀寫(xiě),序列化),集合框架的使用
學(xué)生端可以實(shí)現(xiàn),查找課程,增加選課,刪除選課的功能
管理端可以實(shí)現(xiàn)對(duì)備選課程,學(xué)生信息的增刪查改
缺點(diǎn):登陸操作沒(méi)有實(shí)現(xiàn)密碼驗(yàn)證和多態(tài)。
另外map對(duì)象明明put了,可是get的時(shí)候竟然會(huì)取到null,而且嘗試多次,有時(shí)候成功,有時(shí)候取到null,并不確定。據(jù)說(shuō)這是由多線程引起的map取值為null,因?yàn)槎嗑€程部分還沒(méi)開(kāi)始學(xué)習(xí),所以也沒(méi)做修改。
//課程信息 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 "課程號(hào):" + id + " " + "課程名:" + name; } }
//學(xué)生信息 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 "學(xué)號(hào):"+id+" " +"姓名:"+name; } //遍歷輸出所選課程 public void travese() { if(courses.size()>0) { for (Course course : courses) { System.out.println(course); } } else { System.out.println("還沒(méi)有選課"); } } 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 { //管理端,用來(lái)管理學(xué)生信息和備選課程 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(); } } //將信息寫(xiě)回文件 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 自動(dòng)生成的 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 自動(dòng)生成的 catch 塊 e.printStackTrace(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~ 根據(jù)List來(lái)創(chuàng)建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)); } } // ~~~~~~~~~~~~~~~~~~~~~~ 增刪查改~~~~~~~~~~~~~~~~~~~~~~~ // 增加學(xué)生基本信息 public void add() { System.out.println("輸入學(xué)生信息,輸入0結(jié)束"); 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; } } } // 刪除學(xué)生信息 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結(jié)束"); 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("添加結(jié)束"); 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; } } } // 根據(jù)學(xué)號(hào)查找學(xué)生 public void query1() { System.out.println("請(qǐng)輸入要查詢的學(xué)生學(xué)號(hào):"); if (in.hasNext()) { int id = in.nextInt(); System.out.println(map1.get(id)); map1.get(id).travese(); } } // 根據(jù)課程號(hào)查找課程 public void query2() { System.out.println("請(qǐng)輸入要查詢的課程號(hào):"); if (in.hasNext()) { String id = in.nextLine(); System.out.println(map2.get(id)); } } // 修改學(xué)生基本信息 public void modify1() { System.out.println("請(qǐng)輸入要修改的學(xué)生的學(xué)號(hào):"); int id = in.nextInt(); Student s = map1.get(id); System.out.println("輸入修改后的學(xué)生信息:"); 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("請(qǐng)輸入要修改的課程的課程號(hào):"); 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("所有的學(xué)生信息:"); 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(); } }
//學(xué)生操作端 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(); } } // 將信息寫(xiě)回文件 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 自動(dòng)生成的 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 自動(dòng)生成的 catch 塊 e.printStackTrace(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~ 根據(jù)List來(lái)創(chuàng)建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()); } } //根據(jù)課程號(hào)查詢備選課程 public void queryCourse() { System.out.println("請(qǐng)輸入要查詢的課程號(hào):"); 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("輸入所選課程的課程號(hào),輸入end結(jié)束"); 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("添加結(jié)束"); break; } } } //減少所選課程 public void deleteSelect() { System.out.println("要?jiǎng)h除課程的課程號(hào),輸入end結(jié)束"); 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("添加結(jié)束"); break; } } } public void close() { in.close(); } }
//測(cè)試類 package selectCourse; import java.util.Scanner; public class Test { public static void main(String[] args) { //~~~~~~~~~~~~~測(cè)試管理端~~~~~~~~~~~~~~~~~~~~~~~~~~ /*添加學(xué)生 AdministratorOp a1=new AdministratorOp(); a1.add(); //a1.display1(); // a1.close(); a1.save1();*/ /*添加課程 AdministratorOp a2=new AdministratorOp(); a2.add2(); //a2.display2(); a2.close(); a2.save2();*/ /* // 測(cè)試刪除,查找,修改 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();*/ //~~~~~~~~~~~~~~~~測(cè)試學(xué)生端~~~~~~~~~~~~~~~~~~~~~~~~~ /*Scanner in=new Scanner(System.in); System.out.println("請(qǐng)輸入學(xué)號(hào):"); 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(); */ } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。