9天前,我发布了一个问题,但我觉得我需要补充的信息更多,并且可以将其视为新问题更好。另外,我也不允许使用LINQ,所以不能使用发布的解决方案
我有一个学生管理工具,该工具可让我执行添加,编辑和删除学生的操作。我在包含studentInfo的主窗体上有一个列表框。我通过读取包含studentID
列和studentMark
列的CSV文件将数据添加到列表框中。
我有一个名为ModuleData
的类,其中包含3种公共列表结构:
StudentID
StudentMarks
studentInfo
(所以,只有StudentID和studentMark可以同时容纳。)我的ModuleData类:
namespace Assignment_2_module_marks
{
static class ModuleData
{
public static List<string> studentNumber = new List<string>();
public static List<string> studentMarks = new List<string>();
public static List<string> studentInfo = new List<string>();
}
}
我的form_load用一些Studentinfo填充主窗体上的列表框:
private void Form1_Load(object sender, EventArgs e)
{
string studentRec; // Declaring string variable
StreamReader inputFile = File.OpenText("COM122.csv");
while (!inputFile.EndOfStream) /
{
studentRec = inputFile.ReadLine();
ModuleData.studentInfo = studentRec.Split(',').ToList();
ModuleData.studentNumber.Add(ModuleData.studentInfo[0]); studentNumber
ModuleData.studentMarks.Add(ModuleData.studentInfo[1]);
lstMarks.Items.Add(ModuleData.studentNumber[0] + " : " + ModuleData.studentInfo[1]);
}
inputFile.Close(); // closes the file
}
我希望能够单击主窗体上的“删除”按钮,然后打开一个名为deleteRecord
的新窗体。在删除记录表上,我要求用户提供StudentID和StudentMark。然后,我要获取这两个数据,并浏览StudentInfo
列表,并检查是否有任何学生具有ID和标记该用户在删除表单中输入的学生。如果有一个输入了ID和Mark的学生,那么我想从StudentInfo列表中删除他们,然后更新主窗体上的列表框,以便该学生不再在那里,如果找不到学生,我想要一个错误显示以告诉用户该学生不存在
由于我是C#的新手,所以我不确定该怎么做
任何帮助将不胜感激
答案 0 :(得分:0)
这是一些伪代码,由于这是家庭作业,因此我不会为您编写全部内容。
var deletedID = -1;
for(int i=0; i< ModuleData.studentInfo.Count; i++)
{
if (ModuleData.studentInfo[i] == studentIDToDelete + " : " + studentMarkToDelete)
{
deletedID = i;
break;
}
}
if (deletedID != -1)
//now remove from lists and reload listbox (hint remove at i)
一种更好的方法是让学生上课,并用学生和分数填充该对象。然后,您可以将对象列表直接绑定到列表框,并使用相同的列表删除学生。
答案 1 :(得分:0)
知道这是家庭作业后,我将尝试并提供更多信息,而不是提供答案:
您应该做的第一件事就是将ModuleData
类视为模型:
public partial class ModuleData
{
public List<string> studentNumber {get; set;}
public List<string> studentMarks {get; set;}
public List<string> studentInfo {get; set;}
}
然后可以通过实例化该模型并为其分配数据来填充该模型:
ModuleData entity = new ModuleDate();
entity.studentNumbder = list1;
entity.studentMarks = list2;
entity.studentInfo = list3;
此模型将成为您用来查询任何数据源并对其执行任何CRUD
的对象。
在Form_Load
上迭代文件并从逗号分隔的字符串中获取变量。使用此数据填充您的ModuleData对象,并将其添加到列表框中。
一旦您填充了ListBox数据源,就可以使用用户定义的参数查询ListBox数据源,并在需要时将其删除。
这是一些伪代码:
foreach(var listItem in lstMarks.Items){
if listItem is parameters then remove from lstMarks
}
我希望这可以引导您朝正确的方向前进。