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();
 }

}

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 实例讲解Java基础之反射

    前期准备 编写一个真实类phone,实现list接口 public class Phone implements List { public double price; public String name; public Phone() { } public Phone(double price, String name) { this.price = price; this.name = name; } public double getPrice() { return price; } p

  • Java找不到或无法加载主类及编码错误问题的解决方案

    先给出具体代码(当前目录为:D:\pro): package org.test; public class TestJava{ public static void main(String args[]){ System.out.println("Hello World!!!"); System.out.println("你好,Java!!"); } } 1. cmd 窗口运行时出现"找不到或无法加载主类"问题: D:\pro>javac

  • 浅谈Java中类的实例化步骤

    就个人的一些看法简单的 谈谈static. 就java 工程师来说,static非常容易在面试的时候被问到. 言归正传,书面上说static是静态的.其实我把它理解为"全局的".什么叫全局的?全局的属性,全局的方法,全局的代码块. 全局属性,全局方法,比较好理解就是这个类所有的对象都共有的属性和方法.因为是整个类共有的,所以可以通过声明直接调用.我把它理解为"单例模式"的属性和方法.所谓单例模式就是指这个类声明的所有对象共享这些属性和方法.一个对象对这个属性进行了修

  • Java全排列算法字典序下的下一个排列讲解

    一直写过数组全排列的算法,当时接触的是使用回溯的方法,这样可以保证生成的全排列一定是按照字典序的,但是今天在做leetcode上的一道题时,问题是要你找到某个排列情况的下一个按照字典序排列的状态. 如果直接一点,大可从头开始做全排列,然后到目标状态时,在做一次即可找到要的状态,但是如果题目给的状态非常靠后,则要花费很大的代价,这样做就显得有些笨拙了. 所以做这道题的时候一直在思考如何按照字典序生成全排列. 假设此时给出的状态时5 2 4 3 1,那么下一个状态要如何确定呢?首先从人的视角来看,绝

  • Java基于深度优先遍历的随机迷宫生成算法

    这两天因为要做一个随机的地图生成系统,所以一直在研究随机迷宫生成算法,好吧,算是有一点小小的成果. 随机迷宫生成我自己的理解简而言之分为以下几步: 1.建立一张地图,我用的二维数组表示,地图上全是障碍物.然后再创建一个用来表示每个格子是否被访问过的二维数组.再创建一个用来表示路径的栈结构. 2.随机选择地图上的一点,呃为了方便我初始点直接取的是左上角即坐标表示为0,0的格子.终点的话因为不涉及到交互就暂时没有. 3.查找当前格子的邻接格(注意,这里的邻接格子都是还未被访问的,下面的代码里有写).

  • Java中的Map允许有重复元素吗?

    Java中常见的三个集合接口:List.Set.Map,已经知道List中是允许有重复元素的,而Set中是不允许有重复元素的,那么Map中允许有重复元素吗? 查阅资料,发现是不可以的,因为map是无序的,它的查询需要通过key的值来查找,如果你定义两个同样的key,那么一个key就对应了多个值,这样就违背了java对map的定义,键和值是一一对应的.所以key不可以重复. 写个代码测试一下: package com.test.collection; import java.util.HashMa

  • Java中Collection、List、Set、Map之间的关系总结

    初学java,单个的接触有点迷糊,所以总结下他们的关系 一.关系 Collection --List:以特定顺序存储 --ArrayList.LinkList.Vector --Set:不能包含重复的元素 --HashSet.TreeSet Map --HashMap.HashTable.TreeMap 二.分别讲解 Collection:Collection是一个父接口,List和Set是继承自他的子接口,Collection是最基本的集合接口,Java SDK中不提供直接继承自Collect

  • Java复制文件常用的三种方法

    复制文件的三种方法: 1.Files.copy(path, new FileOutputStream(dest));. 2.利用字节流. 3.利用字符流. 代码实现如下: package com.tiger.io; import java.io.*; import java.nio.file.*; /** * 复制文件的三种方式 * @author tiger * @Date */ public class CopyFile { public static void main(String[]

  • 海量数据去重排序bitmap(位图法)在java中实现的两种方法

    在海量数据中查找出重复出现的元素或者去除重复出现的元素是面试中常考的文图.针对此类问题,可以使用位图法来解决.例如:已知某个文件内包含若干个电话号码,要求统计不同的号码的个数,甚至在O(n)时间复杂度内对这些号码进行排序. 位图法需要的空间很少(依赖于数据分布,但是我们也可以通过一些放啊发对数据进行处理,使得数据变得密集),在数据比较密集的时候效率非常高.例如:8位整数可以表示的最大十进制数值为99999999,如果每个数组对应于一个bit位,那么把所有的八进制整数存储起来只需要:99Mbit

  • sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite是啥? 1.一种轻型数据库 2.关系型数据库 3.占用资源很低,几百K内存,适合嵌入式设备 4.支持windows.linux.unix 5.可与java.php.c#.python等结合 6.处理速度快于mysql 7.不需要配置.不需要安装.不需要管理 8.一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件,简单的说一个数据库就是一个单一文件 为啥要用它? 之前的web项目一直用的mysql数据库,因为目前的项目需要做一个桌面应用,可以在不同地方复用的,而我们不能

随机推荐