(完整word版)模拟ATM自动取款机系统C++版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while ((c=getch())!='\r')
{
password[i]=c;
putchar('*');
i++;
if (i>=6)
{
break;
}
}
return password;
}
//实现密码星号化的功能
八、存在的不足与对策
由于我的能力及时间限制,所以这次这个系统设计得非常简单,功能也很单一,并且这次并没有使用文件的功能,所有的数据都是一次性的,我会在课下继续探究可以完善该系统的方法.
{
password[i]=c;
putchar('*');
i++;
if (i>=6)
{
break;
}
}
return password;
}
//YongHu.cpp
#include "funtion.h"
#include <cstring>
YongHu::YongHu(char id[],float Money,char Password[])//用户的构造函数
{
if(strcmp(ID,yh.get_ID())==0&&strcmp(password,yh.get_password())==0)
return true;
else
return false;
}
void ATM::GNJM()
{
int n;
cout<<endl<<endl<<endl;
cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl;
int i=0;
do
{
i=0;
cout<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"<<endl;
cout<<"◆欢迎使用中国农业银行!◆"<<endl;
cout<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"<<endl<<endl;
cout<<"测试卡号为:123456"<<endl;
cout<<"测试密码为:123456"<<endl;
do {
cout<<endl<<"★请输入新密码:";
strcpy(password,GetPassword());
cout<<endl<<"★请再次输入新密码:";
strcpy(Xpassword,GetPassword());
t=strcmp(password,Xpassword);//对新密码进行比较,如果相等,则返回0
};
//ATM.cpp
#include<iostream>
#include<conio.h>
#include "funtion.h"
#include <cstring>
using namespace std;
void ATM::DLJM()//登陆界面
{
times=0;
char ID[20],password[10],ch;
cout<<"★密码:";
strcpy(password,GetPassword());
if(!HDMM(ID,password))
{
cout<<"~对不起,您的卡号或密码有误,请重新输入"<<endl;
times++;
}
else
{
GNJM();
}
}while(times<3);
LK();
}
bool ATM::HDMM(char ID[],char password[])
{
strcpy(password,Password);
}
//main.cpp
#include<iostream>
#include "funtion.h"
2、取款功能:
取款金额受卡余额,机单笔最大取款金额及机当前剩余金额的限制。
3、查询功能:
实现查询余额的功能。
4、更改密码:
实现密码更改功能,对于密码要有2次验证。
5、退卡功能:
实现退出系统功能。
七、比较有特色的函数
char * ATM::GetPassword()
{
char c;
int i=0;
char password[6];
{
strcpy(ID,id);//strcpy函数是复制两字符串的函数,头文件为<cstring>
money=Money;
strcpy(password,Password);
}
float YongHu::get_money()//获取余额函数
{
return money;
}
char* YongHu::get_ID()//获取卡号
private:
int times;
YongHu& yh;
};
class YongHu//用户类
{
public:
friend class ATM;
YongHu(char id[],float Money,char Password[]);
char* get_ID();//获取卡号
char* get_password();//获取密码
else
cout<<"~您已取款成功!请尽快取钱!";
}
}
}
GNJM();
}
void ATM::CX()
{
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<" "<<endl;
cout<<"卡号:"<<yh.get_ID()<<endl;
if(t!=0)
cout<<endl<<"~您输入的密码不一致,请重新输入!"<<endl;
}while(t!=0);
yh.set_password(password);
cout<<endl<<"~密码修改成功,请您牢记!"<<endl;
GNJM();
}
void ATM::LK()
{
cout<<"~对不起,你输入的密码错误已达三次,您的卡已被没收!"<<endl;
cout<<"☆1)取款★"<<endl;
cout<<"★2)查询余额☆"<<endl;
cout<<"☆3)更改密码★"<<endl;
cout<<"★4)退出系统☆"<<endl;
cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl;
cout<<endl<<"★请输入你想操作的序号:";
cout<<"余额:"<<yh.get_money()<<"元"<<endl;
cout<<" "<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
GNJM();
}
void ATM::GG()
{
char password[10],Xpassword[10];
2、取款功能:
取款金额受卡余额,机单笔最大取款金额及机当前剩余金额的限制。
3、查询功能:
实现查询余额的功能。
4、更改密码:
实现密码更改功能,对于密码要有2次验证。
5、退卡功能:
实现退出系统功能。
三、程序运行平台
Dev c++
四、流程图
图1系统流程图
五、程序类的说明
5.1 ATM类:
该类主要实现取款,查询,修改密码,登录界面等功能。
friend class ATM;
............
private:
char ID[20];//卡号
char password[10];//密码
float money;//卡上余额
};
5.3查询函数:
调用YongHu类的获取函数将信息输出
void ATM::CX()
{
...........
}
5.4修改密码函数:
使用do while语句实现修改密码的功能
void ATM::GG()
{
.........
}
5.5密码星号函数:
通过while语句实现输入密码时每输入一个字符就显示一个星号的功能
char * ATM::GetPassword()
{
........
}
六、模块分析
1、锁机功能:
卡号,密码输入最多三次,否则直接退出系统。
float get_money();//获取余额
void set_password(char Password[]);//设置密码
void set_money(float m);
private:
char ID[20];//卡号
char password[10];//密码
float money;//wenku.baidu.com上余额
}
else
{
if((int)m%100!=0)
{
cout<<"~对不起,您的取款金额必须为100的倍数!"<<endl;
}
else
{
if(m>2000)
{
cout<<"~对不起,您每次只能取2000元!"<<endl;
}
else
{
cout<<"~操作成功,请稍后!!!"<<endl;
yh.set_money(m);
cin>>n;
if(n<0||n>4)
{
cout<<"★您输入的序号不正确,请重新输入:";
cin>>n;
}
switch(n)
{
case 1:QK();
break;
case 2:CX();
break;
case 3:GG();
break;
case 4:TC();
break;
}while(true);
}
times=0;
do
{
cout<<endl<<"★请输入旧密码:";
strcpy(password,GetPassword());
if(!HDMM(yh.get_ID(),password))
times++;
else
break;
}while(times<3);
if(times==3)
LK();
int t=1;
cout<<"测试卡号余额为:10000元"<<endl<<endl<<endl;
cout<<"请输入您的卡号"<<endl;
cout<<"★卡号:";
do
{
cin.get(ch);
ID[i++]=ch;
}while(ch!='\n');
ID[i-1]='\0';
i=0;
cout<<endl<<"请输入您的密码"<<endl;
九、程序源代码
//funtion.h
#include<iostream>
#include<cstring>
#include<cstdlib>
class YongHu;//定义全局类class
class ATM//ATM类
{
public:
ATM(YongHu& y):yh(y)
{}
void DLJM();//登陆界面
《面向对象程序设计》课程设计报告
模拟ATM自动取款机系统
姓名:
学号:
专业班级:
完成时间:
指导老师:
为了方便用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额,取款,修改密码,退出系统等功能。
二、程序的主要功能
1、锁机功能:
卡号,密码输入最多三次,否则直接退出系统。
{
return ID;
}
void YongHu::set_money(float m)
{
money-=m;
}
char* YongHu::get_password()//获取密码
{
return password;
}
void YongHu::set_password(char Password[])//设置密码
cout<<"★请输入(y/n)确认是否取钱!"<<endl;
cin>>ch;
while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
{
cout<<"★请再次输入(y/n)确认是否取钱!"<<endl;
cin>>ch;
}
if(ch=='y'||ch=='Y')
cout<<"~您已取款成功!请收好钱!";
bool HDMM(char ID[],char password[]);//核对密码
void QK();//取款
void CX();//查询
void GG();//更改密码
void GNJM();//功能界面
void LK();//锁卡
void TC();//退出
char *GetPassword();
void ATM::QK()
{
float m;
char ch;
cout<<endl<<"★请输入您要取多少钱:";
cin>>m;
while(m<=0)
{
cout<<"★请输入正确的取款数:"<<endl;
cin>>m;
}
if(yh.get_money()-m<0)
{
cout<<"~对不起,您的余额不足!"<<endl;
exit(1);
}
void ATM::TC()
{
cout<<"~请取走您的卡,感谢您的使用,欢迎您下次再来!"<<endl;
exit(0);
}
char * ATM::GetPassword()
{
char c;
int i=0;
char password[6];
while ((c=getch())!='\r')
class ATM//ATM类
{
public:
ATM(YongHu& y):yh(y)
{}
...............
private:
int times;
YongHu& yh;
};
5.2 YongHu类:
该类主要实现卡号,密码,余额的获取函数等功能。
class YongHu//用户类
{
public:
相关文档
最新文档