2013-01-15 22 views
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 

的問題是,該部件分類明顯沒有這樣的概念位置... 。

任何人有任何建議嗎? 我現在可以看到的唯一解決方案似乎很可怕...創建一個新類(如PartswithLocation),將位置添加到它,然後使用此PartsWithLocation重新創建所有ITEM對象(已存在),然後我可以執行一些操作ORDER通過ORDER查找零件並根據位置進行數量乘法。最終的結果是一個新的列表,然後我可以顯示在一個網格或東西(WPF)...但是這個人聽起來很難看...

這純粹是一個設計相關的問題,我不是在尋找源代碼只是關於如何更好地解決我的問題的一些想法。 感謝您的寶貴時間和幫助,

+0

Orders中的'name'字段與'Item'中的'name'字段相同嗎? – Bobson

+0

是的,Order.name和Item.name相等 – JSchwartz

+0

'Parts.name'是否也對應於'Orders'?否則,你根本無法按位置分解它,因爲你沒有跟蹤它。我有點困惑。 – Bobson

回答

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,但既然你問了設計的答案,而不是代碼,這是更多或更少什麼將解開。

+0

您在所有這些中缺少Item.Name ...但通常這是我認爲....謝謝... – JSchwartz

+0

@JSchwartz - 這就是'GetItem()'做的。它會根據傳入的名稱返回一個「Item」。 – Bobson

+0

我明白你的意思,但在這種情況下,我們實際向用戶展示了什麼?結果存儲在哪裏? – JSchwartz

相關問題