#include <iostream>
#include<string.h>
#include<iomanip>
#include <stdio.h>
using namespace std;
//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的开号初始值
#define INITNUMBER 10001;
struct Account
{
long accNumber; //卡号
char accName[20]; //户主
char accPwd[10]; //密码
double balance; //余额
char flag[6]; //卡的状态
};
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中银行卡数量
int size=0;
//生成银行中自增卡号
long autoCreament();
//欢迎界面
void welcome();
//登陆界面
void login();
//主界面
void work();
//存款界面
void depositmoney();
//取款界面
void drawmoney();
//查询界面
void showbalance();
//开户界面
void openaccount();
//销户界面
void closeaccount();
//修改密码
void changepwd();
//根据卡号查询指定的账户所在的下标
int searchAccount(long accNumber);
//个人信息的输出
void putout(Account acc);
//退出界面
void exit();
//校验密码必须是6-8位,而且是纯数字
bool isPassLegal(char pass[]);
int main()
{
welcome();
login();
return 0;
}
void welcome()
{
cout<<"+----------------------------------+"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎使用储蓄综合业务平台 |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"+----------------------------------+"<<endl;
}
void login()
{
int i=0;
char bankname[10]="admin";
char bankpassword[10]="admin";
for(i=0;i<3;i++)
{
cout<<"请输入用户名:";
char name[10]={0};
cin>>name;
cout<<"请输入密码:";
char password[10]={0};
cin>>password;
if (strcmp(bankname,name)!=0||strcmp(bankpassword,password)!=0)
{
if(i==2)
{
cout<<"您输入的错误次数太多,不允许继续操作!"<<endl;
break;
}
cout<<"用户名或则密码错误请重新输入:" <<endl;
}
else{
work();
break;
}
}
}
void work()
{
int cChoice;
cout<<"+----------------------------------+"<<endl;
cout<<"| |"<<endl;
cout<<"| 存款 请按1 开户 请按4 |"<<endl;
cout<<"| 取款 请按2 销户 请按5 |"<<endl;
cout<<"| 查询 请按3 改密 请按6 |"<<endl;
cout<<"| 退出 请按0 |"<<endl;
cout<<"| |"<<endl;
cout<<"+----------------------------------+"<<endl;
cout<<"请输入您的选择(0-5):";
cin>>cChoice;
if(cChoice<0||cChoice>6)
{
cout<<"您的输入有误,请重新输入!"<<endl;
work();
}
else
{
switch(cChoice)
{
case 1:
depositmoney();
break;
case 2:
drawmoney();
break;
case 3:
showbalance();
break;
case 4:
openaccount();
break;
case 5:
closeaccount();
break;
case 6:
changepwd();
break;
case 0:
exit();
break;
}
}
return;
}
void depositmoney()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入存款系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
long accNum;//存款的账号
double money;//存款的金额
int pos;
int userAswer;
cout<<"请输入存款的账号:";
cin>>accNum;
cout<<"请输入存款金额:";
cin>>money;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在!"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>userAswer;
if(userAswer==1)
{
depositmoney();
}
else
{
work();
}
}
else
{
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
putout(array[pos]);
//找到了该卡号所对应的卡
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
putout(array[pos]);
cout<<"存款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
}
void drawmoney()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入取款系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
long accNum;//取款的账号
double money;//取款的金额
int pos;
int userAnswer;
char wrd[20]={0};
cout<<"请输入取款的账号:";
cin>>accNum;
cout<<"请输入账号密码:";
cin>>wrd;
cout<<"请输入取款金额:";
cin>>money;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新选择!"<<endl;
work();
}
else
{
if(strcmp(array[pos].accPwd,wrd)!=0)
{
cout<<"您输入的密码有误!"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>userAnswer;
if(userAnswer==1)
{
depositmoney();
}
else
{
work();
}
}
else
{
//展示取款前卡的信息
cout<<"取款前卡的信息:"<<endl;
putout(array[pos]);
//找到了该卡号所对应的卡
if(array[pos].balance<=0)
{
cout<<"对不起,您的余额不足!请重新选择您要办理的业务!"<<endl;
work();
}
else
{
if(array[pos].balance-money<0)
{
cout<<"您的余额不足!请重新选择您要办理的业务!"<<endl;
work();
}
else
{
array[pos].balance-=money;
//展示取款后卡的信息
cout<<"取款后卡的信息:"<<endl;
putout(array[pos]);
cout<<"取款成功,按任意键返回!"<<endl;
fflush(stdin);
getchar();
work();
}
}
}
}
}
void showbalance()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入查询系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
int pos;
int userAnswer;
long accNum;
char wrd[20]={0};
cout<<"请输入查询的账号:";
cin>>accNum;
cout<<"请输入账号密码:";
cin>>wrd;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl;
work();
}
else
{
if(strcmp(array[pos].accPwd,wrd)!=0)
{
cout<<"您输入的密码有误!"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>userAnswer;
if(userAnswer==1)
{
showbalance();
}
else
{
work();
}
}
else
{
//展示下卡的信息
cout<<"您的银行卡的信息:"<<endl;
putout(array[pos]);
cout<<"按任意键返回!"<<endl;
fflush(stdin);
getchar();
work();
}
}
}
void openaccount()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入开户系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
char possword[20];
int userAnswer;
int i;
cout<<"请输入户名:";
cin>>array[size].accName;
cout<<"请输入密码:";
cin>>array[size].accPwd;
cout<<"请再次输入密码:";
cin>> possword;
if(strcmp(array[size].accPwd,possword)==0)
{
if(isPassLegal(possword))
{
cout<<"请输入金额:";
cin>>array[size].balance;
strcpy(array[size].flag,"正常");
array[size].accNumber=autoCreament();
putout(array[size]);
size++;
cout<<"开户成功,按任意键返回"<<endl;
fflush(stdin);//清除缓存区
getchar();//任意键返回
work();
}
else
{
cout<<"密码必须是纯数字,并且是6-8位"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>i;
if(i==1)
{
openaccount();
}
else
{
work();
}
}
}
else
{ cout<<"两次密码不相符!按1继续办理该业务,按其他数字键返回主界面!"<<endl;
cout<<"请输入您的选择:";
cin>>userAnswer;
if(userAnswer==1)
{
openaccount();
}
else
{
work();
}
}
}
void closeaccount()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入销户系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
long accNum;
int pos;
int userAnswer;
int answer;
char wrd[20]={0};
cout<<"请输入您要销户的账号:";
cin>>accNum;
cout<<"请输入账号密码:";
cin>>wrd;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl;
work();
}
else
{
if(strcmp(array[pos].accPwd,wrd)!=0)
{
cout<<"您输入的密码有误!"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>answer;
if(answer==1)
{
closeaccount();
}
else
{
work();
}
}
else
{
cout<<"确认注销此账户?"<<endl;
cout<<"按1销户,按其他数字键返回主界面!";
cin>>userAnswer;
if(userAnswer==1)
{
array[pos].balance=0;
strcpy(array[pos].flag,"销户");
cout<<"销户已成功,按任意键返回!"<<endl;
putout(array[pos]);
fflush(stdin);//清除缓存区
getchar();//任意键返回
work();
}
else
{
cout<<"您已取消销户,按任意键返回"<<endl;
fflush(stdin);//清除缓存区
getchar();//任意键返回
work();
}
}
}
}
void changepwd()
{
cout<<"+----------------------------------+"<<endl;
cout<<" "<<endl;
cout<<" 欢迎进入改密系统 "<<endl;
cout<<" "<<endl;
cout<<"+----------------------------------+"<<endl;
int pos;
int userAnswer;
int Answer;
int j;
long accNum;
char wrd[20]={0};
char pwd1[20]={0};
char pwd2[20]={0};
cout<<"请输入您的账号:";
cin>>accNum;
cout<<"请输入账号密码:";
cin>>wrd;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl;
work();
}
else
{
if(strcmp(array[pos].accPwd,wrd)!=0)
{
cout<<"您输入的密码有误!"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>userAnswer;
if(userAnswer==1)
{
changepwd();
}
else
{
work();
}
}
else
{
cout<<"请输入您的新密码:";
cin>>pwd1;
cout<<"请再次输入您的新密码:";
cin>>pwd2;
if(strcmp(pwd1,pwd2)==0)
{
if(isPassLegal(pwd1))
{
cout<<"修改密码成功!"<<endl;
strcpy(array[pos].accPwd,pwd1);
cout<<"您的银行卡的信息:"<<endl;
putout(array[pos]);
cout<<"按任意键返回!"<<endl;
fflush(stdin);
getchar();
work();
}
else
{
cout<<"密码必须是纯数字,并且是6-8位"<<endl;
cout<<"按1继续办理该业务,按其他数字键返回主界面!";
cin>>j;
if(j==1)
{
changepwd();
}
else
{
work();
}
}
}
else
{
cout<<"您两次输入的密码不一致。"<<endl;
cout<<"按1继续办理本业务,按其他数字键返回主界面!";
cin>>Answer;
if(Answer==1)
{
changepwd();
}
else
{
work();
}
}
}
}
}
long autoCreament()
{
if(size==0){
return INITNUMBER;
}else{
return array[size-1].accNumber+1;
}
}
void exit()
{
cout<<"欢迎您下次办理银行储蓄综合业务!"<<endl;
}
void putout(Account acc)
{
cout<<"+--------------------------------------------+"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(8)<<"账号"<<"|"<<setiosflags(ios::left)<<setw(8)<<"户名"<<"|"<<setiosflags(ios::left)<<setw(8)<<"密码"<<"|"<<setiosflags(ios::left)<<setw(8)<<"余额"<<"|"<<setiosflags(ios::left)<<setw(8)<<"状态"<<"|"<<endl;
cout<<"+--------------------------------------------+"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.accNumber<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.accName<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.accPwd<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.balance<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.flag<<"|"<<endl;
cout<<"+--------------------------------------------+"<<endl;
}
int searchAccount(long accNumber)
{
int i,pos=-1;
for(i=0;i<size;i++){
if(array[i].accNumber==accNumber&&strcmp(array[i].flag,"销户")!=0){
//找到了这张卡
pos=i;
break;
}
}
return pos;//返回下标
}
bool isPassLegal(char pass[])
{
bool flag=true;
int len=strlen(pass),i;
if(len<9&&len>=6){
//满足6-8位
for(i=0;i<len;i++){
if(pass[i]<48||pass[i]>57){
flag=false;
break;
}
}
}else{
//不满足6-8位
flag=false;
}
return flag;
}
师创年终任务—银行系统(第N季)
最新推荐文章于 2024-04-30 12:27:55 发布
