只需为项目创建一个简单的“ fish finder”控制台应用程序即可。保存有关您捕获的鱼的信息,然后根据您要寻找的鱼的种类和捕获方法为您检索信息。这是主要问题:我已经为用户添加了删除以前记录的渔获量的功能。当您删除一个时,程序本身将识别出内存中的内容,并且据您所知,它似乎已被删除。但是,一旦关闭程序并读取实际的CSV文件或启动程序备份,该删除的捕获仍将存在。在写入文件的过程中,我的逻辑似乎有问题。注意:在运行程序时,我始终确保关闭文件,以防止损坏/故障。
我有一个Journal类,其中包含一个名为Catches的列表,该列表存储用户记录的所有捕获量。这是Journal的方法,它在用户想要删除渔获时提示用户。它列出了用户记录的所有所有渔获,然后删除逻辑在最后几行中。
public void DeleteACatch()
{
int i = 1;
Console.WriteLine("**** Delete a Catch ****");
foreach(var ctch in catches)
{
Console.WriteLine($"{i} - {ctch.ToStringFormatted()}");
i++;
}
Console.Write("Enter number of catch to delete (0 to cancel): ");
int choice = int.Parse(Console.ReadLine());
if(choice == 0)
{
Console.WriteLine("Returning to main menu...");
return;
}
Catches.RemoveAt(choice - 1);
Send();
storageManager.Write();
Console.WriteLine("Catch deleted.");
}
这是日记的发送方法。只需将数据发送到名为StorageManager的类的对象即可,该对象包含一个名为data的列表,该列表也包含Catches。
public void Send()
{
storageManager.Data.Clear();
storageManager.Data = catches;
}
这是StorageManager的Write方法,该方法将存储在其List中的Catches称为数据,然后用它覆盖CSV文件。
public void Write()
{
FileStream stream = new FileStream("FishFinderData.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter fileWriter = new StreamWriter(stream);
foreach (var d in data)
{
fileWriter.WriteLine($"{d.HourOfDay},{d.Location},{d.Species},{d.Bait}");
}
fileWriter?.Close();
}