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();
Mapmap1=newHashMap();
Listcourses=newArrayList();
Mapmap2=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();
Listcourses=newArrayList();
Mapmap=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;iset=map.keySet();
Iteratoriterator=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();
*/}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。