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;
}
};
Результаты работы программы при тестовых данных показаны на рисунке 1.
Рисунок 1 - Результаты работы программы