Java实现学生选课系统

时间: 2023-08-30 18:07:22 浏览: 99
学生选课系统可以使用 Java 实现,以下是一个简单的实现示例: 1. 定义学生类 ```java public class Student { private int id; private String name; private List<Course> courses; public Student(int id, String name) { this.id = id; this.name = name; this.courses = new ArrayList<>(); } public int getId() { return id; } public String getName() { return name; } public List<Course> getCourses() { return courses; } public void addCourse(Course course) { courses.add(course); } public void removeCourse(Course course) { courses.remove(course); } } ``` 2. 定义课程类 ```java public class Course { private int id; private String name; private int capacity; private List<Student> students; public Course(int id, String name, int capacity) { this.id = id; this.name = name; this.capacity = capacity; this.students = new ArrayList<>(); } public int getId() { return id; } public String getName() { return name; } public int getCapacity() { return capacity; } public List<Student> getStudents() { return students; } public boolean addStudent(Student student) { if (students.size() < capacity) { students.add(student); student.addCourse(this); return true; } return false; } public void removeStudent(Student student) { students.remove(student); student.removeCourse(this); } } ``` 3. 定义选课系统类 ```java public class CourseSelectionSystem { private List<Student> students; private List<Course> courses; public CourseSelectionSystem() { this.students = new ArrayList<>(); this.courses = new ArrayList<>(); } public void addStudent(Student student) { students.add(student); } public void addCourse(Course course) { courses.add(course); } public boolean enroll(int studentId, int courseId) { Student student = getStudent(studentId); Course course = getCourse(courseId); if (student != null && course != null) { return course.addStudent(student); } return false; } public boolean drop(int studentId, int courseId) { Student student = getStudent(studentId); Course course = getCourse(courseId); if (student != null && course != null) { course.removeStudent(student); return true; } return false; } private Student getStudent(int studentId) { for (Student student : students) { if (student.getId() == studentId) { return student; } } return null; } private Course getCourse(int courseId) { for (Course course : courses) { if (course.getId() == courseId) { return course; } } return null; } } ``` 使用示例: ```java // 创建学生和课程 Student s1 = new Student(1, "Alice"); Student s2 = new Student(2, "Bob"); Course c1 = new Course(1, "Java Programming", 3); Course c2 = new Course(2, "Data Structures", 2); // 添加学生和课程到选课系统 CourseSelectionSystem system = new CourseSelectionSystem(); system.addStudent(s1); system.addStudent(s2); system.addCourse(c1); system.addCourse(c2); // 学生选课 system.enroll(1, 1); // Alice选Java Programming课,成功 system.enroll(1, 2); // Alice选Data Structures课,成功 system.enroll(2, 1); // Bob选Java Programming课,成功 system.enroll(2, 2); // Bob选Data Structures课,失败,因为课程已满 // 学生退课 system.drop(1, 2); // Alice退掉Data Structures课 ``` 这只是一个简单的实现示例,实际的选课系统可能需要更多的功能和复杂性。

相关推荐

zip
采用eclipse和MySQL开发的学生在线选课系统。功能如下: 1、权限控制:采用过滤器实现用户登录和权限的控制。同时,每个学生一个账户(学号)可以登录系统进行个人信息的管理,并完成选课操作;管理员(固定为admin用户)可以管理全部学生信息,查看每个学生的选课情况,并生成统计表。 2、数据库要求:包括学生基本信息表、课程信息表、学生选课信息表。 3、学生信息管理要求 (1)信息项:学号、姓名、身份证号码、班级、性别(男、女)、登录密码(加密存储,加密方法网上找一个)、籍贯(省份选择)、家庭住址、联系电话、兴趣爱好(运动、读书、音乐、旅游、社交); (2)学生信息管理:有显示学生基本信息的界面,每个学生只可以打开自己的信息界面;界面中,如果是学生身份,可以修改除了学号、姓名之外的全部信息。如果是管理员身份,可以全部管理,并提供学生信息的添加、修改和删除功能。 (3)学生信息列表:有列表显示学生信息的界面;如果是学生身份,列表只有本人一条信息;如果是管理员,列表可以有全部学生。可以按照学号、姓名快速查询功能。 4、选课中心要求: (1). 二级菜单:选课操作、选课列表 (2). 课程的信息项:课程编号、课程名称; (3). 学生选课操作:只有学生可用,管理员不可用。列表显示当前学生没有选中的课程名称,一次可以选取1个或者多个课程,点击保存即可完成选课。 (4). 学生选课列表:列表显示学生已经选中课程的信息;如果是学生身份,列表只有本人已经选中课程的列表;如果是管理员,列表可以已经有选课记录的学生。点击学生学号后,可以查看该学生的选课记录。 5、统计分析要求 (1). 二级菜单:学生信息统计、选课情况统计; (2).学生信息统计:统计每个学生的基本信息,包括学生籍贯统计(籍贯、学生数量)、爱好统计(爱好、学生数量)两个统计。 (3).选课情况统计:统计每个学生的选课数量,注意:没有选课的学生也要显示,按照选课数量倒序排列。 这个是我的JavaWeb课程设计作业,由于能力有限,这个系统的一些细节还不够完善,比如没有密码加密和分页,页面不够美观,以后会完善的。

最新推荐

recommend-type

【java课设】学生选课系统.pdf

(5)删除功能:主要实现对已添加的学生和课程记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。 (6)统计功能:能根据多种参数进行统计。能统计学生人数、课程的门数。 (7)保存...
recommend-type

学生选课系统(前后端分离式开发)

这里是一份选课系统的用户功能说明和界面样式,采用前后端分离开发,数据库mysql,后端java语言springboot架构,前端vue.js利用elementUI框架,支持改造。
recommend-type

高校学生选课系统任务书

该设计采用Java面向对象语言和MyEclipse开发平台以及MySQL数据库设计一个功能强大的高校学生选课系统。本系统采用B/S的模式,系统主要包括用户模块、管理模块、学生模块的设计和数据库概念模型的设计,然后利用JDBC...
recommend-type

JavaWeb学生选课系统设计(报告书)

④学生信息管理用例:信息管理用例可见的功能,实现学生信息的管理功能,包含了添加学生、修改学生信息和删除学生三个用例。 ⑤教师信息管理用例:信息管理用例可见的功能,实现教师信息的管理功能,包含了添加教师...
recommend-type

pd16.py11111111111

pd16.py11111111111
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

hive中 的Metastore

Hive中的Metastore是一个关键的组件,它用于存储和管理Hive中的元数据。这些元数据包括表名、列名、表的数据类型、分区信息、表的存储位置等信息。Hive的查询和分析都需要Metastore来管理和访问这些元数据。 Metastore可以使用不同的后端存储来存储元数据,例如MySQL、PostgreSQL、Oracle等关系型数据库,或者Hadoop分布式文件系统中的HDFS。Metastore还提供了API,使得开发人员可以通过编程方式访问元数据。 Metastore的另一个重要功能是跟踪表的版本和历史。当用户对表进行更改时,Metastore会记录这些更改,并且可以让用户回滚到
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。