Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,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
2260
【AI时代的设计模式:LSP原则的智能应用】
在这个例子中,我们将 信用卡 直接继承 储蓄卡,并且重写了父类储蓄卡 的 withdraw() 方法的行为,导致不同的类(储蓄卡和信用卡)有了不同的行为契约,破坏了里氏替换原则(当子类信用卡作为储蓄卡时去替换它的取款行为变成可透支的了,这使得子类和父类的操作结果不一致,因为储蓄卡是不可透支的,这就不符合储蓄卡本应有的行为)。
ImAileen
2024/12/23
720
【AI时代的设计模式:LSP原则的智能应用】
银行账户(静态成员与友元函数)
为账户类Account增加一个友元函数,实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)。友元函数声明形式为 friend void Update(Account& a);
叶茂林
2023/07/30
1860
银行账户(静态成员与友元函数)
存折与信用卡(继承)Python
定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry! over balance!”。
叶茂林
2023/07/30
1600
(删)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++数据抽象简介:实现信息隐藏和模块化设计
数据抽象在C++中被广泛应用,它通过隐藏具体的实现细节来实现信息隐藏和模块化设计。数据抽象是一种把数据类型的实现细节与实现的接口分离的方法,从而使代码更加灵活、可维护、可扩展。
很酷的站长
2023/09/01
2830
C++数据抽象简介:实现信息隐藏和模块化设计
C++控制台制作ATM机[通俗易懂]
在控制台编程中共设置了三个类,ATM类、Card类和Bankcard类,设计函数实现登录、查询、修改密码、取款、存款、转账以及退出系统等功能。程序分别从MFC控件和c++控制台实现。同时在要求的基础之上,进行了部分仿ATM的优化,例如在登陆界面输入错误三次就会冻结账号退出系统,在MFC对话框中加入图片更加真实等。
全栈程序员站长
2022/09/23
5590
【愚公系列】2023年11月 面向对象设计原则(六)-合成复用原则(Composite Reuse Principle or CRP)
面向对象设计原则是一些通用的软件设计原则,用于指导软件设计人员开发高质量、可扩展、可维护的软件系统。这些原则的作用如下:
愚公搬代码
2023/11/27
2530
Java面向对象程序设计实验报告(实验三 继承的练习)
实验内容: 1、建立一个人类(Person)和学生类(Student)功能要求:
命运之光
2024/03/20
3300
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
1590
LeetCode 2043. 简易银行系统
你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款)。 银行共有 n 个账户,编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数数组 balance 中,其中第 (i + 1) 个账户的初始余额是 balance[i] 。
Michael阿明
2022/01/07
3770
C++ Primer Plus习题及答案-第十章
类是用户定义的类型的定义。类声明指定了数据将如何存储,同时提供了访问和操作这些数据的方法。
艰默
2022/11/22
6740
Python今日第二次小练
请使用Python完成以下编程题 编写一个 BankAccount 类,该类具有以下方法: init(self, account_number, balance=0):初始化账户号码和余额。 deposit(self, amount):存款方法,增加账户余额。 withdraw(self, amount):取款方法,减少账户余额,如果余额不足则提示错误。 get_balance(self):返回当前账户余额。
软件架构师Michael
2025/03/18
740
银行账户管理系统
这个代码示例实现了一个简单的银行账户管理系统,包括账户类 BankAccount 和交易类 Transaction。账户类具有账户号码、余额和交易记录等属性,并提供存款、取款和打印交易记录的方法。交易类具有金额和类型等属性。
青灯古酒
2023/10/16
2800
敏捷测试价值观、方法和实践读书笔记(5)
在调用 deposit 方法时,如果是负值,就抛出IllegalDepositException (非法存款值)异常
顾翔
2024/09/10
780
敏捷测试价值观、方法和实践读书笔记(5)
python的小程序
class Account: def __init__(self, number, name): self.number = number self.name = name self.balance = 0 def deposit(self, amount): if amount <= 0: raise ValueError('must be positive(存入金额有误)') self.balance += amount def withdraw(self, amount): if
py3study
2020/01/13
4350
推荐阅读
相关推荐
存折与信用卡(继承)Java
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验