zoukankan      html  css  js  c++  java
  • *休假-银行储蓄系统

    银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。

    登录
      输入业务员用户名和密码。3次输入不正确,强制退出程序。
    基本要求
      可以只设一名业务员,用全局变量表示其用户名和密码,写在程序中。
    改进意见
      可以用一个文本文件保存多名业务员的信息。定义结构体表示业务员,定义该种类型的结构体数据,在程序开始执行时,读入业务员信息,以支持多名业务员登录。
      用文件保存密码时,一般不用“明文”,而要加密处理。


    系统菜单
      当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出。
    基本要求
      每次启动系统,都是从0用户开始办理业务
    改进意见
      储户的信息都保存在文件中,在处理业务前需要将信息读入。


    开户
    账号由系统自动分配
    确认密码和密码不同时要拒绝。
    开户后,账号状态为0-正常
      增加一个银行账户(银行卡)
      银行账户如下定义:
    struct Account
    {
        long accNumber;//卡号
        string accName;//户主
        string password;//密码
        double balance;//余额
        string identity;//身份证号
        int state;//状态 0:正常 -1:挂失 2:销户
    };
      设全局变量Number,表示第一张卡号
    long Number=10001;
      在开户时,新增账户的卡号,即为Number,并更改该值,以使下一个账户获得连续值。
    基本要求
      设银行只支持2000个账户,用下面的数组存储用户的信息
    Account array[2000];
    改进意见
    1、要求密码是6位数字字符,身份证号由18位数字字符构成,身份证号最后一位可以是x
    2、用静态数组太浪费空间,改用动态数组
    3、将用户信息改为链表,是更合适的做法
    4、关闭程序前,将数据写入文件,银行的业务信息得以保存。开始运行程序时,再将文件中的数据读入。保存密码时,可以考虑加密。
    5、新增账户的卡号,也可以保存在专门文件中。


    销户
      输入账号,确认后,将余额全部取完,并将状态state置为2-销户。
      办理销户的账号,其状态必须为“0-正常”(下同)。


    存款
      输入账号、金额,记录存款后的余额。


    取款
      输入账号、金额,记录取款后的余额。
      取款额不能超过余额。


    查询
      输入账号,显示账户信息。


    转账
      输入转出账号、金额、转入账户,记录转账后的余额。
      账户必须存在,扣除转出账户的金额,要与转入账户增加的金额相同。


    挂失
      输入账号,将状态改变为 1-挂失


    解挂
      输入账号,将状态为 1-挂失 的账户状态改为 0-正常


    改密
      用新密码替代旧密码。
      新密码必须与确认密码相同。

    想法:

    下午花费了大概3个小时完成了银行储蓄系统的大体,像密码显示为*、密码加密,使用动态数组或者是栈表这些高级的方式大多没有加入,以后的修改中将要加入。

    程序中还是使用的大量的函数,仅函数就使用的10多个,函数的使用想必会使代码思路更加清晰,节省空间,本来计划这300多行代码就足够了,可是写下来才发现写了600多行,效率还是个大问题。

    下面的一步是逐渐的去升级代码质量,能够更高效的运行。

    源代码:beat1.0

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:temp.cpp
     *作者:邵帅
     *完成时间:2015年1月28日
     *版本号:v1.0
    */
    #include<fstream>
    #include<iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    bool Homepage(void);//主页显示
    void Meunpage(void);//显示菜单
    int Openfile(void);//打开银行数据文件
    int Opensaleman(void);//打开用户名文件
    void SaveDate(int);//保存数据
    int Checksaleman(string);//查找用户名
    int FindAcc(string);//查找账户
    bool Checksalemanpass(string,int);//检验用户名密码是否正确
    bool Check(string);//检验输入的密码是否正确
    void AddNumber(int);//开户
    void DelNumber(void);//销户
    void AddMoney();//存款
    void DelMoney(void);//取款
    void ShowInfo(void);//查询
    void TransferMoney(void);//转账
    void LossReport(void);//挂失
    void SolutionLinked(void);//解挂
    void ChangePass(void);//改密
    struct Account
    {
        long accNumber;//卡号
        string accName;//户主
        string password;//密码
        double balance;//余额
        string identity;//身份证号
        int state;//状态 0:正常 -1:挂失 2:销户
    };
    struct Saleman
    {
        string name;
        string password;
    };
    Account array[2000];//账户数据
    Saleman sale[10];//业务员数据,最大允许10个业务员
    int main()
    {
        int choice,num;
        if (Homepage())
        {
            num=Openfile();
            while (1)
            {
                system("cls");
                Meunpage();
                cout<<"请输入操作指令:";
                cin>>choice;
                if (choice==0)
                    break;
                else if (choice==1)
                {
                    AddNumber(num);
                }
                else if (choice==2)
                {
                    DelNumber();
                    SaveDate(num);
                }
                else if (choice==3)
                {
                    AddMoney();
                    SaveDate(num);
                }
                else if (choice==4)
                {
                    DelMoney();
                    SaveDate(num);
                }
                else if (choice==5)
                {
                    ShowInfo();
                    SaveDate(num);
                }
                else if (choice==6)
                {
                    TransferMoney();
                    SaveDate(num);
                }
                else if (choice==7)
                {
                    LossReport();
                    SaveDate(num);
                }
                else if (choice==8)
                {
                    SolutionLinked();
                    SaveDate(num);
                }
                else if (choice==9)
                {
                    ChangePass();
                    SaveDate(num);
                }
            }
    
        }
        else
            exit(1);
    }
    int Openfile(void)
    {
        int sum=0;
        ifstream infile("BankDate.sav",ios::in);
        if (!infile)
        {
            cout<<"open error!";
            exit(1);
        }
        while (infile>>array[sum].accNumber)
        {
            infile>>array[sum].accName;
            infile>>array[sum].password;
            infile>>array[sum].balance;
            infile>>array[sum].identity;
            infile>>array[sum].state;
            sum++;
        }
        infile.close();
        //文件读取结束
        return sum;
    }
    bool Homepage(void)
    {
        // return true;
        cout<<"+-----------------------+"<<endl;
        cout<<"   欢迎光临Mayuko银行"<<endl;
        cout<<"+-----------------------+"<<endl;
        string name,password;
        int wrong=0,i;
        cout<<"请输入业务员用户名:";
        cin>>name;
        i=Checksaleman(name);
        while(1)
        {
            cout<<"请输入密码:";
            cin>>password;
            if (i>=0)
            {
    
                if(Checksalemanpass(password,i))
                {
                    cout<<"欢迎进入!"<<endl;
                    system("PAUSE");
                    return true;
                }
                else
                {
                    cout<<"密码输入有误,请重新输入!"<<endl;
                    wrong++;
                    if (wrong>2)
                    {
                        cout<<"密码输入错误超过3次,即将退出系统。";
                        exit(1);
                    }
                    continue;
                }
            }
            else
            {
                cout<<"用户名不存在!"<<endl;
                return false;
            }
        }
    }
    int Opensaleman(void)
    {
        int sum=0;
        ifstream infile("BankSaleman.sav",ios::in);
        if (!infile)
        {
            cout<<"open error!";
            exit(1);
        }
        while (infile>>sale[sum].name>>sale[sum].password)
            sum++;
        infile.close();
        //文件读取结束
        return sum;
    }
    void SaveDate(int sum)
    {
        ofstream outfile("BankDate.sav",ios::out);
        if (!outfile)
        {
            cout<<"open error!";
            exit(1);
        }
        int i;
        for (i=0; i<sum; i++)
        {
            outfile<<array[i].accNumber<<" "<<array[i].accName<<" "<<array[i].password<<" "<<array[i].balance<<" "<<array[i].identity<<" "<<array[i].state<<endl;
        }
        outfile.close();
    }
    int Checksaleman(string name)
    {
        int i,sum;
        sum=Opensaleman();
        for(i=0; i<sum; i++)
        {
            if (name==sale[i].name)
                return i;
        }
        return -1;
    }
    bool Checksalemanpass(string password,int n)
    {
        if (password==sale[n].password)
            return true;
        else
            return false;
    }
    
    void Meunpage(void)
    {
        cout<<"+--------------------------+"<<endl;
        cout<<"+ 1 开户   2 销户   3 存款 +"<<endl;
        cout<<"+ 4 取款   5 查询   6 转账 +"<<endl;
        cout<<"+ 7 挂失   8 解挂   9 改密 +"<<endl;
        cout<<"+                   0 退出 +"<<endl;
        cout<<"+--------------------------+"<<endl;
    
    }
    void AddNumber(int sum)//开户
    {
        string pass1,pass2,name;
        double money;
        int i;
        long acc;
        i=sum;
        acc=10001+sum;
        while(1)
        {
            cout<<"正在开户"<<endl;
            cout<<"帐号:"<<acc<<endl;
            cout<<"户主姓名:";
            cin>>name;
            cout<<"密码:";
            cin>>pass1;
            cout<<"确认密码:";
            cin>>pass2;
            cout<<"存入金额:";
            cin>>money;
            cout<<"身份证号:";
            cin>>array[i].identity;
            if (pass1==pass2)
            {
                array[i].accName=name;
                array[i].accNumber=acc;
                array[i].password=pass1;
                array[i].balance=money;
                array[i].state=0;
                ofstream outfile("BankDate.sav",ios::app);
                if (!outfile)
                {
                    cout<<"open error!";
                    exit(1);
                }
                outfile<<array[i].accNumber<<" "<<array[i].accName<<" "<<array[i].password<<" "<<array[i].balance<<" "<<array[i].identity<<" "<<array[i].state<<endl;
                outfile.close();
                cout<<"写入成功!"<<endl;
                system( "PAUSE ");
                //文件写入结束
                break;
            }
            else
            {
                cout<<"两次密码输入有误,请重新输入。"<<endl;
                continue;
            }
        }
    }
    void DelNumber(void)//销户
    {
        string pass;
        int i,acc,wrong=0;
        char in;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        cout<<"姓名:";
        cout<<array[i].accName<<endl;
        while (1)
        {
            cout<<"密码:";
            cin>>pass;
    
            if (pass==array[i].password)
            {
                cout<<"余额:"<<array[i].balance<<endl;
                cout<<"确认销户(Y/y)?";
                cin>>in;
                if (array[i].state==0)
                {
                    if (in=='Y' || in=='y')
                        array[i].state=2;
                    cout<<"取款"<<array[i].balance<<"元,销户成功!"<<endl;
                    system("PAUSE");
                    break;
    
                }
                else
                    cout<<"该账户已经销户或者被挂失!"<<endl;
            }
            else
            {
                wrong++;
                cout<<"密码输入有误,请重新输入!"<<endl;
                if (wrong>2)
                {
                    cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                    break;
                }
                continue;
            }
        }
    }
    void AddMoney(void)//存款
    {
        int acc,i;
        double money;
        cout<<"存款"<<endl;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        if (array[i].state==0)
        {
            cout<<"姓名:";
            cout<<array[i].accName<<endl;
            cout<<"存款额:";
            cin>>money;
            array[i].balance+=money;
            cout<<"现金金额共计"<<array[i].balance<<"元,存款成功!"<<endl;
            system( "PAUSE ");
        }
        else
            cout<<"该账户挂失或者销户,存款失败!"<<endl;
    }
    void DelMoney(void)//取款
    {
        int acc,i,wrong=0;
        double money;
        string pass;
        cout<<"取款"<<endl;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
    
        if (array[i].state==0)
        {
            cout<<"姓名:";
            cout<<array[i].accName<<endl;
            while(1)
            {
                cout<<"密码:";
                cin>>pass;
                if (array[i].password==pass)
                {
                    cout<<"取款额:";
                    cin>>money;
                    if (array[i].balance>=money)
                    {
                        array[i].balance-=money;
                        cout<<"现金金额剩余"<<array[i].balance<<"元,取款成功!"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                    {
                        cout<<"余额不足,取款失败!"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                }
                else
                {
                    wrong++;
                    cout<<"密码输入有误,请重新输入!"<<endl;
                    if (wrong>2)
                    {
                        cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                        continue;
                }
            }
        }
        else
        {
            cout<<"该账户挂失或者销户,存款失败!"<<endl;
        }
    }
    void ShowInfo(void)//查询
    {
        int acc,i,wrong=0;
        string pass;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        cout<<"姓名:";
        cout<<array[i].accName<<endl;
        while(1)
        {
            cout<<"密码:";
            cin>>pass;
            if (array[i].password==pass)
            {
                cout<<"余额:"<<array[i].balance<<endl;
                cout<<"当前状态:";
                switch (array[i].state)
                {
                case 1:
                    cout<<"挂失"<<endl;
                    break;
                case 0:
                    cout<<"正常"<<endl;
                    break;
                case 2:
                    cout<<"销户"<<endl;
                    break;
                }
                cout<<"身份证号:"<<array[i].identity<<endl;
                cout<<"查询完毕!"<<endl;
                system( "PAUSE ");
                break;
            }
            else
            {
                wrong++;
                cout<<"密码输入有误,请重新输入!"<<endl;
                if (wrong>2)
                {
                    cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                    system( "PAUSE ");
                    break;
                }
                else
                    continue;
            }
        }
    }
    void TransferMoney(void)//转账
    {
        int acc,i,wrong=0,j,acc2;
        double money;
        string pass;
        cout<<"转账"<<endl;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        if (array[i].state==0)
        {
            cout<<"姓名:";
            cout<<array[i].accName<<endl;
            while(1)
            {
                cout<<"密码:";
                cin>>pass;
                if (array[i].password==pass)
                {
                    cout<<"转账额(账户余额剩余"<<array[i].balance<<"元):";
                    cin>>money;
                    if (array[i].balance>=money)
                    {
                        cout<<"转入帐号:";
                        cin>>acc2;
                        j=acc2-10001;
                        array[i].balance-=money;
                        array[j].balance+=money;
                        cout<<"现金金额剩余"<<array[i].balance<<"元,转账成功!"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                    {
                        cout<<"余额不足,转账失败!"<<endl;
                        system( "PAUSE ");
                        break;
                    }
    
                }
                else
                {
                    wrong++;
                    cout<<"密码输入错误有误,请重新输入!"<<endl;
                    if (wrong>2)
                    {
                        cout<<"密码输入超过3次,即将退出系统。"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                        continue;
                }
            }
        }
        else
        {
            cout<<"该账户挂失或者销户,转账失败!"<<endl;
            system( "PAUSE ");
        }
    }
    void LossReport(void)//挂失
    {
        int acc,i,wrong=0,j,acc2;
        double money;
        string pass;
        cout<<"挂失"<<endl;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        while(1)
        {
            if (array[i].state==0)
            {
                cout<<"姓名:";
                cout<<array[i].accName<<endl;
                cout<<"密码:";
                cin>>pass;
                if (array[i].password==pass)
                {
                    array[i].state=1;
                    cout<<"挂失成功!"<<endl;
                    system( "PAUSE ");
                    break;
                }
                else
                {
                    wrong++;
                    cout<<"密码输入有误,请重新输入!"<<endl;
                    if (wrong>2)
                    {
                        cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                        continue;
                }
            }
            else
            {
                cout<<"该账户已经挂失或者销户,无需挂失!"<<endl;
                system( "PAUSE ");
                break;
            }
        }
    }
    void SolutionLinked(void)//解挂
    {
        int acc,i,wrong=0,j,acc2;
        string pass;
        double money;
        cout<<"解挂";
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        while(1)
        {
            if (array[i].state==1)
            {
                cout<<"姓名:";
                cout<<array[i].accName<<endl;
                cout<<"密码:";
                cin>>pass;
                if (array[i].password==pass)
                {
                    array[i].state=0;
                    cout<<"解挂成功!"<<endl;
                    system( "PAUSE ");
                    break;
                }
                else
                {
                    wrong++;
                    cout<<"密码输入有误,请重新输入!"<<endl;
                    if (wrong>2)
                    {
                        cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                        continue;
                }
            }
            else
            {
                cout<<"该账户已经正常或者销户,无需解挂!"<<endl;
                system( "PAUSE ");
                break;
            }
        }
    }
    void ChangePass(void)//改密
    {
        int acc,i,wrong=0,j,acc2;
        string pass,pass1,pass2;
        double money;
        cout<<"改密"<<endl;;
        cout<<"帐号:";
        cin>>acc;
        i=acc-10001;
        while(1)
        {
            if (array[i].state==0)
            {
                cout<<"姓名:";
                cout<<array[i].accName<<endl;
                cout<<"密码:";
                cin>>pass;
                if (array[i].password==pass)
                {
                    cout<<"新密码:";
                    cin>>pass1;
                    cout<<"确认密码:";
                    cin>>pass2;
                    if (pass1==pass2)
                    {
                        array[i].password=pass1;
                        cout<<"修改成功!"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                    {
                        cout<<"两次密码输入不一致,请重新输入。"<<endl;
                        system( "PAUSE ");
                        continue;
                    }
                }
                else
                {
                    wrong++;
                    cout<<"密码输入有误,请重新输入!"<<endl;
                    if (wrong>2)
                    {
                        cout<<"密码输入错误超过3次,即将退出系统。"<<endl;
                        system( "PAUSE ");
                        break;
                    }
                    else
                        continue;
                }
            }
            else
            {
                cout<<"该账户挂失或者销户,改密失败!"<<endl;
                system( "PAUSE ");
                break;
            }
        }
    }
    运行截图:

    当然,所有的信息保存在数据库中,这些数据库为:

    银行主数据库:

    业务员数据库:



    @ Mayuko

  • 相关阅读:
    css之background与第15周css补充内容叠用
    ios wkwebview didReceiveAuthenticationChallenge crash解决
    ios 版本更新提示-硬更新/软更新
    ios_UITextField-修改占位文字和光标的颜色,大小
    ios_UITextField右侧小圆叉
    ios_中将UITextField输入框设置为密码形式
    系统UISearchController详解
    iOS开发实战之搜索控制器UISearchController使用
    在iOS中如何正确的实现行间距与行高
    iOS alertController自带的输入框
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567561.html
Copyright © 2011-2022 走看看