年终项目--大银行又来了(让我想起了用E语言编程的日子)

/*
*程序的版权和版本声明部分:
*Copyright(c)2013,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2013年 12月 23 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: - -
*问题描述:银行来了
*程序输出:- -
*问题分析:
*算法设计:
*/
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include <conio.h>
using namespace std;
const string guanli="tcl";
const string  guanlipassword="12345";
struct accout
{
    int accoutnum;               //用户名
    char name[10];              //试用者姓名
    char indentity[18];         //身份证号
    char password[7];           //密码
    int state;                  //卡号状态
    double banlance;            //余额
    string fstate;
};
void menu();
void zhuchose();
bool password(char[]);
void openaccout();
bool indentity(char[]);
void zhuangtai(int);
void find();
int search(int);
int kahao=10000,state=1;
accout array[20000];
int size=0;
void cunkuan();
void qukuan();
void xiaohu();
bool ykahao(int);
bool zhangmiyizhi(int,char[]);
void zhuanzhang();
void gaimi();
int main()
{
    menu();
    return 0;
}
void menu()
{
    //菜单界面
    char guanliname[10];
    string password;
    int n=0,l=0;
    cout<<"                    +---------------------------------+"<<endl;
    cout<<"                    |                                 |"<<endl;
    cout<<"                    |                                 |"<<endl;
    cout<<"                    |   欢迎使用TCL储蓄综合业务平台   |"<<endl;
    cout<<"                    |                                 |"<<endl;
    cout<<"                    |                                 |"<<endl;
    cout<<"                    +---------------------------------+"<<endl;
    cout<<"请输入您的用户名:";
    while(cin>>guanliname&&guanliname!=guanli)
    {
        if(n<3)
        {
            cout<<"管理员账号错误!请重新输入:";
            n++;
        }
        if(n==3&&guanliname!=guanli)
        {
            exit(0);
        }
    }
    if(guanliname==guanli)
    {
        cout<<"请输入您的密码:";
    }
    while(cin>>password&&password!=guanlipassword)
    {
        if(l<3)
        {
            cout<<endl<<"管理员密码错误!请重新输入:";
            //getpass(password);
            l++;
        }
        if(l==3&&password!=guanlipassword)
        {
            exit(0);
        }
    }
    if(password==guanlipassword)
    {
        //管理身份正确,进入主选择界面
        zhuchose();
    }
}
void zhuchose()
{
    int chose;
    cout<<"                    +---------------------------------+"<<endl;
    cout<<"                    |     1.开户            2.查询    |"<<endl;
    cout<<"                    |     3.存款            4.取款    |"<<endl;
    cout<<"                    |     5.销户            6.改密    |"<<endl;
    cout<<"                    |     7.转账            0.退出    |"<<endl;
    cout<<"                    +---------------------------------+"<<endl;
    cout<<"请输入您的选择:";
    cin>>chose;
    switch(chose)
    {
    case 1:
        openaccout();
        break;
    case 2:
        find();
        break;
    case 3:
        cunkuan();
        break;
    case 4:
        qukuan();
        break;
    case 5:
        xiaohu();
        break;
    case 6:
        gaimi();
        break;
    case 7:
        zhuanzhang();
        break;
    case 0:
        exit(0);
    default:
        cout<<"输入有误,请重新输入:"<<endl;
    }
}
void openaccout()
{
    //开户界面
    char mima1[7],mima2[7],ident[19];
    bool flag=false;
    cout<<"请输入用户名密码:";

    while(cin>>mima1&&!password(mima1))
    {
        //控制密码规范
        cout<<"输入的密码不规范!请重新输入:";
    }
    cout<<"请再次输入用户名密码:";

    while(cin>>mima2&&!password(mima2))
    {
        cout<<"输入的密码不规范!请重新输入:";
    }
    if(strcmp(mima1,mima2)==0)
    {
        flag=true;
    }
    while(!flag)
    {
        //两次密码不一致,要求重新输入
        cout<<"两次密码输入不一致,请重新输入:";

        while(cin>>mima2&&!password(mima2))
        {
            cout<<"输入的密码不规范!请重新输入:";
        }
        if(strcmp(mima1,mima2)==0)
        {
            flag=true;
        }
    }
    if(flag)
    {
        strcpy(array[size].password,mima1);
        cout<<"密码设置成功!";
        array[size].accoutnum=kahao++;
        cout<<"请输入使用者姓名:";
        cin>>array[size].name;
        cout<<"请输入使用者身份证号:";
        while(cin>>ident&&!indentity(ident))
        {
            //控制身份证号规范
            cout<<"输入不规范,请重新输入用户身份证号:";
        }
        strcpy(array[size].indentity,ident);
        cout<<"请输入存入金额:";
        cin>>array[size].banlance;
        array[size].state=state;
        cout<<"开户成功!"<<endl;
        size++;
        zhuangtai(size-1);
        zhuchose();
    }
}
bool password(char a[])
{
    //验证密码是否规范
    bool flag=true;
    int i,l;
    l=strlen(a);
    if(l!=6)
    {
        flag=false;
    }
    for(i=0; i<6; ++i)
    {
        if(!(a[i]>='0'&&a[i]<='9'))
        {
            flag=false;
            break;
        }
    }
    return flag;
}
bool indentity(char a[])
{
    //验证身份证号是否正确
    bool flag=true;
    int i,l;
    l=strlen(a);
    if(l!=18)
    {
        flag=false;
    }
    if(!(a[17]>='0'&&a[17]<='9')&&a[17]!='x'&&a[17]!='X')
    {
        flag=false;
    }
    else
    {
        for(i=0; i<17; i++)
        {
            if(!(a[i]>='0'&&a[i]<='9'))
            {
                flag=false;
                break;
            }
        }
    }
    return flag;
}
void zhuangtai(int position)
{
    string fstate;
    switch(array[position].state)
    {
    case 1:
        fstate="正常";
        break;
    case 2:
        fstate="挂失";
        break;
    case 3:
        fstate="冻结";
        break;
    case 4:
        fstate="销户";
        break;
    default:
        break;
    }
    cout<<"+------------------------------------------------------------+"<<endl;
    cout<<"|  账  号  "<<"  姓  名  "<<"  证  件  号  码  "<<"  余  额  "<<"  状  态    |"<<endl;
    cout<<"|  "<<array[position].accoutnum<<setw(9)<<array[position].name<<"   "<<array[position].indentity<<"    "<<array[position].banlance<<"       "<<fstate<<"     |"<<endl;
    cout<<"+------------------------------------------------------------+"<<endl;
}
void find()
{
    //查询
    int fkahao;
    char fmima[7];
    int zhanghao=0,mim=0,position;
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
        zhanghao++;
        if(zhanghao==3)
        {
            exit(0);
        }
    }
    cout<<"请输入密码:";
    while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
    {
        cout<<"密码错误!请重新输入:";
        mim++;
        if(mim==3)
        {
            exit(0);
        }
    }
    position=search(fkahao);
    zhuangtai(position);
    zhuchose();
}
void cunkuan()
{
    //存款
    int money,z,fkahao;
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
    }
    z=search(fkahao);
    cout<<"请输入存款金额:";
    while(cin>>money&&money<0)
    {
        cout<<"输入金额有误,请重新输入:";
    }
    array[z].banlance+=money;
    cout<<"存款成功!"<<endl;
    zhuangtai(z);
    zhuchose();
}
void qukuan()
{
    //取款
    int i,money,fkahao,zhanghao=0,mim=0;
    char fmima[7];
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
        zhanghao++;
        if(zhanghao==3)
        {
            exit(0);
        }
    }
    cout<<"请输入密码:";
    while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
    {
        cout<<"密码错误!请重新输入:";
        mim++;
        if(mim==3)
        {
            exit(0);
        }
    }
    i=search(fkahao);
    cout<<"请输入取款金额:";
    while(cin>>money&&money>array[i].banlance)
    {
        cout<<"金额输入有误!请重新输入:";
    }
    array[i].banlance-=money;
    cout<<"取款成功!";
    zhuangtai(i);
    zhuchose();
}
void xiaohu()
{
    //销户,挂失等操作
    int i,j,fkahao,zhanghao=0,mim=0;
    char fmima[7],yes;
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
        cin>>fkahao;
        zhanghao++;
        if(zhanghao==3)
        {
            exit(0);
        }
    }
    cout<<"请输入密码:";
    while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
    {
        cout<<"密码错误!请重新输入:";
        mim++;
        if(mim==3)
        {
            exit(0);
        }
    }
    if(ykahao(fkahao))
    {
        i=search(fkahao);
        cout<<"请选择操作;"<<endl;
        cout<<"1.冻结"<<endl;
        cout<<"2.解冻"<<endl;
        cout<<"3.挂失"<<endl;
        cout<<"4.销户"<<endl;
        cin>>j;
        switch(j)
        {
        case 1:
            cout<<"确认冻结吗?y/Y确定,其他键取消:";
            cin>>yes;
            if(yes=='y'||yes=='Y')
            {
                array[i].state=3;
                cout<<"冻结成功!"<<endl;
            }
            break;
        case 2:
            cout<<"确认解冻吗?y/Y确定,其他键取消:";
            cin>>yes;
            if(yes=='y'||yes=='Y')
            {
                array[i].state=1;
                cout<<"解冻成功!"<<endl;
            }
            break;
        case 3:
            cout<<"确认挂失吗?y/Y确定,其他键取消:";
            cin>>yes;
            if(yes=='y'||yes=='Y')
            {
                array[i].state=2;
                cout<<"挂失成功!"<<endl;
            }
            break;
        case 4:
            cout<<"确认销户吗?y/Y确定,其他键取消:";
            cin>>yes;
            if(yes=='y'||yes=='Y')
            {
                array[i].state=4;
                cout<<"销户成功!"<<endl;
            }
            break;
        default:
            cout<<"输入有误!请重新输入:";
            cin>>j;
        }
    }
    zhuangtai(i);
    zhuchose();
}
void zhuanzhang()
{
    //转账
    int i=0,j=0,zhang,money,l,fkahao,zhanghao=0,mim=0;
    char fmima[7];
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
        cin>>fkahao;
        zhanghao++;
        if(zhanghao==3)
        {
            exit(0);
        }
    }
    cout<<"请输入密码:";
    while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
    {
        cout<<"密码错误!请重新输入:";
        mim++;
        if(mim==3)
        {
            exit(0);
        }
    }
    l=search(fkahao);
    cout<<"请输入要转入的账号:";
    while(cin>>zhang&&!ykahao(zhang))
    {
        cout<<"无此账号!请重新输入账号:";
        cin>>zhang;
        j++;
        if(j==3);
        {
            exit(0);
        }
    }
    cout<<"请输入转账金额:";
    while(cin>>money&&array[l].banlance<money)
    {
        cout<<"金额输入有误!请重新输入:";
        cin>>money;
        i++;
        if(i==3)
        {
            exit(0);
        }
    }
}
bool ykahao(int fkahao)
{
    //看是否有用户输入的卡号
    bool flag=false;
    int i;
    for(i=fkahao; i>=10000; i--)
    {
        if(fkahao==i)
        {
            flag=true;
            break;
        }
    }
    return flag;
}
bool zhangmiyizhi(int fkahao,char fmima[])
{
    //检查账号密码是否对应
    int i;
    bool flag=false;
    i=search(fkahao);
    if(strcmp(array[i].password,fmima)==0)
    {
        flag=true;
    }
    return flag;
}
void gaimi()
{
    bool flag=false;
    int fkahao,zhanghao=0,mim=0,i;
    char fmima[7],mima1[7],mima2[7];
    cout<<"请输入卡号:";
    while(cin>>fkahao&&!ykahao(fkahao))
    {
        cout<<"无此卡号!请重新输入:";
        zhanghao++;
        if(zhanghao==3)
        {
            exit(0);
        }
    }
    cout<<"请输入密码:";
    while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
    {
        cout<<"密码错误!请重新输入:";
        mim++;
        if(mim==3)
        {
            exit(0);
        }
    }
    i=search(fkahao);
    if(strcmp(array[i].password,fmima)==0)
    {
        cout<<"请输入新密码:";
        while(cin>>mima1&&!password(mima1))
        {
            //控制密码规范
            cout<<"输入的密码不规范!请重新输入:";
        }
        cout<<"请再次输入用户名密码:";
        while(cin>>mima2&&!password(mima2))
        {
            cout<<"输入的密码不规范!请重新输入:";
        }
        if(strcmp(mima1,mima2)==0)
        {
            flag=true;
        }
        while(!flag)
        {
            //两次密码不一致,要求重新输入
            cout<<"两次密码输入不一致,请重新输入:";

            while(cin>>mima2&&!password(mima2))
            {
                cout<<"输入的密码不规范!请重新输入:";
            }
            if(strcmp(mima1,mima2)==0)
            {
                flag=true;
            }
        }
        if(flag)
        {
            strcpy(array[size].password,mima1);
            cout<<"密码设置成功!";
        }
    }
}
int search(int fkahao)
{
    //查找卡号对应下标
    int position=-1,i;
    for(i=0; i<size; i++)
    {
        if(array[i].accoutnum==fkahao)
        {
            position=i;
            break;
        }
    }
    return position;
}


运行结果:

心得体会:写的较长,其中有bug没来得及修改,先凑合着看哈!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值