软件工程实践实验二Word格式文档下载.docx
《软件工程实践实验二Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件工程实践实验二Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
3.系统需求说明
ATM系统是与生活紧密相关的一个机构,提供了存款、取款、转账等业务,这些业务与人们的日常生活息息相关。
在银行设立账户的人或机构通常被称为银行的储户。
一个储户可以在银行开多个账户,储户可以存钱到账户中,也可以从自己的账户中取现,还可以将存款从一个账户转到另一个账户。
储户还可以随时查询自己账户的情况,并查询以前所进行的存款、取款等交易记录。
所以ATM自助服务系统必须满足存款,取款,转账,查询,修改密码等功能子模块为用户提供便利。
4.基于UML的模型分析
1)用例图(usecase图)
用例模型描述:
用户通过ATM服务系统可以选择存款,取款,转账,查询,修改密码等几个子功能模块,其中取款,存款需要通过ATM存钞信息数据库验证,而所有功能都必须通过客户信息存储数据库的调用和修改,其中转账又分为卡内转账和卡卡转账两种,查询模块分为账户余额查询,账单记录查询,账户信息查询三种;
所有的功能模块都必须先通过登录验证过才能进行
2)类图分析
类图模型分析:
类图中的用户属性有银行卡,密码,账户等属性,所以操作应为插入银行卡,输入密码,输入账户等操作,这一切都通过ATM交互类中的关联的部分类来完成,ATM键盘输入密码,ATM卡槽插入识别银行卡,ATM屏幕显示信息,ATM打印机打印用户凭条,放钞口用来存放或取出现金;
其中涉及到的操作依赖于ATM服务操作类来完成,分为存款,取款,转账,查询,修改密码等操作,并依赖于银行账户和账户信息验证来完成信息的修改,验证和存储。
3)时序图分析
时序图模型分析:
用户通过ATM交互插入银行卡并输入密码,利用用户验证来验证银行卡的合法性,利用账户信息验证确定密码的正确性;
接下来进入服务界面,执行所要求的操作,通过银行账户及信息验证后完成操作;
之后查询或修改银行账户的信息,将其存储到客户信息存储数据库中,然后返回操作界面,继续退出服务或继续操作。
具体的操作界面分为存款,取款,转账,查询,修改密码五个
存款操作时序图:
取款操作时序图:
转账操作时序图:
查询操作时序图:
修改密码操作时序图:
4)状态图分析
状态图模型分析:
先通过验证密码来进入操作界面,密码错误只能继续自返,输错三次直接退出系统,成功则选择所需操作,操作结束后可以选择返回操作或退出服务;
存款操作状态图:
取款操作状态图:
转账操作状态图:
查询操作状态图:
修改密码操作状态图:
5)活动图分析
活动图模型分析:
相比状态图更强调对象完成的操作,可以利用泳道来区分是何对象完成了什么操作。
存款操作活动图:
取款操作活动图:
转账操作活动图:
查询操作活动图:
修改密码操作活动图:
5.实验小结
信息时代载着我们悄然驶进生活的快车道。
面对着每天高度紧张的生活节奏,民众不再满足在银行排着长队等待银行业务员的人工服务.本系统的设计使得银行卡受理环境大大改善,交易效率显著提高,使广大持卡民众真正受到便利.本系统的在实施后,.它不仅能方便支付,还能避免因携带现金而带来的不必要的担心,更可以让持卡民众享受到不断创新的银行卡带来的诸多增值服务,从而体验到更多的便利和乐趣.故它将广泛应用到水,电,气的缴费中,以及学校,医院,航空,税务等与老百姓生活息息相关的领域
源代码
程序
//************************************
//**
//*function.h*
//************************************
#include<
iostream.h>
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
//用户
friendclassATM;
consumer(charName[],charNum[],
floatMoney,charPassword[]);
protected:
char*get_name();
//取得姓名
char*get_num();
//取得卡号
char*get_passwd();
//取得密码
floatget_money();
//取得余额
voidset_passwd(charpwd[]);
//设置密码
voidset_money(floatm);
//取钱
charpasswd[8];
//用户密码
charname[20];
//用户姓名
charnum[20];
floatmoney;
//*consumer类的成员函数*
#include"
function.h"
string.h>
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;
get_num()
returnnum;
get_passwd()
returnpasswd;
voidconsumer:
set_money(floatm)
money-=m;
set_passwd(charpwd[])
strcpy(passwd,pwd);
//*ATM类的成员函数*
#include"
#include<
stdlib.h>
voidATM:
welcome()
times=0;
cout<
<
"
$
欢迎使用若雪银行ATM自动取款机!
~!
"
endl;
charpwd[8],num[20],ch;
inti=0;
do
i=0;
endl<
请输入卡号:
;
cin.get(ch);
num[i++]=ch;
}while(ch!
='
\n'
);
num[i-1]='
\0'
请输入密码:
pwd[i++]=ch;
pwd[i-1]='
if(!
check_passwd(num,pwd))
你输入的卡号或密码有误,
请重新输入"
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;
functionshow()
intn;
请你输入相应的操作序号进行操作:
1)修改密码"
2)取款"
3)查询余额"
4)退出系统"
$>
\\"
cin>
>
n;
while(n<
1||n>
4)
请输入正确的操作序号!
switch(n)
case1:
change_passwd();
break;
case2:
fetchmoney();
case3:
information();
case4:
exitATM();
}while(true);
change_passwd()
charpwd[8],repwd[8];
请输入旧密码:
pwd;
check_passwd(cnsm.get_num(),pwd))
if(times==3)
intt=0;
请输入新密码:
请再输入一次新密码:
repwd;
if((t=strcmp(pwd,repwd))!
=0)
你输入的两次密码不一样,
请重新输入!
}while(t!
=0);
cnsm.set_passwd(pwd);
密码修改成功,请牢记!
fetchmoney()
floatm;
charch;
你要取多少钱:
\n$>
endl;
m;
while(m<
请输入正确的数字!
\\"
if(cnsm.get_money()-m<
0)
对不起,你的余额不足!
操作成功,请收好钱!
cnsm.set_money(m);
是否要继续该项操作:
(Y/N)"
ch;
while(ch!
n'
ch!
N'
Y'
y'
)
}while(ch=='
||ch=='
information()
**********************************"
*"
*用户姓名:
cnsm.get_name()<
*卡号:
cnsm.get_num()<
*余额:
cnsm.get_money()<
lock()
对不起,由于你的操作有误,
你的卡已经被没收!
exit
(1);
exitATM()
感谢你对本银行的支持,
欢迎下次光临!
请取卡……"
exit(0);
//*ATM.cpp*
voidmain()
consumerc1("
jim"
"
12345"
5200.3f,"
123"
//先构造一个用户
ATMatm(c1);
atm.welcome();