Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Header.h"
- int menu() {
- int n;
- do {
- fflush(stdin);
- printf("\tМеню 1-го уровня\n");
- printf("1. Меню для администратора\n");
- printf("2. Меню для пользователя\n");
- printf("3. Выход\n");
- printf("\tСделайте выбор чтобы продолжить: ");
- scanf("%d", &n);
- getchar();
- system("cls");
- } while (n<1 || n>3);
- return n;
- }
- int menu_admin() {
- int n;
- do {
- fflush(stdin);
- printf("\tМеню 2-го уровня(Администратор)\n");
- printf("1.Открытие файла с данными\n");
- printf("2.Добавление записи\n");
- printf("3.Редактирование записи\n");
- printf("4.Удаление записи\n");
- printf("5.Просмотр всех данных в табличной форме\n");
- printf("6.Фильтрация/сортировка/поиск данных\n");
- printf("7.Управление пользователями\n");
- printf("8.Выход в меню 1-го уровня\n");
- printf("\tСделайте выбор чтобы продолжить: ");
- scanf("%d", &n);
- getchar();
- system("cls");
- } while (n<1 || n >8);
- return n;
- }
- int menu_user() {
- int n;
- do {
- fflush(stdin);
- printf("\tМеню 3-го уровня(обычный пользователь)\n");
- printf("1.Открытие файла с данными\n");
- printf("2.Просмотр всех данных в табличной форме\n");
- printf("3.Фильтрация/сортировка/поиск данных\n");
- printf("4.Выход в меню 2-го уровня\n");
- printf("\tСделайте выбор чтобы продолжить: ");
- scanf("%d", &n);
- system("cls");
- getchar();
- } while (n<1 || n>4);
- return(n);
- }
- void add_razgovor(razgovor **begin, razgovor **end) {
- system("cls");
- razgovor *p = new razgovor;
- INFO *l;
- p->head = NULL;
- if (!*end) {
- printf("Введите фамилию (например Сергеев): ");
- fflush(stdin);
- gets_s(p->surname);
- l = new INFO;
- printf("Введите имя (например Сергей): ");
- fflush(stdin);
- gets_s(l->name);
- printf("Введите номер (например 3333333): ");
- fflush(stdin);
- scanf("%d", &l->number);
- printf("Введите дату звонка (например 12.12.2012): ");
- getchar();
- fflush(stdin);
- gets_s(l->data);
- printf("Введите время разговора (например 55): ");
- fflush(stdin);
- scanf("%d", &l->time);
- getchar();
- printf("Введите город (например Минск): ");
- fflush(stdin);
- gets_s(l->gorod);
- printf("Введите стоимость звонка (например 5.50): ");
- fflush(stdin);
- scanf("%f", &l->price);
- getchar();
- l->next = NULL;
- p->head = l;
- p->next = NULL;
- p->previous = NULL;
- *end = *begin = p;
- }
- else {
- printf("Введите фамилию (например Сергеев): ");
- fflush(stdin);
- gets_s(p->surname);
- l = new INFO;
- printf("Введите имя (например Сергей): ");
- fflush(stdin);
- gets_s(l->name);
- printf("Введите номер (например 3333333): ");
- fflush(stdin);
- scanf("%d", &l->number);
- getchar();
- printf("Введите дату звонка (например 12.12.2012): ");
- fflush(stdin);
- gets_s(l->data);
- printf("Введите время разговора (например 55 (мин)): ");
- fflush(stdin);
- scanf("%d", &l->time);
- getchar();
- printf("Введите город (например Минск): ");
- fflush(stdin);
- gets_s(l->gorod);
- printf("Введите стоимость звонка (например 5.50): ");
- fflush(stdin);
- scanf("%f", &l->price);
- getchar();
- l->next = NULL;
- p->head = l;
- p->previous = *end;
- p->next = NULL;
- (*end)->next = p;
- *end = p;
- }
- system("cls");
- }
- int indikator_user() {//Если возвращает ноль, то файл пуст
- FILE *fp = fopen("loginuser.txt", "r+");
- long int flag;
- if (!fp) {
- return NULL;
- }
- else {
- fseek(fp, 0, SEEK_END);//устанавливает внутренний указатель положения в файле в конец
- flag = ftell(fp);//возвращает текущее положение внутреннего указателя
- fclose(fp);
- if (!flag) return NULL;
- else return 1;
- }
- }
- int indikator_info() {//если возвращает ноль, то файл пуст
- FILE *fp = fopen("okp.txt", "r+");
- long int flag;
- if (!fp) {
- puts("Ошибка открытия файла");
- return NULL;
- }
- else {
- fseek(fp, 0, SEEK_END);//устанавливает внутренний указатель положения в файле в конец
- flag = ftell(fp);//возвращает текущее положение внутреннего указателя
- fclose(fp);
- if (!flag) return NULL;
- else return 1;
- }
- }
- void edit_razgovor(razgovor *begin) {
- system("cls");
- char new_surname[15], flag = 0;
- razgovor *p = begin;
- getchar();
- printf("Введите фамилию которую хотите изменить: ");
- fflush(stdin);
- gets_s(new_surname);
- while (p) {
- if (!strcmp(p->surname, new_surname)) {
- flag = 1;
- printf("Введите новое значение: ");
- fflush(stdin);
- gets_s(new_surname);
- getchar();
- strcpy(p->surname, new_surname);
- system("cls");
- puts("Фамилия успешно изменена");
- break;
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Данной фамилии нет в базе\n");
- }
- }
- void edit_info(razgovor *begin) {
- system("cls");
- int new_number, new_time, n, c, flag = 0;
- char new_name[15], new_data[15], new_gorod[15], surname[20];
- float new_price;
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите фамилию: ");
- fflush(stdin);
- gets_s(surname);
- system("cls");
- while (p) {
- if (!strcmp(surname, p->surname)) {
- flag = 1;
- printf("%-4s %-10s %-12s %-7s %-10s %-10s %-10s\n\n", "1.Имя", "2.Номер телефона", "3.Дата звонка", "4.Город", "5.Время разговора", "6.Стоимость звонка");
- l = p->head;
- printf("%-8s ", l->name);
- printf("%-15d ", l->number);
- printf("%-14s ", l->data);
- printf("%-12s ", l->gorod);
- printf("%-15d ", l->time);
- printf("%-8f \n", l->price);
- do {
- printf("Введите номер поля, которое вы хотите изменить: ");
- fflush(stdin);
- scanf("%d", &n);
- } while (n<1 || n>6);
- c = n;
- switch (c) {
- case 1:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- gets_s(new_name);
- strcpy(l->name, new_name);
- system("cls");
- puts("Имя успешно изменено");
- break;
- case 2:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- scanf("%d", &new_number);
- l->number = new_number;
- system("cls");
- puts("Номер успешно изменен");
- break;
- case 3:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- gets_s(new_data);
- strcpy(l->data, new_data);
- system("cls");
- puts("Дата звонка успешно изменена");
- break;
- case 4:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- gets_s(new_gorod);
- strcpy(l->gorod, new_gorod);
- system("cls");
- puts("Город успешно изменен:");
- break;
- case 5:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- scanf("%d", &new_time);
- l->time = new_time;
- system("cls");
- puts("Время разговора успешно изменено:");
- break;
- case 6:
- getchar();
- printf("Введите новое значение: ");
- fflush(stdin);
- scanf("%f", &new_price);
- l->price = new_price;
- system("cls");
- puts("Стоимость звонка успешно изменена");
- break;
- default:
- puts("Ввод некорректен");
- return;
- }
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет такого значения");
- }
- }
- void edit_note(razgovor **begin, razgovor **end) {
- int n;
- if (!begin) puts("Информация отсутствует");
- do {
- fflush(stdin);
- printf("1.Редактировать фамилию\n");
- printf("2.Редактировать информацию о абоненте\n");
- printf("3.Выход\n");
- printf("\tСделайте выбор чтобы продолжить: ");
- scanf("%d", &n);
- } while (n<1 || n>3);
- switch (n) {
- case 1:
- edit_razgovor(*begin);
- break;
- case 2:
- edit_info(*begin);
- break;
- case 3: break;
- }
- }
- void del_note(razgovor **begin, razgovor **end) {
- int flag = 0;
- char surname[15];
- razgovor *p, *key;
- p = (*end);
- printf("Введите фамилию абонента информацию о котором вы хотите удалить: ");
- fflush(stdin);
- gets_s(surname);
- while (p) {
- if (!strcmp(surname, p->surname)) {
- flag = 1;
- key = p;
- if (*end == *begin) {
- *end = (*end)->previous;
- *end = NULL;
- *begin = NULL;
- delete p;
- system("cls");
- puts("Информация об этом абоненте была успешно удалена");
- return;
- }
- if (p == *end) {
- *end = (*end)->previous;
- (*end)->next = NULL;
- delete key;
- system("cls");
- puts("Информация об этом абоненте была успешно удалена");
- return;
- }
- if (p == *begin) {
- *begin = (*begin)->next;
- (*begin)->previous = NULL;
- delete key;
- system("cls");
- puts("Информация об этом абоненте была успешно удалена");
- return;
- }
- if (p != (*end) && p != (*begin)) {
- (key->previous)->next = key->next;
- (key->next)->previous = key->previous;
- delete p;
- system("cls");
- puts("Информация об этом абоненте была успешно удалена");
- return;
- }
- }
- p = p->previous;
- }
- if (!flag) {
- system("cls");
- printf("Нет такого абонента\n");
- }
- }
- void print(razgovor *begin) {
- razgovor *p = begin;
- INFO *l;
- printf("%-11s %-10s %-10s %-12s %-7s %-9s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- printf("%-11s ", p->surname);
- l = p->head;
- printf("%-9s ", l->name);
- printf("%-12d ", l->number);
- printf("%-12s ", l->data);
- printf("%-10s ", l->gorod);
- printf("%-14d ", l->time);
- printf("%-15f \n", l->price);
- p = p->next;
- }
- puts("");
- return;
- }
- void search_note(razgovor *begin) {
- system("cls");
- int flag = 0;
- char surname[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите фамилию (Сергеев): ");
- fflush(stdin);
- gets_s(surname);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- if (!strcmp(p->surname, surname)) {
- flag = 1;
- l = p->head;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-8s ", l->gorod);
- printf("%-15d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет такого абонента");
- }
- }
- void filt_data(razgovor *begin) {
- system("cls");
- int flag = 0;
- char data[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите дату звонка (например 14.07.2018): ");
- fflush(stdin);
- gets_s(data);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (!strcmp(l->data, data)) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-8s ", l->gorod);
- printf("%-15d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет таких абонентов. Введите дату звонка еще раз");
- }
- }
- void filt_gorod(razgovor *begin) {
- system("cls");
- int flag = 0;
- char gorod[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите город: ");
- fflush(stdin);
- gets_s(gorod);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (!strcmp(l->gorod, gorod)) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-8s ", l->gorod);
- printf("%-15d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет таких абонентов. Введите город еще раз");
- }
- }
- void filt_time(razgovor *begin) {
- system("cls");
- int time, flag = 0;
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите время разговора: ");
- fflush(stdin);
- scanf("%d", &time);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (time == l->time) {
- flag = 1;
- printf("%-11s ", p->surname);
- l = p->head;
- printf("%-9s ", l->name);
- printf("%-12d ", l->number);
- printf("%-12s ", l->data);
- printf("%-17s ", l->gorod);
- printf("%-19d ", l->time);
- printf("%-15f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет разговоров с таким временем. Измените параметр фильтрации");
- }
- }
- void filt_time_gorod(razgovor *begin) {
- system("cls");
- int time, flag = 0;
- char gorod[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите время разговора: ");
- fflush(stdin);
- scanf("%d", &time);
- getchar();
- printf("Введите город: ");
- fflush(stdin);
- gets_s(gorod);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (time == l->time && !strcmp(l->gorod, gorod)) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-4s ", l->gorod);
- printf("%-8d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет разговоров с таким временем и городом. Измените параметры фильтрации");
- }
- }
- void filt_time_data(razgovor *begin) {
- system("cls");
- int time, flag = 0;
- char data[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите время разговора: ");
- fflush(stdin);
- scanf("%d", &time);
- getchar();
- printf("Введите дату звонка (например 12.12.2012): ");
- fflush(stdin);
- gets_s(data);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (time == l->time && !strcmp(l->data, data)) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-4s ", l->gorod);
- printf("%-8d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет разговоров с таким временем и датой. Измените параметры фильтрации");
- }
- }
- void filt_gorod_data(razgovor *begin) {
- system("cls");
- int flag = 0;
- char data[15], gorod[15];
- razgovor *p = begin;
- INFO *l;
- getchar();
- printf("Введите город: ");
- fflush(stdin);
- gets_s(gorod);
- printf("Введите дату звонка (например 12.12.2012): ");
- fflush(stdin);
- gets_s(data);
- system("cls");
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if (!strcmp(l->gorod, gorod) && !strcmp(l->data, data)) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-10d ", l->number);
- printf("%-15s ", l->data);
- printf("%-4s ", l->gorod);
- printf("%-8d ", l->time);
- printf("%-4f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- puts("Нет разговоров с такой датой и городом. Измените параметры фильтрации");
- }
- }
- void filter_note(razgovor *begin) {
- int n, filt_times, filt_price;
- if (!begin) {
- printf("нет информации\n");
- return;
- }
- do {
- fflush(stdin);
- printf("1.Фильтрация абонентов по времени разговора\n");
- printf("2.Фильтрация абонентов по стоимости звонка\n");
- printf("3.Фильтрация данных о абонентах по дате звонка\n");
- printf("4.Фильтрация данных о абонентах по городу\n");
- printf("5.Фильтрация данных о абонентах по времени разговора\n");
- printf("6.Фильтрация данных о абонентах по времени разговора и городу\n");
- printf("7.Фильтрация данных о абонентах по времени разговора и дате звонка\n");
- printf("8.Фильтрация абонентов по городу и дате звонка\n");
- printf("9.Поиск данных по фамилии\n");
- printf("10.Сортировка по номерам\n");
- printf("11.Сортировка по фамилиям\n");
- printf("12.Выход\n");
- printf("\tСделайте выбор чтобы продолжить: ");
- fflush(stdin);
- scanf("%d", &n);
- system("cls");
- } while (n<0 || n>12);
- switch (n) {
- case 1:
- printf("Введите время разговора, меньше которого звонки вы хотите увидеть: ");
- fflush(stdin);
- scanf("%d", &filt_times);
- system("cls");
- printf("Время разговора меньше %d : \n", filt_times);
- filter_by_time(begin, filt_times);
- break;
- case 2:
- printf("Введите стоимость звонка, меньше кторой вы хотите увидеть : ");
- fflush(stdin);
- scanf("%d", &filt_price);
- system("cls");
- printf(" Стоимость звонков меньших чем %d : \n", filt_price);
- filter_by_price(begin, filt_price);
- break;
- case 3:
- filt_data(begin);
- break;
- case 4:
- filt_gorod(begin);
- break;
- case 5:
- filt_time(begin);
- break;
- case 6:
- filt_time_gorod(begin);
- break;
- case 7:
- filt_time_data(begin);
- break;
- case 8:
- filt_gorod_data(begin);
- break;
- case 9:
- search_note(begin);
- break;
- case 10:
- sort_number(begin);
- break;
- case 11:
- sort_surname(begin);
- break;
- default:
- system("cls");
- return;
- }
- }
- void print_number(razgovor *begin) {
- razgovor *p = begin;
- INFO *l;
- printf("%-8s %-13s %-10s %-15s %-4s %-8s %-10s\n\n", "Номер", "Фамилия", "Имя", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- printf("%-5d ", l->number);
- printf("%-12s ", p->surname);
- printf("%-10s ", l->name);
- printf("%-15s ", l->data);
- printf("%-10s ", l->gorod);
- printf("%-14d ", l->time);
- printf("%-15f \n", l->price);
- p = p->next;
- }
- puts("");
- }
- void sort_surname(razgovor *begin) {
- razgovor *p, *c;
- int flag = 0, number, time;
- float price;
- char surname[20], name[15], gorod[15], data[15];
- while (!flag) {
- p = begin;
- c = p->next;
- flag = 1;
- while (c) {
- if (strncmp(p->surname, c->surname, 1)>0) {
- number = p->head->number;
- p->head->number = c->head->number;
- c->head->number = number;
- time = p->head->time;
- p->head->time = c->head->time;
- c->head->time = time;
- strcpy(name, p->head->name);
- strcpy(p->head->name, c->head->name);
- strcpy(c->head->name, name);
- strcpy(surname, p->surname);
- strcpy(p->surname, c->surname);
- strcpy(c->surname, surname);
- strcpy(gorod, p->head->gorod);
- strcpy(p->head->gorod, c->head->gorod);
- strcpy(c->head->gorod, gorod);
- strcpy(data, p->head->data);
- strcpy(p->head->data, c->head->data);
- strcpy(c->head->data, data);
- price = p->head->price;
- p->head->price = c->head->price;
- c->head->price = price;
- flag = 0;
- }
- p = p->next;
- c = c->next;
- }
- }
- print(begin);
- puts("");
- }
- void sort_number(razgovor *begin) {
- razgovor *p, *c;
- int flag = 0, number, time;
- float price;
- char surname[20], name[15], gorod[15], data[15];
- while (!flag) {
- p = begin;
- c = p->next;
- flag = 1;
- while (c) {
- if (p->head->number > c->head->number) {
- number = p->head->number;
- p->head->number = c->head->number;
- c->head->number = number;
- time = p->head->time;
- p->head->time = c->head->time;
- c->head->time = time;
- strcpy(name, p->head->name);
- strcpy(p->head->name, c->head->name);
- strcpy(c->head->name, name);
- strcpy(surname, p->surname);
- strcpy(p->surname, c->surname);
- strcpy(c->surname, surname);
- strcpy(gorod, p->head->gorod);
- strcpy(p->head->gorod, c->head->gorod);
- strcpy(c->head->gorod, gorod);
- strcpy(data, p->head->data);
- strcpy(p->head->data, c->head->data);
- strcpy(c->head->data, data);
- price = p->head->price;
- p->head->price = c->head->price;
- c->head->price = price;
- flag = 0;
- }
- p = p->next;
- c = c->next;
- }
- }
- print_number(begin);
- puts("");
- }
- void filter_by_time(razgovor *begin, int filt_time) {
- razgovor *p;
- INFO *l;
- int flag = 0;
- p = begin;
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if ((l->time)<filt_time) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-9s ", l->name);
- printf("%-12d ", l->number);
- printf("%-12s ", l->data);
- printf("%-10s ", l->gorod);
- printf("%-14d ", l->time);
- printf("%-15f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- printf("Нет таких звонков\n");
- }
- }
- void filter_by_price(razgovor *begin, int filt_price) {
- razgovor *p = begin;;
- INFO *l;
- int flag = 0;
- printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
- while (p) {
- l = p->head;
- if ((l->price)<filt_price) {
- flag = 1;
- printf("%-11s ", p->surname);
- printf("%-9s ", l->name);
- printf("%-12d ", l->number);
- printf("%-12s ", l->data);
- printf("%-10s ", l->gorod);
- printf("%-14d ", l->time);
- printf("%-15f \n", l->price);
- }
- p = p->next;
- }
- if (!flag) {
- system("cls");
- printf("Нет таких звонков\n");
- }
- }
- int enter_admin() {
- FILE *fp;
- char login[11], password[9], log[11], pass[9];
- int flag = 0;
- if (!(fp = fopen("loginadmin.txt", "rb"))) {
- if ((fp = fopen("loginadmin.txt", "w+b"))) {
- puts("Вы первый пользователь этой программы ");
- puts("Придумайте логин и пароль\n");
- printf(" Логин(макс. 10 символов): ");
- fflush(stdin);
- gets_s(login);
- fwrite(login, sizeof(login), 1, fp);
- //getchar();
- printf(" Пароль(макс. 8 символов): ");
- fflush(stdin);
- gets_s(password);
- fwrite(password, sizeof(password), 1, fp);
- //getchar();
- puts("Теперь вы администратор этой программы ");
- puts("Пожалуйста, нажмите любую клавишу чтобы продолжить");
- getchar();
- system("cls");
- return 1;
- }
- else puts("Ошибка создания файла");
- }
- else {
- fflush(stdin);
- fread(login, sizeof(login), 1, fp);
- fflush(stdin);
- fread(password, sizeof(password), 1, fp);
- printf("Введите логин(макс. 10 символов): ");
- fflush(stdin);
- gets_s(log);
- //getchar();
- printf("Введите пароль(макс. 8 символов): ");
- fflush(stdin);
- gets_s(pass);
- //getchar();
- system("cls");
- if (!strcmp(password, pass) && !strcmp(login, log)) {
- flag = 1;
- system("cls");
- fclose(fp);
- return 1;
- }
- if (!flag) {
- system("cls");
- puts("Неверный логин или пароль");
- }
- }
- fclose(fp);
- return 0;
- }
- int enter_user_mini(USER **start, USER **finish, int flag) {
- if (!flag) {
- if (read_user(start, finish)) {
- return 1;
- }
- }
- char log[11], pass[9];
- int flagg = 0;
- USER *u = *start;
- getchar();
- printf("Введите логин(макс. 10 символов): ");
- fflush(stdin);
- gets_s(log);
- printf("Введите пароль(макс. 8 символов): ");
- fflush(stdin);
- gets_s(pass);
- system("cls");
- while (u) {
- if (!strcmp(u->password, pass) && !strcmp(u->login, log))
- {
- flagg = 1;
- system("cls");
- return NULL;
- }
- u = u->next;
- }
- if (!flagg) {
- system("cls");
- puts("Неверный логин или пароль");
- return 1;
- }
- return 1;
- }
- void add_user(USER **start, USER **finish) {
- USER *u = new USER;
- if (!*start) {
- getchar();
- printf("Введите логин(макс. 10 символов): ");
- fflush(stdin);
- gets_s(u->login);
- printf("Введите пароль(макс. 8 символов): ");
- fflush(stdin);
- gets_s(u->password);
- u->next = NULL;
- u->previous = NULL;
- *start = *finish = u;
- }
- else {
- getchar();
- printf("Введите логин(макс. 10 символов): ");
- fflush(stdin);
- gets_s(u->login);
- printf("Введите пароль(макс. 8 символов): ");
- fflush(stdin);
- gets_s(u->password);
- u->previous = *finish;
- u->next = NULL;
- (*finish)->next = u;
- *finish = u;
- }
- system("cls");
- puts("Поздравляем с регитсрацией ");
- }
- void enter_user(USER **start, USER **finish, razgovor **begin, razgovor **end) {
- int n, z = 0, flag = 0;
- do {
- do {
- fflush(stdin);
- printf("\tВход под пользователем(Меню 2-го уровня)\n");
- puts("1.Авторизация");
- puts("2.Регистрация");
- puts("3.Выход в меню 1-го уровня");
- printf("\tСделайте ваш выбор: ");
- scanf("%d", &n);
- system("cls");
- } while (n<1 || n>3);
- switch (n) {
- case 1:
- if (!enter_user_mini(start, finish, flag)) {
- user(begin, end);
- }
- break;
- case 2:
- add_user(start, finish);
- user(begin, end);
- flag++;
- break;
- case 3:
- z++;
- break;
- }
- } while (!z);
- }
- int read_user(USER **start, USER **finish) {
- if (!indikator_user()) {
- puts("Нет записей");
- return 1;
- }
- else {
- FILE *fp;
- if (!(fp = fopen("loginuser.txt", "r+"))) {
- puts("Ошибка открытия");
- return 2;
- }
- else {
- USER *u = new USER;
- while (!feof(fp)) {
- if (!(u = new USER)) {
- printf("Нет абонентов\n");
- return 3;
- }
- if (!*finish) {
- fflush(stdin);
- fscanf(fp, "%s ", u->login);
- fflush(stdin);
- fscanf(fp, "%s ", u->password);
- u->next = NULL;
- u->previous = NULL;
- *finish = *start = u;
- }
- else {
- fflush(stdin);
- fscanf(fp, "%s ", u->login);
- fflush(stdin);
- fscanf(fp, "%s ", u->password);
- u->previous = *finish;
- u->next = NULL;
- (*finish)->next = u;
- *finish = u;
- }
- }
- puts("Информация об абонентах успешно перенесена");
- fclose(fp);
- return NULL;
- }
- }
- }
- void del_user(USER **start, USER **finish) {
- int flag = 0;
- char login[11];
- USER *u, *s = nullptr, *key;
- u = *start;
- getchar();
- printf("Введите логин пользователя которого вы хотите удалить: ");
- fflush(stdin);
- gets_s(login);
- while (u) {
- if (!strcmp(login, u->login)) {
- flag = 1;
- if (*finish == *start) {
- *start = (*finish)->previous;
- if (!*finish) *start = NULL;
- delete u;
- system("cls");
- puts("Пользователь успешно удален");
- return;
- }
- if (u == (*finish)) {
- u = (*finish)->previous;
- delete *finish;
- u->next = NULL;
- (*finish) = u;
- system("cls");
- puts("Пользователь успешно удален");
- return;
- }
- if (u == (*start)) {
- key = (*start);
- (*start) = (*start)->next;
- delete key;
- (*start)->previous = NULL;
- system("cls");
- puts("Пользователь успешно удален");
- return;
- }
- if (u != (*finish) && u != (*start)) {
- key = u->previous;
- s->previous = key;
- key->next = u->next;
- delete u;
- system("cls");
- puts("Пользователь успешно удален");
- return;
- }
- }
- s = u;
- u = u->next;
- }
- if (!flag) printf("Нет такого пользователя\n");
- }
- void print_user(USER *start) {
- USER *u = start;
- printf("%-8s %-10s \n\n", "Логин", "Пароль");
- while (u) {
- printf("%-8s ", u->login);
- printf("%-8s \n", u->password);
- u = u->next;
- }
- puts("");
- }
- void write_user(USER *start) {
- USER *u = start;
- FILE *fp = fopen("loginuser.txt", "w+");
- while (u) {
- fflush(stdin);
- fprintf(fp, "%s ", u->login);
- fflush(stdin);
- fprintf(fp, "%s \n", u->password);
- u = u->next;
- }
- fclose(fp);
- }
- int mantime_user(USER **start, USER **finish) {
- int n;
- while (1) {
- do {
- fflush(stdin);
- puts("\tУправление пользователями");
- puts("1.Просмотр пользователей");
- puts("2.Удаление пользователей");
- puts("3.Выход");
- printf("\tСделайте ваш выбор: ");
- scanf("%d", &n);
- system("cls");
- } while (n<1 || n>3);
- switch (n) {
- case 1:
- print_user(*start);
- break;
- case 2:
- del_user(start, finish);
- break;
- case 3:
- if (start)
- {
- write_user(*start);
- finish = start = NULL;
- puts("Данные пользователей перенесены в файл");
- }
- return NULL;
- }
- }
- }
- int read_from_FILE(razgovor **begin, razgovor **end) {
- if (!indikator_info()) {
- puts("Нет записей");
- return 1;
- }
- else {
- FILE *fp;
- if (!(fp = fopen("okp.txt", "r+"))) {
- puts("Ошибка открытия");
- return 2;
- }
- else {
- razgovor *p = new razgovor;
- INFO *l;
- while (!feof(fp)) {
- if (!(p = new razgovor)) {
- printf("Нет абонентов\n");
- return 3;
- }
- p->head = NULL;
- if (!*end) {
- fflush(stdin);
- fscanf(fp, "%s ", p->surname);
- l = new INFO;
- fflush(stdin);
- fscanf(fp, "%s ", l->name);
- fflush(stdin);
- fscanf(fp, "%d ", &l->number);
- fflush(stdin);
- fscanf(fp, "%s ", l->data);
- fflush(stdin);
- fscanf(fp, "%d ", &l->time);
- fflush(stdin);
- fscanf(fp, "%s ", l->gorod);
- fflush(stdin);
- fscanf(fp, "%f ", &l->price);
- l->next = NULL;
- p->head = l;
- p->next = NULL;
- p->previous = NULL;
- (*end) = (*begin) = p;
- }
- else {
- fflush(stdin);
- fscanf(fp, "%s ", p->surname);
- l = new INFO;
- fflush(stdin);
- fscanf(fp, "%s ", l->name);
- fflush(stdin);
- fscanf(fp, "%d ", &l->number);
- fflush(stdin);
- fscanf(fp, "%s ", l->data);
- fflush(stdin);
- fscanf(fp, "%d ", &l->time);
- fflush(stdin);
- fscanf(fp, "%s ", l->gorod);
- fflush(stdin);
- fscanf(fp, "%f ", &l->price);
- l->next = p->head;
- p->head = l;
- p->previous = *end;
- p->next = NULL;
- (*end)->next = p;
- *end = p;
- }
- }
- puts("Информация успешно перенесена");
- fclose(fp);
- return NULL;
- }
- }
- }
- void write_in_FILE(razgovor *begin) {
- razgovor *p = begin;
- INFO *l;
- FILE *fp = fopen("okp.txt", "w+");
- while (p) {
- fprintf(fp, "%s ", p->surname);
- l = p->head;
- fprintf(fp, "%s ", l->name);
- fprintf(fp, "%d ", l->number);
- fprintf(fp, "%s ", l->data);
- fprintf(fp, "%d ", l->time);
- fprintf(fp, "%s ", l->gorod);
- fprintf(fp, "%f \n", l->price);
- p = p->next;
- }
- fclose(fp);
- }
- void admin(razgovor **begin, razgovor **end, USER **start, USER ** finish) {
- int label = 0, flaginfo = 0, flag = 0;
- do {
- switch (menu_admin()) {
- case 1:
- if (!flaginfo) {
- read_from_FILE(begin, end);
- flaginfo = 1;
- flag = 2;
- }
- else puts("Информация уже перенесена\n");
- break;
- case 2:
- add_razgovor(begin, end);
- break;
- case 3:
- if (flag == 2) edit_note(begin, end);
- else puts("Файл не открыт");
- break;
- case 4:
- if (flag == 2) del_note(begin, end);
- else puts("Файл не открыт");
- break;
- case 5:
- if (flag == 2) {
- if (!begin) {
- printf("Нет информации\n");
- break;
- }
- print(*begin);
- }
- else printf("Вы не открыли файл\n");
- break;
- case 6:
- if (flag == 2) {
- if (!begin) {
- printf("Нет информации\n");
- break;
- }
- filter_note(*begin);
- }
- else printf("Вы не открыли файл\n");
- break;
- case 7:
- if (!read_user(start, finish)) {
- if (start) {
- mantime_user(start, finish);
- }
- else {
- puts("Нет пользователей");
- }
- }
- break;
- case 8:
- if (begin) {
- write_in_FILE(*begin);
- puts("Информация об звонках перенесена в файл");
- }
- begin = NULL;
- end = NULL;
- label = 1;
- break;
- }
- } while (!label);
- }
- void user(razgovor **begin, razgovor **end) {
- int f = 0, label2, flaginfo = 0, flag = 0;
- do {
- label2 = 0;
- switch (menu_user()) {
- case 1:
- if (!flaginfo) {
- read_from_FILE(begin, end);
- flaginfo = 1;
- flag = 2;
- }
- else printf("Информация уже перенесена");
- break;
- case 2:
- if (flag == 2) {
- if (!begin) {
- printf("нет информации\n");
- break;
- }
- print(*begin);
- }
- else printf("Вы не открыли файл\n");
- break;
- case 3:
- if (flag == 2) {
- if (!begin) {
- printf("нет информации1\n");
- break;
- }
- filter_note(*begin);
- }
- else printf("Вы не открыли файл\n");
- break;
- case 4:
- f++;
- break;
- }
- } while (!f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement