目的
实现ATM机的基本操作步骤:
请输入密码:123
错误-> 密码错误请重新输入: 最多输入4 -> 此卡已冻结 请联系客服 -> 退出
正确->
1.取款
请输入取款金额:xxx-> 取款成功 当前余额为xxx
->余额不足 是否继续1/0
2.存款
请输入金额:xxx -> 存款成功 当前余额:xxx
3.更改密码
请输入原始密码->请设置密码->请确认密码
4.退出
技术
1.while循环
2.switch用法
3.if else语句
技术使用
1.显示界面
printf("************\n");
printf(" 欢迎使用\n");
printf("************\n");
2.输入密码,并且判断密码是否正确;如果密码错误,请重新输入,最多输入4次,超过4次,显示此卡已冻结请联系客服,并且退出程序。
int passWord = 1212;
int inputPassword = 0;
int wrongTime = 0;
while (1)
{
printf("请输入密码:");
scanf("%d", &inputPassword);
if (inputPassword ==passWord )
{
//密码正确
break;
}
else
{
//密码错误
wrongTime++;
printf("密码错误,");
}if (wrongTime == 4)
{
printf("此卡已冻结,请联系客服。\n");
//我用的vs 所以需要暂停一下才能看到提醒的这一句话
system("pause");
exit(EXIT_FAILURE);
}
}
将输入密码这一操作放在一个while循环里,如果密码正确,跳出循环;如果密码输入错误,继续循环,而当密码输入错误次数超过4次时,系统提醒,并且退出程序。
3.显示操作界面
printf("1.取款\n");
printf("2.存款\n");
printf("3.更改密码\n");
printf("4.退出\n");
4.用户选择操作,并且判断选择是否合法。
int choice;
printf("请输入你的选择:");
while (1)
{
scanf("%d", &choice);
if (choice >= 1 && choice <= 4){
break;
}
else
{
printf("您的选择不正确,请重新选择");
}
}
这里解释一下,会有人想,如果输入的是字母怎么办?可现实中,你去ATM机取款或者网上用手机支付,键盘上也只有数字,虽然还有一个 . 但应该很少有人这样选择点吧,所以不加入考虑。
5.执行各个操作
首先我们用switch来实现每一步的操作
switch (choice)
{
case 1:
//取款
break;
case 2:
//存款
break;
case 3:
//更改密码
break;
default:
//退出
break;
}
然后分步执行
- 取款
用户取款时有两种情况:
1.余额足够->取款,并且告诉用户卡上余额
2.余额不足->提醒用户,并且询问是否继续取款
代码如下:
float oglMoney = 2000;
//ATM机取款只能取100的倍数,所以定义drawMoney为整型
int drawMoney = 0;
int answer = 0;
while (1)
{
printf("请输入取款金额:");
scanf("%d", &drawMoney);
if (drawMoney <= oglMoney)
{
oglMoney = oglMoney - drawMoney;
printf("取款成功,当前余额为:%f", oglMoney);
break;
}
else
{
printf("余额不足,是否继续?(1.继续/0.退出):");
scanf("%d",&answer);
if (answer == 0)
{
printf("感谢您的使用,再见");
system("pause");
exit(EXIT_SUCCESS);
}
}
}
- 存款
存款比较简单,用户输入存款金额(放入存款金额),然后机器显示余额就行。
代码如下:
float oglMoney = 2000;
int inputMoney = 0;
printf("请输入存款金额:");
scanf("%d", &inputMoney);
oglMoney = oglMoney + inputMoney;
printf("存款成功,当前余额为:%f", oglMoney);
- 更改密码
更改密码则是用户首先输入原始密码,判断原始密码是否正确;若正确,然后输入新密码,再次输入新密码,再判断两次新密码输入是否一样->一样,修改密码成功;不一样,重新设置
代码如下:
int newPassword1, newPassword2;
int passWord = 1212;
int inputPassword = 0;
printf("请输入原始密码:");
while (1)
{
scanf("%d", &inputPassword);
if (inputPassword == passWord)
{
printf("请输入新的密码:");
scanf("%d", &newPassword1);
printf("请确认新的密码:");
scanf("%d", &newPassword2);
if (newPassword1 == newPassword2)
{
printf("密码修改成功!");
break;
}
else
{
printf("两次密码不同,请重新输入");
}
}
else
{
printf("密码错误,请重新输入:");
}
}
ps:输入原始密码我做的比较不严谨,没有实现输入一定次数卡被冻结的功能,如果想实现这个功能,可以参照上面进入页面首次输入密码时的代码。
-
退出
printf("感谢你的使用,再见\n"); system("pause"); exit(EXIT_SUCCESS);
实战
#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
int _tmain(int argc, _TCHAR* argv[])
{
printf("************\n");
printf(" 欢迎使用\n");
printf("************\n");
int passWord = 1212;
int inputPassword = 0;
int wrongTime = 0;
while (1)
{
printf("请输入密码:");
scanf("%d", &inputPassword);
if (inputPassword == passWord)
{
break;
}
else
{
wrongTime++;
printf("密码错误,");
}if (wrongTime == 4)
{
printf("此卡已冻结,请联系客服。\n");
system("pause");
exit(EXIT_FAILURE);
}
}
printf("1.取款\n");
printf("2.存款\n");
printf("3.更改密码\n");
printf("4.退出\n");
int choice;
printf("请输入你的选择:");
while (1)
{
scanf("%d", &choice);
if (choice >= 1 && choice <= 4){
break;
}
else
{
printf("您的选择不正确,请重新选择:");
}
}
float oglMoney = 2000;
int drawMoney = 0;
int answer = 0;
int inputMoney = 0;
int newPassword1, newPassword2;
switch (choice)
{
case 1:
//取款
while (1)
{
printf("请输入取款金额:");
scanf("%d", &drawMoney);
if (drawMoney <= oglMoney)
{
oglMoney = oglMoney - drawMoney;
printf("取款成功,当前余额为:%f", oglMoney);
break;
}
else
{
printf("余额不足,是否继续?(1.继续/0.退出):");
scanf("%d",&answer);
if (answer == 0)
{
printf("感谢您的使用,再见\n");
system("pause");
exit(EXIT_SUCCESS);
}
}
}
break;
case 2:
//存款
printf("请输入存款金额:");
scanf("%d", &inputMoney);
oglMoney = oglMoney + inputMoney;
printf("存款成功,当前余额为:%f", oglMoney);
break;
case 3:
//更改密码
printf("请输入原始密码:");
while (1)
{
scanf("%d", &inputPassword);
if (inputPassword == passWord)
{
printf("请输入新的密码:");
scanf("%d", &newPassword1);
printf("请确认新的密码:");
scanf("%d", &newPassword2);
if (newPassword1 == newPassword2)
{
printf("密码修改成功!");
break;
}
else
{
printf("两次密码不同,请重新输入");
}
}
else
{
printf("密码错误,请重新输入:");
}
}
break;
default:
//退出
printf("感谢你的使用,再见\n");
system("pause");
exit(EXIT_SUCCESS);
break;
}
system("pause");
return 0;
}
运行结果
输入密码
1.密码正确
2.密码错误 且四次都错
07312.png
选择操作
1.选择操作不正确
2.选择操作正确
-
取款
a.额度够:
07314.png
b.额度不够:
继续取:
07315.png
退出:
07316.png
-
存款
07317.png -
更改密码
a.原始密码输入错误:
07318.png
b.两次密码输入不同
07319.png
c.更改密码成功:
073110.png
-
退出
073112.png
以上。
感悟
这段demo不是特别难,但是在写代码的时候一定要记住要分板块,一个板块实现一个功能,切忌用一个循环包含所有的功能,因为这样做以后写程序后期维护修改起来会非常麻烦。还有在一些很基础的代码上不要犯错误 比如scanf语句 scanf("%x",&xxx); &一定不要忘记写。这个方法比较基础,然后会发现内容全部都在main函数里面,代码结构太复杂,不利于阅读,不方便移植,所以下一篇会用函数来实现这个功能。
网友评论