地铁收费管理系统.docx

上传人:b****6 文档编号:5996477 上传时间:2023-01-02 格式:DOCX 页数:14 大小:32.19KB
下载 相关 举报
地铁收费管理系统.docx_第1页
第1页 / 共14页
地铁收费管理系统.docx_第2页
第2页 / 共14页
地铁收费管理系统.docx_第3页
第3页 / 共14页
地铁收费管理系统.docx_第4页
第4页 / 共14页
地铁收费管理系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

地铁收费管理系统.docx

《地铁收费管理系统.docx》由会员分享,可在线阅读,更多相关《地铁收费管理系统.docx(14页珍藏版)》请在冰豆网上搜索。

地铁收费管理系统.docx

地铁收费管理系统

地铁收费管理系统

HUAWGI

地铁收费系统_0级内部公开

地铁收费管理系统

考试提醒

请仔细阅读规格文档,理解规格文档估讣需要花费10〜30分钟来理解,请务必看清

楚要求再动手,试题包括规格描述和代码框架。

C/C++编译环境统一为VisualC++6.0版本。

如果你喜欢并熟悉Source

Insight或其它匸具,也可以使用SourceInsight或其它工具进行开发,但考生必须保证提交的代码要在指定编译环境下编译通过,否则无法阅卷。

,如果考题与日常工作/生活接近,请考生以规格为准,不要类比相似案例。

岀于自动化测试的需要,程序中不要使用原始的I/O输入输出(键盘输入、屏幕输

出)作为正式输入输出,我们会提供基于Socket的输入输出API接口,考生必须

使用SocketAPI进行正式输入输出操作。

调试输出的方式不受此限制。

考试的工程已经提供Socket通信功能,并提供输入/输出的API,考生不需要实

现。

1总体说明

考生需要模拟实现一个简单的地铁收费系统,实现地铁交通卡或单程票的扣费、余额提示、日志记录和日志查询等功能。

1.1相邻站点间里程表

系统预置有一张“相邻站点间里程表”,作为计算基本票价的依据。

其结构和内容如下:

站点1站点2里程(千米)站点名站点名系统已设置值站点名站点名系统已设置值站点名站点名系统已设置

IMOOOOOOOOOOOOOOOOOO

站点名站点名系统已设置值

备注:

只考虑1条地铁线路,站点关系示意:

站点站点站点OOOOOO

—-站点

一-站点,无分义,无环路,任何2站点之间的路径是唯一的,不存在多条路径的

情况。

该线路上地铁双向运行。

乘客可以从任何站点进站,也可以从任何站点出站。

表中无重复记录,一对相邻站点在表中只存在一条记录,比如:

S2与S4之间的

记录只有:

S2->S4或S4->S2其中的任意1条,而不会同时存在2条。

考生可以直接使用考试系统提供的根据该表讣算任意2站点间最短里程的接口(接

口参见3.4API说明)。

2015-3-24华为机密,未经许可不得扩散第1页,共10页

HUAWEI

地铁收费系统_0级内部公开

1.2地铁收费系统规则

1、票价分为基本票价和扣费票价。

扣费票价是在基本票价的基础上,根据票卡类型、

时间段进行特殊计算得到的(也有可能等于基本票价),是扣费操作时需要从卡上扣除的金

额。

2、基本票价计算规则:

按进站点与出站点之间的最短里程分级计算:

,3千米

(包含3千米,但不包括0)以内:

2元。

3千米至5千米(包含5千米):

3元。

5千米至10千米(包含10千米):

4元。

10千米以上:

5元。

structdistcost

{

Charsi[];

Chars2[];

Intdistance;

};

3、进出站为同一站点的,则按进出站时长计算:

(1)小于等于30分钟:

单程票:

票卡面值作为扣费票价;

其他卡:

0元,且不受任何时间段的限制,即直接作为扣费票价。

(2)大于30分钟:

单程票:

(票卡面值,3元)中“最大值”作为扣费票价;

其他卡:

3元,且不享受任何时间段的优惠,即直接作为扣费票价。

4、扣费票价计算规则1:

按照各种票卡的类型计算:

普通卡(C):

正常时间段以基本票价作为扣费票价;特殊时间段收费参见“5、

费票价讣算规则2”o

老年卡(B):

正常时间段以基本票价的9折作为扣费票价(如出现小数,则向下

取整);特殊时间段收费参见“5、扣费票价计算规则2”。

单程票(A):

即一次性车票,任何时间段不享受任何优惠,直接以(票卡面值,

基本票价)中“最大值”作为扣费票价。

5、扣费票价计算规则2(不涉及单程票):

按照进站时间的不同区间计算:

,进站时间为[7:

00,9:

00)、[16:

30,18:

30)时,无任何优惠,所有类型的交通

卡(单程票除外)以基本票价作为扣费票价。

进站时间为[10:

00,11:

00)、[15:

00,16:

00)时,所有类型的交通卡(单程票

除外)以基本票价的5折作为扣费票价(如出现小数,则向下取整)。

2015-3-24华为机密,未经许可不得扩散第2页,共10页

HUAWEI

地铁收费系统_0级内部公开

1.3约束

考生严格按操作说明的功能项实现,不用考虑其他异常(比如:

单参数的合法性,

不同操作之间的逻辑关联性,等等)。

系统不考虑跨天的情况,只需要考虑同一天,即00:

00^23:

59地铁全天运行时

间范围内的功能。

所用的命令字和卡类型参数中的字母不区分大小写;站名中若出现小写字母,考试

框架自动将其转换成大写字母。

2操作说明

采用在考试系统提供的SocketTool工具中输入命令串方式与系统进行操作交互,命令字是该命令吊的第一个符号。

命令行的格式:

命令字[空格〕参数1...[空格]参数n

命令字与第一个参数之间、参数与参数之间,均使用英文半角空格分隔,单个参数内无空格。

命令行涉及到的“参数说明”:

参数名称参数说明类型取值范围示例

卡号卡号整数0、9,0为通5

配卡号,只在查

询(q)命令中可

用。

卡类型票卡的类型:

字符A(a),B(b),B,b

单程票/老年卡/C(c)

普通卡

金额(元)卡扣费前余额整数0、999888

卡扣费后余额

扣费金额

(遇小数向下取

整)

时间进站时间HH:

MM00:

00^23:

59注意命令输入格式:

出站时间合法:

09:

05

查询起始时间非法:

9:

05>09:

5、9:

5

查询终止时间

站点名称进站站点名称字符串共六个站名:

S5

出站站点名称srs6

2.1初始化

命令格式:

r

2015-3-24华为机密,未经许可不得扩散第3页,共10页

HWAWCI

地铁收费系统_0级内部公开

功能说明:

程序复位,使程序恢复到刚启动时的初始化状态。

全局变量、链表及输出消费记录的文件等统一恢复到初始状态。

约束说明:

系统在任何状态下可以执行该命令初始化系统。

输出说明:

输出操作结果提示(执行完r命令后系统会自动输出操作结果,考生不需

要调用任何输出函数)。

编号用例标题测试步骤预期输出

1程序复位R100:

欢迎使用地铁收费系统2.2请求扣费

命令格式:

c卡号卡类型卡扣费前余额进站时间进站站点名称出站时间出站站点名称

功能说明:

1、按照输入条件和“1.2地铁收费系统规则”,对票卡进行扣费操作(减去扣费票价)。

2、输出信息调用系统已提供的接口完成(接口参见“3.4API说明”)。

3、如果:

进站时间>出站时间,则不扣费,输出参数错误。

编号用例标题测试步骤预期输出

1请求扣费命令C9C2012:

05E02:

参数错误(时间关系错误)

参数非法S111:

20S4

4、如果从进站点到出站点之间的路线不存在,则不扣费,输出无效路线,并显示“卡扣费后余额”(“卡扣费后余额”等于“卡扣费前余额”)。

编号用例标题测试步骤预期输出

1无效线路,扣费C3C8509:

05110:

扣费失败(无效路线)

失败S310:

20S8〈卡号=3>〈余额二83>

注意:

3/4同时发生时,以3输出优先。

5、如果'‘卡扣费前余额”大于等于扣费票价,则扣费,输出扣费成功,并显示“卡扣费后余额”。

注意:

如果单程票面值大于等于扣费票价,则按票面值扣费。

例如:

单程票面值5元,应收票价为3元,则本次扣费为5元,余额为0。

编号用例标题测试步骤预期输出

1正常扣费成功C1A307:

00Ill:

扣费成功

S408:

25S3〈卡号二IX余额二0>

6、不是单程票的,扣费成功后,如果"卡扣费后余额”小于20元,则输出余额过低,并显示“卡扣费后余额”。

编号用例标题测试步骤预期输出

1正常扣费成功,C4B2010:

05112:

扣费成功(余额过低)

卡内余额偏低S111:

20S4〈卡号二4>〈余额二18>

7、如票''卡扣费前余额”不足以扣费,则不扣费,输出扣费失败(余额不足),并显示“卡扣费后余额”(“卡扣费后余额”等于“卡扣费前余额”)。

2015-3-24华为机密,未经许可不得扩散第4页,共10页

HWAWEI

地铁收费系统_0级内部公开

编号用例标题测试步骤预期输出

1余额不足,扣费C4B115:

00113:

扣费失败(余额不足)

失败S115:

55S4<卡号=4><余额二1>

8、调用系统已提供的写日志接口(接口参见“3.4API说明”),将“地铁乘车记录”

记录到内存日志中,日志记录中包含如下字段:

<>

WO

W<><卡号进站时间进站站点名称出站时间出站站点名称实际

X扣费是否成功〉扣款金额

Structloginfo{

Intcard;

LonginTime;

Charsi[];

LongoutTime;

Chars2[];

Intcost;

BoolisCost;

};

注意:

请求扣费操作(c/C)所有(无论是否成功或失败)输出返回时,均要求要记录

日志。

(如果卡号已注销的话,不写日志)

,仅请求扣费操作(c/C)才记录日志,其他任何操作(查询扣费日志(q/Q)、初始化

(r/R))均要求不要记录日志。

系统最多记录10条日志,超过的系统会自动丢弃,程序初始化(或复位

(r/R))

后日志记录自动清空,自动从头记录。

约束说明:

无。

输出说明:

输出操作结果,统一参见“3.3基本用例”。

2.3查询扣费日志(本功能作为附加功能,学员选做,请在完成其他

功能后再做)

命令格式:

q卡号查询起始时间查询终止时间

功能说明:

查询指定票卡出站时间在指定时间段内(查询起始时间〈二出站时间〈二查询

终止1、

时间)的“地铁乘车记录”日志。

备注:

对于内存日志的访问,请使用系统已提供的访问日志的接口(接口参见

“3.4API

说明”)。

2、输出日志查询结果信息,请调用系统已提供的接口完成(接口参见“3.4

API说明”)。

3、如果:

查询起始时间〉查询终止时间,则输出参数错误。

编号用例标题测试步骤预期输出

1查询日志命令Q020:

00E02:

参数错误(时间关系错误)

参数非法17:

30

4、如果卡号为0,则查询所有票卡出站时间在指定时间段内的地铁乘车记录;

2015-3-24华为机密,未经许可不得扩散第5页,共10页

HUAWEI

地铁收费系统_0级内部公开

5、查询结果按照“卡号”从小到大的顺序输出,同一卡号按照记录日志的先后顺序输

出。

编号用例标题测试步骤预期输出

1查询日志成功R100:

欢迎使用地铁收费系统

C4B2010:

05112:

扣费成功(余额过低)

8111:

20S4<卡号=4><余额二18>

C3C8509:

05110:

扣费失败(无效路线)

S310:

20S8〈卡号二3>〈余额二85>

Q000:

00120:

查询成功

23:

59<3X09:

05XS3X10:

20XS8X0X失

败〉

<4X10:

05XS1X11:

20XS4X2X成

功〉

6、如果没有满足条件的记录,则输出查询失败(无相应记录)。

编号用例标题测试步骤预期输出

1无日志记录,查R100:

欢迎使用地铁收费系统

询失败Q000:

00E21:

查询失败(无相应记录)

23:

59

约束说明:

无。

输出说明:

满足条件的日志记录。

2.4查询扣费历史记录

命令格式:

h卡号

功能说明:

1、查询指定票卡的消费记录(只查询消费成功的记录)。

2、如果卡号为0,则查询所有票卡的消费记录;

3、查询结果按照消费的顺序输出。

2015-3-24华为机密,未经许可不得扩散第6页,共10页

HWAWCI

地铁收费系统_0级内部公开

编号用例标题测试步骤预期输出

1查询扣费历史R100:

欢迎使用地铁收费系统

记录成功C4B2010:

05112:

扣费成功(余额过低)

S111:

20S4<卡号=4><余额二18>

C3C8509:

05110:

扣费失败(无效路线)

S310:

20S8<卡号二3X余额二85>

Q000:

00120:

查询成功

23:

59<3X09:

05XS3X10:

20XS8X0X失

H0败〉

<4X10:

05XS1X11:

20XS4X2X成

功〉

〈历史消费记录〉卡号:

4卡类别:

老年卡

进站时间:

10:

05进站名称:

S1出站时

间:

11:

20出站名称:

S4费用:

2

卡号:

4卡类别:

老年卡进站时间:

10:

05进站名称:

S1出站时间:

11:

20出站名称:

S4费用:

2

写文件时,每个字段后用英文半角空格分隔分开。

输出到文件时需要遵从上面功能说明的第2、3条约束。

SubwayCharge.txt以覆盖方式写入,系统初始化时清空.

(写日志文件作为附加功能,学员选做,请在完成其他功能后再做)

2015-3-24华为机密,未经许可不得扩散第7页,共10页

HUAWEI

地铁收费系统_0级内部公开

2.5注销票卡(本功能作为附加功能,学员选做,请在完成其他功能

后再做)

命令格式:

d卡号

功能说明:

1、注销指定票卡的消费记录,输出:

122:

票卡注销成功

〈卡号二,〉〈余额二0>

2、如果卡号为0,则注销所有票卡,输出:

122:

票卡注销成功

3、〈卡号二0>〈余额二0>

4、注销后的票卡不能再进行请求扣费、扣费日志查询及再次注销操作,如有操作,输

出:

E22:

操作失败,此票卡已经注销;

5>注销时,关于此票卡的历史消费信息(扣费历史记录,扣费记录)需要删除(不需

要删除SubwayCharge.txt中的记录)。

注销后的票卡需要在系统重新初始化后

能再次使用。

编号用例标题测试步骤预期输出

1注销票卡后再R100:

欢迎使用地铁收费系统

次扣费失败C4B2010:

05112:

扣费成功(余额过低)

S111:

20S4〈卡号二4>〈余额二18>

D4122:

票卡注销成功

C4B2012:

05〈卡号二4>〈余额二0>

S113:

20S4E22:

操作失败,此票卡已经注销

3附录:

3.1命令汇总

命令命令格式说明

r/Rr程序初始化(程序复位)c/Cc卡号卡类型卡扣费前余请求扣费

额进站时间进站站点名称

出站时间出站站点名称

q/QQ卡号查询起始时间查询查询扣费日志

终止时间

h/Hh卡号查询票卡消费历史记录d/DD卡号注销票卡

2015-3-24华为机密,未经许可不得扩散第8页,共10页

HWAWEI

地铁收费系统_0级内部公开

3.2返回码汇总

返回码描述说明

100:

欢迎使用地铁收费系统(考生不使用该返回码)r/R命令程序复位时,

输出该返回码

110:

扣费失败(无效路线)c/C请求扣费操作,计算进出站点里程失败时,

输出该返回码

Ill:

扣费成功c/C请求扣费操作正常成功时,输出该返回码112:

扣费成功(余

额过低)c/C请求扣费操作正常成功,但扣费后余额小于

20元时,输出该返回码

113:

扣费失败(余额不足)c/C请求扣费操作,出现不够扣费时,输出该返

回码

120:

查询成功(考生不直接使用该返回码)查询日志成功,输

出日志记录时,输出该返回码122:

票卡注销成功d/D注销票卡成功,输出该

返回码E01:

非法命令(考生不使用该返回码)命令格式错误,或单参

数非法时,系统自动输出该返回码E02:

参数错误(时间关系错误)c/C/q/Q命令多个参数间出现逻辑关系错误时,

输出该返回码

E21:

查询失败(无相应记录)q/Q查询日志或者h/H查询历史消费信息为空

时,输出该返回码

E22:

操作失败,此票卡已经注销c/C/q/Q/h/H/d/D命令操作时,如果票卡已经

注销,输出该返回码

E99:

程序内部错误返回E99

3.3基本用例

编号用例标题测试步骤预期输出1程序复位R100:

欢迎使用地铁收费系

统2请求扣费命令参C9C2012:

05SIE02:

参数错误(时间关系错误)

数非法11:

20S4

3无效线路,扣费C3C8509:

05S3110:

扣费失败(无效路线)

失败10:

20S8〈卡号二3>〈余额二83>4正常扣费成功C1A307:

00S4Ill:

扣费成功

08:

25S3〈卡号二1>〈余额二0>

5正常扣费成功,C4B2010:

05SI112:

扣费成功(余额过低)

卡内余额偏低11:

20S4〈卡号二4X余额=18>6余额不足,扣费C4B1

15:

00SI113:

扣费失败(余额不足)

失败15:

55S4<卡号二4><余额二1>

7査询日志命令参Q020:

0017:

30E02:

参数错误(时间关系错误)2015-3-24

华为机密,未经许可不得扩散第9页,共10页

HWAWEI

地铁收费系统_0级内部公开

数非法

8查询日志成功R100:

欢迎使用地铁收费系统

C4B2010:

05SI112:

扣费成功(余额过低)

11:

20S4〈卡号二4>〈余额二18>

C3C8509:

05S3110:

扣费失败(无效路线)

10:

20S8〈卡号二3><余额二85>

Q000:

0023:

59120:

查询成功

H0<3X09:

05XS3X10:

20XS8X0X失

败》

<4X10:

05XS1X11:

20XS4X2X成

功〉

〈历史消费记录〉卡号:

4卡类别:

老年卡

进站时间:

10:

05进站名称:

S1出站时

间:

11:

20出站名称:

S4费用:

29无日志记录,查R100:

欢迎使用地铁收费系统询失败Q000:

0023:

59E21:

查询失败(无相应记录)10注销票卡成功、R100:

欢迎使用地铁收费系统再次操作此票卡C4B2010:

05SI112:

扣费成功(余额过低)失败11:

20S4〈卡号二4X余额二18>

D4122:

票卡注销成功

C4B2012:

05S1〈卡号二4>〈余额二0>

13:

20S4E22:

操作失败,此票卡已经注销

3.4API说明

1、VC工程SubwayCharge.rar中包括:

\lib\SocketApi.lib:

是一个LIB库文件,其中实现了对外通信接口,

考生不涉及使用,考试系统使用,不能删除;

\lib\SubwayChargeApi.lib:

是一个LIB库文件,其中实现了对命令

输入和操作输出等公共功能的一些封装;

\lib\ExamApi.lib:

是一个LIB库文件,其中实现了对自动化阅卷功能

的一些封装;

\src\api.h:

头文件,定义了考生可能用到的的宏、枚举、结构、函数声

明;

\src\SubwayCharge.h:

头文件,定义了考生可能用到的的宏、枚举、

结构,以及需要考生实现的接口函数声明。

考生可以向其中添加自己的定义。

具体要求请看函数注释。

\src\SubwayCharge.cpp:

源码文件,提供了需要考生实现的接口函数

框架,这些函数是空白的,需要由考生实现。

其他文件是VC工程自行产生的,考生不必关注。

更详细的定义请参阅VC工程。

2015-3-24华为机密,未经许可不得扩散第10页,共10页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1