Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <fstream>
- #include <string>
- #include <vector>
- using namespace std;
- string musor;
- void CinC() { //функция очистки потока cin
- if (cin.peek() == '\n') {
- getline(cin, musor);
- }
- }
- struct TR {
- string dest; //пункт назначения
- int num; //номер поезда
- int hour; //время отправления
- int minute;
- void Edit() {
- string dest2;
- int num2;
- int hour2;
- int minute2;
- cout << "Введите пункт назначения: ";
- CinC();
- getline(cin, dest2);
- dest = dest2;
- cout << endl;
- cout << "Введите номер поезда: ";
- cin >> num2;
- num = num2;
- cout << endl;
- cout << "Введите время отправления" << endl;
- cout << "Часы: ";
- cin >> hour2;
- cout << "Минуты: ";
- cin >> minute2;
- if (hour2 > 23 && hour2 < 0) {
- cout << "Данные введены некорректно!" << endl;
- }
- else if (minute2 > 59 && minute2 < 0) {
- cout << "Данные введены некорректно!" << endl;
- }
- else {
- hour = hour2;
- minute = minute2;
- }
- }
- void Show() {
- cout << "Пункт назначения: " << dest << endl;
- cout << "Номер поезда: " << num << endl;
- cout << "Время отправления: " << hour << ":" << minute << endl;
- cout << "_____________________________" << endl;
- }
- };
- vector <TR> Add(vector <TR> train) { //добавление записи
- TR train2;
- train2.Edit();
- train.push_back(train2);
- return train;
- }
- vector <TR> Remove(vector <TR> train) { //удаление записей
- cout << "Введите номер удаляемой записи: ";
- int n;
- cin >> n;
- if (n >= train.size()) {
- cout << "Записи с таким номером нет" << endl;
- }
- else {
- train.erase(train.begin() + n - 1);
- }
- return train;
- }
- void Search(vector <TR> train) { //поиск данных
- cout << "Введите номер поезда: " << endl;
- int n;
- cin >> n;
- for (int i = 0; i < train.size(); i++) {
- if (train[i].num == n) {
- train[i].Show();
- }
- else {
- cout << "Запись не найдена" << endl;
- }
- }
- }
- vector <TR> Sorting(vector <TR> train) { //сотрировка
- cout << "1 - Сортировка по номеру поезда" << endl;
- cout << "2 - Сортировка по пункту назначения" << endl;
- int n;
- cin >> n;
- if (n == 1) {
- for (int i = train.size() - 1; i > 0; i--) {
- for (int j = 0; j <= i; j++) {
- if (train[j].num > train[i].num) {
- swap(train[j], train[i]);
- }
- }
- }
- cout << "Сортировка завершена" << endl;
- system("pause");
- }
- else if (n == 2) {
- for (int i = train.size() - 1; i > 0; i--) {
- for (int j = 0; j <= i; j++) {
- if (train[j].dest[0] > train[i].dest[0]) {
- swap(train[j], train[i]);
- }
- }
- }
- cout << "Сортировка завершена" << endl;
- system("pause");
- }
- else {
- cout << "Данные введены некорректно" << endl;
- }
- return train;
- }
- void Show(vector <TR> train) {
- for (int i = 0; i < train.size(); i++) {
- cout << i + 1 << " запись" << endl;
- train[i].Show();
- }
- }
- int input = 10;
- void Menu() {
- cout << "1 - Создать новую базу данных" << endl;
- cout << "2 - Просмотр существующей базы данных" << endl;
- cout << "3 - Редактирование базы данных" << endl;
- cout << "4 - Добавить запись в базу данных" << endl;
- cout << "5 - Удалить запись" << endl;
- cout << "6 - Поиск записи" << endl;
- cout << "7 - Сортировка записей" << endl;
- cout << "8 - Сохранить изменения" << endl;
- cout << "9 - Показать список базы даннных" << endl;
- cout << "0 - Выход из программы" << endl;
- cin >> input;
- }
- int main()
- {
- int n;
- setlocale(LC_ALL, "rus");
- vector <TR> train;
- string name; //название файла
- string path; //путь к файлу
- ofstream d;
- int k = 0;
- while (input != 0) {
- Menu();
- switch (input) {
- case 1: {
- cout << "Введите название файла: ";
- CinC();
- getline(cin, name);
- ofstream baza(name + ".txt");
- k = 1;
- break;
- }
- case 2: {
- cout << "Введите путь к файлу: ";
- string path;
- CinC();
- getline(cin, path);
- ifstream baza;
- baza.open(path);
- if (baza.is_open())
- {
- int a;
- baza >> a;
- for (int i = 0; i < a; i++) {
- TR train1;
- baza >> train1.dest;
- baza >> train1.num;
- baza >> train1.hour;
- baza >> train1.minute;
- train.push_back(train1);
- }
- }
- k = 2;
- break;
- }
- case 3: {
- int b;
- cout << "Введите номер записи: ";
- cin >> b;
- for (int i = 0; i < b; i++) {
- train[i].Edit();
- }
- cout << "Данные отредактированы" << endl;
- system("pause");
- break;
- }
- case 4: {
- train = Add(train);
- cout << "Данные добавлены" << endl;
- system("pause");
- break;
- }
- case 5: {
- train = Remove(train);
- cout << "Запись удалена" << endl;
- system("pause");
- break;
- }
- case 6: {
- Search(train);
- system("pause");
- break;
- }
- case 7: {
- train = Sorting(train);
- break;
- }
- case 8: {
- if (k == 1) {
- ofstream baza_;
- baza_.open(name + ".txt", ios::out);
- if (baza_.is_open()) {
- for (int i = 0; i < train.size(); i++) {
- baza_ << train[i].dest << endl;
- baza_ << train[i].num << endl;
- baza_ << train[i].hour << endl;
- baza_ << train[i].minute << endl;
- }
- }
- cout << "Данные сохранены" << endl;
- system("pause");
- }
- else if (k == 2) {
- ofstream baza_(path, ios::out);
- if (baza_.is_open()) {
- for (int i = 0; i < train.size(); i++) {
- baza_ << train[i].dest;
- baza_ << train[i].num;
- baza_ << train[i].hour;
- baza_ << train[i].minute;
- }
- }
- cout << "Данные сохранены" << endl;
- system("pause");
- }
- else {
- cout << "Сохранение не удалось" << endl;
- system("pause");
- }
- break;
- }
- case 9: {
- Show(train);
- system("pause");
- }
- }
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement