答案:系统包含学生、课程和选课三大模块,通过Student、Course和CourseSelectionSystem类实现添加信息、选课、查看选课情况等功能,支持防止重复选课和课程人数限制,并可扩展至数据库存储与图形界面。

要创建一个学生选课管理系统,Java 是一个非常合适的选择。这个系统可以包含学生、课程和选课关系三大核心模块。下面从设计思路到代码实现,一步步说明如何用 Java 构建这样一个基础但功能完整的系统。
在动手写代码前,先明确系统的基本功能:
基于这些功能,我们可以设计以下几个类:
下面是各个类的具体 Java 实现代码:
立即学习“Java免费学习笔记(深入)”;
// Student.java
class Student {
private String studentId;
private String name;
<pre class='brush:java;toolbar:false;'>public Student(String studentId, String name) {
this.studentId = studentId;
this.name = name;
}
public String getStudentId() {
return studentId;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student{" +
"studentId='" + studentId + '\'' +
", name='" + name + '\'' +
'}';
}}
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库--SQLite,本文介绍的就是如何为你的Android应用程序创建和操作SQLite数据库。 数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如Mozilla FireFox就是使用SQLite来存储配置数据的,iPhon
0
// Course.java
import java.util.ArrayList;
import java.util.List;
<p>class Course {
private String courseId;
private String courseName;
private int maxStudents;
private List<Student> enrolledStudents;</p><pre class='brush:java;toolbar:false;'>public Course(String courseId, String courseName, int maxStudents) {
this.courseId = courseId;
this.courseName = courseName;
this.maxStudents = maxStudents;
this.enrolledStudents = new ArrayList<>();
}
public String getCourseId() {
return courseId;
}
public String getCourseName() {
return courseName;
}
public int getCurrentEnrollment() {
return enrolledStudents.size();
}
public boolean isFull() {
return getCurrentEnrollment() >= maxStudents;
}
public boolean addStudent(Student student) {
if (isFull()) {
return false;
}
enrolledStudents.add(student);
return true;
}
public List<Student> getEnrolledStudents() {
return new ArrayList<>(enrolledStudents);
}
@Override
public String toString() {
return "Course{" +
"courseId='" + courseId + '\'' +
", courseName='" + courseName + '\'' +
", enrolled=" + getCurrentEnrollment() +
"/" + maxStudents +
'}';
}}
// CourseSelectionSystem.java
import java.util.*;
<p>class CourseSelectionSystem {
private Map<String, Student> students;
private Map<String, Course> courses;
private Map<String, List<String>> studentToCourses; // 学生ID -> 课程ID列表</p><pre class='brush:java;toolbar:false;'>public CourseSelectionSystem() {
this.students = new HashMap<>();
this.courses = new HashMap<>();
this.studentToCourses = new HashMap<>();
}
public void addStudent(Student student) {
students.put(student.getStudentId(), student);
studentToCourses.putIfAbsent(student.getStudentId(), new ArrayList<>());
}
public void addCourse(Course course) {
courses.put(course.getCourseId(), course);
}
public boolean selectCourse(String studentId, String courseId) {
Student student = students.get(studentId);
Course course = courses.get(courseId);
if (student == null || course == null) {
System.out.println("学生或课程不存在");
return false;
}
if (course.isFull()) {
System.out.println("课程 [" + course.getCourseName() + "] 已满");
return false;
}
if (studentToCourses.get(studentId).contains(courseId)) {
System.out.println("该学生已选此课程");
return false;
}
boolean added = course.addStudent(student);
if (added) {
studentToCourses.get(studentId).add(courseId);
System.out.println(student.getName() + " 成功选修 " + course.getCourseName());
return true;
}
return false;
}
public void printStudentCourses(String studentId) {
Student student = students.get(studentId);
if (student == null) {
System.out.println("学生不存在");
return;
}
List<String> courseIds = studentToCourses.get(studentId);
System.out.println(student.getName() + " 的选课列表:");
if (courseIds.isEmpty()) {
System.out.println("暂无选课");
} else {
for (String cid : courseIds) {
Course course = courses.get(cid);
System.out.println("- " + course.getCourseName());
}
}
}
public void printCourseStudents(String courseId) {
Course course = courses.get(courseId);
if (course == null) {
System.out.println("课程不存在");
return;
}
System.out.println("课程 [" + course.getCourseName() + "] 的学生列表:");
List<Student> students = course.getEnrolledStudents();
if (students.isEmpty()) {
System.out.println("暂无学生选课");
} else {
for (Student s : students) {
System.out.println("- " + s.getName() + " (" + s.getStudentId() + ")");
}
}
}}
写一个主类来测试整个系统的功能:
// Main.java
public class Main {
public static void main(String[] args) {
CourseSelectionSystem system = new CourseSelectionSystem();
<pre class='brush:java;toolbar:false;'> // 添加学生
Student s1 = new Student("S001", "张三");
Student s2 = new Student("S002", "李四");
system.addStudent(s1);
system.addStudent(s2);
// 添加课程
Course c1 = new Course("C001", "Java编程", 2);
Course c2 = new Course("C002", "数据结构", 1);
system.addCourse(c1);
system.addCourse(c2);
// 选课操作
system.selectCourse("S001", "C001");
system.selectCourse("S002", "C001");
system.selectCourse("S001", "C002");
// 查看结果
system.printStudentCourses("S001");
system.printStudentCourses("S002");
system.printCourseStudents("C001");
system.printCourseStudents("C002");
}}
运行后你会看到类似输出:
张三 成功选修 Java编程 李四 成功选修 Java编程 张三 成功选修 数据结构 张三 的选课列表: - Java编程 - 数据结构 李四 的选课列表: - Java编程 课程 [Java编程] 的学生列表: - 张三 (S001) - 李四 (S002) 课程 [数据结构] 的学生列表: - 张三 (S001)
当前是一个控制台版本的基础系统,后续可以考虑以下增强:
基本上就这些。这个系统虽然简单,但涵盖了面向对象设计、集合操作和业务逻辑处理等核心 Java 技能,适合作为练习项目。不复杂但容易忽略细节,比如防止重复选课、课程人数限制等,正是这类小系统的价值所在。
以上就是Java如何创建一个学生选课管理系统的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号