当前位置: 首页 > news >正文

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)等基本功能,具体实现如下:

  1. 系统功能显示界面:构造函数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;
}
  1. 查询余额函数:构造函数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取款机 代码&#xff1a;https://mbd.pub/o/bread/ZZeZk5Zp 1.任务描述 要求&#xff1a;设计一个程序&#xff0c;当输入给定的卡号和密码&#xff08;初始卡号和密码为123456) 时&#xff0c;系统 能登录 ATM 取款机系统&#xff0c;用户可以按照以下规则进行: 查询…...

【数电笔记】11-最小项(逻辑函数的表示方法及其转换)

目录 说明&#xff1a; 逻辑函数的建立 1. 分析逻辑问题&#xff0c;建立逻辑函数的真值表 2. 根据真值表写出逻辑式 3. 画逻辑图 逻辑函数的表示 1. 逻辑表达式的常见表示形式与转换 2. 逻辑函数的标准表达式 &#xff08;1&#xff09;最小项的定义 &#xff08;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从设备对耗电量要求较高时&#xff0c;若需要节省耗电量&#xff0c;则可以通过设置Slave Latency参数来减少BLE从设备的耗电。 Slave Latency&#xff1a;允许Slave&#xff08;从设备&#xff09;在没有数据要发的情况下&#xff0c;跳过一定…...

数据结构之堆排序以及Top-k问题详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂…...

ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO

ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO 概述 上节 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 讲述了如何通过网页控制一个 GPIO。本节实现在网页上控制多个 GPIO。 示例解析 前端设计 前端代码建立了四个 GPIO&#xff0c;如下死 GPIO 2 在前端的…...

说一说MySQL中的锁机制

说一说MySQL中的锁机制 按粒度大小从大到小分为 全局锁 全局锁 全局锁是对整个数据库的锁&#xff0c;最常用的全局锁就是读写锁 读锁 阻止其他用户更新数据&#xff0c;允许其他用户读数据写锁 阻止其他用户更新和读数据 修改一些大量的数据&#xff0c;并且不希望其他用户…...

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等持久化框架的整合

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…...

[Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包

​ 在使用 electron-packager 工具输出 linux 平台的 electron app 后&#xff0c;可以使用 electron-installer-debian 工具把 app 打包成供Ubuntu平台下安装的 debian 包。 electron-installer-debian是一个用于创建 Debian Linux&#xff08;.deb&#xff09;安装包的开发工…...

7.24 SpringBoot项目实战【审核评论】

文章目录 前言一、编写控制器二、编写服务层三、Postman测试前言 我们在 上文 7.23 已经实现了 评论 功能,本文我们继续SpringBoot项目实战 审核评论 功能。逻辑如下: 一是判断管理员权限,关于角色权限校验 在 7.5 和 7.6 分别基于 拦截器Interceptor 和 切面AOP 都实现过…...

Java实现动态加载的逻辑

日常工作中我们经常遇到这样的场景&#xff0c;某某些逻辑特别不稳定&#xff0c;随时根据线上实际情况做调整&#xff0c;比如商品里的评分逻辑&#xff0c;比如规则引擎里的规则。 常见的可选方案有: JDK自带的ScriptEngine 使用groovy&#xff0c;如GroovyClassLoader、Gro…...

数据库的设计规范

文章目录 第一范式&#xff08;1NF&#xff09;&#xff1a;列不可再分 第二范式 &#xff08;2NF&#xff09;&#xff1a;所有非主键字段&#xff0c;都必须 完全依赖主键&#xff0c;不能部分依赖 第三范式&#xff08;3NF&#xff09;&#xff1a;所有非主键字段不能依赖于…...

正则表达式从放弃到入门(2):grep命令详解

正则表达式从放弃到入门&#xff08;2&#xff09;&#xff1a;grep命令详解 总结 本博文转载自 这是一篇”正则表达式”扫盲贴&#xff0c;如果你还不理解什么是正则表达式&#xff0c;看这篇文章就对了。 如果你是一个新手&#xff0c;请从头阅读这篇文章&#xff0c;如果你…...

用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的新闻网站浏览管理实现与设计 摘要&#xff1a;在大数据时代下&#xff0c;科技与技术日渐发达的时代&#xff0c;人们不再局限于只获取自己身边的信息&#xff0c;而是对全球信息获取量也日渐提高&#xff0c;网络正是打开这新世纪大门的钥匙。在传统方式下&#xff…...

【蓝桥杯软件赛 零基础备赛20周】第6周——栈

文章目录 1. 基本数据结构概述1.1 数据结构和算法的关系1.2 线性数据结构概述1.3 二叉树简介 2. 栈2.1 手写栈2.2 CSTL栈2.3 Java 栈2.4 Python栈 3 习题 1. 基本数据结构概述 很多计算机教材提到&#xff1a;程序 数据结构 算法。 “以数据结构为弓&#xff0c;以算法为箭”…...

CWE/SANS TOP 25 2022

我整理了CWE/SANS TOP25 2022年的这25类缺陷&#xff0c;分类适合的开发语言&#xff0c;其实主要是C/C语言的缺陷相对于Java、PHP、Python、C#等更高级的语言的不同&#xff0c;所以分为适合C/C语言和其它语言。但是大家不要纠结&#xff0c;例如SQL难道C/C语言程序没有吗&…...

Qt 天气预报项目

参考引用 QT开发专题-天气预报 1. JSON 数据格式 1.1 什么是 JSON JSON (JavaScript Object Notation)&#xff0c;中文名 JS 对象表示法&#xff0c;因为它和 JS 中对象的写法很类似 通常说的 JSON&#xff0c;其实就是 JSON 字符串&#xff0c;本质上是一种特殊格式的字符串…...

新知识-Tuple元组的使用

文章目录 前言一、tuple元组是什么&#xff1f;二、解决方法总结 前言 这次碰到一个需求&#xff0c;大致需要把表A中的字段1和字段2作为共同的表去查表B&#xff0c;并且一次性需要查多条&#xff0c;一开始是想的是根据字段1和字段2去查然后循环多次&#xff0c;但是这样反复…...

强化学习优化文本生成:从原理到实战,打造可控AI创作工具

1. 项目概述&#xff1a;当强化学习遇上文本生成如果你玩过AI绘画&#xff0c;一定对“提示词工程”不陌生——通过精心设计的文字描述&#xff0c;让模型画出你想要的画面。但你是否想过&#xff0c;这个过程本身也可以被“优化”&#xff1f;比如&#xff0c;你希望模型生成一…...

基于APScheduler的定时提醒服务设计与Python实现

1. 项目概述与核心价值最近在折腾一个名为rogerwus/Noonwake_test的项目&#xff0c;这名字乍一看有点神秘&#xff0c;像是某个内部测试或者个人实验性质的仓库。作为一名常年泡在代码仓库里的开发者&#xff0c;我对这类项目标题背后的故事和技术探索总是充满好奇。经过一番深…...

微内核操作系统nanoclaw:面向嵌入式与边缘计算的极简设计

1. 项目概述&#xff1a;一个为嵌入式与边缘计算而生的微型操作系统最近在折腾一些资源极其有限的嵌入式板子&#xff0c;比如只有几十KB内存的MCU&#xff0c;或者那些主打低功耗的边缘计算节点。在这些场景下&#xff0c;跑一个完整的Linux系统简直是天方夜谭&#xff0c;而传…...

深圳市2026年打造人工智能先锋城市项目扶持计划申请指南

本项目扶持计划下设十个项目类别&#xff0c;均采用事后奖补类支持方式。1、申报单位需同时满足基础申报条件和专项申报条件。基础申报条件如下&#xff1a;&#xff08;一&#xff09;申报单位为在深圳市内&#xff08;含深汕特别合作区&#xff09;从事生产经营活动&#xff…...

别只重启软件!解决ThingWorx连接KepServer报错的正确姿势:瞄准后台驱动

别只重启软件&#xff01;解决ThingWorx连接KepServer报错的正确姿势&#xff1a;瞄准后台驱动 在工业物联网&#xff08;IIoT&#xff09;系统的运维中&#xff0c;ThingWorx与KepServer的通信问题堪称经典难题。许多工程师遇到连接报错时&#xff0c;第一反应往往是重启配置界…...

换背景颜色怎么操作?5分钟掌握证件照、商品图换底色的完整指南

最近有不少朋友问我&#xff0c;证件照背景太丑怎么办&#xff1f;电商产品图背景杂乱怎么处理&#xff1f;其实换背景颜色没有想象中那么复杂&#xff0c;今天就把我用过的所有方法和工具整理出来&#xff0c;帮你彻底解决这个问题。为什么要学会换背景颜色先说说我为什么突然…...

从零打造互动徽章:激光切割与电容触摸的软硬件融合实践

1. 项目概述与核心思路如果你参加过技术大会或者创客市集&#xff0c;一定对那些闪烁着酷炫灯光、能与人互动的徽章印象深刻。这类被称为“Badge”的可穿戴设备&#xff0c;早已超越了单纯的身份标识功能&#xff0c;成为了展示技术、创意和社群文化的微型平台。今天要分享的&a…...

KMS_VL_ALL_AIO智能激活脚本:5分钟搞定Windows和Office永久激活的终极方案

KMS_VL_ALL_AIO智能激活脚本&#xff1a;5分钟搞定Windows和Office永久激活的终极方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活和Office办公软件授权而烦恼吗&…...

LabVIEW触发采集实战:从原理到多通道同步实现

1. 项目概述&#xff1a;为什么我们需要触发采集&#xff1f;在数据采集领域&#xff0c;尤其是自动化测试、设备监控和信号分析等场景&#xff0c;我们常常会遇到一个核心痛点&#xff1a;如何精准地捕捉到我们真正关心的那一段信号&#xff1f;想象一下&#xff0c;你正在监测…...

HarmonyOS 6 CalendarPickerDialog 日历选择弹窗使用文档

文章目录完整代码功能概述代码结构说明核心参数详解1. 基础参数2. DateRange 结构说明3. 示例禁用区间配置说明总结完整代码 Entry Component struct CalendarPickerDialogExample {private selectedDate: Date new Date(2025-08-05);private disabledDateRange: DateRange[]…...