c语言练习题 ATM机流程

2023-11-07

这里写图片描述
自学c语言自娱自乐的,看到有的练习题上有模拟ATM机流程的练习就试着写了一个。

#include<stdio.h>
#include<windows.h>


int userpassword;
int remaind;


void welcome();
void end();
int  start();
void password();
void loadin();
void leftcount();
void getmoney();
void savemoney();



void welcome()
{
    printf("******************************\n");
    printf("*   welcome use kirito ATM   *\n");
    printf("*      password 819821       *\n");
    printf("*                            *\n");
    printf("*   any key to continue...   *\n");
    printf("******************************\n");
    getch();
    system("cls");
}

void end()
{   
    system("cls");
    printf("******************************\n");
    printf("*         kirito ATM         *\n");
    printf("*                            *\n");
    printf("*                            *\n");
    printf("*       any key to end...    *\n");
    printf("******************************\n");
    getch();
    exit(0);
}

int start()
{   
    int z;
    do
    {
        system("cls");
        printf("******************************\n");
        printf("*     please select key:     *\n");
        printf("*       1. password          *\n");
        printf("*       2. remaind           *\n");
        printf("*       3. getmoney          *\n");
        printf("*       4. savemoney         *\n");
        printf("*       5. Return            *\n");
        printf("******************************\n");
        scanf("%d",&z);
    }
    while(z!=1 && z!=2 && z!=3 && z!=4 && z!=5);
    return z;
}

void loadin()
{
    int i,password;
    i = 0;
    system("cls");
    printf("input password:\n");/*验证密码*/
    scanf("%d",&password);
    while(password != userpassword)/*验证密码,三次后系统退出*/
    {
        i++;
        system("cls");
        if(i==1 || i==2) 
            printf("Wrong password,input again\n");
        if(i == 3) 
        {
            printf("Wrong Password,System Close!");
            Sleep(2000);
            end();
        }
        scanf("%d",&password);
    }
}

void password()
{   int key;
    int password;
    int newpassword1,newpassword2;
    loadin();/*验证密码*/
    do{

        system("cls");
        printf("******************************\n");
        printf("*     please select key:     *\n");
        printf("*     1. change password     *\n");
        printf("*     2. Return              *\n");
        printf("*                            *\n");
        printf("******************************\n");
        scanf("%d",&key);
    }
    while(key != 1 && key != 2);
    switch(key)
    {
        case 1 : 
        {
            do
            {
                system("cls");
                printf("input new password:\n");
                scanf("%d",&newpassword1);
                system("cls");
                printf("input new password again:\n");
                scanf("%d",&newpassword2);
                system("cls");
                if(newpassword1 != newpassword2)
                    {
                        printf("diffrent password,try again.");
                        Sleep(2000);
                    }
            }while(newpassword1 != newpassword2);/*循环体内保证两次输入新密码一致*/

            userpassword = newpassword1;
            printf("new password change success!\n"); 
            Sleep(2000);

        };break; 
        case 2 : break;
    }

}


void leftcount()
{   
    loadin();/*验证密码*/
    printf("remaind : %d\n",remaind);
    getch();
}

void getmoney()
{   int key;
    int t;
    loadin();/*验证密码*/
    while(1)
    {
        do
        {   
            system("cls");
            printf("******************************\n");
            printf("*         1. 100             *\n");
            printf("*         2. 500             *\n");
            printf("*         3. 1000            *\n");
            printf("*         4. return          *\n");
            printf("******************************\n");
            scanf("%d",&key);
        }
        while(key!=1 && key!=2 && key!=3 && key!=4);

        switch(key)
        {   
            case 1 : 
                {   system("cls");
                    if(remaind >= 100) 
                        {   printf("take your money.\n");
                            remaind = remaind - 100;
                            printf("remaind : %d\n",remaind);   
                        }
                    else printf("no enough remaind.\n");            
                };break;
            case 2 : 
                {   system("cls");
                    if(remaind >= 500) 
                        {   printf("take your money.\n");
                            remaind = remaind - 500;
                            printf("remaind : %d\n",remaind);                           
                        }
                    else printf("no enough remaind.\n");            
                };break;
            case 3 : 
                {   system("cls");
                    if(remaind >= 1000) 
                        {   printf("take your money.\n");
                            remaind = remaind - 1000;
                            printf("remaind : %d\n",remaind);                           
                        }
                    else printf("no enough remaind.\n");            
                };break;                
            default : break;        
        }
        printf("1:continue or 2:return\n");
        scanf("%d",&t);
        if(t!=1) break;
    }       
}
void savemoney()
{
    int key;
    int t;
    loadin();
    while(1)
    {    
        do
        {   
            system("cls");
            printf("******************************\n");
            printf("*         1. 100             *\n");
            printf("*         2. 500             *\n");
            printf("*         3. 1000            *\n");
            printf("*         4. return          *\n");
            printf("******************************\n");
            scanf("%d",&key);
        }
        while(key!=1 && key!=2 && key!=3 && key!=4);

        switch(key)
        {   
            case 1 : 
                {   system("cls");
                    remaind = remaind + 100;
                    printf("remaind : %d\n",remaind);                   
                };break;
            case 2 : 
                {   system("cls");
                    remaind = remaind + 500;
                    printf("remaind : %d\n",remaind);                               
                };break;
            case 3 : 
                {   system("cls");
                    remaind = remaind + 1000;
                    printf("remaind : %d\n",remaind);                               
                };break;            
            default : break;        
        }
        printf("1:continue or 2:return\n");
        scanf("%d",&t);
        if(t!=1) break;             
    }   
} 
int main()
{
    int key;
    userpassword = 819821;
    remaind = 10000;
    system("title ATM@kirito");
    system("mode con cols=35 lines=10");
    welcome();
    while(1)
    {
        key = start();
        switch(key)
        {
            case 1 : password();break;
            case 2 : leftcount();break;
            case 3 : getmoney();break;
            case 4 : savemoney();break;
            case 5 : end();         
        }
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言练习题 ATM机流程 的相关文章

  • 错误:类 xxx 是公共的, 应在名为 xxx.java 的文件中声明

    此错误是因为类名和类文件名不一致造成的 我之前遇到是因为类名书写没有遵循驼峰规则 于是改了一下类名 但是类文件名没有改 启动项目时报错
  • Android Studio 之 Gradle与Project Structure详解

    http blog sina com cn s blog 77d5a0310102vhw1 html
  • 独角访谈

    1 序言 从比特币和区块链诞生的那天起 去中心化这个词就进入了大家的视野 技术极客们也纷纷开始研究这一开创性的技术及其应用 其中包括开发去中心化的数字货币交易所 然而这种交易所目前还未被大众熟知 原因有很多 比如大家目前还不够理解区块链技术
  • 时间控件里面禁选国家节假日期和双休,将其置灰

    继上篇文章 两个日期之间计算节假日 根据项目需要 对时间的选择进行约束 只能选择工作日 还是之前笨办法取到2018年和2019年的所有节假日 在计算属性中新增方法 判断是否是节假日 返回true和false 然后在时间控件中引用就可以了 看
  • 步道乐跑怎么刷次数_大事件

    别看了 没有方法 好好跑步锻炼身体才是硬道理 校会君很认真地建议大家好好跑步道乐跑哟 理由如下 没有看错 你的目标的确是80次 准备好了吗 再擦几次眼睛也没有用 女生的里程数确确实实是增加到了1 6公里 每天可以跑两次了 不过校会君觉得你应
  • Warning: Your Nexus 7 Tablet Is Not Actually a "Tablet" (But Here's How You Make It One)

    If the Nexus 7 wasn t your first Android tablet you may have noticed something different with the user interface when co
  • 将一个项目发布到Tomcat上并进行运行

    1 下载任意版本的Tomcat 我这里是9的版本 应该是当前我认为比较好用的一个版本了 有需要的话可以到公众号自取 微信公众号搜索 是短短吖 后台回复 Tomcat 即可 2 在webapp下部署一个项目Test 名字自选 英文即可 新建项
  • Python爬虫入门3:使用google浏览器获取网站访问的http信息

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 开启开发者工具 为了简单处理 本次介绍的内容是基于网站已经登录的情况下去获取网页访问的http信息 首先需要使用谷歌浏览器登录指定网站 并访问
  • 分治法时间复杂度求解:主定理、代换法和递归树

    分治策略 分解 将原问题划分成形式相同的子问题 规模可以不等 对半或2 3对1 3的划分 解决 对于子问题的解决 很明显 采用的是递归求解的方式 如果子问题足够小了 就停止递归 直接求解 合并 将子问题的解合并成原问题的解 这里引出了一个如
  • error: DIV usage mismatch between xx and output

    使用NDK编译代码的时候 常常需要导入预编译库 然而使用预编译库的时候报错了 因为库文件是android源码编译出来或者是其他NDK版本产生的 库版本存在了不兼容的情况 这里明显看出DIV 函数不兼容 home u android ndk
  • 【ESP-Matter】matter协议学习笔记--以乐鑫方案为例

    matter协议学习笔记 以乐鑫方案为例 0 写在前边的话 1 matter 协议基本概念 2 设备间的本地自动化交互 2 1 同步控制的实例 2 2 异步通知 订阅 报告 3 桥接设备 4 thread 边界路由器 5 专业名词 0 写在
  • 小目标检测 改进 拆分拼接

    小目标Trick 论文链接 https paperswithcode com paper slicing aided hyper inference and fine tuning 代码链接 https github com obss sa
  • 内网IP使用Https小记

    本文章记录使用Nginx 给内网IP地址提供Https协议功能 1 使用openssl生成自签证书 2 将证书配置在Nginx中 3 使用443端口 出现的一些问题 1 Chrome浏览器 会提示不安全 可以忽略 或者本地浏览器添加证书信任
  • cout保留两位小数

    cout保留两位小数 include
  • 简单方便的 JavaScript 逆向辅助模拟方法

    这是 进击的Coder 的第 419 篇技术分享 作者 崔庆才 来源 崔庆才丨静觅 阅读本文大概需要 3 分钟 在 JavaScript 逆向过程中 我们可能找到了一些入口 但是深入追踪下去 就发现这个过程过于复杂 调用层级越来越深 最终很
  • Obsidian 编译第三方插件

    起因 obsidian spaced repetition 是Obsidian 间隔重复插件 它可以帮助你定期复习自建的知识卡片 但功能上不是很全面 碰巧看到 Felix Luo 维护的obsidian spaced repetition插
  • 一分钟教你看懂蓝屏代码,轻松解决电脑蓝屏问题

    微软为了我们电脑中的资料安全可以说煞费苦心设计了很多有效的防护机制 其中蓝屏就是一个很好的给保护机制 接下来小编就提供一些经常出现的电脑蓝屏代码给大家 电脑蓝屏问题可以说只要使用过电脑朋友都遇到过 导致电脑蓝屏的原因有很多种 所有蓝屏代码也
  • 基于SM2密码算法的环签名方案的研究与设计

    摘要 环签名算法种类很多 大多数算法设计基于双线性对或大素数难分解 在安全性和运算速度方面有待提高 与基于椭圆曲线离散对数相比 双线性对的优势并不明显 因为它无法运用一样长度的密钥提供同样的安全性能 为了能够提升方案的安全性以及能够保证签名
  • JDK源码系列 & JAVA语言数据类型Byte

    目录 类的继承结构图 类的Diagram图 类 类的注释 源码分析 全局变量 静态内部类 构造方法 静态方法 parseByte 静态方法 valueOf 静态方法 toString 静态方法 hashCode 静态方法 decode 静态
  • 简述osi参考模型各层主要功能_OSI与TCP/IP简述

    OSI与TCP IP 二者区别 OSI参考模型定义计算机通信每层的功能 不是协议 TCP IP协议是具体的协议 实现了OSI参考模型规定的功能 参考下图 OSI参考模型每层功能 应用层 根据互联网中需要通信的应用程序的功能 定义客户端和服务

随机推荐

  • Android 显示提示框

    本文档为个人博客文档系统的备份版本 作者 小游 作者博客 点击访问 代码如下 Toast makeText context things happened Toast LENGTH SHORT show
  • go 命名与包;关于 ++/--;接收键盘输入/终端输入;switch;for 循环;函数;init 函数;匿名函数;闭包;defer;时间日期;内置函数;defer+recover 机制处理错误

    文章目录 命名与包 关于 接收键盘输入 终端输入 switch for 循环 函数 init 函数 匿名函数 闭包 defer 时间日期 内置函数 defer recover 机制处理错误 数组 代码 输出 命名与包 关于 接收键盘输入 终
  • drawio界面自定义配置

    1 适用的 drawio 版本 单机版 drawio 带有配置选项的单机版本 2 配置使用方法 点击配置 将json代码复制到弹窗中 点击应用即可 如果代码有错误 将无法应用 3 相关json代码 官方json配置参考 https www
  • Internet Download Manager2023最好用的HTTP下载神器

    Internet Download Manager 介绍2023最佳下载利器 Internet Download Manager 简称IDM 是一款Windows 平台功能强大的多线程下载工具 国外非常受欢迎 支持断点续传 支持嗅探视频音频
  • 一个 Go 开发的快速、简洁、美观、前后端分离的个人博客系统

    大家好 我是你们的章鱼猫 我们从来不含糊说推荐就推荐 所以今天给大家推荐一个 go echo vue 开发的快速 简洁 美观 前后端分离的个人博客系统 blog 同时基于这个系统也可以方便二次开发为 CMS 内容管理系统 和各种企业门户网站
  • 嵌入式 - UART使用进阶

    UART Advanced Features 概要 Overview 最简单直接的使用UART接口的方式 是在轮循操作中来设置和处理UART接口 轮询式UART的问题是轮询方式本身就是低效率的 如果我们的UART被配置为115200的波特率
  • vue踩坑之H5页面在ios的webview里面,长时间放到后台按钮失灵

    使用的前端技术栈是vue2 运行环境是在webview里面 具体的现象 在ios真机中 如果应用在后台运行几分钟再切回去 页面中的所有跳转按钮会失灵 并且报以下图片显示的错误 chunk是build之后的文件 从报错的信息来看是打包的某些文
  • 深入Java微服务之网关系列2:常见Java网关实现方案对比

    什么是服务网关 前文我们已经了解了构建微服务的基础springboot 同时也能使用springboot构建服务 接下来我们就基于springboot聊一下springcloud 这个springcloud并不是一个特定的技术 它指的是微服
  • this关键字和super关键字异同

    this关键字 1 在同一类中成员变量和局部变量名称相同时 区分两者和调用成员变量解决两者冲突问题 2 同一类中调用调用构造方法 3 指明成员方法 super关键字 1 在父类和子类中有相同变量时 调用父类变量 2 调用父类构造方法 必须放
  • 国内时间同步 ntp服务器地址

    国内时间同步 ntp服务器地址 ntp sjtu edu cn 202 120 2 101 上海交通大学网络中心NTP服务器地址 s1a time edu cn 北京邮电大学 s1b time edu cn 清华大学 s1c time ed
  • mysql8安装和驱动jar包下载

    方式一 基于docker安装 下拉镜像 docker pull mysql 8 0 21 启动镜像 docker run p 3307 3306 name mysql e MYSQL ROOT PASSWORD hadoop d mysql
  • 路由ui-router

    路由ui router Angular ngRoute针对于单视图 而ui router可用于多视图 这里说的视图是指在页面内我们可控制的 可变化的区域 比如我们点击了一个link 我们需要在视图中跳转到指定的一个页面 那么ngRoute已
  • 【Electron-vue】构建桌面应用(30)- child_proccess多次输出结果

    使用child process启动子进程 并与子进程通信的时候 发现会有多条打印结果 其原因是 不同的操作会触发stdin write操作 而每一个操作都需要通过stdout on来监听返回结果 如果使用stdout on来监听返回结果 那
  • 千聊视频的爬取

    import requests import random import os filedir 摩羯座周期下的黄金市场 if not os path exists filedir os makedirs filedir print 目录创建
  • 【BZOJ 2219】【超详细题解】数论之神

    2219 数论之神 Time Limit 3 Sec Memory Limit 259 MB Submit 365 Solved 33 Submit Status Discuss Description 在ACM DIY群中 有一位叫做 傻
  • 电机控制学习之路:simulink仿真之速度环、电流环PI参数设计

    前言 首先声明 笔者在电机控制之路也只是一个新手 撰写本文主要是为了对自己学习内容做一个总结和记录 网上FOC双闭环控制时的PI调参方法种类繁多 笔者在看的眼花缭乱之后以德州仪器的InstaSPIN FOC and InstaSPIN MO
  • 英语专栏——shell account

    shell account 外壳账号 A class of cheap but restricted internet dial up access Instead of connecting the computer directly t
  • ensp模拟器中云设备的使用及相关问题解决办法

    ensp模拟器中云设备的使用及相关问题解决办法 eNSP工具中的云代表通过各种网络技术连接起来的计算机网络环境 目前可实现的功能包括 仿真设备之间建立映射关系 绑定网卡与仿真设备之间进行通信 以及通过开放UDP端口方式与外部程序进行通信 基
  • Oracle-SQL脚本记录

    多字段匹配关键词查询 旧写法 where email like abc or address like abc 组合查询写法 where concat email address like abc
  • c语言练习题 ATM机流程

    自学c语言自娱自乐的 看到有的练习题上有模拟ATM机流程的练习就试着写了一个 include