-模拟银行系统-

这是一个使用C++编写的模拟银行系统,具备开户、存款、转账、取款、查询、改密等基础操作,并扩展了注销账户、解挂、挂失和银行信息统计等功能。程序由main.cpp、bank.h、bank.cpp和work.cpp四个文件组成。
摘要由CSDN通过智能技术生成

本程序实现了简单的银行系统

据有开户、存款、转账、取款、查询、改密等基本功能

还加上了注销账户、解挂、挂失、银行信息统计等功能。



本程序共5个文件:



它们的代码是:


文件 main.cpp


#include <iostream>
#include "bank.h"
using namespace std;
/*主函数:*/
int main()
{
    cout<<endl;
    cout<<"      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       "<<endl;
    cout<<"      $ 您                                   的 $       "<<endl;
    cout<<"      $ 财      欢 迎 光 临 汉 宁 银 行      管 $       "<<endl;
    cout<<"      $ 富                                   家 $       "<<endl;
    cout<<"      $           一一一H N Y H一一一           $       "<<endl;
    cout<<"      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       "<<endl;
    cout<<endl;
    Bank b;
    if (pass())
    {
        b.work();
    }
    return 0;
}





文件 bank.h

#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <cstring>
using namespace std;
const int upNum=1000; //系统最多容纳的用户数
class Bank;
class User
{
public:
    void setUser(int acc, string nam, string adr, int idc, int pw, long double bal,int sta);
    void showName();
    void showBalance(string prompt); //显示余额,前面加上提示词prompt
    bool passwordIsRight();   //校验密码,输入的密码正确则返回true
    bool isNormalUser(); //存款、取款、转帐等功能,需要账户处于正常姿态,处于正常状态时返回true,其他情形返回false并提示
    friend class Bank;   //将Bank声明为友元类,方便其访问数据成员
private:
    int account; //账号
    int password;  //密码
    string name;   //用户名
    string address;  //地址
    int idcard;    //身份证信息
    long double balance;  //账户余额
    int status;  //状态 0-正常  1-挂失  2-销户
};

class Bank
{
public:
    Bank();  //开始前从文件中读数据,存在数组中
    ~Bank();   //程序结束前,将数组中的数据写入到文件中
    void work();  //业务驱动
    void openAccount(); //开户
    void cancelAccount();  //注销账户
    void save();   //存款
    void withdraw();   //取款
    void showAccount(); //查询余额
    void transferAccounts();  //转账
    void reportLoss();  //挂失
    void statistics();   //银行统计系统
    void cancelLoss();  //解除挂失
    void updatePassword();   //更改密码
    int getUser();  //输入账号查询用户,返回用户在对象数组中的下标
private:
    int N;  //实际的用户数目
    User users[upNum];  //User数组
};

int pass();  //业务员登录
int chooseInMenu(); //显示菜单并由业务员选择
int inputPassword();   //返回键盘输入的密码

#endif // BANK_H_INCLUDED





文件 bank.cpp

#include <iostream>
#include <fstream>
#include <cstdlib>
#include "bank.h"
#include <ctype.h>
using namespace std;


/*
功能:用构造函数读取文件中保存的业务数据
*/
Bank::Bank()
{
    ifstream infile("account.txt",ios::in);
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    int i=0;
    int acc;   //账号
    string nam;   //姓名
    string adr;
    int idc;
    int pw;   //密码
    long double bal;   //金额
    int sta;   //状态
    while(infile>>acc>>nam>>adr>>idc>>pw>>bal>>sta)   //当读取成功……
    {
        users[i].setUser(acc,nam,adr,idc,pw,bal,sta);
        i++;
    }
    N = i; //用静态数据成员
    infile.close();
}

/*
功能:用析构函数,在退出系统时,将数据保存到文件中
*/
Bank::~Bank()
{
    ofstream outfile("account.txt",ios::out);
    if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    int i;
    for(i=0; i<N; i++)
    {
        outfile<<users[i].account<<" ";
        outfile<<users[i].name<<" ";
        outfile<<users[i].address<<" ";
        outfile<<users[i].idcard<<" ";
        outfile<<users[i].password<<" ";
        outfile<<users[i].balance<<" ";
        outfile<<users[i].status<<" ";
    }
    outfile.close();
}

/*
功能:办理业务
*/
void Bank::work()
{
    int iChoice;   //用于选择系统功能
    //办理业务
    do
    {
        iChoice = chooseInMenu();  //从菜单中获得功能代码
        switch(iChoice)
        {
        case 1:
            openAccount(); //开户
            break;
        case 2:
            cancelAccount();  //注销账户
            break;
        case 3:
            save();  //存款
            break;
        case 4:
            withdraw();   //取款
            break;
        case 5:
            showAccount(); //查询余额
            break;
        case 6:
            transferAccounts();  //转账
            break;
        case 7:
            reportLoss();  //挂失
            break;
        case 8:
            cancelLoss();  //解除挂失
            break;
        case 9:
            updatePassword();   //更改密码
            break;
        case 10:
            statistics();
            break;
        case 0:
            cout<<"欢迎您再来. "<<endl;
        }
    }
    while(iChoice);
}

/*
功能:开户
说明:在进入系统时,在读入数据过程中,已经记录了用户数为N,在数组中对应下标为0~N-1
  开户时要增加一个用户,只要为下标为N的数组元素置值,并在成功之后令N++即可。
  账号由系统自动生成(10001+序号),保证其连续,这样在顺序增加的时候,就保证了其有序。
*/
void Bank::openAccount()
{
    if(N==upNum)
   
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值