2

我将做一个项目任务作为 C# 编程课程的最后一部分,我选择做一个媒体库来存储 DVD 电影收藏的信息。我需要一些建议是关于如何保存这些信息,因为该任务应该通过使用简单的文本文件而不是更好的数据库来解决。

所以,这是保存这些信息的最佳方式,以便能够添加、编辑和允许搜索标题和演员,还可以按类型排序,以提及我对这个程序的一些想法。

我是否应该通过在文件末尾为每部电影连续添加标题、年份、播放时间、导演、演员 1、演员 2、演员 3、流派、等级、评论来保存信息?我可以在文件中搜索还是应该以某种方式首先将其全部读入一个数组,然后执行 serach 并可能再次编辑并保存完整的文件?

还是像这样使用 XML 更好:

<movie_collections>
<movie>
<title=Tron Legacy"></title>
<year=2010></year>
<playtime=120></playtime>
etc.
</movie>
</movie_collections>

如果我使用 XML,我可以搜索标题并加载或编辑该部分吗?还有比这些更好的选择吗?

4

4 回答 4

3

您可以将数据存储在 XML 文件中。XML 文件可以存储类似于数据库表的数据。您可以添加多条记录、分层数据等...您可以使用LINQ to XML轻松查询数据。

如果你不想使用LINQ to XML,你可以使用如此典型XMLDocument的来处理 XML 数据。

于 2012-05-14T13:14:56.003 回答
3

也许你的水平太低了。该文件实际上只是为了持久性,而不是将您自己的数据库实现为文件。

只需实现您所追求的对象并将其序列化为 imo。

public class MovieCollections
{
    private ICollection<Movie> Movies {get; set;}
    // etc...
}

public class Movie
{
    public string Title {get; private set;}
    public int PlayTime {get; private set;}
    public DateTime ReleaseDate {get; private set;}
}

序列化 MovieCollections 的实例。可能保留MovieCollections为 Singleton 实例,因为您只需要一个集合。

于 2012-05-14T13:16:03.210 回答
1

正如@M_Affifi 建议的那样,通过驻留在内存中的对象(例如,MovieCollections 类的实例和 Movie 类的实例)、XML 文件,考虑您与数据的所有交互(例如,排序、添加、查找、删除、更新等)仅用于存储对象的状态,因此下次运行应用程序时可以使用该数据。

完成对数据的操作后,只需将其序列化为 XML。序列化只是将您的对象转换为您可以存储或传输的格式的过程,在这种情况下将转换为 XML。看看这个参考,你的序列化需求是非常基本的,所以你只需要几行代码。

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(YourObject.GetType());
      x.Serialize(Console.Out, YourObject)

最后,我建议考虑您的应用程序逻辑。当程序启动时,您可能想要检查您的 Movies.xml 是否存在,如果存在,则“反序列化”它,这意味着将其从 XML 加载到您的对象集合中。如果 XML 文件不存在,则只需开始操作您的对象,完成后选择 Save(Serialize)。如果需要,我可以帮助进行序列化/反序列化过程。

希望这会有所帮助;

于 2012-05-14T13:46:26.693 回答
1

顺便说一句,这似乎是一个非常普遍的问题,也是一个非常常见的家庭作业问题!!

我认为你应该为此谷歌,你会得到更好的项目想法。

这行类似的东西:

1. C# 中使用 Microsoft Access 的简单电影数据库
2.创建电影数据库应用程序
3. imdbapi
& finally
4. SO 的类似帖子

就数据库和 XML 之间的比较而言,我确实向您推荐了一个数据库,因为就此类项目而言,考虑到了 XML 的几个优点。

于 2012-05-14T13:20:04.817 回答