#include"main.h"
int main()
{
fread();
do
{
outline();
switch(choice)
{
case 0:fwrite();return 0;
case 1:addClient();fwrite();break;
case 2:checkClient();fwrite();break;
case 3:depositMoney();fwrite();break;
case 4:withdrawMoney();fwrite();break;
case 5:lostReport();fwrite();break;
case 6:foundReport();fwrite();break;
case 7:changePassword();fwrite();break;
case 8:resetPassword();fwrite();break;
case 9:closeClient();fwrite();break;
default:break;
}
}while(choice);
fwrite();
return 0;
}
Client::Client()
{
//
}
Client::Client(char cardnumtemp[],
char passwordtemp[],
string nametemp,
char idcardtemp[])
{
for(int i=0;i<6;i++)
{
cardnum[i]=(char)malloc(sizeof(char));
cardnum[i]=cardnumtemp[i];
}
cardnum[6]='\0';
for(i=0;i<6;i++)
{
password[i]=(char)malloc(sizeof(char));
password[i]=passwordtemp[i];
}
password[6]='\0';
name=nametemp;
for(i=0;i<8;i++)
{
idcard[i]=(char)malloc(sizeof(char));
idcard[i]=idcardtemp[i];
}
idcard[8]='\0';
money=0;
isActive=true;
}
//main中函数的实现
void outline()
{
system("cls");
cout<<"\t\t\t欢迎进入银行卡管理系统!"<<endl;
cout<<endl;
cout<<"\t(1) 开户"<<endl;
cout<<"\t(2) 查询"<<endl;
cout<<"\t(3) 存款"<<endl;
cout<<"\t(4) 取款"<<endl;
cout<<"\t(5) 挂失"<<endl;
cout<<"\t(6) 解挂"<<endl;
cout<<"\t(7) 修改密码"<<endl;
cout<<"\t(8) 重置密码"<<endl;
cout<<"\t(9) 销户"<<endl;
cout<<endl;
cout<<"(0) 退出"<<endl;
cin>>choice;
}
void addClient()
{
char cardnumtemp[6];
char passwordtemp[6];
string nametemp;
char idcardtemp[8];
cout<<endl;
/*
do
{
cin.clear();
cin.sync();
checkInput=true;
cout<<"请输入银行卡号(6位):";
for(int i=0;i<6;i++)
{
cin>>cardnumtemp[i];
if(cardnumtemp[i]>'9'||cardnumtemp[i]<'0')
checkInput=false;
}
if(cin.rdbuf()->in_avail()!=1) checkInput=false;
if(!checkInput)
cout<<"银行卡号只能为6位数字,您的输入多出了 "<<cin.rdbuf()->in_avail()-1<<" 位,请重新输入!"<<endl;
}while(!checkInput);
cin.clear();
cin.sync();
*/
do
{
checkInput=true;
input("银行卡",cardnumtemp,6);
if(check(cardnumtemp))
cout<<"此帐户已存在,请重新输入您的卡号!"<<endl;
}while(check(cardnumtemp)||!checkInput);
cout<<"请输入姓名:";
cin>>nametemp;
/*
do
{
cin.clear();
cin.sync();
checkInput=true;
cout<<"请输入身份证号(8位):";
for(int i=0;i<8;i++)
{
cin>>idcardtemp[i];
if(idcardtemp[i]>'9'||idcardtemp[i]<'0')
checkInput=false;
}
if(cin.rdbuf()->in_avail()!=1) checkInput=false;
if(!checkInput)
cout<<"身份证号只能为8位数字,您的输入多出了 "<<cin.rdbuf()->in_avail()-1<<" 位,请重新输入!"<<endl;
}while(!checkInput);
*/
input("身份证号",idcardtemp,8);
/*
do
{
cin.clear();
cin.sync();
checkInput=true;
cout<<"请输入密码(6位):";
for(int i=0;i<6;i++)
{
cin>>passwordtemp[i];
if(passwordtemp[i]>'9'||passwordtemp[i]<'0')
checkInput=false;
}
if(cin.rdbuf()->in_avail()!=1) checkInput=false;
if(!checkInput)
cout<<"密码只能为6位数字,您的输入多出了 "<<cin.rdbuf()->in_avail()-1<<" 位,请重新输入!"<<endl;
}while(!checkInput);
*/
input("密码",passwordtemp,6);
if(!bankhead)
{
bankhead=new Client(cardnumtemp,passwordtemp,nametemp,idcardtemp);
bankhead->next=NULL;
banktail=bankhead;
banktail->next=NULL;
}
else
{
//banktail=new Client();
banktail->next=new Client(cardnumtemp,passwordtemp,nametemp,idcardtemp);
banktail=banktail->next;
banktail->next=NULL;
}
cout<<"卡号:"<<banktail->getCardnum()<<" 用户名:"<<banktail->getName()<<" 身份证:"<<banktail->getIdcard()<<" 开户成功!"<<endl;
cout<<"您的卡上余额:"<<banktail->getMoney();
getchar();
}
void checkClient()
{
Client* pClient;
bool match=true;
char cardnumtemp[6];
char passwordtemp[6];
do
{
input("卡号",cardnumtemp,6);
pClient=check(cardnumtemp);
if(!pClient)
cout<<"没有找到您的卡号,请重新输入!"<<endl;
}while(!pClient);
do
{
match=true;
input("密码",passwordtemp,6);
for(int i=0;i<6;i++)
if(passwordtemp[i]!=pClient->getPassword()[i])
{
match=false;
break;
}
if(!match)
cout<<"卡号和密码不匹配!请重新输入密码!"<<endl;
}while(!match);
cout<<"密码输入正解,欢迎您 "<<pClient->getName()<<endl;
cout<<"您的余额为:"<<pClient->getMoney() <<"元,您的账号目前可用!";
system("pause");
}
void withdrawMoney()
{
Client* pClient;
bool match=true;
char cardnumtemp[6];
char passwordtemp[6];
double moneytemp;
/*cout<<endl;
cout<<"请输入您的卡号:";*/
do
{
input("卡号",cardnumtemp,6);
pClient=check(cardnumtemp);
if(!pClient)
cout<<"没有找到您的卡号,请重新输入!"<<endl;
}while(!pClient);
do
{
match=true;
input("密码",passwordtemp,6);
//cout<<"请输入您的密码:";
for(int i=0;i<6;i++)
{
//cin>>passwordtemp[i];
if(passwordtemp[i]!=pClient->getPassword()[i])
match=false;
}
if(!match)
cout<<"卡号和密码不匹配!请重新输入密码!"<<endl;
}while(!match);
cout<<"密码输入正解,欢迎您 "<<pClient->getName()<<endl;
do
{
cout<<"您的余额为:"<<pClient->getMoney() <<"元,请输入您要取的数目(元):";
cin>>moneytemp;
if(moneytemp>pClient->getMoney())
cout<<"余额不足!请重新输入!"<<endl;
}while(moneytemp>pClient->getMoney());
cout<<"正在操作,请稍候..."<<endl;
pClient->setMoney(pClient->getMoney()-moneytemp);
cout<<"操作成功,您的余额为:"<<pClient->getMoney()<<endl;
cin.clear();
cin.sync();
getchar();
}
void depositMoney()
{
Client* pClient;
char cardnumtemp[6];
double moneytemp;
cout<<endl;
//cout<<"请输入您的卡号:";
do
{
/*for(int i=0;i<6;i++)
cin>>cardnumtemp[i];*/
input("卡号",cardnumtemp,6);
pClient=check(cardnumtemp);
if(!pClient)
cout<<"没有找到您的卡号,请重新输入!"<<endl;
}while(!pClient);
cout<<"您名为 "<<pClient->getName()<<" 的账户里余额为:"<<pClient->getMoney() <<" 元,请输入您要存的数目(元):";
cin>>moneytemp;
cout<<"正在操作,请稍候..."<<endl;
pClient->setMoney(pClient->getMoney()+moneytemp);
cout<<"操作成功,您的余额为:"<<pClient->getMoney()<<endl;
cin.clear();
cin.sync();
getchar();
}
void lostReport()
{
Client* pClient;
bool match=true;
char cardnumtemp[6];
char idcardtemp[8];
cout<<endl;
//cout<<"请输入您的卡号:";
do
{
//for(int i=0;i<6;i++)
// cin>>cardnumtemp[i];
input("卡号",cardnumtemp,6);
pClient=check(cardnumtemp);
if(!pClient)
cout<<"没有找到您的卡号,请重新输入!"<<endl;
}while(!pClient);
/*
do
{
cin.clear();
cin.sync();
checkInput=true;
cout<<"请输入身份证号(8位):";
for(int i=0;i<8;i++)
{
cin>>idcardtemp[i];
if(idcardtemp[i]>'9'||idcardtemp[i]<'0')
checkInput=false;
}
if(cin.rdbuf()->in_avail()!=1) checkInput=false;
if(!checkInput)
cout<<"身份证号只能为8位数字,您的输入多出了 "<<cin.rdbuf()->in_avail()-1<<" 位,请重新输入!"<<endl;
}while(!checkInput);
*/
do
{
input("身份证号",idcardtemp,8);
match=true;
for(int i=0;i<8;i++)
if(idcardtemp[i]!=pClient->getIdcard()[i])
{
cout<<"您输入的身份证号不正确,请重新输入!"<<endl;
match=false;
break;
}
}while(!match);
cout<<"输入正确,正在操作,请稍候..."<<endl;
pClient->active(false);
cout<<"操作成功,您的账号"<<pClient->getCardnum()<<" 用户名:"<<pClient->getName()<<" 已被锁定!"<<endl;
cin.clear();
cin.sync();
getchar();
}
void foundReport()
{
Client* pClient;
bool match=false;
char cardnumtemp[6];
char idcardtemp[8];
cout<<endl;
input("卡号",cardnumtemp,6);
pClient=bankhead;
while(!match)
{
match=true;
for(int i=0;i<6;i++)
if(cardnumtemp[i]!=pClient->getCardnum()[i])
{
match=false;
pClient=pClient->next;
break;
};
}
do
{
input("身份证号",idcardtemp,8);
match=true;
for(in