我正在研究C#上的uni项目。它要求我在C#控制台中创建学生管理系统。我必须使用文本文件来保存数据。 我可以在文本文件中添加数据和检索数据,但无法更新任何学生记录。我的问题是如何更新文本文件中的特定学生记录?例如,我的程序将要求用户输入他想要更新的学生,而不是程序应该获取该学生的完整记录。该程序再次要求用户选择他想要更新的字段。更新字段后,应更新记录。
答案 0 :(得分:0)
我可以建议一些简单/明显而不是最有效的方法。
对于家庭作业,它没有任何性能问题阻止您将所有学生数据加载到大型阵列然后更新阵列。一切都完成后,用户选择退出,您可以保存所有数据。
更难的方法是加载学生并更新学生对象,然后将其写回文件的末尾。不要忘记删除旧行。您可以连续存储每个学生
另一种更难的方法是随机访问文件,需要严格的文本数据格式
答案 1 :(得分:0)
如果您不需要进行文本输出但使用可手动编辑的文件,则应该考虑创建一个Xml Serializable类,例如实现可以序列化Student的List的Data。然后你只需要Xml Serialize / Deserialize方法来读取和写入你的数据。一旦读入,您可以实现查找算法或在列表上使用Linq。当然@vodkhang提到了一个关于性能和随机访问的文件存储的有效点,而不是全部加载到内存中。
答案 2 :(得分:0)
您还可以使用新的MemoryMappedFile功能,该功能允许您将文件的一部分加载到内存中,并将修改缓冲到磁盘。我也喜欢写到文件末尾并删除原始行的想法。这并不是说您对记录ID或其他内容有任何索引......