C++ 事件驱动列车模拟,can';I don’’我好像不太明白

C++ 事件驱动列车模拟,can';I don’’我好像不太明白,c++,inheritance,polymorphism,containers,simulation,C++,Inheritance,Polymorphism,Containers,Simulation,我在这个项目上工作了很长时间,我很难过地说我很快就要放弃它了,因为我不能完全理解它。。每次我尝试编写UML或代码时,我都会陷入困境,我已经被困了将近八个星期。因此,作为最后的手段,我向So寻求帮助。我知道我应该为你们提供一个更完整的解决方案来帮助我,但因为我没有得到任何进一步的东西,我将在这个问题上进一步展示,所以没有什么可以展示的 无论如何。。 任务是创建事件驱动的列车模拟。 我先列出要求 这些要求是: 车辆 所有车辆都有唯一的ID号 一个重要的特性是一个虚拟函数,它可以提供关于给定车辆的详

我在这个项目上工作了很长时间,我很难过地说我很快就要放弃它了,因为我不能完全理解它。。每次我尝试编写UML或代码时,我都会陷入困境,我已经被困了将近八个星期。因此,作为最后的手段,我向So寻求帮助。我知道我应该为你们提供一个更完整的解决方案来帮助我,但因为我没有得到任何进一步的东西,我将在这个问题上进一步展示,所以没有什么可以展示的

无论如何。。 任务是创建事件驱动的列车模拟。 我先列出要求

这些要求是: 车辆
  • 所有车辆都有唯一的ID号
  • 一个重要的特性是一个虚拟函数,它可以提供关于给定车辆的详细信息的字符串表示

  • 不同类型的车辆及其性能如下:

  • 机车
    • 内燃机车[最高速度和油耗]
    • 电力机车[最高速度和效果]
  • 客车
    • 坐车[座位数量和Wifi是/否]
    • 卧铺车[床位数量]
  • 货车
    • 敞篷货车[装载能力和装载空间]
    • 封闭式货车[容量]

  • 当涉及到车辆时,我们可以说明给定的车辆在车站车辆池或列车中。但不应移动任何车辆物体。所有对象都是在启动时动态创建的(车辆数据是从某个文件中读取的),在模拟过程中,您只需通过移动指针来转移车辆的所有权

训练
  • 从一个城镇到另一个城镇的每一列火车,或者更确切地说是火车连接,都有一个唯一的火车ID

    该ID是一个逻辑ID,具有给定ID的列车每天以相同的主要组成在相同的时间从相同的出发城市运行到相同的目的地。即,当涉及车辆类型和编号时,具有给定ID的列车始终具有相同的车辆集,但当涉及实际车辆时,则不具有相同的车辆集

  • 列车由不同类型的车辆组成。一列火车也可以由相同类型的车辆组成,例如,859号火车由两辆电力机车和三辆卧铺车组成

  • 列车在列车始发站集合

    根据出发站的可用车辆,车辆每天都有所不同。 如果列车无法组装,则会延迟到可以组装为止

  • 每列火车经过六个不同的州

    未组装-列车存在,但仅作为逻辑概念,没有连接机车/车辆
    还没有准备好-火车正在当前车站组装,车厢正在连接
    准备就绪-列车现在准备离开车站
    跑步-它在移动中,朝着目的地前进
    到达-列车现在已到达目的地
    完成-列车正在分离,车辆现在进入车站车辆池,车辆现在可以用于车站上的其他列车

  • 每个站点都有一个可用车辆池,提示我们站点有一个用于车辆指针的容器作为数据成员
  • 如果列车不能在车站组装,因为车站车辆池没有列车所需的车辆,列车将被延迟,列车仍将保持“未组装”状态
模拟
  • 简言之,模拟应该在一个时间点到另一个时间点之间进行,比如从08.00到16.00。在模拟过程中,用户始终可以访问模拟中任何给定车辆、模拟中任何列车或火车站的相关信息。在模拟开始时,最多读取三个文件,并在这三个文件中存储有关车辆/列车/车站的所有信息
  • 文件中的启动信息不能包含列车的车辆ID,只能包含其类型(如“柴油机车”)。一旦列车组装完成(从“未准备就绪”状态移动到“准备就绪”状态),将确定准确的车辆ID
  • 用户以10分钟的步幅逐步完成模拟,模拟相应地更新所有状态/位置/池等


我知道一个经典的方法是扫描描述,找到可能是类的名词和可能是操作的动词。快速浏览给出了一些中心类:车辆、火车、车站、连接、时刻表等。但我在完成这项任务时完全停了下来。我什么事也没做,开始松懈了。我已经写了很多UML图来帮助我指导编码,并且我已经用不同类型的实现编写了很多程序,我几乎要放弃了。非常感谢您的帮助

您拥有的比用户需求更接近系统需求。这可能是有问题的,因为前者是你如何解决问题的,后者是你试图解决的问题。如果不清楚,您的解决方案将不稳定。比如说,

如果列车不能在车站组装,因为车站的车辆 pool没有火车所需的车辆,火车会晚点 列车仍将保持“未装配”状态

这是一个系统要求。什么用户需求导致必须在车站组装列车,用户需要做什么

我的猜测是,你对这个复杂问题的认识太快了。清楚地定义两个简单的目标,并用一些用户需求对其进行详细说明,并保持