-4

C# でファイル ハンドラーを使用するのは初めてです。挿入と検索を行いました。この次のコードを使用して更新と削除を行う方法を教えてください。

UI 部分::

 private void btnAdd1_Click(object sender, EventArgs e)
 {
     StudentManager sm = new StudentManager();
     sm.AddStudent(textName.Text,textId.Text,textDpt.Text,textSem.Text);
 }

 public void btnSearch1_Click(object sender, EventArgs e)
 {
        StudentManager sm = new StudentManager();
        Student s = sm.FindStudent(textId.Text);
        if (s != null)
        {
            this.textName.Text = s.GetName();
            this.textId.Text = s.ID;
            this.textDpt.Text = s.Department; 
            this.textSem.Text = s.GetSEM();              
        }
 }

検証::

   string id = String.Empty;
   public void SetName(string name)
   {
        if(!String.IsNullOrEmpty(name))
        {
            this.name = name;
        }
    }

    public string ID
    {
        get { return id; }
        set { id = value; }
    }

   string department = String.Empty;

    public string Department
    {
        get { return department; }
        set { department = value; }
    }

    string SEM= String.Empty;

    public void SetSEM(string sem)
    {
        if (!String.IsNullOrEmpty(sem))
        {
            this.SEM = sem;
        }
    }

    public string GetSEM()
    {
        return this.SEM;
    }
     public String GetName()
    {
        return this.name;
    }

}

学生マネージャー::

class StudentManager
{    
    ArrayList students;
    const string FILENAME = @"d:\students.txt";

    public StudentManager()
    {
        SetStudentList();
    }

    private void SetStudentList()
    {
        if (students == null)
        {
            //create a file handler
            FileHandler sfh = new FileHandler();
            //initialize the teacher list object
            students = new ArrayList();

            //Now read all the lines from the teacher.txt
            //each line represent a teacher
            string[] studentfromfile = sfh.getAllLines(@FILENAME);
            int totalstudents = studentfromfile.Length;

            //go through each teacher and create teacher object to add it to the teacher list.
            for (int i = 0; i < totalstudents; i++)
            {
                string studentinfo = studentfromfile[i];
                string[] studentinfobroken = studentinfo.Split(new char[] { ',' });
                if (studentinfobroken.Length == 4)
                {
                    //this part is being duplicated - can think how?
                    Student s = new Student();
                    s.SetName(studentinfobroken[0]);
                    s.ID= studentinfobroken[1];
                    s.Department = studentinfobroken[2];
                    s.SetSEM(studentinfobroken[3]);
                    this.students.Add(s);
                }
            }
        }
    }

 public void AddStudent(string fullname, string ID, string dept,string Semester )
 {
        Student s = new Student();
        s.SetName(fullname);
        s.ID = ID;
        s.Department = dept;
        s.SetSEM(Semester);
        this.students.Add(s);
        FileHandler sfh = new FileHandler();
        string studentInfo = Environment.NewLine + s.GetName() + "," + s.ID + "," + s.Department + "," + s.GetSEM();
        sfh.AddLine(@FILENAME, studentInfo);
    }

   public Student FindStudent(string ID)
   {
        foreach (Student s in students)
        {
            if (s.ID.Equals(ID))
            {
                return s;
            }
        }
        return null;
    }

  class FileHandler
  {
    public String[] getAllLines(string fileName)
    {
        try
        {
            String[] lines = File.ReadAllLines(@fileName);
            return lines;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

    public String GetAllText(string fileName)
    {
        try
        {
            String content = File.ReadAllText(@fileName);
            return content;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

    public void AddLine(string filename, string line)
    {
        StreamWriter sr = null;
        try
        {
            sr = new StreamWriter(@filename, true);//true for append
            sr.WriteLine(line);
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            sr.Close();
        }
    }
4

2 に答える 2