模拟ATM自动取款机系统C版完整.docx
《模拟ATM自动取款机系统C版完整.docx》由会员分享,可在线阅读,更多相关《模拟ATM自动取款机系统C版完整.docx(14页珍藏版)》请在冰豆网上搜索。
模拟ATM自动取款机系统C版完整
《面向对象程序设计》课程设计报告
模拟ATM自动取款机系统
姓名:
学号:
专业班级:
完成时间:
指导老师:
一、需求分析
为了方便用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。
实现查询银行卡余额,取款,修改密码,退出系统等功能。
二、程序的主要功能
1、锁机功能:
卡号,密码输入最多三次,否则直接退出系统。
2、取款功能:
取款金额受卡余额,机单笔最大取款金额及机当前剩余金额的限制。
3、查询功能:
实现查询余额的功能。
4、更改密码:
实现密码更改功能,对于密码要有2次验证。
5、退卡功能:
实现退出系统功能。
三、程序运行平台
Devc++
四、流程图
图1系统流程图
五、程序类的说明
5.1ATM类:
该类主要实现取款,查询,修改密码,登录界面等功能。
classATM//ATM类
{
public:
ATM(YongHu&y):
yh(y)
{}
...............
private:
inttimes;
YongHu&yh;
};
5.2YongHu类:
该类主要实现卡号,密码,余额的获取函数等功能。
classYongHu//用户类
{
public:
friendclassATM;
............
private:
charID[20];//卡号
charpassword[10];//密码
floatmoney;//卡上余额
};
5.3查询函数:
调用YongHu类的获取函数将信息输出
voidATM:
:
CX()
{
...........
}
5.4修改密码函数:
使用dowhile语句实现修改密码的功能
voidATM:
:
GG()
{
.........
}
5.5密码星号函数:
通过while语句实现输入密码时每输入一个字符就显示一个星号的功能
char*ATM:
:
GetPassword()
{
........
}
六、模块分析
1、锁机功能:
卡号,密码输入最多三次,否则直接退出系统。
2、取款功能:
取款金额受卡余额,机单笔最大取款金额及机当前剩余金额的限制。
3、查询功能:
实现查询余额的功能。
4、更改密码:
实现密码更改功能,对于密码要有2次验证。
5、退卡功能:
实现退出系统功能。
七、比较有特色的函数
char*ATM:
:
GetPassword()
{
charc;
inti=0;
charpassword[6];
while((c=getch())!
='\r')
{
password[i]=c;
putchar('*');
i++;
if(i>=6)
{
break;
}
}
returnpassword;
}
//实现密码星号化的功能
八、存在的不足与对策
由于我的能力及时间限制,所以这次这个系统设计得非常简单,功能也很单一,并且这次并没有使用文件的功能,所有的数据都是一次性的,我会在课下继续探究可以完善该系统的方法.
九、程序源代码
//funtion.h
#include
#include
#include
classYongHu;//定义全局类class
classATM//ATM类
{
public:
ATM(YongHu&y):
yh(y)
{}
voidDLJM();//登陆界面
boolHDMM(charID[],charpassword[]);//核对密码
voidQK();//取款
voidCX();//查询
voidGG();//更改密码
voidGNJM();//功能界面
voidLK();//锁卡
voidTC();//退出
char*GetPassword();
private:
inttimes;
YongHu&yh;
};
classYongHu//用户类
{
public:
friendclassATM;
YongHu(charid[],floatMoney,charPassword[]);
char*get_ID();//获取卡号
char*get_password();//获取密码
floatget_money();//获取余额
voidset_password(charPassword[]);//设置密码
voidset_money(floatm);
private:
charID[20];//卡号
charpassword[10];//密码
floatmoney;//卡上余额
};
//ATM.cpp
#include
#include
#include"funtion.h"
#include
usingnamespacestd;
voidATM:
:
DLJM()//登陆界面
{
times=0;
charID[20],password[10],ch;
inti=0;
do
{
i=0;
cout<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"<cout<<"◆欢迎使用中国农业银行!
◆"<cout<<"◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆"<cout<<"测试卡号为:
123456"<cout<<"测试密码为:
123456"<cout<<"测试卡号余额为:
10000元"<cout<<"请输入您的卡号"<cout<<"★卡号:
";
do
{
cin.get(ch);
ID[i++]=ch;
}while(ch!
='\n');
ID[i-1]='\0';
i=0;
cout<cout<<"★密码:
";
strcpy(password,GetPassword());
if(!
HDMM(ID,password))
{
cout<<"~对不起,您的卡号或密码有误,请重新输入"<times++;
}
else
{
GNJM();
}
}while(times<3);
LK();
}
boolATM:
:
HDMM(charID[],charpassword[])
{
if(strcmp(ID,yh.get_ID())==0&&strcmp(password,yh.get_password())==0)
returntrue;
else
returnfalse;
}
voidATM:
:
GNJM()
{
intn;
cout<cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<cout<<"☆1)取款★"<cout<<"★2)查询余额☆"<cout<<"☆3)更改密码★"<cout<<"★4)退出系统☆"<cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<cout<";
cin>>n;
if(n<0||n>4)
{
cout<<"★您输入的序号不正确,请重新输入:
";
cin>>n;
}
switch(n)
{
case1:
QK();
break;
case2:
CX();
break;
case3:
GG();
break;
case4:
TC();
break;
}while(true);
}
voidATM:
:
QK()
{
floatm;
charch;
cout<";
cin>>m;
while(m<=0)
{
cout<<"★请输入正确的取款数:
"<cin>>m;
}
if(yh.get_money()-m<0)
{
cout<<"~对不起,您的余额不足!
"<}
else
{
if((int)m%100!
=0)
{
cout<<"~对不起,您的取款金额必须为100的倍数!
"<}
else
{
if(m>2000)
{
cout<<"~对不起,您每次只能取2000元!
"<}
else
{
cout<<"~操作成功,请稍后"<yh.set_money(m);
cout<<"★请输入(y/n)确认是否取钱!
"<cin>>ch;
while(ch!
='Y'&&ch!
='y'&&ch!
='N'&&ch!
='n')
{
cout<<"★请再次输入(y/n)确认是否取钱!
"<cin>>ch;
}
if(ch=='y'||ch=='Y')
cout<<"~您已取款成功!
请收好钱!
";
else
cout<<"~您已取款成功!
请尽快取钱!
";
}
}
}
GNJM();
}
voidATM:
:
CX()
{
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<cout<<""<cout<<"卡号:
"<cout<<"余额:
"<cout<<""<cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<GNJM();
}
voidATM:
:
GG()
{
charpassword[10],Xpassword[10];
times=0;
do
{
cout<";
strcpy(password,GetPassword());
if(!
HDMM(yh.get_ID(),password))
times++;
else
break;
}while(times<3);
if(times==3)
LK();
intt=1;
do{
cout<";
strcpy(password,GetPassword());
cout<";
strcpy(Xpassword,GetPassword());
t=strcmp(password,Xpassword);//对新密码进行比较,如果相等,则返回0
if(t!
=0)
cout<"<}while(t!
=0);
yh.set_password(password);
cout<"<GNJM();
}
voidATM:
:
LK()
{
cout<<"~对不起,你输入的密码错误已达三次,您的卡已被没收!
"<exit
(1);
}
voidATM:
:
TC()
{
cout<<"~请取走您的卡,感谢您的使用,欢迎您下次再来!
"<exit(0);
}
char*ATM:
:
GetPassword()
{
charc;
inti=0;
charpassword[6];
while((c=getch())!
='\r')
{
password[i]=c;
putchar('*');
i++;
if(i>=6)
{
break;
}
}
returnpassword;
}
//YongHu.cpp
#include"funtion.h"
#include
YongHu:
:
YongHu(charid[],floatMoney,charPassword[])//用户的构造函数
{
strcpy(ID,id);//strcpy函数是复制两字符串的函数,头文件为
money=Money;
strcpy(password,Password);
}
floatYongHu:
:
get_money()//获取余额函数
{
returnmoney;
}
char*YongHu:
:
get_ID()//获取卡号
{
returnID;
}
voidYongHu:
:
set_money(floatm)
{
money-=m;
}
char*YongHu:
:
get_password()//获取密码
{
returnpassword;
}
voidYongHu:
:
set_password(charPassword[])//设置密码
{
strcpy(password,Password);
}
//main.cpp
#include
#include"funtion.h"
intmain(void)
{
YongHuy1("123456",10000,"123456");//创建用户y1
ATMa(y1);
a.DLJM();
a.GNJM();
return0;
}