✨作者:命运之光
✨ 专栏:Java面向对象程序设计实验报告
 
目录
✨一、需求设计
✨二、概要设计
✨三、详细设计
✨四、调试结果
✨五、测试结果
✨附录:源程序代码(带注释)
demo3类
Person类
Student类
Account类
实验三 继承的练习
实验环境:Eclipse+JDK
实验目的:
- 掌握并理解面向对象的编程思想;
 - 熟练掌握类和对象的定义及使用;
 - 掌握面向对象特征之一——继承的使用。
 实验内容:
1、建立一个人类(Person)和学生类(Student)功能要求:
- Person中包含4个保护型的数据成员name、address、sex、age分别为字符串,字符串,字符及整型。表示:姓名、地址、性别和年龄;
 - 一个四参构造方法,一个无参构造方法,及一个输出方法用于显示四种属性。
 - Student继承Person,并增加输出成员math、english存放数学和英语成绩。
 - 一个六参构造方法,一个两参构造方法,一个无参构造方法,重写输出方法用于显示全部六种属性.
 
2、写一个名为 Account 的类模拟账户。该类的属性和方法如下所示。
- 该类包括的属性:
 
- 账号 id
 - 余额 balance
 - 年利率 annualInterestRate
 - 包含的方法:
 
- 构造器;
 - getter 和setter 方法;
 - 返回月利率的方法 getMonthlyInterest();
 - 取款方法 withdraw();
 - 存款方法deposit()。
 要求:写一个用户程序测试 Account 类。在用户程序中,创建一个账号为 1122、余额为 20000、年利率 4.5%的 Account 对象。使用 withdraw 方法提款 30000 元,并打印余额。再使用 withdraw 方法提款 2500 元,使用 deposit 方法存款 3000 元,然后打印余额和月利率。
提示:
- 在提款方法 withdraw 中,需要判断用户余额是否能够满足提款数额的要求,如果不能,应给出提示。
 - 年利率是指一名用户以一年计算的存款利率,年利率=月利率*12=日利率*360
 ![]()
以下是实验报告内容
✨✨前言:由于五一假期导致最后一节Java上机实验课没有上,所以不是很清楚实验报告的具体要求,我就按照之前数据结构实验报告的格式写了这次的Java上级报告,有需要的还是直接复制粘贴就行了,不过这次我写的比较敷衍,自己要上交实验报告的话,最好还是稍微修改美化一下🦄。
✨一、需求设计
1、建立一个人类(Person)和学生类(Student)功能要求:
Person中包含4个保护型的数据成员name、address、sex、age分别为字符串,字符串,字符及整型。表示:姓名、地址、性别和年龄;
一个四参构造方法,一个无参构造方法,及一个输出方法用于显示四种属性。
Student继承Person,并增加输出成员math、english存放数学和英语成绩。
一个六参构造方法,一个两参构造方法,一个无参构造方法,重写输出方法用于显示全部六种属性.
2、写一个名为 Account 的类模拟账户。该类的属性和方法如下所示。
该类包括的属性:
账号 id
余额 balance
年利率 annualInterestRate
包含的方法:
构造器;
getter 和setter 方法;
返回月利率的方法 getMonthlyInterest();
取款方法 withdraw();
存款方法deposit()。
✨二、概要设计
本实验设计了四个类,一个测试类demo3,一个人类Person类,一个Student类,一个Account类。在人类中设置四个保护类成员属性分别是name,address,sex,age,表示:姓名,地址,性别和年龄。设置四个参构造方法,一个无参构造方法,及一个输出方法用于显示四种属性。Student继承Person,并增加输出成员math、english存放数学和英语成绩。一个六参构造方法,一个两参构造方法,一个无参构造方法,重写输出方法用于显示全部六种属性。在Account类中设置三个私有成员属性账号 id,余额 balance,年利率 annualInterestRate一个公有属性月利率monthlinterest,构造相对应的setter和getter方法,设置返回月利率的方法 getMonthlyInterest(),取款方式为withdraw(),存款方法deposit()。
✨三、详细设计
新建一个class类类名为Person,依据题意定义私有成员属性姓名,地址,性别和年龄,分别为:
protected String name;
protected String address;
protected String sex;
protected String age; 
写入setter,getter方法
 public void setName(String name) {
        this.name = name;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getName() {
        return name;
    }
    public String getAddress() {
        return address;
    }
    public String getAge() {
        return age;
    }
    public String getSex() {
        return sex;
    } 
最后定义薪水增长额方法
public double giverise(double rise) {
        return rise * money;
    } 
定义无参全参构造。
    public Person(){}
    public Person(String name,String address,String sex,String age)
    {
        this.name=name;
        this.address=address;
        this.sex=sex;
        this.age=age;
    } 
新建一个class类类名为Student继承Person并增加输出成员math、english存放数学和英语成绩。
private double math;
private double english; 
构造Student类的无参有参两参构造。
//无参构造
public Student(){}
//六参构造
public Student(String name,String address,String sex,String age,double math,double english)
{
    this.name=name;
    this.address=address;
    this.sex=sex;
    this.age=age;
    this.math=math;
    this.english=english;
}
//两参构造
public Student(double math,double english)
{
    this.math=math;
    this.english=english;
} 
写入getter方法
//重写输方法
public double getMath()
{
    return math;
}
public double getEnglish()
{
    return english;
}
public String getName()
{
    return name;
}
public String getAddress()
{
    return address;
}
public String getSex()
{
    return sex;
}
public String getAge()
{
    return age;
} 
新建一个class类类名为Account,依据题意定义三个私有成员属性账号 id,余额 balance,年利率 annualInterestRate一个公有属性月利率monthlinterest。
private String id;
private double balance;
private double annualInterestRate;
double monthlinterest;
setter,getter重写
//set重写
public String setId(String id)
{
    this.id=id;
    return this.id;
}
public double setBalance(double balance)
{
    this.balance=balance;
    return this.balance;
}
public double setAnnualInterestRate(double annualInterestRate)
{
    this.annualInterestRate=annualInterestRate;
    return this.annualInterestRate;
}
//get重写
public String getId()
{
    return this.id;
}
public double getBalance()
{
    return this.balance;
}
public double getAnnualInterestRate()
{
    return this.annualInterestRate;
} 
定义返回月利率方法
public double getMonthlyInterest()
{
    monthlinterest=annualInterestRate/12;
    return monthlinterest;
} 
定义取款方式
public double withdraw(double qu)
{
    //qu为取款值
    if(qu>balance)
    {
        System.out.println("余额不足!");
        System.out.println("您的账户余额为:"+balance);
    }
    else
    {
        balance=balance-qu;
        System.out.println();
    }
    return balance;
} 
定义存款方式
public double deposit(double cun)
{
    //cun为存款值
    balance=balance+cun;
    return balance;
} 
✨四、调试结果
输入第一题的测试样例为:
姓名为李四,地址为西安明德理工学院,性别为男,年龄为21,数学成绩为98.0,英语成绩为89.0。
以下为调试结果截图:
 提款 40000 元在提款 1500 元然后存款 5000 元打印余额和月利率
以下为调试结果截图:
 
✨五、测试结果
依据实验要求第一题依此传入值,姓名为张三,地址为北京吸尘发给你区甲11号德外大街德胜科技园美江大厦 A座-6层,性别为男,年龄为25,数学成绩为99.0,英语成绩为99.0以下为测试结果截图:
 依据实验要求第二题依此传入值,提款 30000 元在提款 2500 元然后存款 3000 元打印余额和月利率以下为测试结果截图:
 
✨附录:源程序代码(带注释)
demo3类
package 命运之光;
public class demo3 {
    public static void main(String[] args)
    {
        System.out.println("--------第一题--------");
        Student s=new Student("张三","北京吸尘发给你区甲11号德外大街德胜科技园美江大厦 A座-6层","男","25",99.0,99.0);
        System.out.println("姓名:"+s.getName());
        System.out.println("地址:"+s.getAddress());
        System.out.println("性别:"+s.getSex());
        System.out.println("年龄:"+s.getAge());
        System.out.println("数学成绩:"+s.getMath());
        System.out.println("英语成绩:"+s.getEnglish());
        System.out.println("--------第二题--------");
        Account a=new Account();
        a.setId("1122");
        a.setBalance(20000);
        a.setAnnualInterestRate(0.045);
        //以下进行测试数据
        a.withdraw(30000);
        a.withdraw(2500);
        a.deposit(3000);
        //打印余额
        System.out.println("您的账户余额为:"+a.getBalance());
        //打印月利率
        System.out.println("月利率为:"+a.getMonthlyInterest());
    }
} 
Person类
package 命运之光;
public class Person {
    protected String name;
    protected String address;
    protected String sex;
    protected String age;
    public Person(){}
    public Person(String name,String address,String sex,String age)
    {
        this.name=name;
        this.address=address;
        this.sex=sex;
        this.age=age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getName() {
        return name;
    }
    public String getAddress() {
        return address;
    }
    public String getAge() {
        return age;
    }
    public String getSex() {
        return sex;
    }
} 
Student类
package 命运之光;
public class Student extends Person {
    private double math;
    private double english;
    //无参构造
    public Student(){}
    //六参构造
    public Student(String name,String address,String sex,String age,double math,double english)
    {
        this.name=name;
        this.address=address;
        this.sex=sex;
        this.age=age;
        this.math=math;
        this.english=english;
    }
    //两参构造
    public Student(double math,double english)
    {
        this.math=math;
        this.english=english;
    }
    //重写输方法
    public double getMath()
    {
        return math;
    }
    public double getEnglish()
    {
        return english;
    }
    public String getName()
    {
        return name;
    }
    public String getAddress()
    {
        return address;
    }
    public String getSex()
    {
        return sex;
    }
    public String getAge()
    {
        return age;
    }
} 
Account类
package 命运之光;
public class Account {
    private String id;
    private double balance;
    private double annualInterestRate;
    double monthlinterest;
    //set重写
    public String setId(String id)
    {
        this.id=id;
        return this.id;
    }
    public double setBalance(double balance)
    {
        this.balance=balance;
        return this.balance;
    }
    public double setAnnualInterestRate(double annualInterestRate)
    {
        this.annualInterestRate=annualInterestRate;
        return this.annualInterestRate;
    }
    //get重写
    public String getId()
    {
        return this.id;
    }
    public double getBalance()
    {
        return this.balance;
    }
    public double getAnnualInterestRate()
    {
        return this.annualInterestRate;
    }
    //返回月利率方法
    public double getMonthlyInterest()
    {
        monthlinterest=annualInterestRate/12;
        return monthlinterest;
    }
    //取款方法
    public double withdraw(double qu)
    {
    //qu为取款值
        if(qu>balance)
        {
            System.out.println("余额不足!");
            System.out.println("您的账户余额为:"+balance);
        }
        else
        {
            balance=balance-qu;
            System.out.println();
        }
        return balance;
    }//存款方式
    public double deposit(double cun)
    {
        //cun为存款值
        balance=balance+cun;
        return balance;
    }
} 
  点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
  ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

 ![[架构之路-201]-《软考-系统分析师》- 关键技术 - 结构化分析方法与面向对象分析(分析与设计的区别)](https://img-blog.csdnimg.cn/9e4b33f9ded947199618974ffc50f079.png)















