有无奈有快乐的银行系统----My Love.

来源:互联网 发布:linux ssh修改文件内容 编辑:程序博客网 时间:2024/05/07 09:54
/*134--4班纪丽娜。银行系统。包括1.开户      2.存款3.取款      4.销户5.查询      6.改密7.转账      8.退出9.挂失      0.解挂功能!用户名jilina密码 123456!*/#include <iostream>#include <fstream>#include <string.h>#include <stdio.h>#include <stdlib.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];     //卡的状态};//银行中所有卡Account array[MAXACCOUNTNUMBER];int size=0;void welcome();//主界面void mainFrame();//生成银行中自增卡号long autoCreament();//开户void openAccount();//存款void deposit();//鉴定密码void chaxunmima(char Pwd[]);//输出指定卡的信息void printAccount(Account acc);//查询当前的余额void bid();//相应的取款void withdrawal();//改密void gai();//销户void closed();//根据卡号查找卡在数组中的下标int searchAccount(long accNumber);//转账void move();//保存数据:void Save();//登入文件void login();void read();  //读文件void missing();    //挂失void finding();   //解挂int panjine(double money);//不能存负的或取负的int main(){   //欢迎界面welcome();login();    return 0;}//欢迎界面void welcome(){     read();//读入文件!!    //移动到屏幕中间    cout<<'\t'<<'\t'<<'\t'<<"+----------------------------------+"<<endl;    cout<<'\t'<<'\t'<<'\t'<<"|                                  |"<<endl;    cout<<'\t'<<'\t'<<'\t'<<"|         欢迎登陆银行系统         |"<<endl;    cout<<'\t'<<'\t'<<'\t'<<"|                                  |"<<endl;    cout<<'\t'<<'\t'<<'\t'<<"+----------------------------------+"<<endl;}//主菜单void mainFrame(){    int order;cout<<endl;    cout<<'\t'<<"*-----------------------------*"<<endl;    cout<<'\t'<<"*     1.开户      2.存款      *"<<endl;    cout<<'\t'<<"*     3.取款      4.销户      *"<<endl;    cout<<'\t'<<"*     5.查询      6.改密      *"<<endl;    cout<<'\t'<<"*     7.转账      8.退出      *"<<endl;    cout<<'\t'<<"*     9.挂失      0.解挂      *"<<endl;    cout<<'\t'<<"*-----------------------------*"<<endl;cout<<endl<<"请输入操作指令: ";cin>>order;switch(order){case 1:openAccount();break;case 2:deposit();break;case 3:withdrawal();break;case 4:closed();break;case 5:bid();break;case 6:gai();        break;case 7:move();        break;case 8:cout<<endl<<"祝您心情愉快!"<<endl;cout<<endl<<"欢迎您下次使用!"<<endl;cout<<endl;exit(1);break;    case 9:        missing();break;    case 0:        finding();   //解挂();break;default:cout<<endl;cout<<"您输入的指令有误!  系统退出!"<<endl;cout<<endl;exit(1);break;}}//创建账户void openAccount(){    int pan;    cout<<endl<<"请输入户主:";    cin>>array[size].accName;fflush(stdin);    cout<<endl<<"请输入六位数字密码:";    cin>>array[size].accPwd;    fflush(stdin);    chaxunmima(array[size].accPwd);    cout<<endl<<"请输入开户金额:";    cin>>array[size].balance;    pan=panjine(array[size].balance);    if(pan==0)    {        cout<<"金额错误!";        mainFrame();    }    else    {    fflush(stdin);    //    strcpy(array[size].flag,"正常");    //写卡号    array[size].accNumber=autoCreament();    printAccount(array[size]);    Save();    size++;    cout<<endl<<"开户成功,按任意键返回"<<endl;    fflush(stdin);    getchar();    mainFrame();    }}//密码的鉴定void chaxunmima(char Pwd[]){    int i;    char a[7];if(strlen(Pwd)!=6){cout<<endl<<"不是六位数字密码!请重新输入!"<<endl;cout<<endl<<"密码错误,按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}else{cout<<endl<<"请您再次输入:";for(i=0;i<6;i++){cin>>a[i];}a[6]='\0';for(i=0;i<6;i++){if(a[i]<48||a[i]>57){cout<<endl<<"不是六位数字密码!请重新输入!"<<endl;cout<<endl<<"密码错误,按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}}if(strcmp(a,Pwd)==0){cout<<endl<<"创建密码完成!"<<endl;}else{cout<<endl<<"前后密码输入不一致,请重新操作!"<<endl;cout<<endl<<"密码错误,按任意键返回"<<endl;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<<"|----------------------------------------|"<<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&&strcmp(array[i].flag,"销户")!=0){            //找到了这张卡            pos=i;            break;        }    }    return pos;}//存款void deposit(){    long accNum;//存款的账号    double money;//存款的金额    int pos,pan;    cin.sync();    cout<<endl<<"请输入存款的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1)    {        //卡号有误        cout<<"卡号不存在,请重新操作"<<endl;        //...        deposit();    }else{    cout<<endl<<"请输入存款金额:";        cin>>money;        pan=panjine(money);    if(pan==0)    {        cout<<"存款金额错误!";        mainFrame();        }    else    {        //展示下存款前卡的信息        cout<<endl<<"存款前卡的信息:"<<endl;        printAccount(array[pos]);        //找到了该卡号所对应的卡        array[pos].balance+=money;//展示存款后卡的信息Save();        cout<<endl<<"存款后卡的信息:"<<endl;        printAccount(array[pos]);        cout<<endl<<"存款成功,按任意键返回"<<endl;        fflush(stdin);        getchar();        mainFrame();    }    }}//查询余额void bid(){int i;    char a[7];    int size,accNumber;    cout<<endl<<"请输入您要查询的卡号:";    cin>>accNumber;size=searchAccount(accNumber);if(size==-1){    cout<<"查无此卡!";    mainFrame();    }else{    cout<<endl<<"请输入您的密码:";for(i=0;i<6;i++){cin>>a[i];}a[6]='\0';if(strcmp(a,array[size].accPwd)==0){printAccount(array[size]);cout<<endl<<"查询成功,按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}}}//取款void withdrawal(){char key[7];int money,size,accNumber,pan1,i;cout<<endl<<"请输入您的卡号:";cin>>accNumber;                         //寻找该卡号size=searchAccount(accNumber);if(size==-1){    cout<<"查无此卡!";    mainFrame();    }else{    if(strcmp(array[size].flag,"挂失")==0){    cout<<"此卡已挂失,不允许取款!";    mainFrame();}else{    cout<<endl<<"请输入您的密码:";    fflush(stdin);for(i=0;i<6;i++){cin>>key[i];}key[6]='\0';    if(strcmp(key,array[size].accPwd)==0){    cout<<endl<<"请输入您要取款的金额:";cin>>money;pan1=panjine(money);if(pan1==0){        cout<<"取款金额错误!";mainFrame();}else{        //展示下存款前卡的信息cout<<endl<<"取款前卡的信息:"<<endl;printAccount(array[size]);//找到了该卡号所对应的卡if(array[size].balance<money){cout<<endl<<"您的账户余额不足,无法取款!"<<endl;cout<<endl<<"取款失败,按任意键返回!"<<endl;fflush(stdin);getchar();mainFrame();}else{array[size].balance-=money;Save();//展示存款后卡的信息cout<<endl<<"取款后卡的信息:"<<endl;printAccount(array[size]);cout<<endl<<"取款成功,按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}       }}else{cout<<endl<<"密码有误,请重新操作!"<<endl;withdrawal();    }   } }}//销户void closed(){char key[7];int i,size,accNumber;cout<<endl<<"请输入您要销户的卡号:";cin>>accNumber;   //寻找该卡号size=searchAccount(accNumber);if(size==-1){    cout<<"查无此卡!";    mainFrame();    }else{if(strcmp(array[size].flag,"挂失")==0){    cout<<"此卡已挂失不允许销户!";    mainFrame();    }else{    cout<<endl<<"请输入您的密码:";    fflush(stdin);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]);strcpy(array[size].flag,"销户");Save();cout<<endl<<"销户成功!"<<endl;printAccount(array[size]);cout<<"按任意键返回";fflush(stdin);getchar();mainFrame();   }else{cout<<endl<<"密码错误,请您慎重销户!"<<endl;cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();    }}}}void gai(){char key[7],pass[7];int i,shu,accNumber;cout<<endl<<"请输入您要改密的卡号:";cin>>accNumber;//寻找该卡号shu=searchAccount(accNumber);if(shu==-1){    cout<<"查无此卡!";    mainFrame();    }else{if(strcmp(array[shu].flag,"挂失")==0){cout<<"此卡已挂失不允许改密!";}else{    cout<<endl<<"请输入您的密码:";for(i=0;i<6;i++){cin>>key[i];}key[6]='\0';if(strcmp(key,array[shu].accPwd)==0){cout<<endl<<"请输入六位新密码:";for(i=0;i<6;i++){cin>>pass[i];}pass[6]='\0';cout<<endl<<"请再次输入六位新密码:";cin>>array[shu].accPwd;if(strcmp(pass,array[shu].accPwd)==0){    cout<<endl<<"修改密码成功!"<<endl;    Save();cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}else{cout<<endl<<"前后密码不一致!请重新操作!"<<endl;            cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}}else{cout<<endl<<"密码错误!请重新操作!"<<endl;cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}}}}void move(){double money;char a, key[7];int i,shu1,shu2,ren,accNumber,pan;cout<<endl<<"本银行不支持跨行转账!"<<endl;cout<<endl<<"确认要转账吗?Y or N ?"<<endl;fflush(stdin);a=getchar();if(a=='y'||a=='Y'){cout<<endl<<"请输入您的卡号:";cin>>accNumber;//寻找该卡号shu1=searchAccount(accNumber);if(shu1==-1){    cout<<"查无此卡!";    mainFrame();    }else{if(strcmp(array[shu1].flag,"挂失")==0){cout<<"此卡已挂失,不允许转账!!!";}else    {cout<<endl<<"请输入您的密码:";for(i=0;i<6;i++){cin>>key[i];}key[6]='\0';if(strcmp(key,array[shu1].accPwd)==0){cout<<endl<<"请输入您要转账的卡号:";cin>>ren;shu2=searchAccount(ren);if(shu2==-1){//卡号有误cout<<endl<<"卡号不存在,请重新操作"<<endl;//...cout<<endl<<"转账失败,按任意键返回!"<<endl;fflush(stdin);getchar();mainFrame();}else{cout<<endl<<"请输入转账的金额:";cin>>money;if(array[shu1].balance<money){cout<<endl<<"您的账户余额不足!无法转账!"<<endl;cout<<endl<<"转账失败,按任意键返回!"<<endl;fflush(stdin);getchar();mainFrame();}else{    pan=panjine(money);    if(pan==0)    {                    cout<<"金额输入错误";    mainFrame();    }    else    {                    array[shu1].balance-=money;array[shu2].balance+=money;Save();cout<<endl<<"转账完成!谢谢使用!"<<endl;cout<<endl<<"您当前的账户为:"<<endl;printAccount(array[shu1]);cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();    }} }}else{cout<<endl<<"密码不正确!请重新操作!"<<endl;cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();}    }}}else{cout<<endl<<"谢谢!请按任意键返回!"<<endl;fflush(stdin);getchar();mainFrame();    }}//保存文件void Save(){ofstream outfile("银行数据.txt",ios::out);if(!outfile){cout<<endl<<"open error!"<<endl;exit(1);}else{for(int i=0;i<=size;i++)                    //依次写入文件{    outfile<<array[i].accNumber<<"  "<<array[i].accName<<"  "<<array[i].accPwd<<"  "<<array[i].balance<<"  "<<array[i].flag<<endl;}}outfile.close();}void login(){    char bankname[10]="jilina";char bankpassword[10]="123456"; int  i;for(i=0;i<3;i++){cout<<"请输入用户名:";char name[10]={0};cin>>name;cout<<"请输入密码:";char password[10]={0};cin>>password;if (strcmp(bankname,name)!=0||strcmp(bankpassword,password)!=0){if(i==2){cout<<"您输入的错误次数太多,不允许继续操作!"<<endl;break;}cout<<"用户名或则密码错误请重新输入:" <<endl;}else{mainFrame();break;}}}void read(){   //读文件ifstream infile("银行数据.txt",ios::in);        //文件目标if(!infile){cerr<<endl<<"open error!"<<endl<<endl;exit(1);}    while(infile>>array[size].accNumber>>array[size].accName>>array[size].accPwd>>array[size].balance>>array[size].flag)                //依次检索文件{size++;}infile.close();}void missing(){char key[7];int i,size,accNumber;cout<<endl<<"请输入您要挂失的卡号:";cin>>accNumber;    //寻找该卡号size=searchAccount(accNumber);if(strcmp(array[size].flag,"挂失")==0){    cout<<"您已经挂失,不能再执行此操作!"<<endl;    mainFrame();}else{    cout<<endl<<"请输入您的密码:";    fflush(stdin);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]);strcpy(array[size].flag,"挂失");Save();cout<<"挂失成功!"<<endl;//Save();cout<<endl<<"挂失后卡的信息:"<<endl;printAccount(array[size]);cout<<"按任意键返回";fflush(stdin);getchar();mainFrame();   }else{cout<<endl<<"密码错误!"<<endl;cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();    }}}void finding(){char key[7];int i,size,accNumber;cout<<endl<<"请输入您要解挂的卡号:";cin>>accNumber;   //寻找该卡号size=searchAccount(accNumber);if(size==-1){    cout<<"查无此卡!";    mainFrame();    }else{if(strcmp(array[size].flag,"挂失")==0){    cout<<endl<<"请输入您的密码:";    fflush(stdin);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]);strcpy(array[size].flag,"正常");Save();cout<<"解挂成功!"<<endl;printAccount(array[size]);cout<<"按任意键返回";fflush(stdin);getchar();mainFrame();   }else{cout<<endl<<"密码错误!"<<endl;cout<<endl<<"按任意键返回"<<endl;fflush(stdin);getchar();mainFrame();    }  }else  {      cout<<"您的卡未挂失!";      cout<<"按任意键返回";      fflush(stdin);      getchar();      mainFrame();  }  }}int panjine(double money)//不能存负的或取负的{    int pan;    if(money<0)    {pan=0;}    else    {pan=1;}    return pan;}

0 0
原创粉丝点击