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

news/2024/10/18 2:31:21/

作者:命运之光 
✨ 专栏: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.ppmy.cn/news/69812.html

相关文章

RK3568平台开发系列讲解(调试篇)debugfs 分析手段

🚀返回专栏总目录 文章目录 一、enable debugfs二、debugfs API三、使用示例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux 上有一些典型的问题分析手段,从这些基本的分析方法入手,你可以一步步判断出问题根因。这些分析手段,可以简单地归纳为下图: 从这…

CTFHub-ctfhub-Git泄露-Log

CTFHub-ctfhub-Git泄露-Log 当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题 1、dirsearch扫描 github上下载dirsearch-master 命令F…

某大学信息安全竞赛——栈迁移加强版——只溢出0x8,无限ROP

芝士题目: 链接:https://pan.baidu.com/s/1uwFlcSg94MuC2tPi-HCb9w 提取码:joj6 感悟: 之前我只做过溢出超过0x10这样的栈迁移,思路就是找机会去泄露栈空间的地址然后把栈迁移到我们可以控制的栈空间,亦…

【vimsolo】让vim看起来像VSCode:颜色主题和状态栏的配置

文章目录 1. 目的2. 理念: vimsolo3. vimrc: 配置颜色4. vimrc: 配置状态栏5. 拷贝颜色主题和.vimrc: python安装脚本 1. 目的 习惯了 VSCode 默认的配色:黑色主题,蓝色状态栏。偶尔使用 Vim 时想让 vim 伪装的像 VSCode,不考虑花…

Verilog语法概述二:何为仿真?仿真可以在几个层面上进行?

Verilog 是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。 既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言。 …

方差分析 python中运行stata

方差分析 文章目录 方差分析[toc]1 单因素方差分析2 多因素方差分析 # 配置stata17在jupyter 配置 import stata_setup stata_setup.config(r"D:\Stata17\setup",se)1 单因素方差分析 from pystata import stata # 查看单因素方差分析命令介绍 stata.run("help…

springcloud基于web的智慧养老平台

系统分析 可行性分析 在开发系统之前要进行系统可行性分析,目的是在用最简单的方法去解决最大的问题,程序一旦开发出来满足了用户的需要,所带来的利益也很多。下面我们将从技术、操作、经济等方面来选择这个系统最终是否开发。 1、技术可行…

如何用R语言分析COVID-19相关数据

一、概述 COVID-19是当前全球面临的一项重大挑战。 本文将介绍如何使用R语言分析COVID-19相关数据,探索其感染率、死亡率和人口特征的相关性,以及使用统计建模方法预测COVID-19的死亡率。 二、数据导入与筛选 COVID-19 Data Repository by the Center…