面向对象分析与设计ATM系统分析与设计.docx
《面向对象分析与设计ATM系统分析与设计.docx》由会员分享,可在线阅读,更多相关《面向对象分析与设计ATM系统分析与设计.docx(20页珍藏版)》请在冰豆网上搜索。
面向对象分析与设计ATM系统分析与设计
ATM系统分析与设计
需求分析
一.总体要求:
1,ATM机要可以判断磁卡的类别,如果不是有效的磁卡则退卡;
2,可以在较快的时间内响应用户的请求,并针对相应的请求执行正确的操作;
3,当卡在ATM机内30秒内没有操作时,系统自动没收信用卡;
4,查自己的账户时应显示余额和可用余额,并显示ATM机里所拥有的现金面值,让用户可以做出正确的选择;
5,提取现金时提示用户输入取款金额并判断输入是否确,如果错误提醒用户并要求重新操作,正确则提醒用户收取现金;钞票在出钞机内30秒内没人取走,自动回收钞票;
6,转账汇款时让用户选择转账类型,要求用户输入转账账号并要求用户输入两次,以确保没有输入错误,在两次输入都正确的情况下,让用户输入转账金额,并作最后的确认。
7,进入修改密码界面后提醒用户输入新密码,并要求再次输入以确保密码统一无误,在确认后完成修改操作,并提醒用户新询密码生效;
8,对于错误的操作或者操作延时做出有效的处理。
二,系统要求:
要求用户一次取款数额不得大于2500元;
要求用户一天取款数额不得超过5000元;
要求用户连续输入错误密码次数不得超过3次。
三,系统性能要求:
要求反应时间不得大于10秒钟;
四:
设计目标:
系统可以提供24小时不间断服务,操作简单,可以很方便为用户提供取款、转账/汇款、查询账户信息等服务。
模型分析
一:
设计DFD图。
(1)顶层DFD图:
用户
银行卡交易凭条
银行卡
ATM系统
用户
(2)0层DFD图:
银行卡
密码确认
用户
选择操作
账户信息
退出
退出类型
用户
判断超时
执行操作
提示信息
操作类型
没收信用卡
(3)1层DFD图:
超时信息
未超时信息
没收信用卡
操作是否超过30秒退出
用户
警告信息
银行卡
取款
取款操作
查询
是否打印账单
查询操作
打印账单
选择信息
选择交易
密码确认
退出类型
转账操作
更改密码操作
退出
转账
银行卡
更改密码
用户
取款子系统:
客户存储信息单
选择交易
收回货币
30秒内无响应
提取现金
取款金额
选择货币种类
调用取款系统
选择信息
取款操作
选择信息
现金
警示信息
用户
查询子系统:
客户存储信息单
选择交易
调用查询系统
选择货币种类
选择信息
查询信息
查询账户
查询操作
显示
选择信息
用户
转账子系统:
客户存储信息单
卡内转账
选择信息
选择交易
调用转账系统
查询操作
转入卡号信息
选择信息
卡卡转账
选择信息
转入卡号信息
转账金额
记录
记录
记录
更改密码子系统:
客户存储信息单
调用更改密码系统
选择交易
记录
新密码
新密码
更改密码信息
确认
选择信息
二:
组织结构设计
(1)系统结构
读卡机模块
键盘输入模块
显示模块
ATM机系统
认证模块
出钞模块
打印模块
(2)读卡机系统
输入:
银行卡
查询数据库,识别卡号及所属银行
输出:
显示卡号及所属银行信息
(3)键盘输入子系统
输入:
密码,取款金额,查询余额等
验证信息
显示相关操作
10秒内无操作则吞卡
认证子系统:
输入卡号
连接认证服务器验证卡号信息
正确则显示输入密码,否则吐卡
显示子系统:
信息输入
后台处理
在屏幕上显示处理情况
出钞子系统:
输入金额
后台处理
输出现金
30秒内客户不取走现金则吞入现金
打印子系统:
客户选择是否打印
后台处理
输出报表或者无动作
数据库子系统:
客户输入信息
数据库查询
在输出显示查询信息
建立模型
一:
建立基本系统模型图
二:
建立序列图:
代码设计:
#include
classconsumer;
classATM
//ATM取款机
{
public:
ATM(consumer&cn):
cnsm(cn)
{
}
voidwelcome();
//登陆界面
boolcheck_passwd(charn[],charpwd[]);
//核对密码
voidchange_passwd();
//修改密码
voidfetchmoney();
//取款
voidinformation();
//查询信息
voidexitATM();
//退出系统
voidfunctionshow();
//功能界面
voidlock();
//锁机
private:
inttimes;
//记录密码输入次数
consumer&cnsm;
};
classconsumer
//用户
{
public:
friendclassATM;
consumer(charName[],charNum[],
floatMoney,charPassword[]);
protected:
char*get_name();
//取得姓名
char*get_num();
//取得卡号
char*get_passwd();
//取得密码
floatget_money();
//取得余额
voidset_passwd(charpwd[]);
//设置密码
voidset_money(floatm);
//取钱
private:
charpasswd[8];
//用户密码
charname[20];
//用户姓名
charnum[20];
floatmoney;
};
//*consumer类的成员函数*
#include"function.h"
#include
consumer:
:
consumer(charName[],
charNum[],floatMoney,charPassword[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(passwd,Password);
}
floatconsumer:
:
get_money()
{
returnmoney;
}
char*consumer:
:
get_name()
{
returnname;
}
char*consumer:
:
get_num()
{
returnnum;
}
char*consumer:
:
get_passwd()
{
returnpasswd;
}
voidconsumer:
:
set_money(floatm)
{
money-=m;
}
voidconsumer:
:
set_passwd(charpwd[])
{
strcpy(passwd,pwd);
}
//*ATM类的成员函数*
#include"function.h"
#include
#include
voidATM:
:
welcome()
{
times=0;
cout<<"$
欢迎使用ATM自动取款机!
"<charpwd[8],num[20],ch;
inti=0;
do
{
i=0;
cout<";
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<<"你输入的卡号或密码有误,
请重新输入"<times++;
}
else
{
functionshow();
}
}while(times<3);
lock();
}
boolATM:
:
check_passwd(charnum[],
charpwd[])
{
if(strcmp(num,cnsm.get_num())==0&&strcmp
(pwd,cnsm.get_passwd())==0)
returntrue;
else
returnfalse;
}
voidATM:
:
functionshow()
{
intn;
do
{
cout<"<cout<<"1)修改密码"<cout<<"$>\\";
cin>>n;
while(n<1||n>4)
{
cout<<"请输入正确的操作序号!
"<cout<<"$>\\";
cin>>n;
}
switch(n)
{
case1:
change_passwd();
break;
case2:
fetchmoney();
break;
case3:
information();
break;
case4:
exitATM();
break;
}
}while(true);
}
voidATM:
:
change_passwd()
{
charpwd[8],repwd[8];
times=0;
do
{
cout<";
cin>>pwd;
if(!
check_passwd(cnsm.get_num(),pwd))
times++;
else
break;
}while(times<3);
if(times==3)
lock();
intt=0;
do
{
cout<<"请输入新密码:
";
cin>>pwd;
cout<<"请再输入一次新密码:
";
cin>>repwd;
if((t=strcmp(pwd,repwd))!
=0)
cout<<"密码不一致,
请重新输入!
"<}while(t!
=0);
cnsm.set_passwd(pwd);
cout<<"密码修改成功"<}
voidATM:
:
fetchmoney()
{
floatm;
charch;
do
{
cout<"<<"\n$>\\"<cin>>m;
while(m<=0)
{
cout<<"请输入正确金额"<cout<<"$>\\";
cin>>m;
}
if(cnsm.get_money()-m<0)
{
cout<<"对不起,你的余额不足!
"<}
else
{
cout<"<cnsm.set_money(m);
}
cout<<"是否要继续该项操作:
(Y/N)"<cout<<"$>\\";
cin>>ch;
while(ch!
='n'&&ch!
='N'&&ch!
='Y'&&ch!
='y')
{
cout<<"$>\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
voidATM:
:
information()
{
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<cout<<"~"<cout<<"~用户姓名:
"<cout<<"~卡号:
"<cout<<"~余额:
"<cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<}
voidATM:
:
lock()
{
cout<你的卡已经被没收!
"<exit
(1);
}
voidATM:
:
exitATM()
{
cout<欢迎下次光临!
"<cout<<"请取卡……"<exit(0);
}