1. 系统说明
总体说明:本系统模拟一个简单的《智能快递柜管理系统》,主要实现快递员用户管理、快递员存件和收件人取件等功能。
1.1 快递柜
1.系统管理的快递柜有3个分区,编号为A/B/C
2.每个分区共有30个存件箱,分别有S/M/L三种型号,每个型号的存件箱数量如下表所示:
存件箱型号 | 数量 |
---|---|
S | 15 |
M | 10 |
L | 5 |
3.存件箱编号规则:分区号+型号+编号,比如AL01、CS15。
4.快递柜共有“Idle”、“Using”、“Saving”、“Getting”、“Waiting”和“Paying”6种状态,初始处于“Idle”状态。
1.2 快递员用户管理子系统
1.2.1 注册
1.系统提供用户注册功能,只有快递员需要注册,收件人无需注册。
2.系统支持多个快递员用户,注册快递员用户数最大20个,不支持重复注册。
3.快递员用户名长度5-10位,只能是数字、字母或数字和字母的组合;用户密码要满足以下复杂度要求,长度要求为8位,且必须包含如下至少三种字符的组合:
- 至少一个字母(a-z或A-Z)
- 至少一个数字(0-9)
- 至少一个特殊字符:!#$%&*±./:;<=>?@[]^_|~
1.2.2 登录
1.快递员需要登录后才能使用快递柜存件、关门、查询和提醒功能。
2.系统最多允许3个快递员同时登录。
3.同一快递员用户连续3次登录失败,第4次登录时返回账户锁定;登录成功后不可重复登录。
4.只有快递柜处于“Idle”或“Using”状态时快递员才可以登录。任何一个快递员登录成功则快递柜切换到“Using”状态。
1.2.3 退出
1.快递员只有登录后才能退出。
2.所有快递员都退出则快递柜切换为“Idle”状态。
1.3 快递员存件管理子系统
1.3.1 存件
1.快递员输入快递单号和存件箱型号进行存件。如果对应型号存件箱有空闲的,就随机分配一个并自动打开箱门;如果对应型号存件箱全部满了,则存件失败。
2.只有快递柜处于“Using”或“Saving”状态才可以存件,允许1个快递员存件时再有另外1个快递员存件。同一快递员存件未关门,继续下一个存件则存件失败。
3.存件打开箱门后,快递柜状态如果是“Using”,则切换到“Saving”;如果是“Saving”,则切换到“Waiting”(仅多快递员存件时会出现“Waiting”状态)。
1.3.2 关门
1.快递员把快递放入存件箱后,关闭箱门,系统返回取件码用于通知收件人取件。
2.只有快递柜处于“Saving”或“Waiting”状态下才可以关门。
3.如果快递柜处于“Waiting”状态,在关门时,必须保证“先存先关”的原则,即后存件的快递员只有在前一个快递员关门后才能关门。
4.关闭箱门后,快递柜状态如果是“Saving”,则切换到“Using”;如果是“Waiting”,则切换到“Saving”。
1.3.3 查询和提醒
1.快递员仅能查询自己存入的未取件。
2.快递员可以选择自己存入的未取件的取件码,用来提醒取件人。未取件列表中所有记录必须全部为本快递员存入的未取件,则提醒成功。
1.4 收件人取件管理子系统
1.4.1 取件
1.只有快递柜处于“Idle”状态时收件人才可以取件。
2.收件人输入取件码来取件,如果当天取件则无需支付费用,目标存件箱会自动打开箱门,同时快递柜切换到到“Getting”状态。
3.如果取件时间超过1天,收件人需要先支付超时费,快递柜切换到“Paying”状态。
1.4.2 超时费支付
1.计费规则:当天存当天取不计费,第二天开始计费,每天1元,10元封顶。
2.收件人支付超时存放费成功后,目标存件箱会自动打开箱门,同时快递柜切换到“Getting”状态。
3.收件人在快递柜处于“Paying”状态时支付失败,则取件失败,快递柜切换到“Idle”状态,收件人需要重新输入取件码进行取件。
4.收件人在快递柜处于非“Paying”状态下支付失败,快递柜状态保持不变。
1.4.3 取件关门
1.收件人取走快递后关闭存件箱箱门,快递柜切换为“Idle”状态。
2. 系统约束
如下约束不作为测试考点,考生无需专门写用例验证:
1.快递员登录锁定后无法解锁可使用调用init接口初始化;
2.系统初始化接口和可测试性接口,无需测试;
3.考试系统会对输入命令格式进行处理,除了密码安全性要求,考生不需要关注输入命令格式、参数格式的合法性;
4.对于涉及多个参数的命令,多个输入参数同时出错的情况无需测试;
5.输入的数字类参数,必须是正整数(异常输入无需测试);
6.输入的枚举类参数,必须是系统规格中描述的有效值(异常输入无需测试);
7.接口返回值类型为字符串,由返回码和输出内容以”:”拼接而成;
8.注意:所有输出标点为英文标点。
3. 接口说明
3.1 初始化
- 命令格式:init()
- 功能说明:系统初始化,所有测试数据清零。
- 约束说明:使用前必须初始化,该接口无需测试。
- 输入说明:无
- 输出说明:
返回码 | 输出 |
---|---|
E000 | Success |
E001 | Fail |
举例:
输入:init()
输出:E000:Success
3.2 快递员用户管理子系统
3.2.1 注册
- 命令格式:register(username,password)
- 功能说明:快递员用户注册。
- 约束说明:无
- 输入说明:
- username:快递员用户名,字符串类型
- password:密码,字符串类型
- 输出说明:
返回码 | 输出 |
---|