Java_面向对象03:综合案例学生信息管理

本文通过一个综合案例介绍如何使用Java实现学生信息管理,包括创建Subject和Student类,实现学生与专业的关联,以及处理新增需求如统计选修学生数量。文章探讨了不同关联实现方式的优缺点,并提供了代码优化建议,强调了对象初始化和引用类型处理的重要性。
摘要由CSDN通过智能技术生成

模拟实现场景:

 

场景分析

1.考虑都有哪些对象

每个对象都有对应的特征

2.考虑这些对象都从属哪些类中

 分别由这两个类实例化出来四个对象

编写测试subject类

 创建类—>创建类属性—>创建getset 方法—>创建无参 和 带参构造器—>测试代码

一键格式化,ctrl shift F 

 

package com.immoc.model;
/**
 * 专业类
 * @auther:dongdong
 */
public class Subject {
    //成员属性:学科名称、学科编号、学制年限
    private String subjectName;
    private String subjectNo;
    private int sujectLife;

    //构造器
    public Subject() {

    }

    public Subject(String subjectName, String subjectNo, int sujectLife) {
        this.setSubjectName(subjectName);
        this.setSubjectNo(subjectNo);
        this.setSujectLife(sujectLife);
    }

    //get 和 set 方法
    public String getSubjectName() {
        return subjectName;
    }

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

    public String getSubjectNo() {
        return subjectNo;
    }

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

    public int getSujectLife() {
        return sujectLife;
    }

    public void setSujectLife(int sujectLife) {
        if (sujectLife < 0) {
            return;
        } else
            this.sujectLife = sujectLife;
    }

    /**
     * 专业介绍的方法
     * @return 专业介绍的信息,包括名称、编号、年限
     * */
    public String info() {
        String str = "专业信息如下:\n专业名称:" + getSubjectName() + "\n专业编号" + getSubjectNo() + "\n专业学年:" + getSujectLife();
        return str;
    }
}
package com.immoc.test;

import com.immoc.model.Subject;

public class SchoolTest {
    public static void main(String[] args) {
        //测试Subject类
        Subject one = new Subject("计算机科学与应用","01001",4);
        System.out.println(one.info());
        Subject two = new Subject("计算机科学与应用","01001",-4);
        System.out.println(two.info());
    }
}

编写测试Studnet类

构造器 idea 中也有快捷方式创建,Generate-constructor

判断字符串是否相等,用equals 实现。

package com.immoc.model;

public class Student {
    //成员属性:学号、姓名、性别、年龄
    private String studentNo;
    private String studentName;
    private String studentGender;
    private int studentAge;

    //构造器
    public Student() {
    }

    public Student(String studentNo, String studentName, String studentGender, int studentAge) {
        this.setStudentNo(studentNo);
        this.setStudentName(studentName);
        this.setStudentGender(studentGender);
        this.setStudentAge(studentAge);
    }

    //get 和 setter
    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 getStudentGender() {
        return studentGender;
    }

    /**
     * 给性别赋值,限定必须是男或者女。反之强制赋值为男
     *
     * @param studentGender 传入性别
     */
    public void setStudentGender(String studentGender) {
        if (studentGender.equals("男")  || studentGender.equals("女") )
        this.studentGender = studentGender;
        else
            this.studentGender="男";
    }

    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学号:" + getStudentNo() + "\n姓名" + getStudentName() + "\n性别" + getStudentGender() + "\n年龄" + getStudentAge();
        return str;
    }
}
package com.immoc.test;

import com.immoc.model.Student;
import com.immoc.model.Subject;

public class SchoolTest {
    public static void main(String[] args) {
        Student stu1 = new Student("S01","张三","不男不女",100000);
        System.out.println(stu1.introduction());
    }
}

通过方法实现学生与相关专业关联 

 让学生在自我表述的时候报上自己的专业 和 学年制年限

方案一:

在方法中添加两个参数分别表示专业名称和学制年限。方法重载实现

 方案二:

在方法中添加一个专业对象作为参数,通过其属性获得相关信息。

通过传入这个对象我可以获得和这个对象相关的所有属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值