java实现选课系统

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

*/ }

}

以上是 java实现选课系统 的全部内容, 来源链接: utcz.com/z/349567.html

回到顶部