综合设计

5、ATM柜员机模拟程序

要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:

查询余额:初始余额为10000元

ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。

ATM存款:不能出现负存款。

修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

/***********************************
******** ATM柜员机模拟程序 *********
***********************************/
#include<iostream>
using namespace std;
int password=123456;
double money=10000.00;
void login();
void cover();
void check();
void draw();
void save();
void reset();

int main()        //柜员机只有数字键盘,纯数字操作,int,若擅自输入其它字符,概不负责
{                 //另外,输入数字超过10位会死循环
	login();
	return 0;
}

void login()          //登录界面
{
	int name,pwd;
	cout<<"******************************************************************************"<<endl;
	cout<<endl;
	cout<<"请输入账号:";
	cin>>name;
	cout<<"请输入密码:";
	cin>>pwd;
	cout<<endl;
	if(name==123456&&pwd==password)    //假设初始卡号和密码为123456
		cover();
	else
		cout<<"账号或密码错误,请重新输入!"<<endl;
	login();
}


void cover()         //主界面
{
	int n;
	cout<<"******************************************************************************"<<endl;
	cout<<"1.查询余额"<<endl;
	cout<<"2.取款"<<endl;
	cout<<"3.存款"<<endl;
	cout<<"4.修改密码"<<endl;
	cout<<"5.退出登录"<<endl;
	cout<<endl;
	cout<<"请根据提示输入对应的序号:";
	cin>>n;
	cout<<endl;
	switch(n)
	{
	case 1:
		check();
		break;
		
	case 2:
		draw();
		break;
		
	case 3:
		save();
		break;

	case 4:
		reset();
		break;

	case 5:
		cout<<"成功退出登录!"<<endl;
		cout<<endl;
		cout<<"请按任意键继续......"<<endl;
		getchar();
		getchar();
		login();
		break;

	default:
		cout<<"输入有误,请重新输入!"<<endl;
		cout<<endl;
		cover();
	}
}

void check()        //查询余额
{
	cout<<"您的余额为:"<<money<<endl;
	cout<<endl;
	cout<<"请按任意键返回主界面......"<<endl;
	getchar();       //暂停句,网上说有cin要写两句getchar才有效
	getchar(); 
	cout<<endl;
	cover();
}

void draw()                //取款
{
	int tikuan;
	int n;
	cout<<"请输入提款数额(每次取款金额为100的倍数,总额不超过5000元):";
	cin>>tikuan;
	cout<<endl;
	if(tikuan<=money&&tikuan>=0&&tikuan%100==0&&tikuan<=5000)
	{
		money-=tikuan;
		cout<<"成功提款"<<tikuan<<"元,现在您的余额为"<<money<<"元"<<endl;
		cout<<endl;
		cout<<"<输入1继续提款>"<<endl;
		cout<<"<输入其它任意“整数”返回主界面......>"<<endl;
		cin>>n;
		cout<<endl;
		if(n==1)
			draw();
		else
			cover();
	}
	else
		cout<<"输入有误!"<<endl;
	draw();
}

void save()        //存款
{
	double cunkuan;
	int n;
	cout<<"请输入存款数额:";
	cin>>cunkuan;
	if(cunkuan>=0)
	{
		money+=cunkuan;
		cout<<"成功存款"<<cunkuan<<"元,现在您的余额为"<<money<<"元"<<endl;
		cout<<endl;
		cout<<"<输入1继续存款>"<<endl;
		cout<<"<输入其它任意“整数”返回主界面......>"<<endl;
		cin>>n;
		cout<<endl;
		if(n==1)
			save();
		else
			cover();
	}
	else
		cout<<"输入有误!"<<endl;
	save();
}

void reset()         //修改密码
{
	int pwd0,pwd1,pwd2;
	cout<<"请输入旧密码:";
		cin>>pwd0;
		cout<<endl;
	if(pwd0!=password)
	{
		cout<<"密码错误!"<<endl;
		cout<<endl;
		reset();
	}
	cout<<"请输入新密码(6位数字,不允许6位完全相同):";
	cin>>pwd1;
	cout<<endl;
	cout<<"请再次输入新密码:";
	cin>>pwd2;
	cout<<endl;
	if(pwd1==pwd2
		&&pwd1!=000000&&pwd1!=111111
		&&pwd1!=222222&&pwd1!=333333
		&&pwd1!=444444&&pwd1!=555555
		&&pwd1!=666666&&pwd1!=777777
		&&pwd1!=888888&&pwd1!=999999)
	{
		password=pwd1;
		cout<<"密码修改成功!"<<endl;
		cout<<endl;
		cout<<"请按任意键返回主界面......"<<endl;
		getchar();
		getchar(); 
		cout<<endl;
		cout<<endl;
		cover();
	}
	else
		cout<<"新密码输入有误!"<<endl;
		cout<<"请按任意键返回......"<<endl;
		getchar();
		getchar(); 
		cout<<endl;
		reset();
}	

	
	

密码错误,登录失败.

账号密码正确,成功登录


账号错误,登录失败



查询余额

提款失败与成功提款



存款失败与成功存款


修改密码



退出登录



*********************************************************************************************************************************************

我本来想用字符串作为密码





但不知道为什么在输入账号的时候会进入死循环



我估计问题出在字符数组无法进行条件比较


所以现在无法单独对密码进行长度限定,密码修改不受数位限制,输入001234和输入1234效果一样


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值