银行储蓄系统

bank.cpp

 

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
* 
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:用户登录时的功能选择
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
* 
* 修改记录: /
* 修改日期:/
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <stdio.h>
#include <fstream>
#include <string>
#include <time.h>
#include "staff.h"
#include "bank.h"
using namespace std;
static long ywnum=10000000;
/***********************************************
* 功能描述:输入符合条件的密码(密码为6位数字并且不能为0)
* 输入参数:int iPass
* 输出参数:char ch
* 返回值:iPass
* 其它说明:/
/***********************************************/
int inputPassword()
{
    char ch;  //接收字符形式密码
    int iPass=0;   //要转换为数字
    int i;
    while(1)
    {
        for(i=0; i<6; i++)
        {
            ch=getch();  //输入但不显示
            putchar('*');   //输出*
            if(isdigit(ch))
                iPass=iPass*10+(ch-'0');
            else
            {
                iPass=0;
                break;  //退出for循环后,再次接受
            }
        }
        fflush(stdin); //清除键盘缓存区中已经有的输入
        cout<<endl;;
        if(iPass==0)  //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环
        {
            cout<<"密码要求全为数字,且不能全0!"<<endl;;
            cout<<"请重新输入密码: ";
        }
        else
            break;
    }
    return iPass;
}
/*********************************************************************************************
* 功能描述:业务员账号登录
* 输入参数:业务员账户acc,密码ch
* 输出参数:业务员登录成功或失败
* 其它说明:读取staff.txt,按照预先存储的账户和密码,若三次用户名或密码错误,系统强制退出
/*********************************************************************************************/
bool Bank::passtaff()
{
    Staff s1;
    string acc;
    char ch;
    cout<<"请输入业务员账户:";
    cin>>acc;
    for(int j=0; j<3; ++j)
    {
        int pw=0;
        cout<<"请输入密码:";
        for(int i=0; i<6; i++)
        {
            ch=getch();  //输入但不显示
            putchar('*');   //输出*
            pw=pw*10+(ch-'0');
        }
        if(s1.pass(acc,pw))
        {
            return true;
        }
        else
        {
            cout<<"\n用户名或密码错误。"<<endl;
        }
    }
    cout<<"\n错误三次,系统自动退出。"<<endl;
    return false;
}
/**************************************************
* 功能描述:显示功能选择界面
* 输入参数:/
* 输出参数:/
* 其它说明:/
/**************************************************/
void Bank::showMenu()//显示菜单
{
    cout<<"+----------------------------+"<<endl;
    cout<<"+ 1.开户    2.销户    3.存款 +"<<endl;
    cout<<"+ 4.取款    5.查询    6.转账 +"<<endl;
    cout<<"+ 7.挂失    8.解挂    9.改密 +"<<endl;
    cout<<"+ 10.业务查询                +"<<endl;
    cout<<"+                     0.退出 +"<<endl;
    cout<<"+----------------------------+"<<endl;
    cout<<endl;
}
/******************************************************
* 功能描述:输入操作指令,开始工作
* 输入参数:操作指令
* 输出参数:/
* 其它说明:/
/******************************************************/
void Bank::Choice() //开始工作
{
    int order=1;
    do
    {
        if(order==0)
            exit(1);
        openfile();
        reading();
        cout<<"请输入操作指令:";
        cin>>order;
        switch(order)
        {
        case 1:
            openAccount();//开户
            break;
        case 2:
            cancelAccount();//销户
            break;
        case 3:
            save();//存款
            break;
        case 4:
            withdraw();//取款
            break;
        case 5:
            showAccount();//查询余额
            break;
        case 6:
            transferAccount();//转账
            break;
        case 7:
            reportLoss();//挂失
            break;
        case 8:
            cancelLoss();//解挂
            break;
        case 9:
            updatePassword();//改密
            break;
        case 10:
            refer();//业务查询
            break;
        case 0:
            cout<<"感谢您的光临,欢迎您再来!"<<endl;
        }
        savefile();
    }
    while(1);
}
/***************************************************************************************************
* 功能描述:开户
* 输入参数:账户 acc,姓名 nam,身份证号码 id,家庭住址 add,电话号码 pho,密码 pass,存入金额 mon.
* 输出参数:开户成功的提示语句以及流水账号
* 其它说明:/
/****************************************************************************************************/
void Bank::openAccount()  //开户
{
    /*if(nownum==upnum)
    {
        cout<<"银行用户数已经达到上限,不能再开户";
        return;
    }*/
    int acc;   //账号
    string nam;   //姓名
    int pw;   //密码
    double mon;   //金额
    int sta;  //状态
    string add;
    char id[19];
    char pho[13];
    cout<<"正在开户..."<<endl;
    acc=10001+nownum;
    cout<<"账号:"<<acc<<endl;
    cout<<"户主姓名:";
    cin>>nam;
    cout<<"身份证号码:"<<endl;;
    cin>>id;
    cout<<"家庭住址:"<<endl;
    cin>>add;
    cout<<"电话号码:"<<endl;
    cin>>pho;
    int Pass1, Pass2;
    cout<<"密码:";
    Pass1=inputPassword();  //输入密码1
    cout<<"确认密码:";
    Pass2=inputPassword();  //输入密码2
    if(Pass1==Pass2)
    {
        pw=Pass1;
        sta=0; //账户状态为“正常”
        cout<<"存入金额:";
        cin>>mon;
        users[nownum].setUser(acc,nam,id,add,pho,pw,mon,sta);
        ++nownum; //正式用户数增加1,确认了新用户已经加入
        cout<<"开户成功!"<<endl;
        fflush(stdin); //清除键盘缓存区中已经有的输入
        written(acc,"开户操作,开户成功!");
    }
    else
    {
        cout<<"两次密码不一致,未成功开户!"<<endl; //没有N++,则读入的值无效
    }
}
/**************************************************
* 功能描述:销户
* 输入参数:/
* 输出参数:提示销户成功或失败的界面
* 其它说明:销户后款项全部取出,余额变为0
/**************************************************/
void Bank::cancelAccount()
{
    int who;  //查找到该账号在数组中对应的下标
    who=getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        users[who].showName();
        if(users[who].passwordIsRight())
        {
            users[who].showBalance("余额:");   //提示"余额"二字,显示金额
            cout<<"确认销户(y/n)?";
            if(getchar()=='y'||getchar()=='Y')
            {
                users[who].showBalance("销户成功!本次取款金额为:");
                users[who].money=0;  //取款后余额变0
                users[who].status=2;  //状态变为注销
                written(who+10001,"销户操作,销户成功!");
            }
            else
            {
                cout<<"你取消了操作,销户失败!"<<endl;
                written(who+10001,"销户操作,销户失败!错误原因:取消操作。");
            }
            fflush(stdin);  //清除了getchar()时在键盘缓存中的遗留,以免影响后续操作
        }
    }
}
/************************************************************
* 功能描述:存款
* 输入参数:/
* 输出参数:存款成功或失败的提示以及错误原因,存款后的余额
* 其它说明:/
/************************************************************/
void Bank::save() //存款
{
    int who;
    double money;
    who=getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        if(users[who].status==0)
        {
            users[who].showName();
            cout<<"输入存款额:";
            cin>>money;
            users[who].money+=money;
            users[who].showBalance("存款后,金额为:");
            written(who+10001,"存款操作,存款成功!");//业务查询
        }
        else if(users[who].status==1)
        {
            cout<<"该用户处于挂失状态,存款失败!"<<endl;
            written(who+10001,"存款操作,存款失败!错误原因:该账户处于挂失状态。");
        }
        else
        {
            cout<<"该用户已经销户,存款失败!"<<endl;
            written(who+10001,"存款操作,存款失败!错误原因:该账户已销户。");
        }
    }
    return;
}
/**************************************************
* 功能说明:取款
* 输入描述:/
* 输出描述:取款失败的提示以及失败原因,余额
* 其它说明:/
/**************************************************/
void Bank::withdraw()//取款
{
    int who;
    double money;
    who=getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        if(users[who].isNormalUser())
        {
            users[who].showName();
            if(users[who].passwordIsRight())
            {
                cout<<"输入取款额:";
                cin>>money;
                if(money>users[who].money)
                {
                    cout<<"余额不足,取款失败!"<<endl;
                    written(who+10001,"取款操作,操作失败!错误原因:余额不足。");
                }
                else
                {
                    users[who].money-=money;
                    users[who].showBalance("取款后,余额为:");
                    written(who+10001,"取款操作,取款成功!");
                }
            }
        }
    }
    return;
}
/**********************************************************
* 功能说明:查询用户状态
* 输入描述:/
* 输出描述:查询成功的提示,用户所处状态以及余额
* 其它说明:/
/**********************************************************/
void Bank::showAccount()
{
    int who;
    string sta[3]= {"正常","挂失","已经销户"};
    who=getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        users[who].showName();
        if(users[who].passwordIsRight())
        {
            users[who].showBalance("余额:");
            cout<<"状态:"<<sta[users[who].status]<<endl;
            written(who+10001,"查询操作,查询成功!");
        }
    }
    return;
}
/*******************************************
* 功能说明:转账
* 输入描述:/
* 输出描述:转账成功或失败的提示以及错误原因
* 其它说明:/
/********************************************/
void Bank::transferAccount()
{
    int whoout, whoin;
    double money;
    cout<<"转出自";
    whoout=getUser();  //根据账号查询用户,返回用户的下标
    if(whoout>=0)   //说明id账户存在
    {
        if(users[whoout].isNormalUser())
        {
            users[whoout].showName();
            if(users[whoout].passwordIsRight())
            {
                cout<<"输入转账金额:";
                cin>>money;
                if(money>users[whoout].money)
                {
                    cout<<"余额不足,转账失败!"<<endl;
                    written(whoout+10001,"转账操作,转账失败!错误原因:余额不足。");
                }
                else
                {
                    cout<<"转出到";
                    whoin = getUser();  //根据账号查询用户,返回用户的下标
                    if(whoin>=0)   //说明id账户存在
                    {
                        if(users[whoin].isNormalUser())
                        {
                            users[whoout].money-=money;
                            users[whoin].money+=money;
                            users[whoout].showBalance("转账后,余额为:");
                            written(whoout+10001,"转账操作,转账成功!");
                        }
                    }
                }
            }
        }
    }
    return;
}
/***************************************************
* 功能描述:挂失
* 输入参数:/
* 输出参数:用户挂失成功或者失败的提示以及错误原因
* 其它说明:/
/****************************************************/
void Bank::reportLoss()
{
    int who;
    who = getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        users[who].showName();
        if(users[who].passwordIsRight())
        {
            if(users[who].status==0)
            {
                users[who].status=1;
                cout<<"挂失成功"<<endl;
                written(who+10001,"挂失操作,挂失成功!");
            }
            else if(users[who].status==1)
            {
                cout<<"该账户已经处于挂失状态"<<endl;
                written(who+10001,"挂失操作,挂失失败!错误原因:该账户已经处于挂失状态。");
            }
            else
            {
                cout<<"该账户已销户,不能挂失"<<endl;
                written(who+10001,"挂失操作,挂失失败!错误原因:该账户已销户。");
            }
        }
    }
    return;
}
/***************************************************
* 功能描述:解挂
* 输入参数:/
* 输出参数:用户所处的状态,解挂成功或者失败的提示以及错误原因
* 其它说明:/
/****************************************************/
void Bank::cancelLoss() //解挂
{
    int who;
    who = getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        users[who].showName();
        if(users[who].passwordIsRight())
        {
            if(users[who].status==0)
            {
                cout<<"该账户处于正常状态,不需要解除挂失"<<endl;
                written(who+10001,"解挂操作,解挂失败!错误原因:该账户处于正常状态。");
            }
            else if(users[who].status==1)
            {
                users[who].status=0;
                cout<<"解除挂失成功"<<endl;
                written(who+10001,"解挂操作,解挂成功!");
            }
            else
            {
                cout<<"该账户已销户,操作无效"<<endl;
                written(who+10001,"解挂操作,解挂失败!错误原因:该账户已销户。");
            }
        }
    }
    return;
}
/***************************************************
* 功能描述:修改密码
* 输入参数:旧密码,以及新密码
* 输出参数:修改密码成功或者失败的提示,以及错误原因
* 其它说明:/
/****************************************************/
void Bank::updatePassword() //改密
{
    int who;
    int iPass1, iPass2;
    who = getUser();  //根据账号查询用户,返回用户的下标
    if(who>=0)   //说明id账户存在
    {
        users[who].showName();
        if(users[who].passwordIsRight())
        {
            cout<<"新密码:";
            iPass1=inputPassword();  //输入密码1
            cout<<"确认密码:";
            iPass2=inputPassword();  //输入密码2
            if(iPass1==iPass2)
            {
                users[who].password=iPass1;
                cout<<"修改成功!"<<endl;
                written(who+10001,"修改密码操作,修改密码成功!");
            }
            else
            {
                cout<<"两次输入不同,修改失败!"<<endl;
                written(who+10001,"修改密码操作,修改密码失败!错误原因:两次密码输入不同。");
            }
        }
    }
    return;
}
/***************************************************
* 功能描述:查找用户
* 输入参数:用户账号
* 输出参数:用户信息
* 其它说明:/
/****************************************************/
int Bank::getUser()//二分法查找用户
{
    int id;
    cout<<"账号:";
    cin>>id;
    int index=-1;
    int low=0, high=nownum-1, mid;
    while(low<=high)
    {
        mid = (low+high)/2;
        if(users[mid].account==id)
        {
            index=mid;
            break;   //找到了,立即退出循环
        }
        else if (users[mid].account>id)
            high=mid-1;
        else
            low=mid+1;
    }
    if (index<0)
        cout<<"该用户不存在,本次操作失败!"<<endl;
    return index; //若找到,其值在0~N-1间,否则,保持-1
}
/***************************************************
* 功能描述:导入文件
* 输入参数:users.txt
* 输出参数:/
* 其它说明:/
/****************************************************/
void Bank::openfile()//导入文件
{
    ifstream infile("users.txt",ios::in);
    int i=0;
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    nownum=usersdata();
    users=new User[nownum+1];
    while(infile>>users[i].account>>users[i].name>>users[i].password>>users[i].money>>users[i].status)
    {
        ++i;
    }
    infile.close();
}
/***************************************************
* 功能描述:保存文件
* 输入参数:users.txt
* 输出参数:/
* 其它说明:/
/****************************************************/
void Bank::savefile() //保存文件
{
    ofstream qingkfile("users.txt",ios::trunc);
    qingkfile.close();
    ofstream outfile("users.txt",ios::out);
    if(!outfile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    for(int i=0; i<nownum; ++i)
    {
        outfile<<users[i].account<<'\t'<<users[i].name<<'\t'<<users[i].password<<'\t'<<users[i].money<<'\t'<<users[i].status<<endl;
    }
    outfile.close();
    delete []users; //释放空间,等下一次打开文件时重新开辟
    return;
}
/***************************************************
* 功能描述:计算用户个数
* 输入参数:users.txt
* 输出参数:/
* 其它说明:/
/****************************************************/
int Bank::usersdata()//计算users.txt中用户个数
{
    int acc;   //账号
    string nam;   //姓名
    int pw;   //密码
    double mon;   //金额
    int sta;   //状态
    int i=0;
    //int nownum;
    ifstream infile("users.txt");
    while(infile>>acc>>nam>>pw>>mon>>sta)
    {
        ++i;
    }
    infile.close();
    return i;
}
/***************************************************
* 功能描述:用户进行的操作写入文件中
* 输入参数:business_information.txt
* 输出参数:/
* 其它说明:/
/****************************************************/
void Bank::written(int usernum,string infor)//将用户所进行的操作写入文件中,业务查询时输入流水账号,显示用户信息
{
    time_t t;
    tm *lt;
    t = time(NULL);
    lt = localtime(&t);
    //cout<<lt->tm_year+1900<<"/"<<lt->tm_mon+1<<"/"<<lt->tm_mday<<"\t"<<lt->tm_hour<<":"<<lt->tm_min<<":"<<lt->tm_sec<<endl;
    ofstream ywfile("business_information.txt",ios::app);
    if(!ywfile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    //++ywnum;
    ywfile<<lt->tm_year+1900<<"/"<<lt->tm_mon+1<<"/"<<lt->tm_mday<<" "<<lt->tm_hour<<":"<<lt->tm_min<<":"<<lt->tm_sec<<'\t';
    ywfile<<"用户"<<usernum<<"进行"<<infor<<" "<<"流水账号为:"<<++ywnum<<endl;
    ywfile.close();
    cout<<"流水账号:"<<ywnum<<endl;
}
/***************************************************
* 功能描述:读入业务
* 输入参数:business_information.txt
* 输出参数:文件打开失败的提示
* 其它说明:/
/****************************************************/
void Bank::reading()//读入业务
{
    long i=0;
    ifstream infile("business_information.txt",ios::in);
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    //while(infile>>yw[i].year>>yw[i].ch1>>yw[i].month>>yw[i].ch1>>yw[i].day>>yw[i].hour>>yw[i].ch2>>yw[i].minu>>yw[i].ch2>>yw[i].sec>>yw[i].ywinfor)
    while(infile>>yw[i].ymd>>yw[i].hms>>yw[i].ywinfor>>yw[i].liushui)
    {
        //cout<<yw[i].ymd<<" "<<yw[i].hms<<" "<<yw[i].ywinfor<<endl;
        ++i;
        //cout<<yw[i].year;//<<yw[i].ch1<<yw[i].month<<yw[i].ch1<<yw[i].day<<yw[i].hour<<yw[i].ch2<<yw[i].minu<<yw[i].ch2<<yw[i].sec<<yw[i].ywinfor;
        //cout<<yw[i].ymd<<yw[i].hms<<yw[i].ywinfor
    }
    infile.close();
    ywnum=i+10000000;
}
/***************************************************
* 功能描述:查询用户所进行的业务操作
* 输入参数:流水账号
* 输出参数:/
* 其它说明:/
/****************************************************/
void Bank::refer()
{
    long i;
    cout<<"请输入流水账号:";
    cin>>i;
    if(i<=ywnum&&i>10000000)
        cout<<i<<":\t"<<yw[i-10000001].ymd<<" "<<yw[i-10000001].hms<<" "<<yw[i-10000001].ywinfor<<endl;
    else
        cout<<"输入错误!";
}
/*Bank::Bank()
{
    time_t t;
	tm *lt;
	t = time(NULL);
	lt = localtime(&t);
    ofstream ywfile("business_information.txt",ios::app);
    if(!ywfile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    ywfile<<lt->tm_year+1900<<"年"<<lt->tm_mon+1<<"月"<<lt->tm_mday<<"日  ";
    ywfile<<"进行业务操作:"<<endl;
}
Bank::~Bank()
{
    ofstream ywfile("business_information.txt",ios::app);
    if(!ywfile)
    {
        cerr<<"open error!"<<endl<<endl;
        exit(1);
    }
}*/


bank.h

 

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
* 
* 文件名称:bank.h
* 文件标识:无
* 内容摘要:bank类中的函数声明
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
* 
* 修改记录:/
* 修改日期:/
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <iostream>
#include <cmath>
#include <iomanip>
#include <ctype.h>
#include <cstdlib>
#include <cstdio>
#include <conio.h>
#include "user.h"
using namespace std;
struct business
{
    string ymd;
    string hms;
    string ywinfor;
    string liushui;
};
class Bank
{
public:
     //Bank();
    //~Bank();
    bool passtaff();//业务员信息
    void openfile();//导入文件
    void savefile2(int acc, string nam,int pw, double mon, int sta);//保存一行数据
    void caculfile();//计算
    void savefile(); //保存文件
    void Choice(); //开始工作,选择指令
    void showMenu();//显示菜单
    void openAccount(); //开户
    void cancelAccount(); //销户
    void save(); //存款
    void withdraw(); //取款
    void showAccount(); //查询
    void transferAccount(); //转账
    void reportLoss(); //挂失
    void cancelLoss(); //解挂
    void updatePassword(); //改密
    int getUser();
    int usersdata();//计算users.txt中的用户个数
    void written(int usernum,string infor);//将用户进行的操作写入文件business_information.txt中
    void reading();//读取文件business_information.txt中的用户信息
    void refer();//输入流水账号查询用户信息,病输出用户操作时的时间
private:
    business yw[10000];
    int nownum;
    //long ywnum;//流水账号
    User *users;
};


#endif // BANK_H_INCLUDED


user.cpp

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
*
* 文件名称:user.cpp
* 文件标识:无
* 内容摘要:用户函数的定义
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
*
* 修改记录:/
* 修改日期:/
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <fstream>
#include <conio.h>
#include <cstring>
#include "user.h"
using namespace std;
int inputpassw()
{
    char ch;  //接收字符形式密码
    int iPass=0;   //要转换为数字
    int i;
    while(1)
    {
        for(i=0; i<6; i++)
        {
            ch=getch();  //输入但不显示
            putchar('*');   //输出*
            if(isdigit(ch))
                iPass=iPass*10+(ch-'0');
            else
            {
                iPass=0;
                break;  //退出for循环后,再次接受
            }
        }
        fflush(stdin); //清除键盘缓存区中已经有的输入
        cout<<endl;;
        if(iPass==0)  //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环
        {
            cout<<"密码要求全为数字,且不能全0!"<<endl;;
            cout<<"请重新输入密码: ";
        }
        else
            break;
    }
    return iPass;
}
/***********************************************
* 功能描述:数据成员的赋值
* 输入参数:/
* 输出参数:/
* 返回值:/
* 其它说明:/
/***********************************************/
void User::setUser(int acc, string nam,char id[19],string add,char pho[13], int pw, double mon, int sta)
{
    account=acc;
    name=nam;
    strcpy(id_card,id);
    address=add;
    strcpy(phone,pho);
    password=pw;
    money=mon;
    status=sta;
}
/***********************************************
* 功能描述:判断密码是否正确
* 输入参数:int iPass
* 输出参数:密码错误的提示
* 返回值:right
* 其它说明:/
/***********************************************/
bool User::passwordIsRight()
{
    int iPass;
    bool right=true;
    cout<<"输入密码:";
    iPass=inputpassw();
    if(iPass!=password)
    {
        right = false;
        cout<<"输入密码错误,不能继续操作!"<<endl;
                     }
    return right;
}
/***********************************************
* 功能描述:显示用户名字
* 输入参数:
* 输出参数:name
* 返回值:/
* 其它说明:/
/***********************************************/
void User::showName()
{
    cout<<"用户名:"<<name<<endl;
}
/***********************************************
* 功能描述:显示余额
* 输入参数:/
* 输出参数:money
* 返回值:/
* 其它说明:/
/***********************************************/
void User::showBalance(string prompt)
{
    cout<<prompt<<money<<endl;
}
/***********************************************
* 功能描述:判断用户状态是否正常
* 输入参数:/
* 输出参数:用户所处的状态
* 返回值:/
* 其它说明:/
/***********************************************/
bool User::isNormalUser()
{
    bool normal = true;
    if(status!=0)
    {
        normal = false;
        cout<<"该账户处于"<<(status==1?"挂失":"销户")<<"状态,不能继续操作..."<<endl;
    }
    return normal;
}


user.h

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
* 
* 文件名称:uesr.h
* 文件标识:无
* 内容摘要:User类中的函数声明
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
* 
* 修改记录:
* 修改日期:
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#ifndef USER_H_INCLUDED
#define USER_H_INCLUDED
#include <iostream>
#include <cmath>
using namespace std;
class User
{
public:
    User(){}
    void setUser(int acc, string nam,char id[19],string add,char pho[13], int pw, double mon, int sta);
    bool isNormalUser();
    bool passwordIsRight();
    void showName();
    void showBalance(string prompt);
    friend class Bank;
private:
    int account;
    string name;
    int password;
    double money;
    int status;
    string address;
    char phone[13];
    char id_card[19];
};


#endif // USER_H_INCLUDED


staff.cpp

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
* 
* 文件名称:staff.cpp
* 文件标识:无
* 内容摘要:业务员的登录
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
* 
* 修改记录:/
* 修改日期:/
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <fstream>
#include "staff.h"
using namespace std;
/***********************************************
* 功能描述:业务员登录
* 输入参数:staff.txt
* 输出参数:业务员登录成功的提示
* 返回值:judge
* 其它说明:/
/***********************************************/
bool Staff::pass(string sacc,int ps)
{
    bool judge=false;
    fstream infile("staff.txt",ios::in);//´ò¿ªstaff.txt
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>stafft.account>>stafft.password;
        if(stafft.account==sacc&&ps==stafft.password)
        {
            judge=true;
            break;
        }
    }
    infile.close();
    return judge;
}


staff.h

/*************************************************************
* 版权所有:(C)2015,烟台大学计算机与控制工程学院
* 
* 文件名称:staff.h
* 文件标识:无
* 内容摘要:业务员登录
* 其它说明:无
* 当前版本:v1.0
* 作者:曾晓
* 完成日期:2015 7 17
* 
* 修改记录:/
* 修改日期:/
* 版本号:v1.0
* 修改人:曾晓
* 修改内容:创建
/***************************************************************/
#ifndef STAFF_H_INCLUDED
#define STAFF_H_INCLUDED
#include <iostream>
#include <cmath>
using namespace std;
struct staffTatus
{
    string account;
    int password;
};
class Staff
{
public:
    bool pass(string sacc,int ps);
private:
    staffTatus stafft;
};


#endif // STAFF_H_INCLUDED


运行结果:

业务员登录:

开户:

存款:

取款:

查询:

转账:

 

挂失:

解挂:

改密:

业务查询:

 

总结心得:

在调试过程中,对这些五花八门的错误又有了新的认识,好多错误是之前没有见过的,这么大的程序只能一点一点的自己去调试,去找大神帮忙。其实还有很多功能没有实现,对用户界面的实现其实我是很有兴趣的,但是实在没时间去研究了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值