0

如何恢复在 C# 中备份的数据?我试图弄清楚如何恢复已经保存的数据。我想我知道如何保存数据,但是当我的应用程序运行时,我无法恢复数据,我真的需要帮助吗?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace Lab09_E00988190
{
    public partial class Form1 : Form
    {
        List<Student> listOfStudents;
        int intCurrentStudent = 0;

        string fileName;
        StreamWriter outputFile;
        StreamWriter inputFile;
        BinaryFormatter studentFormatter = new BinaryFormatter();

        public Form1()
        {
            InitializeComponent();
            listOfStudents = new List<Student>();
            txtGPA.Enabled = false;
            txtID.Enabled = false;
            txtName.Enabled = false;
            btnPrevious.Enabled = false;
            btnNext.Enabled = false;
            btnRegisterStudent.Enabled = false;
        }

        private void btnNewStudent_Click(object sender, EventArgs e)
        {
            txtName.Text = "";
            txtGPA.Text = "";
            txtID.Text = "";

            txtName.Enabled = true;
            txtGPA.Enabled = true;
            txtID.Enabled = true;
            txtName.Focus();

            btnRegisterStudent.Enabled = true;
            btnNewStudent.Enabled = true;
        }

       private void btnNext_Click(object sender, EventArgs e)
       {
            intCurrentStudent++;
            displayCurrent();
            if (intCurrentStudent == listOfStudents.Count - 1)
            {
               btnNext.Enabled = false;
            }
            btnPrevious.Enabled = true;
       }

        private void displayCurrent()
        {
            txtGPA.Text = listOfStudents[intCurrentStudent].GPA.ToString();
            txtName.Text = listOfStudents[intCurrentStudent].Name;
            txtID.Text = listOfStudents[intCurrentStudent].ID.ToString();
            lblNumberofStudents.Text =     listOfStudents[intCurrentStudent].Students.ToString();
        }

        private void btnPrevious_Click(object sender, EventArgs e)
        {
            intCurrentStudent--;
            displayCurrent();
            if (intCurrentStudent == 0)
            {
                btnPrevious.Enabled = false;
            }
            btnNext.Enabled = true;
        }

        private void btnRegisterStudent_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtName.Text != "")
                {
                    if (Decimal.Parse(txtGPA.Text) >= 0 && Decimal.Parse(txtGPA.Text) <= 4)
                    {
                        listOfStudents.Add(new Student(txtName.Text, txtID.Text, Int32.Parse(lblNumberofStudents.Text), Decimal.Parse(txtGPA.Text)));
                        txtGPA.Enabled = false;
                        txtID.Enabled = false;
                        txtName.Enabled = false;

                        if (listOfStudents.Count == 0)
                        {
                            btnPrevious.Enabled = false;
                            btnNext.Enabled = false;
                        }

                        if (listOfStudents.Count == 1)
                        {
                            btnPrevious.Enabled = false;
                            btnNext.Enabled = false;
                        }

                        if (listOfStudents.Count > 1)
                        {
                            btnPrevious.Enabled = true;
                            btnNext.Enabled = true;
                        }

                        if (listOfStudents.Count >= 5)
                        {
                            btnRegisterStudent.Enabled = false;
                            btnNewStudent.Enabled = false;
                        }
                }
                else
                {
                    MessageBox.Show("GPA can't be less than 0 or greater than 4");
                }
            }
            else
            {
                MessageBox.Show("GPA must be in numbers!");
            }
        }
        catch
        {
            MessageBox.Show("Make sure you have all the right information entered there");
        }
        displaySummary();
    }

    private void displaySummary()
    {
        int numberOfStudents = 0;


        foreach (Student aStudent in listOfStudents)
        {
            numberOfStudents += aStudent.Students;
        }
        lblNumberofStudents.Text = listOfStudents.Count.ToString();
    }

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void openFileDialogToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            fileName = openFileDialog1.FileName;
            if (!File.Exists(fileName))
            {
                fileName += ".txt";
            }
        }
        {
            try
            {
                using (Stream inputFile = File.OpenRead(fileName))
                {
                    listOfStudents = (List<Student>)studentFormatter.Deserialize(inputFile);
                }
                if (listOfStudents.Count == 0)
                {
                    btnPrevious.Enabled = false;
                    btnNext.Enabled = false;
                }

                if (listOfStudents.Count == 1)
                {
                    btnPrevious.Enabled = false;
                    btnNext.Enabled = false;
                }

                if (listOfStudents.Count > 1)
                {
                    btnPrevious.Enabled = true;
                    btnNext.Enabled = true;
                }

                if (listOfStudents.Count >= 5)
                {
                    btnRegisterStudent.Enabled = false;
                    btnNewStudent.Enabled = false;
                }
                displaySummary();
                displayCurrent();
                MessageBox.Show("File backup complete!");
            }
            catch (ArgumentNullException)
            {
                MessageBox.Show("You need to select file first!");
            }
            catch (IOException exception)
            {
                MessageBox.Show(exception.ToString(), "An IO exception has occured!");
            }
        }   
    }

    private void saveFileDialogToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult result = saveFileDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            fileName = saveFileDialog1.FileName;
            if (!File.Exists(fileName))
            {
                fileName += ".txt";
            }
        }
        try
        {
            using (Stream outputFile = File.Create(fileName))
            {
                studentFormatter.Serialize(outputFile, listOfStudents);
            }
            MessageBox.Show("File restoration complete!");
        }
        catch (IOException exception)
        {
            MessageBox.Show(exception.ToString(), "An IO exception has occured!");
        }
    }
}

}

4

0 回答 0