java實(shí)現(xiàn)學(xué)生選課系統(tǒng)
本文為大家分享了java實(shí)現(xiàn)學(xué)生選課系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
案例要求:
學(xué)生(學(xué)號(hào),姓名,專業(yè),所選課程{<3})
老師(工號(hào),姓名,所教課程{<3})
課程(課程號(hào),課程名,學(xué)分,教師,已選課學(xué)生{<30})
選課系統(tǒng)代碼如下:
//teacher
public class Teacher {
private int id;
private String teacherName;
private Course[] courses;
//構(gòu)造函數(shù)
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;
//構(gòu)造函數(shù)
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() {//默認(rèn)形式,要有以防萬一
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;
}
//課加入學(xué)生
public boolean addStudent(Student stu){
boolean flag = false;//標(biāo)志值:是否加入成功
//如果學(xué)生沒有選過這門課,同時(shí)課的學(xué)生還沒滿則執(zhí)行
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;
}
//課移除學(xué)生
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;
}
//顯示選擇課程的學(xué)生:
public void displayStudent(){
System.out.println("選擇的課程:"+this.courseName+"的學(xué)生有:");
for(Student s:students){
if(s!=null){
System.out.print(s.getStuName()+" ");
}
}
System.out.println();
}
//子方法1:學(xué)生是否選過這門課
public boolean isSelectedStudent(Student stu){
boolean flag=false;
for(Student s:students){//只能用于檢查,不能修改
if(s==stu){
flag=true;
break;
}
}
return flag;
}
//子方法2:學(xué)科學(xué)生未達(dá)到限定人數(shù)嗎
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
}
}
/**
* 學(xué)生代碼
* @author Floris0811
*/
public class Student {
private String stuName;
private int stuId;
private String major;
private Course[] courses;
//構(gòu)造函數(shù)
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;
}
//學(xué)生選課;
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);//課程也要添加學(xué)生
flag=true;
break;
}
}
}
return flag;
}
//學(xué)生移除課程
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);//在課程中移除學(xué)生
flag=true;
break;
}
}
}
return flag;
}
//顯示學(xué)生所選的課程
public void displayCourse(){
System.out.println("學(xué)生"+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:學(xué)生是否還有選修課位置
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 {
/**
* 選課管理系統(tǒng)
*/
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,"高數(shù)");
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();
}
}
關(guān)于管理系統(tǒng)的更多內(nèi)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專題》進(jìn)行學(xué)習(xí)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)知識(shí)之CharArrayReader流的使用
這篇文章主要介紹了Java基礎(chǔ)知識(shí)之CharArrayReader流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Linux中Java開發(fā)常用軟件安裝方法總結(jié)
這篇文章主要介紹了Linux中Java開發(fā)常用軟件安裝方法總結(jié),需要的朋友可以參考下2020-02-02
java實(shí)現(xiàn)一個(gè)簡單的網(wǎng)絡(luò)爬蟲代碼示例
這篇文章主要介紹了java實(shí)現(xiàn)一個(gè)簡單的網(wǎng)絡(luò)爬蟲代碼示例,還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下。2017-11-11
Java網(wǎng)絡(luò)編程基礎(chǔ)用法詳解
網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備(計(jì)算機(jī))的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來,本文將帶大家詳細(xì)了解Java的網(wǎng)絡(luò)編程,文中有相關(guān)的代碼示例,需要的朋友可以參考下2023-05-05
SpringMVC中@controllerAdvice注解的詳細(xì)解釋
剛接觸SpringMVC應(yīng)該很少會(huì)見到這個(gè)注解,其實(shí)它的作用非常大,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@controllerAdvice注解的相關(guān)資料,需要的朋友可以參考下2022-02-02
java使用hadoop實(shí)現(xiàn)關(guān)聯(lián)商品統(tǒng)計(jì)
本篇文章java使用hadoop實(shí)現(xiàn)關(guān)聯(lián)商品統(tǒng)計(jì),可以實(shí)現(xiàn)商品的關(guān)聯(lián)統(tǒng)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
Java多線程中不同條件下編寫生產(chǎn)消費(fèi)者模型方法介紹
這篇文章主要介紹了Java多線程中不同條件下編寫生產(chǎn)消費(fèi)者模型方法介紹,介紹了生產(chǎn)消費(fèi)者模型,然后分享了相關(guān)代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
SpringBoot2.0整合SpringCloud Finchley @hystrixcommand注解找不到解決方案
這篇文章主要介紹了SpringBoot2.0整合SpringCloud Finchley @hystrixcommand注解找不到解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
idea創(chuàng)建項(xiàng)目沒有webapp文件夾的解決方法
本文主要介紹了idea創(chuàng)建項(xiàng)目沒有webapp文件夾的解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

