C++课程设计

ATM柜员机模拟程序

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

查询余额:初始余额为10000

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

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

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

#include<iostream>
#include<string.h>
using namespace std;
struct account
{
 int kahao;
 int password;
 int num;
}
account[2]={123456,123456,10000};
void welcome()
{
  cout<<"           ************************************************************"<<endl;
  cout<<"           *                欢迎使用本行自动取款机!!                *"<<endl;
  cout<<"           *                                                          *"<<endl;
  cout<<"           *            本取款机仅支持存取款和查询业务                 *"<<endl;
  cout<<"           *                                                          *"<<endl;
  cout<<"           *           若有疑问,请和营业大厅服务人员联系             *"<<endl;
  cout<<"           *                                                          *"<<endl;
  cout<<"           *          或拨打联系电话95533进行人工咨询服务              *"<<endl;
  cout<<"           *                                                          *"<<endl;
  cout<<"           ************************************************************"<<endl;
  cout<<endl;
  cout<<endl;
  cout<<endl;
 }

void menu()
{
 cout<<"      查询余额,请按 1"<<endl;
 cout<<"    取款 ,请按 2"<<endl;
 cout<<"    存款,请按 3"<<endl;
 cout<<"     修改密码,请按 4"<<endl;
}

void start()
{
 int m=account[0].kahao;
 int n=account[0].password;
 int k,s;
 int p;
  cout<<"                      请输入您的卡号......                              "<<endl;
  cout<<"                      请输入您的密码......                              "<<endl;
 for(p=0;p<3;p++)                        /*密码只能输入三次,若三次都输入错误,
										 则应冻结账户!*/
 {
	 cin>>k;
	 cin>>s;
	 if(k!=m || s!=n )
	 {
		 cout<<"您的卡号或密码输入错误,请重新输入!"<<endl;
	 }
	 else
	 {
		 menu();                      //密码输入正确则进入功能菜单界面
		 break;
	 }
 }
 if(p=2&&s!=m)
 {
	 cout<<"    由于您输入错误次数过多,为了保证您的账户安全,此账户已冻结!   "<<endl;
	 cout<<"    请到附近营业厅带上您的有效证件解除冻结!                       "<<endl;
	 exit(1);
 }
}

void qukuan()
{
 
 cout<<"                     您正在办理的是:   取款业务                        "<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 int j;
 j=account[0].num;
 cout<<"                       您的现有金额为:"<<j<<"元                         "<<endl;
 cout<<"                      请输入您的取款金额:"<<endl;
 cout<<endl;
 int q;
 cin>>q;
 if(q>j)
	 cout<<"                  对不起,您的余额不足"<<endl;
 else if(q>5000 )
	 cout<<"                对不起,每次取款不能超过5000"<<endl;
 else if(q%100!=0)
	 cout<<"                对不起,每次取款金额只能为100的整数倍 "<<endl;
 else
 {
	 cout<<"                     取款成功,请收好您的现金!                     "<<endl;
	 account[0].num=account[0].num-q;
 }
}
void cunkuan()
{
 cout<<"                   您现在正在办理的是:   存款业务                      "<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<"                     请输入您的存款金额                                 "<<endl;
 cout<<endl;
 cout<<"                     请将您的人民币放入指定位置                         "<<endl;
 int f;
 cin>>f;
 int b;
 if(f%100==0)
  b=0;
 else
  b=1;
 switch(b)
 {
 case 1:
	 cout<<"                     请输入整100的金额!!                          "<<endl;
	 break;
 case 0:
	 cout<<"                     存款成功!!!                                 "<<endl;
	 cout<<endl;
	 cout<<endl;
  int j;
  j=account[0].num ;             
  j=j+f;                           //存款之后,应改变初始的余额
  account[0].num=j;
 }
}
void chaxun()
{
 cout<<"                  您现在正在办理的业务是:   查询余额                   "<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 int j;
 j=account[0].num;
 cout<<"                           您现在的余额为:"<<j<<"                      "<<endl;
}
void mima()
{
	int g,k;
 cout<<"                 您现在正在办理的业务是:    修改密码                   "<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<"                           请输入您的旧密码:                           "<<endl;
 cout<<endl;
 
 int i,j=0;
 for(k=0;k<3;k++)
 {
	 cin>>g;
 if(g!=account[0].password)
	{
	 cout<<"您的旧密码输入错误,请重新输入!";
     cout<<endl;
 }
 else
	 break;
 }
    
 char newpassword1[6] ;
	do
	{
     cout<<"                           请输入您的新密码:                           "<<endl;
    cout<<endl;
    
/*	for(i=0;i<6;i++)
    cin>>newpassword1;*/
	cin>>newpassword1;
	for(i=0;i<5;i++)
	{
	
		if(newpassword1[i]==newpassword1[i+1])
			j++;
	}
    
		if(j==5)
     cout<<"密码数字不能全部相同,请重新修改!";
		
	}	while(j==5);

    cout<<endl;
    cout<<"                           请再次输入您的密码:                           "<<endl;
    cout<<endl;
    char newpassword2[6];
/*	for(i=0;i<6;i++)
    cin>>newpassword2[i];*/
	cin>>newpassword2;
    if(strcmp(newpassword2,newpassword1)!=0)               
		//strmp字符串比较函数
    cout<<"                      您两次密码输入不同,密码修改失败!               "<<endl;
	else{
			cout<<"                      密码修改成功!请牢记您的密码!                   "<<endl;
               account[0].password=atoi(newpassword2);               
			   //函数atoi是把字符数组newpassword2转换为整型数组
	}
   
		
 
}
void back()
{
 cout<<"                            谢谢使用本系统!!!                        "<<endl;
 cout<<endl;
 cout<<endl;
}


int main()
{
 welcome();
 start();

loop: int z;
 cin>>z;
 switch(z)
 {
 case 1:chaxun();break;
 case 2:qukuan();break;
 case 3:cunkuan();break;
 case 4:mima();break;
 default:
	 cout<<"                        您的输入有误,请重新输入!!              "<<endl;
 }
 cout<<"                        您是否继续使用本取款机?                      "<<endl;
 cout<<"                                 是,  请按 1                         "<<endl;
 cout<<"                                 否,  请按 0                         "<<endl;
 int p;
 cin>>p;
 switch(p)
 {
 case 1:menu();
	 goto loop;                              //如果p=1,则表示用户还要使用取款机,则利用goto语句实现跳转到loop语句的地方继续执行
  
 case 0:cout<<"谢谢使用!"<<endl;
	 break;
 }
 
back();


return 0;
}

登陆界面:


 查询余额界面:


取款界面:




存款界面:



修改密码界面:



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值