Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <string>
- #include <string.h>
- #include <windows.h>
- #include <cstring>
- #include <conio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <ctime>
- using namespace std;
- const int M = 200;
- const int L = 200;
- struct books
- {
- char fio[200]; // фио автора
- //char iniz[100]; // инициалы автор
- char name[200]; //название книг
- int year;
- };
- void inputMasBoooksFile(books x[], int& n); //ввод из файла
- void outputMasBook(books x[], int n); //вывод на экран
- void addbooks(books x[], int& n); //добавление записи
- void delelteBooks(books x[], int& n); //удаление записи
- void sortyear(books x[], int n);
- void sortname(books x[], int n);
- int poiskyear(books x[], int n, int& earlybook, int& latebook); //создание поиска
- void outputMasBookSort(books y[], int k);
- void sortbookfio(books y[], int k);
- void outputMasBookFileSort(books x[], int n);
- void outputMasBooksFilepoisk(books x[], int a, int& earlybook, int& latebook);
- int main()
- {
- SetConsoleCP(1251);// для ввода русского языка
- SetConsoleOutputCP(1251); // для вывода русского языка
- setlocale(LC_ALL, "rus");
- books a[M], b[L];
- int m = 0, l = 0, t = 0, earlybook = 2020, latebook = 0, index = -2;
- cout << "Введите кол-во записей: ";
- cin >> l;
- while (1)
- {
- system("CLS");
- cout << " МЕНЮ \n";
- cout << "1. Ввести записи из файла.\n";
- cout << "2. Вывести исходную таблицу записей на экран.\n";
- cout << "3. Добавить книгу.\n";
- cout << "4. Удалить книгу.\n";
- cout << "5. Отсортировать массив по году издания в порядке возрастания.\n";
- cout << "6. Отсортировать массив по названию книг в алфавитном порядке.\n";
- cout << "7. Для данного автора найти его самую раннюю и самую последнюю книгу по году издания.\n";
- cout << "8. Вывести сортировку на экран.\n";
- cout << "9. Отсортировать массив по фио в алфавитном порядке, а при совпадении фио по году издания в порядке убывания.\n";
- cout << "10.Вывести массив в файл.\n";
- cout << "11.Вывести результат поиск в файл.\n";
- cout << "12.Завершить работу.\n";
- cout << "Ваш выбор (1-12): ";
- cin >> t;
- switch (t)
- {
- case 1: inputMasBoooksFile(a, m); break;
- case 2: outputMasBook(a, m); break;
- case 3: addbooks(a, m); break;
- case 4: delelteBooks(a, m); break;
- case 5: sortyear(a, m); break;
- case 6: sortname(a, m); break;
- case 7: index = poiskyear(a, m, earlybook, latebook); break;
- case 8: outputMasBookSort(a, m); break;
- case 9: sortbookfio(a, m); break;
- case 10: outputMasBookFileSort(a, m); break;
- case 11: outputMasBooksFilepoisk(a, index, earlybook, latebook); break;
- case 12: cout << "Конец работы."; system("pause");
- return 0;
- default: cout << "Нет такого номера меню.\n"; system("pause"); break;
- }
- }
- }
- void inputMasBoooksFile(books x[], int& n)//ввод данных из файла
- {
- char file[200], iniz[100];
- n = 0;
- ifstream fin;
- cout << "Введите имя входного файла: ";
- cin >> file;
- strcat_s(file, ".txt");
- fin.open(file);
- if (fin.fail()) {
- cout << "Ошибка! Файл не открывается!\n";
- system("pause");
- return;
- }
- while (!fin.eof())
- {
- fin >> x[n].fio >> iniz >> x[n].name >> x[n].year;
- strcat_s(x[n].fio, " ");
- strcat_s(x[n].fio, iniz);
- n++;
- }
- n--;
- fin.close();
- cout << "Файл введен.\n";
- system("pause");
- }
- void outputMasBook(books x[], int n)//вывод результата в текстовый файл
- {
- cout << " __________________________________________________________________________________________\n";
- cout << "| Список книг |\n";
- cout << "|__________________________________________________________________________________________|\n";
- cout << "| Номер | Фамилия и инициалы | Название | Год издания |\n";
- for (int i = 0; i < n; i++)
- cout << setw(18) << i + 1 << "|" << setw(28) << x[i].fio << "|" << setw(20) << x[i].name << "|" << setw(22) << x[i].year << "|" << endl;
- cout << "|__________________________________________________________________________________________|\n";
- system("pause");
- }
- void addbooks(books x[], int& n)//добавление строки
- {
- books t;
- char iniz[100];
- if (n == M) {
- cout << "Массив заполнен!\n";
- system("pause");
- return;
- }
- cout << "Фамилия: ";
- cin >> t.fio;
- cout << "Инициалы: ";
- cin >> iniz;
- strcat_s(t.fio, " ");
- strcat_s(t.fio, iniz);
- cout << "Название: ";
- cin >> t.name;
- cout << "Год издания:\n";
- cin >> t.year;
- system("pause");
- cout << "Запись добавлена.\n";
- x[n] = t;
- n = n + 1;
- system("pause");
- }
- void delelteBooks(books x[], int& n)//удаление строки
- {
- int i, j;
- char ch[8];
- outputMasBook(x, n);
- cout << "Номер удаляемой строки: ";
- cin >> j;
- j--;
- if (j < 0 || j >= n) {
- cout << "Нет такой строки!\n";
- system("pause");
- return;
- }
- cout << j + 1 << "-я строка:\n";
- cout << x[j].fio << " " << x[j].name << " " << x[j].year << " " << endl;
- cout << "Удалить: yes/ no?";
- cin >> ch;
- if (strcmp(ch, "no") == 0) return;
- if (strcmp(ch, "yes") != 0) {
- cout << "Неправильно введен ответ!\n";
- system("pause");
- return;
- }
- for (i = j + 1; i < n; i++)
- x[i - 1] = x[i];
- n--;
- cout << "Запись удалена.\n";
- system("pause");
- }
- void sortyear(books x[], int n) //сортировка по году издания в порядке возрастания
- {
- int i, j;
- books t;
- for (j = 0; j < n; j++)
- {
- for (i = 0; i < n; i++) {
- if (x[i].year > x[j].year) {
- t = x[i];
- x[i] = x[j];
- x[j] = t;
- }
- }
- }
- cout << "Записи отсортированы по году издания в порядке возрастания.\n";
- system("pause");
- }
- void sortname(books x[], int n) //сортировка по названию книги в алфавитном порядке
- {
- int i, j;
- books t;
- for (j = 0; j < n; j++)
- {
- for (i = 0; i < n; i++)
- {
- if (strcmp(x[i].name, x[j].name) > 0)
- {
- t = x[i];
- x[i] = x[j];
- x[j] = t;
- }
- }
- }
- cout << "Записи отсортированы по названию книг в алфавитном порядке.\n";
- system("pause");
- }
- int poiskyear(books x[], int n, int& earlybook, int& latebook)//Поиск самой ранней и самой поздней книг данного автора
- {
- int i, s = 0, a;
- char fio[200], iniz[100];
- cout << "Введите автора: ";
- cout << "Фамилия: ";
- cin >> fio;
- cout << "Инициалы: ";
- cin >> iniz;
- strcat_s(fio, " ");
- strcat_s(fio, iniz);
- for (i = 0; i < n; i++)
- if (strcmp(fio, x[i].fio) != 0)
- {
- s++;
- }
- a = s;
- if (s == n)
- {
- cout << "Такого автора нет\n";
- system("pause");
- return -1;
- }
- for (i = 0; i < n; i++)
- {
- if (strcmp(fio, x[i].fio) == 0)
- {
- earlybook = x[i].year;
- latebook = x[i].year;
- a = i;
- break;
- }
- }
- for (i = 0; i < n; i++)
- {
- if ((strcmp(fio, x[i].fio) == 0) && (earlybook > x[i].year)) earlybook = x[i].year;// ищем минимальное
- if ((strcmp(fio, x[i].fio) == 0) && (x[i].year > latebook)) latebook = x[i].year; // ищем максимальное
- }
- cout << " _______________________________________________________________________________________________________________\n";
- cout << "| Резуультат поиска |\n";
- cout << "|_______________________________________________________________________________________________________________|\n";
- cout << "| Фамилия и инициалы | Год издания самой ранней книги | Год издания самой поздней книги |\n";
- cout << "|" << setw(28) << x[a].fio << "|" << setw(40) << earlybook << "|" << setw(41) << latebook << "|" << endl;
- cout << "|_______________________________________________________________________________________________________________|\n";
- system("pause");
- return a;
- }
- void sortbookfio(books y[], int k)
- {
- for (int i = 1; i < k; i++)
- for (int j = 0; j < k - i; j++)
- if (strcmp(y[j].fio, y[j + 1].fio) > 0)
- {
- books c = y[j];
- y[j] = y[j + 1];
- y[j + 1] = c;
- }
- else if ((strcmp(y[j].fio, y[j + 1].fio) == 0))
- {
- if (y[j].year < y[j + 1].year)
- {
- {
- books c = y[j];
- y[j] = y[j + 1];
- y[j + 1] = c;
- }
- }
- }
- cout << "Записи отсортированы по фио в алфавитном порядке.\n";
- system("pause");
- }
- void outputMasBookSort(books y[], int k)//вывод сортировки на экран
- {
- cout << " ___________________________________________________________________________________________\n";
- cout << "| Список книг |\n";
- cout << "|__________________________________________________________________________________________|\n";
- cout << "| Номер | Фамилия и инициалы | Название | Год издания |\n";
- for (int i = 0; i < k; i++)
- cout << setw(18) << i + 1 << "|" << setw(28) << y[i].fio << "|" << setw(20) << y[i].name << "|" << setw(22) << y[i].year << "|" << endl;
- cout << "|__________________________________________________________________________________________|\n";
- system("pause");
- }
- void outputMasBookFileSort(books x[], int n)//вывод в файл сортировки
- {
- char file[200];
- ofstream fout;
- cout << "Введите имя выходного файла: ";
- cin >> file;
- strcat_s(file, ".txt");
- fout.open(file);
- if (fout.fail()) {
- cout << "Ошибка! Файл не открывается!\n";
- system("pause");;
- return;
- }
- fout << " _______________________________________________________________________________________\n";
- fout << "| Список книг |\n";
- fout << "|______________________________________________________________________________________|\n";
- fout << "| Номер | Фамилия и инициалы | Название | Год издания |\n";
- for (int i = 0; i < n; i++)
- fout << setw(17) << i + 1 << "|" << setw(28) << x[i].fio << "|" << setw(18) << x[i].name << "|" << setw(21) << x[i].year << "|" << endl;
- fout << "|______________________________________________________________________________________|\n";
- system("pause");
- cout << "Массив выведен в файл " << file << ".\n";
- system("pause");
- }
- void outputMasBooksFilepoisk(books x[], int a, int& earlybook, int& latebook)// вывод поиска в файл
- {
- if (a == -2) {
- cout << "Поиск не был выполнен\n";
- system("pause");
- return;
- }
- else if (a == -1) {
- cout << "Автора не существует\n";
- system("pause");
- return;
- }
- char file[200];
- ofstream fout;
- cout << "Введите имя выходного файла: ";
- cin >> file;
- strcat_s(file, ".txt");
- fout.open(file);
- if (fout.fail())
- {
- cout << "Ошибка! Файл не открывается!\n";
- system("pause");
- return;
- }
- fout << " _______________________________________________________________________________________________________________\n";
- fout << "| Список найденных книг |\n";
- fout << "|_______________________________________________________________________________________________________________|\n";
- fout << "| Фамилия и инициалы | Год издания самой ранней книги | Год издания самой поздней книги |\n";
- fout << "|" << setw(28) << x[a].fio << "|" << setw(40) << earlybook << "|" << setw(41) << latebook << "|" << endl;
- fout << "|_______________________________________________________________________________________________________________|\n";
- system("pause");
- cout << "Массив выведен в файл " << file << ".\n";
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement