收藏 分享(赏)

银行系统UML分析与设计 开发文档.pdf

上传人:精品资料 文档编号:10309494 上传时间:2019-10-29 格式:PDF 页数:37 大小:4.35MB
下载 相关 举报
银行系统UML分析与设计 开发文档.pdf_第1页
第1页 / 共37页
银行系统UML分析与设计 开发文档.pdf_第2页
第2页 / 共37页
银行系统UML分析与设计 开发文档.pdf_第3页
第3页 / 共37页
银行系统UML分析与设计 开发文档.pdf_第4页
第4页 / 共37页
银行系统UML分析与设计 开发文档.pdf_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、银行系统UML分析与设计1系统需求银行是与人们生活密切相关的一个机构,银行可以提供存款、取款、转账和管理账户等业务。在银行设立账户的人或机构被称为银行的客户。一个客户可以在银行开设多个账户,客户可以存钱到账户中,也可以从自己的账户中取钱,还可以将存款从一个账户转到另一个账户。另外,客户可以随时查询自己的账户情况,以及查询以前所进行的存款、取款等交易记录。客户还有权利要求关闭自己的账户。通过分析简化版的银行系统的特点,确定了系统的功能需求。银行系统软件软件所要完成的主要功能有三方面:(1)存取款功能。存款时,用户填写存款单,然后交给收银员键入系统,同时系统还要记录存款人姓名,住址,身份证号码,存

2、款类型,存款日期,利率及密码(可选)等信息,完成后由系统反馈成功存款信息给用户。取款时,用户填写取款的相关信息(取款金额、取款币种)进行提交,系统要求用户输入密码以确认身份,核对密码正确无误后系统计算利息并印出利息单给用户。(2)转账功能。转帐分为同一个银行之间的转帐和不同银行之间的转帐。用户填写转账的相关信息进行提交,系统要求用户输入密码以确认身份,核对密码正确无误后进行转帐操作,并反馈信息给用户。(3)管理账户功能。管理账户包括创建账户、删除帐户以及修改账户信息。创建账户时,用户提交相关信息(姓名、ID号、地址、金额等),系统为用户创建账户。删除账户时,用户提交帐号,系统检索账户信息并且确

3、认删除。修改账户时,用户提供账号,系统检索账户信息,修改完毕后提交系统更新。2分析问题领域2.1系统的参与者通过分析银行系统的功能需求,可以识别出三个参与者:“Clerk”(银行职员)、“CustomerActor” (客户)、BankActor(银行)。参与者的描述如下:Clerk(银行职员)描述:Clerk可以创建、删除账户,并可以修改账户信息。CustomerActor(客户)描述:CustomerActor可以存钱、取钱,并在不同的账户之间转账。BankActor(银行)描述:客户可以在BankActor中设立或关闭账户。2.2系统的用例通过对需求的进一步分析,可以确定系统中有如下用例

4、存在:Login(登陆),提供验证用户身份的功能;Depositfund(存款),提供存钱到账户的功能;Withdrawfund(取款),提供从账户中取钱的功能MaintainAccount(管理账户),提供创建、删除、修改账户信息的功能由于转账既可以在属于同一银行的账户之间发生,也可以在属于不同银行的账户之间发生,而发生于不同银行的账户之间的转账需要与参与者BankActor交互,因此需要用两个不同的用例来描述银行内的转账和银行之间的转账;Transferfundwithinabank(行内转账),提供在银行内账户间转账的功能;Transferfundbetweenbanks(在不同的银行之

5、间转账),提供在属于不同银行的账户之间进行转账的功能;上面两个用例可以抽象出一个父用例“Transferfund”。Transferfund(转账),描述转账的通用行为,是用例Transferfundwithinabank与Transferfundbetweenbanks的父用例。用例图描述系统外部的执行者与系统提供的用例之间的某种联系。用例是指对系统提供的功能或用途的一种描述,执行者是可能使用这些用例的用户或外部系统,用例和执行者之间的联系描述了使用者和用例的对应关系。用例图着重于从系统外部执行者的角度来描述系统需要提供哪些功能。银行系统的用例图如图2-1所示,参与者“Clerk”与用例“L

6、ogin”、“MaintainAccount”交互,参与者“Clerk”作为参与者“CustomerActor”的代理与用例“Depositfund”、“Withdrawfund”、“Transferfund”交互,也即参与者“CustomerActor”依赖参与者“Clerk”完成存在、取钱、转账的动作。用例“Transferfund”具有两个子用例“Transferfundwithinabank”和“Transferfundbetweenbanks”。因此他们之间存在类属关系。另外用例“Transferfundbetweenbanks”要与代表另一个银行的参与者“BankActor”交互。

7、图2-1 系统用例图2.3用例的事件流描述用 例: Login(登录)简 述: 描述了用户如何登录到系统银行中参与者: Clerk前提条件: 无主 流: 1、系统提示用户输入用户名和密码2、用户输入自己的用户名和密码、提交3、系统验证输入的名字和密码,用户登录系统成功其他流: 如果输入用户名和密码无效,系统提示错误信息,用户可以重新输入或者终止该用例。后置条件: 如果用例成功,则用户登录到系统中。否则系统状态不变。用 例: Deposit fund(存款)简 述: 本用例允许客户借助Clerk存款账户中。参与者: Clerk,Customer前提条件: Clerk必须登录到系统中。主 流: 当

8、客户需要存钱时,需要向Clerk提交存款单和现金,用例启动。1、系统提示Clerk殊途用户名、用户的Id号、账号和所存款项的金额。2、Clerk输入相关的信息后提交,系统确认账户是否存在并有效。3、系统建立存款事件记录,并更新账户的相关信息。其他流: 账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。后置条件: 如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。用 例: Withdraw fund(取款)简 述: 本用例允许Clerk按照客户的要求从客户的账户中取款。参与者: Clerk,Customer前提条件: Clerk必须登录到系统中。主 流: 当客户需要存

9、钱时,需要向Clerk提交取款单,用例启动。1、系统提示Clerk殊途用户名、用户的Id号、账号和所存款项的金额。2、Clerk输入相关的信息后提交,系统确认账户是否存在并有效。3、系统建立存款事件记录,并更新账户的相关信息。其他流: 1、账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。2、账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。后置条件:用 例: Transfer fund(转帐)简 述: 本用例允许Clerk按照客户的要求将资金从一个账户转到另一个账户。参与者: Clerk,Customer前提条件: 在本用例开始前,用例必须登录到系统中。主 流

10、: 当客户要求转帐时,用例启动。1、系统提示Clerk输入用户姓名、用户的Id号、账户号码和转账金额。2、Clerk输入相关信息后提交。3、系统确认资金转出账户是否存在并有效。4、更新资金转出账户的相关信息。5、为资金转出账户建立转账记录。6、存储转帐记录。7、判断资金转入账户是否属于同一银行如果资金转入账户与资金转出账户属于同一银行,则执行在同一银行转帐业务;如果资金转入账户与资金转出账户属于不同银行,则执行在不同银行的账户间转账业务。其他流: 1、账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。2、账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。后置条件

11、: 如果用例成功,则客户账户中的存款的金额发生变化。否则,系统状态不变。用 例: MaintainAccount(管理帐户)简 述: 本用例允许Clerk按照客户的要求将资金从一个账户转到另一个账户。参与者: Clerk,Customer前提条件: 在本用例开始前,用例必须登录到系统中。主 流: 当Clerk想添加、修改或删除账户时,用例启动。系统要求Clerk选择所要执行的活动(添加账户、修改账户信息、或者删除帐户)。其他流: 1、账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。2、账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。3、取消删除,删除账户操作

12、被取消,用例终止。后置条件: 如果这个用例成功,这账户信息会被添加到系统中、或被更新(修改),或从系统中删除。否则系统的状态没有变化。3类类是一类具有相同特征的对象的描述,对象的基本特征包括对象的属性和对象的行为。类描述了此类对象的属性和行为,对象则是某个类的实例。3.1系统对象类银行系统的对象类主要包括类Bank(银行)、类Account(账户)、类Customer(客户)、类Transaction(交易)。交易类又包括类Transfer(转帐)、类Withdraw(取款)、类Deposit(存款)。下面确定这些对象的属性和行为:(1)类Bank类Bank代表物理存在的银行。类Bank应该具

13、有下列私有属性:bankCode:String name:String address:Stringphone:String fax:String一般情况下,都要将属性声明为私有属性,访问私有属性必须通过方法来进行,因此对于每个私有属性,都有相应的setXX()方法用来设置私有属性值,相应的getXX()方法用来访问私有属性值。(2)类Account类Account应该具有如下私有属性:bank: Bank Holder: Customer AccountNo:DateCreateDate: Date Banlance: floate类Account的方法:getHolders():Custo

14、mer 获取账户的客户newAccount(holder:Customer,balance:float):void 开户remAccount(accountNo:String):void 注销账户withdraw(holderName:String,holderID:String,accountNo:String,money:float):float 取款deposit(holderName:String,holderID:String,accountNo:String,money:float):float 存款transferOut(accountNo:String,bankCode:Str

15、ing,money:float):floattransferIn(accountNo:String,bankCode:String,money:float):float银行内转帐newBalance():float计算账户余额update():void 更新数据库中的账户信息save():void 账户信息存储到数据库delete():void 删除账户closeAccount(accountNo:String):void 账户进行结算getAccount(accountNo:String):Account 返回指定账号的账户信息query(holderName:String,holderID

16、:String,accountNo:String,money:float,isSaving:Boolean):Boolean 查询账户(是否存在、账户余额)(3)类Customer类Customer具有如下私有属性:name: String customerID: String address:Stringaccount:Account类Customer的方法:getAccount():Accountquery(name:String,id:String):Boolean查询指定客户名和ID号的客户newCustomer(name:String,id:String,address:String

17、,account:Account):void 创建客户对象save():void 将客户信息存储到数据库中update():void 更新数据库中客户的信息hasAccount()Boolean 判断客户是否还持有账户delete():void 删除数据库中的客户信息在银行中,对账户进行存钱、取钱、转账操作,要保留业务记录,因此在系统中海应有代表这些业务记录的对象存在,可以为这些对象建立如下3个类:Deposit(存款业务记录)、Withdraw(取款业务记录)、Transfer(转账业务记录),这3个类都是一中业务记录,因此可以抽象出父类:Transaction(4)类Transaction

18、私有属性:account:Account createDate:Date fund:float公共方法:newTransaction(account:Account,fund:float,date:Date):void创建交易记录save():void 将交易记录存储到数据库中(5)类Deposit继承类Transaction公共方法:newDeposit(account:Account,fund:float,date:Date):void创建存款交易记录save():void 将存款交易记录存储到数据库中(6)类Withdraw继承类Transaction公共方法:newWithdraw(a

19、ccount:Account,fund:float,date:Date):void创建存款交易记录save():void 将存款交易记录存储到数据库中(7)类Transfer继承类Transaction私有属性:transferAccountNo:StringtransferBank:bank公共方法:newTransfer(account:Account,transferAccountNo:String,transferBank:Bank,fund:float,date:Date):void 创建转账交易记录save():void 将转账交易记录存储到数据库中3.2用户界面类银行系统的用户界

20、面类主要包括类BankGUI(主界面)、类QueryDialog(查询账户界面)、类DWDialog(存取款界面)、类AccountDialog(管理账户界面)、类TransferDialog(转帐界面)、类LoginDialog(登录界面)。下面确定这些对象的属性和行为:(1)类LoginDialog界面类LoginDialog是用来输入用户名和密码的对话框。该对话框在启动系统时弹出,用来提示用户输入验证信息(账号与密码),若验证成功,则系统启动,用才有权限进行后续操作,否则,用户需重新输入验证信息或者终止操作。私有属性:标签:用来提示用户输入用户名和密码;文本框:用来输入用户的用户名和密码

21、;按钮:用来提交、更改或者取消用户输入的信息。公共方法newLDialog():void 创建用来输入用户名和密码的对话框Submit():viod 当对话框被提交时,该方法被调用Validate(name:string,pass:string):Boolean 验证用户名和密码(2)类BankGUIBankGUI是系统的主界面,系统主界面含有几个按钮,当选择不同按钮时,系统可以执行不同的操作。当程序退出时,主界面窗口关闭。私有属性:按钮(个数待定):用来提示用户选择不同操作。公共方法:newBankGUI():void该方法用来创建系统主界面deposit():void 当按下“存款”按钮时

22、,该方法被调用Withdraw():void 当按下“取款”按钮时,该方法被调用transfer():void 当按下“转账”按钮时,该方法被调用newAccount():void 当按下“创建账号”时,该方法被调用delAccount():void 当按下“删除账户”按钮时,该方法被调用modAccount():void当按下“修改账户”按钮时,该方法被调用(3)类QueryDialog界面类QueryDialog是用来根据账户的账号查找账户的对话框。当按下主窗口BankGUI中的“删除账户”按钮和“修改账户信息”按钮时,对话框QueryDialog弹出,银行职员填写账号,点击提交后,系统查

23、询数据库中具有指定账号的账户信息私有属性:标签:用来提示用户输入账户账号;按钮:用来提交账户账号。公共方法newQDialog():void 创建查询窗口query():void 当查询窗口被提交时,该方法被调用(4)类DWDialog界面类DWDialog是用来存款或取款时所需的对话框,其界面如下图所示。当按下主窗口BankGUI中的按钮“存款”或者“取款”时,该对话框弹出,对话框中第一个按钮的标签根据操作的不同显示为“存款”或者“取款”私有属性:标签:用于提示用户输入客户姓名、客户ID、账号、金额等信息;文本框:用来输入客户姓名、客户ID、账号,金额;按钮:用来提交存款、取款等信息。公共方

24、法newDWDialog():void 创建用于填写存、取款信息的窗口deposit():void 按下“存款”按钮时,该方法被调withdraw():void按下“取款”按钮时,该方法被调用(5)类AccountDialog界面类AccountDialog是用来填写或显示账户信息的对话框,当按下主窗口BankGUI中的“创建账户”时,对话框弹出,银行职员填写账户信息(客户名,客户ID号,客户地址,账户金额),然后点击对话框中的“创建”按钮,系统创建账户并将之存储在系统中。当按下主窗口BankGUI中的按钮“删除账户”和“修改账户信息”按钮时,对话框QueryDialog弹出,银行职员填写账号

25、,提交,系统查询数据库获取账户信息后弹出AccountDialog对话框,显示账户的详细信息,对话框的第一个按钮的标签根据操作的不同显示为“删除”或“修改”。如若是上一步是“删除账户”,银行职员点击对话框中的按钮“删除”,系统删除所存储的该账户信息。如若上步是“修改账户信息”,银行职员修改账户信息后,点击对话框中的“修改”按钮,系统则更新对应账户的信息私有属性标签:提示银行职员填写账户信息;文本框:用来填写客户名、客户ID、客户地址等账户信息;按钮:用来提交或取消填写的信息。公共方法newAccount():void “创建”按钮按下后,该方法被调用delAccount():void “删除”

26、按钮按下后,该方法被调用modAccount():void “修改”按钮按下后,该方法被调用(6)类TransferDialog界面类TranferDialog是用来填写转账信息的对话框。当按下主窗口BankGUI中的“转账”按钮时,该对话框弹出,银行职员填写资金转出账户、转账金额、资金转入账户等信息,确认后系统执行转账操作私有属性标签:用来提示银行职员填写转账信息;文本框:用来填写资金转出账户账号、转账金额、资金转入账户账号信息;按钮:用来提交、修改或取消所填信息。公共方法newTDialog():void 创建用于填写转账信息的对话框transfer();void 当对话框被提交时,该方法

27、被调用4类图类图描述了系统中的类和类之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象之间的各种静态关系,即关联关系和子类型关系。根据系统需求,创建静态系统类图。银行系统中存在的主要实体类:银行(Bank)、账户(Account)和客户(Customer).辅助类包括存款(Deposit)、取款(Withdraw)和Transfer(转账),这三个类又可以抽象出父类Transaction(交易)。用户界面类包括主界面类(BankGUI),登录界面(LoginDialog),查询界面(QueryDialog),存取款界面(DWDialog),账户界面(AccountDialog)和转

28、账界面(TransferDialog)。类之间的关系如图4-1所示。图4-1 系统类图BankGUI和LoginDialog之间是关联关系。AccountDialog、QueryDialog、TransferDialog、DWDialog与BankGUI之间是组合关系,AccountDialog、QueryDialog、TransferDialog、DWDialog与BankGUI之间是依赖关系。类Account和类Customer之间是“多对多”关系,类Account和类Bank之间是“一对多”关系,类Account和类Transaction之间是“一对多”关联关系,类Deposit、Wit

29、hdraw、Tranfer继承类Transaction,它们之间是类属关系。5用例的活动图活动图的核心概念是活动,着重描述操作实现中的所完成的工作以及用例实例或对象中的活动。活动图是由状态图转变而来,与状态图不同的是,活动图主要是描述动作及对象状态改变的结果。状态中的动作被执行时,活动中的状态直接转移到下一阶段。Login(登录)用例的活动图如图5-1所示,首先系统提示用户输入用户名和密码,然后Clerk输入上述信息后提交,系统验证用户名和密码是否正确,如若正确,则启动系统,否则,显示错误信息,并提示用户重新输入用户名和密码。图5-1 登录用例活动图Depositfund(存款)用例的活动图如

30、图5-2所示。存款活动过程,系统提示输入用户的相关信息和存款金额,银行职员将相关信息输入后提交,系统判断账户是否存在且有效,如果账户有效并存在,建立交易记录,同时修改账户金额,保存交易记录。图5-2 存款用例活动图Withdrawfund(取款)用例的活动图如图5-3所示。取款活动过程,系统提示输入用户的相关信息和取款金额,银行职员将相关信息输入后提交,系统判断账户是否存在且有效,账户中的余额是否大于取款金额,如果账户有效并存在同时金额足够,建立交易记录,同时修改账户金额,保存交易记录。图5-3 取款用例活动图Transferfund(转款)用例的活动图如图5-4所示。转账活动过程,系统提示输

31、入用户的相关信息和转账金额,银行职员将相关信息输入后提交,系统判断账户是否存在且有效,账户中的金额是否大于转账金额,如果账户有效并存在同时金额足够,建立交易记录,同时修改账户金额,保存交易记录,判断转入账户是否属于同一银行。如是同一银行,系统先确认转入账户是否存在并有效。如有效更新账户相关信息,建立转账记录,保存转账记录,如果转入和转出账户不是同一银行,则发送转账通知给另一个银行。图5-4 转帐用例活动图MaintainAccount(管理账户)用例包括创建账户、删除帐户和修改账户。创建账户活动过程如图5-5所示,系统提示输入用户的相关信息和存款金额,银行职员输入相关信息后提交,系统为客户创建

32、账户,并将账户信息保存到数据库。图5-5 创建账户用例活动图删除账户活动过程如图5-6所示,系统提示银行职员输入帐号信息,银行职员输入相关信息后提交,系统检索账户信息,并且显示,银行职员确认删除并关闭账户,系统从数据库删除账户。图5-6 删除账户用例活动图修改账户活动过程如图5-7所示,系统提示银行职员输入帐号信息,银行职员输入相关信息后提交,系统检索账户信息,并且显示,银行职员修改账户信息并且提交,系统更新账户信息。图5-7 修改账户用例活动图6时序图与协作图时序图主要表示对象间消息传递的时间顺序,可以清晰地表示对象在其生命周期的某一时刻的动态行为。在时序图中,所有对象将从左到右排开,而每个

33、对象的生命周期就犹如一条生命线,只要对象没有被撤销,这条生命线就可以从上倒下延伸,对象间的通信通过在对象的生命间画消息来表示。协作图用来描述相互合作的对象间的交互关系和链接关系。对象间的合作情况用消息来表示。协作图中的消息和时序图的消息本质上是相同的,但是没有消息发送的时间和消息传递的概念。“登陆”的时序图与协作图如图6-1所示,Clerk启动系统,类LoginDialog的方法newLDialog()被调用,创建用来填写登陆信息的对话框。Clerk填写登陆信息后,提交,执行方法validate()验证用户名和密码是否正确,若正确,发送消息newBankGUI()给类BankGUI,启动系统,

34、创建系统主界面。图6-1 “登陆”的时序图与协作图“存款”时序图与协作图如图6-2所示,客户要求存款,Clerk发送消息deposit()给类BankGUI,类BankGUI又发送消息newDWDialog()给DWDialog,也即类DWDialog的方法newDWDialog()被调用,创建用于填写存款信息的窗口。Clerk填写必要信息后,提交,类DWDialog的方法deposit()被调用,发送消息deposit()给类Account。在类Account的方法deposit()的执行过程中,首先,调用Account的方法query(),确认数据库中是否存在该账户,若存在,则发送消息ne

35、wDeposit()给类Deposit,创建一个存款交易记录,然后调用方法save()将该记录存储到数据库中。调用类Account的方法newBanlance()计算新的账户余额,最后调用方法update()更新数据库中该账户的信息。图6-2 “存款”时序图“取款”的时序图与协作图如图6-3所示,客户要求取款,Clerk发送消息withdraw()给类BankGUI,类BankGUI发送消息newDWDialog()给类DWDialog,创建用于填写取款信息的窗口。Clerk填写必要的信息后,提交,类DWDialog的方法withdraw()被调用,发送消息withdraw()给类Accoun

36、t。在类Account的方法withdraw()的执行过程中,首先,调用类Account的方法query(),确认数据库中是否存在该账户,并确认账户中的金额是否足够支付所取款项,若账户存在且金额足够,则发送消息newWithdraw()给类Withdraw,创建一个取款交易记录,然后再调用方法save()将该记录存储到数据库中。调用方法newBalance()计算新的账户余额,最后调用方法update()更新数据库中该账户的信息。图6-3 “取款”时序图与协作图“在银行内转账”的时序图如图6-4所示。Clerk发送消息transfer()给类BankGUI,类BankGUI发送消息newTDi

37、alog()给类TransferDialog,创建用于填写转账信息的窗口。Clerk填写必要的信息后,提交,类TransferDialog的方法transfer()被调用,发送消息transferOut()给类Account的对象t1(资金转出账户),调用方法query()查询账户t1是否存在且资金是否足够(大于转账金额),然后调用方法newBalance()计算新的账户余额,再调用方法update()更新数据库中t1的信息。然后发送消息newTransfer()给类Transfer,创建转账交易记录,然后发送消息save()给Transfer,存储转账交易记录。类TransferDialog

38、还发送消息transferIn()给类Account的对象t2(资金转入账户),调用方法query()查询账户t2是否存在,然后调用方法newBalance()计算新的账户余额,再调用方法update()更新数据库中t2的信息。然后发送消息newTransfer()给类Transfer,创建转账交易记录,发送消息save()给类Transfer,存储转账交易记录。图6-4 “银行内转帐”时序图与协作图“在银行之间转账”的时序图与协作图如图6-5所示。Clerk发送消息transfer()给类BankGUI,类BankGUI发送消息newTDialog()给类TransferDialog,创建用

39、于填写转账信息的窗口。Clerk填写必要的信息后,提交,类TransferDialog的方法transfer()被调用,发送消息transferOut()或transferIn()(根据账户是资金转入还是资金转出账户,发送不同的消息)给Account对象,调用方法query()查询账户是否存在,如果资金是转出账户,还要检查账户资金是否足够(大于转账金额),调用类Account的方法newBanlance()给类Transfer,创建转账交易记录,发送消息save()给类Transfer,存储转账交易记录,最后发送转账通知给另一个银行。图6-5 “银行之间转帐”时序图与协作图“创建新账户”的时序图和协作图和协作图如图6-6所示。图6-6 “创建新账户”时序图和协作图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报