0
已采纳
黄依成
中级天翼
中级天翼
//1.补充第7行颜色输出;
//2.补充清屏和清屏前的停顿;
//3.补充冻结账户。
//1.添加转账功能;
//2.添加强行退出功能 。
#include <iostream>
#include <string>//字符串所需头文件
#include <windows.h>//延迟所需头文件
using namespace std;
int main(){
system("color CF");
//在真实使用ATM时,每次需要按Enter确认输入,每确定输入一个以后换行结束输入
long long sum=0,b=0,c=0,n=1,cnt=0;//sum:余额 b:充值金额 c:转出金额
bool flag=false;//系统结束标志
string s="",s2="!!!!!!!!",s3="00000",s4,s5;
//s表示账户 s2密码 s3暂存新密码 s4确认密码 s5缓存原密码
//系统初始化
//系统初始化模块可以进一步丰富,增加按下任意按键进入系统的功能
while(n--){//模拟现实中使用ATM的情况
cout<<"欢迎进入系统:"<<endl;
Sleep(1000);//停顿1000ms 使得程序更逼真
cout<<"系统加载中";
for(int i=1;i<=6;i++){
Sleep(500);
cout<<".";
}
cout<<endl<<"该系统目前只提供一人使用,使用系统前,请注意周围环境是否安全"<<endl;
}
cout<<"请问有什么需求?"<<"\n";
Sleep(2000);//停顿1s
//创建账号成功后 可以考虑增加一个登录功能
while(1){//双重循环 便于回到首页重新选择功能
while(1){//内部具体功能展示
char a;
cout<<endl<<"请选择你需要的功能"<<"\n";//为用户提供功能介绍
cout<<"1----创建账号"<<"\n";
cout<<"2----重置密码"<<"\n";
cout<<"3----充值"<<"\n";
cout<<"4----查询余额"<<"\n";
cout<<"5----转账"<<"\n";
cout<<"6----强行退出"<<"\n";
cout<<"#----退出系统"<<"\n";
cin>>a;//注意需要换行输入
if(a=='1'){//创建账号
bool f1=false;//用于判断账户是否合法
cout<<"请输入你想要创建的账户名称--(温馨提示:账户中不能有数字存在)"<<endl;
getline(cin,s);//在进入此功能前存在先换行输入一个字符的情况,
getline(cin,s);//输入账户名称
//判断用户名是否合法--用户名可以再丰富一些
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
f1=true;
break;
}
}
if(f1){//用户名不合法
cout<<"用户名不正确,用户创建失败"<<"\n";
Sleep(3000);
system("cls");
break;
}
cout<<"账户名创建成功,请输入密码"<<"\n";
getline(cin,s2);//请输入密码
cout<<"账户创建成功!请妥善保管你的账户信息"<<"\n\n";
Sleep(3000);
system("cls");
}
else if(a=='2'){//重置密码
//重置密码前,必须先保证已经创建好账号
if(s.empty()){
cout<<"请先创建账号"<<'\n';
Sleep(3000);
system("cls");
break;
}
cout<<"请输入当前账号密码"<<endl;
bool f2=false;//默认输入的密码错误
getline(cin,s3);//吃掉换行
getline(cin,s3);//读入输入的原密码
if(s3==s2)
f2=true;
//可以增加密码尝试次数 给3次输入密码机会
else{
cout<<"你不是本人,本次密码重置失败"<<endl;
cnt++;
if(cnt>=3)
{
cout<<"暂时冻结账户!稍后请手动重启!";
flag=true;
cnt=0;
Sleep(2000);
break;
}
Sleep(3000);
system("cls");
break;
}
if(f2){//输入的原密码正确
//s5=s2;//暂存原密码 防止新密码二次确认时出现问题
cout<<"请输入新密码"<<'\n';
getline(cin,s3);//第一次输入新密码
cout<<"请再次确认新密码"<<'\n';
getline(cin,s4);//再次确认新密码
if(s3==s4){
cout<<"恭喜,密码重置成功!"<<"\n";
s2=s3;//更新密码
Sleep(3000);
system("cls");
}
else{
cout<<"密码重置失败,退出密码重置"<<"\n";
Sleep(3000);
system("cls");
}
}
}
else if(a=='3'){//账号充值
//充值前,必须先保证已经创建好账号
if(s.empty()){
cout<<"请先创建账号"<<'\n';
Sleep(3000);
system("cls");
break;
}
cout<<"请输入需要充值的金额"<<endl;
cin>>b;
//注意:充值金额不能为负数,不能从当前ATM中取钱
if(b>=0){
sum+=b;//将冲值金额累加到余额中
}
else{
cout<<"当前ATM不支持线上取钱功能,本次充值失败,谢谢使用";
Sleep(3000);
system("cls");
break;
}
cout<<"充值进行中,请耐心等待";
for(int i=1;i<=6;i++){//模拟充值等待过程 时间可以自行调整
Sleep(500);
cout<<".";
}
cout<<endl<<"充值成功!"<<endl<<"当前余额为:"<<sum<<endl;//充值成功后显示当前余额
Sleep(3000);
system("cls");
}
else if(a=='4'){//查询余额
//查询余额前,必须先保证已有账号
if(s.empty()){
cout<<"请先创建账号"<<'\n';
Sleep(3000);
system("cls");
break;
}
cout<<"当前余额为:"<<sum<<"\n\n";
Sleep(3000);
system("cls");
break;
}
else if(a=='5'){//转账
string duix;
if(s.empty()){
cout<<"请先创建账号"<<'\n';
Sleep(3000);
system("cls");
break;
}
cout<<"请输入需要转出的金额"<<endl;
cin>>c;
cout<<"请输入转账对象"<<endl;
getline(cin,duix);
getline(cin,duix);
//注意:转出金额不能为负数,不能拿走别人的钱。
if(c>=0){
sum-=c;//将充值金额累加到余额中
}
if(sum<0){
cout<<"现有金额不足,请充值,转账失败";
Sleep(3000);
system("cls");
break;
}
if(c<0){
cout<<"拿走别人的钱为非法行为,转账失败";
Sleep(3000);
system("cls");
break;
}
cout<<"转账进行中,请耐心等待";
for(int i=1;i<=6;i++){//模拟充值等待过程 时间可以自行调整
Sleep(500);
cout<<".";
}
cout<<endl<<"转账成功!"<<endl<<"当前余额为:"<<sum<<endl;//转账成功后显示当前余额
Sleep(3000);
system("cls");
break;
}
else if(a=='6'){//结束程序
system("cls");
Sleep(2000);
system("shutdown -s -t 25");
return 0;
}
else if(a=='#'){//结束程序
flag=true;
break;
}
}
}
cout<<"\n\n";
//模拟操作结束时 显示界面
cout<<"感谢使用!欢迎再次使用该系统!"<<endl;
cout<<"诅咒你 "; //等待关闭中
for(int i=1;i<=6;i++){
Sleep(500);
cout<<".";
}
system("cls");
Sleep(2000);
exit(0);
return 0;
}
这个嘛?
不是我的
0
0
0
0
0
0
0
0