LeetCode 118. 楊輝三角
阿新 • • 發佈:2020-12-08
目錄
1.功能調查與系統功能框架圖
功能調查:本選課系統主要功能包括學生新增課程、移除課程,檢視自己所選的課程,以及檢視課程是否已經被選滿了。主要供學生選課使用。
2.類的設計
3.類的說明
Course類
/** * 課程 */ 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; }
Course類用來儲存課程號、課程名、學分、任課教師以及已選課的學生。
類的屬性 :courseName表示課程名;courseId表示課程號;teacher表示任課教師;credit表示學分;students表示選擇該門課程的學生。
類的方法:自動生成的stters/getters方法;addStudent加入學生;removeStudent移除學生;isSelectedStudent學生是否選過這門課程;isNullStudent選課是否達到限定人數。
//課加入學生 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(); } //學生是否選過這門課 public boolean isSelectedStudent(Student stu) { boolean flag = false; for (Student s : students) {// 只能用於檢查,不能修改 if (s == stu) { flag = true; break; } } return flag; } //學科學生未達到限定人數嗎 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 } }
Student類
/** * 學生程式碼 * */ 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; }
類的屬性:stuId表示學生學號;stuName表示學生姓名; major表示學生專業;
類的方法:自動生成的stters/getters方法;addCourse新增課程;removeCourse移除課程;displayCourse顯示學生已選課程;isSelectedCourse這門課程是否已經選過; isNullCourse學生是否還有選課位置。
// 學生選課;
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();
}
// 課是否被選過
public boolean isSelectedCourse(Course course) {
boolean flag = false;
for (Course c : courses) {
if (c == course) {
flag = true;
break;
}
}
return flag;
}
// 學生是否還有選修課位置
public boolean isNullCourse(Course course) {
boolean flag = false;
for (Course c : courses) {
if (c == null) {
flag = true;
break;
}
}
return flag;
}
}
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;
}
}
類的屬性:id教師工號; teacherName教師姓名; courses教師所教課程。
類的方法:自動生成的stters/getters方法。
4.系統的包(package)的規劃設計
course包
主要包含Course類,addStudent類;removeStudent類;isSelectedStudent類;isNullStudent類。
student包
主要包含Student類,addCourse類;removeCourse類;displayCourse類;isSelectedCourse類; isNullCourse類。
teacher包
主要包含Teacher類。