银行系统(未完成)

来源:互联网 发布:淘宝产品优化 编辑:程序博客网 时间:2024/06/10 09:38

#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];     //卡的状态
};
struct login
{
    long accNum;
    char accPwd[10];
};
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中银行卡数量
int size=0;

//欢迎界面
void welcome();
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款
void deposit();
//取款
void withdramal();
//销户
void breakAccount();
//查询
void bidaccount();
//退出
void back();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);

int main()
{
    char loginName[20];
    char loginPwd[20];
    int i;
    //欢迎界面
    welcome();
    //..
    for(i=0;i<3;i++)
    {
        cout<<"请输入用户名:";
        cin>>loginName;
        cout<<"请输入密码:";
        cin>>loginPwd;
        if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)
        {
            mainFrame();
            break;
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }
    return 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:
            withdramal();
            break;
        case 4:
            breakAccount();
            break;
        case 5:
            bidaccount();
            break;
        case 6:
            back();
            break;
       default:
            break;
   }
}

void openAccount()
{
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>array[size].accPwd;
    cout<<"请输入金额:";
    cin>>array[size].balance;
    //..
    strcpy(array[size].flag,"正常");
    //写卡号
    array[size].accNumber=autoCreament();
    printAccount(array[size]);
    size++;
    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;
}

void deposit()
{
    long accNum;//存款的账号
    double money;//存款的金额
    int pos=-1;
    cout<<"请输入存款的账号:";
    cin>>accNum;
    cout<<"请输入存款金额:";
    cin>>money;
    pos=searchAccount(accNum);

    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请重新输入卡号"<<endl;
        //...
        deposit();
    }else{
        //展示下存款前卡的信息
        cout<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
         //展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
}
void withdramal()
{
    long accNum;
    double money;
    int pos,i;
    login a;
    char loginPwd[10];
    for(i=0;i<3;i++)
    {
        cout<<"请输入取款账号:";
        cin>>a.accNum;
        cout<<"请输入密码:";
        cin>>a.accPwd;
        pos=searchAccount(a.accNum);
        if(strcmp(a.accPwd,array[pos].accPwd)==0)
        {
            cout<<"请输入取款金额:";
            cin>>money;
            cout<<"取款前卡的信息:"<<endl;
            printAccount(array[pos]);
            //找到了该卡号所对应的卡
            array[pos].balance-=money;
            //展示存款后卡的信息
            cout<<"取款后卡的信息:"<<endl;
            printAccount(array[pos]);
            cout<<"取款成功,按任意键返回"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
            break;
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }

}
void breakAccount()
{
    long accNum;
    double money;
    int pos,i;
    login a;
    char loginPwd[10];
    for(i=0;i<3;i++)
    {
        cout<<"请输入销户账号:";
        cin>>a.accNum;
        cout<<"请输入密码:";
        cin>>a.accPwd;
        pos=searchAccount(a.accNum);
        if(strcmp(a.accPwd,array[pos].accPwd)==0)
        {
            strcpy(array[pos].accName,"无");
            strcpy(array[pos].accPwd,"无");
            strcpy(array[pos].flag,"无");
            array[pos].balance=0;
            cout<<"销户成功,按任意键返回"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
            break;
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }
}
void bidaccount()
{
    login bid;
    int i,pos=-1;
    cout<<"请输入查询的账号:";
    cin>>bid.accNum;
    cout<<"请输入账号密码:";
    cin>>bid.accPwd;
    pos=searchAccount(bid.accNum);
    for(i=0;i<3;i++)
    {
        if(strcmp(bid.accPwd,array[pos].accPwd)==0)
        {
            cout<<"卡的信息:"<<endl;
            printAccount(array[pos]);
            //找到了该卡号所对应的卡
            cout<<"按任意键返回"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }
}
void back()
{
    cout<<"               +----------------------------------+"<<endl;
    cout<<"               |------退出成功,欢迎下次光临------|"<<endl;
    cout<<"               +----------------------------------+"<<endl;
}