最终完善的银行项目

#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);
//判断密码是否合法
bool isPassLegal(char pass[]);
//根据卡号查找卡在数组中的下标  
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[10];
 int errornum=0;
 for(errornum=0;errornum<3;errornum++)
 {
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>array[size].accPwd;
    cout<<"请再次输入密码:";
    cin>>pwd;
    //验证2次输入的密码是否一致
    if(strcmp(array[size].accPwd,pwd)==0)
       {
        //2次密码一致
        if(isPassLegal(pwd))
        {
            cout<<"请输入金额:";//密码是合法
            cin>>array[size].balance;
            //..
            strcpy(array[size].flag,"正常");
            //写卡号
            array[size].accNumber=autoCreament();
            printAccount(array[size]);
            size++;
            cout<<"开户成功,按任意键返回"<<endl;
            break;
        }
         else
        {
            cout<<"开户失败,密码必须是纯数字,并且是6-8位"<<endl;
           
        }
    }
       else
       {
        cout<<"开户失败,两次输入的密码不一致"<<endl;
    }
    }
   cout<<"按任意键返回主菜单"<<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<<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) 
                { 
     if(isPassLegal(pwd2))
     {
                    strcpy(array[pos].accPwd,pwd3); 
                    cout<<"改密成功!"<<endl; 
                    printAccount(array[pos]);//打印改密后卡的信息  
                    break;
     }else{
      cout<<"密码不合法,改密失败!"<<endl;
     }
                }else{ 
                    cout<<"您输入的密码有误,改密失败!"; 
                } 
            }else{ 
                cout<<"卡的状态异常,无法操作!"; 
            } 
        }else{ 
            cout<<"账号或密码输入错误!"<<endl; 
        } 
    } 
    cout<<"按任意键回主菜单:"; 
    fflush(stdin); 
    getchar(); 
    mainFrame(); 

bool isPassLegal(char pass[])
{
    bool flag=true;
    int len=strlen(pass),i;
    if(len<9&&len>=6){
        //满足6-8位
        for(i=0;i<len;i++)
         {
            if(pass[i]<48||pass[i]>57)
           {
                flag=false;
                break;
            }
        }
    }else
    {
        //不满足6-8位
        flag=false;
    }
    return flag;
}

你可能感兴趣的:(最终完善的银行项目)