选课系统

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

posted @ 2020-12-09 15:57  Vancciiii  阅读(475)  评论(0编辑  收藏  举报