#include <iostream> #include <string.h> #include <stdio.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 login(); //主界面 void mainFrame(); //生成银行中自增卡号 long autoCreament(); //开户 void openAccount(); //存款 void deposit(); //取款 void draw(); //销户 void closed(); //查询 void demand(); //退出 void quit(); //密码的鉴定 void decide(char Pwd[]); //输出指定卡的信息 void printAccount(Account acc); //根据卡号查找卡在数组中的下标 int searchAccount(long accNumber); int main() { //欢迎界面 welcome(); //登录 login(); while(1) { //业务选择 mainFrame(); } return 0; } //管理员登陆 void login() { char loginName[20]; char loginPwd[20]; int i; //.. for(i=1;i<4;i++) { cout<<"请输入管理员账号:"; fflush(stdin); gets(loginName); cout<<"请输入管理员密码:"; fflush(stdin); gets(loginPwd); //判断 if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0) { break; } else { if(i<3) { cout<<"账号或密码错误!请核对后重新输入\n"; cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl; } else { cout<<"密码错误超过3次,退出系统……\n"; exit(0); } } } } //总界面 void welcome() { cout<<"+--------------------------------------+"<<endl; cout<<"|-----------欢迎登陆银行系统-----------|"<<endl; cout<<"+--------------------------------------+"<<endl; } //用户界面 void mainFrame() { int order; cout<<"|-----------------------------------|"<<endl; cout<<"|--------------1.开户---------------|"<<endl; cout<<"|--------------2.存款---------------|"<<endl; cout<<"|--------------3.取款---------------|"<<endl; cout<<"|--------------4.销户---------------|"<<endl; cout<<"|--------------5.查询---------------|"<<endl; cout<<"|--------------6.退出---------------|"<<endl; cout<<"|-----------------------------------|"<<endl; cout<<"请输入操作指令"<<endl; cin>>order; switch(order){ case 1: openAccount(); break; case 2: deposit(); break; case 3: draw(); break; case 4: closed(); break; case 5: demand(); break; case 6: quit(); break; default: break; } } //开户 void openAccount() { Account mm; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>array[size].accPwd; decide(array[size].accPwd); if(strcmp(array[size].accPwd,mm.accPwd)==0) { cout<<"请输入金额:"; cin>>array[size].balance; strcpy(array[size].flag,"正常"); //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"开户成功,按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } else { cout<<"两次输入的密码不一致,请重新开户"<<endl; openAccount(); } } //密码的鉴定 void decide(char Pwd[]) { Account mm; if(strlen(Pwd)!=6) { cout<<endl<<"不是六位数字密码!请重新开户!"<<endl; openAccount(); } else { cout<<"请再次输入密码:"; cin>>mm.accPwd; } } //卡号的递增 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)<<" 有 "<<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) { //找到了这张卡 pos=i; break; } } return pos; } //存款 void deposit() { long accNum,accNum1;//存款的账号 double money;//存款的金额 int pos; char a; cout<<"请输入存款账号:"; cin>>accNum; pos=searchAccount(accNum); if(strcmp(array[pos].flag,"已销户")==0) { cout<<"此卡已销户,重新输入卡号请按Y 返回主菜单请按其他键"<<endl; cin>>a; if(a=='Y' || a=='y') { deposit(); } else { mainFrame(); } } if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //... deposit(); } cout<<"请再次输入存款账号:"; cin>>accNum1; if(accNum!=accNum1) { cout<<"两次输入的账号不一致,请确认后再次输入"<<endl; deposit(); } else { cout<<"请输入存款金额:"; cin>>money; //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); //找到了该卡号所对应的卡 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功,按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } } //取款 void draw() { long accNum;//取款的账号 double money;//取款的金额 int pos,i; char a,b; Account mm; cout<<"请输入取款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(strcmp(array[pos].flag,"已销户")==0) { cout<<"此卡已销户,重新输入卡号请按Y 返回主菜单请按其他键"<<endl; cin>>a; if(a=='Y' || a=='y') { draw(); } else { mainFrame(); } } if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //... draw(); } else { for(i=1;i<4;i++) { cout<<"请输入密码:"; cin>>mm.accPwd; if(strcmp(array[pos].accPwd,mm.accPwd)==0) { break; } else { if(i<3) { cout<<"账号或密码错误!请核对后重新输入\n"; cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl; } else { cout<<"密码错误超过3次,退出系统……\n"; exit(0); } } } } cout<<"请输入取款金额:"; cin>>money; //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); if(array[pos].balance<money) { cout<<"您的余额不足,重新输入取款账号和密码请按Y 返回主菜单请按其他键"<<endl; cin>>b; if(b=='Y' || b=='y') { draw(); } else { mainFrame(); } } else { //找到了取卡号所对应的卡 array[pos].balance-=money; } //展示存款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"取款成功,按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } //查询 void demand() { long accNum;//查询的账号 int pos,i; char a; Account mm; cout<<"请输入要查询的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,重新输入卡号请按Y 返回主菜单请按其他键"<<endl; cin>>a; if(a=='Y' || a=='y') { demand(); } else { mainFrame(); } } else { for(i=1;i<4;i++) { cout<<"请输入密码:"; cin>>mm.accPwd; if(strcmp(array[pos].accPwd,mm.accPwd)==0) { break; } else { if(i<3) { cout<<"账号或密码错误!请核对后重新输入\n"; cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl; } else { cout<<"密码错误超过3次,退出系统……\n"; exit(0); } } } } //展示卡的信息 cout<<"此卡的信息:"<<endl; printAccount(array[pos]); cout<<"查询成功,按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } //销户 void closed() { long accNum;//销户的账号 int pos,i; char a; Account mm; cout<<"请输入要销户的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //... closed(); } else { for(i=1;i<4;i++) { cout<<"请输入密码:"; cin>>mm.accPwd; if(strcmp(array[pos].accPwd,mm.accPwd)==0) { cout<<endl<<"销户前卡的信息:"<<endl; printAccount(array[pos]); cout<<"您将进行销户!!!!!!"<<endl; cout<<" 确定请按Y 按其他键返回主菜单 "<<endl; cin>>a; if(a=='Y' || a=='y') { getchar(); array[pos].balance=0; strcpy(array[pos].flag,"已销户"); cout<<endl<<"销户后卡的信息:"<<endl; printAccount(array[pos]); cout<<endl<<"销户成功,按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } else { mainFrame(); } } else { if(i<3) { cout<<"账号或密码错误!请核对后重新输入\n"; cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl; } else { cout<<"密码连续3次错误!!!销户失败!!!"<<endl; cout<<endl<<"按enter键返回"<<endl; fflush(stdin); getchar(); mainFrame(); } } } } } //退出 void quit() { char a; cout<<"感谢您本次的使用,欢迎下次光临。"<<endl; cout<<" 确定请按Y 按其他键返回主菜单 "<<endl; cin>>a; if(a=='Y' || a=='y') { exit(0); } else { mainFrame(); } }