师创年终任务—银行系统(大结局)

#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();
//根据卡号查询指定的账户所在的下标
int searchAccount(long accNumber);
//个人信息的输出
void putout(Account acc);
//退出界面
void exit();


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        退出 请按0   |"<<endl;
	cout<<"|                                  |"<<endl;
	cout<<"+----------------------------------+"<<endl;
	cout<<"请输入您的选择(0-5):";
	cin>>cChoice;
	if(cChoice<0||cChoice>5)
	{
		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 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;
	cout<<"请输入户名:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>array[size].accPwd;
	cout<<"请再次输入密码:";
	cin>> possword;
	if(strcmp(array[size].accPwd,possword)==0)
	{
	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<<"两次密码不相符!按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();
			}
		}
	}
}

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;//返回下标
}

你可能感兴趣的:(师创年终任务—银行系统(大结局))