Advertisement
ob_ekt_195

Untitled

Oct 21st, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.83 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<fstream>
  4. #pragma warning(disable:4996)
  5. #pragma warning(disable:4703)
  6. #pragma warning(disable:4326)
  7. using namespace std;
  8. int len;
  9. void exits() {
  10.     exit(1);
  11. }
  12. struct biblio_card {
  13.     int shifr, kol_str, year;
  14.     char author[32], name[32], izdat[16];
  15. };
  16. //---Очистить-массив--------------------------------------------------------------------------------------------------------------------------------------
  17. void ClearCards(biblio_card **card) {
  18.     card = (biblio_card **)realloc(card, 0);
  19.     len == 0;
  20. }
  21. //---Добавление-карточки----------------------------------------------------------------------------------------------------------------------------------
  22. biblio_card **AddCard(biblio_card **card) {
  23.     card = (biblio_card **)realloc(card, sizeof(biblio_card*)*(++len));
  24.     biblio_card *tmp = new biblio_card;
  25.     cout << "Введите шифр :";
  26.     cin >> tmp->shifr;
  27.     //scanf("%i", &tmp->shifr);
  28.     cout << "Введите автора :";
  29.     //cin >> tmp->author;
  30.     scanf("%s", tmp->author);
  31.     cout << "Введите название книги :";
  32.     //cin >> tmp->name;
  33.     scanf("%s", tmp->name);
  34.     cout << "Введите количество страниц :";
  35.     //cin >> tmp->kol_str;
  36.     scanf("%i", &tmp->kol_str);
  37.     cout << "Введите год издания :";
  38.     //cin >> tmp->year;
  39.     scanf("%i", &tmp->year);
  40.     cout << "Введите издательство :";
  41.     //cin >> tmp->izdat;
  42.     scanf("%s", tmp->izdat);
  43.     card[len - 1] = tmp;
  44.     return card;
  45. }
  46. //---Запись-в-файл----------------------------------------------------------------------------------------------------------------------------------------
  47. void FprintfCards(biblio_card **card) {
  48.     char file[32];
  49.     cout << "Введите имя файла: "; cin >> file;
  50.     FILE *f = fopen(file, "w");
  51.     fprintf(f, "%i\n", len);
  52.     for (int i = 0; i < len; i++) {
  53.         fprintf(f, "%i %s %s %i %i %s\n", card[i]->shifr, card[i]->author, card[i]->name, card[i]->kol_str, card[i]->year, card[i]->izdat);
  54.     }
  55.     fclose(f);
  56. }
  57. //---Чтение-из-файла--------------------------------------------------------------------------------------------------------------------------------------
  58. biblio_card **FreadCards(biblio_card **card) {
  59.     char file[32];
  60.     cout << "Введите имя файла: "; cin >> file;
  61.     FILE *f = fopen(file, "r");
  62.     fscanf(f, "%i\n", &len);
  63.     card = (biblio_card **)realloc(card, sizeof(biblio_card*)*len);
  64.     for (int i = 0; i < len; i++) {
  65.         fscanf(f, "%i %s %s %i %i %s\n", &card[i]->shifr, card[i]->author, card[i]->name, &card[i]->kol_str, &card[i]->year, card[i]->izdat);
  66.     }
  67.     return card;
  68. }
  69. //---Вывод-карточки-в-консоль-----------------------------------------------------------------------------------------------------------------------------
  70. void PrintCard(biblio_card *card) {
  71.     cout << endl << "Шифр: " << (card->shifr) << endl;
  72.     cout << "Автор: " << card->author << endl;
  73.     cout << "Наименование книги: " << card->name << endl;
  74.     cout << "Количество страниц: " << card->kol_str << endl;
  75.     cout << "Год издания: " << card->year << endl;
  76.     cout << "Издательство: " << card->izdat << endl;
  77. }
  78. //---Поиск-по-году----------------------------------------------------------------------------------------------------------------------------------------
  79. void Find_year(biblio_card **card)
  80. {
  81.     int year;
  82.     cout << "Введите год :"; cin >> year;
  83.     for (int i = 0; i < len; i++)
  84.     {
  85.         if (card[i]->year == year)
  86.         {
  87.             PrintCard(card[i]);
  88.         }
  89.     }
  90. }
  91. //---Поиск-по-автору--------------------------------------------------------------------------------------------------------------------------------------
  92. void Find_author(biblio_card **card)
  93. {
  94.     char author[32];
  95.     cout << "Введите год :"; cin >> author;
  96.     for (int i = 0; i <len; i++)
  97.     {
  98.         if (card[i]->author == author)
  99.         {
  100.             PrintCard(card[i]);
  101.         }
  102.     }
  103. }
  104. //---Вывод-всех-карточек----------------------------------------------------------------------------------------------------------------------------------
  105. void PrintCards(biblio_card **card) {
  106.     for (int i = 0; i < len; i++) {
  107.         PrintCard(card[i]);
  108.     }
  109. }
  110. //--------------------------------------------------------------------------------------------------------------------------------------------------------
  111. int main()
  112. {
  113.     setlocale(LC_ALL, "Russian");
  114.     system("chcp 1251");
  115.     biblio_card **card = (biblio_card**)malloc(0);
  116.    
  117.     int key;
  118.     for (;;) {
  119.         do {
  120.             cout << "-----------------------Меню программы-----------------------\n" << endl;
  121.             cout << "1) Чтение карточек из файла" << endl;
  122.             cout << "2) Добавление карточки" << endl;
  123.             cout << "3) Вывод карточек в файл" << endl;
  124.             cout << "4) Поиск по автору" << endl;
  125.             cout << "5) Поиск по году" << endl;
  126.             cout << "6) Вывод карточек в консоль" << endl;
  127.             cout << "7) Очистить массив" << endl;
  128.             cout << "0) Выход из программы" << endl;
  129.             cout << ">>> ";
  130.             cin >> key;
  131.             if (key == 0) exits();
  132.  
  133.             if (key != 1 && key != 2 && key != 3 && key != 4 && key != 5 && key != 6 && key != 7)
  134.                 cout << "введите правильный номер пункта меню" << endl;
  135.         } while ((key != 1 && key != 2 && key != 3 && key != 4 && key != 5 && key != 6 && key != 7));
  136.         switch (key)
  137.         {
  138.         case 1:
  139.             card = FreadCards(card);
  140.             break;
  141.         case 2:
  142.             card = AddCard(card);
  143.             break;
  144.         case 3:
  145.             FprintfCards(card);
  146.             break;
  147.         case 4:
  148.             Find_author(card);
  149.             break;
  150.         case 5:
  151.             Find_year(card);
  152.             break;
  153.         case 6:
  154.             PrintCards(card);
  155.             break;
  156.         case 7:
  157.             ClearCards(card);
  158.             break;
  159.         }
  160.  
  161.  
  162.  
  163.     }
  164.     return 0;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement