当前位置: 代码迷 >> 综合 >> 银行系统整理
  详细解决方案

银行系统整理

热度:88   发布时间:2024-01-22 04:46:01.0

 

#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];     //卡的状态
};
int size=0;
Account array[MAXACCOUNTNUMBER];
void work();
void openAccount();
void pid();
void deposit();
void withdrawal();
void transfer();
long autoCreament();
void printAccount(Account acc);
void closeAccount();
bool isPassLegal(char pass[]);
int main()
{
    int i;
char username[20];
char password[10];
for(i=0;i<3;i++)
{
    cout<<"请输入用户名:";
    cin>>username;
    cout<<endl;
        cout<<"请输入密码:";
    cin>>password;
    cout<<endl;
    if(strcmp(username,"admin")==0&&strcmp(password,"admin")==0)
    {
        work();
    }
    else
    {
        if(i<2)
        cout<<"用户名或密码输入错误,您还有"<<3-i<<"次机会,请重新输入!"<<endl;
        else
        {
            cout<<"您已三次输入错误的用户名或密码,系统将自动退出!"<<endl;
        }
        }
}
return 0;
}
void work()
{
    int order;
cout<<"            +----------------------------------------------------+"<<endl;
cout<<"               |                                              |"<<endl;
cout<<"                |                                            |"<<endl;
cout<<"                 |         欢迎使用储蓄业务综合平台         |"<<endl;
cout<<"              |                                                |"<<endl;
cout<<"           |                                                      |"<<endl;
cout<<"          |                                                        |"<<endl;
cout<<"        +------------------------------------------------------------+"<<endl;
cout<<endl;
cout<<endl;
    cout<<"                 +-----------------------------------------+"<<endl;
    cout<<"                       |----1.开户-2.查询-3.存款-----|"<<endl;
    cout<<"                     |------4.取款-5.销户-6.退出-------|"<<endl;
    cout<<"             +--------------------------------------------------+"<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"请选择业务(输入业务前的序号):";
    cin>>order;
cout<<endl;
    switch(order){
    case 1:
    openAccount();
    break;
    case 2:
    pid();
    break;
    case 3:
    deposit();
    break;
    case 4:
    withdrawal();
    break;
case 5:
closeAccount();
break;
    default:
cout<<"您输入的数字不正确,请输入用户名和密码重新选择业务!"<<endl;
    break;
    }
}
bool isPassLegal(char pass[])
{
    bool flag=true;
    int len=strlen(pass),i;
    if(len<7&&len>=6){
        //满足6位
        for(i=0;i<len;i++){
            if(pass[i]<48||pass[i]>57){
                flag=false;
                break;
            }
        }
    }else{
        //不满足6-8位
        flag=false;
    }
    return flag;
}




void openAccount()//1.开户
{
char pwd1[10],pwd2[10];
cout<<"请输入户主名:";
    cin>>array[size].accName;
cout<<endl;
    cout<<"请输入密码:";
    cin>>pwd1;
cout<<endl;
cout<<"请再次输入密码:";
cin>>pwd2;
cout<<endl;
if(strcmp(pwd1,pwd2)==0)
{
if(isPassLegal(pwd1))
{
strcpy(array[size].accPwd,pwd1);
    cout<<"请输入初次存款金额:";
    cin>>array[size].balance;
cout<<endl;
    //..
    strcpy(array[size].flag,"正常");
    //写卡号
    array[size].accNumber=autoCreament();
cout<<"开户后的信息是"<<endl;
    printAccount(array[size]);
    size++;
cout<<endl;
    cout<<"开户成功,请按任意键返回"<<endl;
    cout<<endl;
fflush(stdin);
    getchar();
work();
}
else
{
cout<<"您输入的密码不正确,密码必须是纯数字,并且是六位,请重新进行开户操作!"<<endl;
openAccount();
}
}
else
{
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;
}
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 pid()//2.查询
{
int size,accNumber;
cout<<"请输入账号:";
cin>>accNumber;
cout<<endl;
size=searchAccount(accNumber);
cout<<"您查询的账户信息为:"<<endl;
    printAccount(array[size]); 
cout<<endl;
cout<<"若显示的信息中账号为0则证明您输入的账号不存在,请重新选择查询业务进行查询!"<<endl;
cout<<"反之则查询成功,请按任意键返回"<<endl;
fflush(stdin);
    getchar();
    work();
}
void deposit()//3.存款
{
long accNum;//存款的账号
    double money;//存款的金额
    int pos;
    cout<<"请输入账号:";
    cin>>accNum;
cout<<endl;
    cout<<"请输入存款金额:";
    cin>>money;
cout<<endl;
pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"账号不存在,请重新输入账号"<<endl;
cout<<endl;//...
        deposit();
    }else{
        //展示下存款前卡的信息
        cout<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
         //展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,请按任意键返回"<<endl;
        fflush(stdin);
        getchar();
work();
    }
}
void withdrawal()//4.取款
   {
char key[7]; 
    int money,i,size,accNumber; 
    cout<<endl<<"请输入账号:"; 
    cin>>accNumber; 
cout<<endl;
 
    //寻找该卡号 
    size=searchAccount(accNumber); 
    cout<<endl<<"请输入密码:"; 
    for(i=0;i<6;i++) 
        { 
            cin>>key[i]; 
        } 
        key[6]='\0'; 
        if(strcmp(key,array[size].accPwd)==0) 
        { 
            cout<<endl<<"请输入取款金额:"; 
            cin>>money;
cout<<endl;
            //展示下存款前卡的信息 
             cout<<endl<<"取款前卡的信息:"<<endl; 
             printAccount(array[size]); 
             //找到了该卡号所对应的卡 
             if(array[size].balance<money) 
             { 
                cout<<endl<<"对不起,您的账户余额不足,无法取款!"<<endl; 
                cout<<endl<<"取款失败,请按任意键返回"<<endl; 
                fflush(stdin); 
                getchar(); 
                work(); 
             } 
             else 
             { 
                array[size].balance-=money; 
                //展示存款后卡的信息 
            cout<<endl<<"取款后卡的信息:"<<endl; 
            printAccount(array[size]); 
            cout<<endl<<"取款成功,请按任意键返回"<<endl; 
            fflush(stdin); 
            getchar(); 
            work(); 
             } 
 
         
        } 
        else 
        { 
            cout<<endl<<"账号或密码输入错误, 请重新输入!"<<endl;
withdrawal();
        } 
   }
void closeAccount()//5.销户
{
char key[7]; 
    int i,size,accNumber; 
    cout<<endl<<"请输入要销户的账号:"; 
    cin>>accNumber; 
cout<<endl;
     
    //寻找该卡号 
    size=searchAccount(accNumber); 
    cout<<endl<<"请输入密码:"; 
    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]);   
            array[size].balance=0; 
            strcpy(array[size].flag,"不存在"); 
            strcpy(array[size].accName,"不存在");  
            cout<<endl<<"销户成功,请按任意键返回"<<endl; 
             fflush(stdin); 
            getchar(); 
            work(); 
 
 
        } 
        else 
        { 
            cout<<"账号或密码错误,请重新输入账号和密码进行销户!"<<endl;
            fflush(stdin); 
            getchar();
closeAccount();
        } 
}


 

  相关解决方案