乘车共享应用程序- SDE II。 2 小时(90 分钟编码 + 30 分钟复习)
描述:实现一个具有低于预期功能的拼车应用程序。
特征:
- 该应用程序允许用户共享路线上的行程。
- 用户可以提供拼车(司机)或消费拼车(乘客)。
- 用户可以从具有相同来源和目的地的路线上的多个可用游乐设施中搜索并选择一个。
要求:
应用程序应允许用户入职。
添加用户(用户详细信息)
添加基本用户信息
添加_车辆(车辆_详细信息)
添加用户的车辆详细信息
用户应该能够在包含详细信息的路线上提供拼车服务。
offer_ride(ride_detail)
Ride 将包含车辆、起点、目的地、可用座位等详细信息。 (骑行没有中间停靠点。)
用户可以使用选择策略从多个提供的游乐设施中选择一个游乐设施。 (一个用户只能叫车(仅限 1 人或 2 人))
select_ride(来源,目的地,座位,选择策略)
首选车辆(Activa/Polo/XUV)
最空缺。
系统应该可以结束骑行。一旦没有为该车辆提供的有效行程,用户只能为该车辆提供行程。
end_ride(ride_details)
查找所有用户提供/乘坐的总行程。
print_ride_stats()
奖金问题:
- 如果用户的起点/目的地不是直接可用的,但可以通过多次乘坐,那么应用程序应该输出多次乘坐。 (例如:对于输入:班加罗尔到孟买,输出可以是班加罗尔到果阿和果阿到孟买)
其他注意事项:
- 为演示目的编写驱动程序类。这将在代码和测试用例中的一个地方执行所有命令。
- 不要使用任何数据库或 NoSQL 存储,现在使用内存数据结构。
- 不要为应用程序创建任何 UI。
- 请优先考虑代码编译、执行和完成。
- 首先处理预期的输出,然后添加您自己的有用功能。
期望:
- 确保您有一个有效且可演示的代码。
- 确保代码在功能上是正确的。
- 需要使用适当的抽象、建模和关注点分离。
- 代码应该是模块化的、可读的和可单元测试的。
- 代码应该以最少的更改轻松适应新的需求。
- 需要适当的异常处理。
示例测试用例:
板载 5 个用户
add_user(“Rohan, M, 36”); add_vehicle(“罗汉,斯威夫特,KA-01-12345)
add_user(“Shashank, M, 29”); add_vehicle(“Shashank, Baleno, TS-05-62395)
add_user(“Nandini, F, 29)
add_user(“Shipra, F, 27”) ; add_vehicle(“Shipra”,马球,KA-05-41491); add_vehicle(“Shipra,Activa KA-12-12332”)
add_user(“Gaurav, M, 29)
add_user(“拉胡尔,M,35); add_vehicle(“拉胡尔”,“XUV”,KA-05-1234);
由 3 个用户提供 4 个游乐设施
offer_ride(“Rohan, Origin=Hyderabad, Available Seats=1, Vehicle=Swift, KA-01-12345, Destination= Bangalore”)
offer_ride(“Shipra,起点=班加罗尔,可用座位=1,车辆=Activa KA-12-12332,目的地=迈索尔”)
offer_ride(“Shipra, Origin=Bangalore, Available Seats=2, Vehicle=Polo, KA-05-41491, Destination=Mysore”)
offer_ride(“Shashank, Origin=Hyderabad, Available Seas=2, Vehicle=Baleno, TS-05-62395, Destination=Bangalore”)
offer_ride(“拉胡尔,起点=海得拉巴,可用座位=5,车辆=XUV,KA-05-1234,目的地=班加罗尔”)
offer_ride(“罗汉,起源=班加罗尔,可用座位=1,车辆=雨燕,KA-01-12345,目的地=浦那”)
此调用应该会失败,因为该用户已经为此车辆提供了乘车服务。
为 4 个用户查找游乐设施
select_ride(“Nandini, Origin=Bangalore, Destination=Mysore, Seats=1, Most Vacant”)
2(c) 是所需的输出。
select_ride(“Gaurav, Origin=Bangalore, Destination=Mysore, Seats=1, Preferred Vehicle=Activa”)
2(b) 是期望的输出
select_ride(“Shashank, Origin=Mumbai, Destination=Bangalore, Seats=1, Most Vacant”)
未找到任何游乐设施
select_ride(“Rohan, Origin=Hyderabad, Destination=Bangalore, Seats=1, Preferred Vehicle=Baleno”)
2(d) 是期望的输出
select_ride(“Shashank, Origin=Hyderabad, Destination=Bangalore, Seats=1,Preferred Vehicle=Polo”)
未找到任何游乐设施
结束游乐设施
end_ride(2-a)
end_ride(2-b)
end_ride(2-c)
end_ride(2-d)
按用户查找总乘车次数: 乘车次数:已乘车并已标记为“已结束”的乘车次数 提供的乘车次数:已提供并已标记为“已结束”的乘车次数。注意:即使提供的行程未被任何用户乘坐,也算作提供的行程。
print_ride_stats()
Nandini: 1 已拍摄,0 已提供
罗汉:1 已拿,1 已提供
Shashank: 0 已取, 1 已提供
Gaurav: 1 已获取,0 已提供
拉胡尔: 0 被接受,0 被提供
Shipra: 0 已获取,2 已提供