0

我是一个自学成才的初级程序员。我设计了一个赛马程序,它读取一个文件,该文件包含每场比赛中每匹马的信息,包括该马前 10 场比赛的信息。然后将信息输出为可读的格式,有点像赛马形式或程序。

例如,8 月 10 日星期六在 Churchill Downs 有 9 场比赛,每场比赛有 8 匹马。因此,当天的 csv 文件将包含 72 匹马。这些马中的每一匹也会有他们最近 10 场比赛的统计数据。

我目前所做的是将 csv 文件读取到列表中。然后我将列表中包含的信息转移到马对象列表中,该列表基本上存储了每匹马的所有信息。

我觉得使用类来存储所有信息的唯一好处是更容易操作这些数据,因为我不必记住索引。

我想知道是否有更好的方法来设计这个程序?有什么见解吗?

4

1 回答 1

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
}

一旦你有了一个你喜欢的类设计,你就可以开始考虑如何存储你的数据,以便更容易地将它放入你的类中。您可以为每个类创建一个单独的文件,而不是一个包含大量重复数据的巨型 csv 文件,例如 Horses.csv、Races.csv、HorseRaces.csv。最终,您可能希望从 CSV 升级到基于文件的小型数据库。

最终,您希望拥有三个列表:HorsesRacesHorseRaces。要显示这些列表,您可以遍历您的HorseRaces,并轻松获取您需要的所有数据,只需使用 和 的属性,HorseRace然后使用Race和的属性Horse。例如,horseRace.Horse.Name

于 2012-08-11T01:01:17.600 回答