java实现选课系统
本文实例为大家分享了java实现选课系统的具体代码,供大家参考,具体内容如下
这个程序主要是练习IO(文件读写,序列化),集合框架的使用
学生端可以实现,查找课程,增加选课,删除选课的功能
管理端可以实现对备选课程,学生信息的增删查改
缺点:登陆操作没有实现密码验证和多态。
另外map对象明明put了,可是get的时候竟然会取到null,而且尝试多次,有时候成功,有时候取到null,并不确定。据说这是由多线程引起的map取值为null,因为多线程部分还没开始学习,所以也没做修改。
//课程信息 packageselectCourse; importjava.io.Serializable; publicclassCourseimplementsSerializable{ privateStringid; privateStringname; publicCourse(Stringid,Stringname){ super(); this.id=id; this.name=name; } publicCourse(){ super(); } publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicinthashCode(){ finalintprime=31; intresult=1; result=prime*result+((id==null)?0:id.hashCode()); result=prime*result+((name==null)?0:name.hashCode()); returnresult; } publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; if(getClass()!=obj.getClass()) returnfalse; Courseother=(Course)obj; if(id==null){ if(other.id!=null) returnfalse; }elseif(!id.equals(other.id)) returnfalse; if(name==null){ if(other.name!=null) returnfalse; }elseif(!name.equals(other.name)) returnfalse; returntrue; } publicStringtoString(){ return"课程号:"+id+""+"课程名:"+name; } }
//学生信息 packageselectCourse; importjava.io.Serializable; importjava.util.HashSet; importjava.util.Set; publicclassStudentimplementsSerializable,Comparable{ privateintid; privateStringname; privateSet courses; publicStudent(intid,Stringname){ super(); this.id=id; this.name=name; this.courses=newHashSet (); } publicStudent(){ super(); this.id=0; this.name=null; this.courses=newHashSet (); } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicSet getCourses(){ returncourses; } publicvoidsetCourses(Set courses){ this.courses=courses; } publicinthashCode(){ finalintprime=31; intresult=1; result=prime*result+id; returnresult; } publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; if(getClass()!=obj.getClass()) returnfalse; Studentother=(Student)obj; if(id!=other.id) returnfalse; returntrue; } publicStringtoString(){ return"学号:"+id+""+"姓名:"+name; } //遍历输出所选课程 publicvoidtravese() { if(courses.size()>0) { for(Coursecourse:courses){ System.out.println(course); } } else { System.out.println("还没有选课"); } } publicintcompareTo(Students){ intresult=this.id-s.id; returnresult; } }
//管理端 packageselectCourse; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.ObjectInputStream; importjava.io.ObjectOutputStream; importjava.util.ArrayList; importjava.util.Collections; importjava.util.HashMap; importjava.util.List; importjava.util.Map; importjava.util.Scanner; publicclassAdministratorOp{ //管理端,用来管理学生信息和备选课程 Liststudents=newArrayList (); Map map1=newHashMap (); List courses=newArrayList (); Map map2=newHashMap (); Scannerin=newScanner(System.in); publicAdministratorOp(){ } //~~~~~~~~~~~~~~~~~从文件读入List~~~~~~~~~~~~~~~~~~~~~ publicvoidload1(){ Filefile=newFile("students.txt"); if(!file.exists()){ try{ file.createNewFile(); }catch(IOExceptione){ e.printStackTrace(); } } FileInputStreamfis; try{ fis=newFileInputStream(file); ObjectInputStreamois=newObjectInputStream(fis); students=(List )ois.readObject(); ois.close(); fis.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } publicvoidload2(){ Filefile=newFile("courses.txt"); if(!file.exists()){ try{ file.createNewFile(); }catch(IOExceptione){ e.printStackTrace(); } } FileInputStreamfis; try{ fis=newFileInputStream(file); ObjectInputStreamois=newObjectInputStream(fis); courses=(List )ois.readObject(); ois.close(); fis.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } //将信息写回文件 publicvoidsave1(){ Filefile=newFile("students.txt"); FileOutputStreamfos; try{ fos=newFileOutputStream(file); ObjectOutputStreamoos=newObjectOutputStream(fos); oos.writeObject(students); oos.close(); fos.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ //TODO自动生成的catch块 e.printStackTrace(); } } publicvoidsave2(){ Filefile=newFile("courses.txt"); FileOutputStreamfos; try{ fos=newFileOutputStream(file); ObjectOutputStreamoos=newObjectOutputStream(fos); oos.writeObject(courses); oos.close(); fos.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ //TODO自动生成的catch块 e.printStackTrace(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~根据List来创建Map~~~~~~~~~~~~~~~~~~~~~~~ publicvoidcreateMap1(){ for(inti=0;i //学生操作端 packageselectCourse; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.ObjectInputStream; importjava.io.ObjectOutputStream; importjava.util.ArrayList; importjava.util.HashMap; importjava.util.List; importjava.util.Map; importjava.util.Scanner; publicclassStudentOp{ Scannerin=newScanner(System.in); Studentst; Liststudents=newArrayList (); List courses=newArrayList (); Map map=newHashMap (); publicStudentOp(intno){ load3(no); load4(); } //~~~~~~~~~~~~~~~~~从文件读入信息~~~~~~~~~~~~~~~~~~~~~ publicvoidload3(intn){ Filefile=newFile("students.txt"); FileInputStreamfis; try{ fis=newFileInputStream(file); ObjectInputStreamois=newObjectInputStream(fis); students=(List )ois.readObject(); ois.close(); fis.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } for(inti=0;i )ois.readObject(); ois.close(); fis.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } //将信息写回文件 publicvoidsave3(){ Filefile=newFile("students.txt"); FileOutputStreamfos; try{ fos=newFileOutputStream(file); ObjectOutputStreamoos=newObjectOutputStream(fos); oos.writeObject(students); oos.close(); fos.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ //TODO自动生成的catch块 e.printStackTrace(); } } publicvoidsave4(){ Filefile=newFile("courses.txt"); FileOutputStreamfos; try{ fos=newFileOutputStream(file); ObjectOutputStreamoos=newObjectOutputStream(fos); oos.writeObject(courses); oos.close(); fos.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ //TODO自动生成的catch块 e.printStackTrace(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~根据List来创建Map~~~~~~~~~~~~~~~~~~~~~~~ publicvoidcreateMap(){ for(inti=0;i set=map.keySet(); Iterator iterator=set.iterator(); while(iterator.hasNext()){ Stringkey=iterator.next(); System.out.println(key+""+map.get(key)); }*/ } //遍历显示备选课程 publicvoiddisplayAllCourse(){ System.out.println("所有的备选课程信息:"); for(Coursecourse:courses){ System.out.println(course.toString()); } } //根据课程号查询备选课程 publicvoidqueryCourse(){ System.out.println("请输入要查询的课程号:"); Stringstr=in.next(); System.out.println(str); System.out.println((map.containsKey(str)?"yes":"no")); System.out.println(map.get(str)); } //显示所选课程 publicvoiddisplay(){ System.out.println("所选课程:"); st.travese(); } //增加所选课程 publicvoidaddSelect(){ System.out.println("输入所选课程的课程号,输入end结束"); while(true){ Stringid=in.nextLine(); if(!id.equals("end")){ Coursecr=map.get(id); st.getCourses().add(cr); System.out.println("选课成功"); }else{ //System.out.println("添加结束"); break; } } } //减少所选课程 publicvoiddeleteSelect(){ System.out.println("要删除课程的课程号,输入end结束"); while(true){ Stringid=in.nextLine(); if(!id.equals("end")){ Coursecr=map.get(id); st.getCourses().remove(cr); System.out.println("删除成功"); }else{ //System.out.println("添加结束"); break; } } } publicvoidclose(){ in.close(); } } //测试类 packageselectCourse; importjava.util.Scanner; publicclassTest{ publicstaticvoidmain(String[]args){ //~~~~~~~~~~~~~测试管理端~~~~~~~~~~~~~~~~~~~~~~~~~~ /*添加学生 AdministratorOpa1=newAdministratorOp(); a1.add(); //a1.display1(); //a1.close(); a1.save1();*/ /*添加课程 AdministratorOpa2=newAdministratorOp(); a2.add2(); //a2.display2(); a2.close(); a2.save2();*/ /*//测试删除,查找,修改 AdministratorOpa3=newAdministratorOp(); 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();*/ //~~~~~~~~~~~~~~~~测试学生端~~~~~~~~~~~~~~~~~~~~~~~~~ /*Scannerin=newScanner(System.in); System.out.println("请输入学号:"); intid=in.nextInt(); StudentOpsto=newStudentOp(id); sto.createMap(); //sto.displayAllCourse(); //sto.queryCourse(); //sto.addSelect(); //sto.deleteSelect(); sto.display(); sto.close(); in.close(); //sto.save3(); //sto.save4(); */} }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。