所以我正在做这个c#程序,它基本上是一台咖啡机。要求用户注册该实例并将其添加到文本文件中,然后登录,然后从提供的列表中询问他想要哪种咖啡,最后增加一个名为“ coffee points”的属性。问题是我不知道如何更新文本文件中的咖啡点。我可以获取咖啡分数并将其增加1,然后在控制台中进行打印,但是,我不知道如何仅更新特定用户的文本文件中的咖啡分数。
下面是我用来检索已登录用户的咖啡点并将它们加1并将它们存储在变量“ newCoffeePoints”中的代码。
int newCoffeePoints = 0;
for (int i = 0; i < customerList.Count; i++)
{
if (customerList[i].iUsername == cu2.iUsername)
{
customerList[i].iCoffeePoints += 1;
newCoffeePoints = customerList[i].iCoffeePoints;
break;
}
}
答案 0 :(得分:1)
为此,我们有许多不同类型的数据库,例如Mongo,SQL等。
但是,如果您尝试对对象进行序列化/反序列化并将其保存到其他序列化类型中的文件中,则可能需要考虑JSON格式。库Newtonsoft.js是我们(C#开发人员)通常使用的库。
您可以创建一个反映您需要的虚拟结构。
由于我们可能想通过键来查找对象,因此Dictionary<TKey, TValue>
集合比List<T>
更适合。
在Dictionary<key, value>
中对用户执行所需的任何操作,然后将其序列化为JSON,并使用File.WriteAllText(json)
方法将其保存到光盘中。
是在每次更新后执行此操作(以便在应用程序崩溃时保存所有数据)还是在应用程序即将完成执行时执行一次,这取决于您的需求。
带有字典的字段可能类似于:
// CKeyType here is a type of customer's id field such as int, string etc.
private static readonly CustomerDict = new Dictionary<CKeyType, Customer>();
答案 1 :(得分:0)
您可以使用JSON和Newtonsoft Library轻松解决此问题。 (上面提到的Fabjan)
这是来自Microsoft Virtual Academy的教程链接,您可以遵循。