银行系统

来源:互联网 发布:眼窝怎么变深知乎 编辑:程序博客网 时间:2024/04/27 15:18
 opyright(c)2013,烟台大学计算机学院学生                                                                              *All rights reserved.                                                                              *文件名称:银行系统              *作者:杨飞                                                                      *完成日期:2013年12月27日                                                                              *版本号:v1.0                                                                              *对任务及求解方法的描述部分:银行系统         我的程序:        #include<iostream>   #include <iostream>#include <cstdio>#include <string.h>#include <conio.h>#include <fstream>#include <cstdlib>#include <iomanip>using namespace std;//.声明一个银行卡的类型struct Account{    long accNumber;  //.卡号    char accName[20];//户主    char password[7];    double balance;  //余额    char identity[19];//身份证号    int state;//.状态 0:正常  -1:挂失 -2:冻结 -3:销户};Account array[20000];//.银行可以开的卡的数量long Number=100001;//.表示卡号的初始值int size=0,sum,m;      //.n为要转账的卡的下标double balance;//.账户余额char accName;//.户名char identity;//.账户身份证号void welcome();//界面void openAccount();//.开户bool chazhao();//.查找void xianshu();//.显示数据void status();//.卡的状态void write();//.写入数据void read();//.读入数据void getpass(char pass[7]);//密码控制double cuankuan();//.存款double qukuan();//.取款void gaimi();//.修改密码void zhuanzhang();//.转账bool xiaohu();//.销户bool jiandentity(char a[]);//验证身份证void mainFrame();//.主界面int money;int money1;int money2;int main(){    welcome();    read();    mainFrame();    return 0;}void getpass(char pass[7]);void welcome(){   int m,n,i,p,h=0,z=0;    int a[]= {0,1,2,3,5,6,7,8}; //代表学工号    int b[]= {0,1,2,3,5,6,7,8}; //代表密码    cout<<"+-------------------------------+"<<endl;    cout<<"|                               |"<<endl;    cout<<"|                               | "<<endl;    cout<<"|   欢迎试用储蓄综合业务平台    |"<<endl;    cout<<"|                               |"<<endl;    cout<<"|                               |"<<endl;    cout<<"+-------------------------------+"<<endl;    cout<<"请输入您的学工号"<<endl;    cin>>m;    while(z<3)    {        for(i=0; i<8; i++)        {            if(a[i]==m)            {                cout<<"你已经进入银行系统"<<endl;                p=i;                h=1;                break;            }        }        if(h!=1)        {            cout<<"您有三次输入学工号机会,谢谢合作!"<<endl;            cout<<"你还有"<<2-z<<"次机会输入的学工号"<<endl;            cin>>m;        }        else            break;        z++;    }    cout<<"请输入您的密码"<<endl;    cin>>n;    for(i=0; i<3; i++)    {        if(b[p]!=n)        {            cout<<"你输入的密码错误,请重新输入:"<<endl;            cin>>n;        }        if(b[p]==n)        {            cout<<"你已经进入银行系统"<<endl;            break;        }    }    char zhang[7]= {'1','2','3','4','5','6'};    char password[7]= {'1','2','3','4','5','6'};    char pass10[7]=" ";    char name[7];    cout<<"请输入登录账户:"<<endl;     cin>>name;    while(true)    {        if (strcmp(zhang,name)!=0)        {            cout<<"登录账户不对!请从新输入:"<<endl;            cin>>name;        }        else        {            break;        }    }    cout<<"请输入登录密码:"<<endl;     getpass(pass10);    while(true)    {        if (strcmp(password,pass10)!=0)        {            cout<<"密码不对!请重新输入:"<<endl;            getpass(pass10);        }        else        {            break;        }    }}void mainFrame()//.主菜单{    int order;    cout<<"+----------------------------+"<<endl;    cout<<"| 开户 请按 1   存款 请按 2  |"<<endl;    cout<<"| 取款 请按 3   查询 请按 4  |"<<endl;    cout<<"| 转账 请按 5   改密 请按 6  |"<<endl;    cout<<"| 销户 请按 7   退出 请按 8  |"<<endl;    cout<<"+----------------------------+"<<endl;    cout<<"请输入操作指令"<<endl;    cin>>order;    switch(order)    {    case 1:        openAccount();        break;    case 2:        cuankuan();        break;    case 3:        qukuan();        break;    case 4:        if(chazhao()==0)        {            chazhao();        }        break;    case 5:        zhuanzhang();        break;    case 6:       gaimi();        break;    case 7:        xiaohu();        break;    case 8:        cout<<"+--------------------------+"<<endl;        cout<<"|      欢迎光临!!!         |"<<endl;        cout<<"|--------------------------|"<<endl;        exit(0);        break;    default:        break;    }}void getpass(char pass[7]);bool jianidentity(char a[]);//验证身份证void openAccount()//.开户{    char pass1[7]=" ";    char pass2[7]=" ";    cout<<"请输入户主姓名:"<<endl;    cin>>array[size].accName;    array[size].accNumber=Number++;    while(true)    {        cout<<"请输入密码:"<<endl;        getpass(pass1);        cout<<"请再次输入密码:"<<endl;        getpass(pass2);        if (strcmp(pass1,pass2)!=0)        {            cout<<"两次密码不同!请从新输入!"<<endl;        }        else        {            strcpy(array[size].password,pass1);            break;        }    }    cout<<"请输入身份证号码:"<<endl;    cin>>array[size].identity;     while(!jianidentity(array[size].identity))//检验身份证    {        cout<<"输入不规范,请重新输入用户身份证号:"<<endl;        cin>>array[size].identity;    }    cout<<"请输入金额:"<<endl;    cin>>array[size].balance;    array[size].state=0;    cout<<"+------------------------------------------------------+"<<endl;    cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(22)<<"身份证号码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl;    cout<<"|------------------------------------------------------|"<<endl;    cout<<setiosflags(ios::left)<<"+"<<setw(8)<<array[size].accNumber<<setw(8)<<array[size].accName<<setw(22)<<setiosflags(ios::fixed)<<setprecision(2)<<array[size].identity<<setw(8)<<array[size].balance<<"";    switch(array[size].state)    {    case 0:        cout<<" 正常"<<endl;        break;    case -1:        cout<<"挂失"<<endl;        break;    case -2:        cout<<"冻结"<<endl;        break;    case -3:        cout<<"销户"<<endl;        break;    default:        break;    }    cout<<"+------------------------------------------------------+"<<endl;    cout<<"开户成功"<<endl;    size++;    write();    cout<<"请输入任意键返回主菜单..."<<endl;    fflush(stdin);    getchar();    mainFrame();}bool chazhao()//.找卡利用二分法查找{    int mid,max=Number,min=100001,num;    char password1[7];    cout<<"请输入要您查询的卡号:"<<endl;    cin>>num;    sum=num-100001;    if(num>max||num<min)    {        cout<<"该卡并不存在!"<<endl;        return false;    }    else    {        while(1)        {            mid=(max+min)/2;            if(num==mid)            {                sum=num-100001;                while(true)                {                    cout<<"请输入密码:"<<endl;                    cin>>password1;                    if(strcmp(password1,array[sum].password)!=0)                    {                        cout<<"密码错误,请重新输入!"<<endl;                    }                    else                        break;                }                xianshu();                return true;                break;            }            else            {                if(num<mid)                {                    max=mid-1;                }                else                {                    min=mid+1;                }            }        }    }}void xianshu(){    cout<<"+--------------------------------------------------------+"<<endl;    cout<<setiosflags(ios::left)<<"|"<<setw(10)<<"卡号"<<setw(10)<<"户主"<<setw(24)<<"身份证号码"<<setw(10)<<"金额"<<setw(10)<<"状态"<<"|"<<endl;    cout<<"|--------------------------------------------------------|"<<endl;    cout<<setiosflags(ios::left)<<"+"<<setw(10)<<array[sum].accNumber<<setw(10)<<array[sum].accName<<setw(24)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(10)<<array[sum].balance<<"";    status();    cout<<"+--------------------------------------------------------+"<<endl;    cout<<"请输入任意键返回主菜单..."<<endl;    fflush(stdin);    getchar();    mainFrame();}void status()//.卡的状态{    switch(array[sum].state)    {    case 0:        cout<<"正常"<<endl;        break;    case -1:        cout<<"挂失"<<endl;        break;    case -2:        cout<<"冻结"<<endl;        break;    case -3:        cout<<"销户"<<endl;        break;    default:        break;    }}double cuankuan()//.存款{    int accNumber,max=Number,min=100001;    cout<<"请输入银行卡号:"<<endl;    cin>>accNumber;    while(accNumber<min||accNumber>max)    {        cout<<"卡号错误!请重新输入:"<<endl;        cin>>accNumber;    }    sum=accNumber-100001;    if(array[sum].state==0)    {        cout<<"********************************************************"<<endl;        cout<<"+------------------------------------------------------+"<<endl;        cout<<setiosflags(ios::left)<<"|"<<setw(10)<<"卡号"<<setw(10)<<"户主"<<setw(24)<<"身份证号码"<<setw(10)<<"金额"<<setw(10)<<"状态"<<"|"<<endl;        cout<<"|------------------------------------------------------|"<<endl;        cout<<setiosflags(ios::left)<<"|"<<setw(10)<<array[sum].accNumber<<setw(10)<<array[sum].accName<<setw(24)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(10)<<array[sum].balance<<"";        status();        cout<<"+------------------------------------------------------+"<<endl;        cout<<"请输入要存的金额:"<<endl;        cin>>money1;        if(money1<0)        {            cout<<"请正确输入要存的金额:"<<endl;            cin>>money1;        }        if(money1>=0)        {            array[sum].balance=array[sum].balance+money1;        }    }    else    {        cout<<"该卡处于";        status();//卡的状态        mainFrame();    }    cout<<"+----------------------------------+"<<endl;    cout<<"+        账户余额为                +"<<endl;    cout<<"+----------------------------------+"<<endl;    cout<<"+        *"<<array[sum].balance<<"*                  +"<<endl;    cout<<"+----------------------------------+"<<endl;    write();    cout<<"请输入任意键返回主菜单..."<<endl;    fflush(stdin);    getchar();    mainFrame();}void getpass(char pass[7]);double qukuan()//.取款{    int accnumber,max=Number,min=100001;    char mima[7]=" ";    cout<<"输入银行账号:"<<endl;    cin>>accnumber;    while(accnumber<min||accnumber>max)    {        cout<<"卡号错误!请重新输入:"<<endl;        cin>>accnumber;    }    sum=accnumber-100001;    if(array[sum].state==0)    {        while(true)        {            cout<<"请输入密码:"<<endl;             getpass(mima);            if(strcmp(mima,array[sum].password)!=0)            {                cout<<"密码错误,请重新输入!"<<endl;            }            else                break;        }    }    else    {        cout<<"该卡处于";        status();//.卡的状态        mainFrame();    }    cout<<"请输入要取的金额:"<<endl;    cin>>money2;    while(true)    {        if(array[sum].balance<money2||money2<0)        {            cout<<"请正确输入的金额:"<<endl;            cin>>money2;        }        else            break;    }    cout<<"+----------------------------------+"<<endl;    cout<<"+        "<<"您共取"<<money2<<"元"<<"            +"<<endl;    cout<<"+----------------------------------+"<<endl;    array[sum].balance=array[sum].balance-money2;    write();    cout<<"+----------------------------------+"<<endl;    cout<<"+         账户余额为               +"<<endl;    cout<<"+----------------------------------+"<<endl;    cout<<"+         "<<array[sum].balance<<"                     +"<<endl;    cout<<"+----------------------------------+"<<endl;    cout<<"请输入任意键返回主菜单"<<endl;    fflush(stdin);    getchar();    mainFrame();}void getpass(char pass[7]);bool xiaohu()//.注销{    int mid,max=Number,min=100001,num;    char password1[7]=" ";    char password2[7]=" ";    cout<<"请输入卡号:"<<endl;    cin>>num;    sum=num-100001;    if(num>max||num<min)    {        cout<<"该卡没有使用!"<<endl;        return false;    }    else    {        while(1)        {            mid=(max+min)/2;            if(num==mid)            {                sum=num-100001;                while(true)                {                    cout<<"请输入密码:"<<endl;                      getpass(password1);                    if(strcmp(password1,array[sum].password)!=0)                    {                        cout<<"密码错误,请重新输入!"<<endl;                    }                    else                        break;                }                cout<<"+------------------------------------------------------+"<<endl;                cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(22)<<"身份证号码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl;                cout<<"+------------------------------------------------------+"<<endl;                cout<<setiosflags(ios::left)<<"+"<<setw(8)<<array[sum].accNumber<<setw(8)<<array[sum].accName<<setw(22)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(8)<<array[sum].balance<<"";                status();                cout<<"+------------------------------------------------------+"<<endl;                while(true)                {                    cout<<"请再次输入密码:"<<endl;                    getpass(password2);                    if(strcmp(password2,array[sum].password)!=0)                    {                        cout<<"密码错误,请重新输入!"<<endl;                    }                    else                        break;                }                cout<<"挂失请按 0 ,冻结请按 1 ,销户请按 2 正常请按 3 !"<<endl;                cin>>array[sum].state;                switch(array[sum].state)                {                case 0:                    array[sum].state=-1;                    break;                case 1:                    array[sum].state=-2;                    break;                case 2:                    array[sum].balance=0;                    array[sum].state=-3;                    break;                case 3:                    array[sum].state=0;                    break;                default :                    break;                }                write();                cout<<"操作成功!"<<endl;                cout<<"请输入任意键返回主菜单..."<<endl;                fflush(stdin);                getchar();                mainFrame();                return true;                break;            }            else            {                if(num<mid)                {                    max=mid-1;                }                else                {                    min=mid+1;                }            }        }    }}void write(){    int i;    ofstream outfile("D:\\yangfei.txt",ios::out);    if(!outfile)    {        cout<<"文件无法打开!";        exit(1);    }    else    {        for(i=0; i<size; i++)        {            outfile<<array[i].accNumber<<'\t'<<array[i].accName<<'\t'<<array[i].identity<<'\t'<<array[i].password<<'\t'<<array[i].balance<<'\t'<<array[i].state<<'\t'<<endl;        }        outfile.close();    }}void read()//.把储户信息从文件中读到结构体数组中{    ifstream infile("D:\\yangfei.txt",ios::in);    if(!infile)    {        cout<<"文件无法打开!";        exit(1);    }    else    {        while(infile>>array[size].accNumber>>array[size].accName>>array[size].identity>>array[size].password>>array[size].balance>>array[size].state)        {            size++;        }        Number=array[size-1].accNumber+1;        infile.close();    }}void getpass(char pass[7]);void gaimi()//.修改密码{    int accnumber,max=Number,min=100001;    char mima1[7]=" ";    char mima2[7]=" ";    char mima3[7]=" ";    cout<<"输入银行账号:"<<endl;    cin>>accnumber;    while(accnumber<min||accnumber>max)    {        cout<<"卡号错误!请重新输入:"<<endl;        cin>>accnumber;    }    sum=accnumber-100001;    if(array[sum].state==0)    {        while(true)        {            cout<<"请输入密码:"<<endl;             getpass(mima1);            if(strcmp(mima1,array[sum].password)!=0)            {                cout<<"密码错误,请重新输入!"<<endl;            }            else                break;        }    }    else    {        cout<<"该卡处于";        status();//.卡的状态        mainFrame();    }    while(true)    {        cout<<"请输入新密码:"<<endl;        getpass(mima2);        cout<<"请再次输入新密码:"<<endl;        getpass(mima3);        if (strcmp(mima2,mima3)!=0)        {            cout<<"两次密码不同,请重新输入:"<<endl;        }        else        {            strcpy(array[sum].password,mima2);            cout<<"改密成功!"<<endl;            write();            break;        }    }    cout<<"请输入任意键返回主菜单..."<<endl;    fflush(stdin);    getchar();    mainFrame();}void zhuanzhang()//.转账{    int accNumber_1,accNumber_2;    int min=100001,max=Number;    char pass_1[7],pass_2[7];    cout<<"请输入您的卡号:"<<endl;    cin>>accNumber_1;    while(accNumber_1<min||accNumber_1>max)    {        cout<<"该账户不存在,请重新输入:"<<endl;        cin>>accNumber_1;    }    sum=accNumber_1-100001;    if(array[sum].state==0)    {        while(true)        {            cout<<"请输入密码:"<<endl;            cin>>pass_1;            if(strcmp(array[sum].password,pass_1)!=0)            {                cout<<"密码错误,请重新输入:"<<endl;            }            else            break;        }    }    cout<<"请输入您要转账的卡号:"<<endl;    cin>>accNumber_2;     while(accNumber_2<min||accNumber_2>max)    {        cout<<"该账户不存在,请重新输入:"<<endl;        cin>>accNumber_2;    }    m=accNumber_2-100001;    if(array[m].state==0)    {        while(true)        {            cout<<"请输入密码:"<<endl;            cin>>pass_2;            if(strcmp(array[m].password,pass_2)!=0)            {                cout<<"密码错误,请重新输入:"<<endl;            }            else            break;        }    }    cout<<"输入要转账的金额:"<<endl;    cin>>money;    while(true)    {        if(array[sum].balance<money||money<0)        {            cout<<"请正确输入要转账的金额:"<<endl;            cin>>money;        }        else        break;    }    cout<<"+----------------------------------+"<<endl;    cout<<"+        "<<"您本次共转账"<<money<<"元"<<"            +"<<endl;    cout<<"+----------------------------------+"<<endl;    array[sum].balance=array[sum].balance-money;    array[m].balance=array[m].balance+money;    write();   cout<<"+----------------------------------+"<<endl;    cout<<"+         账户余额为               +"<<endl;    cout<<"+----------------------------------+"<<endl;    cout<<"+         "<<array[sum].balance<<"                     +"<<endl;    cout<<"+----------------------------------+"<<endl;    cout<<"请输入任意键返回主菜单..."<<endl;    fflush(stdin);    getchar();    mainFrame();}void getpass(char pass[7]){    char ch;    int i=0;    while(i<6)    {        ch=getch();        if(ch>='0'&&ch<='9')        {            putch('*');            pass[i]=ch;        }        i++;    }}bool jianidentity(char a[])//验证身份证{    bool flag=true;    int i,q;    q=strlen(a);    if(q!=18)        flag=false;    else    {        for(i=0; i<17; i++)        {            if(!((a[i]>='0')&&(a[i]<='9')))            {                flag=false;                break;            }        }        if((a[17]>='0'&&a[17]<='9')||(a[17]!='x'))        {            flag=true;        }    }    return flag;}

0 0
原创粉丝点击