#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 Deposit();//存款函数
void GoDeposit();//进入存款
void Query();//查询函数
void GoQuery();//进入查询
void Withdraw();//取款函数
void GoWithdraw();//进入取款
void CloseAnAccount();//销户函数
//输出指定卡的信息
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<<"** **"<<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.取款 **"<<endl;
cout<<"** 2.销户 5.查询 **"<<endl;
cout<<"** 3.存款 0.退出 **"<<endl;
cout<<"*********************************************"<<endl;
Chose();
}
//选择进入其他业务
void Chose()
{
int choice;
cout<<"请输入您的选择:";//输入选择
cin>>choice;
if(choice>=0&&choice<=5)
{
switch(choice)//分别进入不同业务
{
case 0:
Exit();
break;
case 1:
OpenAnAccount();
break;
case 2:
CloseAnAccount();
break;
case 3:
Deposit();
break;
case 4:
Withdraw();
break;
case 5:
Query();
break;
}
}
else
{
cout<<"输入有误,请核实后重新输入!";//输入有误
Mainmenu();
Chose();
}
}
void OpenAnAccount()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入开户系统 **"<<endl;
cout<<"*********************************************"<<endl;
cout<<"请输入户名:";
cin>>array[size].accName;
cout<<"请输入密码:"; //输入并保存数据
cin>>array[size].accPwd;
cout<<"请输入金额:";
cin>>array[size].balance;
strcpy(array[size].flag,"正常");//*******记住
array[size].accNumber=autoCreament();
printAccount(array[size]);
size++;
cout<<"开户成功,按任意键返回..."<<endl;
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
//生成银行中自增卡号
long autoCreament()
{
if(size==0)
{
return INITNUMBER;
}
else
{
return array[size-1].accNumber+1;//以前最后一位户主的卡号加一作为新户主的卡号
}
}
//销户界面
void CloseAnAccount()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入销户系统 **"<<endl;
cout<<"*********************************************"<<endl;
}
//存款界面
void Deposit()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入存款系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoDeposit();
}
//取款界面
void Withdraw()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入取款系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoWithdraw();
}
//查询界面
void Query()
{
cout<<"*********************************************"<<endl;
cout<<"** 欢迎进入查询系统 **"<<endl;
cout<<"*********************************************"<<endl;
GoQuery();
}
//退出界面
void Exit()
{
cout<<"*********************************************"<<endl;
cout<<"**谢谢您使用储蓄综合业务平台,欢迎下次光临 **"<<endl;
cout<<"*********************************************"<<endl;
}
void GoDeposit()
{
long accNum;//存款的账号
double money;//存款的金额
int pos;
cout<<"请输入存款的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
GoDeposit();
}else
{
cout<<"请输入存款金额:";
cin>>money;
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
printAccount(array[pos]);
//存款后的余额
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"存款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
}
void GoWithdraw()
{
long accNum;//取款的账号
char accnum[10];//密码一定要定义成char数组,注意!!!
double money;//取款的金额
int pos;
cout<<"请输入取款的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
GoWithdraw();
}
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<<"取款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
}
else
{
cout<<"输入密码有误!"<<endl;
GoWithdraw();//返回
}
}
}
void GoQuery()
{
long accNum;//查询的账号
char accnum[10];//密码一定要定义成char数组,注意!!!
int pos;
cout<<"请输入您要查询的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
GoWithdraw();
}
else//卡号正确,进入
{
cout<<"请输入密码:";
cin>>accnum;//输入密码
if(strcmp(array[pos].accPwd,accnum)==0)
{
cout<<"您的卡的信息为:"<<endl;
printAccount(array[pos]);
cout<<"查询成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
Mainmenu();//返回主菜单
}
else
{
cout<<"输入密码有误!"<<endl;
GoQuery();//返回
}
}
}
//输出指定卡的信息
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){
//找到了这张卡
pos=i;
break;
}
}
return pos;
}