Материал: ЛР7студенты

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

MessageBox::Show("Неудачная попытка открытия файла " + filename);

}

}

}

}

// Кнопка "Сохранить в файл"

private: System::Void save1_button_Click(System::Object^ sender, System::EventArgs^ e)

{

String^ filename;

String^ info = ""; // Строковое представление

SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;

saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

saveFileDialog1->FilterIndex = 1;

saveFileDialog1->RestoreDirectory = true;

if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{

filename = saveFileDialog1->FileName;

for each (Student ^ st in arr_stud)

{

info += st->surname + ";" + st->city + ";" + st->city_2 + ";" + st->gender + ";" + st->birthday + ";" + st->number + "\n";

}

File::WriteAllText(filename, info); // Запись в файл

}

}

// Кнопка "Сохранить в файл[2]"

private: System::Void save2_button_Click(System::Object^ sender, System::EventArgs^ e)

{

String^ filename;

SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;

saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

saveFileDialog1->FilterIndex = 1;

saveFileDialog1->RestoreDirectory = true;

if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{

filename = saveFileDialog1->FileName;

File::WriteAllText(filename, result); // Запись в файл

}

}

// Кнопка "Вывести список в файл"

private: System::Void read_button_Click(System::Object^ sender, System::EventArgs^ e)

{

int cnt = 0; // Число проживающих в Москве

for each (Student ^ st in arr_stud)

{

if (String::Equals(st->city_2, "Москва")) // Если город проживания студента - это Москва

{

cnt++;

}

}

MessageBox::Show(cnt.ToString(), "Число студентов проживающих в Москве"); // Вывод результата

save2_button->Enabled = true; // Активация кнопки сохранения результата в файл

}

};

}

Для студентов:

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

public ref class Apprentice // Класс для описания человека

{

public:

String^ surname; // ФИО

String^ city; // Место рождения

String^ city_2; // Место проживания

String^ gender; // Пол

unsigned int birthday; // Год рождения

};

public ref class Student : public Apprentice, public IComparable // Класс для студента

{

public:

unsigned int number; // Номер зачетной книжки

Student() {}

virtual int CompareTo(Object^ obj) // Метод сравнения с другим студентом

{

Student^ other = dynamic_cast<Student^>(obj);

int result = 0; // Сравнения на равенство

if (result == 0)

{

result = this->surname->CompareTo(other->surname); // Сравнение по Ф.И.О

}

if (result == 0)

{

result = this->city->CompareTo(other->city); // Сравнение по городу рождения

}

if (result == 0)

{

result = this->city_2->CompareTo(other->city_2); // Сравнение по городу проживания

}

return result;

}

int getAge()

{

return 2019 - birthday;

}

void SetNumber(unsigned int n)

{

number = n;

}

};

4. Результаты выполнения программы на наборе тестовых данных

Результаты работы программы при тестовых данных показаны на рисунке 1.

Рисунок 1 - Результаты работы программы