#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]; //卡的状态
};//结构体结束符(切记,别漏掉!!!)
//欢迎函数
void Welcome();
//登陆函数
void Denglu();
//主界面
void Mainmenu();
//选择函数
void Chose();
//退出函数
void Exit();
//开户函数
void OpenAnAccount();
//进入开户
void GoOpenAnAccount();
//存款函数
void Deposit();
//进入存款
void GoDeposit();
//改密函数
void ChangeCipher();
//进入改密
void GoChangeCipher();
//查询函数
void Query();
//进入查询
void GoQuery();
//取款函数
void Withdraw();
//进入取款
void GoWithdraw();
//销户函数
void CloseAnAccount();
//进入销户
void GoCloseAnAccount();
//校验密码必须是6-8位,而且是纯数字
bool isPassLegal(char pass[]);
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中卡的数量(全局变量)
int size=0;
//生成银行中自增卡号
long autoCreament();
//定义全局变量用作密码、用户名
const char Mima[10]="admin";
const char Yonghuming[10]="admin";
int main()
{
Welcome();
Denglu();
return 0;
}
//欢迎界面
void Welcome()
{
cout<<"*********************************************"<<endl;
cout<<"** **"<<endl;
cout<<"** 欢迎使用储蓄综合业务平台 **"<<endl;
cout<<"** V1.0版 **"<<endl;
cout<<"*********************************************"<<endl;
}
//登陆系统
void Denglu()
{
int i;
char str1[10],str2[10];//用于输入用户名和密码
cout<<"请输入用户名:";
cin>>str1;//输入用户名
if(strcmp(str1,Yonghuming)==0)
{
cout<<endl;
cout<<"请输入登陆密码:";
cin>>str2;
if(strcmp(str2,Mima)==0)//判断密码是否正确
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl;
cout<<"*********************************************"<<endl;
Mainmenu(); //正确,进入系统
}
else
{
for(i=2;i>0;--i)
{
cout<<"密码错误,请重新输入:(您还有"<<i<<"次机会)";//密码不正确,三次输入机会,三次不正确,退出
cin>>str2;
cout<<endl;
if(strcmp(str2,Mima)==0)
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl;
cout<<"*********************************************"<<endl;
Mainmenu();
break;
}
if(i==1)//三次没输正确
{
cout<<"您连续三次输错密码,请到前台找回密码,谢谢合作!";
break;
}
}
}
}
else
{
cout<<"该用户名不存在."<<endl; //用户名错误
Denglu();//重新返回登陆界面
}
}
//主菜单
void Mainmenu()
{
cout<<"*********************************************"<<endl;
cout<<"** *1.开户 *4.改密 *0.退出 **"<<endl;
cout<<"** *2.存款 *5.查询 **"<<endl;
cout<<"** *3.取款 *6.销户 **"<<endl;
cout<<"*********************************************"<<endl;
Chose();
}
//选择进入其他业务
void Chose()
{
int choice;
cout<<"请输入您要进行的业务代号:";//输入选择
cin>>choice;
if(choice>=0&&choice<=6)
{
switch(choice)//分别进入不同业务
{
case 0:
Exit();
break;
case 1:
OpenAnAccount();
break;
case 2:
Deposit();
break;
case 3:
Withdraw();
break;
case 4:
ChangeCipher();
break;
case 5:
Query();
break;
case 6:
CloseAnAccount();
break;
}
}
else
{
cout<<"输入有误,请核实后重新输入!"<<endl;//输入有误
Mainmenu();
}
}
//开户界面
void OpenAnAccount()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入开户系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoOpenAnAccount();
}
//存款界面
void Deposit()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入存款系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoDeposit();
}
//取款界面
void Withdraw()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入取款系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoWithdraw();
}
//改密界面
void ChangeCipher()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入改密系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoChangeCipher();
}
//销户界面
void CloseAnAccount()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入销户系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoCloseAnAccount();
}
//查询界面
void Query()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入查询系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoQuery();
}
//退出界面
void Exit()
{
cout<<"*********************************************"<<endl;
cout<<"**谢谢您使用储蓄综合业务平台,欢迎下次光临 **"<<endl;
cout<<"*********************************************"<<endl;
}
//进入开户
void GoOpenAnAccount()
{
char pwd1[10];
char pwd2[10];
int j;
cout<<"请输入户名:";
cin>>array[size].accName;
cout<<"请输入密码:"; //输入并保存数据
cin>>pwd1;
cout<<"请再次输入密码:";
cin>>pwd2;
if(strcmp(pwd1,pwd2)==0)//strcmp的使用
{
if(isPassLegal(pwd1))//密码合法
{
strcpy(array[size].accPwd,pwd1);//strcpyd的使用
cout<<"请输入金额:";
cin>>array[size].balance;
strcpy(array[size].flag,"正常");//*******记住
array[size].accNumber=autoCreament();
printAccount(array[size]);
size++;
cout<<"开户成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
else
{
cout<<"密码必须是纯数字,并且是6-8位"<<endl;
GoOpenAnAccount();
}
}
else
{
cout<<"两次密码不一致!";
cout<<"是否继续进行开户?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoOpenAnAccount();//继续开户
else
Mainmenu();//返回主菜单
}
}
//进入存款
void GoDeposit()
{
int j;
long accNum;//存款的卡号
double money;//存款的金额
int pos;
cout<<"请输入存款的卡号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在!"<<endl;
Mainmenu();//返回主菜单
}else
{
cout<<"请输入存款金额:";
cin>>money;
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
printAccount(array[pos]);
//存款后的余额
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"存款成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
}
//进入取款
void GoWithdraw()
{
int j;
long accNum;//取款的卡号
char accnum[10];//密码一定要定义成char数组,注意!!!
double money;//取款的金额
int pos;
cout<<"请输入取款的卡号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在!"<<endl;
Mainmenu();//返回主菜单
}
else//卡号正确,进入
{
cout<<"请输入密码:";
cin>>accnum;//输入密码
if(strcmp(array[pos].accPwd,accnum)==0)
{
cout<<"请输入取款金额:";
cin>>money;
if(array[pos].balance<money)
{
cout<<"您的余额不足,无法取出!!!"<<endl;
GoWithdraw();
}
else
{
//展示下取款前卡的信息
cout<<"取款前卡的信息:"<<endl;
printAccount(array[pos]);
//取款后的余额
array[pos].balance-=money;
//展示取款后卡的信息
cout<<"取款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"取款成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
}
else
{
cout<<"输入密码有误!"<<endl;
cout<<"是否继续要进行取款?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoWithdraw();//继续取款
else
Mainmenu();//返回主菜单
}
}
}
//进入改密
void GoChangeCipher()
{
char pwd1[10];
char pwd2[10];
int j;
long accNum;//要修改的账号
char accnum[10];//密码一定要定义成char数组,注意!!!
int pos;
cout<<"请输入您要修改密码的卡号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"该卡号不存在!"<<endl;
Mainmenu();//返回主菜单
}
else//卡号正确,进入
{
cout<<"请输入密码:";
cin>>accnum; //输入密码
if(strcmp(array[pos].accPwd,accnum)==0)
{
cout<<"请输入新密码:"; //输入并保存数据
cin>>pwd1;
cout<<"请再次输入新密码:";
cin>>pwd2;
if(strcmp(pwd1,pwd2)==0)//strcmp的使用
{
if(isPassLegal(pwd1))//密码合法
{
strcpy(array[pos].accPwd,pwd1);//strcpyd的使用
printAccount(array[pos]);
cout<<"修改密码成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
else
{
cout<<"密码必须是纯数字,并且是6-8位"<<endl;
GoChangeCipher();
}
}
else
{
cout<<"两次密码不一致!";//两次密码不一致
cout<<"是否继续进行改密?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoChangeCipher();//继续改密
else
Mainmenu();//返回主菜单
}
}
else
{
cout<<"输入密码有误!"<<endl;
cout<<"是否继续要进行改密?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoChangeCipher();//继续改密
else
Mainmenu();//返回主菜单
}
}
}
//进入销户
void GoCloseAnAccount()
{
int j,i;
int pos;
long CloseAccount;//销户的卡号
char accnum[10];//密码一定要定义成char数组,注意!!!
cout<<"请输入您要销户的卡号:";
cin>>CloseAccount;
pos=searchAccount(CloseAccount);//查找卡号
if(pos==-1)
{
//卡号有误
cout<<"该卡号不存在!"<<endl;
Mainmenu();//返回主菜单
}
else//卡号正确,进入
{
cout<<"请输入密码:";
cin>>accnum;//输入密码
if(strcmp(array[pos].accPwd,accnum)==0)
{
cout<<"是否确认要进行销户?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)//确认销户
{
array[pos].balance=0;//余额为零
strcpy(array[pos].flag,"销户");//状态为销户
printAccount(array[pos]);//打印
cout<<"销户成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
else
{
Mainmenu();//返回主菜单
}
}
else
{
cout<<"密码输入错误!";
cout<<"是否继续要进行销户?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoCloseAnAccount();//继续销户
else
Mainmenu();//返回主菜单
}
}
}
//进入查询
void GoQuery()
{
int j;
long accNum;//查询的账号
char accnum[10];//密码一定要定义成char数组,注意!!!
int pos;
cout<<"请输入您要查询的卡号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"该卡号不存在!"<<endl;
Mainmenu();//返回主菜单
}
else//卡号正确,进入
{
cout<<"请输入密码:";
cin>>accnum;//输入密码
if(strcmp(array[pos].accPwd,accnum)==0)
{
cout<<"您的卡的信息为:"<<endl;
printAccount(array[pos]);
cout<<"查询成功,按任意键返回...";
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
else
{
cout<<"输入密码有误!"<<endl;
cout<<"是否继续要进行查询?"<<endl;
cout<<"继续请按1...返回主菜单请按其他数字键";
cin>>j;
if(j==1)
GoQuery();//继续查询
else
Mainmenu();//返回主菜单
}
}
}
//判断密码是否规范
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;
}
//生成银行中自增卡号
long autoCreament()
{
if(size==0)
{
return INITNUMBER;
}
else
{
return array[size-1].accNumber+1;//以前前一位户主的卡号加1作为新户主的卡号
}
}
//输出指定卡的信息
void printAccount(Account acc)
{
cout<<"+--------------------------------------------+"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(8)<<"卡号"<<"|"<<setw(8)<<"户名"<<"|"<<setw(8)<<"密码"<<"|"<<setw(8)<<"金额"<<"|"<<setw(8)<<"状态"<<"|"<<endl;
cout<<"+--------------------------------------------+"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.accNumber<<"|"<<setw(8)<<acc.accName<<"|"<<setw(8)<<acc.accPwd<<"|"<<setw(8)<<acc.balance<<"|"<<setw(8)<<acc.flag<<"|"<<endl;
cout<<"+--------------------------------------------+"<<endl;
}
/*根据卡号查找卡的下标
* 若返回值>=0,卡号是正确
* 若返回值=-1,卡号有误
*/
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;
}
实训:银行系统(终结版)
最新推荐文章于 2024-06-26 22:59:42 发布