资源描述
连云港职业技术学院
信息工程学院 软件技术111 第二组
设计题目: ATM管理系统的设计与实现
学生姓名: 王伟
小组成员: 邱树、 陈杰、 王伟、 赵震峰、 孟坤
专 业: 软件技术
指导教师: 胡海明
所在学院: 信息工程学院
连云港职业技术学院
10月12日
目录
第1章 绪言 3
第2章 系统需求分析 4
2.1. 现行业务系统描述 4
2.2. 组织结构图 4
2.3. 业务流程图 5
2.4. 现行系统存在的主要问题 5
2.5. 可能的解决方案 5
第3章 系统逻辑方案 6
3.1. 项目需求分析 6
3.1.1 功能需求 6
3.1.2 非功能需求 6
3.2. 数据流图描述 7
3.3. 数据字典描述 8
3.4. 基本加工的小说明书 10
第4章 系统总体结构设计 12
4.2.数据库设计 13
4.2.1. 实体描述 13
4.2.3. 关系模式 15
第五章 面向对象分析与设计 16
5.1 系统分析 16
5.1.1.需求分析概述 16
5.1.2系统需求描述与功能描述 16
5.1.3.用例建模 16
5.1.4 活动建模 19
5.2 系统设计 25
5.2.1类的建模 25
5.2.2动态建模 27
5.2.2.1系统状态图 28
5.2.2.2系统顺序图与协作图 29
5.3、 系统实现 32
5.3.1细化类图, 添加类的属性和操作 32
5.3.2系统的构件图与部署图 32
第6章 系统实施 33
6.1. 实施环境与开发工具的选择 33
6.1.1设备 PC机、 打印机、 点钞机、 服务器等。 33
6.1.2支持软件 windows操作系统 33
6.2. 编程环境与方法 33
6.3 系统部署的条件 33
第7章 总结 33
第1章 绪言
AT\M机管理系统是银行业务流程过程中十分重要且必备的环节之一, 在银行业务流程当中起着承上启下的作用, 其重要性不可言喻。可是, 当前许多银行在具体的一些业务流程处理过程中依然使用手工操作的方式来实施, 不但费时, 费力, 效率低下, 而且无法达到理想的效果。为明确软件需求、 安排项目规划与进度、 组织软件开发与测试, 撰写文本文档, 本文本针对上述问题, 采用软件工程开发的原理, 依据软件流程过程规范, 按照需求分析, 概念设计程序编码, 软件应用等过程, 开发了这个系统。
第2章 系统需求分析
2.1. 现行业务系统描述
为完善银行现代化服务理念, 提高业务自动化处理水平, ATM自动柜员机和自助银行在全国金融界中不断普及。
许多原来要在银行网点办理的业务现在都能够在自动柜员机上自助进行, 储户可经过手中的银行卡在ATM上进行存、 取款, 转账等服务, ATM和自助银行给我们的生活带来了许多方便, 成为我们生活中密不可分的助手, 已经完全融入百姓的日常生活中。
当今各银行监控系统都采取了较为传统的数字化硬盘录像系统, 优点是改变了存储介质、 节省了录像质料存放的空间。
2.2. 组织结构图
2.3. 业务流程图
2.4. 现行系统存在的主要问题
从全国不断发生的ATM机案件来看传统的监控模式已经很难适应当前复杂的ATM存取款治安环境。如何提升ATM机的安保水平强化ATM机的危险感知能力变被动防守型的事后取证为主动防御型预警干预已经成为摆在银行和安保服务商面前的一个重要课题。为方便相关部门和单位了解现实问题创新安保思路加强防范能力改进行业形象避免出现ATM监控建设流于形式而不注重效果的现象发生我们结合ATM机及自助银行的治安特点综合分析各类案件的特征和发展趋势提出了新形势下ATM机的安保要点及解决方法。
2.5. 可能的解决方案
1.银行实际需要的不但是录像取证系统而是全方位的监控安保系统。
2.面对复杂的ATM机使用环境应当迅速改变被动的视频监录思路建立起以各种预警传感器为基础视频录像为后盾的立体防控体系 。第3章 系统逻辑方案
3.1. 项目需求分析
3.1.1 功能需求
功能名称取款
创立人
最后修改人
创立日期
最后修改日期
角色: 客户
描述: 客户输入取款金额。系统判断账户正常且金额允许后提供款给客户。
前置条件: 取款身份帐号密码合法
后置条件无
主干过程
客户指定所需金额
系统接受请求判断帐号余额充分后从账户扣钱
ATM吐现金, 客户取款
客户得到交易凭条
客户输入其它信息, 结束此次取款
系统保存交易信息, 添加日志。
3.1.2 非功能需求
1.ATM终端无人操作时, 显示待机动画
2.ATM接受卡, 检验卡是否可进行交易( 用户向ATM提款机中插入银行卡, 如果插入无效的银行卡, 那么, 在ATM提款机界面上提示用户”您使用的银行卡无效! ”, 3秒钟后, 自动退出该银行卡; 如果银行卡是合法的, ATM提款机界面提示用户输入提款密码)
3.磁卡认证完成, 进入主交易界面( 储户输入正确密码, 校验密码, 显示主交易界面)
4.插入卡后取消操作(提示账户是否确定操作,如果是, 退出银行卡)
5.校验密码是否格式正确(例如密码长度)
6.校验密码是否正确( 校验当前密码与存储的账户密码是否一致)
7.卡密码连续三次输入错误, 没收磁卡( 用户连续第三次输入错误密码, 错误则吞食磁卡, 提示”您的卡连续三次密码错误, 已被吞没。请联系客服955**”)
8.ATM现金不足, 系统应对取款储户进行提示, 可退出交易
9.ATM凭条打印机故障, 系统应对存款和转账储户进行提示, 可退出交易
3.2. 数据流图描述
二层数据流图
取款:
查询:
转账:
一层DFD图 2-2
3.3. 数据字典描述
1.名字IC卡信息表
别名ICinfo
描述存储IC卡的信息
定义IC=IC卡号+密码+所属银行+IC余额+密码当日错误次数
位置所属银行数据库
2. 名字IC卡号
别名无
描述唯一标识IC卡的号码
定义IC卡号=6位数字
位置IC卡信息表
3. 名字密码
别名无
描述IC卡的验证信息
定义密码=6位数字
位置IC卡信息表
4. 名字所属银行
别名无
描述描述IC卡属于哪个银行
定义1{字符}20
位置IC卡信息表
5. 名字IC余额
别名无
描述记录IC卡账户的余额
定义余额=float型数
位置记录IC卡账户的余额
6. 名字用户信息表
别名userinfo
描述存储用户的信息
定义用户=身份证号+用户名+电话+居住地址+IC卡号
位置所属银行数据库
7. 名字身份证号
别名无
描述唯一表示用户身份的编号
定义18位数字
位置用户信息表
8. 名字用户名
别名无
描述记录用户的姓名
定义1{字符}20
位置用户信息表
9. 名字电话
别名无
描述用户电话号码便于联系
定义7{字符}11
位置用户信息表
10.名字ATM机信息表
别名ATM
描述存储ATM机ID以及余额
定义ATM=ATM机ID+余额+100num+50num
位置所属用户数据库
11. 名字ATM机ID
别名ATM机编号
描述唯一确定ATM机的号码
定义6位数字
位置ATM机信息表
12. 名字操作记录
别名操作
描述描述用户的整个的操作过程
定义1{字符}20
位置ATM日志表
13. 名字取款日期
别名无
描述记录本次交易的日期
定义日期型
位置回单信息表
3.4. 基本加工的小说明书
插卡并输入密码
如果 密码正确
则
进入操作界面 ( 共有四种基本操作)
1、 查询帐户
2、 提取现金
3、 转账汇款
4、 修改密码
如果 需要进行以上某个操作 请选择
选择需要的操作
否则 超过10秒钟没有操作 或 选择退出
退卡
否则
再次输入密码( 如果密码输入的错误次数超过10次, 则吞卡)
如果 选择第1个操作: 1、 查询帐户
则
进入查询帐户的操作界面 ( 按币种分类共有四种查询操作)
1、 人民币帐户
2、 港币帐户
3、 美元帐户
4、 其它帐户
选择你需要的操作就能够查询并显示你的帐户信息
如果 还需要其它操作
按”返回”键
否则 ( 超过10秒钟没有操作 或 选择退出)
退卡
否则 如果 选择其它三个任意一个操作
进入各自的界面进行各自的操作
否则
退卡
如果 选择第2个操作: 2、 提取现金
则
进入提取现金的操作界面 ( 按币种分类共有四种币种能够取得)
1、 人民币帐户
2、 港币帐户
3、 美元帐户
4、 其它帐户
选择你需要的操作并输入你要取出的金额 等待出钞
如果 还需要其它操作
按”返回”键
否则 超过10秒钟没有操作 或 选择退出
退卡
否则 如果 选择其它三个任意一个操作
进入各自的界面进行各自的操作
否则
退卡
如果 选择第3个操作: 3、 转账/汇款
则
进入转账/汇款的操作界面 ( 共有两种转账汇款方式)
1、 卡内转账
2、 卡卡转账
选择你需要的操作
界面提醒你输入两次你要转入的卡号
卡号输入完毕, 提醒你输入金额
按”确定”键, 转账完毕
如果 还需要其它操作
按”返回”键
否则 超过10秒钟没有操作 或 选择退出
退卡
否则 如果 选择其它三个任意一个操作
进入各自的界面进行各自的操作
否则
退卡
第4章 系统总体结构设计
4.1. 软件总体结构的设计
4.1.1. HIPO图
4.1.2. IPO图
4.2.数据库设计
4.2.1. 实体描述
IC:
图 3-1
实体集IC, 有属性 账号( 唯一的学号) , 姓名, 余额, 办证日期, 密码和联系方式, 住址。
银行
实体集银行, 有属性银行编号( 唯一) , 结款总额, 日期, 负责人。
4.2.2. E-R图
4.2.3. 关系模式
IC卡( 账号, 姓名, 余额, 办证日期, 密码, 联系方式, 住址)
银行( 银行编号, 结款总额, 日期, 负责人)
第五章 面向对象分析与设计
5.1 系统分析
5.1.1.需求分析概述
1 ATM机要能够判断磁卡的类别如果不是有效的磁卡则退卡
2 能够在较快的时间内响应用户的请求并针对相应的请求执行正确的操作
3 查询自己的账户时应显示余额和可用余额并显示ATM机里所拥有的现金面值让用户能够做出正确的选择
4 提取现金时提示用户输入取款金额并判断输入是否确如果错误提醒用户并要求重新操作正确则提醒用户收取现金
5 转账汇款时让用户选择转账类型要求用户输入转账账号并要求用户输入两次以确保没有输入错误在两次输入都正确的情况下让用户输入转账金额并作最后的认
6 进入修改密码界面后提醒用户输入新密码并要求再次输入以确保密码统一无误在确认后完成修改操作并提醒用户新密码生效
7 对于错误的操作或者操作延时做出有效的处理
5.1.2系统需求描述与功能描述
·总行拥有多台ATM。
·分行提供分行计算机和柜员终端。
·储户拥有账户。
·分行计算机处理针对账户的事务。
·分行计算机维护账户。
·柜员终端与分行计算机通信。
·柜员输入针对账户的事务。
·ATM与中央计算机交换关于事务的信息。
·中央计算机确定事务与分行的对应关系
5.1.3.用例建模
1.ATM系统用例图:
2.这个ATM系统主要显示了对客户提供存取款, 转账, 余额的功能。
3.描述用例
验证用例
1. 简要说明
本例用来描述用户登陆的过程
2. 事件流
(1) 基本流
1.系统验证银行卡账号。
2.用户输入密码。
3.系统验证用户输入的密码信息。
4.用户进入系统。
(2) 备选流
1.如果账号错误, 给出提示, 退出。
2.. 如果输入密码错误, 给出提示, 退出。
取款用例
3. 简要说明
本例用来描述用户取款的过程
4. 事件流
(1) 基本流
1.用户输入取款金额。
2.系统验证输入金额是否符合输入要求。
3.系统验证用户账户余额。
4.系统显示用户取款金额。
5.用户确认取款金额。
6.系统要求点钞机出钞。
7.系统更新并保存账户信息。
(2) 备选流
1.如果输入金额不符合输入数字格式要求, 给出提示, 退出。
2.如果输入金额超出最大取款金额, 给出提示, 退出。
3.如果用户没有确认, 给出提示, 退出。
查询余额用例
5. 简要说明
本例用来描述用户查询余额的过程
6. 事件流
(1) 基本流
1. 用户选择查询余额功能。
2. 系统显示账户余额及最大取款限额。
转账用例
7. 简要说明
本例用来描述用户转账的过程
8. 事件流
(1) 基本流
1.用户输入转账账号。
2.系统验证转账账号。
3.用户输入转账金额。
4.系统验证输入金额是否符合输入要求。
5.系统验证用户账户余额。
6.系统显示用户转账账户及转账金额。
7.用户确认转账账户及转账金额。
8.系统更新并保持账户信息。
(2) 备选流
1.如果输入账号不正确, 给出提示, 退出。
2.如果输入金额不符合输入格式要求, 给出提示, 退出。
3.如果输入金额超出最大转账金额, 给出提示, 退出。
4.如果用户没有确认, 给出提示, 退出。
5.1.4 活动建模
1.读卡
当用户插入卡后, 验证是否为正确的IC卡, 若不是则强行退卡, 若是则系统应该自动的读取条形码中的信息, 并自动检索本系统需要的信息, 包括卡号类型, 用户名, 密码( 为密码验证提供依据) 等账号相关信息; 当IC卡磁条损坏或由于其它的原因而导致的读卡错误, 应进行界面提示, 并自动退卡。
2.身份验证
在用户插入正确的IC卡后, 应该进行密码验证, 即确定该用户为合法用户, 若密码正确则该用户能够进行像余额查询, 修改密码, 取钱, 转账操作业务, 当密码错误是应允许重新输入密码, 但只允许重新输入三次, 当超过三次时, 系统应该冻结该账户二十四小时, 给出提示信息的同时并退卡。
2.1.2性能
读卡应在2秒内完成, 除连接银行数据库的时间和等待银行数据库响应的时间之外身份验证应在1秒内完成。系统安全性必须好, 数据一致性, 存储权限必须得到保证。密码处理应当可扩展, 因为今后可能出现6位以上密码或非数字密码。
2.1.3输入项目
名称
输入项
读卡时读卡器输入
IC磁条信息( IC卡卡号)
读卡时银行数据库输入
账户信息( 包括密码、 用户名、 账户余额等)
身份验证时键盘输入
六位数字的密码
2.1.4输出项目
在屏幕输出读卡结果和身份验证结果。
读卡和身份验证的活动图如下:
2.2取款子系统
2.2.1功能
在进入主功能界面后的主要功能, 选择该功能后应给出相应的界面, 在用户输入取款金额后自定验证( 包括余额是否充分, 是否超过单次最大金额( 1000) , 或单日最大金额( 0) ) , 若条件都符合则取款, 吐钱; 否则做出相应的处理。
2.2.2性能
操作无误则在按下取款键后2秒内吐钱, 有误则正确提示错误原因。取款因为某些原因失败后所有操作要正确回滚。操作日志应记录所有吐钱记录, 用户可打印的回单也应有取款记录。
2.2.3输入项目
取钱数额。
2.2.4输出项目
名称
操作成功
操作失败
取钱
吐出相应数目的钱数
信息提示, 返回主功能界面
取款功能的活动图如下:
2.3查询余额子系统
2.3.1功能
简单的显示余额的功能。
2.3.2性能
一秒内处理完毕并在屏幕上显示余额信息( 不计等待银行数据库响应的时间, 而且以后的时间如未特殊说明也不计等待银行数据库响应的时间) 。
2.3.3输入项目
点击余额查询功能的按钮。
2.3.4输出项目
在屏幕上显示余额。
余额查询功能的活动图如下:
2.4转账子系统
2.4.1功能
实现本行间不同账户的转账业务。
2.4.2性能
操作无误则在按下转账键后1秒内处理完毕, 有误则正确提示错误原因。转账因为某些原因失败后所有操作要正确回滚( 比如因为要转账的用户不存在, 则显示用户不存在并回滚操作, 比如银行不返回信息, 则显示网络中断) 。操作日志应记录所有转账记录, 用户可打印的回印单也应有转账记录。
2.4.3输入项目
1、 要转入到的账户号;
2、 要转的金额数目。
2.4.4输出项目
名称
操作成功
操作失败
转账
显示操作成功信息
提示操作失败信息
转账功能的活动图如下:
2.5修改密码子系统
2.5.1功能
密码修改功能应该是在正确的进入主功能界面后的一个操作命令, 应该有密码格式的自动检查, 若期间由于各种原因导致的修改错误, 应将密码回滚到修改前密码; 修改成功的标志是该账户在数据库中的信息得到修改并保存, 当然成功后应有相应的提示界面信息。
2.5.2性能
若由于某些原因未能成功修改, 应能回滚回原密码, 并正确提示密码未能修改。密码修改应在1秒内完成。
2.5.3输入项目
首先是旧密码, 然后是新密码, 最后是新密码确认。
2.5.4输出项目
名称
操作正确
操作失败
修改密码
修改成功提示信息
错误操作信息, 退回主界面
修改密码的活动图如下:
2.6打印回单子系统
2.6.1功能
打印在本次操作下账户的信息变化( 主要是转账操作, 取款操作) , 其中包括: 用户卡号, 用户名, 操作日期, 操作金额, 使用币种( 暂定为人民币) 等, 可作为以后用户进行该操作的一项凭证。
2.6.2性能
3秒打印完毕, 可打印转账户名, 转账金额, 转账操作网点, 取款金额, 取款日期, 取款操作网点等在回印单记录中保存的信息。
2.6.3输入项目
点击打印回单按钮。
2.6.4输出项目
名称
操作成功
操作失败
打回印单
回印单
错误信息提示, 退回到主功能界面( 比如打印机无纸或无墨)
打回印单的活动图如下:
5.2 系统设计
5.2.1类的建模
函数
输入
输出
Open()
卡号 密码
提示信息
WithdrawFunds()
金额
纸币
DeductFunds()
无
无
VerifyFunds()
无
无
取款类图
函数
输入
输出
Open()
卡号 密码
提示信息
DepositFunds()
金额
无
AddFunds()
无
无
VerifyFunds()
无
无
存款类图
函数
输入
输出
Open()
卡号 密码
提示信息
TransferFunds()
金额
无
DeductFunds()
无
无
VerifyFunds()
无
无
转账类图
函数
输入
输出
Open()
卡号 密码
无
Query()
无
无
余额查询类图
函数
输入
输出
Open()
卡号 密码
无
AlterPassword()
旧密码 新密码
无
修改密码的类图
函数
输入
输出
Open()
卡号 密码
无
PrintSlip()
无
凭条( 清单)
打印凭条的类图
5.2.2动态建模
许多单个的帐户组成了帐户库。帐户具有帐户类型、 帐户号、 余额三个属性, 均为private, 其类型分别为char, int, double。六个操作分别为setType、 getType、 getAccountNumbe、 setAccountNumbe、 caculateBalance、 getBalance, 除caculateBalance为protected其余均为public。
setType设置帐户类型, 返回类型为void, 参数类型为char, 输入帐户类型。
getType获取帐户类型, 返回类型为char, 无参数。
setAccountNumbe设置帐户号, 返回类型为void, 参数类型为int, 输入帐户号。
getAccountNumbe获取帐户号, 返回类型为int, 无参数。
caculateBalance计算余额, 返回类型为void, 参数为double, 第一个参数为输入存取款数额, 第二个参数为存款余额, 既为输入也为输出。
getBalance获取帐户余额, 返回类型为double, 无参数。
许多银行储户组成了储户库。ATM系统包含了许多ATM机。银行储户及ATM机两个类包含哪些属性, 哪些操作, 它们的可见性及操作的返回类型、 参数个数、 参数类型从类图上都一目了然。更多的属性及操作都能够一一加上, 使这个类图更详细更完整, 从而使参与项目的每个成员都能无歧义的明了整个设计的类的结构。同样对于一个真正的银行系统, 这个类图过于简单。比如帐户类型我们能够先定义一个abstract class, 它包含一个帐户最基本的属性及操作。而有些操作先定义为abstract, 如余额的计算。然后再继承这个abstract class, 我们能够有saving account 和checking account等等。不同的帐户有不同的余额计算方法, 我们能够加上具体的算法。对于不同的帐户可能还有一些它特有的操作, 我们也能够加上, 比如saving account在存款达到多少时能够享受机票打折的优惠。
对象类关联关系图:
5.2.2.1系统状态图
下图描述了顾客在ATM机上进行操作会经历的几种状态, 及各种状态之间转换的条件。因为是简化了的例子, 因此除了等待顾客插入磁卡的起始状态和结束服务的终止状态, 顾客会处于输入密码、 选择服务类型、 存款及取款四种状态。
ATM状态图:
5.2.2.2系统顺序图与协作图
下图描述了顾客在ATM机上取款时信息的流动情况。以时间为顺序。因为仅是示例, 因此整个过程是没有出现任何故障时的流程, 而且只画到了取款结束。经过这个图, 我们能够看出消息是如何在系统中不同对象之间进行交互。
经过流程图我们能够很清楚地看到系统是如何工作的, 系统各部分之间的信息及控制是如何发送的, 整个流程是否合理。流程图对我们的设计起到了很好的帮助作用。注意在本图没有一个生命线终端有一个"X", 这是因为这个流程中还未遇到有对象生命结束。当有对象生命结束时需在对应的生命线终端画"X", 表明这个对象在这时被销毁。
首先银行储户将ATM卡插入读卡机, 读卡机将信息传给客户管理, 客户管理提出查询密码, 显示部分将输入密码请求显示出来…..
Atm顺序图
ATM取款的场景:
( 1) 经过读卡机, 用户插入ATM卡;
( 2) ATM系统从卡上读取银行ID、 帐号、 加密密码、 并用主银行系统验证银行ID和帐号;
( 3) 用户输入密码, ATM系统根据上面读出的卡上加密密码, 对密码进行验证;
( 4) 用户输入取款数量;
( 5) ATM系统通知主银行系统, 传递储户帐号和取款数量, 并接收返回的确认信息;
( 6) ATM系统输出先进、 ATM卡和显示帐户余额的收据;
( 7) ATM系统记录事务到日志文件。
寻找场景中的对象: ATM、 客户和帐户。
协作图建模
合作图和顺序图是能够无信息损失的相互转换, 只是它们的侧重点是不一样的。顺序图着重于对象间消息传递的时间顺序, 合作图着重于表示对象之间的静态连接关系。下图将顺序图转换为合作图。
ATM系统协作图 :
1.插入ATM卡
2.接受ATM卡
3.查询密码
4.显示输入密码请求
5.输入密码
6.密码传递
7.请求确认密码合法性
8.确认密码合法性
9.询问服务类别
10.显示输入服务服务类别请求
11.输入取款请求
12.取款请求
13.询问取款数额
14.显示输入数额请求
15.输入取款数额
16.传递取款数额
17.询问取款数额确认
18.显示确认数额请求
19.输入确认
20.传递确认信息
21.数额合法性确认请求
22.确认数额和法性
23.出钞请求
24.计算帐户余额
25.出钞
26.取钞
27.传递余额并询问是否还需要其它服务
28.显示帐户余额并提示选择下面的服务
5.3、 系统实现
5.3.1细化类图, 添加类的属性和操作
5.3.2系统的构件图与部署图
构件图建模
部署图建模
1、 绘制ATM系统的部署图用于显示ATM系统的主要布局: ATM客户机可执行文件在不同地点的多个ATM上运行。ATM客户机经过专用网与地区ATM服务器通信。ATM服务器可执行文件在地区ATM服务器上执行。地区ATM服务器又经过局域网与运行Oracle的银行数据库服务器通信。最后, 打印机与地区ATM服务器连接。ATM系统采用了三层结构, 分别针对数据库、 地区ATM服务器和客户机。
ATM客户端
地区atm
服务器
专用网
银行数据
库服务器
打印机
专用网
局域网
第6章 系统实施
6.1. 实施环境与开发工具的选择
6.1.1设备 PC机、 打印机、 点钞机、 服务器等。
6.1.2支持软件 windows操作系统
6.2. 编程环境与方法
开发此软件代码由Visual C++6.0完成,由MFC工具开发 运行环境Pentium ll 以上处理器的Windous环境下, , , , 包括Win.NT等操作系统。
6.3 系统部署的条件
第7章 总结
1、 第一次接触软件工程这门项目, 感觉充满了挑战性
2、 学会了问题的需求分析, 以及分析解决问题的步骤,
3、 学会了画E_R图
展开阅读全文