地铁收费管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

地铁收费管理系统

考试提醒

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

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

●C/C++编译环境统一为Visual C++ 6.0版本。如果你喜欢并熟悉Source

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

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

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

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

使用Socket API进行正式输入输出操作。调试输出的方式不受此限制。

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

现。

1 总体说明

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

1.1相邻站点间里程表

系统预置有一张“相邻站点间里程表”,作为计算基本票价的依据。其结构和内容如下:站点1 站点2 里程(千米)

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

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

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

站点名站点名系统已设置值备注:

✓只考虑1条地铁线路,站点关系示意:站点---站点---站点---。。。。。。---站点---站点,无分叉,无环路,任何2站点之间的路径是唯一的,不存在多条路径的

情况。

✓该线路上地铁双向运行。乘客可以从任何站点进站,也可以从任何站点出站。

✓表中无重复记录,一对相邻站点在表中只存在一条记录,比如:S2与S4之间的记录只有:S2->S4或S4->S2其中的任意1条,而不会同时存在2条。

✓考生可以直接使用考试系统提供的根据该表计算任意2站点间最短里程的接口(接口参见3.4 API说明)。

1.2 地铁收费系统规则

1、票价分为基本票价和扣费票价。扣费票价是在基本票价的基础上,根据票卡类型、时间段进行特殊计算得到的(也有可能等于基本票价),是扣费操作时需要从卡上扣除的金额。

2、基本票价计算规则:按进站点与出站点之间的最短里程分级计算:

✓3千米(包含3千米,但不包括0)以内:2元。

✓3千米至 5千米(包含5千米):3元。

✓5千米至 10千米(包含10千米):4元。

✓10千米以上:5元。

struct distcost

{

Char s1[];

Char s2[];

Int distance;

};

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

(1)小于等于30分钟:

单程票:票卡面值作为扣费票价;

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

(2)大于30分钟:

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

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

4、扣费票价计算规则1:按照各种票卡的类型计算:

✓普通卡(C):正常时间段以基本票价作为扣费票价;特殊时间段收费参见“5、扣费票价计算规则2”。

✓老年卡(B):正常时间段以基本票价的9折作为扣费票价(如出现小数,则向下取整);特殊时间段收费参见“5、扣费票价计算规则2”。

✓单程票(A):即一次性车票,任何时间段不享受任何优惠,直接以(票卡面值,基本票价)中“最大值”作为扣费票价。

5、扣费票价计算规则2(不涉及单程票):按照进站时间的不同区间计算:

✓进站时间为[7:00,9:00)、[16:30,18:30)时,无任何优惠,所有类型的交通卡(单程票除外)以基本票价作为扣费票价。

✓进站时间为[10:00,11:00)、[15:00,16:00)时,所有类型的交通卡(单程票除外)以基本票价的5折作为扣费票价(如出现小数,则向下取整)。

1.3 约束

✓考生严格按操作说明的功能项实现,不用考虑其他异常(比如:单参数的合法性,不同操作之间的逻辑关联性,等等)。

✓系统不考虑跨天的情况,只需要考虑同一天,即00:00~23:59地铁全天运行时间范围内的功能。

✓所用的命令字和卡类型参数中的字母不区分大小写;站名中若出现小写字母,考试框架自动将其转换成大写字母。

2 操作说明

采用在考试系统提供的SocketTool工具中输入命令串方式与系统进行操作交互,命令字是该命令串的第一个符号。命令行的格式:命令字[空格]参数1...[空格]参数n 命令字与第一个参数之间、参数与参数之间,均使用英文半角空格分隔,单个参数内无空格。

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

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

卡号卡号整数0 ~ 9,0为通

配卡号,只在查

询(q)命令中可

用。

5

卡类型票卡的类型:

单程票/老年卡/

普通卡字符A(a),B(b),

C(c)

B,b

金额(元) 卡扣费前余额

卡扣费后余额

扣费金额

(遇小数向下取

整)

整数0 ~ 999 888

时间进站时间

出站时间

查询起始时间

查询终止时间HH:MM 00:00~23:59 注意命令输入格式:

合法:09:05

非法:9:05、09:5、9:5

站点名称进站站点名称

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

S1~S6

S5

2.1初始化

命令格式:r

相关文档
最新文档