头文件:bank.h
/*
*版权所有:Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*
*文件名称:bank.h
*文件标识:无
*内容摘要:该代码用于获取满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作 者:徐洪祥
*完成日期:2015年7月17日
*/
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <cstring>
using namespace std;
const int upnum=2000;//系统最多容纳的用户数
class Bank;
class User
{
public:
void setuser(int acc,string nam,string idn,double phnu,string add,int pw,double bal,int sta);//赋值
void showuser();//显示名字
void showbalance(string prompt);//显示余额
bool passwordright();//验证密码
bool staisnor();//验证状态,处于正常状态时返回true,其他情形返回false并提示
friend class Bank;//将Bank声明为友元类,方便其访问数据成员
private:
int account;//账户
string name;//姓名
string idnumber;//身份证号
double phonenumber;//电话号码
string address;//地址
int password;//密码
double balance;//余额
int status;//状态 0-正常 1-挂失 2-销户
};
class Bank
{
public:
Bank();//构造函数
~Bank();//析构函数
void work();//业务驱动
void openacc();//开户
void cancelacc();//销户
void save();//存款
void withdraw();//取款
void showacc();//查询余额
void transferacc();//转账
void reloss();//挂失
void cancelloss();//解除挂失
void repassword();//更改密码
int getuser(); //输入账号查询用户,返回用户在对象数组中的下标
private:
int num; //实际的用户数目
User users[upnum];
};
int inputpassword();//输入密码
int pass();//业务员
int choosemenu();//服务列表
#endif // BANK_H_INCLUDED
主函数:main.cpp
/*
*版权所有:Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*
*文件名称:main.cpp
*文件标识:无
*内容摘要:该代码用于获取满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作 者:徐洪祥
*完成日期:2015年7月17日
*/
#include <iostream>
#include "bank.h"
using namespace std;
int main()
{
cout<<"+----------------------+\n";
cout<<"+ 徐氏银行欢迎您 +\n";
cout<<"+----------------------+\n";
if(pass())
{
Bank b;
b.work();
}
return 0;
}
基础函数:work.cpp
/*
*版权所有:Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*
*文件名称:work.cpp
*文件标识:无
*内容摘要:该代码用于获取满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作 者:徐洪祥
*完成日期:2015年7月17日
*/
#include <iostream>
#include <fstream>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <ctype.h>
#include "bank.h"
using namespace std;
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;
}
/*
功能:验证用户密码
返回值:密码正确,返回1;
不能通过密码验证,返回0
*/
int pass()
{
char namefile[20]; //由文件中读出的业务员用户名
char passfile[20]; //文件中保存的密码,这一版本中,用字符保存密码
ifstream infile("password.txt",ios::in);
if(!infile)
{
cout<<"password.txt open error."<<endl;
exit(1);
}
infile>>namefile>>passfile;
infile.close();
char sname[20]; //业务员登录时输入的用户名
char spass[20]; //业务员登录时输入的密码
char ch;
int itry=3; //进入系统时尝试的次数
int right=0;//要返回的结果:0-不正确 1-正确
do
{
cout<<"请输入业务员姓名:";
cin>>sname;
cout<<"请输入密码:";
int i=0;
while((ch=getch())!='\r')//getch在接受输入后,不在屏幕上显示
{
spass[