C# 需要一些项目建议吗

C# 需要一些项目建议吗,c#,xml,C#,Xml,我将做一个项目任务,作为C#编程课程的最后一部分,我选择了做一个媒体库来存储DVD电影收藏的信息。我需要一些建议是关于如何保存这些信息,因为任务应该通过使用简单的文本文件而不是更好的数据库来解决 那么,这是保存这些信息的最佳方式,可以添加、编辑和允许搜索标题和演员,也可以按体裁排序,以提及我在这个节目中的一些idé 我是否应该通过在文件末尾添加每部电影的标题、年份、播放时间、导演、演员1、演员2、演员3、类型、等级、评论来保存信息?我可以在文件中搜索吗?或者,我应该以某种方式,首先将其全部读取到

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

那么,这是保存这些信息的最佳方式,可以添加、编辑和允许搜索标题和演员,也可以按体裁排序,以提及我在这个节目中的一些idé

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

还是像这样使用XML更好:



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


如果您不想使用
linqtoxml
,那么您可以使用非常典型的
XMLDocument
来处理XML数据。

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

只需实现您所追求的对象并将其序列化即可

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;}
}
公共类电影集
{
私人ICollection电影{get;set;}
//等等。。。
}
公映
{
公共字符串标题{get;private set;}
public int PlayTime{get;private set;}
public DateTime ReleaseDate{get;private set;}
}
序列化MovieCollections的实例。
保留
MovieCollections
可能作为一个单一实例,因为您只需要一个集合。

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

我想你应该用谷歌搜索一下,你会得到更好的项目创意

类似于这一点:

一,
2.
3.
&最后
4.


就数据库和XML之间的比较而言,我确实建议您使用数据库,因为就这类项目而言,它比XML更具优势。

正如@M_Affi所建议的,请考虑通过驻留在内存中的对象与数据进行的所有交互(例如排序、添加、查找、删除、更新等)(例如,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文件不存在,则只需开始操作对象,并在完成后提供保存(序列化)选项。如果需要,我可以帮助完成序列化/反序列化过程

希望这是有帮助的
编写XML模式更好,因为XMLDocument类会在异常中给您错误消息,所以您不必自己编写。文本文件非常容易解析,但更难保护。为什么没有数据库?这是任务的一部分吗?不需要-1这个。这是一个从寻找become是一个更好的程序员。数据库不是任务的一部分。我知道这更好,因为我以前使用过MySQL和PHP。但是使用SQLite数据库会很有趣。如果你能使用嵌入式数据库,看看RavenDB。听起来很有意思,但我不知道课程中没有的LINQ,sice。典型的XMLDocument,是吗正如我在问题中所写的?@3D Krativ:XMLDocument是CLS中可用的一个类,您可以使用它来管理XML数据。例如:您可以将XML文件数据加载到此类对象,然后对其进行查询。嗯,我没有使用serialize,因此这可能有点复杂。我是否应该保存类MovieCollection并使用属性准备好了吗?你能给出你的答案吗?