2013年12月20日
课题,模拟ATM机存取款管理系统
系别: 计算机科学系
专业: 计算机科学与技术,网络应用~
班级: B12计科班
姓名: 杨磊
学号: 1208075160
指导教师:任廷艳老师
目录
需求分析 ———1 第一章
第二章 功能要求 ———1
第三章 类的设计 ———3
4 第四章 主流程图 ———
第五章 功能调试 ———5
第六章
———7
附录 程序代码 ———8
第一章 需求分析
为了方面用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。
第二章 功能要求
(1)卡号、密码输入最多三次,否则直接退出系统。
(2)取款功能:取款金额受卡余额、机单笔最大取款金额
及机当前剩余金额的限制。
(3)查询功能:实现查询余额功能。
(4)更改密码:实现密码更改功能,对于密码要有2次验
证。
(5)锁卡功能:实现卡被锁的功能。
(6)退卡功能:实现退出系统功能。
第三章 类的设计
ATM类:
class ATM//ATM类
{
private:
int times;
YongHu& yh;
public:
ATM(YongHu& y):yh(y){}
void DLJM();//登陆界面
bool HDMM(char ID[],char mima[]);//核对密码
void QK();//取款
void CX();//查询
void GG();//更改密码
void GNJM();//功能界面
void LK();//锁卡
void TC();//退出
};
类中包括:
登陆界面,核对密码,取款,查询,更改密码,功能界面,锁卡,退
出等函数。通过函数实现以上等功能。
用户YongHu类:
class YongHu//用户类
{
private:
char ID[20];//卡号
char mima[10];//密码
float money;//卡上余额
public:
friend class ATM;
YongHu(char id[],float Money,char Mima[]);
char* get_ID();//获取卡号
char* get_mima();//获取密码
float get_money();//获取余额
void set_mima(char Mima[]);//设置密码
void set_money(float m);
};
用户类包括:获取卡号,密码,余额,设置密码等函数。
通过以上函数,经过主函数建为获取用户信息而做的功能,
立对象,传入实参后可获取对象(用户)信息。
主函数:
主函数通过建立对象a和用户y1,把y1的通过a(y1)传入构造函数,调用登陆界面,输入密码和卡号后进入主界面,这就是主函数所做的功能。
第四章 流程图
主流程图:
登陆界面
查修取锁退主询改款卡出 界功密功功功面 能 码 能 能 能
第五章 功能调试
登陆界面:
登陆成功后的主功能界面:
取款:
查询余额:
更改密码:
锁卡功能:
退出功能:
第六章 系统总结报告
系统的设定:
1, 本系统设定好测试卡号,密码,余额。
2, 取款时只能取100倍数的钱。
3,修改密码错误时系统自动报错。
4,卡号密码输入最多三次,如超过则系统直接锁卡并退出。 遇到问题:
1, 开始时更改密码功能输入一次就报错,且没有返
回主界面,经过一番修改后,终得成功。 2, 系统使用do---while语句较多,使得程序的左括号
及右括号出现错误,查资料及问过老师后才解决
这个问题。
3, 本系统经过查阅网上信息及教材书,终于设计出
来了,可是自己在完全脱离这些信息及资料后,
不能独立完成设计,发现自己动手能力交差,书
上的知识不能及时运用,造成了此次的不能独立
完成,反过来想想后,自己存在的问题实在是多,
在今后的学习上我会不断加强自己的不足,做出
一个自己满意的系统。
附录:
程序代码:
#include
#include #include class YongHu;//定义全局类class class ATM//ATM类
{
private:
int times;
YongHu& yh;
public:
ATM(YongHu& y):yh(y){}
void DLJM();//登陆界面
bool HDMM(char ID[],char mima[]);//核对密码
void QK();//取款
void CX();//查询
void GG();//更改密码
void GNJM();//功能界面
void LK();//锁卡
void TC();//退出
};
class YongHu//用户类
{
private:
char ID[20];//卡号
char mima[10];//密码
float money;//卡上余额
public:
friend class ATM;
YongHu(char id[],float Money,char Mima[]);
char* get_ID();//获取卡号
char* get_mima();//获取密码
float get_money();//获取余额
void set_mima(char Mima[]);//设置密码
void set_money(float m);
};
YongHu::YongHu(char id[],float Money,char Mima[])//用户的构造函数
{
strcpy(ID,id);//strcpy函数是复制两字符串的函数,头文件为
money=Money;
strcpy(mima,Mima); }
float YongHu::get_money()//获取余额 函数 {
return money;
}
char* YongHu::get_ID()//获取卡号
{
return ID;
}
void YongHu::set_money(float m)
{
money-=m;
}
char* YongHu::get_mima()//获取密码
{
return mima;
}
void YongHu::set_mima(char Mima[])//设置密码
{
strcpy(mima,Mima);
}
void ATM::DLJM()//登陆界面
{
times=0;
char ID[20],mima[10],ch;
int i=0;
do
{
i=0;
cout<<" ?????????????????????"<>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);
}
void ATM::QK()
{
float m;
char ch;
do
{
cout<>m;
while(m<=0)
{
cout<<"请输入正确的取款数: "<>m;
}
if(yh.get_money()-m<0)
{
cout<<"对不起,您的余额不足!"<2000)
{
cout<<"对不起,您每次只能取2000元!"<>ch;
cout<<"您已取款成功~请收好钱~";
GNJM();
while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n')
{
cin>>ch;
}
}
while(ch=='y'||ch=='Y'); }
void ATM::CX()
{
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<>mima;
if(!HDMM(yh.get_ID(),mima))
times++;
else
break;
}
while(times<3);
if(times==3)
LK();
int t=1;
do
{
cout<<"请输入新密码并牢记好新密码!"<>mima;
cout<<"请再次输入新密码并牢记好新密码!"<>Xmima;
t=strcmp(mima,Xmima);//对新密码进行比较,如果相等,则返回0
if(t!=0)
cout<<"您输入的密码不一致,请重新输入~"<