C++实现ATM取款机
C++实现ATM取款机
代码:https://mbd.pub/o/bread/ZZeZk5Zp
1.任务描述
要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)
时,系统 能登录 ATM 取款机系统,用户可以按照以下规则进行:
查询余额:初始余额为10000元
ATM 取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不
允许透支。
ATM 存款:不能出现负存款。
修改密码:新密码长度不小于 6 位,不允许出现 6 位完全相同的情况,只有
旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改码。
2.要求
(1)对问题进行需求分析和定义,明确回答“程序必须做什么?”这个问题,确定程序必须达到那些功能,对目标程序提出完整、准确、清晰、具体的要求。
(2)系统设计
1.在理解需求和分析需求的基础上,确定为了实现这些需求,目标程序所需要的数据结构、算法和程序流程。然后,对已经确定的数据结构,算法等进一步细化出所有的子功能,确定出模块间的接口,描述每个模块的处理过程,确定输入输出数据的内外部形式。
2、算法和程序流程:画出相应程序流程图;
3、模块间接口描述。
(3)界面设计
对界面或交互方式进行设计并给出相应图解。实际应用界面可以是MFC应用或者控制台界面。
(4)系统实现
采用C++ 语言。给出编程草稿((至少包括核心程序),可用源代码或伪代码列出。
(5)测试与调试
记录测试,调试和程序修改的过程。
3.流程图

3.2系统模块设计
ATM机可执行存款(withdrawal)、取款(deposit)、查询余额(search)、修改密码(password_change)等基本功能,具体实现如下:
- 系统功能显示界面:构造函数void show (),实现欢迎使用ATM取款机系统的显示。
int show()//显示
{int c; printf("\n欢迎使用ATM取款机\n"); printf("\n*********************************\n");printf("\n\n\t1.查询余额\n");printf("\n\n\t2.取款\n");printf("\n\n\t3.存款\n"); printf("\n\n\t4.修改密码\n");printf("\n\n\t5.取卡退出系统\n");printf("\n*********************************\n");printf("\n请选择您的办理项目:\n");scanf("%d",&c);return c;
}
- 查询余额函数:构造函数int search(int money)。
{int b; b=money;printf("你的余额为:%d\n",b) ;
}
3) 取款功能:构造函数int withdrawal(int money)。int withdrawal(int money)//取款
{
int a,b,c;
printf("请输入您要提取的现金:\n");
scanf("%d",&a);
if(a%100!=0||a>5000)
{printf("取款的金额应为100的倍数,总金额不超过5000,请重新输入金额:\n") ;scanf("%d",&a);
}b=money-a;if(b<0)printf("对不起 ,你的余额不足\n");else{printf("请收好您的%d元现金\n",a);money=money-a;}
return (money);
}
4) 修改密码:构造函数int password_change(int a2)。
int password_change(int a2)//修改密码
{int a,b,c=1,d,e=1;while(e){printf("请输入你的旧密码:\n");scanf("%d",&d);if(d==a2)e=0;else{e=1;printf("你输入的密码错误,请重新输入:\n");}}while(c){printf("请输入您的六位数新密码\n");scanf("%d",&a2);printf("请确认您的六位数新密码\n");scanf("%d",&b);if(a2==b){ if(b>100000&&b<999999&&b/(b/100000)!=111111){c=0;printf("密码修改成功\n");}else{printf("您输入的密码不符合要求,请从新输入\n");c=1;}}else{c=1;printf("您两次输入的密码不一致,请重新输入:\n");}}return a2;}
5) 存款功能:构造函数int deposit(int money)。
int deposit(int money)//存款
{int i,j,k;printf("请输入你要存的金额\n");scanf("%d",&k);if(k<0){printf("对不起,没有负存款\n");}else{printf("\n您好,您存款%d元\n",k);money=money+k;}return money;
}
4.测试与调试
4.1密码登录界面:

图4.1 密码登录界面
4.2功能界面:
输入功能选择,系统自动进入相应功能界面。
图4.2功能界面
4.3查询余额:
图4.3查询余额
4.4 取款界面:
。
图4.4取款界面
相关文章:
C++实现ATM取款机
C实现ATM取款机 代码:https://mbd.pub/o/bread/ZZeZk5Zp 1.任务描述 要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456) 时,系统 能登录 ATM 取款机系统,用户可以按照以下规则进行: 查询…...
【数电笔记】11-最小项(逻辑函数的表示方法及其转换)
目录 说明: 逻辑函数的建立 1. 分析逻辑问题,建立逻辑函数的真值表 2. 根据真值表写出逻辑式 3. 画逻辑图 逻辑函数的表示 1. 逻辑表达式的常见表示形式与转换 2. 逻辑函数的标准表达式 (1)最小项的定义 (2&am…...
Gradio库的安装和使用教程
目录 一、Gradio库的安装 二、Gradio的使用 1、导入Gradio库 2、创建Gradio接口 3、添加接口到Gradio应用 4、处理用户输入和模型输出 5、关闭Gradio应用界面 三、Gradio的高级用法 1、多语言支持 2、自定义输入和输出格式 3、模型版本控制 4、集成第三方库和API …...
【BLE基础知识】--Slave latency设置流程及空中包解析
1、Slave latency基本概念 当BLE从设备对耗电量要求较高时,若需要节省耗电量,则可以通过设置Slave Latency参数来减少BLE从设备的耗电。 Slave Latency:允许Slave(从设备)在没有数据要发的情况下,跳过一定…...
数据结构之堆排序以及Top-k问题详细解析
个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂…...
ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO
ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO 概述 上节 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 讲述了如何通过网页控制一个 GPIO。本节实现在网页上控制多个 GPIO。 示例解析 前端设计 前端代码建立了四个 GPIO,如下死 GPIO 2 在前端的…...
说一说MySQL中的锁机制
说一说MySQL中的锁机制 按粒度大小从大到小分为 全局锁 全局锁 全局锁是对整个数据库的锁,最常用的全局锁就是读写锁 读锁 阻止其他用户更新数据,允许其他用户读数据写锁 阻止其他用户更新和读数据 修改一些大量的数据,并且不希望其他用户…...
C++笔试训练day_1
文章目录 选择题编程题 选择题 编程题 #include <iostream> #include <algorithm> #include <vector>using namespace std;int main() {int n 0;cin >> n;vector<int> v;v.resize(3 * n);int x 0;for(int i 0; i < v.size(); i){cin >&…...
详解Spring对Mybatis等持久化框架的整合
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...
[Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
在使用 electron-packager 工具输出 linux 平台的 electron app 后,可以使用 electron-installer-debian 工具把 app 打包成供Ubuntu平台下安装的 debian 包。 electron-installer-debian是一个用于创建 Debian Linux(.deb)安装包的开发工…...
7.24 SpringBoot项目实战【审核评论】
文章目录 前言一、编写控制器二、编写服务层三、Postman测试前言 我们在 上文 7.23 已经实现了 评论 功能,本文我们继续SpringBoot项目实战 审核评论 功能。逻辑如下: 一是判断管理员权限,关于角色权限校验 在 7.5 和 7.6 分别基于 拦截器Interceptor 和 切面AOP 都实现过…...
Java实现动态加载的逻辑
日常工作中我们经常遇到这样的场景,某某些逻辑特别不稳定,随时根据线上实际情况做调整,比如商品里的评分逻辑,比如规则引擎里的规则。 常见的可选方案有: JDK自带的ScriptEngine 使用groovy,如GroovyClassLoader、Gro…...
数据库的设计规范
文章目录 第一范式(1NF):列不可再分 第二范式 (2NF):所有非主键字段,都必须 完全依赖主键,不能部分依赖 第三范式(3NF):所有非主键字段不能依赖于…...
正则表达式从放弃到入门(2):grep命令详解
正则表达式从放弃到入门(2):grep命令详解 总结 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你是一个新手,请从头阅读这篇文章,如果你…...
用Java写一个王者荣耀游戏
目录 sxt包 Background Bullet Champion ChampionDaji GameFrame GameObject Minion MinionBlue MinionRed Turret TurretBlue TurretRed beast包 Bear Beast Bird BlueBuff RedBuff Wolf Xiyi 打开Eclipse创建图片中的几个包 sxt包 Background package sxt;…...
基于SSM的新闻网站浏览管理实现与设计
基于ssm的新闻网站浏览管理实现与设计 摘要:在大数据时代下,科技与技术日渐发达的时代,人们不再局限于只获取自己身边的信息,而是对全球信息获取量也日渐提高,网络正是打开这新世纪大门的钥匙。在传统方式下ÿ…...
【蓝桥杯软件赛 零基础备赛20周】第6周——栈
文章目录 1. 基本数据结构概述1.1 数据结构和算法的关系1.2 线性数据结构概述1.3 二叉树简介 2. 栈2.1 手写栈2.2 CSTL栈2.3 Java 栈2.4 Python栈 3 习题 1. 基本数据结构概述 很多计算机教材提到:程序 数据结构 算法。 “以数据结构为弓,以算法为箭”…...
CWE/SANS TOP 25 2022
我整理了CWE/SANS TOP25 2022年的这25类缺陷,分类适合的开发语言,其实主要是C/C语言的缺陷相对于Java、PHP、Python、C#等更高级的语言的不同,所以分为适合C/C语言和其它语言。但是大家不要纠结,例如SQL难道C/C语言程序没有吗&…...
Qt 天气预报项目
参考引用 QT开发专题-天气预报 1. JSON 数据格式 1.1 什么是 JSON JSON (JavaScript Object Notation),中文名 JS 对象表示法,因为它和 JS 中对象的写法很类似 通常说的 JSON,其实就是 JSON 字符串,本质上是一种特殊格式的字符串…...
新知识-Tuple元组的使用
文章目录 前言一、tuple元组是什么?二、解决方法总结 前言 这次碰到一个需求,大致需要把表A中的字段1和字段2作为共同的表去查表B,并且一次性需要查多条,一开始是想的是根据字段1和字段2去查然后循环多次,但是这样反复…...
Cadence 17.4 ORCAD PSpice 保姆级教程:手把手教你搭建RC低通滤波器并验证效果
Cadence 17.4 ORCAD PSpice 从零到精通:RC低通滤波器实战全解析 在电子设计领域,仿真工具的重要性不言而喻。对于初学者而言,Cadence 17.4 ORCAD PSpice可能看起来界面复杂、功能繁多,让人望而生畏。但别担心,本文将从…...
为什么SwinIR在图像修复中吊打CNN?深入解析Swin-Transformer的三大优势
SwinIR如何重新定义图像修复?Transformer架构的三大技术革命 当你在手机相册里翻出一张十年前的老照片,却发现它模糊得连人脸都难以辨认时,传统CNN模型或许能帮你恢复部分细节,但边缘依然会显得生硬失真。这正是SwinIR要解决的核心…...
3月技术风暴:程序员的范式革命——2026年3月科技大事件记录
2025年3月:颠覆性技术狂潮与程序员认知升维全纪录 3月结束,你感受到“版本迭代”的压力了吗? 2025年的春天不是春暖花开,而是技术奇点的“温度骤升”。本文绝非一份普通事件清单,而是用程序员的第一性原理,…...
ROS2实战:从rclpy到rcl,手把手拆解一个Publisher的完整创建流程(附代码)
ROS2深度解析:从Python接口到C层实现的Publisher全链路拆解 在机器人操作系统ROS2的架构中,理解从高级语言接口到底层实现的完整调用链路是开发者进阶的必经之路。本文将聚焦一个核心场景:创建一个Publisher对象时,从Python层的r…...
如何掌握Node-lru-cache的fetchMethod:异步数据获取的终极指南
如何掌握Node-lru-cache的fetchMethod:异步数据获取的终极指南 【免费下载链接】node-lru-cache A fast cache that automatically deletes the least recently used items 项目地址: https://gitcode.com/gh_mirrors/no/node-lru-cache Node-lru-cache是一个…...
YOLOv12镜像实战:工业质检场景下的高精度缺陷识别方案
YOLOv12镜像实战:工业质检场景下的高精度缺陷识别方案 1. 工业质检的挑战与YOLOv12的机遇 在制造业数字化转型浪潮中,工业质检一直是自动化程度较低的环节。传统人工检测面临三大痛点: 效率瓶颈:熟练质检员每分钟最多检测20-30…...
EcomGPT-7B模型蒸馏实践:训练更轻量的小模型服务于高并发场景
EcomGPT-7B模型蒸馏实践:训练更轻量的小模型服务于高并发场景 你是不是也遇到过这样的烦恼?手里有一个像EcomGPT-7B这样的大模型,它在电商场景下回答问题、生成文案的效果确实不错,但一到像“双十一”这样的大促节点,…...
DM数据库迁移实战:dimp与dexp版本兼容性问题解析与解决方案
1. 当DM数据库迁移遇上版本兼容性问题 最近在帮客户做DM数据库迁移时,遇到了一个典型问题:用高版本dexp导出的数据文件,无法用低版本dimp导入。这就像用最新版Word写的文档,用老版本打不开一样让人头疼。具体表现是执行导入命令时…...
DeepSeek API实战:如何用Python脚本绕过Postman直接调用(附完整代码)
DeepSeek API高效调用指南:Python脚本开发实战 在当今快节奏的开发环境中,效率是衡量开发者生产力的关键指标。传统API测试工具如Postman虽然功能强大,但在自动化流程和持续集成场景中往往显得笨重。本文将带你探索一种更轻量、更灵活的解决方…...
Gemma-3-12b-it镜像免配置实战:单命令启动多模态服务并集成Flask API
Gemma-3-12b-it镜像免配置实战:单命令启动多模态服务并集成Flask API 1. 快速了解Gemma-3-12b-it多模态能力 Gemma-3-12b-it是Google推出的轻量级多模态模型,它最大的特点就是能同时理解文字和图片。想象一下,你给它一张照片,它…...
