本文是软件工程项目“自助计费温控系统”的用例模型。
编写人员
一、角色
根据《用户需求说明书》中的要求,经过分析后得出,分布式温控计费系统的角色有:
- 住户(Guest):即入住客户;
- 空调管理员(Administrator):即在服务器端控制和监控各房间的空调的人员,相当于是系统的Administrator;
- 前台(Reception):即酒店前台,在住户退房时出具空调使用的详单和账单;
- 酒店经理(Manager):或称酒店管理人员,在需要时通过系统查看不同时间范围内的格式化统计报表。
二、用例图
1、住户(Guest)
点击查看
2、空调管理员(Administrator)
点击查看
3、前台(Reception)
点击查看
4、 酒店经理(Manager)
点击查看
三、顺序图(SSD)
1、住户(Guest)
①使用空调
点击查看
②查询信息
点击查看
2、空调管理员(Administrator)
①总控空调
点击查看
②监控空调
点击查看
3、前台(Reception)
①打印账单
点击查看
②打印详单
点击查看
4、 酒店经理(Manager)
①打印统计报表
点击查看
5、其他
①登录系统
点击查看
②获取状态信息
点击查看
四、操作契约
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() 获取信息结束 |
交叉引用 |
获取状态信息 |
前置条件 |
获取信息完成 |
后置条件 |
用户获取状态信息结束 |
五、项目地址
整个项目的源代码,可执行文件,测试用例,结果均在下面的仓库中,欢迎查看: