1. 程式人生 > 其它 >LeetCode 118. 楊輝三角

LeetCode 118. 楊輝三角

目錄

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類。