2015.12.07 ATM_Function

#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

int password = 123456;

int balance = 10000;

bool isLogined = false;

void alert(char *content);

int getValidOperation(int maxNum);

void quit(int status);

void query();

void isContinue();

bool inputPassword();

void takeMoney();

void changePsw();

int main(int argc, const char * argv[]) {

bool result;

while (1) {

alert("1.输入密码\n2.取款\n3.查询余额\n4.更改密码\n5.退出");

int operation = INT32_MAX;

operation = getValidOperation(5);

switch (operation) {

//1.输入密码

case 1:

result = inputPassword();

if (result == false) {

quit(EXIT_SUCCESS);

}else{

isLogined = true;

}

break;

//2.取款

case 2:

takeMoney();

isContinue();

break;

//3.查询余额

case 3:

query();

isContinue();

getchar();

break;

//4.更改密码

case 4:

changePsw();

break;

//5.退出

case 5:

quit(EXIT_SUCCESS);

default:

break;

}

printf("\n");

}

return 0;

}

void alert(char *content){

printf("****************\n");

printf("%s\n", content);

printf("****************\n");

}

int getValidOperation(int maxNum){

int operation;

printf("选一个吧:");

scanf("%d", &operation);

while (operation < 1 || operation > maxNum) {

printf("别搞笑,好好输:");

getchar();

scanf("%d", &operation);

}

return operation;

}

void quit(int status){

alert("拔卡!拔卡!拔卡!");

exit(status);

}

void query(){

if (isLogined == false) {

bool result = inputPassword();

if (result == false) {

quit(EXIT_SUCCESS);

}else {

isLogined = true;

}

}else{

printf("****************\n");

printf("你还有¥%d\n", balance);

printf("****************\n");

}

}

void isContinue(){

char choose;

alert("继续不?(y/n):");

getchar();

scanf("%c", &choose);

while (choose != ‘y‘ && choose != ‘n‘) {

printf("好好输!(y/n)\n");

getchar();

scanf("%c", &choose);

}

if (choose == ‘n‘) {

quit(EXIT_SUCCESS);

}

}

bool inputPassword(){

int inputedpassword = INT32_MAX;

int totalWrongTime = 3;

do {

printf("%s", inputedpassword == INT32_MAX ? "密码是啥:": "别骗我!密码是啥:");

getchar();

scanf("%d", &inputedpassword);

totalWrongTime--;

} while (inputedpassword != password && totalWrongTime > 0);

if (inputedpassword != password) {

return false;

}else{

return true;

}

}

void takeMoney(){

if (isLogined == true) {

int totalMoney;

int num2_1;

alert("1.¥100\n2.¥300\n3.¥500\n4.其他金额");

num2_1 = getValidOperation(4);

switch (num2_1) {

case 1:

totalMoney = 100;

break;

case 2:

totalMoney = 300;

break;

case 3:

totalMoney = 500;

break;

case 4:

printf("取多少:");

scanf("%d", &totalMoney);

break;

default:

break;

}

if (totalMoney <= balance) {

printf("\n您的余额为:¥%d\n \n", balance -= totalMoney);

}else {

printf("\n穷B,钱不够!\n \n");

}

}else{

bool result =  inputPassword();

if (result == false) {

quit(EXIT_SUCCESS);

}else {

isLogined = true;

}

}

}

void changePsw(){

if (isLogined == false) {

bool result = inputPassword();

if (result == false) {

quit(EXIT_SUCCESS);

}else {

isLogined = true;

}

}else{

printf("输入新密码:\n");

scanf("%d", &password);

}

}

时间: 2024-09-30 05:08:48

2015.12.07 ATM_Function的相关文章

2015.12.07 ATM

#include <stdio.h> #include <stdlib.h> int main(int argc, const char * argv[]) { int password = 123456; int balance = 100000; char operation; int wrongTime = 1; int inputedPassword; int z = 0;                        //状态值 while (1) { printf(&q

2015.12.07 函数

函数 函数就是一个代码段{},用来将功能模块化.我们都希望程序有两种特性:稳定性和可复用性,函数就是将编写的程序有可复用性的. 函数有两种定义方式:1.先声明.后实现(如果函数的实现部分比较长) 2.声明和实现放在一起(逻辑简单 注意:必须放在main函数的前面) 函数的命名方式:通常首字母小写. 函数的格式:返回值类型 名字(参数,参数,参数){ //函数体 //代码 return; } 如何调用函数:int result = add(10, 20); int add(int a, int b

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要

2015.12.29~2015.12.30真题回顾!-- HTML5学堂

2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停哦! HTML5真题[2015.12.29]题目 学习JavaScript或应用JavaScript进行脚本开发,“变量”这是必须要学会使用的.什么是变量呢?又什么作用呢?ok,大家稍安勿躁哦,试体验体验这题目<HTML5真题[2015.12.29]题目>与 <HTML5真题[2015.12

#VSTS日志# 2015/12/10 – 终于可以删除工作项了

最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过程模版继承– 过程模版安全性配置 很多人都知道,在vsts在线版上一直缺少工作项定制能力,这次的更新一定让很多人兴奋,但是我们的工作还没有完,后续我们会逐步完成字段下拉菜单,工作流配置,html字段,添加全新的工作项类型等功能.关于本功能的具体内容,请参考以下博客 http://devopshub.

UGITC携手西门子2015年07月21日举办机器人行业技术研讨会

UGITC携手西门子将在2015年07月21日下午在西门子大楼举办机器人行业技术研讨会.目前,国际制造业中心正向中国转移,用信息化带动工业化.用高新技术改造传统产业已成为我国工业发展的必由之路.作为先进制造装备之典型代表的工业机器人必将有一个大的产业发展空间.SiemensPLM助力ABB.柯马等机器人行业更快地迈向工业革命4.0,期待您的加入! 报名截止日期为7月20日(星期一) 请填写以下表格邮件回复邮件到:[email protected]进行报名,名额有限报名从速! 会议地点:上海市大连

分布式技术一周技术动态 2015.12.13

分布式系统实践 1. 关于分布式事务.两阶段提交协议.三阶提交协议 http://www.hollischuang.com/archives/681?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 分布式系统的数据一致性一直以来就是分布式系统中最难解决的问题之一, 本文介绍了传统的2PC和3PC协议以及他们的缺点, 理解了2PC和3PC之后, 回过头来大家就能理解paxos协议的具备的里程碑式的重要意义了(当然

分布式技术一周技术动态 2015.12.27

分布式系统实践 1. Kafka深度解析 http://www.jasongj.com/2015/01/02/Kafka%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/ 要点: 这篇文章深入的讲解了kafka的架构设计, 数据复制算法以及kafka的性能等多个方面, 是理解和学习kafka非常难得的一篇好文章, 推荐给大家. 2. 解密阿里巴巴高可用架构技术——“异地多活” http://mp.weixin.qq.com/s?__biz=MzAwNjQwNzU2NQ==

360实习工作日志2015.10 ~ 2015.12

RE: 焦诚 ~ 日报 - 由 焦 诚 在 5 个月 之前添加 2015-10-131.利用计算平台统计2015-09-28 => 2015-10-11 共14天的spe_num=502306的云查杀日志,1天的结果在10万条-20万+条不等,两周的结果在200万条左右.由于结果数据量较大,暂时无法从计算平台直接下载数据,下载会报内存溢出的错误.2.开始学习mongodb   RE: 焦诚 ~ 日报 - 由 焦 诚 在 5 个月 之前添加 2015-10-141.计算云查杀日志2015-09-2