java实现学生选课系统
作者:跌娣 发布时间:2022-11-19 14:58:24
标签:java,学生选课,选课系统
本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下
案例要求:
学生(学号,姓名,专业,所选课程{<3})
老师(工号,姓名,所教课程{<3})
课程(课程号,课程名,学分,教师,已选课学生{<30})
选课系统代码如下:
//teacher
public class Teacher {
private int id;
private String teacherName;
private Course[] courses;
//构造函数
public Teacher() {
super();
courses= new Course[3];
}
public Teacher(int id,String teacherName){
this.id=id;
this.teacherName=teacherName;
courses = new Course[3];
}
//修改或是添加属性
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
}
/**
* 课程
*/
public class Course {
private String courseName;
private int courseId;
private Teacher teacher;
private float credit;
private Student[] students;
//构造函数
public Course(int courseId,String courseName,float credit,Teacher teacher) {
super();
this.courseId=courseId;
this.courseName=courseName;
this.credit=credit;
this.setTeacher(teacher);
students = new Student[30];
}
public Course(int courseId,String courseName,float credit) {
super();
this.courseId=courseId;
this.courseName=courseName;
this.credit=credit;
students = new Student[30];
}
public Course(int courseId,String courseName) {
super();
this.courseId=courseId;
this.courseName=courseName;
students = new Student[30];
}
public Course() {//默认形式,要有以防万一
super();
students = new Student[30];
}
//修改或获取属性值id,name,credit,
public void setId(int id){
this.courseId=id;
}
public int getId(){
return this.courseId;
}
public void setName(String name){
this.courseName=name;
}
public String getName(){
return this.courseName;
}
public void setCredit(float credit ){
this.credit=credit;
}
public float getCredit(){
return this.credit;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
//课加入学生
public boolean addStudent(Student stu){
boolean flag = false;//标志值:是否加入成功
//如果学生没有选过这门课,同时课的学生还没满则执行
if(!isSelectedStudent(stu)&&isNullStudent(stu)){
for(int i=0;i<students.length;i++){
if(students[i]==null){
students[i]=stu;
flag=true;
break;
}
}
}
return flag;
}
//课移除学生
public boolean removeStudent(Student stu){
boolean flag=false;
if(isSelectedStudent(stu)){//选过这门课
for(int i=0;i<students.length;i++){
if(students[i]==stu){
students[i]=null;
flag=true;
break;
}
}
}
return flag;
}
//显示选择课程的学生:
public void displayStudent(){
System.out.println("选择的课程:"+this.courseName+"的学生有:");
for(Student s:students){
if(s!=null){
System.out.print(s.getStuName()+" ");
}
}
System.out.println();
}
//子方法1:学生是否选过这门课
public boolean isSelectedStudent(Student stu){
boolean flag=false;
for(Student s:students){//只能用于检查,不能修改
if(s==stu){
flag=true;
break;
}
}
return flag;
}
//子方法2:学科学生未达到限定人数吗
public boolean isNullStudent(Student stu){
boolean flag=false;
for(Student s:students){
if(s==null){//还有空位
flag=true;
break;
}
}
return flag;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
/**
* 学生代码
* @author Floris0811
*/
public class Student {
private String stuName;
private int stuId;
private String major;
private Course[] courses;
//构造函数
public Student() {//不要忘
super();
courses = new Course[3];
}
public Student(int stuId,String stuName) {
super();
this.stuId=stuId;
this.stuName=stuName;
courses = new Course[3];
}
public Student(int stuId,String stuName,String major) {
super();
this.stuId=stuId;
this.stuName=stuName;
this.major = major;
courses = new Course[3];
}
//修改获取属性name,id,major
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
//学生选课;
public boolean addCourse(Course course){
boolean flag=false;
if(!isSelectedCourse(course)&&isNullCourse(course)){
for(int i=0;i<this.courses.length;i++){
if(courses[i]==null){
courses[i]=course;
course.addStudent(this);//课程也要添加学生
flag=true;
break;
}
}
}
return flag;
}
//学生移除课程
public boolean removeCourse(Course course){
boolean flag=false;
if(isSelectedCourse(course)){
for(int i=0;i<this.courses.length;i++){
if(courses[i]==course){
courses[i]=null;
course.removeStudent(this);//在课程中移除学生
flag=true;
break;
}
}
}
return flag;
}
//显示学生所选的课程
public void displayCourse(){
System.out.println("学生"+this.stuName+"所选课程有:");
for(Course c:courses){
if(c!=null){
System.out.print(c.getName()+" ");
}
}
System.out.println();
}
//子方法1:课是否被选过
public boolean isSelectedCourse(Course course){
boolean flag=false;
for(Course c:courses){
if(c==course){
flag=true;
break;
}
}
return flag;
}
//子方法2:学生是否还有选修课位置
public boolean isNullCourse(Course course){
boolean flag=false;
for(Course c:courses){
if(c==null){
flag=true;
break;
}
}
return flag;
}
}
package test;
public class ChooseCourseByStu {
/**
* 选课管理系统
*/
public static void main(String[] args) {
Student stu0 = new Student(1001,"Lily");
Student stu1 = new Student(1002,"Eilly");
Student stu2 = new Student(1003,"Floris");
Student stu3 = new Student(1004,"HaHa");
Course cour0 = new Course(001,"高数");
Course cour1 = new Course(002,"线代");
Course cour2 = new Course(003,"概率论");
stu0.addCourse(cour0);
stu0.addCourse(cour2);
stu0.addCourse(cour1);
stu1.addCourse(cour2);
stu1.addCourse(cour0);
stu2.addCourse(cour1);
stu3.addCourse(cour0);
stu3.addCourse(cour1);
stu1.removeCourse(cour2);
stu0.displayCourse();
cour0.removeStudent(stu1);
cour1.displayStudent();
}
}
关于管理系统的更多内容请点击《管理系统专题》进行学习
来源:https://blog.csdn.net/Floris_lovelace/article/details/80860470
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 背景SpringBoot集成Beetl后如果页面出现异常会将出现异常之前的页面输出到客户端,但是由于页面不完整会导致用户看到的页面错乱或者空
- 1、maven打包Spring Boot项目的pom.xml文件中默认使用spring-boot-maven-plugin插件进行打包:&l
- 背景:在写登录界面时,老板就觉得在输入密码的时候谈出来的输入法软键盘把登录按钮遮挡住了(入下图所示,不爽),连输入框都被挡了一半
- 1:设置注释的模板:下载此模板:codetemplates.xml搜索Dangzhang,将其改为你自己的姓名,保存打开eclipse/my
- Intro做项目的时候,页面上有一些敏感信息,需要用“*”隐藏一些比较重要的信息,于是打算写一个通用的方法。Let's do it
- 首先我们如果要使用Java中存在的包,可以程序中使用import语句导入包。包说通俗点就是一个文件夹,为了方便管理。在程序中声明包的语法:p
- Fresco是FaceBook开源的Android平台图片加载库,可以从网络,从本地文件系统,本地资源加载图片Fresco本身已经实现了圆角
- 环境说明:Android Studio 2.0V7包版本:com.android.support:appcompat-v7:23.4.0co
- 本文实例讲述了C#从windows剪贴板获取并显示文本内容的方法。分享给大家供大家参考。具体如下:using System;using Sy
- 介绍主要使用了goole的zxing包,下面给出了示例代码,很方便大家的理解和学习,代码都属于初步框架,功能有了,需要根据实际使用情况完善优
- 如果你是想在java目录下创建多级目录,直接新建package,如图输入然后,取消勾选Compact Empty Middle Packag
- 一、何为栈?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称
- 今天有同事用swagger2开发时,有一方法返回Map<String,List<Object>>出现无法解析错误。P
- 在使用EF查询数据的时候,我们常用的查询数据方式有linq to sql,linq to object,查询返回的结果有两种类型:IQuer
- @SpringBootApplication的使用1. Spring Boot 的核心1.1. 入口类和 @SpringBootApplic
- 协程属于Kotlin中非常有特色的一项技术,因为大部分编程语言中是没有协程这个概念的。那么什么是协程呢?它其实和线程有点相似,可以简单地将它
- 1.对象序列化的介绍(1).NET支持对象序列化的几种方式二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来
- 二维数组实现数字拼图,供大家参考,具体内容如下二维数组可以自己随意定义大小,通过方法判断来实现对所有的数字进行随机打乱,并可以通过移动来正确
- 现在由于GWF,google基本和咱们说咱见了,就给
- 《IDEA 破解新招 - 无限重置30天试用期》,这种方法适用idea2021以下所有版本,亲测idea2020.3成功激活,其他版本自测吧