分析电梯控制系统和银行账户系统,分别画出状态图

第一部分:状态图语法

(1)简单状态:使用([*])开始和结束状态图。使用-->添加箭头。

 1 @startuml
 2
 3 [*] --> State1
 4 State1 --> [*]
 5 State1 : this is a string
 6 State1 : this is another string
 7
 8 State1 -> State2
 9 State2 --> [*]
10
11 @enduml

(2)合成状态:一个状态也可能是合成的,必须使用关键字state和花括号来定义合成状态。

 1 @startuml
 2 scale 350 width
 3 [*] --> NotShooting
 4
 5 state NotShooting {
 6   [*] --> Idle
 7   Idle --> Configuring : EvConfig
 8   Configuring --> Idle : EvConfig
 9 }
10
11 state Configuring {
12   [*] --> NewValueSelection
13   NewValueSelection --> NewValuePreview : EvNewValue
14   NewValuePreview --> NewValueSelection : EvNewValueRejected
15   NewValuePreview --> NewValueSelection : EvNewValueSaved
16
17   state NewValuePreview {
18      State1 -> State2
19   }
20
21 }
22 @enduml

(3)长名字:也可以使用关键字state定义长名字状态。

 1 @startuml
 2 scale 600 width
 3
 4 [*] -> State1
 5 State1 --> State2 : Succeeded
 6 State1 --> [*] : Aborted
 7 State2 --> State3 : Succeeded
 8 State2 --> [*] : Aborted
 9 state State3 {
10   state "Accumulate Enough Data\nLong State Name" as long1
11   long1 : Just a test
12   [*] --> long1
13   long1 --> long1 : New Data
14   long1 --> ProcessData : Enough Data
15 }
16 State3 --> State3 : Failed
17 State3 --> [*] : Succeeded / Save Result
18 State3 --> [*] : Aborted
19
20 @enduml

(4)并发状态:用-- or ||作为分隔符来合成并发状态。

 1 @startuml
 2 [*] --> Active
 3
 4 state Active {
 5   [*] -> NumLockOff
 6   NumLockOff --> NumLockOn : EvNumLockPressed
 7   NumLockOn --> NumLockOff : EvNumLockPressed
 8   --
 9   [*] -> CapsLockOff
10   CapsLockOff --> CapsLockOn : EvCapsLockPressed
11   CapsLockOn --> CapsLockOff : EvCapsLockPressed
12   --
13   [*] -> ScrollLockOff
14   ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
15   ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
16 }
17
18 @enduml

(5)箭头方向:

使用->定义水平箭头,也可以使用下列格式强制设置箭头方向:

  • -down-> (default arrow)
  • -right-> or ->
  • -left->
  • -up->
@startuml

[*] -up-> First
First -right-> Second
Second --> Third
Third -left-> Last

@enduml

(6)注释:

可以用 note left of, note right of, note top of, note bottom of 关键字来定义注释。还可以定义多行注释。

@startuml

[*] --> Active
Active --> Inactive

note left of Active : this is a short\nnote

note right of Inactive
  A note can also
  be defined on
  several lines
end note

@enduml

(7)更多注释:可以在合成状态中放置注释。

@startuml

[*] --> NotShooting

state "Not Shooting State" as NotShooting {
  state "Idle mode" as Idle
  state "Configuring mode" as Configuring
  [*] --> Idle
  Idle --> Configuring : EvConfig
  Configuring --> Idle : EvConfig
}

note right of NotShooting : This is a note on a composite state

@enduml

第二部分:分析电梯运行、银行账户的状态转换

①电梯运行

  • 电梯有待载、上升、下降、和楼间停4钟基本状态。
  • 电梯无人承载时停在某一楼层,处在待载状态。
  • 有人进入电梯,并且当前楼层比目标楼层低,电梯上升。
  • 反之电梯下降。
  • 所有人在本层下电梯,电梯待载状态。
  • 电梯中还有人则判断楼层,高于当前楼层则上升,反之下降。

②银行账户

  • 银行账户存在空额、有余额、负债三种状态。
  • 初次建立账户为空额。
  • 向其中存款,有余额状态。
  • 从账户中取款,进入负债状态。
  • 有余额状态存款,余额增加,有余额状态。
  • 从账户中取款,取款额小于余额,有余额状态。
  • 取款额大于余额,负债状态。
  • 取款额等于余额,空额状态。
  • 负债状态时取款,负债状态。
  • 负债状态存款,存款额小于负债额,负债状态。
  • 存款额对于负债额,空额状态。
  • 存款额大于负债额,有余额状态。

第三部分:《电梯控制》系统、《银行账户》系统状态转换的脚本程序

①电梯运行

 1 @startuml
 2 [*] --> 待载
 3
 4 待载 -> 上升:进入[目标楼层>当前楼层]/关门上行
 5 待载 -> 下降:进入[目标楼层<当前楼层]/关门下行
 6
 7 上升 --> 楼间停:[进人/出人]/停机开门
 8 下降 --> 楼间停:[进人/出人]/停机开门
 9
10 楼间停 --> 上升:[目标楼层>当前楼层]/关门上行
11 楼间停 --> 下降:[目标楼层<当前楼层]/关门下行
12 楼间停 --> 待载:[无人]/关门
13 @enduml

②银行账户

 1 @startuml
 2 [*] -> 空额
 3 空额 -> [*]
 4
 5 空额 --> 有余额:存款/余额=余额+存款额
 6 空额 --> 负债:取款[取款额<最大限额]/余额=余额-存款额
 7
 8 有余额 -> 有余额:存款/余额=余额+存款额
 9 有余额 -> 有余额:取款[取款额<余额]/余额=余额-取款额
10 有余额 --> 负债:取款[取款额>余额]/余额=余额-取款额
11 有余额 --> 空额:取款[取款额=余额]/余额=余额-取款额
12
13 负债 -> 负债:取款[取款额<最大限额]/余额=余额-存款额
14 负债 -> 负债:存款[存款额<ABS(余额)]/余额=余额+存款额
15 负债 --> 有余额:存款[存款额>ABS(余额)]/余额=余额+存款额
16 负债 --> 空额:存款[存款额=ABS(余额)]/余额=余额+存款额
17 @enduml

原文地址:https://www.cnblogs.com/Lilith404/p/10798869.html

时间: 2024-07-31 17:45:27

分析电梯控制系统和银行账户系统,分别画出状态图的相关文章

分析工厂采购系统,画出顺序图

第一部分:顺序图语法 (1)简单示例:你可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者.你也可以使用 --> 绘制一个虚线箭头.另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可读性. 注意:仅适用于时序图,对于其它示意图,规则是不同的. 1 @startuml 2 Alice -> Bob: Authentication Request 3 Bob --> Alice: Authentication Response 4 5 Alice -&

2.2 为方便储户,某银行拟开发计算机储蓄系统。写出问题定义并分析此系统的可行性

为方便储户,某银行拟开发计算机储蓄系统.储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名.住址.存款类型.存款日期.利率等信息,并印出存款单给储户:如果是取款,系统计算利息并印出利息清单给储户. 写出问题定义并分析系统的可行性. 答:如果是存款,储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名.住址(或电话号码).身份证号码.存款类型.存款日期.利率等信息,完成后由系统打印存款单给储户. 如果是取款,储户填写取款单,然后交给业务员,业务员把取款金额输入系

互联网账户系统如何设计(上篇)?

在很多互联网公司业务发展的早期,业务模式比较单一的情况下,涉及用户账户资金交易相关的逻辑也比较简单,但是随着公司业务模式的不断创新及类型的多元化发展,会渐渐发现现有系统账户逻辑越来越雍肿,不仅难以支持新业务的扩张,对现有业务的支持也适配困难,最终导致新业务系统不得不重新搭建自己的业务账户逻辑,造成重复建设不说,也往往给后续的财务资金核算造成混乱. 以某互联网A租车公司的业务发展路径为例? 阶段A A公司在早期开展租车业务时根据用户使用场景规定用户必须在缴纳押金以后才可以租车,并且支持用户进行余额

c++课程实训 银行储蓄系统

基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序.能用文本文件存取数据(如演示样例中给出的技术): 拓展方向: 序号 加分项目 细       则 1 改变Bank类中用户信息的存储方式 用对象的指针数组存储(User *user[upNum]) 或者用动态数组(User *users.空间用new分配) 2 功能扩充 按银行实际业务的要求,添加User类中的数据成员,可以记录身份证号.家庭住址等信息,并在相关业务中使用这些数据. 记录用户的每一笔业

银行储蓄系统的设计与实现

作者:夏晓林 地点:烟大计控 时间:2017.04.23 题目描述: 模拟银行柜台业务的要求,实现一个小型的银行储蓄系统软件的开发,其中包括开户.存款.取款.转账.改密.挂失.解挂.销户等功能. 在开发过程中,请按照问题求解过程的要求,体验开发过程中需要做的工作.除了下面的系统基本功能的描述外,鼓励开展调研,使开发的软件尽量符合实际的银行储蓄系统的实际业务内容.可以参考8.1节中关于选用合适的数据结构的讨论,确定数据存储方案. 要求在程序运行过程中或者程序结束运行之前,将业务发生的数据保存到文件

学术休假-银行储蓄系统

银行储蓄系统包括:支持多名储户开户.存款.取款.转帐.改密.挂失.解挂.销户等功能. 登录 输入业务员用户名和密码.3次输入不正确,强制退出程序. 基本要求 可以只设一名业务员,用全局变量表示其用户名和密码,写在程序中. 改进意见 可以用一个文本文件保存多名业务员的信息.定义结构体表示业务员,定义该种类型的结构体数据,在程序开始执行时,读入业务员信息,以支持多名业务员登录. 用文件保存密码时,一般不用"明文",而要加密处理. 系统菜单 当业务员信息验证后,进入到系统主控菜单,由业务员为

课程设计--银行储蓄系统

介绍: 银行储蓄系统包括:支持多名储户开户.存款.取款.转帐.改密.挂失.解挂.销户等功能. 登录 输入业务员用户名和密码.3次输入不正确,强制退出程序. 基本要求 可以只设一名业务员,用全局变量表示其用户名和密码,写在程序中. 系统菜单 当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出. 基本要求 每次启动系统,都是从0用户开始办理业务 开户 账号由系统自动分配 确认密码和密码不同时要拒绝. 开户后,账号状态为0-正常 销户 输入账号,确认后,将余额全部取完,

C++课程设计-银行储蓄系统

*  课程设计概述 */ *  C++课程设计: *  银行储蓄系统 * *  功 能 介 绍: *  面向用户版的银行系统,模拟自己进入银行时相关的操作. *  首次进入银行时,需要办理相应的银行卡.    *  当用户有银行卡后,可以办理银行有的一般业务. *  业务包括:查询.存款.取款.转账.销户 *                 挂失.解挂.改密. *  同时设置了管理员的一个功能,查询银行所有账户的信息. * *  功能实现 :    *  文件保存与读取 *  为了更好的模拟真实

银行账户管理系统详细设计说明书

银行账户管理系统详细设计说明书 第一部分  引言 1.1  编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和参考本说明进行代码的编写.测试. 1.2  背景 说明: A. 软件系统的名称:银行账户管理系统 B. 任务提出者:内蒙古大学计算机学院 开发者:魏晓蕾.宋健.付雨蛟.许杨.高宇.道如那.任海芬.赵家祥 本项目将实现基于服务器端Java Web网站的银行账户管理系统的原型部分,并且在该原型的基础上进行功能的扩展