年终任务_银行系统

/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: zhizhen.cpp
* 作    者:纪子龙
* 完成日期:2012年12月26日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
*/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
using namespace std;

#define MAXACCOUNTNUMBER 20000//银行中最大的账户数量
#define INITNUMBER 10001;//银行卡的开号初始值
int size=0;//银行中银行卡数量

void work(); //工作菜单
void openac();//开户
long autoCreament();//账号自加
void closeac();//销户
int  searchAccount(long accNumber);//查找账号
void withdraw();  //取款
void despoit(); //存款
void inq();//查询
int wdpass(int n);//输账号的同时验证密码是否正确
void transfer();//转账
void welcome();//欢迎界面
void changepassword();//修改密码
void withdrawclac(int n);
struct Account
{
    long accNumber;   //卡号
    char accName[20]; //户主
    char accPwd[10];  //密码
    double balance;   //余额
    char flag[6];     //卡的状态
};
Account array[MAXACCOUNTNUMBER];//银行中所有卡
void printAccount(Account acc);//显示卡的信息

int main()
{
	welcome();
    int i;
	char loginName[20];
    char loginPwd[20];
	for(i=0;i<3;i++)
    {
        cout<<"请输入用户名:";
        cin>>loginName;
        cout<<"请输入密码:";
        cin>>loginPwd;
        if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)
        {
            work();
            break;
        }else{

            cout<<"用户名或密码输入错误"<<endl;
			cout<<"这是您第"<<i+1<<"次输入错误,输错三次账号冻结"<<endl;
        }
    }
    return 0;
}
void welcome()
{	int i;
cout<<"+";
for(i=0;i<30;i++)
cout<<"-";
cout<<"+"<<endl;
for(i=0;i<3;i++)
{
	cout<<"|";
	for(i=0;i<30;i++)
	{
		cout<<" ";
	}
	cout<<"|"<<endl;
}
cout<<"|  储  蓄  平  台  欢  迎  您  |"<<endl;
for(i=0;i<3;i++)
{
	cout<<"|";
	for(i=0;i<30;i++)
	{
		cout<<" ";
	}
	cout<<"|"<<endl;
}
cout<<"+";
for(i=0;i<30;i++)
cout<<"-";
cout<<"+"<<endl;

}
void work()
{
    int n;
	cout<<"|------------------------------|"<<endl;
	cout<<"| 1. 开    户      2. 销    户 |"<<endl;
	cout<<"| 3. 存    款      4. 取    款 |"<<endl;
	cout<<"| 5. 查    询      6. 转    账 |"<<endl;
	cout<<"| 7. 修改密码      8. 退    出 |"<<endl;
	cout<<"|------------------------------|"<<endl;
    cout<<"请输入要选择的功能代号"<<endl;
    cin>>n;
    if(n<0||n>9)
    {
        cout<<"输错不要着急"<<endl;
		fflush(stdin);
		getchar();
		work();
	}
    switch(n){
    case 8:
        cout<<"谢谢您,欢迎下次再来"<<endl;
        break;
    case 1:
        openac();  //开户
        break;
    case 2:
        closeac();
        break;
    case 3:
        despoit();
        break;
	case 4:
		withdraw();
        break;
	case 5:
		inq();
		break;
    case 6:
        transfer();
        break;
    case 7:
         changepassword();
         break;
	}
    return ;
}
void openac()//开户
{

    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();
	work();
}
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;
}
void closeac()//销户
{
	long accNum;//销户的账号
	int pos,q;
	int n;
	cout<<"请输入要销户的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
        //...
		closeac();
	}
	else{
		q=wdpass(pos);
		if(q==-1)
		{
			cout<<"连续输错三次,账号已冻结"<<endl;
		}
		else
		{
			cout<<"是否将账号内的余额取出,是请输入1,否请输入2"<<endl;
			cin>>n;
			if(n==1)
			{
				withdrawclac(pos);//取款			
				strcpy(array[pos].flag,"销户");
				cout<<"销户成功,按任意键返回"<<endl;
				printAccount(array[pos]);
				fflush(stdin);
				getchar();
				work();
			}
			if(n==2)
            {
				strcpy(array[pos].flag,"销户");
				cout<<"销户成功,按任意键返回"<<endl;
				printAccount(array[pos]);
				fflush(stdin);
				getchar();
				work();
			}
		}
	}
	return ;
}
void withdraw()//取款
{
	long accNum;//取款的账号
	int money,pos;
	int q;
	cout<<"请输入取款的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
        //...
		withdraw();
	}else{
		q=wdpass(pos);
		if(q==-1)
		{
			cout<<"连续输错三次,账号已冻结"<<endl;
		}
		else
		{
			cout<<"请输入取款金额:";
			cin>>money;
			if(money>0)
			{
			if(money>array[pos].balance)
			{
				cout<<"余额不足"<<endl;
				cout<<"按任意键返回"<<endl;
				fflush(stdin);
				getchar();
				work();
			}
			else
			{
				cout<<"取款前卡的信息:"<<endl;
				printAccount(array[pos]);
				//找到了该卡号所对应的卡
				array[pos].balance-=money;
				//展示存款后卡的信息
				cout<<"取款后卡的信息:"<<endl;
				printAccount(array[pos]);
				cout<<"取款成功,按任意键返回"<<endl;
				fflush(stdin);
				getchar();
				work();
			}
			}else{
				cout<<"不要着急再输一次"<<endl;
				withdraw();
			}
			}
	}
	return ;
}
int  wdpass(int n)
{
	char password[10];
	int i,m=-1;
	for(i=1;i<4;i++)
	{
		cout<<"请输入密码:";
		cin>>password;
		if(strcmp(array[n].accPwd,password)==0)
		{
			return n;
			break;
		}
		else
		{

			cout<<"这是您第"<<i<<"次密码输入错误"<<endl;
		}
	}
	return m;
}
void inq()//查询
{
	long accNum;//查询的账号
	int pos,q;
	cout<<"请输入要查询的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
        //...
		inq();
	}else{
		q=wdpass(pos);
		if(q==-1)
		{
			cout<<"您已连续输错3次密码无法查看该账号信息"<<endl;
			cout<<"按任意键返回"<<endl;
			fflush(stdin);
			getchar();
			work();
		}
		else
			printAccount(array[pos]);
			fflush(stdin);
			getchar();
			work();
	}
	return ;
}
int  searchAccount(long accNumber)//查找账号
{
	int i,pos=-1;
    for(i=0;i<size;i++)
	{
        if(array[i].accNumber==accNumber)
		{
			if(strcmp(array[i].flag,"正常")==0)
			{
            //找到了这张卡
            pos=i;
            break;
			}else{
            cout<<"该账户已销户"<<endl;
			}
        }
    }
    return pos;
}
void despoit()
{
    long accNum;//存款的账号
    int pos,type,days;
    double money,rate,period,interest;  //存款的金额,利率,
    cout<<"请输入存款的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
        //...
        despoit();
    }else{
		cout<<"请输入存款金额:";
		cin>>money;
		if(money>=0)
		{
		cout<<"1.活期存款:";
		cout<<"2.3个月:";
		cout<<"3.6个月:";
		cout<<"4.一年:";
		cout<<"5.两年:";
		cout<<"6.三年:";
		cout<<"7.五年:";
		cout<<"请选择存款类型:";
		cin>>type;
		switch(type)
		{
		case 1:cout<<"请输入存款天数:";
			cin >> days;
			period = days/360.0;
			rate = 0.005;
			break;

		case 2:
			period = 0.25;
			rate = 0.031;
			break;


		case 3: period = 0.5;
			rate = 0.033;
			break;

		case 4: period = 1;
			rate = 0.035;
			break;
		case 5:  period = 2;
			rate = 0.044;
			break;

		case 6: period = 3;
			rate = 0.05;
			break;

		case 7: period = 5;
			rate = 0.055;
			break;
		}
	interest=money*rate*period;
    cout << "到期利息为:" << interest << "元,本息合计共"<< interest + money <<"元。"<<endl;
	//展示下存款前卡的信息
	cout<<"存款前卡的信息:"<<endl;
	printAccount(array[pos]);
	//找到了该卡号所对应的卡
	array[pos].balance+=money;
	//展示存款后卡的信息
	cout<<"存款后卡的信息:"<<endl;
	printAccount(array[pos]);
	cout<<"存款成功,按任意键返回"<<endl;
	fflush(stdin);
	getchar();
	work();
	}
	else
	{
		cout<<"别着急再输一次"<<endl;
		despoit();
	}
	}
return ;
}
void transfer()
{
	long accNum1,accNum2;//取款的账号
	int money,pos1,pos2;
	int q;
	cout<<"请输入转款的账号:";
    cin>>accNum1;
    pos1=searchAccount(accNum1);
    if(pos1==-1){
        //卡号有误
        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
        //...
		transfer();
	}else{
		q=wdpass(pos1);
		if(q==-1)
		{
			cout<<"连续输错三次,账号已冻结"<<endl;
		}
		else
		{
			cout<<"请输入转款金额:";
			cin>>money;
			if(money>array[pos1].balance)
			{
				cout<<"余额不足"<<endl;
				cout<<"按任意键返回"<<endl;
				fflush(stdin);
				getchar();
				work();
			}
			else
			{
				cout<<"转款前卡的信息:"<<endl;
				printAccount(array[pos1]);
				cout<<"请输入要转入的账号"<<endl;
				cin>>accNum2;
				pos2=searchAccount(accNum2);
				if(pos2==-1)
				{
					//卡号有误
					cout<<"卡号不存在,请重新输入卡号"<<endl;
					//...
					transfer();
				}else{
					array[pos1].balance-=money;
					array[pos2].balance+=money;
					cout<<"转出卡转款后的信息"<<endl;
					printAccount(array[pos1]);
				}
			}
		}
	}
		return ;
	}
	void changepassword()
	{
		long accNum;//修改密码的账号
	int pos;
	int q;
	char newpass1[10];
	char newpass2[10];
	cout<<"请输入修改密码的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请重新输入卡号"<<endl;
        //...
		changepassword();
	}else{
		q=wdpass(pos);
		if(q==-1)
		{
			cout<<"连续输错三次,账号已冻结"<<endl;
		}else{
			cout<<"请输入新密码:";
			cin>>newpass1;
			cout<<"请再次输入刚刚输入的新密码:";
			cin>>newpass2;
			if(strcmp(newpass1,newpass2)==0)
			{
				strcpy(array[pos].accPwd,newpass1);
				cout<<"修改后账号信息为"<<endl;
				printAccount(array[pos]);
				cout<<"修改密码成功,按任意键返回"<<endl;
				fflush(stdin);
				getchar();
				work();
			}else{
				cout<<"前后两次密码输入不一致"<<endl;
			    changepassword();
		}
	}
	}
		return ;
	}
void   withdrawclac(int n)
{	
			int money;
			cout<<"请输入取款金额:";
			cin>>money;
			if(money>0)
			{
			if(money>array[n].balance)
			{
				cout<<"余额不足"<<endl;
				cout<<"按任意键返回"<<endl;
				fflush(stdin);
				getchar();
				work();
			}
			else
			{
				cout<<"取款前卡的信息:"<<endl;
				printAccount(array[n]);
				//找到了该卡号所对应的卡
				array[n].balance-=money;
				//展示存款后卡的信息
				cout<<"取款后卡的信息:"<<endl;
				printAccount(array[n]);
			}
			}else{
				cout<<"不要着急再输一次"<<endl;
				withdrawclac(n);
			}
				return ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值