0

下面显示的所有内容都是纯伪代码来说明我的问题。

我的代码具有以下数据结构:

// Used to define the ORDERS a customer has placed
List<Orders> myOrders;
Orders
{
  String name
  double quantity
  String location   // there are only 2 possible locations
}

// Used to define the ITEMS we have available
Item
{
  String name
  List<Parts> parts
}

// Used to define the PARTS to make an ITEM
Parts
{
  String name
  double quantity
}

一般故障似乎很好而且很清楚,但是客户要求是我遇到问题的地方,我不确定如何最好地解决问题......(注意 - 我知道使用 NAME 而不是 ID 是不好关联的 - 但这是一个遗留系统)。

我需要生成以下内容: - 每个位置所需的所有零件列表(只有两个可能)和订单定义的实际数量 - 将其显示在要打印的屏幕上!显然,您可以在同一位置为相同的零件订购多个订单,并且应该将它们加在一起以获得总数。

所以我需要做的是: - 接受每个订单并找到项目 - 接受每个项目并找到零件 - 每个零件定义其位置(来自订单)并乘以数量(来自订单),这就是零件的数量这个位置

最终结果应该是这样的(表格网格表格标题)

    Item    Part    QuantityLocation1   QuantityLocation2
    itm1      A         1                    0
              B         4                    2
    itm2      C         0                    5

问题是很明显 PART 类没有 LOCATION 这样的概念......

有人有什么建议吗?我现在能看到的唯一解决方案似乎很糟糕......创建一个新类(如 PartswithLocation),将位置添加到它,然后使用此 PartsWithLocation 重新创建所有 ITEM 对象(已经存在),然后我可以做一些魔术ORDER by ORDER 查找零件并根据位置和数量相乘。最终结果是一个新列表,然后我可以在网格或其他东西(WPF)中显示它......但是这听起来很难看......

这纯粹是一个与设计相关的问题,我不是在寻找源代码,只是关于如何更好地解决我的问题的一些想法。感谢您的时间和帮助,

4

1 回答 1

1

如果您正确地动态操作数据,您应该不需要比现在拥有的更多的东西。

在伪代码中,您需要执行以下操作:

foreach(order in orders)
{
   order.partlist = GetItem(order.name).parts; // partlist is a list of Part objects, not stored anywhere.
}
foreach(location in locations)
{
   foreach(order in GetOrdersAtLocation(location))
   {
      foreach(part in order.parts)
      {
         location.partlist += { part.name, part.quantity * order.quantity }; // partlist is a list of parts and quantities, to be displayed.
      }
   }
 }

我会在 LINQ 中执行此操作,但是由于您要求的是设计答案而不是代码,所以这或多或少是它会解开的内容。

于 2013-01-15T22:33:56.063 回答