欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现选课系统

程序员文章站 2024-02-28 22:02:28
本文实例为大家分享了java实现选课系统的具体代码,供大家参考,具体内容如下 这个程序主要是练习io(文件读写,序列化),集合框架的使用 学生端可以实现,查找课程,增加...

本文实例为大家分享了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();
*/ }
 
}

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