Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения - C#
Формулировка задачи:
Помогите, что-то я уже совсем завалился с этой задачей.
Задание:
Придумать класс описывающий студента и предусмотреть в нем следующие
моменты: фамилия, имя, отчество, группа, дата рождения. А также добавить методы
по работе с перечисленными данными: вывести список всех студентов, добавить нового студента, найти студента, удалить студента. Вся информация должна сохраняться в текстовом файле.
Вот мои потуги:
Структура описывающая студента:
Класс Меню:
Управляющий класс:
ну и класс Program:
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(); } }
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(',')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д