第一篇:农村信用社自动取款机(ATM)管理办法
农村信用社自动取款机(ATM)管理办法
第一章总则
第一条为规范泰安市农村信用社自助银行网点(以下简称自助银行)的管理,完善其服务功能,树立良好社会形象;保障自助银行顺利建设、安全运行,根据中国人民银行《商业银行设立同城营业网点管理办法》、《银行卡业务管理办法》和《银行卡跨行业务吞没卡处理办法》的有关规定,制定本办法。
第二条自助银行是指农村信用社在营业场所以外设立的,以计算机系统和通信系统等高新科技手段为依托,以银行卡的广泛应用为基础,为客户提供存款、取款、贷款、转帐、查询、货币兑换和对帐单打印等金融业务的24小时服务,可以实现部分银行柜面业务由持卡人自己处理的自助设施。
第三条自助银行包括具有独立营业场所,提供上述金融业务的自助银行,和不具有独立营业场所,仅提供取款、转帐、查询服务的自动取款机(ATM)两类。
第四条自助银行的相关硬件设备分以下三种:
(一)现金类金融设备,包括自动取款机(ATM)、自动存款机(CDM)、外币兑换机(FEM)、现金存取款机(CRS)和夜间金库等;
(二)非现金类金融设备,包括存折补登机、对帐单打印机、多媒体信息查询机、自动保管箱系统等。
(三)附属设备,包括门禁系统、监控系统、防盗报警系统、自动灭火系统、宣传和照明的设施等。
第二章设立要求
第五条农村信用社设立自助银行应具备下列条件:
(一)已开办信通卡业务,并加入了中国银联网络;
(二)具有与综合业务网络系统联网的条件;
(三)具有合格的营业场所、安全防范设备及与业务有关的其他设施;
(四)具有合格的管理人员和专业技术人员;
(五)具有严格的人员控制管理制度并能切实执行
(六)中国人民银行规定的其他条件。
第六条自助银行的选址要求:
(一)人员流动性强、商业高度密集、正常营业时间外自助服务需求量大;
(二)具有良好的广告宣传效应;
(三)符合中国人民银行设立自助银行的其他要求。
第七条设立自助银行,要执行山东省农村信用社联合社(以下简称省联社)的统一装饰标准,突出农村信用社特色,强化宣传效果。
第八要自助银行的名称统一冠以“中国农村信用社”+“24小时自助银行服务”。自助银行要张贴银行联网标志、银行卡用卡常识和客户服务电话等。
第三章ATM设置审批
第九条农村信用社设立自助银行,由县级农村信用合作社联全社(以下称申请人)逐级向省联社提交相关申请文件,经省联社同意后,再按有关规定向中国人民银行监管行报批或备案。
第十条省联社按以下原则进行审批;
(一)合理布局、确有效益;
(二)与当地银行业发展服务水平和经营状况相适应;
(三)符合当地社区对金融自助服务的需求。
第十一条申请人向省联社提交申请报告,须附以下资料:
(一)申请人的基本情况和对拟设自助银行的投资情况;
(二)拟配置的机型、数量及提供的服务种类;
(三)拟设地点的市场分析,包括目标市场、服务需求、竞争状况、发展前景等;
(四)拟负责自助银行日常管理的机构和人员;
(五)安全监控方案及维护措施;
(六)已经设立的自助银行的数量、布局和运营情况;
(七)其他资料。
第十二条申请人申请设立具有独立营业场所的自助银行,须首先经省联社审核同意后,并发给书面批准文件,然后向中国人民银行监管行提出申请,获得批准后,方可筹建、开业。第十三条申请人设置只提供取款、转帐和查询服务的自动取款机(ATM),须首先向省联社提交本办法第十一条所列文件,由省联社备案,省联社自收到上述文件之日起十五个工作日内无异议的,申请人再向中国人民银行监管行备案,中国人民银行监管行在规定日期内无异议的,申请人方可设置自动取款机(ATM)。
第四章ATM业务管理
第十四条办事处网络中心要有专人负责自助银行软硬件设施的配置和管理;县联社计算机网络中心要有专人负责自助银行的日常维护。县联社计算机网络中心的自助银行维护人员情况要在市网络中心备案。
第十五条各级管理维护人员对自助银行所做的维护与检查等工作要在工作日志中进行记录。
第十六条信用社要为自助银行配备专职或兼职的操作员,具体负责自助银行设备加钞加纸、网点环境卫生及其他日常工作。操作员的配备要满足自助银行的日常管理要求,并符合分工合作、相互制约的原则。
第十七条市网络中心要制定相关的操作规程,并对操作员进行岗前培训;操作员经培训合格后方可上岗。自助银行操作员情况在县联社备案。
第十八条信用社要建立自助银行操作员交接登记制度,操作员临时更换或调动,要在内勤主任的监督下进行交接,并详细登记。
第十九条操作员要分别掌管房屋钥匙和管理卡,由信用社内勤主任和操作员双人封存后入库保管;备用的机箱钥匙、保险柜钥匙、钞箱钥匙由信用社内勤主任和操作员双人封存后上交联社入库保管。保险柜密码和管理卡密码要定期更换,严防泄密。
第二十条信用社要建立《自助银行运行日志》,由操作员将自助银行相关设施每天的运行情况和其他情况进行详细登记,县联社计算机网络中心的自助银行管理员对登记情况定期进行检查。
第二十一条信用社对自助银行的现金类金融设备要视同营业柜员进行管理,操作员对清钞、加钞、取钞的余额变动情况要进行详细登记。
第二十二条操作员在清查现金类金融设备钞箱余额和加钞、取钞过程中,必须坚持双人操作,并严格按照操作规程进行,不得随意更改及颠倒规程。
第二十三条营业柜员必须每日记录现金类金融设备收付情况,并登记《自助银行运行日志》。信用社对每机每月至少检查库存一次,县联社会计或稽核部门对辖内自助银行每机每季度至少检查库存一次,并进行详细记录。
第二十四条现金类金融设备如果发生长款或短款,相关部门和负责人要通过查看临近录象资料、检查《自助银行运行日志》、检查金融设备日志等手段尽快查明原因,并区别情况,及时作出处理。长款和短款的时间、金额、原因、处理结果等内容要详细记录,属于软件原因的,要将相关情况逐级上报省联社。
第二十五条现金类金融设备如发生吐钞或吞钞,信用社须根据客户提供的银行卡、客户凭条和有效的身份证件进行受理。受理后,必须查看金融设备日志和综合业务网络系统提供的相关资料,清点设备现金余额并查看监控录像,确认后按有关规定进行柜台兑付或账务调整。第二十六条如果发生吞卡,操作员要在《自助银行吞没卡登记簿》中进行登记,并严格按照省联社和银联股份有限公司的有关规定进行处理。
第二十七条金融设备交易所产生的有关凭证和报表要每天打印,并按照档案管理的有关规定进行保管;现金类金融设备日志是记录自助设备工作情况的重要依据,要保持其连续性,并建档登记,保管期限为5年。
第二十八条自助银行的金融设备要符合国家规定的有关技术规范。
第二十九条无独立营业场所的自助银行要有良好的监控系统、防盗报警设施和照明设施;有独立营业场所的自助银行要有严密的门禁系统、远程监控系统、防盗报警系统、自动灭火系统、不间断电源(UPS)和良好的照明设施。
第三十条监控系统和门禁系统要保证24小时不间断正常运行,监控录像和门禁数据记录至少保存30天。
第三十一条市网络中心对可能出现的异常情况要制定出应急方案,以确保自助银行安全、正常运行。
第三十二条市网络中心负责自助银行金融设备及相关软件的管理和操作员培训等工作,会计稽核部门负责其帐务、帐款的核查,保卫部门负责其安全管理。各部门要各负其责,密切配合。
第三十三条市网络中心要对辖内的自助银行每年至少检查两次,检查情况要全面记录,发现问题要及时解决。
第五章违规处罚
第三十四条发生以下情况要对相关责任人进行处罚并限期整改:
(一)用电环境和设施存在安全隐患的;
(二)相关设备不齐全或不符合标准的;
(三)人员配备达不到要求的;
(四)在设备运行和现金管理上违规操作的;
(五)发现问题未按规定及时上报的;
(六)吞卡、吞钞、帐务差错、设备故障问题未及时解决的;
(七)未按要求建立各种登记簿或未按要求进行登记的;
(八)其他违反规定的。
第三十五条市网络中心应根据实际情制定出具体的处罚办法。
第六章附则
第三十六条本办法未尽事宜,按照国家有关法律、法规和中国人民银行、中国银联股份有限公司省联社的有关规定执行。
第三十七条本办法由山东省农村信用社联合社泰安办事处负责制定、解释,修改亦同。第三十八条本办法自下发之日起开始执行
第二篇:ATM自动取款机C++课程设计
C++课程设计
学校: 惠州学院
题目: 设计ATM自动取款机系统 系别: 电子科学系 班级: 11电信2班 学号: 110703229 姓名: 王志勇
2014年4月21日
一、课程设计目的及要求
1.1设计目的
1.提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
2.培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。
3.学习和掌握础。C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基
1.2 ATM自动取款机设计要求
1.实现ATM取款机的基本功能,如给用户提供开户、查询余额、取款、修改密码、吃卡、退出系统等服务,可根据实际情况添加(如缴费、转账等服务)。
2.对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉并打印出相应凭条。
若输入的取款金额超出账户余额,则提示用户输入有误并提供更正功能
二、课程设计具体实现
2.1.1总体设计
根据C++类的基本知识和类的基本性质去实现ATM自动取款机基本功能;
ATM自动取款系统开户用户登录退出存款取款查询余额修改密码转账退出系统
2.1.2详细设计
1.登陆模块
主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。具体如下:开户、用户登录、退出系统;用户登录里面还有存款、取款、查询余额、修改密码、转账等功能
主要适用技术:登陆函数主要是使用了循环函数和do while函数,还有许多的成员函OpenAccount()、SaveMoney()、TakeMoney()、Inquiry()、Changepsw()、Transfer();Menus();关键代码如下: void main();主函数;
do{} while(1);//循环结构语句 switch(i);case 1: default: UserLogin();//用户登录界面函数 Menus();//用户操作函数 bank k;//默认构造函数 OpenAccount();break;//开户
SaveMoney();break;//存款 TakeMoney();break;//取款 Inquiry();break;//查询余额 Changepsw();break;//修改密码 Transfer();break;//转账
2.开户模块
主要完成功能为:进入开户模块。屏幕显示菜单提示,可根据要求依次输入姓名、身份证号、卡号、密码和预存款金额,完成以上操作之后,屏幕上显示恭喜您,开户成功;主要适用技术:开户函数使用了基本函数;
主要代码如下:void OpenAccount()//开户函数
3.存款模块
主要完成功能为:当开始使用本系统,进入存款模块。屏幕显示菜单提示,根据要求依 主要使用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void SaveMoney()//存款函数
4.取款模块
主要完成功能为:进入取款模块。如果全款金额小于或者等于卡上余额,则取款进行,否则重新输入取款金额。取款成功后显示卡上余额
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void TakeMoney()//取款函数
5.查询余额
主要完成功能为:进入查询余额模块。屏幕显示菜单提示,屏幕上将显示你的余额,然后进入修改密码模块;
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidInquiry()//查询余额函数
6.修改密码
主要完成功能为:进入修改密码模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,则将进行修改密码的步骤,先输入原始密码,然后再输入新密码,之后确认新密码,确认正确之后,密码修改成功,接下来进入转账模块; 主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void Changepsw()//修改密码函数
for(int i=1;i<=N;i++)else //循环结果语句 exit(1);//结束函数
7.转账模块
主要完成功能为:进入转账模块。输入所要转账的账号并输入转账金额,如果转账金额小于余额,转账成功输出卡上余额,主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidTransfer()//转账函数
8.退出系统模块
主要完成功能为:退出ATM自动取款系统,用条件if(i==7)break;或exist(1)实现。
三、源程序代码
#include
//默认构造函数,并初始化
void UserLogin();
//用户登录声明
void OpenAccount();
//开户函数声明
void Menus();
//用户操作函数声明
void SaveMoney();
//存款函数声明
void TakeMoney();
//取款函数声明
void Inquiry();
//查询函数声明
void Transfer();
//转账函数声明
void Changepsw();
//修改密码函数声明 private:
char name[20];
long cardID;
double SFZ;
long psw;
int money;};void Bank::UserLogin()
//用户登录函数定义 { long ID;long psw1;cout< //用户操作函数定义 { int a;do{ cout<<“1.存款n”;cout<<“2.取款n”;cout<<“3.查询余额n”;cout<<“4.修改密码n”;cout<<“5.转账n”;cout<<“6.退出系统n”;cout<<“请输入您要办理业务的序号:”;cin>>a;switch(a){ case 1: SaveMoney();break; case 2: TakeMoney();break; case 3: Inquiry();break; case 4: Changepsw();break; case 5: Transfer();break; case 6: exit(0);break; default:{cout<<“你的输入有误,请输入1-7之间的整数!n”;} } for(int j=0;j<=20;j++)cout<<“**”;cout< { cout<<“欢迎开户:”< cout<<“请输入您的姓名:”< cin>>name;cout<<“请输入身份证号码:”< 号:“< //存款 //取款 //查询余额 //修改密码 //转账 //退出 //开户函数定义 //cout<<”请输入您的卡 cin>>money;cout<<“恭喜您,开户成功!”< //存款函数定义 {int money1;cout<<“欢迎您使用取款业务”< void Bank::TakeMoney() { int money1;cout<<“欢迎您使用取款业务n”;cout<<“每次取款不能超过5000元”< cout<<“取款金额超出账户余额,请重新输入取款金额:”;cin>>money1;money=money-money1;cout<<“取款成功,您卡上余额为:”< 义 { cout<<“欢迎进行查询余额业务n”;cout<<“卡上余额为:”< //取款函数定义 //查询余额函数定 void Bank::Transfer() //转账函数定义 { long ID2;int money1;cout<<“欢迎使用转账业务n”< cout<<“金额超出账户余额,请重新输入取款金额:”;cin>>money1;money=money-money1;cout<<“转账成功,您卡上余额为:”< 修改密码函数定义 { long ID;long psw1;long psw2;cout<<“欢迎使用修改密码业务n”< // cin>>psw1;cout<<“请输入您的新密码:”< ICBC ”< case 2: k.UserLogin();break; default:{cout<<“你的输入有误,请输入1-3之间的整数!n”;} } for(int j=0;j<=20;j++)cout<<“**”;cout< //开户函数调用//用户登录 四、总结 在为期二周的课程设计中,我体会颇多,学到很多东西,通过完成C++程序设计的任务,使我熟练和掌握了这学期所学的有关visual c++6.0中的一些主要知识点和应用点,比如面向对象中的类的定义、类的实现、对象的定义、类的继承、类的多态性等等;还有面向过程的许多基础知识,结构体的基本类型,基本应用、结构体的堆栈基础知识等等。应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题,这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。 时间总是过得很快,转眼间C++课程设计就要结束了,通过这次课程设计,我们学会了很多,也懂得了很多,知道自己的C++只是哈有很大的提高空间。感谢老师,是您让我们知道了这些,是您一次次的帮助我们那些被我们收拾的面目全非的程序,让我们的程序起死回生;感谢老师,是您让我们看到自己的差距,看到了自己的基础知识还很薄弱,还有许多的只是我们还不懂,我们需要再接再厉去提高自己;感谢老师,是您让我们懂得了原来C++的许多程序原来是很深奥很深奥的,原来C++的许多程序是可以那样完成的,还有调试还可以是以那种形式去调试的;总之感谢您老师,是我们的C++有了进一步的提高,谢谢您老师,你们辛苦了。 “实践是检验真理的唯一标准”。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。C++程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。 ATM自动取款机系统 ATM自动取款机(automatic teller machine)是银行在银行营业大厅、超市、商业机构、机场、车站、码头和闹市区设置的一种小型机器,利用一张信用卡大小的胶卡上的磁带〔或芯片卡上的芯片〕记录客户的基本户口资料,让客户可以透过机器进行提款、存款、转帐等银行柜台服务。这里介绍使用Rational Rose工具为ATM自动取款机系统进行建模。 5.1需求分析 ATM自动取款机系统的需求分析简述如下: (1)客户将银行卡插入读卡器,读卡器识别卡的真伪,并在显示器上提示输入密码。(2)客户通过键盘输入密码,取款机验证密码是否有效。如果密码错误提示错误信息,如果正确,提示客户进行选择操作的业务。 (3)客户根据自己的需要可进行存款、取款、查询账户、转账、修改密码的操作。(4)在客户选择后显示器进行交互提示和操作确认等信息。(5)操作完毕后,客户可自由选择打印或不打印凭条。 (6)银行职员可进行对ATM自动取款机的硬件维护和添加现金的操作。 5.2系统建模 在系统建模以前,我们首先需要在Rational Rose 2003中创建一个模型。并命名为“ATM自动取款机系统”,该名称将会在Rational Rose 2003的顶端出现,如下图5-1所示。 图 5-1创建项目系统模型 5.2.1创建系统用例模型 创建系统用例的第一步是确定系统的参与者。考试成绩管理系统的参与者包含以下三种: (1)客户(2)银行职员(3)信用系统 三个参与者如图5-2所示。 图5-2 系统参与者 然后,我们根据参与者的不同分别画出各个参与者的用例图。 1.客户用例图:客户在本系统中可以进行取款、存款、转账、查询余额、修改密码和还款的相关操作,通过这些活动创建的客户用例图如图5-3所示。 图5-3 客户用例图 图5-4 银行职员用例图 2.银行职员用例图:银行职员在本系统中能够进行硬件维护、修改密码和添加现金的相关操作,通过这些活动创建的银行职员用例图如图5-4所示。 5.2.2创建系统静态模型 从前面的需求分析中,我们可以依据主要的九个类对象:ATM自动提款机、客户、银行职员、信用系统、数据库连接、银行账户、ATM屏幕、ATM键盘和ATM读卡器创建完整的类图如图5-5所示。 图 5-5 系统类图 5.2.3创建系统动态模型 系统的动态模型可以使用交互作用图、状态图和活动图来进行描述。 5.2.3.1 创建序列图和协作图 客户取款的活动步骤分为:(1)客户插入银行卡(2)读卡机读取卡号(3)初始化屏幕(4)读卡机打开账户并提示输入密码(5)用户输入密码(6)验证密码(7)屏幕提示选择操作(8)用户选择取款操作(9)银行账户扣除钱款(10)吐钱机提供钱和收据(11)用户取钱并退卡。根据以上步骤创建的序列图和协助图,如下图5-6和图5-7所示。 图5-6 客户取款序列图 图5-7 客户取款协作图 5.2.3.2 创建活动图 我们还可以利用系统的活动图来描述系统的参与者是如何协同工作的。ATM自动取款机系统中,根据用户开立新账户的步骤,我们可以创建活动图如下图5-12所示。 图5-12 系统活动图 图5-13 系统状态图 5.2.3.3 创建状态图 在ATM自动取款机系统中,有明确状态转换的类是银行账户,从账户的打开到账户关闭的过程,状态会发生明显的变化。创建后的系统状态图如下图5-13所示。 5.2.4创建系统部署模型 对系统的实现结构进行建模的方式包括两种,即构件图和部署图。ATM自动取款系统的构件图我们通过构件映射到系统的实现类中,说明该构件物理实现的逻辑类,在本系统中,我们可以对银行账户、信用系统、客户、ATM屏幕、ATM取款机、ATM键盘、银行职员、读卡器和数据库服务器分别创建对应的构件进行映射。ATM自动取款机系统的构件图如图5-14所示。 .图 5-14系统构件图 图5-15 系统部署图 ATM自动取款机系统的部署图描绘的是系统节点上运行资源的安排。包括了四个节点,分别是:ATM客户端、地区ATM服务器、银行数据库服务器和打印机。创建后的部署图如图5-15所示。 “银行ATM机自动取款系统”需求分析报告 一、引言 1.1 整体描述 本系统的名称为“银行ATM机自动取款系统”。系统的功能主要有:能够读取和存储客户的存款和取款信息,方便客户自由交易;在客户选定交易类型后,直接与客户进行现金交易,方便快捷。将客户最新的存取信息上传到银行的总存储系统,并自动更新系统中的客户信息,方便银行系统管理员对客户信息的管理。 1.2 各个事件流 1.取款 客户将银行卡插到卡槽中后,进入个人账户登录界面,客户输入密码后,点击“确认”,进入个人账户界面,点击“取款”,进入取款界面,选择取款金额,点击选中的数字按钮,进入等待界面,取出取款口的现金后,进入“是否打印凭条”界面,点击“是”,凭条从凭条口吐出,取出后,点击“退出”,取出银行卡;在进入“是否打印凭条”界面,点击“否”,直接进入退出界面,点击“退出”,取出银行卡。 2.账户与信息查询 银行系统管理员进入系统后,点击“查询客户账户信息”按钮;客户登录个人账号,将银行卡插到卡槽中后,进入登录界面,输入密码后,点击“确认”,进入个人账户界面,点击“查询”按钮。3.口令管理 客户将银行卡插入ATM机卡槽中,进入个人账户登录界面,输入密码,点击“确认”,进入个人账户界面,点击“修改密码”按钮,在口令修改页面输入新的密码,点击“确认”。 二、需求概述 2.1 市场需求 由于的各方面发展速度的大幅提高,几乎所有的银行都配备了不用繁琐的人工操作的ATM自动取款机。人们可以随时随地进行交易,不再受银行的服务时间的约束,取款时也为人们节省了很多时间,方便快捷。对于配有ATM自动取款机的银行,客户较多,系统需操作方便,信息读取与存储及时快速,方便客户进行自由交易和系统管理员对信息的管理。 2.2功能需求 本系统相应的需求有以下方面: (1)能够读取和存储客户账户中的存取款信息,并方便有效地进行客户选择的交易操作。这主要包括以下内容: ① 自动调用银行总系统中客户原有信息 ② 信息录入与修改。输入并保存客户的信息,每个客户是一条记录。 a 编号 b 客户姓名 c.支取密码 d.客户地址 e.客户电话 f.账户总金额; ③在存取款文件中,每次存取款是一条记录。 a.编号 b.日期 c.类别 d.存取数目 e.经办人。④类别 a定期1年存款 b.活期存款 c.取款 ⑤并提供信息修改、删除的功能。 ⑥存取款模拟:根据存取款信息生成存款与取款单,并修改客户的账户总金额。⑦查询与统计:根据客户信息查询指定时间段的资金明细、根据日期查存取款信息、统计某年的存取款信息。 (2)提供客户信息访问的权限和管理。其中包括: ① 客户访问普通信息的权限 ② 银行系统管理员对客户信息的录入、更改和删除 本例中,我们通过一定的调研和分析得到“银行ATM机自动取款系统”的用例图,如下图所示: 2.3 安全性需求 由于银行ATM机自动取款系统的客户量很大,所以在对客户账户信息的导入和交易操作要保证速度。在客户进行交易操作的过程中又要保证事务的完整性。在整个系统中,需要完整的权限控制,以防止某些人恶意地攻击系统,修改系统中的原始记录。同时对于数据库中的数据需要定时备份,防止系统数据丢失。此外,系统要求用户在登录时需要密码验证。 三、故障处理 在正常情况下,应该不出现错误,一旦发生意外,比如:不识别银行卡、输入取款金额后现金吐不出来、取款后ATM自动取款机为将信息上传到总系统中等等,也应保证客户账户信息不受损坏。 ATM(自动取款机)的用例图、类图、顺序图、状态图、活动图及协作图 用例图 参与者“银行储户”和ATM机。简化后的ATM机仅有取款、存款及其余功能。其余功能不做详细说明。 银行储户在ATM机上完成取款、存款及其他业务。类图 图2所示的银行系统类图和图5是类似的,只是将工作人员换成了ATM。整个银行系统包括了帐户库、银行储户库及ATM系统。 许多单个的帐户组成了帐户库。帐户具有帐户类型、帐户号、余额三个属性,均为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在存款达到多少时可以享受机票打折的优惠。通过类图不仅可以使设计者明确的表达自己的设计意图,也能帮组自己整理思路,充实及优化自己的设计。 图2 银行系统类图 顺序图 图3描述了顾客在ATM机上取款时信息的流动情况。以时间为顺序。因为仅是示例,所以整个过程是没有出现任何故障时的流程,并且只画到了取款结束。通过这个图,我们可以看出消息是如何在系统中不同对象之间进行交互。 通过流程图我们可以很清楚地看到系统是如何工作的,系统各部分之间的信息及控制是如何发送的,整个流程是否合理。流程图对我们的设计起到了很好的帮助作用。注意在本图没有一个生命线终端有一个“X”,这是因为这个流程中还未遇到有对象生命结束。当有对象生命结束时需在对应的生命线终端画“X”,表明这个对象在这时被销毁。 首先银行储户将ATM卡插入读卡机,读卡机将信息传给客户管理,客户管理提出查询密码,显示部分将输入密码请求显示出来…..因为这个顺序图较长,且很清晰,即便是初学者也很容易读懂,在此就不对本图做过多的解释。 图3 ATM取款顺序图状态图 图4描述了顾客在ATM机上进行操作会经历的几种状态,及各种状态之间转换的条件。因为是简化了的例子,所以除了等待顾客插入磁卡的起始状态和结束服务的终止状态,顾客会处于输入密码、选择服务类型、存款及取款四种状态。 图4 ATM状态图 插入磁卡后进入输密码状态,当密码输入正确时进入选择服务类型状态,当输入密码不正确时,停留在原状态,但如果三次不正确,服务结束。进入选择服务类型后根据选择的不同,顾客可进入存款和取款状态。存、取款结束后,顾客既可以选择结束服务到最终状态,也可以选择继续服务回到选择服务类型状态。 通过状态图我们可以无歧义的了解各个活动角色是如何在不同状况下转换的,转换的条件是什么,是否会出现死锁现象,是否有条件没考虑周全,是否有状态无法达到。状态图可以帮助我们发现问题,并及时改正。活动图 图5参考了Randy Miller的《A Hands-On Introduction for Developers》一文,3图中的客户管理和事物管理对应于5图中的Bank,图3中的读卡机、显示、输入设备及点钞机对应于5图中的ATM Machina,银行储户就是Customer。初看活动图和顺序图表达的意义很接近。但我们可以注意到顺序图着重时间的顺序,而活动图侧重于各部分之间的相互制约,对于一些并行的活动能够有效的表示出来。例如5图中fork和join处,我们可以很清楚的看到一些并行活动的存在。 这个活动图以顾客插入卡为开始,以顾客取卡结束。我们可以看到活动图的重点虽然不在时间顺序,但我们同样可以得到时间的信息。 图5 ATM银行系统活动图 协作图 在第四章中我们知道协作图和顺序图是可以无信息损失的相互转换,只是它们的侧重点是不一样的。顺序图着重于对象间消息传递的时间顺序,协作图着重于表达对象之间的静态连接关系。图6将3图转换为协作图。 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.显示帐户余额并提示选择下面的服务 图6 ATM系统协作图 从图上我们可以看出协作图的角色和顺序图的对象是一一对应的,而协作图上的各对象上的协作关系和顺序图上的消息传递是一一对应的。第三篇:uml 描述ATM自动取款机系统
第四篇:银行ATM自动取款机需求分析报告
第五篇:ATM(自动取款机)的用例图