Java面向对象程序设计实验报告(实验三 继承的练习)

news2024/11/28 4:41:49

作者:命运之光 
✨ 专栏:Java面向对象程序设计实验报告

 

目录

✨一、需求设计

✨二、概要设计

✨三、详细设计

✨四、调试结果

✨五、测试结果

✨附录:源程序代码(带注释)

demo3类

Person类

Student类

Account类 


实验三 继承的练习

实验环境:Eclipse+JDK

实验目的:

  1. 掌握并理解面向对象的编程思想;
  2. 熟练掌握类和对象的定义及使用;
  3. 掌握面向对象特征之一——继承的使用。

实验内容:

1、建立一个人类(Person)和学生类(Student)功能要求:

  • Person中包含4个保护型的数据成员name、address、sex、age分别为字符串,字符串,字符及整型。表示:姓名、地址、性别和年龄;
  • 一个四参构造方法,一个无参构造方法,及一个输出方法用于显示四种属性。
  • Student继承Person,并增加输出成员math、english存放数学和英语成绩。
  • 一个六参构造方法,一个两参构造方法,一个无参构造方法,重写输出方法用于显示全部六种属性.

2、写一个名为 Account 的类模拟账户。该类的属性和方法如下所示。

  • 该类包括的属性:
    1. 账号 id
    2. 余额 balance
    3. 年利率 annualInterestRate
  • 包含的方法:
    1. 构造器;
    2. getter 和setter 方法;
    3. 返回月利率的方法 getMonthlyInterest();
    4. 取款方法 withdraw();
    5. 存款方法deposit()。

要求:写一个用户程序测试 Account 类。在用户程序中,创建一个账号为 1122、余额为 20000、年利率 4.5%的 Account 对象。使用 withdraw 方法提款 30000 元,并打印余额。再使用 withdraw 方法提款 2500 元,使用 deposit 方法存款 3000 元,然后打印余额和月利率。

提示:

  1. 在提款方法 withdraw 中,需要判断用户余额是否能够满足提款数额的要求,如果不能,应给出提示。
  2. 年利率是指一名用户以一年计算的存款利率,年利率=月利率*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,交流会更方便哦~
 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[架构之路-201]-《软考-系统分析师》- 关键技术 - 结构化分析方法与面向对象分析(分析与设计的区别)

目录 前言: 一、分析与设计的区别 二、结构化分析方法 2.1 实体关系图:E - R 图 (名词) 2.2. 数据流图(数据的流动) (1) 顶层图。 (2) 逐层分解。 2.3. 状态转换图(动作) …

电压比较器

电压比较器&#xff1a; 应用一&#xff1a;过压&#xff0c;低压检测&#xff08;over and undervoltage detectors&#xff09; 如果Vin<Vs&#xff0c;则VoutVpullup。 如果Vin>Vs&#xff0c;则Vout0V。 应用二&#xff1a;窗口比较器&#xff08;window comparat…

Zadoff-Chu序列

ZC序列的定义 ZC序列有两个重要的参数&#xff1a; 根索引&#xff08;root index&#xff09; q 1 , 2 , ⋯ , N z c − 1 q1,2,\cdots,N_{zc}-1 q1,2,⋯,Nzc​−1ZC序列的长度 N z c N_{zc} Nzc​&#xff0c;一定得是奇数&#xff08;常常是质数&#xff09; 给定上述两…

网络:网络分层与协议/OSI七层模型/(TCP/IP模型)

一、简单理解 OSI模型(Open System Interconnection)&#xff1a; 七层模型&#xff0c;亦称OSI&#xff08;Open System Interconnection&#xff09;。参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一般…

数据结构——带头双向循环链表实现

目录 前言 一、结构介绍 二、增删查改的实现 1.在某一位置前插入数据 2.头插 3.尾插 4.删除某一位置的节点 5.头删 6.尾删 7.查找 8.打印 9.销毁 三、完整项目代码 1.头文件(List.h) 2.函数文件(List.c) 3.主函数测试文件(test.c) 前言 在学习数据结构过程中&…

HQL语法

HQL基础语法 Hive中的语句叫做HQL语句,是一种类似SQL的语句,基本上和SQL相同但是某些地方也是有很大的区别. 数据库操作 创建数据库 1.创建一个数据库,数据库在HDFS上的默认存储路径是/hive/warehouse/*.db。 create database hive01; 避免要创建的数据库已经存在错误&…

【零基础学机器学习 3】机器学习类型简介:监督学习 - 无监督学习 - 强化学习

机器学习是人工智能的一种应用,从大量数据中学习并解决特定问题。它使用计算机算法,通过经验自动提高效率。 机器学习主要有三种类型:监督、无监督和强化学习。 监督学习 概述 监督学习是一种使用标记数据来训练机器学习模型的机器学习类型。在标记数据中,输出已经是已知…

javascript-基础知识点总结

目录 &#xff08;一&#xff09;基础语法 1、javaScript引入方式 2、变量与常量 3、数据类型 typeof操作符 4、运算符 5、输出函数 6、类型转化 7、转移字符 8、注释 &#xff08;二&#xff09;流程控制 1、选择结构 switch 2、循环结构 for &#xff08;三&…

简单网络管理协议 SNMP

文章目录 1 概述1.1 结构1.2 操作 2 SNMP2.1 报文格式2.2 五大报文类型 3 扩展3.1 网工软考真题 1 概述 #mermaid-svg-95KMV1m3prKJgwv1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-95KMV1m3prKJgwv1 .error-ico…

【云原生】K8sYaml文件详细

K8sYaml文件详细 一、Kubernetes支持的文件格式1、yaml和json的主要区别2、yaml语言格式 二、YAML操作1、查看API资源版本标签2、编写资源配置清单3、创建资源对象4、查看创建的pod5、创建service服务对外提供访问并测试6、创建资源对象7、测试访问 三、Kubernetes中的Port四、…

chatgpt赋能Python-new_init_python

新版Python中的__new__和__init__方法 Python作为一种高级编程语言&#xff0c;具有简单易学、代码可读性高和编写效率高等特点&#xff0c;因此越来越受到程序员们的青睐。其中&#xff0c;__new__和__init__方法是Python中的两个非常重要的方法&#xff0c;它们在实例化一个…

chatgpt赋能Python-matplotlib绘制雷达图

Matplotlib 绘制雷达图 在数据分析和可视化领域&#xff0c;雷达图是一种常用的图表类型。Matplotlib 是一个用于绘制 2D 图形的 Python 库&#xff0c;也可以用于绘制雷达图。本文将介绍如何使用 Matplotlib 绘制雷达图&#xff0c;包括数据准备、绘图方式和样式设置。 数据…

改进YOLOv5 | 在 C3 模块中添加【SE】【CBAM】【 ECA 】【CA】注意力机制 | 附详细结构图

文章目录 1. SE 注意力模块1.1 原理1.2 C3_SE 代码2. CBAM 注意力模块2.1 原理2.2 C3_CBAM 代码3. CA 注意力模块3.1 原理3.2 C3_CA 代码4. ECA 注意力模块4.1 原理4.2 C3_ECA 代码5. 添加方式💡6. C3_Attention 结构图 🍀7. 相关推荐🍀

Ada语言学习(1)Basic Knowledge

文章目录 说在前头命名注释数字变量变量类型signed integersEnumerationsFloating Points 类型重用&#xff08;继承&#xff09;类型转换 运算符属性&#xff08;Attributes&#xff09;练习 说在前头 本系列教程将会通过提问的方式来完成整个学习过程&#xff0c;因为当你能…

瑞吉外卖 - 公共字段自动填充功能(10)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

每日一练 | 网络工程师软考真题 Day3

1、以下图的两种编码方案分别是 。 A&#xff0e;①差分曼彻斯特编码&#xff0c;②双相码 B&#xff0e;①NRZ编码&#xff0c;②差分曼彻斯特编码 C&#xff0e;①NRZ-I编码&#xff0c;②曼彻斯特编码 D&#xff0e;①极性码&#xff0c;②双极性码 2、假设模拟…

windows下安装emsdk

先从github上下载emsdk工程&#xff1a; # Get the emsdk repo git clone https://github.com/emscripten-core/emsdk.git# Enter that directory cd emsdkgit pull 更新到最新代码 clone 工程可以在 git bash here 命令行下&#xff1a; 执行下面的指令用cmd命令行&#xf…

chatgpt赋能Python-numpy_加速

介绍 NumPy是Python编程语言的数值计算扩展库。它包括一个强大的N维数组对象和用于处理这些数组的函数。NumPy是一个基于Python的免费开源软件项目&#xff0c;由社区驱动。这个库提供了一种高效的存储和处理大型矩阵数据的方式&#xff0c;同时也提供了非常高效的处理大量数据…

chatgpt赋能Python-jinja_python

Jinja Python介绍及SEO优化 Jinja是一个流行的Python模板引擎&#xff0c;它允许开发人员使用简单的语法来生成动态内容。在本文中&#xff0c;我们将介绍Jinja的基础知识&#xff0c;并探讨如何将其应用于搜索引擎优化。 Jinja Python介绍 Jinja是Python语言的一种模板引擎…

Java面向对象程序设计实验报告(实验一 面向对象基础练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 目录 ✨一、需求分析 ✨二、概要设计 ✨三、详细设计 ✨四、调试分析 ✨附录&#xff1a;源代码&#xff08;带注释&#xff09; 实验一 面向对象基础练习 实验环境&#xff1a;EclipseJDK …