#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdio.h>
using namespace std;
//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的卡号初始值
#define INITNUMBER 10001
struct Account
{
long accNumber;//卡号
char accName[20];//户主
char accPwd[10],accPwd2[10];//密码
double balance;//余额
char flag[6];//卡的状态
} array[MAXACCOUNTNUMBER];
//银行中所有卡
int size=0;
//生成银行中自增卡号
long autoCreament();
//开户
void openAnAccount();
//存款
void deposit();
//取款
void withdraw();
//查询
void query();
//销户
void closeAnAcount();
//菜单
void mainFrame();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);
int main()
{
cout<<"+------------------------+"<<endl;
cout<<": :"<<endl;
cout<<":欢迎使用储蓄综合业务平台:"<<endl;
cout<<": :"<<endl;
cout<<"+------------------------+"<<endl;
cout<<endl;
char loginName[20];//户名
char loginPwd[20];//密码
int i=0;
while (i<3)
{
cout<<"请输入您的用户名:";
cin>>loginName;
cout<<endl;
cout<<"请输入密码:";
cin>>loginPwd;
if (strcmp(loginName,"admin")!=0||strcmp(loginPwd,"admin")!=0)
{
i++;
cout<<"用户名或密码错误!"<<endl;
cout<<endl;
}
else
break;
}
if(i>=3)
{
cout<<"您输入的次数已达限制,请退出程序!";
}
if(i<3)
mainFrame();
return 0;
}
void mainFrame()
{
cout<<"+------------------------+"<<endl;
cout<<"|存款 请按1 开户 请按4|"<<endl;
cout<<"|取款 请按2 销户 请按5|"<<endl;
cout<<"|查询 请按3 退出 请按0|"<<endl;
cout<<"+------------------------+"<<endl;
cout<<"请输入您的选择:";
int choose;
cin>>choose;
switch (choose)
{
case 0:
cout<<"-----您选择了退出-----"<<endl;
break;
case 1:
cout<<"-----您选择了存款-----"<<endl;
deposit();
break;
case 2:
cout<<"-----您选择了取款-----"<<endl;
withdraw();
break;
case 3:
cout<<"-----您选择了查询-----"<<endl;
query();
break;
case 4:
cout<<"-----您选择了开户-----"<<endl;
openAnAccount();
break;
case 5:
cout<<"-----您选择了销户-----"<<endl;
closeAnAcount();
break;
default:
{
cout<<"请重新选择!"<<endl;
mainFrame();
break;
}
}
}
void openAnAccount()//开户
{
char i={};
cout<<"请输入户主:"<<endl;
cin>>array[size].accName;
cout<<"请输入密码:"<<endl;
cin>>array[size].accPwd;
cout<<"请确认密码:"<<endl;
cin>>array[size].accPwd2;
if(strcmp(array[size].accPwd,array[size].accPwd2)==0)
{
cout<<"请输入金额:"<<endl;
cin>>array[size].balance;
strcpy(array[size].flag,"正常") ;
array[size].accNumber=autoCreament();
printAccount(array[size]);
size++;
cout<<endl;
cout<<"开户成功,按任意键返回"<<endl;
fflush(stdin);//清空缓冲区
getchar();//按任意键返回
mainFrame();
}
else
{
cout<<"两次输入密码不统一!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
openAnAccount();
}
}
long autoCreament()
{
if (size==0)
{
return INITNUMBER;
}
else
{
return array[size-1].accNumber+1;
}
}
//输出指定卡的信息
void printAccount(Account acc)
{
cout<<"|----------------------------------------|"<<endl;
cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(8)<<"密码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl;
cout<<setiosflags(ios::left)<<"+----------------------------------------+"<<endl;
cout<<setiosflags(ios::left)<<"|"<<setw(8)<<acc.accNumber<<setw(8)<<acc.accName<<setw(8)<<acc.accPwd<<setw(8)<<acc.balance<<setw(8)<<acc.flag<<"|"<<endl;
cout<<"|----------------------------------------|"<<endl;
}
/*根据卡号查找卡的下标
* 若返回值>=0,卡号是正确
* 若返回值=-1,卡号有误
*/
int searchAccount(long accNumber)
{
int i,pos=-1;
for(i=0; i<size; i++)
{
if(array[i].accNumber==accNumber&&strcmp(array[i].flag,"已销户")!=0)
{
//找到了这张卡
pos=i;
break;
}
}
return pos;
}
void deposit()//存款
{
long accNum;//存款的账号
double money;//存款的金额
int pos;
char i={};
cout<<"请输入存款的账号:";
cin>>accNum;
cout<<"请输入存款金额:";
cin>>money;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在!!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
deposit();
}
else
{
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
printAccount(array[pos]);
//找到了该卡号所对应的卡
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"**********存款成功,按任意键返回**********"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
}
void withdraw()//取款
{
long accNum;//取款的账号
char accPwd[10];//
double money;//取款的金额
double money1;//用于比较的金额
int pos;
char i={};
cout<<"请输入取款的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
withdraw();
}
else
{
cout<<"请输入密码:";
cin>>accPwd;
}
if (strcmp(array[pos].accPwd,accPwd)==0)
{
cout<<"请输入取款金额:";
cin>>money;
//展示下取款前卡的信息
cout<<"取款前卡的信息:"<<endl;
printAccount(array[pos]);
//找到了该卡号所对应的卡
money1=array[pos].balance-money;
if(money1<=0)
{
cout<<"您账户内的余额不足,请查询后再取款!";
cout<<endl;
mainFrame();
}
else
{
array[pos].balance-=money;
//展示取款后卡的信息
cout<<"取款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"**********取款成功,按任意键返回**********"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
}
else
{
cout<<"您输入的密码不正确!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
withdraw();
}
}
void query()//查询
{
long accNum;//查询的账号
char accPwd[10];//密码
int pos;
char i={};
cout<<"请输入查询的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
query();
}
else
{
cout<<"请输入密码:";
cin>>accPwd;
}
if (strcmp(array[pos].accPwd,accPwd)==0)
{
cout<<"您的账户信息为:"<<endl;
printAccount(array[pos]);
cout<<"****************按任意键返回**************"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
else
{
cout<<"您输入的密码不正确!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
query();
}
mainFrame();
}
void closeAnAcount()//销户
{
long accNum;//销户的账号
char accPwd[10];//
int pos;
char i={};
cout<<"请输入销户的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在!!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
closeAnAcount();
}
else
{
cout<<"请输入密码:"<<endl;
cin>>accPwd;
}
if (strcmp(array[pos].accPwd,accPwd)==0)
{
cout<<"您的账户信息为:"<<endl;
printAccount(array[pos]);
cout<<"************按回车键进行销户**************"<<endl;
fflush(stdin);
getchar();
array[pos].balance=0;
strcpy(array[pos].flag,"已销户");
printAccount(array[pos]);
cout<<"***************您已成功销户***************"<<endl;
cout<<"*************按任意数字键返回*************"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
else
{
cout<<"您输入的密码不正确!"<<endl;
cout<<"按任意数字键继续"<<endl;
cout<<"按1键返回主菜单"<<endl;
cin>>i;
if (i=='1')
mainFrame();
else
closeAnAcount();
}
mainFrame();
}