我将把项目任务作为C#编程课程的最后一部分,我选择了一个媒体库来存储DVD电影馆藏的信息。我需要一些建议是关于如何保存这些信息,因为任务应该通过使用简单的文本文件而不是更好的数据库来解决。
所以,这是保存这些信息的最佳方式,以便能够添加,编辑和允许搜索标题和演员,还可以在类型之后进行排序,以提及我为此计划提供的一些内容。
我是否应该只保存信息,只需在文件末尾添加每个电影lika的标题,年份,播放时间,导演,演员1,演员2,演员3,流派,成绩,评论?我可以在文件中搜索,还是应该以某种方式首先将其全部读入数组,然后再进行搜索并编辑并再次保存完整的文件?
或者使用这样的XML更好:
<movie_collections>
<movie>
<title=Tron Legacy"></title>
<year=2010></year>
<playtime=120></playtime>
etc.
</movie>
</movie_collections>
如果我使用XML,我可以搜索标题并加载或编辑该部分吗?有没有比这些更好的选择?
答案 0 :(得分:3)
您可以将数据存储在XML文件中。 XML文件可以存储类似于数据库表的数据。您可以添加多个记录,分层数据等...您可以使用 LINQ to XML 轻松查询数据。
如果您不想使用LINQ to XML
,您可以使用如此典型的XMLDocument
来处理XML数据。
答案 1 :(得分: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实例,因为您只需要一个集合。
答案 2 :(得分:1)
顺便说一下,这似乎是一个非常普遍的问题&amp;一个相当常见的家庭作业问题!!
我认为你应该谷歌这样做,你会得到更好的项目创意。
这方面有类似的东西:
1。Simple Movie Database in C# using Microsoft Access
2. Create a Movie Database Application
3. imdbapi
&安培;终于
4. SO's similar post
就数据库和数据库之间的比较而言XML是值得关注的,我确实建议你使用数据库,因为考虑到这种类型的项目,有几个关于XML的专业人员。
答案 3 :(得分:1)
正如@M_Affifi建议的那样,通过驻留在内存中的对象来考虑与数据的所有交互(例如排序,添加,查找,删除,更新等)(例如,MovieCollections类的实例和XML类的实例一样,XML文件仅用于存储对象的状态,因此下次运行应用程序时可以使用该数据。
完成操作数据后,只需将其序列化为XML即可。序列化只是将对象转换为可以存储或传输的格式的过程,在这种情况下将转换为XML。看一下this reference,您的序列化需求非常基础,所以您只需要几行代码。
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(YourObject.GetType());
x.Serialize(Console.Out, YourObject)
最后,我建议考虑一下你的应用程序逻辑。当程序启动时,您可能想要检查您的Movies.xml是否存在,如果存在,然后“反序列化”它,这意味着将它从XML加载到您的对象集合。如果XML文件不存在,则只需开始操作对象,完成后再选择Save(Serialize)。如果需要,我可以帮助进行序列化/反序列化过程。
希望这有帮助 ;