Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения - 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(',')