基于RUP开发方法的银行ATM系统面向对象的建模
银行系统建模

第六章纺织业实时监测系统分析与建模前一章介绍了如何使用Rational Rose 2003对一个网上选课系统进行建模,本章将以一个简单的银行系统为例,介绍面向对象的分析和设计过程。
进一步来学习如何通过UML 统一建模语言对软件系统进行建模。
本章仍是从需求分析开始,一直到对系统完成建模。
15.1 需求分析我们在现实生活中不可能不与银行打交道,银行与人们的生活息息相关。
它为每一个人提供了一系列的金融服务,比如存款、取款和转账等服务。
实际生活中银行的业务功能极其复杂,比如,客户可以使用信用卡进行存取款和支付等功能,由于本章篇幅有限,这里所介绍的银行系统只涉及银行中最基本的功能。
本章所讲的银行系统的功能性需求包括以下内容。
客户可以在银行开立一个或多个账户。
客户能够将钱款存入已经开立的账号中。
客户可从自己的账号中提款。
客户能够将账户中的存款转账至另一个账户。
客户可以随时查询自己账户的情况,包括以前进行的存款、取款等的交易记录。
客户也有权利要求取消账户。
由于分析设计过程是个迭代的软件开发过程,所以需求也会在分析设计的过程中不断被细化。
15.2 系统建模下面通过使用用例驱动创建系统的用例模型,获取系统的需求,并使用系统的静态模型创建系统的内容,然后通过动态模型对系统的内容进行完善,最后通过部署模型完成系统的部署情况。
在系统建模以前,首先需要在Rational Rose 2003中创建一个模型,并命名为"银行系统",该名称将会在Rational Rose 2003的顶端出现。
如图15-1所示。
(点击查看大图)图15-1 创建项目系统模型15.2.1 创建系统的用例模型进行系统分析和设计的第一步是创建系统的用例模型。
作为描述系统的用户或参与者所能操作的模型,它在需求分析阶段有着重要的作用,整个开发过程都围绕系统的需求用例表述的问题和问题模型进行。
创建系统用例的第一步是确定系统的参与者。
银行系统的参与者包含以下三种。
基于面向对象思想的ATM系统设计与实现

基于面向对象思想的ATM系统设计与实现课程名称:VC++面向对象思想程序设计班级:电子信息工程2班指导教师:刘帅日期:2016年10月小组编号:电二一组成员:)摘要:在控制台编程中共设置了3个类,ATM 类和card类和bankcard类,设计的程序完美的实现了设计要求,具有登陆、查询、取款、转账、修改密码、回到登录系统、退出系统等功能。
程序实现分为两个部分,其一是mfc部分,其二是控制台部分。
在要求的基础之上,改程序还增添了部分新功能,并对原有功能做了许多个性化修改,例如在登陆界面输入错误三次就会冻结账号退出系统,在mfc对话框中加入图片更加仿真系统。
在可视化控件编程中,通过建立多个对话框,并实现信息交流,完整的实现了要求的内容。
程序编辑较为复杂。
前言:随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。
这就导致银行业务的急剧增加。
虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。
而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。
这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。
于是ATM机系统应运而生了。
银行提款机已经发展成各大银行金融服务战略中的重要一环,为广大用户提供了更加快捷和人性化的服务,银行提款机成为我们日常生活中不可缺少的一部分。
该项目正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的c++知识进行设计编程。
研究报告:一、项目需求:总体思路模拟自助取款机,通过两种编程实现1、C++控制台编程实现ATM,至少实现提款机登陆、取款、修改密码、查询余额。
2、MFC控件编程实现ATM,至少实现提款机登陆、查询余额、取款和退出系统功能。
ATM系统的分析与建模不完全版

ATM系统的分析与建模不完全版1.系统功能分析2.系统结构分析ATM系统的结构主要包括硬件和软件两部分。
硬件包括ATM机、密码键盘、显示屏、打印机等设备;软件包括ATM应用程序、交易处理程序、数据库系统等。
ATM系统主要由前端控制器、交易管理器、数据库管理器等模块组成。
3.系统行为分析-用户插卡后,系统读取卡片信息并验证用户身份;-用户输入密码后,系统验证密码正确性;-用户选择操作后,系统进行交易处理;-交易处理完成后,系统更新数据库信息并输出结果给用户。
4.系统建模为了更好地理解ATM系统的工作原理,我们可以使用UML建模语言对其进行建模。
以下是ATM系统的简单UML建模:-用例图:显示了系统的功能模块和用户的操作。
-类图:包括了系统中的各种类和它们之间的关系。
-时序图:展示了系统中各个对象之间的时序关系。
-状态图:描述了系统中各个对象的状态变化规律。
-活动图:展示了系统中各个活动的流程和顺序。
通过建模分析,我们可以更清晰地了解ATM系统的整体结构和运行机制,从而有助于系统设计和优化。
5.系统设计与优化为了提高ATM系统的性能和稳定性,可以从以下几个方面进行设计与优化:-网络通讯:优化网络通讯模块,提高数据传输速度和稳定性。
-安全性:增强系统的安全性,包括加密传输、防止恶意操作等措施。
-用户体验:设计用户友好的界面和操作流程,提高用户体验。
-故障处理:完善系统的故障处理机制,及时处理各种异常情况。
通过系统设计与优化,可以使ATM系统更加稳定、高效和易用,提升用户体验和满意度。
总结:ATM系统是一种重要的金融服务系统,通过对其进行分析与建模,可以更好地了解其工作原理和功能。
系统的功能、结构、行为等方面都需要进行详细的分析与设计,以确保系统的性能和稳定性。
通过优化系统设计和增强安全性,可以提高ATM系统的服务质量和用户体验,满足用户的各种需求。
希望本文对ATM系统的分析与建模有所帮助,能够为相关领域的研究和实践提供一定的参考价值。
基于UML的面向对象的系统分析与设计

基于UML的面向对象的系统分析与设计基于UML的面向对象的系统分析与设计引言:在当今信息社会中,随着科技的不断进步和应用的不断扩展,各行各业都离不开计算机系统的支持。
为了满足用户的需求,开发出高质量、高效率的系统就显得尤为重要。
而面向对象的系统分析与设计作为一个重要的环节,可以帮助我们更好地理解用户需求并将其转化为实现系统的蓝图。
本文将介绍基于UML的面向对象的系统分析与设计方法,并通过一个实例来演示其应用过程。
一、基于UML的系统分析与设计基础1.1 面向对象的概念面向对象是一种思想方式和编程方法,它将问题领域的实体抽象为类,通过类的组织和交互来描述系统的行为。
面向对象的设计方法使得系统更易于理解、维护和扩展。
1.2 UML的介绍UML(Unified Modeling Language)是一种用于面向对象系统建模的标准化语言,它提供了丰富的符号和图形表示方法,可以帮助分析和设计人员更好地表达复杂的系统结构和行为。
二、基于UML的系统分析与设计方法2.1 需求分析系统的需求分析是整个分析与设计过程的起始点,通过与用户的交流和讨论,了解用户的需求并进行准确定义。
在这一阶段,分析人员可以运用UML中的用例图、活动图等工具来分析和描述用户需求。
2.2 类建模在需求分析阶段的基础上,分析人员将用户需求转化为类模型。
通过识别和分析系统中的实体、属性和行为,可以确定类的结构和关系。
在这一阶段,可以运用UML中的类图来进行类的建模。
2.3 行为建模在类建模完成后,需要进一步分析和设计系统的行为。
行为建模通常包括状态图、顺序图和活动图等。
通过这些图形化表示,可以描述系统中各个类之间的交互和信息流动,保证系统的正确性和健壮性。
2.4 设计模式的应用设计模式是一种被广泛应用的解决问题的模板,它提供了一些经验性的指导原则和设计思路。
在系统分析与设计过程中,分析人员可以借鉴各种设计模式,通过复用已有的解决方案来提高系统的可靠性和效率。
面向对象分析案例:银行储蓄系统

在ATM系统的例子中,经过初步筛选,剩 下下列类与对象:ATM、中央计算机、分 行计算机、柜员终端、总行、分行、柜员、 储户、账户、事务、现金兑换卡。
面向对象分析案例:银行储蓄系统
3.2 确定关联
1. 初步确定关联 在需求陈述中使用的描述性动词或动词词组,通
常表示关联关系。因此,在初步确定关联时,大多 数关联可以通过直接提取需求陈述中的动词词组而 得出。通过分析需求陈述,还能发现一些在陈述中 隐含的关联。最后,分析员还应该与用户及领域专 家讨论问题域实体间的相互依赖、相互作用关系, 根据领域知识再进一步补充一些关联。 以ATM系统为例,经过分析初步确定出下列关联:
面向对象分析案例:银行储蓄系统
(3) 笼统
在需求陈述中常常使用一些笼统的、泛指的名词, 虽然在初步分析时把它们作为候选的类与对象列出 来了,但是,要么系统无须记忆有关它们的信息, 要么在需求陈述中有更明确更具体的名词对应它们 所暗示的事务,因此,通常把这些笼统的或模糊的 类去掉。
以ATM系统为例,“银行”实际指总行或分行, “访问”在这里实际指事务,“信息”的具体内容 在需求陈述中随后就指明了。此外还有一些笼统含 糊的名词。总之,在本例中应该去掉“银行”、 “网络”、“系统”、“软件”、“信息”、“访 问”等候选类。
当用户把现金兑换卡插入ATM之后,ATM就与 用户交互,以获取有关这次事务的信息,并与中央 计算机交换关于事务的信息。首先,ATM要求用户 输入密码,接下来ATM把从这张卡上读到的信息以 及用户输入的密码传给中央计算机,请求中央计算 机核对这些信息并处理这次事务。中央计算机根据 卡上的分行代码确定这次事务与分行的对应关系, 并且委托相应的分行计算机验证用户密码。如果用 户输入的密码是正确的,ATM就要求用户选择事务 类型(取款、查询等)。当用户选择取款时,ATM请 求用户输入取款额。最后,ATM从现金出口吐出现 金,并且打印出账单交给用户。
面向对象分析案例:银行储蓄系统

对系统性能及系统与外界环境交互协议的描述, 是合适的需求。此外,对采用的软件工程标准、模 块构造准则、将来可能做的扩充以及可维护性要求 等方面的描述,也都是适当的需求。
(6) 实现
在分析阶段不应该过早地考虑怎样实现目标系统。 因此,应该去掉仅和实现有关的候选的类与对象。在 设计和实现阶段,这些类与对象可能是重要的,但在 分析阶段过早地考虑它们反而会分散我们的注意力。
在ATM系统的例子中,“事务日志”无非是对一 系列事务的记录,它的确切表示方式是面向对象设计 的议题;“通信链路”在逻辑上是一种联系,在系统 实现时它是关联类的物理实现。总之,应该暂时去掉 “事务日志”和“通信链路”这两个类,在设计或实 现时再考虑它们。
例如,在ATM系统的例子中,“系统处理并发的 访问”并没有标明对象之间的新关联,它只不过提 醒我们在实现阶段需要使用实现并发访问的算法, 以处理并发事务。删掉:
•系统处理并发的访问
(3) 瞬时事件
关联应该描述问题域的静态结构,而不应该是一个 瞬时事件。
以ATM系统为例,“ATM读现金兑换卡”描述了 ATM与用户交互周期中的一个动作,它并不是ATM与 现金兑换卡之间的固有关系,因此应该删去。类似地, 还应该删去“ATM与用户交互”这个候选的关联。
(2) 无关
现实世界中存在许多对象,不能把它们都纳入到 系统中去,仅需要把与本问题密切相关的类与对象 放进目标系统中。有些类在其他问题中可能很重要, 但与当前要解决的问题无关,同样也应该把它们删 掉。
统一建模语言UML综合实例ATM
所规定的九种图和五种视图的使用上,它们将在后边的有关章节进
行进一步的介绍。
3
定序 多重性
角色名
类
类
(ordered)*oname 0.1name Aname
qname:Cname
1
组合 名称方向 关联名
聚合
限定符
关联
*
ACname
关联路径 关联类(整一个元素)
图1 类图及其类图中的关联符号示意图
4
自1996年起,一些机构把采用UML作为其商业策略,宣布支持并采用 UML,并成立了UML成员协会,以完善、加强和促进UML的定义。在美国,到 1996年10月,UML获得了工业界和学术界的广泛支持,已有700多家公司表 示支持采用UML,1996年底,UML已稳定地占领了面向对象技术市场的 85%,成为事实上的工业标准。1997年11月,国际对象管理组织 OMG(Object Management Group)批准把UMLl.1作为基于面向对象技 术的标准建模语言。
<<database>>
TicketDB
1
Ticketserver
1
*
*
节点多重性
SalesTerminal
ClerkInterface
售票员
部署图(描述层)
16
部署图(实例层)
Main St.kiosk:Kiosk 通信键
节点实例 节点名 节点类型
Headquarter:TicketServer
(component)等都是模型元素。用于表示模型元素之间相互连接的
关系也是模型元素,如关联 (association)、泛化(generalization)、
面向对象分析与设计 ATM系统分析与设计
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图:取款子系统:查询子系统:转账子系统:更改密码子系统:二:组织结构设计(1)系统结构(2)读卡机系统(3)键盘输入子系统认证子系统:显示子系统:出钞子系统:打印子系统:数据库子系统:建立模型一:建立基本系统模型图二:建立序列图:代码设计:#include<iostream.h>class consumer;class ATM// ATM取款机{public:ATM(consumer& cn):cnsm(cn){}void welcome();// 登陆界面bool check_passwd(char n[],char pwd[]); // 核对密码void change_passwd();// 修改密码void fetchmoney();// 取款void information();// 查询信息void exitATM();// 退出系统void functionshow();// 功能界面void lock();// 锁机private:int times;// 记录密码输入次数consumer& cnsm;};class consumer// 用户{public:friend class ATM;consumer(char Name[],char Num[],float Money,char Password[]); protected:char* get_name();// 取得姓名char* get_num();// 取得卡号char* get_passwd();// 取得密码float get_money();// 取得余额void set_passwd(char pwd[]);// 设置密码void set_money(float m);// 取钱private:char passwd[8];// 用户密码char name[20];// 用户姓名char num[20];float money;};// * consumer类的成员函数 *#include"function.h"#include<string.h>consumer::consumer(char Name[],char Num[],float Money,char Password[]) {strcpy(name,Name);strcpy(num,Num);money=Money;strcpy(passwd,Password);}float consumer::get_money(){return money;}char* consumer::get_name(){return name;}char* consumer::get_num(){return num;}char* consumer::get_passwd(){return passwd;}void consumer::set_money(float m){money-=m;}void consumer::set_passwd(char pwd[]) {strcpy(passwd,pwd);}// * ATM类的成员函数 *#include "function.h"#include <string.h>#include<stdlib.h>void ATM::welcome(){times=0;cout<<"$欢迎使用ATM自动取款机!"<<endl;char pwd[8],num[20],ch;int i=0;do{i=0;cout<<endl<<"请输入卡号:";do{cin.get(ch);num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;cout<<"请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num,pwd)){cout<<"你输入的卡号或密码有误,请重新输入"<<endl;times++;}else{functionshow();}}while(times<3);lock();}bool ATM::check_passwd(char num[],char pwd[]){if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0)return true;elsereturn false;}void ATM::functionshow(){int n;do{cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl;cout<<"1) 修改密码 "<<endl<<"2) 取款 "<<endl<<"3) 查询余额 "<<endl<<"4) 退出系统 "<<endl;cout<<"$ >\\";cin>>n;while(n<1||n>4){cout<<"请输入正确的操作序号!"<<endl;cout<<"$ >\\";cin>>n;}switch(n){case 1: change_passwd();break;case 2: fetchmoney();break;case 3: information();break;case 4: exitATM();break;}}while(true);}void ATM::change_passwd(){char pwd[8],repwd[8];times=0;do{cout<<endl<<"请输入旧密码:";cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd))times++;elsebreak;}while(times<3);if(times==3)lock();int t=0;do{cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;if((t=strcmp(pwd,repwd))!=0)cout<<"密码不一致,请重新输入!"<<endl;}while(t!=0);cnsm.set_passwd(pwd);cout<<"密码修改成功"<<endl;}void ATM::fetchmoney(){float m;char ch;do{cout<<endl<<"请输入取款金额:"<<"\n$>\\"<<endl ; cin>>m;while(m<=0){cout<<"请输入正确金额"<<endl;cout<<"$ >\\ ";cin>>m;}if(cnsm.get_money()-m<0){cout<<"对不起,你的余额不足!"<<endl;}else{cout<<endl<<"操作成功,请取钱!"<<endl;cnsm.set_money(m);}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"$ >\\ ";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout<<"$ >\\";cin>>ch;}}while(ch=='y'||ch=='Y');}void ATM::information(){cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; cout<<"~"<<endl;cout<<"~ 用户姓名:"<<cnsm.get_name()<<endl;cout<<"~ 卡号: "<<cnsm.get_num()<<endl;cout<<"~ 余额: "<<cnsm.get_money()<<endl;cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; }void ATM::lock(){cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl;exit(1);}void ATM::exitATM(){cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl;cout<<"请取卡……"<<endl;exit(0);}。
类图、时序图、状态图-ATM系统
(1)冗余 (储户、用户;现金兑换卡、磁卡和副本)
(2)无关 (成本、市、街道、营业厅和储蓄所)
(3)笼统 (银行、访问、信息、网络、系统、软件等)
(4)属性 (现金、支票、取款额、账单、余额、分行代码、
卡号、密码、类型)
(5)操作
(6)实现 (事务日志、通信链路)
问题范围 功能需求 性能需求 应用环境 假设条件
10.2 需求陈述
ATM机系统问题描述
银行网络中包含柜员和 ATM,ATM 被共享中心所分享。 每家银行利用自己的计算机维护自己的账户并处理账户
所属的交易,这些交易包括存款和取款。
某些银行拥有自己的柜员站,柜员站直接和该银行的计 算机通信,柜员键入账户数据和交易数据。
系,使用关联能够表示两个对象间的任何关系, 而且把关系表示得更清晰、更醒目。 确定属性的过程包括分析和选择两个步骤。
10.3 建立对象模型
10.3.4 确定属性
选择
在需求陈述中一般用名词词组表示属性 需藉助于领域知识和常识才能分析得出属性 属性对问题域的基本结构影响很小 属性的确定与问题域和目标系统的任务有关。 不要考虑那些超出所要解决的问题范围的属性。 先找最重要的属性,再逐渐把其余属性增添进去。分
析阶段不考虑那些纯粹用于实现的属性。
10.3 建立对象模型
10.3.4 确定属性
分析
(1) 误把对象当作属性 同一个实体在不同应用领域中,到底应该作为对象还是属性,需要具体
分析才能确定。 例如,储户/账户.
(2) 误把关联类的属性当作对象的属性 如果某个性质依赖于某个关联链的存在,则该性质是关联类的属性,不
ATM系统分析与建模
ATM系统分析与建模1.需要描述ATM是银行为了用户更方便存款、取款而开发的一套软件系统,从总体上分析,ATM系统主要功能包括:客户登录系统;能够支持存款、取款、查询明细;修改密码;转账以及退出系统的功能。
特殊要求:登录系统时要选择账户、输入密码;存款和取款时可以选择打印凭条;查询明细时可以选择查询当前余额或输入时间段进行详细查询。
2.域模型3.用例模型图4.用例文本用例名称:取款角色:客户描述:客户首先将磁卡插入ATM机中,初始化ATM屏幕提示输入密码,用户输入密码,系统验证密码是否正确,若不正确。
重新输入密码,若连续输入密码三次不正确,退出服务。
若输入密码正确,客户根据提示选择取款服务,然后输入取款数额,系统判断输入的取款数额的合法性,若不合法(这里不考虑透支)退出服务,若合法取款机吐款。
主要流程:(1)客户插入磁卡,初始化ATM系统屏幕(2)系统提示输入密码。
(3)客户输入密码并通过系统验证(4)系统列出服务项目(5)客户选择取款,输入取款金额,按下确定键(6)系统验证取款数额的合法性。
并计算出手续费(7)系统连接到综合系统,查询账户余额,确认余额是否足够(8)取款机吐款,交易成立(9)系统提供打印功能,供客户选择是否打印替代流程:(3)a[密码错误]系统出现密码错误警告。
并返回主要流程(2),供客户重新输入密码(6)a[金额不足]系统出现取款金额必须为100元整数的信息,回到主要流程(5),供客户出现输入取款金额(6)b[金额过低]系统出现最低取款的信息,回到主要流程(5),供客户重新输入取款金额(6)c[金额过高]系统出现最高取款的信息,回到主要流程(5),供客户重新输入取款金额(7)a[余额不足]系统出现余额不足的信息,回到主要流程(5),供客户重新输入取款金额5.时序图。