读书人

总算完成了!加文件的简易银行系统.

发布时间: 2012-12-30 10:43:15 作者: rapoo

终于完成了!加文件的简易银行系统........

#include <iostream>//文件操作必写#include <fstream>#include<string>#include <iomanip>using namespace std;//银行中最大的账户数量#define MAXACCOUNTNUMBER 20000//银行卡的开号初始值#define INITNUMBER 100001//定义结构体struct Account{//账号double accNumber;//用户姓名char accName[20];//密码char accPwd[10];//存款金额double balance;//状态char flag[10];};//银行中所有卡Account array[MAXACCOUNTNUMBER];//银行中银行卡数量int size=0;//欢迎界面void welcome();//主界面void mainFrame();//函数声明 输出b个a,美化界面void shuchu(char a,int b);//函数声明  开户的函数void openAccount(); //自动生成卡号double autoCreament();//输出指定卡的信息void printAccount(Account size);//存款void deposit();//查找卡号是否存在,根据输入卡号查找下标。int searchAccount(double accNumber);//取款void remove();//查询void query();//退出界面void exit();//销户void close();//转账void transfer();//改密void change_pwd();//检测账户是否冻结或消除//返回 1 已销户//返回 2 已冻结//返回 0 正常int check(int j);//文件读入void read();//文件保存void preserve();int main(){    int n=2;//文件读入read();    //用户名char Name[20]="徐本锡";//密码char Pwd[20]="哥才是永恒";     char a[20];char b[20];//欢迎界面welcome();    do    {cout<<"  请 输 入 用 户 名:";                                                                                                               cin>>a;cout<<'\n';cout<<"  请 输 入  密  码 :";cin>>b;cout<<"\n";if(strcmp(a,Name)==0&&strcmp(b,Pwd)==0){mainFrame();preserve();}else{if(n>0){cout<<"输入有误,请重新输入。您还有"<<n<<"次机会。"<<endl;n=n-1;}else{cout<<"账户被封印!"<<endl<<endl<<""<<"只有寻找到传说中的永恒之神 "<<endl<<endl<<"★★★★★唯一★★★★★"<<endl<<endl<<"才可以解除封印!"<<endl;break;}}    }    while(strcmp(a,Name)!=0||strcmp(b,Pwd)!=0);    return 0;}//欢迎界面void welcome(){cout<<"+";shuchu('-',78);cout<<"+"<<'\n';    cout<<"|";shuchu(' ',78);cout<<"|"<<'\n';    cout<<"|";shuchu(' ',14);cout<<"传 说 之 永 恒 之 神 储 蓄 银 行 欢 迎 您 !";shuchu(' ',20);cout<<"|"<<'\n';    cout<<"|";shuchu(' ',78);cout<<"|"<<'\n';    cout<<"+";shuchu('-',78);cout<<"+"<<'\n';}void shuchu(char a,int b)//输出b个a{    int i;    for(i=0;i<b;++i)    {        cout<<a;    }    return;}//主界面void mainFrame(){int choose;cout<<"+";shuchu('-',78);cout<<"+"<<'\n';cout<<"|";shuchu(' ',20);cout<<"存款   请按 1";cout<<"            销户   请按 5";shuchu(' ',20);cout<<"|"<<'\n';cout<<"|";shuchu(' ',20);cout<<"取款   请按 2";cout<<"            转账   请按 6";shuchu(' ',20);cout<<"|"<<'\n';cout<<"|";shuchu(' ',20);cout<<"查询   请按 3";cout<<"            改密   请按 7";shuchu(' ',20);cout<<"|"<<'\n';cout<<"|";shuchu(' ',20);cout<<"开户   请按 4";cout<<"            退出   请按 0";shuchu(' ',20);cout<<"|"<<'\n';cout<<"+";shuchu('-',78);cout<<"+"<<'\n';cout<<"选择指令:";cin>>choose;switch (choose){case 1:deposit();break;case 2:remove();break;case 3:query();break;case 4:openAccount();break;case 5:close();break;case 0:exit();break;case 6:transfer();break;case 7:change_pwd();break;default:cout<<"指令有误!请重新输入!"<<endl;mainFrame();break;}}void openAccount()//定义开户的函数{int choose1;char acc_Pwd[10];do{cout<<"请输入用户名:";cin>>array[size].accName;cout<<endl<<"请输入密码:";cin>>array[size].accPwd;cout<<endl<<"请再次输入密码:";cin>>acc_Pwd;cout<<endl<<"请输入存款金额:";cin>>array[size].balance;strcpy(array[size].flag,"正常");array[size].accNumber= autoCreament();if(strcmp(array[size].accPwd,acc_Pwd)!=0){cout<<""<<"两次密码不一致!"<<endl;cout<<"返回上一层请按1 "<<endl<<"重新输入请按其它键 "<<endl;cin>>choose1;if(choose1!=1)continue;if(choose1==1){break;}}else{printAccount(array[size]);size++;cout<<"开户成功,按任意键返回"<<endl;fflush(stdin);getchar();break;   //*******************************************************************************************************不解???为什么还要打破循环??}}while(strcmp(array[size].accPwd,acc_Pwd)!=0);mainFrame();}//自动生成卡号double autoCreament(){if(size==0){return INITNUMBER;}else{return (array[size-1].accNumber+1);}}//输出指定卡的信息void printAccount(Account size){cout<<"|--------------------------------------------------|"<<endl;cout<<setiosflags(ios::left)<<"|"<<setw(10)<<" 卡号"<<setw(10)<<"| 户主"<<setw(10)<<"| 密码"<<setw(10)<<"| 金额"<<setw(10)<<"| 状态"<<"|"<<endl;cout<<"+----------+---------+---------+---------+---------+"<<endl;cout<<setiosflags(ios::left)<<"| "<<setw(9)<<size.accNumber<<"| "<<setw(8)<<size.accName<<"| "<<setw(8)<<size.accPwd<<"| "<<setw(8)<<size.balance<<"| "<<setw(8)<<size.flag<<"|"<<endl;cout<<"|--------------------------------------------------|"<<endl;}//存款void deposit(){double money,k;int j;double acc_Number;do{cout<<"请输入存款账号:";cin>>acc_Number;cout<<endl<<"请输入存款金额:";cin>>money;j=searchAccount(acc_Number);if(j==-1){cout<<"卡号不存在!"<<endl<<"返回上一层请按 1     重新输入请按其他键。";cin>>k;if(k==1)break;elsecontinue;}else{//检查账户是否正常if(check(j)==1){cout<<"该账户已销除!"<<endl;break;}else if(check(j)==2){cout<<"该账户已冻结!"<<endl;break;}else if(check(j)==0){cout<<"存款前用户信息:"<<endl;printAccount(array[j]);cout<<"存款金额:  "<<money<<"  元"<<endl;array[j].balance+=money;cout<<"存款后用户信息:"<<endl;printAccount(array[j]);cout<<"存款成功!按任意键返回!";fflush(stdin);getchar();}}}while(j==-1);mainFrame();}//查找卡号是否存在,根据输入卡号查找下标。int searchAccount(double accNumber){int i,j=-1;for(i=0;i<size;++i){if(array[i].accNumber==accNumber){//找到卡的下标j=i;break;}}return j;}//取款void remove(){char acc_Pwd[10];double money,k;int j;double acc_Number;do{cout<<"请输入取款账号:";cin>>acc_Number;cout<<"请输入密码:";cin>>acc_Pwd;cout<<endl<<"请输入取款金额:";cin>>money;j=searchAccount(acc_Number);if(j==-1||strcmp(array[j].accPwd,acc_Pwd)!=0){cout<<"卡号或密码输入错误!!"<<endl<<"返回上一层请按 1     重新输入请按其他键。";cin>>k;if(k==1)break;elsecontinue;}else{//检查账户是否正常if(check(j)==1){cout<<"该账户已销除!"<<endl;break;}else if(check(j)==2){cout<<"该账户已冻结!"<<endl;break;}else if(check(j)==0){if(money<=0||money>array[j].balance){cout<<"输入的取款金额错误!"<<endl;continue;}else{cout<<"取款前用户信息:"<<endl;printAccount(array[j]);cout<<"取款金额:  "<<money<<"  元"<<endl;array[j].balance-=money;cout<<"取款后用户信息:"<<endl;printAccount(array[j]);cout<<"取款成功!按任意键返回!";fflush(stdin);getchar();break;}}}}while(j==-1||strcmp(array[j].accPwd,acc_Pwd)!=0||((money<=0||money>array[j].balance)&&strcmp(array[j].accPwd,acc_Pwd)==0));mainFrame();}//查询void query(){double acc_Number;int j,k;do{cout<<"请您输入查询的卡号:";cin>>acc_Number;j=searchAccount(acc_Number);if(j==-1){cout<<"卡号不存在!"<<endl<<"返回上一层请按 1     重新输入请按其他键。";cin>>k;if(k==1)break;elsecontinue;}else{cout<<"您要查询的卡的信息为:"<<endl;printAccount(array[j]);cout<<"按任意键返回!";fflush(stdin);getchar();}}while(j==-1);mainFrame();}//退出界面void exit(){cout<<" 信永恒不挂科"<<endl<<endl<<"愿永恒之神的祝福与您常伴"<<endl<<endl<<"欢迎下次光临!"<<endl;;}//销户void close(){cout<<"销户前请将余额转走或取出!"<<endl;int k1,k2,j,m;double acc_Number;char acc_Pwd[10];do{cout<<"请输入销户账号:";cin>>acc_Number;cout<<"请输入销户账号密码:";cin>>acc_Pwd;//按下表查找账号j=searchAccount(acc_Number);//第1次 确定是否销户cout<<"您要销除账户:"<<acc_Number<<endl;cout<<"确定要销户!此操作不可更改!"<<endl<<"确认销户请按  1   取消并返回主菜单 →请按其他键。"<<endl;cin>>k1;//第1次确定时  确定销户if(k1==1){//卡号不对或密码不对if(j==-1||strcmp(array[j].accPwd,acc_Pwd)!=0){cout<<"卡号或密码输入错误!!"<<endl<<"返回主菜单请按 1     重新输入 →请按其他键。";cin>>m;if(m==1)break;elsecontinue;}//卡号和密码正确else{//检查账户是否正常if(check(j)==1){cout<<"该账户已销除!"<<endl;break;}else if(check(j)==2){cout<<"该账户已冻结!"<<endl;break;}else if(check(j)==0){if(array[j].balance>0){cout<<"您的余额为: "<<array[j].balance<<" 元"<<endl;cout<<"请取出余额!"<<endl;break;}else{cout<<"您要销除的卡的信息为:"<<endl<<endl;printAccount(array[j]);//第2次 确定是否销户cout<<endl<<"确定要销户!此操作不可更改!"<<endl<<"确认销户请按  1   取消并返回主菜单 →请按其他键。"<<endl;cin>>k2;//第2次确定时   确定销户if(k2==1){strcpy(array[j].flag,"已销户");printAccount(array[j]);cout<<"销户成功!按任意键返回!";fflush(stdin);getchar();break;}//第2次确定时 取消销户else{break;}}}}}//第1次确定时  取消销户else{break;}}while(k1==1&&strcmp(array[j].accPwd,acc_Pwd)!=0);mainFrame();}//转账void transfer(){double money;double acc_Number1,acc_Number2;char accPwd1[10];int j1,j2,k1,k2;do{cout<<"请输出转出账号:";cin>>acc_Number1;cout<<"请输入密码:";cin>>accPwd1;cout<<"请输入转入账号:";cin>>acc_Number2;cout<<"请输入转账金额:";cin>>money;j1=searchAccount(acc_Number1);j2=searchAccount(acc_Number2);if(j1==-1||j2==-1||strcmp(array[j1].accPwd,accPwd1)!=0){cout<<"您输的卡号或密码不正确!"<<endl<<"返回主菜单请按  1     重新输入 → 请按其他键。"<<endl;cin>>k1;if(k1==1){break;}else{continue;}}else{//检查账户是否正常if(check(j1)==1||check(j2)==1){cout<<"该账户或转入账户已销除!"<<endl;break;}else if(check(j1)==2||check(j2)==2){cout<<"该账户或转入账户已冻结!"<<endl;break;}else if(check(j1)==0||check(j2)==0){if(money<=0||money>array[j1].balance){cout<<"转账金额有误!"<<endl;continue;}else{cout<<"您的账户信息为:"<<endl;printAccount(array[j1]);cout<<endl<<"您要转入的账号为:"<<array[j2].accNumber<<endl<<"户主为:"<<array[j2].accName<<endl;cout<<"您的转账金额为: "<<money<<" 元"<<endl;cout<<"确认请按  1    取消并返回主菜单 → 请按其他键。";cin>>k2;if(k2==1){array[j1].balance-=money;array[j2].balance+=money;cout<<endl<<"转账后您的卡的信息为:"<<endl;printAccount(array[j1]);cout<<endl<<"转账成功!按任意键返回!";fflush(stdin);getchar();break;}else{break;}}}}}while(j1==-1||j2==-1||strcmp(array[j1].accPwd,accPwd1)!=0||((money<=0||money>array[j1].balance)&&strcmp(array[j1].accPwd,accPwd1)==0));mainFrame();}//改密void change_pwd(){int j,k1;double acc_Number1;char acc_Pwd1[10],acc_Pwd2[10],acc_Pwd3[10];do{cout<<"请输入卡号:";cin>>acc_Number1;cout<<endl<<"请输入原密码:";cin>>acc_Pwd1;cout<<endl<<"请输入新密码:";cin>>acc_Pwd2;cout<<endl<<"请再次输入新密码:";cin>>acc_Pwd3;j=searchAccount(acc_Number1);if(j==-1||strcmp(array[j].accPwd,acc_Pwd1)!=0||strcmp(acc_Pwd2,acc_Pwd3)!=0){cout<<"密码或账号输入错误!或两次新密码输入不一致!"<<endl;cout<<"返回主菜单请按 1      重新输入 → 请按其他键。"<<endl;cin>>k1;if(k1==1){break;}else{continue;}}else{//检查账户是否正常if(check(j)==1){cout<<"该账户已销除!"<<endl;break;}else if(check(j)==2){cout<<"该账户已冻结!"<<endl;break;}else if(check==0){strcpy(array[j].accPwd,acc_Pwd2);cout<<"密码修改成功!按任意键返回!";fflush(stdin);getchar();break;}}}while(j==-1||strcmp(array[j].accPwd,acc_Pwd1)!=0||strcmp(acc_Pwd2,acc_Pwd3)!=0);mainFrame();}//检测账户是否冻结或消除//返回 1 已销户//返回 2 已冻结//返回 0 正常int check(int j){if(strcmp(array[j].flag,"已销户")==0)return 1;else if(strcmp(array[j].flag,"冻结")==0)return 2;else return 0;}//文件读入void read(){ifstream account("永恒银行客户.txt",ios::in);//是否成功读入int s1;if(!account){cerr<<"open error"<<endl;exit(1);}account>>size;for(s1=0;s1<size;++s1){account>>array[s1].accNumber;account>>array[s1].accName;account>>array[s1].accPwd;account>>array[s1].balance;account>>array[s1].flag;}account.close();}//文件保存void preserve(){ofstream account("永恒银行客户.txt",ios::out);//是否成功读入int s1;if(!account){cerr<<"open error"<<endl;exit(1);}account<<size<<endl;for(s1=0;s1<size;++s1){account<<array[s1].accNumber<<endl;account<<array[s1].accName<<endl;account<<array[s1].accPwd<<endl;account<<array[s1].balance<<endl;account<<array[s1].flag<<endl;}account.close();}

总算完成了!加文件的简易银行系统.

读书人网 >编程

热点推荐