用Java编写学生选课系统
时间: 2023-09-21 17:03:38 浏览: 42
好的,下面是一个简单的学生选课系统的Java代码示例,供参考:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class StudentCourseSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Course> courses = new ArrayList<>();
ArrayList<Student> students = new ArrayList<>();
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 添加课程");
System.out.println("2. 添加学生");
System.out.println("3. 学生选课");
System.out.println("4. 学生退课");
System.out.println("5. 查看课程信息");
System.out.println("6. 查看学生信息");
System.out.println("7. 退出系统");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入课程编号:");
int courseId = scanner.nextInt();
System.out.println("请输入课程名称:");
String courseName = scanner.next();
Course course = new Course(courseId, courseName);
courses.add(course);
System.out.println("课程添加成功!");
break;
case 2:
System.out.println("请输入学生编号:");
int studentId = scanner.nextInt();
System.out.println("请输入学生姓名:");
String studentName = scanner.next();
Student student = new Student(studentId, studentName);
students.add(student);
System.out.println("学生添加成功!");
break;
case 3:
System.out.println("请输入选课学生编号:");
studentId = scanner.nextInt();
System.out.println("请输入选课课程编号:");
courseId = scanner.nextInt();
student = findStudentById(students, studentId);
course = findCourseById(courses, courseId);
if (student == null || course == null) {
System.out.println("学生或课程不存在!");
} else {
boolean result = student.selectCourse(course);
if (result) {
System.out.println("选课成功!");
} else {
System.out.println("选课失败,该课程已选或课程人数已满!");
}
}
break;
case 4:
System.out.println("请输入退课学生编号:");
studentId = scanner.nextInt();
System.out.println("请输入退课课程编号:");
courseId = scanner.nextInt();
student = findStudentById(students, studentId);
course = findCourseById(courses, courseId);
if (student == null || course == null) {
System.out.println("学生或课程不存在!");
} else {
boolean result = student.dropCourse(course);
if (result) {
System.out.println("退课成功!");
} else {
System.out.println("退课失败,该课程未选!");
}
}
break;
case 5:
System.out.println("课程信息如下:");
for (Course c : courses) {
System.out.println(c);
}
break;
case 6:
System.out.println("学生信息如下:");
for (Student s : students) {
System.out.println(s);
}
break;
case 7:
System.out.println("谢谢使用!");
System.exit(0);
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
}
private static Student findStudentById(ArrayList<Student> students, int id) {
for (Student s : students) {
if (s.getId() == id) {
return s;
}
}
return null;
}
private static Course findCourseById(ArrayList<Course> courses, int id) {
for (Course c : courses) {
if (c.getId() == id) {
return c;
}
}
return null;
}
}
class Student {
private int id;
private String name;
private ArrayList<Course> courses = new ArrayList<>();
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public ArrayList<Course> getCourses() {
return courses;
}
public boolean selectCourse(Course course) {
if (courses.contains(course)) {
return false;
} else if (course.isFull()) {
return false;
} else {
courses.add(course);
course.addStudent(this);
return true;
}
}
public boolean dropCourse(Course course) {
if (courses.contains(course)) {
courses.remove(course);
course.removeStudent(this);
return true;
} else {
return false;
}
}
public String toString() {
return "学生编号:" + id + ",学生姓名:" + name + ",选课课程数:" + courses.size();
}
}
class Course {
private int id;
private String name;
private int capacity;
private ArrayList<Student> students = new ArrayList<>();
public Course(int id, String name) {
this.id = id;
this.name = name;
this.capacity = 50;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getCapacity() {
return capacity;
}
public ArrayList<Student> getStudents() {
return students;
}
public boolean isFull() {
return students.size() >= capacity;
}
public void addStudent(Student student) {
students.add(student);
}
public void removeStudent(Student student) {
students.remove(student);
}
public String toString() {
return "课程编号:" + id + ",课程名称:" + name + ",课程容量:" + capacity + ",选课人数:" + students.size();
}
}
```
这个选课系统包含了以下功能:
1. 添加课程
2. 添加学生
3. 学生选课
4. 学生退课
5. 查看课程信息
6. 查看学生信息
7. 退出系统
可以根据需要进行改进和扩展。