#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];//密码 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); //检查密码输入是否满足长度 bool isPassLegal(char pass[]); 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; } } } //检查密码输入是否满足长度 bool isPassLegal(char pass[]) { bool flag=true; int len=strlen(pass),i; if(len==6) { //满足6位 for(i=0;i<len;i++) { if(pass[i]<48||pass[i]>57) { flag=false; break; } } } else { //不满足6位 flag=false; } return flag; } //开户 void openAnAccount() { int i; char pwd1[10],pwd2[10]; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>pwd1; cout<<"请再次输入密码:"; cin>>pwd2; //验证2次输入的密码是否一致 if(strcmp(pwd1,pwd2)==0) //2次密码一致 { if(isPassLegal(pwd1)) //密码是合法 { strcpy(array[size].accPwd,pwd1); cout<<"请输入金额:"; cin>>array[size].balance; //.. strcpy(array[size].flag,"正常"); //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"*******************开户成功*******************"<<endl; mainFrame(); } else { cout<<"密码必须是纯数字,并且是6位"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else openAnAccount(); } } else { //2次输入的密码不一致 cout<<"两次输入的密码不一致"<<endl; 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,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,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,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,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(); }