#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 withdrawal(); //查询 void query(); //转账 void transfer(); //销户 void cancelAccount(); //改密 void changepassword(); //输出指定卡的信息 void printAccount(Account acc); //根据卡号查找卡在数组中的下标 int searchAccount(long accNumber); int main() { welcome();//欢迎界面 login();//登录界面 mainFrame();//主菜单 return 0; } void welcome() { cout<<" +--------------------------------------+"<<endl; cout<<" * *"<<endl; cout<<" * 欢迎使用储蓄综合业务平台 *"<<endl; cout<<" * *"<<endl; cout<<" +--------------------------------------+"<<endl; } void login(){ int i=0; char name[10],cod[10]; for(i=0;i<3;i++){ cout<<"请输入用户名:"; gets(name); cout<<"请输入密码:"; gets(cod); if(strcmp(name,"admin")==0&&strcmp(cod,"admin")==0) { break; } else cout<<"用户名或密码输入错误!"<<endl; } if(i>=3) exit(0); } 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<<"|-------7.改密---------------|"<<endl; cout<<"|-------8.退出---------------|"<<endl; cout<<"|----------------------------|"<<endl; cout<<"请输入操作指令"<<endl; cin>>order; switch(order){ case 1: openAccount(); break; case 2: deposit(); break; case 3: withdrawal(); break; case 4: cancelAccount(); break; case 5: query(); break; case 6: transfer(); break; case 7: changepassword(); break; default: exit(0); } } void openAccount() { char pwd[20]; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>array[size].accPwd; cout<<"请确认密码:"; cin>>pwd; if(strcmp(array[size].accPwd,pwd)==0) { cout<<"请输入金额:"; cin>>array[size].balance; strcpy(array[size].flag,"正常"); //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"开户成功,按任意键返回"<<endl; }else{ cout<<"两次密码输入不符,开户失败!按任意键继续!"; } fflush(stdin); getchar(); 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; } /*根据卡号查找卡的下标 * 若返回值>=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; //返回pos; } void deposit()//定义存款函数 { long accNum;//存款的账号 double money;//存款的金额 int pos,errornum=0; for(errornum=0;errornum<3;errornum++) { cout<<"请输入存款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(strcmp(array[pos].flag,"正常")==0&&pos!=-1){ //卡号正确 cout<<"请输入存款金额:"; cin>>money; //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功!"<<endl; break; }else{ cout<<"卡号不存在或已销户,请仔细确认!"<<endl; } } cout<<"按任意键继续!"<<endl; fflush(stdin); getchar(); mainFrame(); } void withdrawal() { long accNum;//取款的账号 double money;//取款的金额 int pos,errornum=0; char pwd[10]; for(errornum=0;errornum<3;errornum++) { cout<<"请输入取款的账号:"; cin>>accNum; pos=searchAccount(accNum); cout<<"请输入密码:"; cin>>pwd; if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1) { if(strcmp(array[pos].flag,"正常")==0) { cout<<"请输入取款金额:"; cin>>money; if(array[pos].balance>=money) { //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); array[pos].balance-=money; //展示取款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"取款成功!"<<endl; break; }else{ cout<<"您的卡内余额不足!"; break; } }else{ cout<<"卡的状态异常!"; } } else { cout<<"账号或密码输入错误!"<<endl; } } cout<<"按任意键回主菜单:"; fflush(stdin); getchar(); mainFrame(); } void query()//定义查询函数 { long accNum;//账号 int pos,errornum=0; char pwd[10]; for(errornum=0;errornum<3;errornum++) { cout<<"请输入您要查询的的账号:"; cin>>accNum; pos=searchAccount(accNum); cout<<"请输入密码:"; cin>>pwd; if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1) { printAccount(array[pos]); break; } else { cout<<"账号或密码输入错误!"<<endl; } } cout<<"按任意键回主菜单:"; fflush(stdin); getchar(); mainFrame(); } void transfer() { long accNum1,accNum2; int pos1,pos2,errornum=0; double money; char pwd[10]; for(errornum=0;errornum<3;errornum++) { cout<<"请输入您的账号:"; cin>>accNum1; pos1=searchAccount(accNum1); cout<<"请输入密码:"; cin>>pwd; if(strcmp(array[pos1].accPwd,pwd)==0&&pos1!=-1) { if(strcmp(array[pos1].flag,"正常")==0) { //转账前卡的信息 cout<<"转账前卡的信息:"<<endl; printAccount(array[pos1]); cout<<"请输入转账金额:"; cin>>money; cout<<"请输入要转入的账号:"<<endl; cin>>accNum2; pos2=searchAccount(accNum2); if(pos2!=-1&&strcmp(array[pos2].flag,"正常")==0) { array[pos1].balance-=money; array[pos2].balance+=money; cout<<"转账后卡的信息:"<<endl; printAccount(array[pos1]); cout<<"转账成功!"; break; }else{ cout<<"您输入的账号有误或状态异常,转账失败!"<<endl; break; } }else{ cout<<"卡的状态异常,无法进行操作!"; break; } } else{ cout<<"账号或密码错误!"; } } cout<<"按任意键回主菜单:"; fflush(stdin); getchar(); mainFrame(); } void cancelAccount() { long accNum;//账号 int pos,errornum=0; char pwd[10]; for(errornum=0;errornum<3;errornum++) { cout<<"请输入账号:"; cin>>accNum; pos=searchAccount(accNum); cout<<"请输入密码:"; cin>>pwd; if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1) { //打印销户前卡的信息 printAccount(array[pos]); array[pos].balance=0; strcpy(array[pos].flag,"销户"); printAccount(array[pos]); cout<<"销户成功!"; break; } else { cout<<"账号或密码输入错误!"<<endl; } } cout<<"按任意键回主菜单:"; fflush(stdin); getchar(); mainFrame(); } void changepassword() { long accNum;//账号 int pos,errornum=0; char pwd[10],pwd1[10],pwd2[10],pwd3[10]; for(errornum=0;errornum<3;errornum++){ cout<<"请输入账号:"; cin>>accNum; pos=searchAccount(accNum); cout<<"请输入密码:"; cin>>pwd; if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1) { if(strcmp(array[pos].flag,"正常")==0) { cout<<"请输入原密码:"; cin>>pwd1; cout<<"请输入新密码:"; cin>>pwd2; cout<<"请确认新密码:"; cin>>pwd3; if(strcmp(array[pos].accPwd,pwd1)==0&&strcmp(pwd2,pwd3)==0) { strcpy(array[pos].accPwd,pwd3); cout<<"改密成功!"<<endl; printAccount(array[pos]);//打印改密后卡的信息 break; }else{ cout<<"您输入的密码有误!"; } }else{ cout<<"卡的状态异常,无法操作!"; } }else{ cout<<"账号或密码输入错误!"<<endl; } } cout<<"按任意键回主菜单:"; fflush(stdin); getchar(); mainFrame(); }