#include <iostream>
#include <string>
#include <fstream>
#define NOMINMAX
using namespace std;
struct sessia
{
string familia_stud, disciplina;
unsigned kurs, kod_grup, data_postupleniya, nomer_knijki,disciplina_ocenca;
};
void Input(sessia*& A, unsigned int& n);
void save_file(sessia*& A, unsigned int n);
void input_file(sessia*& A, unsigned int& n);
int menu();
int main()
{
setlocale(0, "");
sessia* A = nullptr;
unsigned int n = 0;
do {
int kol = menu();
switch (kol)
{
case 1: {Input(A, n); break; }
case 2: {save_file(A, n); break; }
case 3: {input_file(A, n); continue; }
default: delete[] A;
}
} while (true);
return 0;
}
void Input(sessia*& A, unsigned int& n)
{
setlocale(0, "");
cout << "Введите количество Студентов: ";
cin >> n;
system("cls");
A = new sessia[n];
for (int i = 0; i < n; i++)
{
cin.ignore(1000, '\n');
cout << "Курс: ";
cin >> A[i].kurs;
cout << "Код группы: ";
cin >> A[i].kod_grup;
cin.ignore(1000, '\n');
cout << "Фамилию студента: ";
getline(cin, A[i].familia_stud, '\n');
cout << "Дата поступления: ";
cin >> A[i].data_postupleniya;
cin.ignore(1000, '\n');
cout << "Номер зачетной книжки: ";
cin >> A[i].nomer_knijki;
cin.ignore(1000, '\n');
cout << "Дисциплину: ";
getline(cin, A[i].disciplina, '\n');
cout << "Оценка за дисциплину: ";
cin >> A[i].disciplina_ocenca;
system("pause");
system("cls");
}
}
void save_file(sessia*& A, unsigned int n)
{
if (A == nullptr)
{
std::cout << "Нет данных для записи";
system("pause > nul");
return;
}
string fname;
cout << "Введите файл для сохранения: ";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin, fname);
ofstream fiLe;
fiLe.open(fname);
if (!fiLe.is_open())
{
cout << "Нельзя открыть файл: " << fname << endl;
return;
}
fiLe << n << endl;
for (int i = 0; i < n; i++)
{
fiLe << A[i].kurs << "\n";
fiLe << A[i].kod_grup << "\n";
fiLe << A[i].familia_stud << "\n";
fiLe << A[i].data_postupleniya << "\n";
fiLe << A[i].nomer_knijki << "\n";
fiLe << A[i].disciplina << "\n";
fiLe << A[i].disciplina_ocenca << "\n";
}
fiLe.close();
}
void input_file(sessia*& A, unsigned int& n)
{
if (A != nullptr) delete[]A;
string fname;
cout << "Введите файл для чтения: ";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin, fname);
ifstream fiLe;
fiLe.open(fname);
if (!fiLe.is_open())
{
std::cout << "Файл " << fname << " невозможно открыть \"" << "\"!\n";
system("pause");
return;
}
fiLe >> n;
A = new sessia[n];
for (int i = 0; i < n; i++)
{
fiLe >> A[i].kurs;
//cout << "\n";
fiLe >> A[i].kod_grup;
//cout << "\n";
fiLe >> A[i].familia_stud;
//cout << "\n";
fiLe >> A[i].data_postupleniya;
//cout << "\n";
fiLe >> A[i].nomer_knijki;
//cout << "\n";
fiLe >> A[i].disciplina;
//cout << "\n";
fiLe >> A[i].disciplina_ocenca;
//cout << "\n";
}
fiLe.close();
}
int menu()
{
int kol;
do
{
system("cls");
cout << "Меню программы\n";
cout << "1. Ввод данных \n";
cout << "2. Сохранение данных в файл\n";
cout << "3. Ввод данных с файла\n";
cout << "4. Выход\n";
cout << "Ваш выбор: ";
cin >> kol;
} while (kol <= 0 || kol > 4);
return kol;
}