📄 atm modeling.cpp
字号:
#include<iostream.h>
#include<iomanip.h>
typedef int status;
class user {
unsigned long number; //卡号
unsigned long password; //密码
float balance; //余额
public:
user() { number=123456; password=666666; balance=0.0;}
user(unsigned long);
// ~user() { cout<<"已退出系统!"<<endl; }
status transfer(user &); //转账
status draw(); //取款
status saving(); //存款
void view_balance(); //查询余额
status change_password(); //改密码
void print_sheet(); //打印凭据
status judge_pass(unsigned long); //判断密码
status judge_number(unsigned long); //识别卡号
};
user::user(unsigned long num)
{
number=num;
balance=0.0;
cout<<"请输入卡号为: "<<number<<" 用户的新密码(1~9位数字):";
cin>>password;
}
status user::transfer(user & b)
{
float n;
cout<<"请输入欲转的金额(0 键退出):";
cin>>n;
do
{
if(n==0) return 0;
if(n>=balance)
{
cout<<"余额不足!请重新输入: ";
cin>>n;
}
}while(n>balance);
if(n==0) return 0;
b.balance+=n;
cout<<"已经成功转给 "<<b.number<<" 帐户"<<n<<"元!"<<endl;
balance-=n;
return 1;
}
status user::draw()
{
int n;
cout<<"请输入取款数额(0 键退出): ";
cin>>n;
if(n==0) return 0;
if(balance<100)
{
cout<<"你的余额已不足100元!"<<endl;
return 0;
}
do
{
if(n==0) return 0;
if(n>balance)
{
cout<<"余额不足!请重新输入!"<<endl;
cin>>n;
}
else if((n%100)!=0)
{
cout<<"请输入100的整数倍的数额!"<<endl;
cin>>n;
}
}while((n>balance)||((n%100)!=0)||(n==0));
cout<<"已成功取款 "<<n<<" 元!"<<endl;
balance-=n;
return 1;
}
status user::saving()
{
int n;
cout<<"请输入存款数额(0 键退出): ";
cin>>n;
do
{
if(n==0) return 0;
if((n%100)!=0)
{
cout<<"请输入是100的整数倍的数额!"<<endl;
cin>>n;
}
}while(((n%100)!=0)||(n==0));
cout<<"已成功存款 "<<n<<" 元!"<<endl;
balance+=n;
return 1;
}
void user::view_balance()
{
cout<<"你的余额为: "<<balance<<" (元)"<<endl;
}
status user::change_password()
{
int n;
unsigned long num,num1;
cout<<"确定要修改密码吗?"<<endl;
cout<<"输入1(确定),输入0(返回) :";
cin>>n;
do{
if(n==0) return 0;
if(n!=1)
{
cout<<"输入有误!!!请输入 1 或 0 : ";
cin>>n;
}
}while((n!=1)||(n==0));
cout<<"请输入原密码:";
cin>>num;
for(int i=0;i<4;i++)
{
if(password!=num)
cout<<"你输入的密码有误!请重新输入: ";
else break;
cin>>num;
}
if(password!=num)
{
cout<<"错误数上限为5次!请明天再试!"<<endl;
return 0;
}
num1=num;
do{
if(num!=num1)
cout<<"两次输入的密码不一致!"<<endl;
cout<<"请输入新密码:";
cin>>num;
cout<<"请再次输入新密码:";
cin>>num1;
}while(num!=num1);
password=num;
cout<<"修改密码成功!!!"<<endl;
return 1;
}
void user::print_sheet()
{
cout<<"用户: "<<number<<setw(8)<<"余额: "<<balance<<" (元)"<<endl;
}
status user::judge_pass(unsigned long n) //判断密码
{
if(password==n) return 1;
return 0;
}
status user::judge_number(unsigned long n) //识别卡号
{
if(number==n) return 1;
return 0;
}
void main()
{
const int max=2;
int i,j;
unsigned long n; //卡号
unsigned long num; //密码
user a[max];
cout<<"首先预存入 "<<max<<" 个用户信息: "<<endl;
for(j=0;j<max;j++)
{
cout<<"请输入卡号(1~9位数字):";
cin>>n;
a[j]=user(n);
}
do{
cout<<setw(36)<<"中国银联"<<endl;
cout<<" 欢迎使用中国建设银行ATM服务!"<<endl<<" 1 键(继续) 0 键(退出)"<<endl;
cin>>i;
do{
if(i==0)
{
cout<<"请取卡....."<<endl;
return;
}
if(i!=1)
{
cout<<"输入有误!!!请输入 1 或 0 : ";
cin>>i;
}
}while((i!=1)||(i==0));
do{
cout<<"请输入卡号(插卡...)(0 键退出): ";
cin>>n;
if(n==0) return;
for(j=0;j<max;j++)
{
if(a[j].judge_number(n)) break;
}
if(j==max)
cout<<"不存在该用户,请与建行联系!"<<endl;
}while(j==max);
cout<<"请输入密码:";
cin>>num;
for(i=0;i<4;i++)
{
if(!a[j].judge_pass(num))
cout<<"你输入的密码有误!请重新输入: ";
else break;
cin>>num;
}
if(!a[j].judge_pass(num))
{
cout<<"错误数上限为5次!请明天再试!"<<endl;
return ;
}
do{
cout<<"1.取款"<<setw(8)<<"2.存款"<<setw(8)<<"3.转账"<<setw(13)<<
"4.查询余额"<<setw(13)<<"5.修改密码"<<setw(13)<<"6.打印凭据"
<<setw(8)<<"0.退出"<<endl<<"请选择: ";
cin>>i;
switch(i){
case 1:a[j].draw(); break;
case 2:a[j].saving(); break;
case 3:
int i;
do{
cout<<"请输入欲转给帐户的卡号(0 键退出): ";
cin>>n;
if(n==0) break;
for(i=0;i<max;i++)
{
if(a[i].judge_number(n)) break;
}
if(i==max)
cout<<"不存在该用户,请与建行联系!"<<endl;
}while(i==max);
if(n==0) break;
a[j].transfer(a[i]); break;
case 4:a[j].view_balance(); break;
case 5:a[j].change_password(); break;
case 6:a[j].print_sheet(); break;
case 0:a[j].~user();
i=0; break;
}
}while(i!=0);
}while(i==0);
// cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -