#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
using namespace std;//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的开号初始值
#define INITNUMBER 10001struct Account
{long accNumber; //卡号char accName[20]; //户主char accPwd[10]; //密码double balance; //余额char flag[6]; //卡的状态
};
int size=0;
Account array[MAXACCOUNTNUMBER];
void work();
void openAccount();
void pid();
void deposit();
void withdrawal();
void transfer();
long autoCreament();
void printAccount(Account acc);
void closeAccount();
bool isPassLegal(char pass[]);
int main()
{int i;char username[20];char password[10];for(i=0;i<3;i++){cout<<"请输入用户名:";cin>>username;cout<<endl;cout<<"请输入密码:";cin>>password;cout<<endl;if(strcmp(username,"admin")==0&&strcmp(password,"admin")==0){work();}else{if(i<2)cout<<"用户名或密码输入错误,您还有"<<3-i<<"次机会,请重新输入!"<<endl;else{cout<<"您已三次输入错误的用户名或密码,系统将自动退出!"<<endl;}}
}
return 0;
}
void work()
{int order;cout<<" +-------------------------------------------------------+"<<endl;cout<<" | |"<<endl;cout<<" | |"<<endl;cout<<" | 欢迎使用储蓄业务综合平台 |"<<endl;cout<<" | |"<<endl;cout<<" | |"<<endl;cout<<" +-------------------------------------------------------+"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<" +----------------------------------------------+"<<endl;cout<<" |-----1.开户-2.查询-3.存款------|"<<endl;cout<<" |-----4.取款-5.销户-6.退出------|"<<endl;cout<<" +----------------------------------------------+"<<endl;cout<<"请选择业务(输入业务前的序号):";cin>>order;switch(order){case 1:openAccount();break;case 2:pid();break;case 3:deposit();break;case 4:withdrawal();break;case 5:closeAccount();break;default:break;}
}
bool isPassLegal(char pass[])
{bool flag=true;int len=strlen(pass),i;if(len<7&&len>=6){//满足6位for(i=0;i<len;i++){if(pass[i]<48||pass[i]>57){flag=false;break;}}}else{//不满足6-8位flag=false;}return flag;
}void openAccount()//1.开户
{char pwd1[10],pwd2[10];cout<<"请输入户主名:";cin>>array[size].accName;cout<<"请输入密码:";cin>>pwd1;cout<<"请再次输入密码:";cin>>pwd2;if(strcmp(pwd1,pwd2)==0){if(isPassLegal(pwd1)){strcpy(array[size].accPwd,pwd1);cout<<"请输入初次存款金额:";cin>>array[size].balance;//..strcpy(array[size].flag,"正常");//写卡号array[size].accNumber=autoCreament();cout<<"开户后的信息是"<<endl;printAccount(array[size]);size++;cout<<"开户成功,请按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"您输入的密码不正确,密码必须是纯数字,并且是六位,请重新进行开户操作!"<<endl;openAccount();}
}else{cout<<"您两次输入的密码不一致,请重新进行开户操作!"<<endl;openAccount();}
}
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;
}
void pid()//2.查询
{int i,size,accNumber;cout<<"请输入账号:";cin>>accNumber;if(size=searchAccount(accNumber)){cout<<"您查询的账户信息为:"<<endl;printAccount(array[size]); cout<<endl;cout<<"若显示的信息中账号为0则证明您输入的账号不存在,请重新选择查询业务进行查询!"<<endl;cout<<"反之则查询成功,请按任意键返回"<<endl;fflush(stdin); getchar(); work();}
}
void deposit()//3.存款{long accNum;//存款的账号double money;//存款的金额int pos;cout<<"请输入账号:";cin>>accNum;cout<<"请输入存款金额:";cin>>money;pos=searchAccount(accNum);if(pos==-1){//卡号有误cout<<"账号不存在,请重新输入账号"<<endl;//...deposit();}else{//展示下存款前卡的信息cout<<"存款前卡的信息:"<<endl;printAccount(array[pos]);//找到了该卡号所对应的卡array[pos].balance+=money;//展示存款后卡的信息cout<<"存款后卡的信息:"<<endl;printAccount(array[pos]);cout<<"存款成功,请按任意键返回"<<endl;fflush(stdin);getchar();work();}}
void withdrawal()//4.取款{ char key[7]; int money,i,size,accNumber; cout<<endl<<"请输入账号:"; cin>>accNumber; //寻找该卡号 size=searchAccount(accNumber); cout<<endl<<"请输入密码:"; for(i=0;i<6;i++) { cin>>key[i]; } key[6]='\0'; if(strcmp(key,array[size].accPwd)==0) { cout<<endl<<"请输入取款金额:"; cin>>money; //展示下存款前卡的信息 cout<<endl<<"取款前卡的信息:"<<endl; printAccount(array[size]); //找到了该卡号所对应的卡 if(array[size].balance<money) { cout<<endl<<"对不起,您的账户余额不足,无法取款!"<<endl; cout<<endl<<"取款失败,请按任意键返回"<<endl; fflush(stdin); getchar(); work(); } else { array[size].balance-=money; //展示存款后卡的信息 cout<<endl<<"取款后卡的信息:"<<endl; printAccount(array[size]); cout<<endl<<"取款成功,请按任意键返回"<<endl; fflush(stdin); getchar(); work(); } } else { cout<<endl<<"卡号或密码输入错误,请重新输入!"<<endl; } }
void closeAccount()//5.销户
{
char key[7]; int i,size,accNumber; cout<<endl<<"请输入要销户的账号:"; cin>>accNumber; //寻找该卡号 size=searchAccount(accNumber); cout<<endl<<"请输入密码:"; for(i=0;i<6;i++) { cin>>key[i]; } key[6]='\0'; if(strcmp(key,array[size].accPwd)==0) { cout<<endl<<"销户前卡的信息:"<<endl; printAccount(array[size]); array[size].balance=0; strcpy(array[size].flag,"不存在"); strcpy(array[size].accName,"不存在"); cout<<endl<<"销户成功,请按任意键返回"<<endl; fflush(stdin); getchar(); work(); } else { cout<<"密码错误,请按任意键返回"<<endl; fflush(stdin); getchar(); work(); }
}
详细解决方案
银行系统更新
热度:3 发布时间:2024-01-22 04:46:14.0
相关解决方案