前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >存折与信用卡(继承)

存折与信用卡(继承)

作者头像
叶茂林
发布于 2023-07-30 01:53:54
发布于 2023-07-30 01:53:54
14700
代码可运行
举报
运行总次数:0
代码可运行

题目描述

定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry! over balance!”。

从存折类派生出信用卡类CCreditcard,信用卡类增加了透支限额(limit,float)一项数据成员,对取款操作进行修改,允许在限额范围内透支金额,超出范围取款提示“sorry! over limit!”。注意,在本题中,balance可以是负数,例如当余额为500,可透支金额为500,取款800时,则balance为 - 300。

编写主函数,建立这两个类的对象并测试之。

1.对于存折类,输入账号、姓名、余额后,按照查询余额、存款、查询余额、取款、查询余额的顺序调用类方法并输出。

2.对于信用卡类,输入账号、姓名、余额、透支限额后,按照查询余额、存款、查询余额、取款、查询余额的顺序调用类方法并输出。

输入

账号 姓名 余额

存款金额

取款金额

账号 姓名 余额 透支限额

存款金额

取款金额

输出

账户余额

存款操作结果

账户余额

取款操作结果

账户余额

账户余额

存款操作结果

账户余额

取款操作结果

账户余额

输入样例1 

1000 Tom 1000 500 1000 2000 John 500 500 500 1501

输出样例1

balance is 1000 saving ok! balance is 1500 withdraw ok! balance is 500 balance is 500 saving ok! balance is 1000 sorry! over limit! balance is 1000

思路分析

考查继承知识。

我们选择把数据成员设定为protected,把所有输入输出交给类内成员函数实现,让我们的main函数体现出类封装的优越性。

有个地方要注意的是,信用卡类的透支功能在一定范围,判断的时候会比较大小,问题在于balance是浮点型数据,而浮点型数据由于存储的问题,并不能直接用==判断是否相等,所以如果想要避开这个问题,那么就要注意判断的顺序问题,即让else承担相等的情况。

AC代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include"iostream"
using namespace std;
class CAccount
{
	protected:
		long account;
		char name[10];
		float balance;
	public:
		void datain()
		{
			cin>>account>>name>>balance;
		}
		void deposit()
		{
			float amount;
			cin>>amount;
			balance+=amount;
			cout<<"saving ok!"<<endl;
		}
		void withdraw()
		{
			float amount;
			cin>>amount;
			if(amount>balance)
			{
				cout<<"sorry! over balance!"<<endl;
				return;
			}
			balance-=amount;
			cout<<"withdraw ok!"<<endl;
		}
		void check()
		{
			cout<<"balance is "<<balance<<endl;
		}
};
class CCreditcard:public CAccount
{
	protected:
		float limit;
	public:
		void datain()
		{
			cin>>account>>name>>balance>>limit;
		}
		void withdraw()
		{
			float amount;
			cin>>amount;
			if(amount>balance+limit)
			{
				cout<<"sorry! over limit!"<<endl;
				return;
			}
			balance-=amount;
			cout<<"withdraw ok!"<<endl;			
		}
};
int main()
{
	CAccount Account;
	CCreditcard Creditcard;
	Account.datain();
	Account.check();
	Account.deposit();
	Account.check();
	Account.withdraw();
	Account.check();
	Creditcard.datain();
	Creditcard.check();
	Creditcard.deposit();
	Creditcard.check();
	Creditcard.withdraw();
	Creditcard.check();
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
存折与信用卡(继承)Java
定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry! over balance!”。
叶茂林
2023/07/30
1840
存折类定义(类与对象)Python
定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry! over limit!”。
叶茂林
2023/07/30
2210
【AI时代的设计模式:LSP原则的智能应用】
在这个例子中,我们将 信用卡 直接继承 储蓄卡,并且重写了父类储蓄卡 的 withdraw() 方法的行为,导致不同的类(储蓄卡和信用卡)有了不同的行为契约,破坏了里氏替换原则(当子类信用卡作为储蓄卡时去替换它的取款行为变成可透支的了,这使得子类和父类的操作结果不一致,因为储蓄卡是不可透支的,这就不符合储蓄卡本应有的行为)。
ImAileen
2024/12/23
720
【AI时代的设计模式:LSP原则的智能应用】
银行账户(静态成员与友元函数)
为账户类Account增加一个友元函数,实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)。友元函数声明形式为 friend void Update(Account& a);
叶茂林
2023/07/30
1860
银行账户(静态成员与友元函数)
Python今日第二次小练
请使用Python完成以下编程题 编写一个 BankAccount 类,该类具有以下方法: init(self, account_number, balance=0):初始化账户号码和余额。 deposit(self, amount):存款方法,增加账户余额。 withdraw(self, amount):取款方法,减少账户余额,如果余额不足则提示错误。 get_balance(self):返回当前账户余额。
软件架构师Michael
2025/03/18
740
存折与信用卡(继承)Python
定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry! over balance!”。
叶茂林
2023/07/30
1600
【Java 基础篇】Java 面向对象详解:面向对象编程的艺术
如果你正在学习Java编程,面向对象编程(Object-Oriented Programming,OOP)是一个不可或缺的概念。Java是一种面向对象的编程语言,这意味着它的编程范式基于对象、类和继承。在本篇博客中,我们将深入探讨Java中面向对象编程的核心概念,从什么是对象开始,逐步介绍类、继承、封装、多态等重要概念。无论你是初学者还是有一些编程经验,本篇博客都将帮助你建立对Java中面向对象编程的深刻理解。
繁依Fanyi
2023/10/12
9050
【Java 基础篇】Java 面向对象详解:面向对象编程的艺术
(删)Java线程同步实现一:synchronzied和wait()/notify()
上面文章(2.Java多线程总结系列:Java的线程控制实现)讲到了如何对线程进行控制,其中有一个是线程同步问题。下面我们先来看一个例子: 1、一个典型的Java线程安全例子 package com.chanshuyi.thread; public class ThreadDemo93 { public static void main(String[] args) { Account account = new Account(2300); new DrawMo
陈树义
2018/04/13
7730
课后作业代码参考
用户9184480
2024/12/17
370
C++控制台制作ATM机[通俗易懂]
在控制台编程中共设置了三个类,ATM类、Card类和Bankcard类,设计函数实现登录、查询、修改密码、取款、存款、转账以及退出系统等功能。程序分别从MFC控件和c++控制台实现。同时在要求的基础之上,进行了部分仿ATM的优化,例如在登陆界面输入错误三次就会冻结账号退出系统,在MFC对话框中加入图片更加真实等。
全栈程序员站长
2022/09/23
5590
C++数据抽象简介:实现信息隐藏和模块化设计
数据抽象在C++中被广泛应用,它通过隐藏具体的实现细节来实现信息隐藏和模块化设计。数据抽象是一种把数据类型的实现细节与实现的接口分离的方法,从而使代码更加灵活、可维护、可扩展。
很酷的站长
2023/09/01
2820
C++数据抽象简介:实现信息隐藏和模块化设计
【愚公系列】2023年11月 面向对象设计原则(六)-合成复用原则(Composite Reuse Principle or CRP)
面向对象设计原则是一些通用的软件设计原则,用于指导软件设计人员开发高质量、可扩展、可维护的软件系统。这些原则的作用如下:
愚公搬代码
2023/11/27
2530
Java面向对象程序设计实验报告(实验三 继承的练习)
实验内容: 1、建立一个人类(Person)和学生类(Student)功能要求:
命运之光
2024/03/20
3280
Java面向对象程序设计实验报告(实验三 继承的练习)
账户Account类文件编写(static成员使用)
static类成员是该类所有成员共享一份的数据,一处修改了,全部变更; static成员函数只能调用static成员数据; static const整形int,char,可以在类内声明和初始化,类外不必再声明(跟编译器有关) static const非整型 和 static 普通成员,必须在类内声明,在类外初始化!
Michael阿明
2021/02/20
4660
账户Account类文件编写(static成员使用)
(删)Java线程同步实现二:Lock锁和Condition
在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步。但在Java中还有一种方式可以实现线程同步,那就是Lock锁。 一.同步锁 我们还是用同步锁来实现存取款的例子: package com.chanshuyi.thread; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Thr
陈树义
2018/04/13
9920
聊聊 Python 中的同步原语,为什么有了 GIL 还需要同步原语
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/05/01
1570
LeetCode 2043. 简易银行系统
你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款)。 银行共有 n 个账户,编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数数组 balance 中,其中第 (i + 1) 个账户的初始余额是 balance[i] 。
Michael阿明
2022/01/07
3770
C++ Primer Plus习题及答案-第十章
类是用户定义的类型的定义。类声明指定了数据将如何存储,同时提供了访问和操作这些数据的方法。
艰默
2022/11/22
6730
使用Hashtable来检验随机数的随机性
1.首先是创建Hashtable,使用for循环和定义一个产生随机数的r,key值对应随机数的value值。
Java进阶者
2021/12/31
2380
使用Hashtable来检验随机数的随机性
银行账户管理系统
这个代码示例实现了一个简单的银行账户管理系统,包括账户类 BankAccount 和交易类 Transaction。账户类具有账户号码、余额和交易记录等属性,并提供存款、取款和打印交易记录的方法。交易类具有金额和类型等属性。
青灯古酒
2023/10/16
2690
推荐阅读
相关推荐
存折与信用卡(继承)Java
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验