银行系统v1.1升级版(技术支持课)

/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作者:樊露露
* 完成日期:2012 年12月27日
* 版本号:v1.1
*
* 输入描述:无
* 问题描述:银行系统
* 程序输出:银行各种业务
* 问题分析:
* 算法设计:略
*/
#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 mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款(活期)
void deposit();
//存款(死期)
void Deposit();
//存款类型
void depositmodle();
//取款
void withdraw();
//查询
void search();
//修改密码
void updatePassword();
//转账
void transferAccounts();
//销户
void close();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
bool isPassLegal(char pass[]);
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;
    cout<<"+----------- V 1.1-----------------+"<<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<<"|-------7.转账---------------|"<<endl;
   cout<<"|-------8.修改密码-----------|"<<endl;
   cout<<"|-------9.退出---------------|"<<endl;
   cout<<"|----------------------------|"<<endl;
   cout<<"请输入操作指令"<<endl;
   cin>>order;
   switch(order){
       case 1:
            openAccount();
            break;
       case 2:
            deposit();
            break;
       case 3:
            Deposit();
            break;
       case 4:
            withdraw();
            break;
       case 5:
            close();
            break;
       case 6:
            search();
            break;
       case 7:
            transferAccounts();
            break;
       case 8:
            updatePassword();
            break;
       case 9:
            cout<<"|----------------------------------------|"<<endl;
            cout<<"|-------------您已成功退出---------------|"<<endl;
            cout<<"+----------------------------------------+"<<endl;
            cout<<"|-------------欢迎下次光临---------------|"<<endl;
            cout<<"|----------------------------------------|"<<endl;
            break;
       default:
            break;
   }
}

//开户
void openAccount()
{
    char pwd1[10],pwd2[10];
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>pwd1;
    cout<<"请再次输入密码:";
    cin>>pwd2;
    //验证2次输入的密码是否一致
    if(strcmp(pwd1,pwd2)==0){
        //2次密码一致
        if(isPassLegal(pwd1)){
            //密码是合法
			//
			strcpy(array[size].accPwd,pwd1);
            cout<<"请输入金额:";
            cin>>array[size].balance;
            //..
            strcpy(array[size].flag,"正常");
            //写卡号
            array[size].accNumber=autoCreament();
            printAccount(array[size]);
            size++;
            cout<<"开户成功,按任意键返回"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
        }else{
            cout<<"密码必须是6位纯数字"<<endl;
            openAccount();
        }
    }else{
        //2次输入的密码不一致
        cout<<"两次输入的密码不一致"<<endl;
        openAccount();
    }
}

//账号自加
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,i=0,num;
    cout<<"请输入存款的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请重新输入卡号"<<endl;
        //...
        deposit();
    }else{
        //展示下存款前卡的信息
        cout<<"请确认存款前的银行卡信息,若正确请按1,错误请按2:"<<endl;
        printAccount(array[pos]);
        cin>>num;
        if(num==1&&strcmp(array[pos].flag,"正常")==0){
        cout<<"请输入存款金额:";
        cin>>money;
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
         //展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
        }else{
            cout<<"此账户处于异常状态,禁止存款!";
            cout<<"按任意键退出:";
            fflush(stdin);
            getchar();
            mainFrame();
            cout<<"请输入操作指令:";
        }
    }
}
//存款(死期)
void Deposit()
{
    char arr[10];
    int t;
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>array[size].accPwd;
    cout<<"请再次输入密码:";
    cin>>arr;
    if(strcmp(array[size].accPwd,arr)==0){
        if(isPassLegal(arr)){
        cout<<"两次密码输入一致,请继续。"<<endl;
        depositmodle();
        cout<<"请您输入存款代号(1-6):";
        cin>>t;
        if(t>=7){
            cout<<"选择存款类型错误!请重新选择.";
            depositmodle();
        }else{
            cout<<"请存款输入金额:";
            cin>>array[size].balance;
            switch(t){
                case 1:
                    strcpy(array[size].flag,"3个月");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;

                case 2:
                    strcpy(array[size].flag,"6个月");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;

                case 3:
                    strcpy(array[size].flag,"一年");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;
                case 4:
                    strcpy(array[size].flag,"二年");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;

                case 5:
                    strcpy(array[size].flag,"三年");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;

                case 6:
                    strcpy(array[size].flag,"五年");
                    array[size].accNumber=autoCreament();
                    printAccount(array[size]);
                    break;

                default:
                    break;
            }
        }

        }
        else
        {
            cout<<"密码必须是纯六位的数字!"<<endl;
            openAccount();
        }
        //写卡号
        size++;
        cout<<"存款成功,按任意键返回"<<endl;
    }else{
        cout<<"两次密码输入不一致!请重新输入!"<<endl;
        openAccount();
    }
    fflush(stdin);
    getchar();
    mainFrame();
    cout<<"请输入操作指令:";
}
//取款
void withdraw()
{
    long account;
    char password[10];
    int pos,i;
    double money;
    cout<<"-----欢迎来到取款页面-----"<<endl;
    for(i=0;i<3;i++)
    {
        cout<<"请输入账号:";
        cin>>account;
        cout<<"请输入密码:";
        cin>>password;
        pos=searchAccount(account);
        if(strcmp(array[pos].flag,"正常")==0)
        {
            if(pos>=0&&strcmp(password,array[pos].accPwd)==0)
        {
            cout<<"请输入取款金额:";
            cin>>money;
            if(money<=array[pos].balance)
            {
                cout<<"取款前卡的信息:"<<endl;
                printAccount(array[pos]);
                array[pos].balance-=money;
                cout<<"取款后卡的信息:"<<endl;
                printAccount(array[pos]);
            }
            else
            {
                cout<<"卡内余额不足!按任意键返回!";
            }
                fflush(stdin);
                getchar();
                mainFrame();
                cout<<"请输入操作指令:";
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
        }
        else
        {
            cout<<"此账号处于异常状态,不能进行此操作!";
            cout<<"按任意键退出!";
            fflush(stdin);
                getchar();
                mainFrame();
                cout<<"请输入操作指令:";
        }
    }

}

//查询
void search(){
    long account;
    char password[10];
    int i,pos;
    cout<<"-----欢迎来到查询页面-----"<<endl;
    for(i=0;i<3;i++)
    {
        cout<<"请输入账号:";
        cin>>account;
        cout<<"请输入密码:";
        cin>>password;
        pos=searchAccount(account);
        if(strcmp(array[pos].flag,"正常")==0)
        {
            if(pos>=0&&strcmp(password,array[pos].accPwd)==0)
        {
            cout<<"您的银行卡信息为:"<<endl;
            printAccount(array[pos]);
            fflush(stdin);
            getchar();
            mainFrame();
            cout<<"请输入操作指令:";
        }
        else{
            cout<<"用户名或密码输入错误"<<endl;
        }
        }
        else
        {
            cout<<"此账号处于异常状态,不能进行此操作!";
            cout<<"按任意键退出!";
            fflush(stdin);
                getchar();
                mainFrame();
                cout<<"请输入操作指令:";
            cout<<"";
        }
    }
}

//存款类型
void depositmodle()
{
    cout<<"=====存款期限====="<<endl;
    cout<<"1.  3个月"<<endl;
    cout<<"2.  6个月"<<endl;
    cout<<"3.  一年"<<endl;
    cout<<"4.  二年"<<endl;
    cout<<"5.  三年"<<endl;
    cout<<"6.  五年"<<endl;
}
//修改密码
void updatePassword()
{
    long account;
    char password[10],pwd1[10],pwd2[10];
    int i,pos;
    cout<<"-----欢迎来到修改密码页面-----"<<endl;
    for(i=0;i<3;i++)
    {
        cout<<"请输入账号:";
        cin>>account;
        cout<<"请输入密码:";
        cin>>password;
        pos=searchAccount(account);
        if(strcmp(array[pos].flag,"正常")==0)
        {
            if(pos>=0&&strcmp(password,array[pos].accPwd)==0)
        {
            cout<<"请输入新密码:";
            cin>>pwd1;
            cout<<"请确认新密码:";
            cin>>pwd2;
            if(strcmp(pwd1,pwd2)==0){
                strcpy(array[pos].accPwd,pwd1);
                cout<<"密码修改成功!按任意键退出!"<<endl;
                printAccount(array[pos]);
                break;
            }
            else{
                cout<<"两次密码输入不一致,请重新输入。";
            }
        }
        else{
            cout<<"用户名或密码输入错误"<<endl;
        }
        }
        else
        {
            cout<<"此账号处于异常状态,不能进行此操作!";
            cout<<"按任意键退出!";
        }
    }

    fflush(stdin);
    getchar();
    mainFrame();
    cout<<"请输入操作指令:";
}
//转账
void transferAccounts()
{
    long Account1,Account2;
    char password[10];
    int pos1,pos2,i,num;
    double money;
    cout<<"请输入账号:";
    cin>>Account1;
    for(i=0;i<3;i++)
    {
        cout<<"请输入密码:";
        cin>>password;
        pos1=searchAccount(Account1);
        if(strcmp(array[pos1].flag,"正常")==0)
        {
            if(pos1>=0&&strcmp(password,array[pos1].accPwd)==0)
        {
            cout<<"请输入对方账号:";
            cin>>Account2;
            pos2=searchAccount(Account2);
            if(pos2==-1)
            {
                cout<<"对方账户不存在!请重新输入!";
            }
            else
            {
                cout<<"请确认对方账户是否正确,若正确请按1,否则按2:"<<endl;
                cout<<"|------------------------|"<<endl;
                cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(8)<<"状态"<<"|"<<endl;
                cout<<setiosflags(ios::left)<<"+------------------------+"<<endl;
                cout<<setiosflags(ios::left)<<"|"<<setw(8)<<array[pos2].accNumber<<setw(8)<<array[pos2].accName<<setw(8)<<array[pos2].flag<<"|"<<endl;
                cout<<"|------------------------|"<<endl;
                cin>>num;
                if(num==2)
                {
                    cout<<"按任意键退出!";
                    break;
                }
                else
                {
                    cout<<"请输入转账金额:";
                    cin>>money;
                    if(money<=array[pos1].balance)
                    {
                        array[pos1].balance-=money;
                        array[pos2].balance+=money;
                        cout<<"转账成功,按任意键退出!";
                        printAccount(array[pos1]);
                        break;
                    }
                    else
                    {
                        cout<<"您的余额不足,转账失败!按任意键退出!";
                        break;
                    }
                }
            }
        }
        else
        {
            cout<<"您输入密码或账号有误,请重新输入:";
        }
        }
        else
        {
            cout<<"此账号处于异常状态,不能进行此操作!";
            cout<<"按任意键退出!";
        }
    }
    fflush(stdin);
    getchar();
    mainFrame();
    cout<<"请输入操作指令:";
}
//销户
void close()
{
    long Account;
    char password[10];
    int pos,i;
    cout<<"请输入要销户的账号:";
    cin>>Account;
    pos=searchAccount(Account);
    for(i=0;i<3;i++)
    {
        cout<<"请输入密码:";
        cin>>password;
        if(pos>=0&&strcmp(password,array[pos].accPwd)==0)
        {
            array[pos].balance=0;
            strcpy(array[pos].flag,"销户");
            printAccount(array[pos]);
            break;
        }
        else
        {
            cout<<"密码或账号错误,请重新输入!";
        }
    }
    fflush(stdin);
    getchar();
    mainFrame();
    cout<<"请输入操作指令:";
}
bool isPassLegal(char pass[])
{
    bool flag=true;
    int len=strlen(pass),i;
    if(len==6){
        //满足6位
        for(i=0;i<len;i++){
            if(pass[i]<48||pass[i]>57){
                flag=false;
                break;
            }
        }
    }else{
        //不满足6位
        flag=false;
    }
    return flag;
}


 

 

银行系统v1.1升级版(技术支持课)_第1张图片

你可能感兴趣的:(银行系统v1.1升级版(技术支持课))