银行系统测试版

<pre class="cpp" name="code">/*********************************************************** 
* 版权所有 (C)2015,晓凡. 
* 
* 文件名称:main.cpp 
* 文件标识:无 
* 内容摘要:该代码为主函数 
* 其它说明:无 
* 当前版本: V1.0 
* 作   者:李晓凡 
* 完成日期: 20150715 
* 
* 修改记录1: 
* 修改日期: 20150715 
* 版本号: V1.0 
* 修改人: 李晓凡 
* 修改内容:创建 
**********************************************************/  

#include <iostream>
#include "stdio.h"
#include "stdlib.h"
#include "Cstring"
#include "fstream"
#include "bank.h"
using namespace std;
//主函数什么都没有哦 构造和析构很强大的
int main()
{
}

 
/*********************************************************** 
* 版权所有 (C)2015,晓凡. 
* 
* 文件名称:bank.h 
* 文件标识:无 
* 内容摘要:该代码为类的声明和函数的调用 
* 其它说明:无 
* 当前版本: V1.0 
* 作   者:李晓凡 
* 完成日期: 20150715 
* 
* 修改记录1: 
* 修改日期: 20150715 
* 版本号: V1.0 
* 修改人: 李晓凡 
* 修改内容:创建 
**********************************************************/  
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <iostream>
#include "stdio.h"
#include "stdlib.h"
#include "Cstring"
#include "fstream"
using namespace std;
void outsalefile();
void outusefile();
bool IDstate();    //判断状态
void Password();    //用户登陆认证
void Point_out();   //展示功能
void Choose();     //选择功能
void Open();      //开户
void Cancel();    //销户
void Save();    //存钱
void Draw();    //取钱
void Display();   //展示信息
void Transfer();  //转账
void Report_loss();   //挂失
void Hanging_solution();   //解挂
void Transkey();     //改密
void Stop();  //退出
class Yunxing   //保存人数以及输出文件类
{
public:
    Yunxing();
    ~Yunxing()
    {
        outsalefile();
        outusefile();
    }
    int person;//用户人数
};
class Bank   //银行用户类
{
public:
    long int Numb;
    long int Key;
    string Name;
    string IDcard;
    string Address;
    double Dollar;
    int state;//0:正常;1:挂失;已销户:2;
};

#endif // BANK_H_INCLUDED

/***********************************************************
* 版权所有 (C)2015,晓凡.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为UserData类的声明和Admin结构体的声明
* 其它说明:无
* 当前版本: V1.0
* 作   者:李晓凡
* 完成日期: 20150715
*
* 修改记录1:
* 修改日期: 20150715
* 版本号: V1.0
* 修改人: 李晓凡
* 修改内容:创建
**********************************************************/
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include "bank.h"
using namespace std;
Bank bank[1000];   //声明 1000用户 未用动态数组
long int numb;     //定义一个用户号码 这样一来可以改变此变量来改变相同号码的账号信息,不用改变用户组信息
/*********************************************************
 * 功能描述:Yunxing的构造函数 读取文件 运行登陆界面函数
 * 输入参数:j:选择开户还是登陆
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
Yunxing::Yunxing()  //构造函数,负责运行开始初始化
{
    ifstream infile("Banksaleman.txt",ios::in);  //以读入的形式打开Banksaleman.txt文件
    if(!infile)   //如果不能读取,强制退出
    {
        cout<<"open 1error"<<endl;
        exit(1);
    }
    infile>>person;   //将文件里的用户总人数信息读入到程序
    infile.close();//取消读取联系


    ifstream inPfile("Bankman.txt",ios::in);//以读入的形式打开Bankman.txt文件
    if(!inPfile)  //不能打开文件,强制退出
    {
        cout<<"open 2error"<<endl;
        exit(1);
    }
    for(int i=0; i<person; i++)  //读取到总人数多少,便读入多少人的信息
    {
        inPfile>>bank[i].Numb>>bank[i].Key>>bank[i].Name>>bank[i].IDcard>>bank[i].Address>>bank[i].Dollar>>bank[i].state;
    }
    inPfile.close();
    int j;
    cout<<"请选择 0 登录用户 ,1 开户"<<endl;
    cin>>j;
    if(j==0)
        Password();  //选择登陆
    else if(j==1)  //选择开户
        Open();
}
Yunxing sale;        //声明一个总人数对象
/*********************************************************
 * 功能描述:用于输出用户人数到文件的函数
 * 输入参数:无
 * 输出参数:sale.person
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void outsalefile()  //开始程序输出信息到文件
{
    ofstream outfile("Banksaleman.txt",ios::out);//读取Banksaleman.txt文件
    if(!outfile)    //如果打开失败,强制退出
    {
        cout<<"open error"<<endl;
        exit(1);
    }
    outfile<<sale.person;   //把总用户人数信息读入到文件
    outfile.close();  //关闭此文件


}
/*********************************************************
 * 功能描述:用于输出用户信息的函数
 * 输入参数:无
 * 输出参数:用户信息
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void  outusefile()
{
    ofstream outfile("Bankman.txt",ios::out);  //以输出的形式打开用户文件
    if(!outfile) //如果不能打开,强制退出
    {
        cout<<"open error"<<endl;
        exit(1);
    }
    for(int i=0; i<sale.person; i++)  //有多少人,输出多少人的信息
    {
        outfile<<bank[i].Numb<<" "<<bank[i].Key<<" "<<bank[i].Name<<" "<<bank[i].IDcard<<" "<<bank[i].Address<<" "<<bank[i].Dollar<<" "<<bank[i].state<<endl;
    }
    outfile.close();
}
/*********************************************************
 * 功能描述:用户登录时判断账号是否存在,密码是否正确,三次循环不正确退出
 * 输入参数:numb 账号,key 密码 ,x表示输入退出还是选择解挂或者重新开户
 * 输出参数:无
 * 返回值:无
 * 其它说明:若登陆成功判断用户状态,为0正常运行进入功能界面
 为1表示已经挂失 可选择退出或者解挂 为2表示已注销 可选择重新开户或者退出
 ************************************************************/
void Password()
{
    int i,x;//i用于循环,x用于状态判断
    long int key;
    cout<<"欢迎登陆银行系统,请输入您的账号和密码:"<<endl;
    for(i=0; i<3; i++)
    {
        cin>>numb;   //号码从622000开始 都以622为开头
        if(numb>=622000 && numb<623000)  //判断号码存在
        {
            cin>>key;
            if (bank[numb-622000].Key==key && bank[numb-622000].Numb==numb)  //判断账号密码正确
            {
                cout<<"登陆成功,正在判断您的用户状态..."<<endl;
                if(bank[numb-622000].state==0)     //判断状态为正常
                {
                    Point_out();
                    Choose();
                }
                else
                {
                    if(bank[numb-622000].state==1) //判断状态为挂失
                    {
                        cout<<"您的银行卡已经挂失"<<endl;
                        cout<<"请选择:0:退出 , 8解挂"<<endl;
                        cin>>x;
                        if(x==0)
                            Stop();//退出
                        else if(x==8)
                        {
                            cout<<"开始解挂..."<<endl;
                            Hanging_solution();//解挂
                        }
                    }
                    else if(bank[numb-622000].state==2)  //判断状态为销户
                    {
                        cout<<"对不起,您的用户名已经注销"<<endl;
                        cout<<"请选择 0:退出,1 :重新开户"<<endl;
                        cin>>x;
                        if(x==0)
                            Stop();
                        else if(x==1)//重新开户
                        {
                            cout<<"正在重新开户..."<<endl;
                            bank[numb-622000].state=0;
                            cout<<"重新开户成功"<<endl;
                            Display();
                        }
                    }
                    else cout<<"状态异常"<<endl;
                }
                break;
            }
        }
        else cout<<"账号不存在";
    }
    if(i==3)
    {
        cout<<"用户登录错误,退出"<<endl;
        exit(1);
    }
}
/*********************************************************
 * 功能描述:展示功能的界面
 * 输入参数:无
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Point_out()
{
    cout << "请选择您需要的功能: " << endl;
    cout << "+    销户:2    存款:3    取款:4    +" << endl;
    cout << "+    信息:5    转账:6    挂失:7    +" << endl;
    cout << "+    解挂:8    改密:9    退出:0    +" << endl;
}
void Choose()
{
    int number;
    cin >> number;
    switch (number)//功能选择
    {
    case 2:
        Cancel();//销户
        break;
    case 3:
        Save();//存钱
        break;
    case 4:
        Draw();//取钱
        break;
    case 5:
        Display();//显示个人信息
        break;
    case 6:
        Transfer();//转账
        break;
    case 7:
        Report_loss();//挂失
        break;
    case 8:
        Hanging_solution();//解挂
        break;
    case 9:
        Transkey();//改密
        break;
    case 0:
        Stop();
        break;
    }
}
/*********************************************************
 * 功能描述:开户
 * 输入参数:个人资料,姓名,身份证,地址,密码
 存款金额,状态自动赋值为0表示正常,两次输入密码三次不相同退出
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Open()
{
    int i;
    cout<<"请输入你的姓名"<<endl;
    cin>>bank[sale.person].Name;
    cout<<"请输入你的身份证"<<endl;
    cin>>bank[sale.person].IDcard;
    cout<<"请输入您的家庭住址"<<endl;
    cin>>bank[sale.person].Address;
    int key;
    //验证两次密码是否相等
    for(i=0; i<3; i++)
    {
        cout<<"请输入您的密码"<<endl;
        cin>>bank[sale.person].Key;
        cout<<"请再次输入密码"<<endl;
        cin>>key;
        if(bank[sale.person].Key==key)
        {
            cout<<"输入正确"<<endl;
            break;
        }
        else
            cout<<"请重新输入"<<endl;
    }
    //如果密码设置正确,存入底额后开户成功
    if(i<3)
    {
        cout<<"请输入您要存入的钱数"<<endl;
        cin>>bank[sale.person].Dollar;
        bank[sale.person].Numb=sale.person+622000;
        bank[sale.person].state=0;
        numb=sale.person+622000;
        sale.person++;
        cout<<"*****开户成功,******"<<endl;
        cout<<endl;
        Point_out();
        Choose();
    }
    else
    {
        cout<<"对不起,开户失败"<<endl;
        Stop();
    }
}
/*********************************************************
 * 功能描述:销户
 * 输入参数:i
 * 输出参数:无
 * 返回值:无
 * 其它说明:i选择确定销户还是退出
 ************************************************************/
void Cancel()
{
    int i;
    cout<<"您确定要注销本账户吗?"<<endl;
    cout<<"0:确定 ,其他键取消"<<endl;
    cin>>i;
    if(i==0)
    {
        cout<<"您的余额为:"<<bank[numb-622000].Dollar<<endl;
        cout<<"余额全部返还"<<endl;
        bank[numb-622000].Dollar=0;
        bank[numb-622000].state=2;
        cout<<"用户已注销,退出服务,如需其他服务,请重新登录系统"<<endl;
        Stop();
    }
    else
    {
        cout<<"服务已取消"<<endl;
        Point_out();
        Choose();
    }
}
/*********************************************************
 * 功能描述:存钱,不用多说
 * 输入参数:无
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Save()
{


    double dollar;//声明存款数额
    cout << "请输入存款金额: " << endl;
    cin >> dollar;//输入存款数额
    bank[numb-622000].Dollar += dollar;//存款数额保存到信息中
    cout<<"存款成功"<<endl;
    Point_out();
    Choose();


}
/*********************************************************
 * 功能描述:取钱
 * 输入参数:无
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Draw()
{


    int dollar;
    cout << "请输入取款金额: "<< endl;
    cin >> dollar;
    bank[numb-622000].Dollar -= dollar;
    cout<<"取款成功"<<endl;
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:个人信息显示
 * 输入参数:无
 * 输出参数:无
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Display()
{
    cout << "尊敬的 " << bank[numb-622000].Name << " 先生您好,您是第" << sale.person<< "位用户" << endl;
    cout<<"您的账号为"<<bank[numb-622000].Numb<<endl;
    cout<<"您的身份证号码为:"<<bank[numb-622000].IDcard<<endl;
    cout<<"您的家庭 住址为:"<<bank[numb-622000].Address<<endl;
    cout << "您的当前账户余额为: "<< bank[numb-622000].Dollar << endl;
    if(bank[numb-622000].state==0)
        cout<<"您的账户当前状态为:正常"<<endl;
    else if(bank[numb-622000].state==1)
        cout<<"您的账户当前状态为:挂失"<<endl;
    else if(bank[numb-622000].state==2)
        cout<<"您的账户当前状态为:已注销"<<endl;
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:转账
 * 输入参数:输入对方账号和转账金额
 * 输出参数:对方姓名来确定是否转账正确
 * 返回值:无
 * 其它说明:无
 ************************************************************/
void Transfer()
{
    int i;
    double dollar;
    long int num;
    cout << "请输入转账金额" << endl;
    cin >> dollar;
    cout<<"请输入转账账号"<<endl;
    cin>>num;
    if(num>=sale.person+622000 || num<622000)
        cout<<"账号不存在,转账取消"<<endl;
    else
    {
        cout<<"您要转入账户的姓名是:"<<bank[num-622000].Name<<endl;
        cout<<"输入 0确定,1取消"<<endl;
        cin>>i;
        if(i==0)
        {
            if(bank[num-622000].state==0)
            {
                bank[numb-622000].Dollar -= dollar;
                bank[num-622000].Dollar +=dollar;
                cout<<"转账成功"<<endl;
            }
            else if(bank[num].state==1)
                cout<<"对不起,您所转账账户已经挂失,转账取消"<<endl;
            else if(bank[num].state==2)
                cout<<"对不起,您所转账账户已注销.转账取消"<<endl;


        }
        else cout<<"转账已取消"<<endl;
    }
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:挂失
 * 输入参数:i 确定是否挂失
 * 输出参数:无
 * 返回值:无
 * 其它说明:就是把个人状态赋值为1
 ************************************************************/
void Report_loss()
{
    int i;
    cout<<"您是否要挂失 0 确定,1取消"<<endl;
    cin>>i;
    if(i==0)
    {
        bank[numb-622000].state=1;
        cout<<"挂失成功,退出"<<endl;
        exit(1);
    }
    else cout<<"功能取消"<<endl;
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:解挂
 * 输入参数:当然要输入账号和密码啦
 * 输出参数:无
 * 返回值:无
 * 其它说明:三次输入错误退出
 ************************************************************/
void Hanging_solution()
{
    cout<<"请输入您的用户名和密码"<<endl;
    int key,i,numbe;
    for(i=0; i<3; i++)
    {
        cin>>numbe;
        cin>>key;
        if(numbe>=622000 && numbe<623000)
        {
            if(bank[numbe-622000].state==0)
            {
                cout<<"用户状态为正常"<<endl;
                break;
            }
            else
            {
                if (bank[numbe-622000].Key==key)
                {
                    cout<<"解挂成功"<<endl;
                    bank[numb-622000].state=0;
                    break;
                }
                else
                {
                    cout<<"对不起。您的输入有误,无法解挂"<<endl;
                }
            }
        }
        else cout<<"账号不存在,请重新输入"<<endl;
    }
    if(i==3)
    {
        cout<<"退出"<<endl;
        Stop();
    }
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:改密
 * 输入参数:密码两次输入必须相同
 * 输出参数:无
 * 返回值:无
 * 其它说明:三次错误退出
 ************************************************************/
void Transkey()
{
    int key,key1,key2,i;
    cout<<"请输入原密码:"<<endl;
    for(i=0; i<3; i++)                          //由于已经用密码登陆,故再次输入密码不再需要用户账号
    {
        cin>>key;
        if(bank[numb-622000].Key==key)
        {
            while(1)    //密码已经认证,改密时不需要限制次数
            {
                cout<<"请输入您的修改密码,如不需要输入0退出"<<endl;
                cin>>key1;
                if(key1==0)
                {
                    Point_out();
                    Choose();
                }
                cout<<"请再次输入"<<endl;
                cin>>key2;
                if(key1==key2)
                {
                    bank[numb-622000].Key=key1;
                    cout<<"输入正确,改密成功"<<endl;
                    break;
                }
                else
                {
                    cout<<"两次输入密码不符,请重新输入"<<endl;
                    cout<<"请输入您的修改密码"<<endl;
                    cin>>key1;
                    cout<<"请再次输入"<<endl;
                    cin>>key2;
                }
            }
            break;
        }
        else
            cout<<"原密码输入不正确,请重新输入"<<endl;
    }
    if(i==3)
    {
        cout<<"对不起,您的密码输入三次错误,服务退出"<<endl;
        Stop();
    }
    Point_out();
    Choose();
}
/*********************************************************
 * 功能描述:用于强制退出的函数
 * 输入参数:无
 * 输出参数:无
 * 返回值:无
 * 其它说明:为什么要多次一举制造此函数喃 当然是界面友好化
 ************************************************************/
void Stop()
{
    cout<<"程序退出,欢迎下次光临"<<endl;
    exit(1);
}


</pre><pre class="cpp" name="code">初始文件

存款取款个人信息

改密

挂失

解挂

开户

销户

未开户前其他功能总览

开户之后





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值