2012-08-11 89 views
0

我是一個自學成才的開始程序員。我設計了一個賽馬項目,在每個比賽中都會讀入一匹有關每匹馬的信息的文件,其中包括有關該馬前10場比賽的信息。然後將信息輸出爲可讀格式,類似於賽馬形式或程序。如何正確設置我的程序的類設計(C#.Net)

例如,8月10日週六在丘吉爾唐斯舉行的比賽中,共有9場比賽和8匹馬。所以,當天的csv文件將包含72匹馬。每匹馬也會有最近10場比賽的統計數據。

我目前所做的是在csv文件中讀入列表。然後,我將列表中包含的信息轉移到馬物品列表中,馬物品基本上存儲了每匹馬的所有信息。

我覺得我從使用類來存儲所有信息的唯一好處是,操作數據更容易,因爲我不必記住索引。

我想知道是否有更好的方法來設計這個程序?任何見解?

+0

設計的一個關鍵要素是你需要知道你的程序將做什麼。如果你所做的只是將文本文件中的數據讀入內存中,那麼存儲它的方式並不重要。程序的用戶應該如何與數據交互如果只是計算信息並返回結果,它將執行什麼樣的計算?這些都會幫助你確定你的設計。由於我們不知道這一點,所以我們很難說。 – 2012-08-11 01:20:04

+0

它讀入一個文件,計算過去所有賽馬的速度等級,然後顯示速度等級以及所有其他未計算的信息,如raceDate,finalTime,racePurse,finishPosition等。我正在使用Crystal Reports顯示信息。用戶不會與數據交互,它是隻讀的。 – user1230593 2012-08-11 21:38:22

回答

4

如果您想想這裏發生的事情,您可以在特定的比賽中參加馬匹,比賽和特定馬匹的表現。

所以,如果你允許你的類設計遵循這一點,你可能有這樣的事情:

public class Horse 
{ 
    public string Name { get; set; } 
    public Gender Gender { get; set; } 
    public Breed Breed { get; set; } 
    public DateTime WhenBorn { get; set; } 
    // etc... 

    public TimeSpan GetAge() 
    { 
     return DateTime.Now - WhenBorn; 
    } 
} 

public class Race 
{ 
    public string Venue { get; set; } 
    public DateTime WhenStarted { get; set; } 
    public DateTime WhenFinished { get; set; } 
    // etc... 
} 

public class HorseRace 
{ 
    public Race Race { get; set; } 
    public Horse Horse { get; set; } 
    public int? PlaceFinished { get; set; } // null if did not finish 
    public string JockeyName { get; set; } 
    public double HorseWeighIn { get; set; } // weight of horse at time of race 
    public double JockeyWeighIn { get; set; } // weight of jockey at time of race 
    // etc... 
} 

public enum Gender 
{ 
    Colt, 
    Filly 
} 

public enum Breed 
{ 
    // fill in breeds here 
} 

一旦你有一個一流的設計,你喜歡,你可以開始思考如何將數據存儲到讓它最容易進入你的課堂。 Horses.csv,Races.csv,HorseRaces.csv,而不是一個巨大的csv文件,有很多重複的數據,你可以爲每個類有一個單獨的文件。最終,您可能希望從CSV升級到小型的基於文件的數據庫。最終,你想有三個列表:HorsesRacesHorseRaces。要顯示這些列表,您可以遍歷您的HorseRaces,並輕鬆獲取您需要的所有數據,只需使用HorseRace的屬性以及後續的屬性RaceHorse。例如,horseRace.Horse.Name