Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения - C#

Узнай цену своей работы

Формулировка задачи:

Помогите, что-то я уже совсем завалился с этой задачей. Задание: Придумать класс описывающий студента и предусмотреть в нем следующие моменты: фамилия, имя, отчество, группа, дата рождения. А также добавить методы по работе с перечисленными данными: вывести список всех студентов, добавить нового студента, найти студента, удалить студента. Вся информация должна сохраняться в текстовом файле. Вот мои потуги: Структура описывающая студента:
struct Student
    {
        public string lastName;
        public string firstName;
        public string middleName;
 
        public string birth;
 
        public string group;
 
        public Student(string lastName, string firstName, string middleName, string birth, string group)
        {
            this.lastName = lastName;
            this.firstName = firstName;
            this.middleName = middleName;
            this.birth = birth;
            this.group = group;
        }
 
        public override string ToString()
        {
            return String.Format(" Фамилия: {0},  Имя: {1},  Отчество: {2},  Дата Рождения: {3},  Группа: {4}\n", 
                lastName, firstName, middleName, birth, group);
        }
    }
Класс Меню:
class Menu
    {
        private int choice;
        private string ans;
 
        public int Choice
        {
            get { return choice;  }
        }
 
        public string Ans
        {
            get { return ans; }
        }
 
        public void Dialog()
        {
            Console.Write("\n> Вернуться в меню (y/n)? - ");
            ans = Console.ReadLine();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            Console.WriteLine("\t  Спасибо, что воспользовались нашей программой :).");
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
        }
 
        public void Display()
        {
            Console.Clear();
            Console.WriteLine();
            Console.WriteLine("\t ====================================================");
            Console.WriteLine("\t\t Система управления данными Студентов.");
            Console.WriteLine("\t ====================================================");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("\t\t 1. Вывести список всех студентов.");
            Console.WriteLine("\t\t 2. Добавить нового студента.");
            Console.WriteLine("\t\t 3. Найти студента.");
            Console.WriteLine("\t\t 4. Удалить студента.");
            Console.WriteLine("\t\t 5. Выход.");
            Console.WriteLine();
            Console.Write("\t> Сделайте выбор: ");
            try
            {
                choice = Convert.ToInt32(Console.ReadLine());
            }
            catch (FormatException err)
            {
                Console.WriteLine("\n > Error, man!!! {0}", err.Message);
            }                        
        }
 
    }
Управляющий класс:
class Driver
    {
        private Student[] arrStudent;
 
        private FileStream fileStream;
        private StreamReader streamReader;
        private StreamWriter streamWriter;
        DirectoryInfo dirInfo;
 
        private string filePath;
        private string buff;
 
        public ArrayList al = new ArrayList();
 
        public Driver(int size)
        {
            arrStudent = new Student[size];
            filePath = @"Data\students.txt";
            buff = "";
            dirInfo = new DirectoryInfo("Data");
            dirInfo.Create();
        }
 
        public void AdapterFill()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                buff = streamReader.ReadToEnd();
                if (buff == "")
                {
                    Console.WriteLine("\n> Список студентов пуст.");
                }
                else
                {
                    char[] splitChars = new char[] { '\n', '\r' };
 
                    int i = 0;
                    foreach (string line in buff.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!string.IsNullOrEmpty(line.Trim()))
                        {
                            Console.WriteLine("{0}. {1}", (i + 1), line);
                        }                                                
                        i++;
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void AdapterUpdate()
        {
            try
            {
                fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write);
                streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
                foreach (var item in al)
                {
                    Student st = (Student)item;
                    streamWriter.WriteLine(st.ToString());
                }
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            streamWriter.Close();
            fileStream.Close();
        }
 
        public void viewList()
        {
            AdapterFill();
        }
 
        public void addStudents(ArrayList al)
        {
            string lName;
            string fName;
            string mName;
            string birthDay;
            string _group;
            Console.Write("Введите фамилию студента:  ");
            lName = Console.ReadLine();
            Console.Write("Введите имя студента:  ");
            fName = Console.ReadLine();
            Console.Write("Введите очтчество студента:  ");
            mName = Console.ReadLine();
            Console.Write("Дату рождения:  ");
            birthDay = Console.ReadLine();
            Console.Write("Группа:  ");
            _group = Console.ReadLine();
            al.Add(new Student { lastName = lName, firstName = fName, middleName = mName, birth = birthDay, group = _group });
            AdapterUpdate();
        }
 
        public void findStudent()
        {
            Console.WriteLine("Введите фамилию:");
            string findLastName = Console.ReadLine();
            try
            {
                fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                streamReader = new StreamReader(fileStream, Encoding.UTF8);
 
                buff = streamReader.ReadToEnd();
                if (buff == "")
                {
                    Console.WriteLine("\n> Список студентов пуст.");
                }
                else
                {
                    string pattern = findLastName;
                    char[] splitChars = new char[] { '\n', '\r' };
                    foreach (string line in buff.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                    {
                        if (!string.IsNullOrEmpty(line.Trim()))
                        {
                            if (line.StartsWith(" Фамилия: " + pattern))
                            {
                                Console.WriteLine("Студент '{0}' найден: {1}.",
                                              pattern, line);
                            }
                            else
                                Console.WriteLine("Студент '{0}' не найден.", pattern);
                        }
                    }
                }
 
                streamReader.Close();
                fileStream.Close();
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
        }
 
        public void removeStudent()
        {
            viewList();
            int flag = 0;
            Console.WriteLine("Введите номмер студента, которого нужно удалить:  ");
            try
            {
                flag = Console.Read();
            }
            catch (Exception err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            try
            {
                string[] readText = System.IO.File.ReadAllLines(filePath);
                Array.Resize(ref readText, (readText.Length - 1));
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(filePath, false))
                {
                    for (int i = 0; i < readText.Length; i++)
                    {
                        if (i != flag - 1)
                            streamWriter.WriteLine(readText[i]);
                    }
                }
            }
            catch (IOException err)
            {
                Console.WriteLine("\n > {0}", err.Message);
            }
            streamWriter.Close();     
        }        
    }
ну и класс Program:
class Program
    {
        static void Main(string[] args)
        {
            Menu m = new Menu();
            Driver d = new Driver(10);
 
            do
            {
                m.Display();
                switch (m.Choice)
                {
                    case 1:
                        d.viewList();
                        break;
                    case 2:
                        d.addStudents(d.al);
                        break;
                    case 3:
                        d.findStudent();
                        break;
                    case 4:
                        d.removeStudent();
                        break;
                    case 5:                        
                        System.Environment.Exit(-1);
                        break;
                    default:
                        Console.WriteLine("\n> Ошибка выбора!");
                        break;
                }
            m.Dialog();
            }
            while(m.Ans == "y");
 
            Console.WriteLine();
        }
    }
Ошибки, с которыми я столкнулся: Во время добавления нового студента, в фаил дублируется первое добавление, дальше все нормально. Проблемы с удалением студента.

Решение задачи: «Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения»

textual
Листинг программы
.Split(',')

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы