详细解析C++编写的ATM自动取款机模拟程序

基于C++的ATM自动取款机设计 根据C++类的基本知识和类的基本性质去实现ATM自动取款机的基本功能。 阅读详情
// ************************************
// *                                  *
// *          function.h              *
// *                                  *
// ************************************

#include<iostream.h>


class consumer;

class ATM   
// ATM取款机
{
public:
    ATM(consumer& cn):cnsm(cn)
{
}
void welcome();  
// 登陆界面
bool check_passwd(char n[],char pwd[]);
// 核对密码
void change_passwd();
// 修改密码
    void fetchmoney();  
// 取款
void information(); 
// 查询信息
void exitATM();   
// 退出系统
void functionshow();
// 功能界面
void lock();   
// 锁机
private:
int times;   
// 记录密码输入次数
consumer& cnsm;

};

class consumer
// 用户
{
public:
friend class ATM;
consumer(char Name[],char Num[],
float Money,char Password[]);
protected:
char* get_name();
// 取得姓名
char* get_num();
// 取得卡号
char* get_passwd();
// 取得密码
float get_money();
// 取得余额
void set_passwd(char pwd[]);
// 设置密码
void set_money(float m);
// 取钱
private:  
char passwd[8];
// 用户密码
char name[20];
// 用户姓名
char num[20];     
float money;
};

// ************************************
// *                                  *
// *     consumer类的成员函数         *
// *                                  *
// ************************************ 

#include"function.h"
#include<string.h>

consumer::consumer(char Name[],
char Num[],float Money,char Password[])
{
   strcpy(name,Name); 
   strcpy(num,Num);
   money=Money;
   strcpy(passwd,Password);
}

float consumer::get_money()
{
 return money;
}

char* consumer::get_name()
{
 return name;
}

char* consumer::get_num()
{
 return num;
}

char* consumer::get_passwd()
{
 return passwd;
}

void consumer::set_money(float m)
{
 money-=m;
}

void consumer::set_passwd(char pwd[])
{
 strcpy(passwd,pwd);
}


// ************************************
// *                                  *
// *          ATM类的成员函数         *
// *                                  *
// ************************************ 


#include "function.h"
#include <string.h>
#include<stdlib.h>

void ATM::welcome()
{
 times=0;
 cout<<"$ 
 欢迎使用若雪银行ATM自动取款机!~!
 "<<endl;

 char pwd[8],num[20],ch;
 int i=0;
 do
 {
   i=0;
   cout<<endl<<"请输入卡号:";
    do
    {
          cin.get(ch);
       num[i++]=ch;
    }while(ch!='/n');
        num[i-1]='/0';

   i=0;
   cout<<"请输入密码:";
    do
    {
          cin.get(ch);
       pwd[i++]=ch;
    }while(ch!='/n');
        pwd[i-1]='/0';

    if(!check_passwd(num,pwd))
    {
      cout<<"你输入的卡号或密码有误,
	  请重新输入"<<endl;
      times++;
    }
    else
    {
      functionshow(); 
    }
 }while(times<3);
    lock(); 
}

bool ATM::check_passwd(char num[],
char pwd[])
{
 if(strcmp(num,cnsm.get_num())==0&&strcmp
 (pwd,cnsm.get_passwd())==0)
  return true;
 else 
  return false;
}

void ATM::functionshow()
{
   int n;

   do
   {
     cout<<endl<<"请你输入相应的操作序号进行操作:
	 "<<endl;
     cout<<"1) 修改密码 "<<endl
      <<"2) 取款     "<<endl
      <<"3) 查询余额 "<<endl
         <<"4) 退出系统 "<<endl;
     cout<<"$ >//";
     cin>>n;
     while(n<1||n>4)
  {
      cout<<"请输入正确的操作序号!"<<endl;
      cout<<"$ >//";
      cin>>n;
  }
  
     switch(n)
  {
      case 1:   change_passwd();
	  break;
      case 2:   fetchmoney(); 
	  break;
      case 3:   information(); 
	  break;
      case 4:   exitATM();  
	  break;   
  }

   }while(true);

 

}

void ATM::change_passwd()
{
 char pwd[8],repwd[8];
 
 times=0;
 do
 {
 cout<<endl<<"请输入旧密码:";
 cin>>pwd;
    if(!check_passwd(cnsm.get_num(),pwd))
  times++;
 else
  break;
 }while(times<3);

 if(times==3)
  lock();
    
 int t=0;
    do
 {
  cout<<"请输入新密码:";
  cin>>pwd;
  cout<<"请再输入一次新密码:";
  cin>>repwd;
  if((t=strcmp(pwd,repwd))!=0)
   cout<<"你输入的两次密码不一样,
   请重新输入!"<<endl;
 }while(t!=0);

 cnsm.set_passwd(pwd);
 cout<<"密码修改成功,请牢记!"<<endl;

}

void ATM::fetchmoney()
{
   float m;
   char ch;
   do
   {

      cout<<endl<<"你要取多少钱:"
	  <<"/n___FCKpd___1gt;//"<<endl ;
      cin>>m;
      while(m<=0)
   {
    cout<<"请输入正确的数字!"<<endl;
    cout<<"$ >// ";
    cin>>m;
   }

      if(cnsm.get_money()-m<0)
   {
     cout<<"对不起,你的余额不足!"
	 <<endl;
   }
   else
   {
   cout<<endl<<"操作成功,请收好钱!"
   <<endl;
         cnsm.set_money(m);
   }
   cout<<"是否要继续该项操作:(Y/N) "
   <<endl;
   cout<<"$ >// ";
   cin>>ch;
   while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
  {
     cout<<"$ >//";
     cin>>ch;
  }

   }while(ch=='y'||ch=='Y');

}

void ATM::information()
{
 cout<<"**********************************"<<endl;
 cout<<"*"<<endl; 
 cout<<"*     用户姓名:"<<cnsm.get_name()<<endl;
 cout<<"*     卡号:    "<<cnsm.get_num()<<endl;
 cout<<"*     余额:     "<<cnsm.get_money()<<endl;
 cout<<"**********************************"<<endl;

}

void ATM::lock()
{
 cout<<endl<<"对不起,由于你的操作有误,
 你的卡已经被没收! "<<endl;
 exit(1);
}

void ATM::exitATM()
{
 cout<<endl<<"感谢你对本银行的支持,
 欢迎下次光临!"<<endl;
 cout<<"请取卡……"<<endl;
 exit(0);
}


// ************************************
// *                                  *
// *          ATM.cpp                 *
// *                                  *
// ************************************ 
#include<iostream.h>
#include"function.h"

void main()
{
  consumer c1("jim","12345",5200.3f,"123");
  // 先构造一个用户
  ATM atm(c1);
  atm.welcome();
}

C++编写的ATM自动取款机模拟程序 学习c++有一段时间了,前两天有个朋友要我帮她做个模拟ATM自动取款机的程序,于是花了一个晚上写了出来,其实这个程序也很简单,但是我觉得它对于刚学c++的人来说比较有用处,因为它可以帮助你更加深刻的理解面向对象程序设计的真谛-------以现实世界为模型编写程序。学习c++的真正目的也就在于此,真正的理解面向对象程序设计! // ********************************** 阅读详情

相关推荐

ATM自动取款机模拟程序(c++实现)

实现ATM取款机的基本功能,如给用户提供查询余额、取款、修改密码、吃卡、退出系统等服务

ATM机器模拟(C++实现,MySQL储存)

1.新建账户2.登录账户3.删除账户4.现金存取5.余额查询6.密码修改7.明细查询8.线上转账ss<<x;string y;ss>>y;return y;num<<x;int n;num>>n;return n;可以改进的地方很多:1.我将用户信息临时储存到user,transer当中,没有考虑到并发存取的情况。2.界面不够友好,大多数界面没有退出功能。3.没有进行数据备份,没有容灾措施,可能会导致数据流失的情况。

illmagineness的博客 995

C++编写ATM机模拟程序

(1)装载账户信息文件:所有的账户信息应该能永久保存在一个特定的磁盘文件中。 (2)创建新的账户(账户信息包括:储户的身份证号码、真实姓名、通信地址和电话号码、账户类型、货币种类、预存款额、账户密码)、 (3)账户登录 (4)存款 (5)取款:定期存款用户不得在未到期之前取款;信用卡用户允许透支10000元;活期用户只要有存款就能取。 (6)修改密码 (7)查询本人所有的账户:储户在成功登录某一账户后,可以查询本人(以身份证号为根据),名下的所有其他账户。 (8)查看存储年限:针对定期储户的服务,储户可以在正确登录账户后立即查看该账户的到期日期; (9)查看透支额度:针对信用卡用户的服务,储户可以在正确登录账户后查看到该账户的透支额度;

简单C++程序的编写5:模拟ATM机

运用C++语言,模拟24小时运营的ATM机,实现其五大功能: 1、余额查询 2、取款 3、存款 4、转账 5、密码修改 代码: #include&lt;iostream.h&gt; #include&lt;conio.h&gt; char *password() //定义输入密码的函数 { int j; char *n=new char[4]; ...

Akun·Everson 5419

用C++语言编写的ATM存取款机

这是用C++编写的银行ATM机存取款机,能实现正常的注册新用户、登录、存取款、转账、查询、安全退出等功能操作,已在VS2008控制台上成功运行,而且界面做得也不错

模拟ATM机存取款管理系统设计C++

用C++模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。

C语言ATM机代码

#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;#include &lt;windows.h&gt;#define NUM 1001void denglu();void shezhi();void enter();void enter2();void tuichu();void zhuanzhang...

qq_42001429的博客 4948

c++自动提款机ATM源代码

c++自动提款机ATM源代码,本代码整体,系统的描述了ATM的整个开发过程。

用Linux编写简单的atm取款机系统,详细解析C++编写的ATM自动取款机模拟程序

学习c++有一段时间了,前两天有个朋友要我帮她做个模拟ATM自动取款机的程序,于是花了一个晚上写了出来,其实这个程序也很简单,但是我觉得它对于刚学c++的人来说比较有用处,因为它可以帮助你更加深刻的理解面向对象程序设计的真谛-------以现实世界为模型编写程序。学习c++的真正目的也就在于此,真正的理解面向对象程序设计!// ***********************************...

weixin_39836726的博客 568

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

使用VS Code创建第一个Flutter工程

你可以使用任意文本编辑器结合命令行工具来开发Flutter应用。然而,我们推荐使用本文介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget辅助编辑等功能,以及为项目的运行和调试提供支持。推荐的开发工具有VS Code、Android Studio、IntelliJ。本文将重点介绍如何使用VS Code进行Flutter应用开发。

2501_91373349的博客 2126

一个博客-------------

一个博客------------- http://blog.youkuaiyun.com/jsh13417/article/details/8461512   详细解析C++编写的ATM自动取款机模拟程序 http://www.sudu.cn/info/html/edu/C/20071107/7053.html ...

yimeng123520的博客 109

PX4飞控CAN总线通信深度配置:从menuconfig到驱动加载的完整指南

本文详细解析了PX4飞控中CAN总线通信的深度配置流程,从menuconfig选项设置到驱动加载的完整指南。涵盖硬件抽象层、驱动层和应用层的配置细节,提供实际验证方法和故障排查技巧,帮助开发者高效实现CAN通信,特别适用于无人机和机器人底盘运动控制等场景。

weixin_30374009的博客 499

详细解析C 编写的ATM自动取款机模拟程序

// ************************************// *                                  *// *          function.h              *// *                                  *// ************************************ #inc

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 2502

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

实战对比:VINS和ORBSLAM3在无人机避障中的表现(含实测数据)

本文通过实战测试,深度对比了VINS和ORBSLAM3两种主流视觉SLAM算法在无人机避障中的表现。测试聚焦于光照变化、动态遮挡和快速运动三大挑战,提供了详细的实测数据与性能分析。结果表明,VINS在计算效率和实时性上占优,而ORBSLAM3在定位精度和地图管理方面更稳健,为不同应用场景下的工程选型提供了清晰依据。

醉三国 627

c++自动取款机atm源代码_ATM插卡显账亮资

什么是ATM?自动取款机又称ATM(Automatic Teller Machine的缩写),意思是自动柜员机,因大部分用于取款,又称自动取款机。它是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。可提取现金、查询存款余额、进行账户之间资金划拨、余额查询等工作;还可以进行现金存款(实时入账)、支票存款(国内无)、存折补登、中间业务等工作...

weixin_31038719的博客 1128

如何利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率),如何理解网络稀疏度

grena工具箱被设计用于fMRI数据的图论网络分析。它是一套MATLAB函数和基于MATLAB的接口,用于常规的fMRI预处理,用于计算和统计分析最常用的网络指标,如小世界参数、效率、度、间性、关联性、层级性、同步性和模块化。......

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9173

atm柜员机模拟程序c语言,ATM自动取款机模拟程序

个人讲解学员刘同学以高中文凭在学习过1个月后C和C++语言基础后,成功完成了本实践。实践目的制作这个代码的目的就是实践ATM机的一些简单功能,题目要求如下:定义1个结构体类型ACCOUNT_STRU来表示一个银行帐户。定义1个ACCOUNT_STRU数组来表示银行。写个函数来表示ATM的功能的模拟:开户销户查询余额查询最后5笔明细存款取款转帐退出程序启动后,以代码方式生成几个帐户,新帐户通过键盘输...

weixin_28945799的博客 1086

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1181

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词: AI Agent, W

AI天才研究院 859

C++ATM取存款机模拟程序[2023-01-09]

ATM取存款机模拟程序要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM取款机系统,用户可以按照以下规则进行;查询余额:初始余额为10000元;ATM取款:每次取款金额为 100的倍数,总额不超过5000元,支取金额不允许透支;ATM存款:不能出现负存款;修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改码;报告要求 (每位同学独立完成)一、需求分析。

code helper 639

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: socket实现tcp/ip服务端源码,无线程
下一篇: ASP 验证码的程序及原理
goingup
博客等级 码龄22年 52粉丝 158原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值