面向对象分析与设计ATM系统分析与设计.docx
《面向对象分析与设计ATM系统分析与设计.docx》由会员分享,可在线阅读,更多相关《面向对象分析与设计ATM系统分析与设计.docx(20页珍藏版)》请在冰点文库上搜索。
面向对象分析与设计ATM系统分析与设计
需求分析
一.总体要求:
1,ATM叽要可以判断磁卡的类别,如果不是有效的磁卡则退卡;
2,可以在较快的时间内响应用户的请求,并针对相应的请求执行正确的操作;
3,当卡在ATM机内30秒内没有操作时,系统自动没收信用卡;
4,查自己的账户时应显示余额和可用余额,并显示ATM机里所拥有的现金面值,让用户可以做出正确的选择;
5,提取现金时提示用户输入取款金额并判断输入是否确,如果错误提醒用户并
要求重新操作,正确则提醒用户收取现金;钞票在出钞机内30秒内没人取走,
自动回收钞票;
6,转账汇款时让用户选择转账类型,要求用户输入转账账号并要求用户输入两次,以确保没有输入错误,在两次输入都正确的情况下,让用户输入转账金额,并作最后的确认。
7,进入修改密码界面后提醒用户输入新密码,并要求再次输入以确保密码统一无误,在确认后完成修改操作,并提醒用户新询密码生效;
8,对于错误的操作或者操作延时做出有效的处理。
二,系统要求:
要求用户一次取款数额不得大于2500元;
要求用户一天取款数额不得超过5000元;
要求用户连续输入错误密码次数不得超过3次。
三,系统性能要求:
要求反应时间不得大于10秒钟;
四:
设计目标:
系统可以提供24小时不间断服务,操作简单,可以很方便为用户提供取款、转账/汇款、查询账户信息等服务。
模型分析
:
设计DFD图
(1)顶层DFD图:
(2)0层DFD图:
用户
密码确认
银行卡
退出
选择操作
判断超时
退出类型
操作类型
执行操作
(3)1层DFD图
用户
银行卡F
(密码、
选择『
(确认丿
信息*
选择
交易
未超时信息
操作是否超过
•EL
账
更改密
转账.
更改密码-
退出类型
码操作
取款子系统:
客户存储信息单
超时
信息
是否
打印
账单
警告信息
银行卡
取款
调用取
\选择
选择货
\取款讨
f提取'
\30秒内.
操作
款系统
l币种类
/金额U
、现金/
丿无响应
收回
货币
选择信息
现金
用户
警示
信息
查询子系统:
客户存储信息单
选择
交易
查询
操作
选择
信息
调用查
询系统
选择货币种类
查询
信息
显
查询账尸
转账子系统:
选择信息
用户
客户存储信息单
选择交易
转入卡号信息
更改密码子系统:
客户存储信息单
选择信息
二:
组织结构设计
(1)系统结构
ATM机系统
(2)读卡机系统
(3)键盘输入子系统
认证子系统:
显示子系统:
出钞子系统:
打印子系统:
数据库子系统:
建立模型
:
建立基本系统模型图
:
建立序列图:
代码设计:
#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""
#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""
#include<>
#include<>
voidATM:
:
welcome()
{
times=0;
cout<<"$
欢迎使用ATM自动取款机!
"<charpwd[8],num[20],ch;
inti=0;
do
{
i=0;
cout<";do
{
(ch);num[i++]=ch;
}while(ch!
='\n');num[i-1]='\0';
i=0;
cout<<"请输入密码:
";
do
{
(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,())==0&&strcmp
(pwd,())==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(),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);
(pwd);
cout<<"密码修改成功"<}
voidATM:
:
fetchmoney()
{
floatm;
charch;
do
{
:
"<<"\n$>\\"<cout<>m;
while(m<=0)
{
cout<<"请输入正确金额"<cout<<"$>\\";
cin>>m;
}
if()-m<0)
{
cout<<"对不起,你的余额不足!
"<}
else
{
cout<"<}
cout<<"是否要继续该项操作:
(Y/N)"<\\";
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<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<voidATM:
:
lock()
{
cout<"<exit
(1);
}
voidATM:
:
exitATM()
{
cout<"<cout<<"请取卡……"<exit(0);
}