地铁收费管理系统
考试提醒
请仔细阅读规格文档,理解规格文档估计需要花费10~30分钟来理解,请务必看清楚要求再动手,试题包括规格描述和代码框架。
C/C++编译环境统一为Visual C++ 。如果你喜欢并熟悉Source Insight或其它工具,也可以使用Source Insight或其它工具进行开发,但考生必须保证提交的代码要在指定编译环境下编译通过,否则无法阅卷。
如果考题与日常工作/生活接近,请考生以规格为准,不要类比相似案例。
出于自动化测试的需要,程序中不要使用原始的I/O输入输出(键盘输入、屏幕输出)作为正式输入输出,我们会提供基于Socket的输入输出API接口,考生必须使用Socket API进行正式输入输出操作。调试输出的方式不受此限制。
考试的工程已经提供Socket通信功能,并提供输入/输出的API,考生不需要实现。
1 总体说明
考生需要模拟实现一个简单的地铁收费系统,实现地铁交通卡或单程票的扣费、余额提示、日志记录和日志查询等功能。
系统预置有一张“相邻站点间里程表”,作为计算基本票价的依据。其结构和内容如下:
站点1
站点2
里程(千米)
站点名
站点名
系统已设置值
站点名
站点名
系统已设置值
站点名
站点名
系统已设置值
。。。。。。
。。。。。。
。。。。。。
站点名
站点名
系统已设置值
备注:
只考虑1条地铁线路,站点关系示意:站点---站点---站点---。。。。。。---站点---站点,无分叉,无环路,任何2站点之间的路径是唯一的,不存在多条路径的情况。
该线路上地铁双向运行。乘客可以从任何站点进站,也可以从任何站点出站。
表中无重复记录,一对相邻站点在表中只存在一条记录,比如:S2与S4之间的记录只有:S2->S4或S4->S2其中的任意1条,而不会同时存在2条。
考生可以直接使用考试系统提供的根据该表计算任意2站点间最短里程的接口( API说明)。
地铁收费系统规则
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折作为
地铁收费管理系统 来自淘豆网m.daumloan.com转载请标明出处.