ATM取款机详细设计说明书.docx
- 文档编号:25325842
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:24
- 大小:133.60KB
ATM取款机详细设计说明书.docx
《ATM取款机详细设计说明书.docx》由会员分享,可在线阅读,更多相关《ATM取款机详细设计说明书.docx(24页珍藏版)》请在冰豆网上搜索。
ATM取款机详细设计说明书
产品文档
详细设计文档
产品版本
密级
文档编号
201011063
V123
内部
产品名称
ATM取款机
共30页
ATM取款机
详细设计说明书
撰写:
王国君,刘博,杨雪,于少华
日期:
2010-11-06
审核:
日期:
批准:
日期:
1.引言
1.1编写目的
ATM机管理系统是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。
但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。
为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档,本文针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析,概要设计,程序编码,软件应用等过程,开发了这个系统。
本文档供项目经理、设计人员、开发人员参考。
1.2背景
软件名称:
ATM取款机
任务提出者:
西安石油大学计算机学院
开发者:
杨雪,吴昊,何雪英,于少华,王国君,刘博。
用户:
为与ATM取款机软件开发有联系的决策人,开发组人员以及使用该系统的用户。
使用的计算机网络:
本项目使用西安石油大学计算机机器以及各开发者本人的计算机进行编程。
1.3定义
1.账号:
在银行中,事务应用的单个账号。
账号可以为多种类型,但是至少包括支票和存款。
每个顾客可以拥有多个账号。
2.ATM:
一个工作站终端,使得顾客能够使用现金卡在ATM上进行自己的事务处理。
ATM同顾客进行交互,收集事务信息,并发送事务信息到中心计算机,由中心计算机确认和处理信息之后,将现金通过ATM提供给顾客。
3.银行:
一个金融机构,负责保存顾客的账号信息,执行授权卡通过ATM网访问账号。
4.银行计算机:
银行拥有的计算机,同ATM网和银行自己的现金工作站进行交互。
银行可以拥有自己的内部计算机网处理账号,但是我们只关心同网络进行交互的计算机。
5.现金卡:
每张卡提供给一个银行客户,授权客户可以使用ATM机访问自己的账号。
每张卡包含一个银行代码和一个卡号,银行代码根据信用卡的国际标准进行编码,卡号确定卡能够访问的账户。
一张卡不能访问客户的所有账户。
每张卡只能有一个持卡人,但是多个复本可能存在,所以必须考虑从不同的ATM机同时使用相同卡的行为。
6.客户:
拥有银行的一个或者多个账号的人。
客户可以包括一个人或者多个人,或者是公司。
相同的人,拥有不同银行的账号被认为是不同的客户。
事务:
对单个客户账号的单个完整的操作请求。
1.4参考资料
1.《C程序设计》谭浩强主编清华大学出版社
2.《软件工程导论第三版》张海藩主编清华大学出版社
2.程序系统的组织结构
总体结构如下:
ATM
电子开户
账户登录
密码修改
余额查询
自动存款
自动取款
自动转账
交易明细查询
退卡
输入基本信息
返回主菜单
输入密码
返回主菜单
输入原密码
返回主菜单
输入新密码
显示信息
显示余额
返回主菜单
放入需要存现金
返回主菜单
添加成功并且显示添加金额
输入需要取的金额
返回主菜单
请取走现金
输入转账账号和金额
转账成功
返回主菜单
2.1ATM取款活动图
描述上图功能:
取款开始,先插卡,确认卡是否合法,输入”true”时,就读取密码信息,提示输入密码。
输入”false”时,系统就会提示退卡。
输入密码时,如果密码正确,则会提示取款,否则提示让重新输入密码,三次输入密码都错误,则系统就退卡。
读取取款信息后,问是否确认取款,输入“true”时,系统就提示输入取款金额。
输入”false”时,系统就终止取款活动。
输入取款额时,系统提示是否确认取款,如果确认,就出钞,然后终止活动,否则就直接提示取卡。
2.2ATM机转账活动图
3.界面显示模块设计说明
3.1程序描述
考虑到目前仍然有很多银行是柜台办理取款存款转账等业务,很是麻烦。
所以本小组开发此软件的是为了完善银行的业务处理流程,使得银行与客户间的业务办理更方便、快捷和安全。
本小组仅以设计开发的ATM机管理系统的取款子系统位例进行详细说明,该系统可以实现开户,密码修改,取款,存款,转账,查询等功能,有常驻能存,没有子程序,是顺序处理。
3.2功能
ATM机取款子程序IPO图:
3.3性能
精度要求:
取款机的各个按钮要准确映射到取款机的某个键。
在主菜单界面中,通过控制相应按钮切换功能,按功能键确认选择。
本软件要求用户输入密码用户名为字母数字或下划线,且首位不得为数字。
输入密码为6位整数。
取款及转账金额为整型数据。
户源,目标账户为数据库中存在的用户名,即字母数字或下划线,且首位不得为数字。
时间特性要求:
a)响应时间:
用户插入银行卡后,按系统提示输入相应信息,系统确认完成后,自动进入主菜单界面。
在主菜单界面中,如果用户选择修改密码,先输入旧密码,在很短的时间内再输入新密码;如果用户选择了存款,系统在短时间内确认金额,进行交易;如果用户选择了取款,则输入金额后系统在较短时间内弹出纸币;如果用户选择了其他选项(如交易明细查询),要短时间内显示相应的信息。
用户交易完毕,则选择退卡,请在三十秒内拿走银行卡,否则后果自负。
b)更新处理时间:
在每次用户结束交易后,请系统及时进行信息更新。
c)数据转换和传送时间:
用户本次进入系统,要与最近一次的保存进度一致。
在进行各项交易中,用户的时间记录要准确,不能有延迟和提前。
d)解题时间:
不能出现让用户费解的信息。
灵活性:
a)操作系统:
该软件当遇到非预期输入数据或操作时,会进行报错处理,并要求用户重新进行输入数据或操作。
b)同其他软件接口的变化:
考虑到接口的变化,尽量将代码模块化,多提供一些接口类,提高代码的可移植性。
c)运行环境的变化:
由于代码输入到不同的取款机,其虚拟机可能有所不同,所以编写代码时要考虑运行在不同平台上的问题,即代码的平台可移植性。
d)计划的变化或改进:
项目过程中可能要更改方案,如更换背景,更换按钮风格,或者调整每次系统输出信息的时间等。
这些就要依赖于代码的可扩展性,可以不用更改很多代码。
输入输出要求:
1)用户名:
字母数字或下划线,且首位不得为数字。
2)密码:
6位整数。
3)取款及转账金额:
整型数据。
4)户源,目标账户:
即字母数字或下划线,且首位不得为数字。
5)用户需求事务:
通过人机交互界面进行选择。
3.4输入和输出项
输入项:
(只针对取款系统)
名称
密码
金额总数
类型
char
int
格式
******
0000.00
有效范围
6位
100的倍数元
方式
键盘输入
键盘输入
频度
10次
5次
系统性能
反应时间不能大于10秒钟
反应时间
不能大于
10秒钟
安全保密条件
10次输入密码错误则吞卡
一天最多取款不得超过5000元
媒体
人工输入
人工输入
输出项:
(只针对取款系统)
名称
金额
类型
int
格式
0000.00
有效范围
100的倍数
方式
键盘输入
频度
5次
系统性能
反应时间不能大于10秒钟
安全保密条件
一天最多取款不得超过5000元
媒体
点钞机
3.5算法
1.用户服务模块(含:
开户、登陆、退出)
开户:
输入姓名、密码、再次密码、开户金额(不低于1块钱)
填写完没问题后分配账号。
(姓名、密码、开户金额、账号存入结构体数组里面)
登陆:
输入账户、密码判断账户是否存在,密码是否正确。
登陆后进入到个人服务界面。
退出:
退出ATM就是退出程序
2.主菜单模块(含:
存款、取款、转账、密码修改、查询余额)
存款:
个人账户上的金额加上。
取款:
个人账户上的金额减去。
转账:
涉及到两个账户其实就是下标的不同金额一个减去一个加上。
密码修改:
输入新密码、再次输入新密码判断两次密码是否相同
在用strcpy()函数将新密码当前账户下标元素密码成员
并且判断是否修改成功。
查询余额:
就是从结构体数组里面调用存金额那个成员
欢迎模块:
定义一个函数voidhuanying(),利用for循环进行字符的输出。
voidhuanying()//定义函数
{
inti;
for(i=0;i<10;i++)//for循环
{
printf("\n\n\n\n\n\n\n\n");
printf("\t\t\t●☆★◇◆○●☆★◇◆○●☆★◇◆○\n");
printf("\t\t\t◎ 欢迎使用行军蚁ATM系统 ●\n");
printf("\t\t\t●☆★◇◆○●☆★◇◆○●☆★◇◆○\n");
printf("\n\n\t\t ★希望行军蚁ATM系统可以时刻给您带来方便!
★");
printf("\n\n\n\n\t\t\t\t正在进入");
shaohou();//等待系统响应
system("cls");
printf("\n\n\n\n\n\n\n\n");
}
}
用户模块:
在此模块,从A,B,C中选择出执行的操作服务,然后进入下一个模块。
利用while语句,定义的选择函数charxuanze,实现输出。
伪代码:
voidmain()//主函数
{
huanying();
system("cls");
while
(1)
{
charxuanze;//定义函数
system("cls");
printf("\n\n\t欢迎使用行军蚁ATM系统\n");
printf("\n\n\t请选择您要执行的操作:
\n");
printf("\n\n\tA.开户服务\n");
printf("\n\n\tB.登录服务\n");
printf("\n\n\tC.退出。
\n");
printf("\n\n\t请选择:
");
scanf("%c",&xuanze);
switch(xuanze)
{
case'a':
case'A':
kaihu();break;
case'b':
case'B':
denglu();break;
case'c':
case'C':
exit(0);
default:
printf("\n\t您的选择错误!
");break;
}
}
}
开户服务:
structkaihu
{
charname[10];
charmima[10];
doublezong;
intzhanghao;
}guke[20];
intrenshu=0;
intxianzai;*/
#include
#include
#include
#include
struct
{
intjin_e,zong;
intzhanghao;
charname[20];
charmima[20];
}guke[20];
intrenshu=0;
intxianzai;
voidshaohou()
{
inti,j;
for(i=0;i<3;i++)
{
printf(".");
for(j=0;j<40000000;j++)
{
;
}
}
}
voiddedaomima(charmima[])
{
inti=0;
while
(1)
{ charch;
ch=getch();
if(ch=='\r')
{
mima[i]='\0';
printf("\n");
break;
}
else
{
if(ch=='\b')
{
if(i>0)
{
printf("\b\b");
i--;
}
}
else
{
if(i<16)
{
mima[i]=ch;
printf("*");
i++;
}
}
}
}
}
voidkaihu()
{
intk;
for(k=0;k<5;k++)
{
printf("\n\n\t正在进入注册页面,请稍后");
shaohou();
system("cls");
}
while
(1)
{
printf("\n\n\t【开户服务】");
printf("\n\n\t请输入您的姓名:
");
charxingming[16];
charyanzheng[20];
scanf("%s",xingming);
printf("\n\n\t请输入密码:
");
dedaomima(guke[renshu].mima);
printf("\n\n\t请再次确认您的密码:
");
dedaomima(yanzheng);
if(strcmp(guke[renshu].mima,yanzheng)==0)
{
printf("\n\n\t密码验证通过:
");
break;
}
else
{
printf("两次密码不相同。
请重新输入。
");
system("cls");
}
}while
(1)
{
printf("\n\n\t请输入开户金额:
");
scanf("%d",&guke[renshu].jin_e);
if(guke[renshu].jin_e>0)
{printf("\n\n\t开户成功,您的可用余额为:
%d",guke[renshu].jin_e);
break;
}
else
{
printf("\n\n\t开户金额不能低于壹圆!
\n\n");
system("cls");
}
}
guke[renshu].zhanghao=518518+renshu;
printf("\n\n\t您的账号是:
%d请牢记!
\n",guke[renshu].zhanghao);
printf("\n\n\t开户成功,是否继续?
继续请按任意键。
\n");
renshu++;
getch();
}
登录服务:
voiddenglu()
{
intq;
for(q=0;q<8;q++)
{
printf("\n\n\t正在进入,请稍后");
shaohou();
system("cls");
}
/*while
(1)
{
printf("\n\n\t\t【登录服务】");
printf("\n\n\t\t请输入账号:
");
intzh;
scanf("%d",&zh);
inti;
for(i=0;i { if(zh! =guke[i].zhanghao) { printf("\n\n\t账号错误,请重新输入。 "); continue; } else { xianzai=i; printf("\n\n\t账号正确: "); } }break; }*/ printf("\n\n\t\t【登录服务】"); printf("\n\n\t\t请输入账号: "); intzh; scanf("%d",&zh); for(inti=0;i { if(zh! =guke[i].zhanghao) { i++; if(i==renshu) { printf("\n\n\t账号错误,请重新输入。 "); } continue; } else { xianzai=i; printf("\n\n\t账号正确: "); break; } } for(i=0;i<3;i++) { printf("\n\t请输入密码: "); charpassword[10]; dedaomima(password); if(strcmp(password,guke[xianzai].mima)==0) { printf("\n\t密码正确! "); break; }else { printf("密码输入错误,请重新输入。 "); return; getch(); } } fuwu(); getch(); } 主菜单模块: 此模块主要用于用户进行各种操作服务的选择,实现相关功能,如存款,取款,转账,密码修改,余额查询等等。 voidfuwu() { inti=0; for(i;i<8;i++) { printf("\n\n\n\n\n\n\n"); printf("\n\n\n\n\t\t\t正在进入服务,请稍后"); shaohou(); system("cls"); }while (1) { charshuru; system("cls"); printf("\n\n\t【服务】\n"); printf("\n\n\t%d晚上好,行军蚁银行欢迎您.\n",guke[i].name); printf("\n\t(现在暂时恢复存款服务、取款服务、余额查询。 )\n"); printf("\n\ta.存款服务\n"); printf("\n\tb.取款服务\n"); printf("\n\tc.转账服务\n"); printf("\n\td.余额查询\n"); printf("\n\te.密码修改\n"); printf("\n\tf.退出\n"); printf("\n\t请选择服务: "); scanf("%c",&shuru); switch(shuru) { case'a': case'A': cunkuan();break; case'b': case'B': qukuan();break; //case'c': //case'C': zhuanzhang();break; case'd': case'D': chaxun();break; //case'e': //case'E': xiougai();break; case'f': case'F': printf("返回上级菜单,请按任意键");return; default: printf("\n\t您的选择错误! ");break; } } } 存款服务: voidcunkuan() { for(inti=0;i<5;i++) { printf("\n\n\t正在进入,请稍等"); shaohou(); system("cls"); } printf("\n\n\n\n\n\n\n"); printf("\n\n\t【存款服务】"); printf("\n\n\t请输入您的存款金额: "); intxincun; scanf("%d",&xincun); guke[renshu].zong=guke[renshu].jin_e+xincun; printf("\n\n\t您现在的可用余额为: %d",guke[renshu].zong); printf("\n\n\t是否继续? 继续请按任意键。 "); getch(); } 取款服务: voidqukuan() { for(inti=0;i<5;i++) { printf("\n\n\t正在进入,请稍等"); shaohou(); system("cls"); } printf("\n\n\t【取款服务】"); printf("\n\n\t请输入取款金额: "); intxinqu; scanf("%d",&xinqu); guke[xianzai].zong=guke[renshu].zong-xinqu; if(xinqu printf("\n\n\t取款成功: %d,您现在的可用余额为: %d",xinqu,guke[xianzai].zong); printf("\n\n\t是否继续? 继续请按任意键: "); getch(); } 查询服务: voidchaxun() { for(inti=0;i<5;i++) { printf("\n\n\t正在进入,请稍等"); shaohou(); system("cls"); } printf("\n\t【查询服务】"); printf("\n\t您的可用余额为: %d",guke[renshu].jin_e); printf("\n\t是否继续? 继续请按任意键."); getch(); } 3.6流程逻辑 3.7接口 1、本程序所隶属的上一层模块结构图: 2、本程序隶属的下一层模块: 本小组考虑到本程序已经是属于ATM管理系统系统层次的ATM事物处理层,所以没有下一层模块。 3、与本程序直接关联的C语言知识 欢迎模块: voidhuanying() 开户服务: structkaihu 登录服务: voiddenglu() 主菜单模块: voidmain() voidfuwu() voidcunkuan() voidqukuan() voidchaxun() 3.8存储分配 在欢迎界面,用户服务模块,主菜单模块使用之后到用户开始实现功能之前,其需要的所有内容以及使用功能的信息本身全部常驻内存。 用户选择退出时,系统自动保存相关信息。 3.9注释设计 各个模块中的注释主要用来注释相关函数的主要作用,和主要的实现原理。 而程序中的注释主要用于对一些主要方法进行注释,以方便系统编码人员对整个设计思想的理解,也便于其他阅读人员更好的理解本程序。 其中注释的风格全部按照C语言规定的风格。 3.10限制条件 不足之处: 由于本小组知识范围所限,软件开发的经验严重不足,对数据库管理工具还没有学习,只是用C语言相关知识进行编程,所以对系统开发的进度以及系统功能的实现程度较难控制。 已具备的条件: 1、小组成员交流比较方便,而且共同写作,积极进取。 2、实现系统所需的资料准备得较齐全。 尚需补充的条件: 1、提高开发人员的编程能力和对软件工程思想的认识;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 取款 详细 设计 说明书