银行系统 先发制人

#include <iostream>
#include <string.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 mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//输出指定卡的信息
void printAccount(Account acc);
//输入卡号查找卡在数组中的下标
int searchAccount(long accNumber);
//存款
void deposit();
//取款
void drawmoney();
//修该密码
void updatepassword();
//查询
void showbalance();
//转账
void transferAccounts();
//注销用户
void cancelAccount();
int main()
{
    //int array[20];

    char loginName[20];
    char loginPwd[20];
    int i;
    //欢迎界面
    welcome();
    //..
    for(i=0;i<3;i++)
    {
        cout<<"请输入用户名:";
        cin>>loginName;
        cout<<"请输入密码:";
        cin>>loginPwd;
        if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)
        {
            mainFrame();
            break;
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }
    return 0;
}

void welcome()
{
    cout<<"┏━━━━━━━━━━━━━━━━━━┓"<<endl;
    cout<<"                                        "<<endl;
    cout<<"┃         欢迎登陆银行系统           ┃"<<endl;
    cout<<"                                        "<<endl;
    cout<<"┗━━━━━━━━━━━━━━━━━━┛"<<endl;
}

void mainFrame()
{
   int order;
   cout<<"┏━━━━━━━━━━━━━━━━━━┓"<<endl;
   cout<<"┋             ①.开户                ┋"<<endl;
   cout<<"┋             ②.存款                ┋"<<endl;
   cout<<"┋             ③.取款                ┋"<<endl;
   cout<<"┋             ④.修给密码            ┋"<<endl;
   cout<<"┋             ⑤.查询                ┋"<<endl;
   cout<<"┋             ⑥.转账                ┋"<<endl;
   cout<<"┋             ⑦.注销用户            ┋"<<endl;
   cout<<"┋             ⑧.退出                ┋"<<endl;
   cout<<"┗━━━━━━━━━━━━━━━━━━┛"<<endl;
   cout<<"请输入操作指令"<<endl;
   cin>>order;
   switch(order){
       case 1:
            openAccount();//开户
            break;
       case 2:
            deposit();//存款
            break;
	   case 3:
           drawmoney();//取款
		   	break;
	   case 4:
			updatepassword();//修给密码
			break;
	   case 5:
		   showbalance();//查询
		   break;
	   case 6:
		   transferAccounts();//转账
		   break;
	   case 7:
           cancelAccount();//注销用户
		   break;
       default:
		   cout<<"欢迎下次再光临O(∩_∩)O~"<<endl;
            break;
   }
}

void openAccount()//开户
{
    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;
    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;
}
int searchAccount(long accNumber)
{
    int i ,pos=-1;
    for(i=0;i<size;i++)
    {
        if(array[i].accNumber==accNumber){
        //找到这张卡
        pos=i;
        break;
    }
    }
    return pos;

}
/*
 1.存款.......................
 2.取款.......................
 3.修给密码...................
 4.查询.......................
 5.转账.......................
 6.销户.......................
 */
void deposit()//存款
{

    long accNum;
	double money,ly,cq,lx;
	int pos,days,type;
	cout<<"请输入存款的账号:";
	cin>>accNum;
	cout<<"请输入存款金额:";
	cin>>money;
	pos=searchAccount(accNum);
	if(pos==-1)
	{
	    //卡号有误
	    cout<<"卡号不存在,请重新输入"<<endl;
	    deposit();
	}else {
//利息计算
cout<<"请选择存款类型"<<endl;
 cout<<"1.活期存款"<<endl;
 cout<<"2.存款3个月"<<endl;
 cout<<"3.存款6个月"<<endl;
 cout<<"4.存款1年"<<endl;
 cout<<"5.存款2年"<<endl;
 cout<<"6.存款3年"<<endl;
 cout<<"7.存款4年"<<endl;
 cout<<"请输入存款类型:";
 cin>>type;
 switch(type){
 case 1:
	 cout<<"请输入存款天数:";
   cin>>days;
         cq=days/360.0;
   ly=0.005;
   break;
  case 2:
   cq=0.25;
   ly=0.031;
   break;
  case 3:
   cq=0.5;
   ly=0.033;
   break;
  case 4:
   cq=1;
   ly=0.035;
   break;
  case 5:
   cq=2;
   ly=0.044;
   break;
  case 6:
   cq=3;
   ly=0.05;
   break;
  case 7:
   cq=4;
   ly=0.055;
   break;
 }
	cout<<"展示存款前的卡信息:"<<endl;
	//存款卡前信息
         printAccount(array[pos]);
		 lx=money*ly*cq;
	array[pos].balance=array[pos].balance+money+lx;
	//存款卡后信息
	cout<<"存款后,你的余额信息为"<<endl;
	printAccount(array[pos]);
    cout<<"存款成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}
}
void drawmoney()//取款
{
	int pos;
    long accNum;//取款的账号
    double money;//取款的钱数
    char pwd[10];//取款的密码
    cout<<"请输入取款的账号:";
    cin>>accNum;
    cout<<"请输入取款账号的密码:";
    cin>>pwd;
    cout<<"请输入取款金额:";
    cin>>money;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号或密码有误
        cout<<"卡号有误,请重新输入"<<endl;
        drawmoney();//再次运行
    }else{
        if(strcmp(array[pos].accPwd,pwd)==0){
            //密码是对
            if(array[pos].balance>money)
            {
				//余额充足
				cout<<"展现取款前信息"<<endl;
				printAccount(array[pos]);
                array[pos].balance-=money;
                cout<<"取款后,您的余额信息"<<endl;
	            printAccount(array[pos]);
            }
            else
            {
				//余额不足
			                cout<<"你的余额已不足。"<<endl;
           
            }
        }else{
            //密码不对
            cout<<"密码有误,请重新输入"<<endl;
           drawmoney();//重新执行
        }

}
	cout<<"取款成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}
void updatepassword()//修该密码
{
    long accNum;//卡号
    int pos;
	char p1[10];
	char p2[10];
	cout<<"请输入你要修该密码的卡号";
	cin>>accNum;
    cout<<"请输入密码:";
    cin>>p1;
    cout<<"请确认密码:";
    cin>>p2;
    pos=searchAccount(accNum);
    if(pos==-1){
    cout<<"您输入的卡号有误,请重新输入:"<<endl;
    updatepassword();
    }else{
if(strcmp(p1,p2)==0)//两次密码一致
{
    strcpy(array[pos].accPwd,p1);
	cout<<"修给密码成功"<<endl;
	cout<<"展现给密码后的信息"<<endl;
		printAccount(array[pos]);
}
else//两次密码不一致
{
cout<<"两次输入密码错误,修给密码失败,请重新修改密码";
updatepassword();
}
    }
 cout<<"修改密码成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}
void showbalance()//查询余额
{
    int pos;
    long accNum;
        cout<<"请输入你要查询余额的卡号"<<endl;
        cin>>accNum;
        pos=searchAccount(accNum);
        if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请重新输入卡号"<<endl;
        showbalance();
        }else{
cout<<"你当前的余额信息"<<endl;
	printAccount(array[pos]);
        }
 cout<<"查询余额成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}
void transferAccounts()
{
	long accNum1,accNum2;
	double money;
	int pos1,pos2;
	char pwd[10];
	cout<<"请输入你的账号";
	cin>>accNum1;
	cout<<"请输入你的密码";
	cin>>pwd;
	cout<<"请输入对方的账号";
	cin>>accNum2;
		cout<<"请输入你要转账的金额";
		cin>>money;
pos1=searchAccount(accNum1);
pos2=searchAccount(accNum2);
if(pos1==-1)
{
//卡号不存在
	cout<<"卡号有误,请重新输入"<<endl;
	transferAccounts();
}else{
	if(strcmp(array[pos1].accPwd,pwd)==0){
		//密码正确
		if(array[pos1].balance>money){ 
			//余额充足,可以转账
			if(pos2==-1)
			{
				//转账用户不存在
                   cout<<"转账用户不存在,请重新输入"<<endl;
				   transferAccounts();
                    }else{
				//转账用户存在
				array[pos1].balance=array[pos1].balance-money;
					array[pos2].balance=array[pos2].balance+money;
					cout<<"转账成功"<<endl;
					cout<<"显示户主信息"<<endl;
                     printAccount(array[pos1]);
					cout<<"显示转账用户信息"<<endl;
					printAccount(array[pos2]);
					}
		
		}else{
		//余额不足,无法转账
			cout<<"余额不足,无法转账,请重新输入"<<endl;
			transferAccounts();
		}
	
	
	}else{cout<<"密码不正确,请重新输入"<<endl;
	transferAccounts();
	}

}
	cout<<"转账成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}
void cancelAccount()
{
int pos;
long accNum;
char pwd[10];
cout<<"请输入你要注销的账户号";
cin>>accNum;
cout<<"请输入你要注销用户密码";
cin>>pwd;
pos=searchAccount(accNum);
if(pos==-1){//注销用户不存在
cout<<"你要注销的用户不存在,请重新输入"<<endl;  
 cancelAccount();
}else{  
	//注销用户存在
	if(strcmp(array[pos].accPwd,pwd)==0){
	//密码正确
		
		    strcpy(array[pos].accName,"不存在");			
			strcpy(array[pos].accPwd,"不存在");
			array[pos].balance=0;
			strcpy(array[pos].flag,"不存在");
			cout<<"显示你已注销的用户信息"<<endl;
            printAccount(array[pos]);

	}else{
	//密码不正确34
		cout<<"你输入的密码不正确,请重新输入"<<endl;	
	cancelAccount();	
	}
}
 cout<<"注销用户成功,按任意键返回"<<endl;
      fflush(stdin);
        getchar();
        mainFrame();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值