std: : cin >> fli. food;
std: : cout << «\nВведите стоимость «;
std: : cin >> fli. cost;
file << «\n» << fli. typeTour + « « << fli. hostCountry + « « << fli. typeTransport + « « << fli. amountDays + « « << fli. food + « « << fli. cost;
std: : cout << «Путевка добавлена в список! \n»;
file. close () ;
return 0;
}
int dellTours () {
getAllTours () ;
int id;
std: : vector<flight> fli = flights («Tours. txt») ;
id = checkint (fli. size () - 1, «\nВведите номер записи, которую желаете удалить: «) ;
fli. erase (fli. begin () + id) ;
ofstream file («Tours. txt», ios_base: : out | ios_base: : trunc) ;
for (int i = 0; i < fli. size () ; i++) file << fli[i]. typeTour + « « << fli[i]. hostCountry + « « << fli[i]. typeTransport + « « << to_string (fli[i]. amountDays) + « « << fli[i]. food + « « << to_string (fli[i]. cost) + «\n»;
cout << «Запись удалена! \n»;
file. close () ;
return 0;
}
// Вывод всего списка путевок
int getAllTours () {
std: : vector<flight> flightss = flights («Tours. txt») ;
flights (flightss) ;
return 0;
}
// Вывод списка путевок
int flights (vector<flight> fl) {
system («cls») ;
ifstream file («Tours. txt») ;
std: : cout << «\nСписок путевок\n----------------\n»
<< «ID « << setw (12) << left << «Тип путевки»
<< setw (12) << «Страна пребывания»
<< setw (12) << «Вид транспорта»
<< setw (12) << «Количество дней»
<< setw (12) << «Питание»
<< setw (12) << «Стоимость» << std: : endl;
for (int i = 0; i < fl. size () ; i++) {
std: : cout << i << «. «
<< setw (12) << left << fl[i]. typeTour
<< setw (14) << fl[i]. hostCountry
<< setw (17) << fl[i]. typeTransport
<< setw (19) << fl[i]. amountDays
<< setw (19) << fl[i]. food
<< setw (17) << fl[i]. cost << std: : endl;
}
file. close () ;
return 0;
}
vector<flight> flights (string path) {
std: : vector<flight> fli;
std: : ifstream file (path) ;
flight ft;
while (file >> ft. typeTour >> ft. hostCountry >> ft. typeTransport >> ft. amountDays >> ft. food >> ft. cost) fli. push_back (ft) ;
file. close () ;
return fli;
}
int checkint (int max, string str) {
int id;
while (true) {
std: : cout << str; std: : cin >> id;
if (std: : cin. fail ()) {
std: : cin. clear () ;
while (std: : cin. get ()! = '\n') ;
}
else if (max == -1) return id;
if (id <= max && id >= 0) return id;
else std: : cout << «Вы ввели некорректные данные. « << std: : endl;
}
}
};
Класс Accounts
#include «stdafx. h»
#include <windows. h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <vector>
#include <iomanip>
using namespace std;
class Accounts
{
public:
Accounts () ;
~Accounts () ;
struct account {
string login;
string password;
string role;
};
vector<account> accounts () {
std: : vector<account> acc;
std: : ifstream file («accounts. txt») ;
account z;
if (file. is_open ()) {
while (file >> z. login >> z. password >> z. role)
acc. push_back (z) ;
file. close () ;
return acc;
}
else {
cout << «Файла c аккаунтами не существует. Для создания данного файла введите данные учетной записи администратора»;
cout << «\nВведите логин администратора: «;
cin >> z. login;
cout << «Введите пароль администратора: «;
cin >> z. password;
std: : cout << «Введите роль»;
std: : cin >> z. role;
std: : cout << std: : endl;
acc. push_back (z) ;
ofstream file («accounts. txt») ;
file << acc[0]. login + « « << acc[0]. password + « « << (acc[0]. role) + « \n»;
file. close () ;
return acc;
}
}
int operation () {
int id;
while (true) {
cout <<
«\n\tУПРАВЛЕНИЕ АККАУНТАМИ» <<
«\n[1] Просмотр всех аккаунтов» <<
«\n[2] Добавление нового аккаунта» <<
«\n[3] Редактирование данных аккаунта» <<
«\n[4] Удаление аккаунта» <<
«\n[5] Назад\n»;
id = checkint (5, «\nВведите номер операции: «) ;
switch (id)
{
case 1: writeAccounts () ; break;
case 2: addAccount () ; break;
case 3: editAccount () ; break;
case 4: deleteAccount () ; break;
case 5: return 0; break;
default:
break;
}
}
}
int writeAccounts () {
int mlogin = 5, mpass = 8;
ifstream file («accounts. txt») ;
vector<account> acc = accounts () ;
for (int i = 0; i < acc. size () ; i++) {
if (mlogin < acc[i]. login. length ()) mlogin = acc[i]. login. length () ;
if (mpass < acc[i]. password. length ()) mpass = acc[i]. password. length () ;
}
mlogin = mlogin + 2;
mpass = mpass + 2;
cout << «\n\tСПИСОК УЧЕТНЫХ ЗАПИСЕЙ\n» << «ID « << setw (mlogin) << left << «LOGIN» << setw (mpass) << «PASSWORD» << setw (4) << «ROLE» << endl;
for (int i = 0; i < acc. size () ; i++) cout << i << «. « << setw (mlogin) << left << acc[i]. login << setw (mpass) << acc[i]. password << setw (4) << acc[i]. role << endl;
file. close () ;
return 0;
}
int editAccount () {
SetConsoleCP (1251) ;
SetConsoleOutputCP (1251) ;
writeAccounts () ;
int number;
std: : vector<account> acc = accounts () ;
number = checkint (acc. size () - 1, «\nВведите номер записи, которую желаете редактировать: «) ;
cout << «Введите логин»; cin >> acc[number]. login;
cout << «Введите новый пароль: «; cin >> acc[number]. password;
cout << «Введите роль»; cin >> acc[number]. role;
ofstream file («accounts. txt», ios_base: : out | ios_base: : trunc) ;
for (int i = 0; i < acc. size () ; i++) file << acc[i]. login + « « << acc[i]. password + « « << (acc[i]. role) + « \n»;
cout << «\nИзменения сохранены. \n»;
file. close () ;
return 0;
}
int addAccount () {
SetConsoleCP (1251) ;
SetConsoleOutputCP (1251) ;
ofstream file («accounts. txt», ios_base: : out | ios_base: : app) ;
string arr[3];
int p = 0;
std: : vector<account> acc = accounts () ;
while (p == 0) {
cout << «\nВведите логин: «; cin >> arr[0];
for (int i = 0; i < acc. size () ; i++) {
if (acc[i]. login == arr[0]) {
cout << «Логин занят. Придумайте другой. «;
p = 0;
break;
}
else p = 1;
}
}
cout << «Введите пароль: «; cin >> arr[1];
cout << «Введите роль: «; cin >> arr[2];
file << «\n» << arr[0] + « « << arr[1] + « « << arr[2];
cout << «Учетная запись создана! \n»;
file. close () ;
return 0;
}
int deleteAccount () {
writeAccounts () ;
int number;
std: : vector<account> acc = accounts () ;
number = checkint (acc. size () - 1, «\nВведите номер записи, которую хотите удалить: «) ;
acc. erase (acc. begin () + number) ;
ofstream file («accounts. txt», ios_base: : out | ios_base: : trunc) ;
for (int i = 0; i < acc. size () ; i++) file << acc[i]. login + « « << acc[i]. password + « « << (acc[i]. role) + « \n»;
cout << «Учетная запись удалена! \n»;
file. close () ;
return 0;
}
string auth (string login, string pass) {
std: : vector<account> acc = accounts () ;
for (int i = 0; i < acc. size () ; i++) {
if (acc[i]. login == login) {
if (acc[i]. password == pass) {
return acc[i]. role;
break;
}
}
}
return «false»;
}
int checkint (int max, string str) {
int id;
while (true) {
cout << str; cin >> id;
if (cin. fail ()) {
cin. clear () ;
while (cin. get ()! = '\n') ;
}
if (id <= max && id >= 0) {
return id;
}
else cout << «Вы ввели некорректные данные. « << endl;
}
};