2013-07-20 77 views
0

我正在開展的項目是一個學校作業,它是模擬客戶訪問餐廳並按照服務順序離開的客戶。我有一個客戶隊列。在該隊列中,我爲正在服務的客戶(每次最多7個)填充隊列,並排隊等待客戶(一次最多1個)。當客戶對象從服務隊列中刪除時,我想從等待隊列中自動添加一個。什麼,我試圖一個片段是如下:如何自動將一個對象從一個隊列傳遞到另一個隊列

 while (Cafe.CustomerServed <= 40) 
     { 
      customer = customers.Dequeue(); 

      if (customer.ArrivalTime >= Cafe.TimeElapsed) 
      { 
       do { } 
       while (customer.ArrivalTime > Cafe.TimeElapsed); 
      } 
      else 
      { 
       if (waitingList.Count() < 12) 
       { 
        if (eatingList.Count() < 7) 
        { 
         eatingList.Enqueue(customer); 
         //Monitor. 
        } 
        else 
        { 
         waitingList.Count(); 
        } 
       } 
      } 
      //END SECTION 
      if (customer.WasServed()) 
      { 
       Cafe.CustomerServed++; 
      } 
     } 
+0

想想如何用繼承來做到這一點。對於C#,當一個類從基類繼承時(例如隊列),它仍然是一個Queue,只是一個專門的類。所以你可以將它初始化爲Queue waitingQueue = new WaitingQueue()。我會讓你弄清楚其餘的。 – nerdybeardo

回答

0

我會做到以下幾點:

我的客戶將有枚舉類型的國有資產。

public enum CustomerState 
    { 
     IsWaiting = 1, 
     HasOrdered = 2, 
     IsServerd = 3, 
     LeftShop = 4, 
     //and so on.. what ever fits your need 
    } 

現在創建你所需要的任何公共列表屬性,在吸氣查詢所有客戶的完整列表。

public List<Customers> AllCustomers() {get; set;} 
public List<Customers> WaitingCustomers() 
{ 
    get 
    { 
     return AllCustomers.Where(x => x.Sate == CustomerState.IsWaiting); 
    } 
} 
public List<Customers> OrderedCustomers() 
{ 
    get 
    { 
     return AllCustomers.Where(x => x.Sate == CustomerState.HasOrdered); 
    } 
} 
//and so on... 

現在只是單純地更新客戶國家財產和列表WaitingCustomers會調用列表屬性的get UPTODATE每次。

如果在WPF環境中使用此代碼,則可以實現INotifiyPropertyChanged,以便在客戶狀態發生更改時,對列表的綁定將得到更新。

相關問題