Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdio.h>
- #include <iostream>
- #include <string.h>
- #include <conio.h>
- #include <cstdlib>
- #include <fstream>
- #include <iomanip>
- //#define filename "studs.txt"
- #define file_ext ".txt"
- void file_read(void); // Чтение из файла
- void file_edit(void); // Редактирование файла
- //void file_nremove(void); // Удаление нужной записи
- void file_delete(void); // Удаление файла
- void file_exist(void); // Проверка на существование файла
- void file_create(void); // Создание файла
- //void file_append(void); // Добавление записей в файл
- void file_search(void); // Поиск по файлу
- void name_view(void); // Вывод имени рабочего файла
- void name_check(void); // Проверка введенного имени
- const int elems = 100; // Кол-во студентов Не требуется
- FILE *f;
- char *filename;
- int choice;
- struct book { // Структура для книги
- unsigned short int ID;
- char *fname;
- char *lname;
- char *birth_day;
- char *birth_month;
- char *birth_year;
- char *phone_number;
- char *email;
- } ad_book[100];
- /*
- struct stds_sorted { // Структура для студентов и баллов
- char lnam[50];
- int mar[1];
- } student_sorted[ch];
- */
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "Russian");
- cout << "=== Выберите нужную опцию: \n";
- cout << "1. Создать новую Записную книгу \n";
- cout << "2. Использовать существующую \n";
- cout << "3. Выход \n";
- cout << "Введите номер выбора: ";
- cin >> choice;
- switch (choice) {
- case 1: { name_check(); break; }
- case 2: { name_check(); break; }
- case 3: { return 0; }
- default: {
- system("cls");
- cout << "Нет такой опции. Сделай выбор заново \n";
- main();
- }
- }
- name_view;
- cout << "Выберите нужную опцию: \n";
- cout << "1. Вывести записи из адресной книги \n";
- cout << "2. Добавить запись \n";
- cout << "3. Редактировать запись \n";
- cout << "4. Удалить запись \n";
- cout << "5. Поиск по записям в книге \n";
- cout << "6. Удалить адресную книгу \n";
- cout << "7. Выход \n\n";
- cout << "Введите цифру: ";
- cin >> choice;
- switch (choice) {
- case 1: { file_read(); break; }
- //case 2: { file_append(); break; }
- case 3: { file_edit(); break; }
- //case 4: { file_nremove; break;}
- case 5: { file_search(); break; }
- case 6: { file_delete(); break; }
- case 7: { return 0; }
- default: {
- system("cls");
- cout << "Нет такой опции. Сделай выбор заново \n";
- main();
- }
- }
- system("pause");
- return 0;
- }
- void file_read(void)
- {
- // Выведем данные из файла
- int num = 0,i;
- for (i = 0;i < elems;i++) {
- if (fread(&ad_book[i], sizeof(struct book), 1, f) != ferror(f)) num++;
- else break;
- }
- for (i = 0;i < elems;i++) {
- 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";
- }
- }
- void file_search(void)
- {
- int counter = 0;
- char *search_string;
- system("cls");
- cout << "По какой информации будет проводиться поиск? \n\n";
- cout << "1. Имя\n";
- cout << "2. Фамилия\n";
- cout << "3. День рождения\n";
- cout << "4. Месяц рождения\n";
- cout << "5. Год рождения\n";
- cout << "6. Мобильный телефон\n";
- cout << "7. Адрес эл. почты\n\n";
- cout << "Введите нужную цифру: ";
- cin >> choice;
- cout << "\n\n Введите искомую информацию: ";
- cin >> search_string;
- cout << "\n\n ====================== Искомая информация ======================";
- switch (choice) {
- case 1: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].fname, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- }
- case 2: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].lname, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "\nПо вашему запросу не найдено ни одной записи! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 3: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].birth_day, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 4: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].birth_month, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 5: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].birth_year, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 6: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].phone_number, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 7: {
- for (int i = 0;i < elems;i++) {
- if (strstr(ad_book[i].email, search_string)) {
- 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";
- counter++;
- }
- }
- if (counter == 0) cout << "Подобных записей не найдено! \n";
- else if (counter != 0) cout << "\nПо вашему запросу найдено " << counter << " записи(ей)";
- }
- case 8: {
- system("cls");
- main;
- }
- default: {
- system("cls");
- cout << "\n Неверная команда! Попробуйте ещё раз!";
- file_search;
- }
- }
- }
- void file_edit(void)
- {
- // Редактируем записи из файла. Выбор для редакторования по ID
- }
- void file_delete(void)
- {
- system("cls");
- if (remove(filename) != 0)
- {
- cout << "Ошибка удаления файла\n";
- system("pause");
- exit(1);
- }
- else {
- cout << "Файл успешно удалён\n";
- system("pause");
- exit(0);
- }
- }
- void file_exist(void)
- {
- ofstream outfile;
- FILE *f = fopen(filename, "r");
- if (f == NULL) outfile.open(filename);
- else {
- system("cls");
- cout << "Файл уже существует. Выберите другую опцию или введите другое имя файла\n";
- main();
- }
- }
- void file_create(void)
- {
- file_exist();
- ofstream outfile;
- FILE *f = fopen(filename, "r");
- if (f == NULL) outfile.open(filename);
- }
- void name_view(void)
- {
- cout << "Для работы выбран файл с именем: " << *filename << ".txt \n\n";
- }
- void name_check(void)
- {
- cout << "Введите имя файла (БЕЗ РАСШИРЕНИЯ): ";
- cin >> filename;
- //strcat(filename, file_ext);
- // Для нового файла. Делаем вызов функции создания
- if (choice == 1) {
- file_create;
- }
- // Для существующего. Проверяем наличие
- else if (choice == 2) {
- file_exist();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement