这个虽然很简单,但是我还是弄了一会儿,可见有多菜。练习算。

主要考察switch开关语句、do...while语句,页面的跳转我用的是goto,虽然是弊端,可是还是用了,因为太菜啊。大家有好建议的欢迎提出。

好了不说了,贴源码,欢迎各位网友老师,提出批评改进意见。

  1 /**
2 * Copyright (c) 1991 - 2016 Arvin Tang.
3 * All rights reserved.
4 *
5 * 文件名称:
6 * 简要描述:用C语言实现ATM界面,很丑的说
7 *
8 * 当前版本:1.0
9 * 作 者:
10 * 完成日期:2016-1-7
11 * 修订说明:
12 *
13 * 取代版本:
14 * 作 者:
15 * 完成日期:
16 * 修订说明:
17 */
18 #include <stdio.h>
19 #include <stdlib.h>
20 //
21 //clrscr();函数不是标准的C函数,只存在Tuber C中且#include <conio.h>。
22 //但是可以用system("cls");代替,且#include <stdlib.h>。
23
24 void pw(void);
25 void qu(void);
26 void cun(void);
27 void cha(void);
28
29 int qianshu = 1000;//定义卡内钱数
30
31 int main(void)
32 {
33 int number;
34
35 pw();
36 system("cls");//清除屏幕上的密码
37
38 loop:do
39 {
40 printf("=========================\n");
41 printf("|\t请选择以下数字:\t|\n");
42 printf("|\t1、取款\t\t|\n");
43 printf("|\t2、存款\t\t|\n");
44 printf("|\t3、查询余额\t|\n");
45 printf("|\t4、退出\t\t|\n");
46 printf("=========================\n");
47
48 scanf("%d",&number);
49 }while(number != 1 && number != 2 && number != 3 && number != 4);
50
51 switch(number)
52 {
53 case 1:
54 qu();
55 system("cls");
56 goto loop;
57
58 case 2:
59 cun();
60 system("cls");
61 goto loop;
62
63 case 3:
64 cha();
65 system("cls");
66 goto loop;
67
68 case 4:
69 printf("谢谢使用!\n再见!\n");
70 system("pause");
71 break;
72
73 }
74
75 return 0;
76 }
77
78 /**
79 * 函数名称:密码输入判断函数
80 * 输入参数:
81 * 输出参数:
82 * 返 回 值:
83 */
84 void pw(void)
85 {
86 int pw;//密码变量
87 int i=1;//密码次数累加量
88
89 printf("温馨提示密码:520,存款只能存整数!\n");
90 printf("请输入密码:\n");
91 scanf("%d",&pw);
92
93 while(pw != 520)
94 {
95 i++;
96 system("cls");
97 printf("请第%d次输入密码\n", i);
98 scanf("%d",&pw);
99 if(i==3)
100 {
101 printf("谢谢使用,密码错误次数过多,请明天再试。\n");
102 exit(0);//输入错误次数过多,系统退出。
103 }
104 }
105
106 }
107
108 /**
109 * 函数名称:取款
110 * 输入参数:
111 * 输出参数:
112 * 返 回 值:
113 */
114 void qu(void)
115 {
116 int number;//菜单数
117
118 do
119 {
120 system("cls");//清屏
121
122 //取款菜单
123 printf("=========================\n");
124 printf("|\t请选择以下数字:\t|\n");
125 printf("|\t1、取100\t|\n");
126 printf("|\t2、取200\t|\n");
127 printf("|\t3、取300\t|\n");
128 printf("|\t4、返回\t\t|\n");
129 printf("=========================\n");
130
131 scanf("%d", &number);
132
133 }while(number != 1 && number != 2 && number != 3 && number != 4);
134
135 //三级菜单
136 do
137 {
138 switch(number)
139 {
140 case 1:
141 qianshu -= 100;
142 printf("请稍后!,正在吐钞...\n");
143 printf("目前余额:%d\n", qianshu);
144 break;
145
146 case 2:
147 qianshu -= 200;
148 printf("请稍后!,正在吐钞...\n");
149 printf("目前余额:%d\n", qianshu);
150 break;
151
152 case 3:
153 qianshu -= 300;
154 printf("请稍后!,正在吐钞...\n");
155 printf("目前余额:%d\n", qianshu);
156 break;
157
158 case 4:
159 return;
160 }
161
162 scanf("%d", &number);
163
164 }while(number != 4);
165 }
166
167 /**
168 * 函数名称:存款
169 * 输入参数:
170 * 输出参数:
171 * 返 回 值:
172 */
173 void cun(void)
174 {
175 int number;
176
177 system("cls");
178
179 do
180 {
181 loop1:printf("请输入存款金额:\n");
182 scanf("%d", &number);
183 qianshu += number;
184
185 system("cls");
186 printf("本次存款:%d\n", number);
187 printf("你目前账号余额:%d\n", qianshu);
188
189 //菜单
190 printf("=========================\n");
191 printf("|\t请选择以下数字:\t|\n");
192 printf("|\t1、继续存款\t|\n");
193 printf("|\t2、返回\t\t|\n");
194 printf("=========================\n");
195
196 scanf("%d", &number);
197
198 if(number == 1)
199 goto loop1;
200
201 }while(number != 2);
202 }
203
204 /**
205 * 函数名称:查询
206 * 输入参数:
207 * 输出参数:
208 * 返 回 值:
209 */
210 void cha(void)
211 {
212 int number;
213 do
214 {
215 system("cls");
216
217 printf("你目前账号余额:%d\n", qianshu);
218 printf("\n");
219 printf("=========================\n");
220 printf("|\t请选择以下数字:\t|\n");
221 printf("|\t1、继续查询\t|\n");
222 printf("|\t2、返回\t\t|\n");
223 printf("=========================\n");
224
225 scanf("%d", &number);
226 }while(number != 2);
227 }

C语言设计ATM存取款界面的更多相关文章

  1. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

  2. Go语言的函数07---闭包练习(ATM存取款)

    package main import "fmt" /* @ATM(闭包练习) ·写一个Atm(函数),返回存款,取款两个内层函数 ·存款,取款两个函数,都以一个金额为参数,返回存 ...

  3. java 使用线程做一个简单的ATM存取款实例.(转)

    线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域. 可以,直接继承线程Thread类.该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类 实现Runn ...

  4. java并发编程——通过ReentrantLock,Condition实现银行存取款

         java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器.该框架允许更灵活地使用锁和条件,但以更难用的语法为代价. Lock 接口 ...

  5. C语言实现的简单银行存取款程序 请输入如下数字命令

    #include <stdio.h> int main(void) { //提供变量 cmd balance(余额) deposit(存款) withdraw(取款) //利用while做 ...

  6. 语言模拟ATM自动取款机系统

    C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...

  7. ATM跨行取款的清算方式

    ATM跨行取款和POS机是类似的,因为没有商户参与,所以不需要收单清算,过程更为简单. 回到文章最开头的例子:你拿着一张工行卡去建行的ATM取了100元,这个跨行业务在CNAPS体系中的过程如下: 你 ...

  8. 影响Scala语言设计的因素列表

    Scala语言设计概述 Scala的设计受许多编程语言和研究思想的影响.事实上,仅很少的Scala的特点是全新的:大多数都已经被以另外的形式用在其他语言中了.Scala的革新主要来源于它是如何构造并放 ...

  9. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

随机推荐

  1. 线性基(Linear Basis)学习笔记

    前言 我看网络上没有什么非常系统的教学,可能是我太菜了吧,现在才学,做个记录给自己看. 简略介绍 一个数集能两两异或,能表出许多新的数. 线性基是一个集合,能够在记录最少的数的基础上,表示出一个等价的 ...

  2. MongoDB分片集群搭建及扩容

    ### 实验:分片集群搭建及扩容#### 实验目标及流程 * 目标:学习如何搭建一个两分片的分片集群 * 环境:3台Linux虚拟机器,4Core 8GB * 步骤: * 配置域名解析 * 准备分片目 ...

  3. 大厂必问的Java集合面试题

    本文目录: 常见的集合有哪些? List .Set和Map 的区别 ArrayList 了解吗? ArrayList 的扩容机制? 怎么在遍历 ArrayList 时移除一个元素? Arraylist ...

  4. 初识python: 回调函数

    回调函数 简单理解就是:将一个函数通过参数的形式传递给另一个函数 #!/user/bin env python # author:Simple-Sir # time:2019/8/9 10:49 # ...

  5. Cause: org.postgresql.util.PSQLException: 栏位索引超过许可范围:13,栏位数:12

    Cause: org.postgresql.util.PSQLException: 栏位索引超过许可范围:13,栏位数:12. 这个报错的原因是在mapper文件中的sql语书写错误 <inse ...

  6. OSPF路由协议详解

    OSPF:开放式最短路径优先协议无类别链路状态路由协议,组播更新224.0.0.5/6:跨层封装到三层,协议号89:基于拓扑工作,故更新量大-----需要结构化部署–区域划分.地址规划触发更新.每30 ...

  7. spring boot -- 配置文件application.properties 换成 application.yml

    1.前言 其实两种配置文件在spring boot 的作用一样,只是写法不同 ,yml 可以写的内容更少 ,以树结构 书写内容,看起来很清晰, 但是 如果 项目配置文件设置为 既有properties ...

  8. vue3.0+vite+ts项目搭建--基础配置(二)

    集成vue-router 使用yarn yarn add vue-router@next --save 安装完成之后在src目录下创建文件夹router/index.ts,创建完成之后需要在Vue-R ...

  9. docker镜像制作及发布

    以centos为例. 主要内容:安装docker,制作镜像,发布镜像. 安装docker 1. 安装docker yum install -y docker 等待一会,安装成功,查看安装列表 2. 启 ...

  10. rocketmq实现延迟队列精确到秒级实现方案3-时间轮和秒级文件实现

    时间轮和秒级文件实现原理图 这种方案比较简单实现,通过秒级时间,建立对应的文件夹,只要相同的时间超时的消息,就在同一个目录,通过msgid保证文件不重复,等到了时间后,就扫描对应的文件夹的文件,发送到 ...