模拟场景实现:
某校开设“计算机科学与应用”专业,专业编号J0001,学制4年。 现有3名学生都报名学习了这个专业。
代码逻辑:
student类:
package com.geekmubai.moudel;
public class Student {
//成员属性:学号、姓名、性别、年龄
private String studentNo;
private String studentName;
private String studentSex;
private int studentAge;
//无参构造方法
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 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;
}
public void setStudentSex(String studentSex) {
if (studentSex !="男" && studentSex != "女" )
this.studentSex = "男";
else
this.studentSex = studentSex;
}
public int getStudentAge() {
return studentAge;
}
public void setStudentAge(int studentAge) {
if (studentAge<10 || studentAge>100)
this.studentAge = 18;
else
this.studentAge = studentAge;
}
//学生自我介绍的方法
public String introduction(){
String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge();
return str;
}
//传入字符串
public String introduction(String subjectName,int subjectLife){
String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + subjectName+"\n年限:"+subjectLife;
return str;
}
//传入对象
public String introduction(Subject mySubject){
String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + mySubject.getSubjectName()+"\n年限:"+mySubject.getSubjectLife();
return str;
}
}
subject类
package com.geekmubai.moudel;
public class Subject {
//成员属性:学科名称、学科编号、学制年限、学生信息、报名的学生数
private String subjectName;
private String subjetcNo;
private int subjectLife;
private Student[] myStudents;
private int studentNum;
//无参构造方法
public Subject() {
}
//带参构造,实现对学科名称、编号、学制年限的赋值
public Subject(String subjectName, String subjectNo, int subjectLife) {
//this赋值,调用成员属性 没有业务逻辑 不推荐
//this.subjectName = subjectName;
//推荐用下面的set方法赋值
this.setSubjectName(subjectName);
this.setSubjetcNo(subjectNo);
this.setSubjectLife(subjectLife);
}
//带参构造,实现对属性的全部赋值
public Subject(String subjectName, String subjectNo, int subjectLife,Student[] myStudents) {
this.setSubjectName(subjectName);
this.setSubjetcNo(subjectNo);
this.setSubjectLife(subjectLife);
}
//get、set方法
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getSubjetcNo() {
return subjetcNo;
}
public void setSubjetcNo(String subjetcNo) {
this.subjetcNo = subjetcNo;
}
public int getSubjectLife() {
return subjectLife;
}
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;
}
//设置学制年限>0
public void setSubjectLife(int subjectLife) {
if (subjectLife <= 0)
return;
this.subjectLife = subjectLife;
}
//专业介绍的方法
public String info() {
String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjetcNo() + "\n学制年限:" + this.getSubjectLife();
return str;
}
// 1、将学生保存到数组中。
// 2、将学生数保存到studentNum
public void addStudent(Student stu){
for (int i=0;i<this.getMyStudents().length;i++){
if (this.getMyStudents()[i]==null){
this.getMyStudents()[i]=stu;
this.studentNum=i+1;
return;
}
}
}
}
测试类
package com.geekmubai.test;
import com.geekmubai.moudel.Student;
import com.geekmubai.moudel.Subject;
public class SubjectTest {
public static void main(String[] args) {
//测试subject
Subject sub = new Subject("计算机科学与技术","J0001",4);
System.out.println(sub.info());
System.out.println("=======================");
//测试student
Student stu = new Student("S01","慕白","男",20);
System.out.println(stu.introduction());
System.out.println("=======================");
//新增student
Student stu1 = new Student("S02","南宫","女",18);
System.out.println(stu1.introduction("网络工程",4));
System.out.println("=======================");
Student stu2 = new Student("S03","刘严","女",18);
System.out.println(stu2.introduction(sub));
System.out.println("=======================");
//测试指定专业报名人数
sub.addStudent(stu);
sub.addStudent(stu1);
sub.addStudent(stu2);
System.out.println(sub.getSubjectName()+"的专业已有"+sub.getStudentNum()+"人报名!");
}
}