C# C更新文本文件中的记录

C# C更新文本文件中的记录,c#,C#,我正在做我在C上的uni项目。它要求我在C控制台中创建一个学生管理系统。我必须使用文本文件来保存数据。 我可以在文本文件中添加数据和检索数据,但无法更新任何学生记录。我的问题是如何更新文本文件中的特定学生记录?例如,我的程序将要求用户输入他想要更新的学生,而不是程序应该获取该学生的完整记录。程序再次要求用户选择要更新的字段。更新字段后,应更新记录。我可以建议一些简单/明显但不是最有效的方法 对于家庭作业,它没有任何性能问题阻止您将所有学生的数据加载到一个大数组中,然后更新该数组。完成所有操作后,

我正在做我在C上的uni项目。它要求我在C控制台中创建一个学生管理系统。我必须使用文本文件来保存数据。
我可以在文本文件中添加数据和检索数据,但无法更新任何学生记录。我的问题是如何更新文本文件中的特定学生记录?例如,我的程序将要求用户输入他想要更新的学生,而不是程序应该获取该学生的完整记录。程序再次要求用户选择要更新的字段。更新字段后,应更新记录。

我可以建议一些简单/明显但不是最有效的方法

对于家庭作业,它没有任何性能问题阻止您将所有学生的数据加载到一个大数组中,然后更新该数组。完成所有操作后,用户选择退出,您可以保存所有数据

更困难的方法是加载student并更新student对象,然后将其写回文件末尾。也不要忘记删除旧的行。您可以将每个学生存储在一行中


另一个更难的方法是随机访问文件,要求严格的文本数据格式

如果你不需要做文本输出,但是使用一个可手工编辑的文件,你应该大量考虑创建一个XML可序列化的类,比如实现一个学生可序列化的列表的数据。然后,您只需使用Xml序列化/反序列化方法来读取和写入数据。读入后,您可以实现查找算法或在列表中使用Linq。当然,@vodkhang提到了一个关于文件存储的有效观点,即性能和随机访问与将所有文件加载到内存相比。

您还可以使用新的MemoryMappedFile功能,该功能允许您将文件的一部分加载到内存中,并将修改缓冲到磁盘中。我还喜欢在文件末尾写入并删除原始行的想法。这并不是说您对记录ID或任何东西有任何索引…

为什么您必须使用文本文件来保存数据?文本文件是否有特定的格式?文本文件是CSV、固定长度还是其他格式?您在这里的要求真的很高。。。到目前为止,您尝试了什么?您不能使用xml文件吗?您可以使用内置的XML序列化功能轻松地将文件加载到内存中的对象中,然后再轻松地将其全部保存回内存。我相信你会因为使用XML而不是文本文件而从讲师那里得到更多的赞誉。我喜欢你的想法。你能给我写一些代码吗?如何在数组中实现它?这将对我在编程方面有很大帮助。你是说如何将数据从平面文件加载到阵列?或者如何更新阵列?我是说两者都更新。如何更新数组,然后将数据添加回文件。您有一个对象数组,对吗?然后你可以循环找到目标,容易吗?您可以使用ArrayTanks中的所有新数据覆盖旧文件以获得帮助。但你能让我走上正轨吗。我来自网络背景,这是我第一次做一些编程。请你至少给我写一些小代码好吗。这对我会有很大帮助。干杯这个建议可能有点超前?