您的位置:首页 > 其它

银行储蓄系统

2015-07-18 10:22 351 查看
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


运行结果:

业务员登录:



开户:



存款:



取款:



查询:



转账:

 



挂失:



解挂:



改密:



业务查询:

 



总结心得:

在调试过程中,对这些五花八门的错误又有了新的认识,好多错误是之前没有见过的,这么大的程序只能一点一点的自己去调试,去找大神帮忙。其实还有很多功能没有实现,对用户界面的实现其实我是很有兴趣的,但是实在没时间去研究了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: