Advertisement
fabis_sparks

LenaKurs

May 18th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.98 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <string.h>
  5. #include <conio.h>
  6. #include <cstdlib>
  7. #include <fstream>
  8. #include <iomanip>
  9.  
  10. //#define filename "studs.txt"
  11. #define file_ext ".txt"
  12. void file_read(void); // Чтение из файла
  13. void file_edit(void); // Редактирование файла
  14. //void file_nremove(void); // Удаление нужной записи
  15. void file_delete(void); // Удаление файла
  16. void file_exist(void); // Проверка на существование файла
  17. void file_create(void); // Создание файла
  18. //void file_append(void); // Добавление записей в файл
  19. void file_search(void); // Поиск по файлу
  20. void name_view(void); // Вывод имени рабочего файла
  21. void name_check(void); // Проверка введенного имени
  22.  
  23. const int elems = 100; // Кол-во студентов Не требуется
  24. FILE *f;
  25. char *filename;
  26. int choice;
  27. struct book { // Структура для книги
  28.     unsigned short int ID;
  29.     char *fname;
  30.     char *lname;
  31.     char *birth_day;
  32.     char *birth_month;
  33.     char *birth_year;
  34.     char *phone_number;
  35.     char *email;
  36. } ad_book[100];
  37. /*
  38. struct stds_sorted { // Структура для студентов и баллов
  39. char lnam[50];
  40. int mar[1];
  41. } student_sorted[ch];
  42. */
  43.  
  44. using namespace std;
  45. int main()
  46. {
  47.     setlocale(LC_ALL, "Russian");
  48.  
  49.     cout << "=== Выберите нужную опцию: \n";
  50.     cout << "1. Создать новую Записную книгу \n";
  51.     cout << "2. Использовать существующую \n";
  52.     cout << "3. Выход \n";
  53.     cout << "Введите номер выбора: ";
  54.     cin >> choice;
  55.     switch (choice) {
  56.     case 1: { name_check(); break; }
  57.     case 2: { name_check(); break; }
  58.     case 3: { return 0; }
  59.     default: {
  60.         system("cls");
  61.         cout << "Нет такой опции. Сделай выбор заново \n";
  62.         main();
  63.     }
  64.     }
  65.     name_view;
  66.     cout << "Выберите нужную опцию: \n";
  67.     cout << "1. Вывести записи из адресной книги \n";
  68.     cout << "2. Добавить запись \n";
  69.     cout << "3. Редактировать запись \n";
  70.     cout << "4. Удалить запись \n";
  71.     cout << "5. Поиск по записям в книге \n";
  72.     cout << "6. Удалить адресную книгу \n";
  73.     cout << "7. Выход \n\n";
  74.     cout << "Введите цифру: ";
  75.     cin >> choice;
  76.     switch (choice) {
  77.     case 1: { file_read(); break; }
  78.     //case 2: { file_append(); break; }
  79.     case 3: { file_edit(); break; }
  80.     //case 4: { file_nremove; break;}
  81.     case 5: { file_search(); break; }
  82.     case 6: { file_delete(); break; }
  83.     case 7: { return 0; }
  84.     default: {
  85.         system("cls");
  86.         cout << "Нет такой опции. Сделай выбор заново \n";
  87.         main();
  88.     }
  89.     }
  90.     system("pause");
  91.     return 0;
  92. }
  93.  
  94. void file_read(void)
  95. {
  96.     // Выведем данные из файла
  97.     int num = 0,i;
  98.     for (i = 0;i < elems;i++) {
  99.         if (fread(&ad_book[i], sizeof(struct book), 1, f) != ferror(f)) num++;
  100.         else break;
  101.     }
  102.     for (i = 0;i < elems;i++) {
  103.         cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  104.     }
  105. }
  106.  
  107. void file_search(void)
  108. {
  109.     int counter = 0;
  110.     char *search_string;
  111.     system("cls");
  112.     cout << "По какой информации будет проводиться поиск? \n\n";
  113.     cout << "1. Имя\n";
  114.     cout << "2. Фамилия\n";
  115.     cout << "3. День рождения\n";
  116.     cout << "4. Месяц рождения\n";
  117.     cout << "5. Год рождения\n";
  118.     cout << "6. Мобильный телефон\n";
  119.     cout << "7. Адрес эл. почты\n\n";
  120.     cout << "Введите нужную цифру: ";
  121.     cin >> choice;
  122.     cout << "\n\n Введите искомую информацию: ";
  123.     cin >> search_string;
  124.     cout << "\n\n ====================== Искомая информация ======================";
  125.     switch (choice) {
  126.     case 1: {
  127.         for (int i = 0;i < elems;i++) {
  128.             if (strstr(ad_book[i].fname, search_string)) {
  129.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  130.                 counter++;
  131.             }
  132.         }
  133.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  134.     }
  135.     case 2: {
  136.         for (int i = 0;i < elems;i++) {
  137.             if (strstr(ad_book[i].lname, search_string)) {
  138.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  139.                 counter++;
  140.             }
  141.         }
  142.         if (counter == 0) cout << "\nПо вашему запросу не найдено ни одной записи! \n";
  143.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  144.     }
  145.     case 3: {
  146.         for (int i = 0;i < elems;i++) {
  147.             if (strstr(ad_book[i].birth_day, search_string)) {
  148.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  149.                 counter++;
  150.             }
  151.         }
  152.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  153.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  154.     }
  155.     case 4: {
  156.         for (int i = 0;i < elems;i++) {
  157.             if (strstr(ad_book[i].birth_month, search_string)) {
  158.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  159.                 counter++;
  160.             }
  161.         }
  162.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  163.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  164.     }
  165.     case 5: {
  166.         for (int i = 0;i < elems;i++) {
  167.             if (strstr(ad_book[i].birth_year, search_string)) {
  168.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  169.                 counter++;
  170.             }
  171.         }
  172.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  173.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  174.     }
  175.     case 6: {
  176.         for (int i = 0;i < elems;i++) {
  177.             if (strstr(ad_book[i].phone_number, search_string)) {
  178.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  179.                 counter++;
  180.             }
  181.         }
  182.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  183.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  184.     }
  185.     case 7: {
  186.         for (int i = 0;i < elems;i++) {
  187.             if (strstr(ad_book[i].email, search_string)) {
  188.                 cout << setw(10) << ad_book[i].fname << "\t" << setw(10) << ad_book[i].lname << "\t" << setw(10) << ad_book[i].birth_day << "." << ad_book[i].birth_month << "." << ad_book[i].birth_year << "\t" << setw(12) << ad_book[i].phone_number << "\t" << setw(30) << ad_book[i].email << "\n";
  189.                 counter++;
  190.             }
  191.         }
  192.         if (counter == 0) cout << "Подобных записей не найдено! \n";
  193.         else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
  194.     }
  195.     case 8: {
  196.         system("cls");
  197.         main;
  198.     }
  199.     default: {
  200.         system("cls");
  201.         cout << "\n Неверная команда! Попробуйте ещё раз!";
  202.         file_search;
  203.  
  204.     }
  205.     }
  206.  
  207. }
  208.  
  209. void file_edit(void)
  210. {
  211.     // Редактируем записи из файла. Выбор для редакторования по ID
  212.  
  213. }
  214.  
  215. void file_delete(void)
  216. {
  217.     system("cls");
  218.     if (remove(filename) != 0)
  219.     {
  220.         cout << "Ошибка удаления файла\n";
  221.         system("pause");
  222.         exit(1);
  223.     }
  224.     else {
  225.         cout << "Файл успешно удалён\n";
  226.         system("pause");
  227.         exit(0);
  228.     }
  229.  
  230. }
  231.  
  232. void file_exist(void)
  233. {
  234.     ofstream outfile;
  235.     FILE *f = fopen(filename, "r");
  236.     if (f == NULL) outfile.open(filename);
  237.     else {
  238.         system("cls");
  239.         cout << "Файл уже существует. Выберите другую опцию или введите другое имя файла\n";
  240.         main();
  241.     }
  242. }
  243.  
  244. void file_create(void)
  245. {
  246.     file_exist();
  247.     ofstream outfile;
  248.     FILE *f = fopen(filename, "r");
  249.     if (f == NULL) outfile.open(filename);
  250. }
  251.  
  252. void name_view(void)
  253. {
  254.    
  255.     cout << "Для работы выбран файл с именем: " << *filename << ".txt \n\n";
  256. }
  257.  
  258. void name_check(void)
  259. {
  260.     cout << "Введите имя файла (БЕЗ РАСШИРЕНИЯ): ";
  261.     cin >> filename;
  262.     //strcat(filename, file_ext);
  263.     // Для нового файла. Делаем вызов функции создания
  264.     if (choice == 1) {
  265.         file_create;
  266.     }
  267.     // Для существующего. Проверяем наличие
  268.     else if (choice == 2) {
  269.         file_exist();
  270.     }
  271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement