#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的开号初始值
#define INITNUMBER 10001
struct Account
{
long accNumber; //卡号
char accName[20]; //户主
char accPwd[10]; //密码
double balance; //余额
char flag[6]; //卡的状态
};
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中银行卡数量
int size=0;
//欢迎界面
void welcome();
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//输出指定卡的信息
void printAccount(Account acc);
//输入卡号查找卡在数组中的下标
int searchAccount(long accNumber);
//存款
void deposit();
//取款
void drawmoney();
//修该密码
void updatepassword();
//查询
void showbalance();
//转账
void transferAccounts();
//注销用户
void cancelAccount();
int main()
{
//int array[20];
char loginName[20];
char loginPwd[20];
int i;
//欢迎界面
welcome();
//..
for(i=0;i<3;i++)
{
cout<<"请输入用户名:";
cin>>loginName;
cout<<"请输入密码:";
cin>>loginPwd;
if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)
{
mainFrame();
break;
}else{
cout<<"用户名或密码输入错误"<<endl;
}
}
return 0;
}
void welcome()
{
cout<<"┏━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<" "<<endl;
cout<<"┃ 欢迎登陆银行系统 ┃"<<endl;
cout<<" "<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━┛"<<endl;
}
void mainFrame()
{
int order;
cout<<"┏━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┋ ①.开户 ┋"<<endl;
cout<<"┋ ②.存款 ┋"<<endl;
cout<<"┋ ③.取款 ┋"<<endl;
cout<<"┋ ④.修给密码 ┋"<<endl;
cout<<"┋ ⑤.查询 ┋"<<endl;
cout<<"┋ ⑥.转账 ┋"<<endl;
cout<<"┋ ⑦.注销用户 ┋"<<endl;
cout<<"┋ ⑧.退出 ┋"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━┛"<<endl;
cout<<"请输入操作指令"<<endl;
cin>>order;
switch(order){
case 1:
openAccount();//开户
break;
case 2:
deposit();//存款
break;
case 3:
drawmoney();//取款
break;
case 4:
updatepassword();//修给密码
break;
case 5:
showbalance();//查询
break;
case 6:
transferAccounts();//转账
break;
case 7:
cancelAccount();//注销用户
break;
default:
cout<<"欢迎下次再光临O(∩_∩)O~"<<endl;
break;
}
}
void openAccount()//开户
{
cout<<"请输入户主:";
cin>>array[size].accName;
cout<<"请输入密码:";
cin>>array[size].accPwd;
cout<<"请输入金额:";
cin>>array[size].balance;
//..
strcpy(array[size].flag,"正常");
//写卡号
array[size].accNumber=autoCreament();
printAccount(array[size]);
size++;
cout<<"开户成功,按任意键返回"<<endl;
mainFrame();
}
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;
}
int searchAccount(long accNumber)
{
int i ,pos=-1;
for(i=0;i<size;i++)
{
if(array[i].accNumber==accNumber){
//找到这张卡
pos=i;
break;
}
}
return pos;
}
/*
1.存款.......................
2.取款.......................
3.修给密码...................
4.查询.......................
5.转账.......................
6.销户.......................
*/
void deposit()//存款
{
long accNum;
double money,ly,cq,lx;
int pos,days,type;
cout<<"请输入存款的账号:";
cin>>accNum;
cout<<"请输入存款金额:";
cin>>money;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入"<<endl;
deposit();
}else {
//利息计算
cout<<"请选择存款类型"<<endl;
cout<<"1.活期存款"<<endl;
cout<<"2.存款3个月"<<endl;
cout<<"3.存款6个月"<<endl;
cout<<"4.存款1年"<<endl;
cout<<"5.存款2年"<<endl;
cout<<"6.存款3年"<<endl;
cout<<"7.存款4年"<<endl;
cout<<"请输入存款类型:";
cin>>type;
switch(type){
case 1:
cout<<"请输入存款天数:";
cin>>days;
cq=days/360.0;
ly=0.005;
break;
case 2:
cq=0.25;
ly=0.031;
break;
case 3:
cq=0.5;
ly=0.033;
break;
case 4:
cq=1;
ly=0.035;
break;
case 5:
cq=2;
ly=0.044;
break;
case 6:
cq=3;
ly=0.05;
break;
case 7:
cq=4;
ly=0.055;
break;
}
cout<<"展示存款前的卡信息:"<<endl;
//存款卡前信息
printAccount(array[pos]);
lx=money*ly*cq;
array[pos].balance=array[pos].balance+money+lx;
//存款卡后信息
cout<<"存款后,你的余额信息为"<<endl;
printAccount(array[pos]);
cout<<"存款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
}
void drawmoney()//取款
{
int pos;
long accNum;//取款的账号
double money;//取款的钱数
char pwd[10];//取款的密码
cout<<"请输入取款的账号:";
cin>>accNum;
cout<<"请输入取款账号的密码:";
cin>>pwd;
cout<<"请输入取款金额:";
cin>>money;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号或密码有误
cout<<"卡号有误,请重新输入"<<endl;
drawmoney();//再次运行
}else{
if(strcmp(array[pos].accPwd,pwd)==0){
//密码是对
if(array[pos].balance>money)
{
//余额充足
cout<<"展现取款前信息"<<endl;
printAccount(array[pos]);
array[pos].balance-=money;
cout<<"取款后,您的余额信息"<<endl;
printAccount(array[pos]);
}
else
{
//余额不足
cout<<"你的余额已不足。"<<endl;
}
}else{
//密码不对
cout<<"密码有误,请重新输入"<<endl;
drawmoney();//重新执行
}
}
cout<<"取款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
void updatepassword()//修该密码
{
long accNum;//卡号
int pos;
char p1[10];
char p2[10];
cout<<"请输入你要修该密码的卡号";
cin>>accNum;
cout<<"请输入密码:";
cin>>p1;
cout<<"请确认密码:";
cin>>p2;
pos=searchAccount(accNum);
if(pos==-1){
cout<<"您输入的卡号有误,请重新输入:"<<endl;
updatepassword();
}else{
if(strcmp(p1,p2)==0)//两次密码一致
{
strcpy(array[pos].accPwd,p1);
cout<<"修给密码成功"<<endl;
cout<<"展现给密码后的信息"<<endl;
printAccount(array[pos]);
}
else//两次密码不一致
{
cout<<"两次输入密码错误,修给密码失败,请重新修改密码";
updatepassword();
}
}
cout<<"修改密码成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
void showbalance()//查询余额
{
int pos;
long accNum;
cout<<"请输入你要查询余额的卡号"<<endl;
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
showbalance();
}else{
cout<<"你当前的余额信息"<<endl;
printAccount(array[pos]);
}
cout<<"查询余额成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
void transferAccounts()
{
long accNum1,accNum2;
double money;
int pos1,pos2;
char pwd[10];
cout<<"请输入你的账号";
cin>>accNum1;
cout<<"请输入你的密码";
cin>>pwd;
cout<<"请输入对方的账号";
cin>>accNum2;
cout<<"请输入你要转账的金额";
cin>>money;
pos1=searchAccount(accNum1);
pos2=searchAccount(accNum2);
if(pos1==-1)
{
//卡号不存在
cout<<"卡号有误,请重新输入"<<endl;
transferAccounts();
}else{
if(strcmp(array[pos1].accPwd,pwd)==0){
//密码正确
if(array[pos1].balance>money){
//余额充足,可以转账
if(pos2==-1)
{
//转账用户不存在
cout<<"转账用户不存在,请重新输入"<<endl;
transferAccounts();
}else{
//转账用户存在
array[pos1].balance=array[pos1].balance-money;
array[pos2].balance=array[pos2].balance+money;
cout<<"转账成功"<<endl;
cout<<"显示户主信息"<<endl;
printAccount(array[pos1]);
cout<<"显示转账用户信息"<<endl;
printAccount(array[pos2]);
}
}else{
//余额不足,无法转账
cout<<"余额不足,无法转账,请重新输入"<<endl;
transferAccounts();
}
}else{cout<<"密码不正确,请重新输入"<<endl;
transferAccounts();
}
}
cout<<"转账成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
void cancelAccount()
{
int pos;
long accNum;
char pwd[10];
cout<<"请输入你要注销的账户号";
cin>>accNum;
cout<<"请输入你要注销用户密码";
cin>>pwd;
pos=searchAccount(accNum);
if(pos==-1){//注销用户不存在
cout<<"你要注销的用户不存在,请重新输入"<<endl;
cancelAccount();
}else{
//注销用户存在
if(strcmp(array[pos].accPwd,pwd)==0){
//密码正确
strcpy(array[pos].accName,"不存在");
strcpy(array[pos].accPwd,"不存在");
array[pos].balance=0;
strcpy(array[pos].flag,"不存在");
cout<<"显示你已注销的用户信息"<<endl;
printAccount(array[pos]);
}else{
//密码不正确34
cout<<"你输入的密码不正确,请重新输入"<<endl;
cancelAccount();
}
}
cout<<"注销用户成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
银行系统 先发制人
最新推荐文章于 2025-07-29 01:44:56 发布