本文是软件工程项目“自助计费温控系统”的用例模型。

编写人员

  • 小组名:软件工程-307d组

一、角色

根据《用户需求说明书》中的要求,经过分析后得出,分布式温控计费系统的角色有:

  1. 住户(Guest):即入住客户;
  2. 空调管理员(Administrator):即在服务器端控制和监控各房间的空调的人员,相当于是系统的Administrator;
  3. 前台(Reception):即酒店前台,在住户退房时出具空调使用的详单和账单;
  4. 酒店经理(Manager):或称酒店管理人员,在需要时通过系统查看不同时间范围内的格式化统计报表。

二、用例图

1、住户(Guest)

点击查看

住户-用例图

2、空调管理员(Administrator)

点击查看

空调管理员-用例图

3、前台(Reception)

点击查看

前台-用例图

4、 酒店经理(Manager)

点击查看

酒店经理-用例图

三、顺序图(SSD)

1、住户(Guest)

①使用空调

点击查看

住户-ssd-使用空调

②查询信息

点击查看

住户-ssd-查询信息

2、空调管理员(Administrator)

①总控空调

点击查看

空调管理员-ssd-总控空调

②监控空调

点击查看

空调管理员-ssd-监控空调

3、前台(Reception)

①打印账单

点击查看

前台-ssd-打印账单

②打印详单

点击查看

前台-ssd-打印详单

4、 酒店经理(Manager)

①打印统计报表

点击查看

酒店经理-ssd-打印统计报表

5、其他

①登录系统

点击查看

ssd-登录系统

②获取状态信息

点击查看

ssd-获取状态信息

四、操作契约

1、住户(Guest)

①使用空调

1:OpenAC(room_id)
系统事件 OpenAC(room_id) 开空调
交叉引用 使用空调
前置条件 已经登录系统,用户按动开机键
后置条件 (1)空调开机,空调开关状态被修改
(2)计费状态被修改;
(3)服务记录被更新;
3:SetACMode(room_id,mode)
系统事件 SetACMode(room_id,mode) 修改空调模式
交叉引用 使用空调
前置条件 空调开启并运行
后置条件 (1)空调模式被修改; (2)返回当前设置状态;
5:SetACTemp(room_id,temp)
系统事件 SetACTemp(room_id,temp) 设定温度
交叉引用 使用空调
前置条件 空调开启并运行
后置条件 (1)空调温度被修改; (2)返回当前设置温度;
7:SetACWindLevel(room_id,level)
系统事件 SetACWindLevel(room_id,level) 设定风速
交叉引用 使用空调
前置条件 空调开启并运行
后置条件 (1)空调风速被修改; (2)返回当前设置风速;
9:SetACTimer(room_id,time)
系统事件 SetACTimer(room_id,time) 设定定时
交叉引用 使用空调
前置条件 空调开启并运行
后置条件 (1)设定计时器,计时器开关状态被修改; (2)返回剩余时间;
11:MakeNewInfoCollection(guest_id,room_id,date_time)
系统事件 MakeNewInfoCollection(guest_id,room_id,date_time) 创建新的信息集合
交叉引用 使用空调
前置条件 修改空调状态完成,开始显示信息
后置条件 (1)新概念类信息集合被创建;
(2)信息集合与住户、房间、时间建立关联;
(3)信息集合初始化
13:AddInfoItem(info_item)
系统事件 AddInfoItem(info_item) 添加信息项
交叉引用 使用空调
前置条件 获取信息完成
后置条件 (1)新概念类信息项被创建;(2)信息项与信息集合建立关联;
15:ListInfoCollection(collection_id)
系统事件 ListInfoCollection(collection_id) 列出信息集合
交叉引用 使用空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isComplete被修改
17:Show(collection_id)
系统事件 Show(collection_id) 展示空调信息
交叉引用 使用空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isShow被修改
19:ShutDownAC(room_id)
系统事件 shutdownAC(RoomID) 关空调
交叉引用 使用空调
前置条件 用户按动关机按钮
后置条件 (1)空调开关状态被修改(2)结束本次服务记录
21:EndUseAC()
系统事件 EndUseAC() 使用空调结束
交叉引用 使用空调
前置条件 空调已关机
后置条件 (1)空调状态被修改:ReadyToStart; (2)结算

②查询信息

1:MakeNewInfoCollection(guest_id,room_id,date_time)
系统事件 MakeNewInfoCollection(guest_id,room_id,date_time) 创建新的信息集合
交叉引用 查询信息
前置条件 已经登录系统,开始显示信息
后置条件 (1)新概念类信息集合被创建;
(2)信息集合与住户、房间、时间建立关联;
(3)信息集合初始化
3:AddInfoItem(info_item)
系统事件 AddInfoItem(info_item) 添加信息项
交叉引用 查询信息
前置条件 获取信息完成
后置条件 (1)新概念类信息项被创建;(2)信息项与信息集合建立关联;
5:ListInfoCollection(collection_id)
系统事件 ListInfoCollection(collection_id) 列出信息集合
交叉引用 查询信息
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isComplete被修改
7:Show(collection_id)
系统事件 Show(collection_id) 展示空调信息
交叉引用 查询信息
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isShow被修改
9:EndQuery()
系统事件 EndQuery() 查询信息结束
交叉引用 查询信息
前置条件 信息集合已经被展示
后置条件 (1)查询状态被修改: isEnd

2、空调管理员(Administrator)

①总控空调

1:OnOffAC(room_id)
系统事件 OnOffAC(room_id) 开关空调
交叉引用 总控空调
前置条件 已经登录系统,管理员想要开关某房间的空调
后置条件 (1)空调开机/关机状态被修改;
(2)服务记录被更新;
3:SetACMode(room_id,mode)
系统事件 SetACMode(room_id,mode) 修改空调模式
交叉引用 总控空调
前置条件 已经登录系统,管理员想要修改某房间的空调模式
后置条件 (1)空调模式被修改; (2)返回当前设置状态;
5:SetACTemp(room_id,temp)
系统事件 SetACTemp(room_id,temp) 设定温度
交叉引用 总控空调
前置条件 已经登录系统,管理员想要修改某房间的空调温度
后置条件 (1)空调温度被修改; (2)返回当前设置温度;
7:SetACWindLevel(room_id,level)
系统事件 SetACWindLevel(room_id,level) 设定风速
交叉引用 总控空调
前置条件 已经登录系统,管理员想要修改某房间的空调风速
后置条件 (1)空调风速被修改; (2)返回当前设置风速;
9:SetACTimer(room_id,time)
系统事件 SetACTimer(room_id,time) 设定定时
交叉引用 总控空调
前置条件 已经登录系统,管理员想要修改某房间的空调定时
后置条件 (1)设定计时器,计时器开关状态被修改; (2)返回剩余时间;
11:MakeNewInfoCollection(admin_id,room_id,date_time)
系统事件 MakeNewInfoCollection(admin_id,room_id,date_time) 创建新的信息集合
交叉引用 总控空调
前置条件 修改空调状态完成,开始显示信息
后置条件 (1)新概念类信息集合被创建;
(2)信息集合与管理员、房间、时间建立关联;
(3)信息集合初始化
13:AddInfoItem(info_item)
系统事件 AddInfoItem(info_item) 添加信息项
交叉引用 总控空调
前置条件 获取信息完成
后置条件 (1)新概念类信息项被创建;(2)信息项与信息集合建立关联;
15:ListInfoCollection(collection_id)
系统事件 ListInfoCollection(collection_id) 列出信息集合
交叉引用 总控空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isComplete被修改
17:Show(collection_id)
系统事件 Show(collection_id) 展示空调信息
交叉引用 总控空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isShow被修改
19:EndControl()
系统事件 EndControl() 总控空调结束
交叉引用 总控空调
前置条件 信息集合展示完成
后置条件 (1)总控任务状态被修改:isEnd;

②监控空调

1:MakeNewInfoCollection(admin_id,room_id,date_time)
系统事件 MakeNewInfoCollection(admin_id,room_id,date_time) 创建新的信息集合
交叉引用 监控空调
前置条件 已经登录系统,开始显示信息
后置条件 (1)新概念类信息集合被创建;
(2)信息集合与管理员、房间、时间建立关联;
(3)信息集合初始化
3:AddInfoItem(info_item)
系统事件 AddInfoItem(info_item) 添加信息项
交叉引用 监控空调
前置条件 获取信息完成
后置条件 (1)新概念类信息项被创建;(2)信息项与信息集合建立关联;
5:ListInfoCollection(collection_id)
系统事件 ListInfoCollection(collection_id) 列出信息集合
交叉引用 监控空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isComplete被修改
7:Show(collection_id)
系统事件 Show(collection_id) 展示空调信息
交叉引用 监控空调
前置条件 信息集合建立完成
后置条件 (1)信息集合属性isShow被修改
9:EndMonitor()
系统事件 EndMonitor() 监控空调结束
交叉引用 监控空调
前置条件 信息集合已经被展示
后置条件 (1)监控空调状态被修改: isEnd

3、前台(Reception)

①打印账单

1:MakeNewBill(room_id,reception_id)
系统事件 MakeNewBill(room_id,reception_id) 生成新账单
交叉引用 打印账单
前置条件 前台身份验证通过,开始账单处理
后置条件 (1)一个新的帐单创建 (2)账单与房间建立“关联”
(3)账单与前台建立“关联” (4)账单的属性初始化:金额
3:GetRoomBill(room_id)
系统事件 GetRoomBill(room_id) 获取房间账单
交叉引用 打印账单
前置条件 前台正在处理账单
后置条件 (1)账单的属性被修改:isComplete (2)账单与房间建立“关联”
5:Print(bill)
系统事件 Print(bill) 打印账单
交叉引用 打印账单
前置条件 前台完成处理账单
后置条件 帐单属性被修改:isPrinted
7:EndPrintBill()
系统事件 EndPrintBill() 打印账单结束
交叉引用 打印账单
前置条件 前台完成打印账单
后置条件 (1)账单属性被修改:isReadytoSend (2)账单与报表数据库建立“关联”

②打印详单

1:MakeNewSpecifications(room_id,reception_id)
系统事件 MakeNewSpecifications(room_id,reception_id) 生成新详单
交叉引用 打印详单
前置条件 前台身份验证通过,开始详单处理
后置条件 (1)一个新的详单创建
(2)详单与房间建立“关联”
(3)详单与前台建立“关联”
(4)详单的属性初始化:空调使用时间、空调状态变化、每个阶段对应金额
3:GetRoomDailySpecifications(room_id,date)
系统事件 GetRoomDailySpecifications(room_id,date) 获取房间每日详单
交叉引用 打印详单
前置条件 前台正在处理详单
后置条件 (1) 具体日期的详单获取成功 (2) 详单与日期建立“关联”
5:AddRoomDailySpecifications(room_daily_specifications)
系统事件 AddRoomDailySpecifications(room_daily_specifications) 添加房间每日详单
交叉引用 打印详单
前置条件 已经获取了具体日期的详单
后置条件 (1)合并详单获取成功 (2)详单属性被修改:isComplete
7:Print(specifications)
系统事件 Print(specifications) 打印详单
交叉引用 打印详单
前置条件 前台完成处理详单
后置条件 详单属性被修改:isPrinted
9:EndPrintSpecifications()
系统事件 EndPrintSpecifications() 结束打印详单
交叉引用 打印详单
前置条件 前台完成打印详单
后置条件 (1)详单属性被修改:isReadytoSend (2)详单与报表数据库建立“关联”

4、 酒店经理(Manager)

①打印统计报表

1:MakeNewReport(manager_id,date_time)
系统事件 MakeNewReport(manager_id,date_time) 创建新的总统计报表
交叉引用 打印统计报表
前置条件 已经登录系统
后置条件 (1)新概念类统计报表被创建;
(2)统计报表与经理、日期时间建立关联;
(3)统计报表初始化
3:GetRoomReport(room_id)
系统事件 GetRoomReport(room_id) 获取房间的统计报表
交叉引用 打印统计报表
前置条件 统计报表已经初始化
后置条件 (1)新概念类房间的统计报表被创建;
(2)房间的统计报表与房间建立关联;
(3)获得房间的统计报表
5:AddReportItem(report_item)
系统事件 AddReportItem(report_item) 向总统计报表中添加每个房间的统计报表
交叉引用 打印统计报表
前置条件 已经获得房间的统计报表
后置条件 (1)新概念类统计报表项被创建;
(2)房间的统计报表与统计报表项建立关联;
7:ListRoomReport(report_id)
系统事件 ListRoomReport(report_id) 列出总统计报表每一项
交叉引用 打印统计报表
前置条件 统计报表建立完成
后置条件 (1)统计报表属性isComplete被修改
9:Summary(report)
系统事件 Summary(report) 总结整合统计报表信息
交叉引用 打印统计报表
前置条件 统计报表建立完成
后置条件 (1)统计报表属性isSummary被修改 (2)获得统计信息
11:Print(Report,Summary)
系统事件 Print(Report,Summary) 打印报表和统计信息
交叉引用 打印统计报表
前置条件 统计报表建立完成,已经获得统计信息
后置条件 (1)统计报表属性isPrint被修改
13:EndPrintReport()
系统事件 EndPrintReport() 打印统计报表结束
交叉引用 打印统计报表
前置条件 报表和统计信息已经被打印
后置条件 (1)打印统计报表任务状态被修改: isEnd

5、其他

①登录系统

1:RequestLogin(user_id)
系统事件 RequestLogin(user_id) 请求登录
交叉引用 登陆系统
前置条件 用户准备进行登录
后置条件 (1)用户与系统建立“关联” (2)用户的属性初始化:账号、密码
3:CheckUserInfo(user_id)
系统事件 CheckUserInfo(user_id) 检查登录信息
交叉引用 登陆系统
前置条件 用户输入账号密码
后置条件 (1)用户帐号状态被修改:ischecked
5:EndLogin()
系统事件 EndLogin() 结束登录
交叉引用 登陆系统
前置条件 系统账号检查完毕
后置条件 登陆结束,进入系统(或者返回登陆页面)

②获取状态信息

1:GetUserInfo(user_id)
系统事件 GetUserInfo(user_id) 获取用户信息
交叉引用 获取状态信息
前置条件 用户登陆完成
后置条件 (1)用户与数据库建立“关联” (2)用户成功获取住户信息
(3)返回当前状态
3:GetRoomInfo(room_id)
系统事件 GetRoomInfo(room_id) 获取房间信息
交叉引用 获取状态信息
前置条件 用户登陆完成
后置条件 (1)用户与数据库建立“关联” (2)用户成功获取房间信息
(3)返回当前状态
5:GetACInfo(room_id)
系统事件 GetACInfo(room_id) 获取空调信息
交叉引用 获取状态信息
前置条件 用户登陆完成
后置条件 (1)用户与数据库建立“关联” (2)用户成功获取房间空调信息
(3)返回当前状态
7:GetConsumeInfo(room_id)
系统事件 GetConsumeInfo(room_id) 获取消费信息
交叉引用 获取状态信息
前置条件 用户登陆完成
后置条件 (1)用户与数据库建立“关联” (2)用户成功获取房间消费信息
(3)返回当前状态
9:EndGetInfo()
系统事件 EndGetInfo() 获取信息结束
交叉引用 获取状态信息
前置条件 获取信息完成
后置条件 用户获取状态信息结束

五、项目地址

整个项目的源代码,可执行文件,测试用例,结果均在下面的仓库中,欢迎查看:

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

载入天数...载入时分秒...