我的银行项目终于出炉了!!奔泪了!!

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
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;

//欢迎界面
void welcome();
void login();  //登录界面
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款
void deposit();
//取款
void withdrawal();
//查询
void query();
//转账
void transfer();
//销户
void cancelAccount();
//改密
void changepassword();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);

int main()
{
	
    
    welcome();//欢迎界面
	login();//登录界面
	mainFrame();//主菜单
    return 0;
}
void welcome()
{
    cout<<"     +--------------------------------------+"<<endl;
	cout<<"     *                                      *"<<endl;
	cout<<"     *       欢迎使用储蓄综合业务平台       *"<<endl;
	cout<<"     *                                      *"<<endl;
	cout<<"     +--------------------------------------+"<<endl;
}
void login(){
	int i=0;
	char name[10],cod[10];
	for(i=0;i<3;i++){
		cout<<"请输入用户名:";
		gets(name);
		cout<<"请输入密码:";
		gets(cod);
		if(strcmp(name,"admin")==0&&strcmp(cod,"admin")==0)
		{
			break;
		}
		else
			cout<<"用户名或密码输入错误!"<<endl;
	}
	if(i>=3)
		exit(0);
}

void mainFrame()
{
	int order;
	cout<<"|----------------------------|"<<endl;
	cout<<"|-------1.开户---------------|"<<endl;
	cout<<"|-------2.存款---------------|"<<endl;
	cout<<"|-------3.取款---------------|"<<endl;
	cout<<"|-------4.销户---------------|"<<endl;
	cout<<"|-------5.查询---------------|"<<endl;
	cout<<"|-------6.转账---------------|"<<endl;
	cout<<"|-------7.改密---------------|"<<endl;
	cout<<"|-------8.退出---------------|"<<endl;
	cout<<"|----------------------------|"<<endl;
	cout<<"请输入操作指令"<<endl;
	cin>>order;
	switch(order){
	case 1:
		openAccount();
		break;
	case 2:
		deposit();
		break;
	case 3:
		withdrawal();
		break;
	case 4:
		cancelAccount();
		break;
	case 5:
		query();
		break;
	case 6:
		transfer();
		break;
	case 7:
		changepassword();
		break;
	default:
		exit(0);
	}
}

void openAccount()
{
	char pwd[20];
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>array[size].accPwd;
	cout<<"请确认密码:";
	cin>>pwd;
	if(strcmp(array[size].accPwd,pwd)==0)
	{
		cout<<"请输入金额:";
		cin>>array[size].balance;
		
		strcpy(array[size].flag,"正常");
		//写卡号
		array[size].accNumber=autoCreament();
		printAccount(array[size]);
		size++;
		cout<<"开户成功,按任意键返回"<<endl;
		
	}else{
		cout<<"两次密码输入不符,开户失败!按任意键继续!";
	}
    fflush(stdin);
    getchar();
    mainFrame();
}

long autoCreament()
{
    if(size==0){
        return INITNUMBER;
    }else{
        return array[size-1].accNumber+1;
    }
}

//输出指定卡的信息
void printAccount(Account acc)
{
    cout<<"|----------------------------------------|"<<endl;
    cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(8)<<"密码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl;
    cout<<setiosflags(ios::left)<<"+----------------------------------------+"<<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;  //返回pos;
}

void deposit()//定义存款函数
{
    long accNum;//存款的账号
    double money;//存款的金额
    int pos,errornum=0;
	for(errornum=0;errornum<3;errornum++)
	{
		cout<<"请输入存款的账号:";
		cin>>accNum;
		pos=searchAccount(accNum);
		if(strcmp(array[pos].flag,"正常")==0&&pos!=-1){
			//卡号正确
			cout<<"请输入存款金额:";
			cin>>money;
			//展示下存款前卡的信息
			cout<<"存款前卡的信息:"<<endl;
			printAccount(array[pos]);
			array[pos].balance+=money;
			//展示存款后卡的信息
			cout<<"存款后卡的信息:"<<endl;
			printAccount(array[pos]);
			cout<<"存款成功!"<<endl;
			break;
		}else{
			cout<<"卡号不存在或已销户,请仔细确认!"<<endl;
		}
	}
	cout<<"按任意键继续!"<<endl;
	fflush(stdin);
	getchar();
	mainFrame();
}
void withdrawal()
{
	long accNum;//取款的账号
    double money;//取款的金额
    int pos,errornum=0;
	char pwd[10];
	for(errornum=0;errornum<3;errornum++)
	{
		cout<<"请输入取款的账号:";
		cin>>accNum;	
		pos=searchAccount(accNum);
		cout<<"请输入密码:";
		cin>>pwd;
		if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1)
		{
			if(strcmp(array[pos].flag,"正常")==0)
			{
				cout<<"请输入取款金额:";
				cin>>money;
				if(array[pos].balance>=money)
				{
					//展示下取款前卡的信息
					cout<<"取款前卡的信息:"<<endl;
					printAccount(array[pos]);
					array[pos].balance-=money;
					//展示取款后卡的信息
					cout<<"取款后卡的信息:"<<endl;
					printAccount(array[pos]);
					cout<<"取款成功!"<<endl;
					break;
				}else{
					cout<<"您的卡内余额不足!";
					break;
				}
			}else{
				cout<<"卡的状态异常!";
			}
		}
		else
		{
			cout<<"账号或密码输入错误!"<<endl;
		}
	}
	cout<<"按任意键回主菜单:";
	fflush(stdin);
	getchar();
	mainFrame();
}
void query()//定义查询函数
{
	long accNum;//账号
    
    int pos,errornum=0;
	char pwd[10];
	for(errornum=0;errornum<3;errornum++)
	{
		cout<<"请输入您要查询的的账号:";
		cin>>accNum;	
		pos=searchAccount(accNum);
		
		cout<<"请输入密码:";
		cin>>pwd;
		if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1)
		{
			printAccount(array[pos]);
			break;
		}
		else
		{
			cout<<"账号或密码输入错误!"<<endl;
		}
	}
	cout<<"按任意键回主菜单:";
	fflush(stdin);
	getchar();
	mainFrame();
}
void transfer()
{
	long accNum1,accNum2;
	int pos1,pos2,errornum=0;
	double money;
	char pwd[10];
	for(errornum=0;errornum<3;errornum++)
	{
		cout<<"请输入您的账号:";
		cin>>accNum1;	
		pos1=searchAccount(accNum1);
		cout<<"请输入密码:";
		cin>>pwd;
		if(strcmp(array[pos1].accPwd,pwd)==0&&pos1!=-1)
		{
			if(strcmp(array[pos1].flag,"正常")==0)
			{
				//转账前卡的信息
				cout<<"转账前卡的信息:"<<endl;
				printAccount(array[pos1]);
				cout<<"请输入转账金额:";
				cin>>money;
				
				cout<<"请输入要转入的账号:"<<endl;
				cin>>accNum2;
				pos2=searchAccount(accNum2);
				if(pos2!=-1&&strcmp(array[pos2].flag,"正常")==0)
				{
					array[pos1].balance-=money;
					array[pos2].balance+=money;
					cout<<"转账后卡的信息:"<<endl;
					printAccount(array[pos1]);
					cout<<"转账成功!";
					break;
				}else{
					cout<<"您输入的账号有误或状态异常,转账失败!"<<endl;
					break;
				}
			}else{
				cout<<"卡的状态异常,无法进行操作!";
				break;
			}
		}
		else{
			cout<<"账号或密码错误!";
		}
	}
	cout<<"按任意键回主菜单:";
	fflush(stdin);
	getchar();
	mainFrame();
}
void cancelAccount()
{
	long accNum;//账号
    
    int pos,errornum=0;
	char pwd[10];
	for(errornum=0;errornum<3;errornum++)
	{
		cout<<"请输入账号:";
		cin>>accNum;	
		pos=searchAccount(accNum);
		cout<<"请输入密码:";
		cin>>pwd;
		if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1)
		{
			//打印销户前卡的信息
			printAccount(array[pos]);
			array[pos].balance=0;
			strcpy(array[pos].flag,"销户");
			printAccount(array[pos]);
			cout<<"销户成功!";
			break;
		}
		else
		{
			cout<<"账号或密码输入错误!"<<endl;
		}
	}
	cout<<"按任意键回主菜单:";
	fflush(stdin);
	getchar();
	mainFrame();
}

void changepassword()
{
	long accNum;//账号
    
    int pos,errornum=0;
	char pwd[10],pwd1[10],pwd2[10],pwd3[10];
	for(errornum=0;errornum<3;errornum++){
		cout<<"请输入账号:";
		cin>>accNum;	
		pos=searchAccount(accNum);
		cout<<"请输入密码:";
		cin>>pwd;
		if(strcmp(array[pos].accPwd,pwd)==0&&pos!=-1)
		{
			if(strcmp(array[pos].flag,"正常")==0)
			{
				cout<<"请输入原密码:";
				cin>>pwd1;
				cout<<"请输入新密码:";
				cin>>pwd2;
				cout<<"请确认新密码:";
				cin>>pwd3;
				if(strcmp(array[pos].accPwd,pwd1)==0&&strcmp(pwd2,pwd3)==0)
				{
					strcpy(array[pos].accPwd,pwd3);
					cout<<"改密成功!"<<endl;
					printAccount(array[pos]);//打印改密后卡的信息
					break;
				}else{
					cout<<"您输入的密码有误!";
				}
			}else{
				cout<<"卡的状态异常,无法操作!";
			}
		}else{
			cout<<"账号或密码输入错误!"<<endl;
		}
	}
	cout<<"按任意键回主菜单:";
	fflush(stdin);
	getchar();
	mainFrame();
}





你可能感兴趣的:(我的银行项目终于出炉了!!奔泪了!!)