偶然看到的一段代码,代码虽然简单,但是挺有意思:

#include <iostream>
#include <conio.h>

//全局变量
float sum_money= 9999;
float money= 0;

//标记作用
int flag= 1;
int mark;

//打印星号
void start(void)
{
	for(int i= 0; i<45; i++)
	{
		std::cout<<"*";
	}
	std::cout<<"\n";
}
//显示功能选项
void display_function(void)
{
	std::cout<<"1.查询"<<std::endl;
	std::cout<<"2.取款"<<std::endl;
	std::cout<<"3.存款"<<std::endl;
	std::cout<<"4.转账"<<std::endl;
	std::cout<<"0.退出"<<std::endl;
}

int  display_number(int num)
{
	switch(num)
	{
	case 0:
		{
			start();
			std::cout<<"谢谢,您选择0号功能:退出"<<std::endl;
			start();
			return 0;
		}
	case 1:
		{
			start();
			std::cout<<"谢谢,您选择1号功能:查询"<<std::endl;
			std::cout<<"您的账号有:";
			std::cout<<sum_money<<"元乐币"<<std::endl;
			start();
			return 1;
		}
	case 2:
		{
			start();
			std::cout<<"谢谢,您选择2号功能:取款"<<std::endl;
			std::cout<<"请输入您要取的乐币:";
			std::cin>>money;
			if(money> sum_money)
			{
				std::cout<<"您要取的乐币大于余额,此操作终结!"<<std::endl;
				start();
				return 1;
			}
			sum_money-= money;
			std::cout<<"您的账户有:";
			std::cout<<sum_money<<"乐币"<<std::endl;
			start();
			return 1;
		}
	case 3:
		{
			start();
			std::cout<<"谢谢,您选择3号功能:存款"<<std::endl;
			std::cout<<"请输入您要存的乐币:";
			std::cin>>money;
			sum_money+= money;
			std::cout<<"您的账户有:"<<sum_money<<"乐币"<<std::endl;
			start();
			return 1;
		}
	case 4:
		{
			start();
			std::cout<<"谢谢,您选择4号功能:转账"<<std::endl;
			std::cout<<"请输入您要转的乐币:"<<std::endl;
			std::cin>>money;
			if(money> sum_money)
			{
				std::cout<<"您要转乐币大于余额,此操作被终结!"<<std::endl;
				start();
				return 1;
			}
			sum_money-= money;
			std::cout<<"您账户有:"<<sum_money<<"乐币"<<std::endl;
			start();
			return 1;
		}
	}
	std::cout<<"您输入的数字没有相应的功能!, 不要着急,再来一次。"<<std::endl;
	return 1;     //当num没有匹配时返回1
}

int main()
{
	std::cout<<"************************欢迎来到乐多多一号银行***********************"<<std::endl<<std::endl;

	char password[7]="123456";
	char keep_password[7];

	//打印星号
	start();

	for(int j=0; j<3; j++)
	{
		std::cout<<"请输入您的密码(六位数哦):";

		for(int k=0; k< 7; k++)
		{
			keep_password[k]=getch();
			if(k<6)
			{
				std::cout<<"*";
			}
		}
		std::cout<<"\n";

		for(int i=0; i< 6; i++)
		{
			if(password[i]== keep_password[i])
			{
				flag= 1;  //第i位相同
			}
			else
			{
				flag=0;
				break;
			}
		}

		if(j<3 && flag==0)
		{
			std::cout<<"您的密码错误"<<std::endl;
		}
		else if(j< 3)
		{
			std::cout<<"密码正确,请继续操作."<<std::endl;
			break;
		}
		else if(j>= 3)
		{
			std::cout<<"您已输入错误密码3次,银行卡被锁住!"<<std::endl;
			return -1;
		}
	}

	display_function();

	int num;
	while(1)
	{
		std::cout<<"输入您选择的功能号:";
		std::cin>>num;

		mark=display_number(num);

		if(mark==0)
		{
			std::cout<<"您已经退出乐多多一号银行,欢迎再次使用"<<std::endl;
			break;
		}
	}

	//打印星号
	start();

	return 0;
}

C++编写ATM的更多相关文章

  1. C++编写ATM(2)

    //上一个程序,密码不能被隐藏和该ATM可以让人取大于余额的乐币,这可定不行的.所以再次改了下,解决这两个问题. // ATM的初始.cpp : 定义控制台应用程序的入口点. // /******** ...

  2. C++编写ATM(1)

    // ATM的初始.cpp : 定义控制台应用程序的入口点. // /************************************************* 运行环境: VS2008 作者 ...

  3. Python学习笔记-练习编写ATM+购物车(购物商城)

    作业需求: 模拟实现一个ATM + 购物商城程序: 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.支持多账户登录 5.支持账户间 ...

  4. JS基础——ATM机终端程序编写(3.0)

    利用函数进行代码实现,要点:将每一项操作单独写成一个函数,在需要时进行调用,弄清参数的传递. 创建模拟账户 使用数组创建账户 let user = ["xiaohei", 1234 ...

  5. python函数版ATM

    最近系统的学习python函数知识点,感觉在面向对象之前,函数的功能确实强大. 最近使用函数写了ATM项目,虽然需求简单但也有很多知识点需要注意,这个项目把python基础的很多知识点都用上了. 前前 ...

  6. C#多线程之旅~上车吧?

    前言:前几天,写了一篇关于多线程使用的文章,[线程使用]用法得到不少博友的好评,博主这几天加班写文章,把剩下的高级使用给写完,期望可以得到博友的追赞吧,那么废话不多说,开始我们的C#高级用法之旅!! ...

  7. 第十九天 标准目录与time 模块

      今日内容 1.目录规范 ***** (1)文件夹的规范写法 bin 可执行文件 conf 配置文件 core 主要业务逻辑 db 数据文件 lib 库 (公共代码 第三方模块) log 日志文件 ...

  8. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  9. python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块

    今天讲课内容有两大部分: 一.文件目录规范二.定制程序入口三.使用标准目录后四.常规函数time.datetime 一.标准目录规范 之前用过的案例atm机+购物商城代码过长,在学习了模块和包以后,我 ...

随机推荐

  1. [bzoj4236]JOIOJI

    来自FallDream的博客,未经允许,请勿转载,谢谢. JOIOJI桑是JOI君的叔叔.“JOIOJI”这个名字是由“J.O.I”三个字母各两个构成的. 最近,JOIOJI桑有了一个孩子.JOIOJ ...

  2. 5分钟快速打造WebRTC视频聊天

    百度一下WebRTC,我想也是一堆.本以为用这位朋友( 搭建WebRtc环境 )的SkyRTC-demo 就可以一马平川的实现聊天,结果折腾了半天,文本信息都发不出去,更别说视频了.于是自己动手. 想 ...

  3. CSS之绝对定位

    w3school定义: 绝对定位的元素的位置相对于最近的已定位祖先元素(这里的已定位指的是绝对定位或者相对定位),如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块. 对于定位的主要问题是要 ...

  4. LintCode题解之统计数字

    直接硬搜就可以了,只是需要考虑k为0的情况. public class Solution { /* * @param : An integer * @param : An integer * @ret ...

  5. 《读书报告 -- Elasticsearch入门 》--简单使用(2)

    <读书报告 – Elasticsearch入门 > ' 第四章 分布式文件存储 这章的主要内容是理解数据如何在分布式系统中存储. 4.1 路由文档到分片 创建一个新文档时,它是如何确定应该 ...

  6. Swift基础之实现选择图片时,出现类似于ActionSheet的样式

    之前看到过有APP在选择图片时,调用手机相册时,将手机相册做成了左右滑动选择的效果,这次展示的就是这种样式,用OC语言已经有人实现过类似的代码,在这里写的仅仅是效果展示的代码调用,具体代码,可以自己研 ...

  7. Bootstrap3 排版-缩略语

    当鼠标悬停在缩写和缩写词上时就会显示完整内容,Bootstrap 实现了对 HTML 的 <abbr> 元素的增强样式.缩略语元素带有 title 属性,外观表现为带有较浅的虚线框,鼠标移 ...

  8. jboss规则引擎KIE Drools 6.3.0 Final 教程(1)

    前言 目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5 ...

  9. Markdown语法及SublimeText下使用技巧

    Markdown语法及SublimeText下使用技巧 0.缘起 最近因为一直在学习Sublime Text,所以也就顺便试用了一下ST对Markdown的支持.正好CSDN正在大力宣传新上线的Mar ...

  10. Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party

    今天遇到个问题,在本地打开插件注册器连接到远程CRM服务器时报如下问题 但我在CRM服务器上连接注册器是可以打开的,所以不存在账号权限这类的问题了(当然我用的是超管的账号也不可能存在),最后查询得知是 ...