ATM存取款系统中包括客户和管理员等参与者,可以实现存款,取款,查询,打印凭条等相关服务。根据以上描述,分析建模用例图,类图,活动图,序列图,组件图和部署图。要求根据题干描述,包含并合理扩展建模内容。用例图要求编写用例文档
时间: 2025-06-23 21:27:21 浏览: 10
### 设计ATM存取款系统的UML图表
#### 用例图 (Use Case Diagram)
用例图展示了系统与外部参与者之间的交互关系,以及各个用例之间的关联。对于包含客户和管理员角色的ATM存取款系统而言:
- **参与者**:客户、管理员
- **主要用例**:
- 客户可以执行的操作有存款、取款、查询余额、打印交易记录等。
- 管理员则负责管理账户状态、处理异常情况等功能。
通过绘制用例图能够清晰地展示上述功能需求[^1]。
```plantuml
@startuml
actor Customer as cust
actor Admin as admin
cust --> (Deposit)
cust --> (Withdrawal)
cust --> (Check Balance)
cust --> (Print Transaction History)
admin --> (Manage Account Status)
admin --> (Handle Exception Cases)
(Manage Account Status) .> (Block/Unblock Card): <<include>>
(Handle Exception Cases) .> (Report Issue): <<extend>>
@enduml
```
#### 类图 (Class Diagram)
类图用于表示对象及其属性方法间的关系,在此案例中会涉及到的主要实体包括但不限于`Account`, `Transaction`, `User`等类别,并定义其各自的字段及操作函数。
```plantuml
@startuml
class User {
+String userId
+String password
}
class Account {
+int accountNumber
+double balance
+void deposit(double amount)
+boolean withdraw(double amount)
}
class Transaction {
+Date date
+double amount
+String type
}
User "0..*" -- "*" Account : owns
Account "1" -- "*" Transaction : has
@enduml
```
#### 活动图 (Activity Diagram)
活动图有助于描绘业务流程逻辑,特别是那些涉及条件判断分支的情况。针对本项目可构建如下工作流模型来解释一次完整的提款过程。
```plantuml
@startuml
start
:Insert card;
if (Valid?) then (yes)
:Enter PIN code;
if (Correct?) then (no)
:Return card;
stop
else (yes)
:Select operation;
while (Operation selected?)
switch (Operation)
case (Withdraw money)
:Specify withdrawal amount;
if (Sufficient funds?) then (no)
:Show error message;
else (yes)
:Dispense cash;
endif
break
default
:Perform other operations...
endswitch
:Eject card;
endwhile
endif
stop
@enduml
```
#### 序列图 (Sequence Diagram)
序列图具体化了特定场景下的消息传递顺序,这里选取了一个典型的用户登录验证作为例子进行说明。
```plantuml
@startuml
participant User
participant ATM
participant BankServer
User -> ATM: InsertCard()
activate ATM
ATM -> BankServer: VerifyCard(cardInfo)
BankServer -> ATM: ReturnVerificationResult(result)
deactivate BankServer
alt result == true
ATM -> User: RequestPINEntry()
activate User
User -> ATM: ProvidePIN(pinCode)
deactivate User
ATM -> BankServer: AuthenticateUser(accountId, pinCode)
BankServer -> ATM: SendAuthenticationStatus(status)
else
ATM -> User: DisplayErrorAndRejectCard()
endif
@enduml
```
#### 组件图 (Component Diagram)
组件图强调的是构成应用程序的不同模块或子系统间的依赖关系。考虑到实际应用环境,可能还需要考虑安全认证服务等因素。
```plantuml
@startuml
component {ATM System} as atmSys{
component AuthenticationService
component TransactionProcessingModule
component DatabaseAccessLayer
}
atmSys ..> AuthenticationService : uses
atmSys ..> TransactionProcessingModule : invokes
DatabaseAccessLayer -down-> TransactionProcessingModule : provides data access to
@enduml
```
#### 部署图 (Deployment Diagram)
部署图反映了物理硬件设备上软件节点的具体分布状况。对于银行自助终端来说,通常由前端界面程序运行于本地机器之上并与远程服务器保持连接完成数据交换任务。
```plantuml
@startuml
node "ATM Machine" as atmMachine {
artifact "FrontEndApp.jar"
}
cloud "Remote Server Cluster" as serverCluster {
node "Web Application Server" as webAppServer
database "Customer Data Store" as db
}
webAppServer -right-> db : accesses
atmMachine -down-> webAppServer : communicates via HTTPS API calls
@enduml
```
---
阅读全文
相关推荐


















