问题及代码:
主函数:main函数
/*
Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:lily.cpp
*作者:李莉
*完成日期:2015年7月17日
*版本号:v1.0
*问题描述:简单的银行储蓄系统,
程序输入:根据业务界面输入
程序输出:业务运行结果
*/
#include <iostream>
#include "bank.h"
#include <ctime>
int main()
{
cout<<"******************************"<<endl;
cout<<"** wellcome to Lily's Bank ***"<<endl;
cout<<"******************************"<<endl;
if(pass())
{
Bank b;
b.work();
}
return 0;
}
头文件,文件
bank.h文件
/*
Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:lily.cpp
*作者:李莉
*完成日期:2015年7月17日
*版本号:v1.0
*问题描述:简单的银行储蓄系统,
程序输入:根据业务界面输入
程序输出:业务运行结果
*/
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <cstring>
using namespace std;
int pass();//银行工作人员登陆,如果登陆成功则执行下面的功能
int chooseInMenue();//选择菜单
int inputPassWord();//输入银行卡的密码
class Bank;//银行业务类
class Work;//主要用于储存业务信息的类
class User
{
public:
void setUser(int acc,string na,int pa,double bal,int sta,double ti);//录入用户
void showName();//显示姓名
void showBalance();//显示余额
void showprofit();//计算利息
bool passwordIsRight();//校验密码是否正确
bool isNormalUser();//检验用户是否状态正常
friend class Bank;//将bank设置为友元函数,方便bank中的函数访问Uer里面的数据成员
private:
int account;//银行卡账号
int password;//设置密码
string name;//用户姓名
double balance;//余额
int status;//0代表正常,1代表挂失,2代表销户
double time;
};
class Work
{
public:
friend class Bank;
private:
int usernum;
string workinfo;
string ymd;
string hms;
};
class Bank
{
public:
Bank();
int jishu();//统计文件中有多少用户
void savework(int usernum,string workinfo);//储存每笔业务
void readwork();//
void savefile();//读取文件中保存的每一笔业务
void work();//业务驱动
void openAccount();//开户
void cancelAccount();//销户
void save();//存款
void withdrew();//取款
void showAccount();//显示余额
void transferAccount();//转账
void reportLoss();//挂失
void cancelLoss();//解挂
void updatePassword();//改密
void showprofits();//显示利息,
void searchwork(int a);//查询业务明细
int getUser();//输入账号查询,并返回用户下标
private:
int N;
int n;
Work yw[2000];
User *users;
};
#endif // BANK_H_INCLUDED
work.cpp文件
/*
Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:lily.cpp
*作者:李莉
*完成日期:2015年7月17日
*版本号:v1.0
*问题描述:简单的银行储蓄系统,
程序输入:根据业务界面输入
程序输出:业务运行结果
*/
#include <iostream>
#include <cstring>
#include <fstream>
#include <conio.h>
#include <ctype.h>
#include <cstdlib>
#include "bank.h"
using namespace std;
/********************
*函数功能:管理员登陆
*输入参数:无
*输出参数:无
*其他说明:设置了密码输入三次错误自动退出
****************************/
int pass()
{
char sNameInFile[20];
char sPassInFile[20];
ifstream infile("password.txt",ios::in);
if(!infile)
{
cerr<<"password file can't open!"<<endl;
exit(1);
}
infile>>sNameInFile>>sPassInFile;
infile.close();
char sName[20];
char sPass[20];
char ch;
int itry=3;//尝试输入密码的次数
int right=0;
do
{
cout<<"请输入业务员姓名:"<<endl;
cin>>sName;
cout<<"请输入业务员登录密码:"<<endl;
int i=0;
while((ch=getch())!='\r')
{
sPass[i++]=ch;
putchar('*');
}
sPass[i]='\0';
fflush(stdin);
cout<<endl;;
if(strcmp(sPass,sPassInFile)==0&&strcmp(sName,sNameInFile)==0)
{
right=1;
break;
}
else
{
itry--;
if(itry>0)
cout<<"输入错误超过三次,系统将自动退出,您还可以尝试"<<itry<<"次"<<endl;
else
cout<<"输入密码错误超过三次,系统自动退出,您不能登录!"<<endl;
}
}
while(itry);
return right;
}
/*****************
*函数功能:银行业务界面,
*输入参数:无
*输出参数:无
*其他说明:根据选择不同的业务代号,驱动不同的函数
***************/
int chooseInMenue()
{
int i;
while(1)
{
cout<<endl;
cout<<"*******************************************"<<endl;
cout<<"* 1.开户 2.销户 3.存款 *"<<endl;
cout<<"* 4.取款 5.查询 6.转账 *"<<endl;
cout<<"* 7.挂失 8.解挂 9.改密 *"<<endl;
cout<<"* 10.计算利息 0.退出 *"<<endl;
cout<<"*******************************************"<<endl;
cout<<endl;
cin>>i;
if(i>=0&&i<=10)
break;
else
cout<<"选择有误,请重新选择!"<<endl;
}
return i;
}
/****************
*函数功能:密码输入操作
*输入参数:无
*输出参数:无
*其他说明:无
****************/
int inputPassWord()
{
int ipass=0;
char ch;
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;
}
}
fflush(stdin);
cout<<endl;
if(ipass==0)
{
cout<