Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- #include <cstdio>
- #include <iomanip>
- #include <windows.h>
- using namespace std;
- struct comp {
- char dest[20]; // Пункт назначен
- char num[20]; // Номер рейса
- char FIO[40]; // ФИО пассажира
- char date[40]; //Дата вылета
- comp* next; //Ссылка на следующий элемент списка
- };
- char* fileName = new char[50];
- FILE* f1;
- struct dyn_list {
- comp* head = NULL; // Первый элемент (голова) списка
- comp* tail{}; // Последний элемент (хвост) списка
- };
- short menu();
- void constr_list(dyn_list& l);
- bool chk_empty(dyn_list l);
- void comp_in(dyn_list& l, char* de, char* nu, char* fio, char* da);
- void news(dyn_list& vars1);
- void print(dyn_list l);
- void comp_del(dyn_list& l, comp* c);
- void del(dyn_list& vars1);
- void poisk(dyn_list vars1);
- void deletelist(comp* vars1);
- void output(dyn_list vars1, char*);
- ifstream fin;
- ofstream fout;
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- char* buf_dest = new char[20];
- char* buf_num = new char[20];
- char* buf_FIO = new char[40];
- char* buf_date = new char[40];
- dyn_list vars; // Динамический список
- cout << "Работаем с базой данных! ";
- cout << "Введите имя файла -> ";
- cin >> fileName;
- ifstream* inp = new ifstream(fileName);
- f1 = fopen(fileName, "r");
- if (!inp->good()) {
- cout << "Ошибка в открытии файла!\n";
- system("PAUSE");
- return 0;
- }
- cout << "\nИнформация, содержащаяся в исходном файле:\n" << endl;
- while (!inp->eof()) {
- inp->getline(buf_dest, 20);
- cout << buf_dest << " ";
- inp->getline(buf_num, 20);
- cout << buf_num << " ";
- inp->getline(buf_FIO, 40);
- cout << buf_FIO << " ";
- inp->getline(buf_date, 40);
- cout << buf_date << " " << endl;
- comp_in(vars, buf_dest, buf_num, buf_FIO, buf_date);
- }
- inp->close();
- short choise;
- system("pause");
- do {
- system("cls");
- choise = menu();
- switch (choise) {
- case 1:
- system("cls");
- print(vars);
- system("pause");
- system("cls");
- break;
- case 2:
- system("cls");
- news(vars);
- system("pause");
- system("cls");
- break;
- case 3:
- system("cls");
- del(vars);
- system("pause");
- system("cls");
- break;
- case 4:
- system("cls");
- poisk(vars);
- system("pause");
- system("cls");
- break;
- case 0:
- output(vars, fileName);
- cout << "До свидания!!!" << endl;
- deletelist(vars.head);
- system("pause");
- break;
- default:
- cout << "Неверный выбор!!!" << endl;
- cout << "\n\nPress Enter..." << endl;
- system("pause");
- system("cls");
- break;
- }
- } while (choise);
- cout << endl;
- return 0;
- }
- short menu() {
- short v;
- cout << "\n МЕНЮ" << endl;
- cout << " Введите [1] для просмотра заявок в виде списка\n";
- cout << " Введите [2] для добавления данных о вновь поступивших заявках\n";
- cout << " Введите [3] для удаления данных о выполненных заявках;\n";
- cout << " Введите [4] для поиска данных по номеру рейса и дате вылета\n";
- cout << " Введите [0] для выхода\n";
- cout << " Пункт: ";
- cin >> v;
- return v;
- }
- // Создание пустого списка
- void constr_list(dyn_list& l) {
- l.head = NULL;
- }
- // Проверка списка на пустоту
- bool chk_empty(dyn_list l) {
- return (l.head == NULL);
- }
- // Включение в список нового компонента
- void comp_in(dyn_list& l, char* dest, char* number, char* fio, char* date) {
- comp* c = new comp();
- strcpy_s(c->dest, 20, dest);
- strcpy_s(c->num, 20, number);
- strcpy_s(c->FIO, 40, fio);
- strcpy_s(c->date, 40, date);
- c->next = NULL;
- if (chk_empty(l))
- l.head = c;
- else
- l.tail->next = c;
- l.tail = c;
- }
- //ФУНКЦИЯ НОВЫЕ ЗАПИСИ
- void news(dyn_list& vars1) {
- cout << "Введите пункт назначения: ";
- char buf_dest[20];
- cin >> buf_dest;
- cout << "Введите номер рейса: ";
- char buf_num[20];
- cin >> buf_num;
- cout << "Введите ФИО пассажира: ";
- char buf_FIO[40];
- cin.ignore().getline(buf_FIO, sizeof(buf_FIO));
- cout << "Введите дату вылета: ";
- char buf_date[40];
- cin.getline(buf_date, sizeof(buf_date));
- cout << "\nЗаявка включена в список.\n";
- comp_in(vars1, buf_dest, buf_num, buf_FIO, buf_date);
- }
- void output(dyn_list l, char* fileName) {
- //cout << "Введите имя файла, куда вводить завяки -> ";
- ofstream inp(fileName, ios::out);
- fopen_s(&f1, fileName, "w");
- while (l.head != NULL) {
- inp << l.head->dest << endl;
- inp << l.head->num << endl;
- inp << l.head->FIO << endl;
- inp << l.head->date;
- if (l.head->next != NULL)
- inp << endl;
- l.head = l.head->next;
- }
- }
- void print(dyn_list l) {
- while (l.head != NULL) {
- cout << "Пункт назначения: " << l.head->dest << endl;
- cout << "Номер рейса: " << l.head->num << endl;
- cout << "ФИО пассажира: " << l.head->FIO << endl;
- cout << "Дата вылета: " << l.head->date << endl << endl;
- l.head = l.head->next;
- }
- }
- // Поиск компонента по номеру рейса
- comp* search_by_num(dyn_list l, char* buf) {
- while (l.head != NULL)
- {
- if (!strcmp(l.head->num, buf))
- return l.head;
- l.head = l.head->next;
- }
- return l.head;
- }
- // Удаление компонента из списка
- void comp_del(dyn_list& l, comp* c) {
- if (c == l.head) {
- l.head = c->next;
- delete c;
- return;
- }
- comp* temp = l.head;
- while (temp->next != c)
- temp = temp->next;
- temp->next = c->next;
- delete c;
- }
- void del(dyn_list& vars1) {
- cout << "Введите номер рейса, который был выполнен: ";
- char buf[20];
- cin >> buf;
- comp* p = new comp();
- p = search_by_num(vars1, buf);
- if (p) {
- comp_del(vars1, p);
- cout << "Заявка была удалена из списка." << endl;
- }
- else
- cout << "Заявки с таким номером рейса нет!\nУдостоверьтесь в правильности данных,\
- которые вы вводите." << endl;
- }
- //ФУНКЦИЯ ПОИСКА
- void poisk(dyn_list vars1) {
- cout << "Поиск пассажиров по номеру рейс а и дате вылета\n\n";
- char buf_num[20], buf_date[40];
- cout << "Введите номер рейса: ";
- cin >> buf_num;
- cout << "Введите дату вылета: ";
- cin.ignore().getline(buf_date, sizeof(buf_date));
- int i = 0;
- while (vars1.head) {
- if (strcmp(vars1.head->date, buf_date) == 0 &&
- strcmp(vars1.head->num, buf_num) == 0) {
- if (!i) {
- cout << "\nНайденные пассажиры по номеру рейса и дате вылета:\n" << endl;
- }
- cout << "Пункт назначения: " << vars1.head->dest << endl;
- cout << "ФИО пассажира: " << vars1.head->FIO << endl << endl;
- i++;
- }
- vars1.head = vars1.head->next;
- }
- if (!i) {
- cout << "Информация не найдена! Вводите данные правильно!" << endl;
- }
- }
- void deletelist(comp* vars1) {
- if (vars1 != NULL) {
- deletelist(vars1->next);
- delete vars1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement