`
icheng
  • 浏览: 826326 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

详细解析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___2gt;//"<<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自动取款机模拟程序

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    java源码包2

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包4

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    JAVA上百实例源码以及开源项目源代码

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    JAVA上百实例源码以及开源项目

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

Global site tag (gtag.js) - Google Analytics