银行系统,哪里服务不到位或者有BUG请各位帮忙修改啊

总结一下为何编出来如此简陋的原因:1:我刚开始就按照现在学的来函数定义公有,私有定义。。。。但是一系列的麻烦把我逼迫成全部公有。。。。:我刚开始是打算把所有函数都在Bank类中声明的,但是转账功能实在是想不透用类怎么进行了,毕竟需要引用一个只有用户知道的对象,需要在主函数进行好多操作,引入文件等等,牵连太多了。这弄的我把所有函数排除在类之外了。。。3:想用动态对象数组创建吧,结果老是不成,后来成了还溢出,就又改成普通的了。最后就是哪里有麻烦把哪里简化转化,无所不用,为了函数能够运行,我也是费劲了心思啊。然后就成了现在这种毫无特点,毫无条理的一个可以运行服务的程序了,而且我只测试了前三四个输入操作,实在是编的恶心了,从昨天十点开始,编了改,然后在编,编了删,在编,昨晚到了十一点,今天又到了现在。请各位帮忙完善服务以及找出BUG 谢谢了。
 
 
#include <iostream>
#include "stdio.h"
#include "stdlib.h"
#include "Cstring"
#include "fstream"
using namespace std;
void insalefile();
void outsalefile();
void infile();
void outfile();
bool IDstate();
bool Password(int numb,int key);
void Point_out();
void Choose();
void Open();
void Cancel();
void Save();
void Draw();
void Display();
void Transfer();
void Report_loss();
bool Hanging_solution();
void Micronesia();
void Stop();
class Sale
{
public:
    bool Pass(int);
    int Go;
    int person;
};
class Bank
{
public:
    int Numb;
    int Key;
    string Name;
    string IDcard;
    double Dollar;
    int state;//0:正常;1:挂失;已销户:2;
};
Bank bank[1000];
Sale sale;
int numb;
void insalefile()
{
    ifstream infile("Banksaleman.txt",ios::in);
    if(!infile)
    {
        cout<<"open error"<<endl;
        exit(1);
    }
    infile>>sale.Go>>sale.person;
    infile.close();

}
bool Sale::Pass(int go)
{
    if(Go==go)
        return true;
    else
        return false;
}
void outsalefile()
{
    ofstream outfile("Banksaleman.txt",ios::out);
    if(!outfile)
    {
        cout<<"open error"<<endl;
        exit(1);
    }
    outfile<<sale.Go<<" "<<sale.person;
    outfile.close();

}
void in_file()
{

    ifstream infile("man.txt",ios::in);
    if(!infile)
    {
        cout<<"open error"<<endl;
        exit(1);
    }
    for(int i=0; i<sale.person; i++)
    {
        infile>>bank[i].Numb>>bank[i].Key>>bank[i].Name>>bank[i].IDcard>>bank[i].Dollar>>bank[i].state;
    }
    infile.close();
}
void out_file()
{
    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].Dollar<<" "<<bank[i].state;
    }
    outfile.close();
}
bool Password(int numb,int key)
{
    if(numb<622000)
        return false;
    else
    {
        if (bank[numb-622000].Key==key && bank[numb-622000].Numb==numb)
            return true;
        else
            return false;
    }
}
bool IDstate()
{
    if(bank[numb-622000].state==0)
        return true;
    else
        return false;
}
void Point_out()
{
    cout << "请选择您需要的功能: " << endl;
    cout << "+            再开一个账户: 1          +" << 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 1:
        Open();
        break;
    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:
        Micronesia();
        break;
    case 0:
        Stop();
        break;
    }
}
void Open()
{
    int i;
    cout<<"请输入你的姓名"<<endl;
    cin>>bank[sale.person].Name;
    cout<<"请输入你的身份证后六位"<<endl;
    cin>>bank[sale.person].IDcard;
    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<10)
    {
        cout<<"请输入您要存入的钱数"<<endl;
        cin>>bank[(sale.person)].Dollar;
        bank[sale.person].Numb=sale.person+622000;
        bank[sale.person].state=0;
        sale.person++;
        numb++;
        cout<<"*****开户成功******"<<endl;
        cout<<endl;
        Display();
    }
    else
    {
        cout<<"对不起,开户失败"<<endl;
        Stop();
    }
}
void Cancel()
{
    int i;
    cout<<"您确定要注销账户吗?"<<endl;
    cout<<"0:确定 ,其他键取消"<<endl;
    cin>>i;
    if(i==0)
    {
    bank[numb-622000].state=2;
    cout<<"用户已注销,退出服务,如需其他服务,请重新登录系统"<<endl;
    Stop();
    }
    else
    {
        cout<<"服务已取消"<<endl;
        Display();
    }
}
void Save()
{

    int dollar;
    cout << "请输入存款金额: " << endl;
    cin >> dollar;
    bank[numb-622000].Dollar += dollar;
    Display();

}
void Draw()
{

    int dollar;
    cout << "请输入取款金额: "<< endl;
    cin >> dollar;
    bank[numb-622000].Dollar -= dollar;
    Display();
}
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].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 dollar,num,i;
    cout << "请输入转账金额" << endl;
    cin >> dollar;
    cout<<"请输入转账账号"<<endl;
    cin>>num;
    if(num>sale.person)
        cout<<"账号不存在,转账取消"<<endl;
    else
    {
    cout<<"您要转入账户的姓名是:"<<bank[num-622000].Name<<endl;
    cout<<"输入 0确定,1取消"<<endl;
    cin>>i;
    if(i==0)
    {
        if(bank[num].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==3)
            cout<<"对不起,您所转账账户已注销.转账取消"<<endl;

    }
     else cout<<"转账已取消"<<endl;
    }
    Display();
}
void Report_loss()
{
    int i;
    cout<<"您是否要挂失 0 确定,1取消"<<endl;
    cin>>i;
    if(i==0)
    {
        bank[numb-622000].state=1;
    }
    else cout<<"功能取消"<<endl;
    Display();
}
bool Hanging_solution()
{
    cout<<"请输入您的用户名和密码"<<endl;
    string name;
    int key;
    cin>>name>>key;
    if(Password(numb,key))
    {
        bank[numb-622000].state=0;
        return true;
    }
    else
    {
        cout<<"对不起。您的输入有误,无法解挂"<<endl;
        return false;
    }
}
void Micronesia()
{
    int key,key1,key2,i;
    cout<<"请输入原密码:"<<endl;
    for(i=0; i<3; i++)                          //由于已经用密码登陆,故再次输入密码次数不受限制
    {
        cin>>key;
        if(bank[numb-622000].Key==key)
        {
            while(1)
            {
                cout<<"请输入您的修改密码"<<endl;
                cin>>key1;
                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();
    }
    else
        Display();
}
void Stop()
{
    cout<<"程序退出,欢迎下次光临"<<endl;
    exit(1);
}

int main()
{
    int i;
    int go;
    int key;
    insalefile();
    for(i=0; i<3; i++)
    {
        cout<<"请输入业务员密码"<<endl;
        cin>>go;
        if(sale.Pass(go))
        {
            cout<<"欢迎登陆银行系统,请输入您的账号和密码:"<<endl;
            in_file();
            for(i=0; i<3; i++)
            {
                cin>>numb;   //号码从622000开始 都以622为开头
                cin>>key;
                if(Password(numb,key))
                {
                    cout<<"登陆成功,正在判断您的用户状态..."<<endl;
                    if(IDstate())
                    {
                        Display();
                    }
                    else
                    {
                        if(bank[numb-622000].state==1)
                        {
                            cout<<"您的银行卡已经挂失"<<endl;
                            cout<<"请选择:0:退出 , 8解挂"<<endl;
                            int i;
                            cin>>i;
                            if(i==0)
                                Stop();
                            else if(i==8)
                            {
                                cout<<"开始解挂..."<<endl;
                                if(Hanging_solution())
                                {
                                    cout<<"解挂成功"<<endl;
                                    Display();
                                }
                                else cout<<"解挂失败"<<endl;
                            }
                        }
                        else if(bank[numb-622000].state==2)
                        {
                            cout<<"对不起,您的用户名已经注销"<<endl;
                            cout<<"请选择 0:退出,1 :重新开户"<<endl;
                            cin>>i;
                            if(i==0)
                                Stop();
                            else if(i==1)
                                cout<<"正在开户..."<<endl;
                            Open();
                        }
                    }
                }
                else cout<<"账号或密码错误,请重新输入"<<endl;
            }

        }
        else
            cout<<"服务员密码错误,请重新输入"<<endl;
    }
    outsalefile();
    out_file();
    if(i==3)
        cout<<"三次错误,登出"<<endl;
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值