选课系统
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类。