Java封装综合案例

请按照图中要求完成学生信息管理系统设计,程序运行参考效果图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package me.feihong.model;

public class Subject {
// 成员属性:学科名称、学科编号、学制年限、报名选修的学生个数
private String subjectName;
private String subjectNo;
private int subjectLife;
private Student[] myStudents;
private int studentNum;

// 无参构造方法
public Subject() {

}

// 带参构造,实现对学科名称、编号、学制年限赋值
public Subject(String subjectName, String subjectNo, int subjectLife) {
this.setSubjectName(subjectName);
this.setSubjectNo(subjectNo);
this.setSubjectLife(subjectLife);
}

public Subject(String subjectName, String subjectNo, int subjectLife,Student[] myStudents) {
this.setSubjectName(subjectName);
this.setSubjectNo(subjectNo);
this.setSubjectLife(subjectLife);
this.setMyStudents(myStudents);
}

public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}

public String getSubjectName() {
return this.subjectName;
}

public void setSubjectNo(String subjectNo) {
this.subjectNo = subjectNo;
}

public String getSubjectNo() {
return this.subjectNo;
}

// 设置学制年限,限制必须>0
public void setSubjectLife(int subjectLife) {
if (subjectLife <= 0)
return;
this.subjectLife = subjectLife;
}

/**
* 获取选修专业的学生信息,如果保存学生信息的数组未被初始化,则先进行初始化
* @return
*/
public Student[] getMyStudents() {
if(this.myStudents==null)
this.myStudents=new Student[200];
return myStudents;
}

public void setMyStudents(Student[] myStudents) {
this.myStudents = myStudents;
}

public int getStudentNum() {
return studentNum;
}

public void setStudentNum(int studentNum) {
this.studentNum = studentNum;
}

public int getSubjectLife() {
return this.subjectLife;
}
/**
* 专业介绍的方法
* @return专业介绍相关信息,包括名称、编号、年限
*/
public String info() {
String str = "专业信息如下: \n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjectNo() + "\n学制年限:"
+ this.getSubjectLife() + "年";
return str;
}

public void addStudent(Student stu) {
/**
* 1、将学生保存到数组中
* 2、将学生个数保存到studentNum
*/
//1、将学生保存到数组中
int i;
for(i=0;i<this.getMyStudents().length;i++) {
if(this.getMyStudents()[i]==null) {
stu.setStudentSubject(this);
this.getMyStudents()[i]=stu;
break;
}
}
//2、将学生个数保存到studentNum
this.studentNum=i+1;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package me.feihong.model;

public class Student {
// 成员属性:姓名,学号,性别,年龄,专业
private String studentNo;
private String studentName;
private String studentSex;
private int studentAge;
private Subject studentSubject;

// 无参构造方法
public Student() {

}

// 多参构造方法,实现对姓名 学号 性别 年龄的赋值
public Student(String studentNo, String studentName, String studentSex, int studentAge) {
this.setStudentNo(studentNo);
this.setStudentName(studentName);
this.setStudentSex(studentSex);
this.setStudentAge(studentAge);
}


// 多参构造方法,实现对全部属性的赋值
public Student(String studentNo, String studentName, String studentSex, int studentAge, Subject studentSubject) {
this.setStudentNo(studentNo);
this.setStudentName(studentName);
this.setStudentSex(studentSex);
this.setStudentAge(studentAge);
this.setStudentSubject(studentSubject);
}

/**
* 获取专业对象,如果没有实例化,先实例化后再返回
*
* @return 专业对象信息
*/
public Subject getStudentSubject() {
if (this.studentSubject == null)
this.studentSubject = new Subject();
return studentSubject;
}

public void setStudentSubject(Subject studentSubject) {
this.studentSubject = studentSubject;
}

public String getStudentNo() {
return studentNo;
}

public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}

public String getStudentName() {
return studentName;
}

public void setStudentName(String studentName) {
this.studentName = studentName;
}

public String getStudentSex() {
return studentSex;
}

/**
* 限制性别只能是“男”或者“女”,反之,强制赋值为“男”
*
* @param studentSex
*/
public void setStudentSex(String studentSex) {
if (studentSex == "男" || studentSex == "女")
this.studentSex = studentSex;
else
this.studentSex = "男";
}

public int getStudentAge() {
return studentAge;
}

/**
* 给年龄赋值,限定必须在10-100之间,反之赋值为18
*
* @param studentAge
*/
public void setStudentAge(int studentAge) {
if (studentAge < 10 || studentAge > 100)
this.studentAge = 18;
else
this.studentAge = studentAge;
}

/**
* 学生自我介绍的方法
*
* @return 自我介绍的信息,包括姓名,学号,性别,年龄
*/
public String introduction() {
String str = "学生信息如下:\n姓名" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
+ this.getStudentSex() + "\n年龄" + this.getStudentAge() + "\n所报专业名称:"
+ this.getStudentSubject().getSubjectName() + "\n学制年限:" + this.getStudentSubject().getSubjectLife()
+ "\n专业编号:" + this.getStudentSubject().getSubjectNo();
return str;
}

/**
* 学生自我介绍的方法
*
* @param subjectName
* @param subjectLife
* @return 自我介绍的信息,包括姓名,学号,性别,年龄,所学专业名称,学制年限
*/
public String introduction(String subjectName, int subjectLife) {
String str = "学生信息如下:\n姓名" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
+ this.getStudentSex() + "\n年龄" + this.getStudentAge() + "\n所报专业名称:" + subjectName + "\n学制年限:"
+ subjectLife;
return str;
}

/**
* 学生自我介绍的方法
*
* @param mySubject 所选专业的对象
* @return 自我介绍的信息,包括姓名,学号,性别,年龄,所学专业名称,学制年限,专业编号
*/
public String introduction(Subject mySubject) {
String str = "学生信息如下:\n姓名" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
+ this.getStudentSex() + "\n年龄" + this.getStudentAge() + "\n所报专业名称:" + mySubject.getSubjectName()
+ "\n学制年限:" + mySubject.getSubjectLife() + "\n专业编号:" + mySubject.getSubjectNo();
return str;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package me.feihong.test;
import me.feihong.model.*;
public class SchoolTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
//测试Subject
Subject sub1=new Subject("计算机科学与应用","j0001",4);
System.out.println(sub1.info());
System.out.println("============================");
//测试Student
Student stu1=new Student("S01","张三","男",18,sub1);
System.out.println(stu1.introduction());
System.out.println("============================");
Student stu2=new Student("S02","李四","女",17);
System.out.println(stu2.introduction("计算机科学与应用", 4));
System.out.println("============================");
Student stu3=new Student("S03","王五","男",18);
System.out.println(stu3.introduction(sub1));
System.out.println("============================");
//测试指定专业中到底有多少学生报名
sub1.addStudent(stu1);
sub1.addStudent(stu2);
sub1.addStudent(stu3);
System.out.println(sub1.getSubjectName()+"的专业中已有"+sub1.getStudentNum()+"学生进行了报名");
}

}
-------------本文结束感谢您的阅读-------------