Курсовая работа: Разработка программы подбора туристической путевки

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

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;

}

};

Источник: https://otherreferats.allbest.ru/download/1153537/