Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<string.h>
- #include<math.h>
- #include<Windows.h>
- #include "locale.h"
- #include <iostream>
- using namespace std;
- struct reis
- {
- double nomerReisa;
- }typedef reis;
- struct raspisanie
- {
- char type[40];
- char punkt[40];
- int vremyaOCh;
- int vremyaOM;
- int vremyaPCh;
- int vremyaPM;
- reis nomer;
- struct raspisanie *next;
- }typedef raspisanie;
- struct user
- {
- char role[10];
- char phone[15];
- char login[20];
- char password[64];
- char status[3];
- struct user *previous, *next;
- }typedef USER;
- raspisanie *begin=NULL;
- FILE *file,*file2,*file3;
- user Authorization(char[10]);
- void Registration(char*);
- bool Check_login(char*, FILE*); //проверка на существование логина
- void ban(); //забанить
- void antiban(); //разбанить
- int read_users(USER **start, USER **finish); //запись в список пользователей
- void shaw_users(); //вывод инфы о пользователях на экран
- void write_users(USER *nachalo);
- void makeadmin(); //сделать админом
- void vvod();//функция создания или открытия файла.
- void vivod();//функция вывода информации
- void insert();//функция вставки информации
- void schitivanie();//функция считывания данных в список
- void delete_all();//функция удаления всего списка по окончанию работы программы
- void glavnoe_menu();//функция перемещения указателя главного меню
- /*char *shifr1(char *); //шифровка логина
- char *shifr2(char *);//шифровка пароля*/
- void admin_vibor();//функция выбора для меню администратора
- int adminmenu();//функция перемещения указателя для меню администратора
- int userchoice();//перемещение указателя для меню пользователя
- void openfile();//функция открытия файла с данными
- void usermenu();//функция выбоа для меню пользователя
- int managemenu();//перемещение указателя для меню редактирования пользователей
- /*void delete_user();//функция удаления пользователя*/
- void usermanage();//функция выбора для меню редактирования пользователей
- void edit();//функция выбора для меню редактирования информации и редактирования этой информации
- int editchoice();//перемещение указателя для меню редактирования информации
- void del();//функция удаления информации
- void sort_reis();//функция сортировки информации по номеру рейса
- void sort_punkt();//функция сортировки по населёённому пункту
- void optim_time();//функция фильтрации данных по времени прибытия(для пользователей)
- void poisk_time();//функция поиска данных по времени прибытия
- void poisk_punkt();//функция поиска данных по названию населённого пункта
- void poisk_reis();//функция поиска данных по номеру рейса
- void filter_timeO();//фильтрация по времени отправления
- void filter_timeP();//фильтрация по времени прибытия
- void filter_punkt();//фильтрация по названию населённого пункта
- void filter_PandT();//фильтрация по времени отправления и населённому пункту
- void filter();//фильтрация по времени прибытия и населённому пункту
- void filte_reis_and_punkt();//фильтрация по пункту и номеру рейса
- int menusearch();//перемещение указателя для меню поиска
- void menusearch_choice();//функция выбора для меню поиска
- int menusort();//перемещение указателя для меню выбора сортировки
- void sortchoice();//функция выбора для меню выбора сортировки
- #define _CRT_SECURE_NO_WARNINGS
- #include"funcs.h"
- void main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- glavnoe_menu();
- }
- /*void vvod() //создание или открытие файла
- {
- if(begin!=NULL) //в опер памяти уже создан список
- {
- printf("Файл уже открыт!\n");
- Sleep(700); //приостанавливает работу потока на 700 мсек,если истекло время задержки возвращ.0
- return;
- }
- raspisanie *T, *st;
- if(!(T=(raspisanie*)malloc(sizeof(raspisanie)))) //если память не выделилась
- {
- printf("Доступа к памяти нет!\n");
- }
- T->nomer.nomerReisa=0;
- begin=T; //указатель на первый эл-т списка
- if((file=fopen("raspisanie.dat", "r+b"))==NULL) //если бинарный файл не открылся для чтения и записи
- {
- if((file=fopen("raspisanie.dat", "w+b"))==NULL) //Если файл не существует, он будет создан,и если он не создался
- {
- printf("Доступа к памяти нет!\n");
- fclose(file);
- return;
- }
- }
- else
- {
- printf("Файл открыт!\n");
- schitivanie();
- fclose(file);
- system("pause"); //ожидание ввода
- return;
- }
- if(begin==NULL)
- {
- printf("Нет доступа к памяти!\n");
- return;
- }
- int i,n,flag, pr;
- printf("Введите количество элементов списка\n");
- do
- {
- flag=0;
- fflush(stdin);
- pr=scanf("%d", &n);
- if(n<0 || pr==0)
- {
- flag=1;
- printf("Невереный ввод! Введите количество снова.\n");
- }
- }while(flag==1); //пока не введем верное кол-во будет повторяться
- rewind(file); //Устанавливает внутренний указатель положения файла в начальное положение (начало файла).
- for(i=0;i<n;i++)
- {
- double nom=0;
- char str[70];
- if(!(st=(raspisanie*)malloc(sizeof(raspisanie))))
- {
- printf("Доступа к памяти нет!\n");
- }
- printf("Введите номер рейса\n");
- int pr;
- do{
- fflush(stdin);
- pr=scanf("%15lf", nom); // l присвавает прочитанные данные переменной типа double
- }while(nom<0 || pr==0);
- st->nomer.nomerReisa=nom;
- printf("Введите тип автобуса\n");
- fflush(stdin);
- scanf("%15s", str);
- strcpy(st->type, str);
- str[0]='\0';
- printf("Введите пункт назначения\n");
- fflush(stdin);
- scanf("%15s",str);
- strcpy(st->punkt, str); //функция strcpy копирует строкум str в st->punkt
- str[0]='\0'; //конец строки
- printf("Введите время отправления атобуса\n");
- int k,m;
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &k);
- }while(k<0 || k>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m);
- }while(m<0 || m>60 || pr==0);
- st->vremyaOCh=k;st->vremyaOM=m;
- printf("Введите время прибытия атобуса\n");
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &k);
- }while(k<0 || k>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m);
- }while(m<0 || m>60 || pr==0);
- st->vremyaPCh=k;st->vremyaPM=m;
- fwrite(st, 1, sizeof(raspisanie), file);
- T->next=st;
- T=st;
- }
- T->next=NULL;
- fclose(file);
- }
- void insert() //вставка инфы
- {
- if((file=fopen("raspisanie.dat", "r+b"))==NULL) //для чтения и записи,начинает с начала
- {
- printf("Доступа к памяти нет!\n");
- return;
- }
- int newCol, pr;
- raspisanie st;
- system("cls"); //очистка экрана консоли
- printf("Введите количество записей, которые хотите добавить\n");
- do{
- fflush(stdin);
- pr=scanf("%15d", &newCol);
- }while(newCol<0 || pr==0); //Ввод количества новых записей.
- fseek(file,0, SEEK_END); //позиционирование файла,смещает на ноль позиций с конца в файле
- for(int i=0;i<newCol;i++)
- {
- printf("Введите номер рейса\n");
- fflush(stdin);
- do{
- fflush(stdin);
- pr=scanf("%15lf", &st.nomer.nomerReisa);
- }while(st.nomer.nomerReisa<0 || pr==0);
- printf("Введите тип автобуса\n");
- fflush(stdin);
- scanf("%15s", st.type);
- printf("Введите пункт назначения\n");
- fflush(stdin);
- scanf("%15s", st.punkt);
- printf("Введите время отправления атобуса\n");
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &st.vremyaOCh);
- }while(st.vremyaOCh<0 || st.vremyaOCh>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &st.vremyaOM);
- }while(st.vremyaOM<0 || st.vremyaOM>60 || pr==0);
- printf("Введите время прибытия атобуса\n");
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &st.vremyaPCh);
- }while(st.vremyaPCh<0 || st.vremyaPCh>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &st.vremyaPM);
- }while(st.vremyaPM<0 || st.vremyaPM>60 || pr==0);
- fwrite(&st, 1, sizeof(st), file);
- }
- schitivanie();
- fclose(file);
- }
- void schitivanie() //Считывает данные с файла в список.
- {
- raspisanie *T, *st,st1;
- if(!(T=(raspisanie*)malloc(sizeof(raspisanie))))
- {
- printf("Доступа к памяти нет!\n");
- return;
- }
- T->nomer.nomerReisa=0;
- begin=T;
- rewind(file); //указатель на начало файла
- int i=0;
- while(!feof(file)) //пока не наспуит конец файла
- {
- fread(&st1,sizeof(raspisanie),1,file);
- i++;
- }
- rewind(file);
- while(i>1)
- {
- fread(&st1,sizeof(raspisanie),1,file);
- if(!(st=(raspisanie*)malloc(sizeof(raspisanie))))
- {
- printf("Доступа к памяти нет!\n");
- }
- st->nomer.nomerReisa=st1.nomer.nomerReisa;
- strcpy(st->type, st1.type); //копируем строку st1.type в st.type
- strcpy(st->punkt, st1.punkt);
- st->vremyaOCh=st1.vremyaOCh;
- st->vremyaOM=st1.vremyaOM;
- st->vremyaPCh=st1.vremyaPCh;
- st->vremyaPM=st1.vremyaPM;
- T->next=st;
- T=st;
- i--;
- }
- T->next=NULL;
- }
- void vivod() //функция вывода информации
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- system("cls");
- struct raspisanie *st,*T;
- st=begin->next;
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL) //пока не наступит конец списка СПРОСИТЬ почему номер рейса всегда странно считывается
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10) //если минуты меньше 10 добавляем 0,просматриваем все возможные вар-ы
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void delete_all() //удаление списка по оканчанию работы проги
- {
- raspisanie *Reis;
- Reis=begin;
- while(Reis!=NULL)
- {
- begin=Reis;
- Reis=Reis->next;
- delete begin;
- }
- }*/
- /*char *shifr1(char login[40])//Шифровка логина
- {
- char s=0;
- char *str;
- if(!(str=(char*)malloc(80*sizeof(char))))
- {
- printf("Доступа к памяти нет!\n");
- }
- for(int i=0;i<strlen(login);i++)
- {
- s+=login[i];
- }
- s/=strlen(login);
- _itoa(s,str,10);
- strncat(str,login,1);
- return str;
- }
- char *shifr2(char pass[40])//Шифровка пароля
- {
- char s=0;
- char *str;
- if(!(str=(char*)malloc(80*sizeof(char))))
- {
- printf("Доступа к памяти нет!\n");
- }
- for(int i=0;i<strlen(pass);i++)
- {
- s+=pass[i];
- }
- s/=strlen(pass);
- _itoa(s,str,10);
- strncat(str,pass,1);
- return str;
- }*/
- void glavnoe_menu()
- {
- USER user;
- while (1)
- {
- int ch;
- int pr = -1;
- do
- {
- system("cls");
- printf("=====================================МЕНЮ:======================================\n");
- printf(" 1 - Войти под администратором.\n");
- printf(" 2 - Войти под пользователем.\n");
- printf(" 3 - Регистрация пользователя.\n");
- printf(" 4 - Выход из программы.\n");
- pr = scanf("%d", &ch);
- } while (ch > 4 || pr == 0 || ch < 0);
- switch (ch)
- {
- case 1: user = Authorization("admin");
- if (!strcmp(user.role, "admin")) {
- admin_vibor();
- }
- break;
- case 2: user = Authorization("user");
- if (!strcmp(user.role, "user")) {
- usermenu();
- }
- break;
- case 3:Registration("users.txt");
- break;
- case 4:delete_all();
- _exit(0);
- }
- }
- }
- int adminmenu()
- {
- int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("===============================Вход:Режим администратора========================\n");
- printf(" 1 - Создать/открыть файл с данными.\n");
- printf(" 2 - Добавить рейс.\n");
- printf(" 3 - Редактировать запись.\n");
- printf(" 4 - Удалить запись.\n");
- printf(" 5 - Просмотр данных в табличной форме.\n");
- printf(" 6 - Поиск.\n");
- printf(" 7 - Управление пользователями.\n");
- printf(" 8 - Назад.\n");
- pr=scanf("%d", &ch);
- }while(ch>8 || pr==0 || ch < 0);
- return ch;
- }
- user Authorization(char role[10])
- {
- char login[100]; //объявл массив логин
- char password[100]; //объявл массив пароль
- user user = {}; //создаем структуру данных юзер под именем юзер
- cout << "Введите логин\n";
- cin >> user.login; //вбиваем в поле логин структуры юзер
- cout << "Введите пароль\n";
- cin >> user.password; //в поле пароль структуры
- FILE *fp; //объявляем ссылку на переменную типа файл
- char estr[1000]; // переменная-мусорка,в нее записываем если пароль и логин не совпадает
- if (fp = fopen("users.txt", "r")) { //открываем файл,одновременно проверяя открылся ли он
- {
- while (!feof(fp)) { //пока не наступил конец файла
- fscanf(fp, "%s ", login); //читаем до первого пробела и записываем в переменную логин
- fscanf(fp, "%s ", password); //затем в переменную пасворд
- fscanf(fp, "%s", user.status);
- if (!strcmp(user.login, login) && !strcmp(user.password, password)) {
- if (!strcmp(user.status, "y")) { cout << "Пользователь забанен."; Sleep(700); fclose(fp); return user; }
- fscanf(fp, "%s ", user.role);
- if (strcmp(user.role, role)) { cout << "Неправильный логин либо пароль."; Sleep(700); fclose(fp); return user; }
- fscanf(fp, "%s\n", user.phone);
- return user;
- }
- else { fscanf(fp, "%[^\n]s", estr); }
- }
- if (strcmp(user.role, role)) {
- cout << " Неправильный логин либо пароль."; Sleep(700);
- }fclose(fp);
- return user;
- }
- }
- else {
- printf("\nОшибка открытия файла\n"); Sleep(700); glavnoe_menu();
- }
- void glavnoe_menu();
- }
- void Registration(char *filename) {
- FILE *fp;
- char* file_name = "users.txt";
- char *log;
- char *pass;
- char *phone;
- if (fp = fopen(file_name, "a+")) {
- printf("Регистрация пользователя");
- log = (char*)malloc(sizeof(char));
- pass = (char*)malloc(sizeof(char));
- phone = (char*)malloc(sizeof(char));
- printf("\nВведите логин: ");
- scanf("%s", log);
- if (Check_login(log, fp)) {
- printf("\nВведите пароль: ");
- scanf("%s", pass);
- printf("\nВведите номер телефона: ");
- scanf("%s", phone);
- printf("Пользователь зарегистрирован.\n"); Sleep(700);
- fprintf(fp, "\n%s %s n user %s", log, pass, phone);
- void glavnoe_menu();
- }
- else {
- printf("\nПользователь с таким логином уже существует!\nПопробуйте еще раз.\n\n"); Sleep(700);
- Registration("users.txt");
- }
- }
- else {
- printf("\nОшибка открытия файла\n");
- glavnoe_menu();
- }
- fclose(fp);
- printf("\n");
- void glavnoe_menu();
- }
- bool Check_login(char* log, FILE *fp) {
- char login[100];
- char buf[500];
- while (!feof(fp)) {
- fscanf(fp, "%s ", login);
- if (!strcmp(login, log)) {
- return false;
- }
- fscanf(fp, "\n ", buf);
- }
- return true;
- }
- void admin_vibor()//функция меню администратора
- {
- while(1)
- {
- switch(adminmenu()) {
- case 1:
- /*vvod()*/;
- break;
- case 2:
- /* insert()*/;
- break;
- case 3:
- /* edit()*/;
- break;
- case 4:/* del()*/;
- break;
- case 5:/* sortchoice()*/;
- break;
- case 6: /*menusearch_choice()*/;
- break;
- case 7: usermanage();
- break;
- case 8: return;
- }
- }
- }
- int userchoice()
- {int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("===============================Меню:Режим пользователя========================\n");
- printf(" 1 - Открыть файл.\n");
- printf(" 2 - Просмотр всех данных в табличной форме.\n");
- printf(" 3 - Поиск оптимального времени.\n");
- printf(" 4 - Поиск.\n");
- printf(" 5 - Назад.\n");
- pr=scanf("%d", &ch);
- }while(ch>5 || pr==0|| ch<0);
- return ch;
- }
- void usermenu()
- {
- while(1)
- {
- switch(userchoice()) {
- case 1:
- /* openfile()*/;
- break;
- case 2: /*sortchoice()*/;
- break;
- case 3:
- /*optim_time()*/;
- break;
- case 4: /*menusearch_choice()*/;
- break;
- case 5: return;
- }
- }
- }
- void openfile()
- {
- if(begin!=NULL)
- {
- printf("Файл уже открыт!\n");
- Sleep(700);
- return;
- }
- if(!(file=fopen("raspisanie.dat", "rb")))
- {
- printf("Файл ещё не создан. Обратитесь позже!\n");
- return;
- }
- printf("Файл открыт!\n");
- schitivanie();
- fclose(file);
- Sleep(600);
- }
- void usermanage()
- {
- while(1)
- {
- switch(managemenu())
- {
- case 1: ban();
- break;
- case 2: antiban();
- break;
- case 3: makeadmin();
- break;
- case 4: shaw_users();
- system("pause");
- break;
- case 5: return;
- }
- }
- }
- int managemenu()
- {
- int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("==================================Управление:===================================\n");
- printf(" 1 - Забанить пользователя\n");
- printf(" 2 - Разбанить пользователя\n");
- printf(" 3 - Назначить пользователя админом\n");
- printf(" 4 - Просмотр всех пользователей\n");
- printf(" 5 - Назад\n");
- pr=scanf("%d", &ch);
- }while(ch>5 || pr==0 || ch<0);
- return ch;
- }
- int read_users(USER **start, USER **finish) {
- FILE *fp;
- if (!(fp = fopen("users.txt", "r+"))) {
- printf("Ни один не зарегестрирован\n");
- return 1;
- }
- else {
- char log[100];
- char pass[100];
- int flag = 0;
- USER *p;
- while (!feof(fp)) {
- if (!*start) {
- p = new USER;
- fscanf(fp, "%s ", p->login);
- fscanf(fp, "%s ", p->password);
- int a = strlen(p->password);
- for (int i = 0; i < a; i++) p->password[i] -= 2;
- fscanf(fp, "%s ", p->status);
- fscanf(fp, "%s ", p->role);
- fscanf(fp, "%s ", p->phone);
- p->next = p->previous = NULL;
- *start = *finish = p;
- }
- else {
- p = new USER;
- fscanf(fp, "%s ", p->login);
- fscanf(fp, "%s ", p->password);
- int a = strlen(p->password);
- for (int i = 0; i < a; i++) p->password[i] -= 2;
- fscanf(fp, "%s ", p->status);
- fscanf(fp, "%s ", p->role);
- fscanf(fp, "%s ", p->phone);
- p->previous = *finish;
- p->next = NULL;
- (*finish)->next = p;
- *finish = p;
- }
- }
- fclose(fp);
- }
- return 0;
- }
- void shaw_users() {
- USER *nachalo = NULL, *end = NULL;
- int z = read_users(&nachalo, &end);
- if (!z) {
- USER *p = nachalo;
- printf("%-10s %-10s %-10s %-10s %-10s \n\n", "Логин", "Пароль", "Статус", "Роль", "Телефон");
- while (p) {
- printf("%-10s ", p->login);
- printf("%-10s ", p->password);
- printf("%-10s ", p->status);
- printf("%-10s ", p->role);
- printf("%-10s\n", p->phone);
- p = p->next;
- }
- }
- printf("\n");
- }
- void write_users(USER *nachalo) {
- USER *p = nachalo;
- FILE *ff;
- ff = fopen("users.txt", "w+");
- if (ff == NULL)
- {
- printf("Файл users.txt не найден\n");
- return;
- }
- else {
- while (p) {
- int a = strlen(p->password);
- for (int i = 0; i < a; i++) p->password[i] += 2;
- fprintf(ff, "%s %s %s %s %s\n", p->login, p->password, p->status, p->role, p->phone);
- p = p->next;
- }
- fclose(ff);
- }
- }
- void ban() {
- system("cls");
- USER *nachalo = NULL, *end = NULL;
- int z = read_users(&nachalo, &end);
- if (!z) {
- USER *p = nachalo;
- printf("%-10s %-10s %-10s %-10s %-10s \n\n", "Логин", "Пароль", "Статус", "Роль", "Телефон");
- while (p) {
- printf("%-10s ", p->login);
- printf("%-10s ", p->password);
- printf("%-10s ", p->status);
- printf("%-10s ", p->role);
- printf("%-10s\n", p->phone);
- p = p->next;
- }
- char name[50];
- printf("Напишите логин пользователя, которого вы хотите забанить: ");
- cin >> name;
- if (cin.good())
- {
- cin.ignore(20, '\n');
- }
- cin.clear();
- USER *u = nachalo;
- while (u) {
- if (!strcmp(name, u->login)) {
- strcpy_s(u->status, "y");
- }
- u = u->next;
- }
- write_users(nachalo);
- system("cls");
- }
- }
- void antiban() {
- system("cls");
- USER *nachalo = NULL, *end = NULL;
- int z = read_users(&nachalo, &end);
- if (!z) {
- USER *p = nachalo;
- printf("%-10s %-10s %-10s %-10s %-10s \n\n", "Логин", "Пароль", "Статус", "Роль", "Телефон");
- while (p) {
- printf("%-10s ", p->login);
- printf("%-10s ", p->password);
- printf("%-10s ", p->status);
- printf("%-10s ", p->role);
- printf("%-10s\n", p->phone);
- p = p->next;
- }
- char name[50];
- printf("\nВведите логин пользователя которого вы хотите разбанить: ");
- cin >> name;
- if (cin.good())
- {
- cin.ignore(20, '\n');
- }
- cin.clear();
- USER *u = nachalo;
- while (u) {
- if (!strcmp(name, u->login)) {
- strcpy_s(u->status, "n");
- }
- u = u->next;
- }
- write_users(nachalo);
- system("cls");
- }
- }
- void makeadmin() {
- system("cls");
- USER *nachalo = NULL, *end = NULL;
- int z = read_users(&nachalo, &end);
- if (!z) {
- USER *p = nachalo;
- printf("%-10s %-10s %-10s %-10s %-10s \n\n", "Логин", "Пароль", "Статус", "Роль", "Телефон");
- while (p) {
- printf("%-10s ", p->login);
- printf("%-10s ", p->password);
- printf("%-10s ", p->status);
- printf("%-10s ", p->role);
- printf("%-10s\n", p->phone);
- p = p->next;
- }
- char name[50];
- printf("\nВведите логин пользователя которого вы хотите назначить админом: ");
- cin.ignore(cin.rdbuf()->in_avail());
- cin.getline(name, 50);
- USER *u = nachalo;
- while (u) {
- if (!strcmp(name, u->login)) {
- strcpy_s(u->role, "admin");
- }
- u = u->next;
- }
- write_users(nachalo);
- system("cls");
- }
- }
- /*void edit_pass()
- {
- char pass[40], str[40],str1[40], login[40],str2[40];char strlog[40];
- if(!(file3=fopen("usersname.txt", "r+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file3);
- return;
- }
- if(!(file2=fopen("users.txt", "r+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file2);
- return;
- }
- int i, j, schet=0;
- printf("\n");
- while(feof(file3)==0)
- {
- fgets(str1,40,file3);
- schet++;
- }
- schet--;
- str1[0]='\0';
- rewind(file3);
- for(i=0;i<schet;i++)
- {
- fgets(str1,40,file3);
- printf("%d.",i+1);puts(str1);
- }
- printf("Выберите пользователя, пароль которого вы хотите редактировать\n");
- int nomer;
- scanf("%d", &nomer);
- rewind(file3);
- for(i=0;i<nomer;i++)
- {
- str1[0]='\0';
- fgets(str1,40,file3);
- str1[strlen(str1)-1]='\0';
- }
- while(feof(file2)==0)
- {
- fgets(str,40,file2);
- str[strlen(str)-1]='\0';
- if(!(strstr(str,shifr1(str1))))
- {
- strcpy(strlog,shifr1(str1));
- printf("Введите новый пароль\n");
- fflush(stdin);
- scanf("%39s",pass);
- strcpy(str2, shifr2(pass));
- strcat(strlog,str2);
- break;
- }
- }
- vhod users[100];
- rewind(file2);
- int s=0;
- while(feof(file2)==0)
- {
- fgets(str1,40,file2);
- s++;}s--;rewind(file2);
- for(i=0;i<s;i++)
- {
- str1[0]='\0';
- fgets(str1,40,file2);
- str1[strlen(str1)-1]='\0';
- strcpy(users[i].pass, str1);
- }
- fclose(file2);
- if(!(file2=fopen("users.txt", "w+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file2);
- return;
- }
- users[nomer].pass[0]='\0';
- strcpy(users[nomer].pass, strlog);
- for(j=0;j<s;j++)
- {
- fprintf(file2,"%s\n",users[j].pass);
- }
- fclose(file2);
- fclose(file3);
- }
- void delete_user()
- {
- char str1[40],str2[40];
- if(!(file3=fopen("usersname.txt", "r+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file3);
- return;
- }
- if(!(file2=fopen("users.txt", "r+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file2);
- return;
- }
- int i, j, schet=0;
- printf("\n");
- while(feof(file3)==0)
- {
- fgets(str1,40,file3);
- schet++;
- }
- schet--;
- str1[0]='\0';
- rewind(file3);
- for(i=0;i<schet;i++)
- {
- fgets(str1,40,file3);
- printf("%d.",i+1);puts(str1);
- }
- printf("Выберите пользователя, которого вы хотите удалить\n");
- int nomer;
- int pr=-1;
- do
- {
- pr=scanf("%d", &nomer);
- }while(nomer<0 || pr==0);
- rewind(file3);
- vhod users[100];
- rewind(file2);
- int s=0;
- while(feof(file2)==0)
- {
- fgets(str1,40,file2);
- s++;}s--;rewind(file2);
- for(i=0;i<s;i++)
- {
- str1[0]='\0';
- fgets(str1,40,file2);
- str1[strlen(str1)-1]='\0';
- strcpy(users[i].pass, str1);
- if(i<s-1)
- {
- str2[0]='\0';
- fgets(str2,40,file3);
- str2[strlen(str2)-1]='\0';
- strcpy(users[i].login, str2);
- }
- }
- fclose(file2);
- fclose(file3);
- if(!(file2=fopen("users.txt", "w+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file2);
- return;
- }
- if(!(file3=fopen("usersname.txt", "w+t")))
- {
- printf("Доступа к памяти нет!\n");
- fclose(file3);
- return;
- }
- for(j=0;j<s;j++)
- {
- if(j==nomer) j++;
- fprintf(file2,"%s\n",users[j].pass);
- }
- for(j=0;j<s-1;j++)
- {
- if(j==nomer-1) j++;
- if(j<s-1)
- fprintf(file3,"%s\n",users[j].login);
- }
- fclose(file2);
- fclose(file3);
- }*/
- void edit()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- int nomer, pr;
- raspisanie *rasp;
- rasp=begin->next;
- int i=0;
- while(rasp!=NULL)
- {
- i++;
- rasp=rasp->next;
- }
- int flag;
- do
- {
- system("cls");
- vivod();
- printf("Введите номер позиции рейса в таблице, который хотите отредактировать\n");
- int p=0;
- flag=0;
- fflush(stdin);
- pr=scanf("%15d", &nomer);
- if(nomer>i || nomer<0 || pr==0)
- {
- printf("Неверный ввод!. Попробовать снова?\n1.Да\n2.Нет");
- int choice;
- flag=0;
- int rp=-1;
- do{
- rp=scanf("%d",&choice);
- }while(choice<0 || rp==0);
- switch(choice)
- {
- case 1:
- flag=1;printf("\n");
- break;
- case 2:return;
- break;
- default: printf("\nНеверное значение.\n");
- Sleep(700);
- return;
- }
- }
- }while(flag==1);
- raspisanie *red, red2;
- red=begin;
- for(i=0;i<nomer;i++)
- {
- red=red->next;
- }
- red2=(*red);
- int flag2=0;
- int nom;
- while(flag2!=1)
- {
- switch(editchoice()) {
- char str[40];
- case 1:
- printf("Введите номер рейса\n");
- do{
- fflush(stdin);
- pr=scanf("%15lf", &red2.nomer.nomerReisa);
- }while(red2.nomer.nomerReisa<0 || pr==0);
- red->nomer.nomerReisa=red2.nomer.nomerReisa;
- break;
- case 2: printf("Введите тип автобуса\n");
- fflush(stdin);
- red->type[0]='\0';
- gets_s(red2.type);
- strcpy(red->type, red2.type);
- red2.type[0]='\0';
- break;
- case 3:
- printf("Введите пункт назначения\n");
- fflush(stdin);
- red->punkt[0]='\0';
- gets_s(red2.punkt);
- strcpy(red->punkt, red2.punkt);
- red2.punkt[0]='\0';
- break;
- case 4: printf("Введите время отправления атобуса\n");
- int k,m;
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &k);
- }while(k<0 || k>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m);
- }while(m<0 || m>60 || pr==0);
- red->vremyaOCh=k;red->vremyaOM=m;
- break;
- case 5: printf("Введите время прибытия атобуса\n");
- int k2,m2;
- do{
- printf("Часы:");
- fflush(stdin);
- pr=scanf("%2d", &k2);
- }while(k2<0 || k2>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m2);
- }while(m2<0 || m2>60 || pr==0);
- red->vremyaPCh=k2;red->vremyaPM=m2;
- break;
- case 6: flag2=1;
- break;
- }
- }
- if((file=fopen("raspisanie.dat", "w+b"))==NULL)
- {
- printf("Доступа к памяти нет!\n");
- fclose(file);
- return;
- }
- raspisanie *ed, ed2;
- ed=begin->next;
- while(ed!=NULL)
- {
- ed2=*ed;
- fwrite( &ed2 ,1, sizeof(raspisanie),file);
- ed=ed->next;
- }
- fclose(file);
- }
- int editchoice()
- {
- int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("\n");
- printf(" 1 - Редактировать номер рейса\n");
- printf(" 2 - Редактировать тип автобуса\n");
- printf(" 3 - Редактировать пункт назначения\n");
- printf(" 4 - Редактировать время отправления\n");
- printf(" 5 - Редактировать время прибытия\n");
- printf(" 6 - Назад.\n");
- pr=scanf("%d", &ch);
- }while(ch>6 || pr==0 ||ch<0);
- return ch;
- }
- void del()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- vivod();
- int nomer;
- raspisanie *rasp;
- rasp=begin->next;
- int i=0;
- while(rasp!=NULL)
- {
- i++;
- rasp=rasp->next;
- }
- printf("Введите номер позиции рейса в таблице, который хотите удалить\n");
- int flag,pr;
- do
- {
- int p=0;
- flag=0;
- pr=scanf("%15d", &nomer);
- if(nomer>i || nomer<0 || pr==0)
- {
- printf("Неверный ввод!. Попробовать снова?\n1.Да\n2.Нет");
- int choice;
- flag=0;
- int rp=-1;
- do{
- rp=scanf("%d",&choice);
- }while(choice<0 || rp==0);
- switch(choice)
- {
- case 1:
- flag=1;printf("\n");
- break;
- case 2:return;
- break;
- default: printf("\nНеверное значение.\n");
- Sleep(700);
- return;
- }
- }
- }while(flag==1);
- raspisanie *del1,*del2;
- del1=begin;
- for(i=0;i<nomer;i++)
- {
- if(i==nomer-1)
- {
- del2=del1->next;
- del1->next=del2->next;
- delete del2;
- }
- else del1=del1->next;
- }
- if((file=fopen("raspisanie.dat", "w+b"))==NULL)
- {
- printf("Доступа к памяти нет!\n");
- fclose(file);
- return;
- }
- raspisanie *ed, ed2;
- ed=begin->next;
- while(ed!=NULL)
- {
- ed2=*ed;
- fwrite( &ed2 ,1, sizeof(raspisanie),file);
- ed=ed->next;
- }
- fclose(file);
- }
- void sort_reis()
- {
- raspisanie *a = NULL, *b = NULL, *c = NULL, *e = NULL, *tmp = NULL;
- while(e != begin->next->next)
- {
- c = a = begin->next;
- b = a->next;
- while(a != e)
- {
- if(a->nomer.nomerReisa > b->nomer.nomerReisa )
- {
- if(a == begin->next)
- {
- tmp = b -> next;
- b->next = a;
- a->next = tmp;
- begin->next = b;
- c = b;
- }
- else
- {
- tmp = b->next;
- b->next = a;
- a->next = tmp;
- c->next = b;
- c = b;
- }
- }
- else
- {
- c = a;
- a = a->next;
- }
- b = a->next;
- if(b == e)
- e = a;
- }
- }
- vivod();
- }
- void sort_punkt()
- {
- raspisanie *a = NULL, *b = NULL, *c = NULL, *e = NULL, *tmp = NULL;
- while(e != begin->next->next)
- {
- c = a = begin->next;
- b = a->next;
- while(a != e)
- {
- int i=0;
- while(a->punkt[i]==b->punkt[i])
- {
- if( a->punkt[i]==b->punkt[i]) i++;
- }
- if(a->punkt[i] > b->punkt[i] )
- {
- if(a == begin->next)
- {
- tmp = b -> next;
- b->next = a;
- a->next = tmp;
- begin->next = b;
- c = b;
- }
- else
- {
- tmp = b->next;
- b->next = a;
- a->next = tmp;
- c->next = b;
- c = b;
- }
- }
- else
- {
- c = a;
- a = a->next;
- }
- b = a->next;
- if(b == e)
- e = a;
- }
- }
- vivod();
- }
- void optim_time()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- int ch,m, pr;
- printf("Введите время, раньше которого автобус должен прибыть в пункт\n");
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%d", &ch);
- }while(ch<0 || ch>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%d",&m);
- }while(m<0 || m>60 || pr==0);
- raspisanie *rab;
- rab=begin->next;
- int s=0;
- while(rab!=NULL)
- {
- if (rab->vremyaPCh<ch) s++;
- rab=rab->next;
- }
- if(s==0) printf("Автобусов раньше заданного времени нет\n");
- system("cls");
- raspisanie *st;
- st=begin->next;
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->vremyaPCh<ch)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaPCh==ch && st->vremyaPM<m)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void poisk_time()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите время, в которое автобус должен прибыть в пункт\n");
- raspisanie *st=begin->next, *prov=begin->next;
- int chas, min;
- int pr;
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%d", &chas);
- }while(chas<0 || chas>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%d",&min);
- }while(min<0 || min>60 || pr==0);
- int schet=0;
- while(prov!=NULL)
- {
- if(prov->vremyaPCh==chas && prov->vremyaPM==min) schet++;
- prov=prov->next;
- }
- if(schet==0)
- {
- system("cls");
- printf("Автобуса по заданному времени не существует.\n");
- system("pause");
- return;
- }
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->vremyaPCh==chas && st->vremyaPM==min)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void poisk_punkt()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите пункт, в который автобус должен прибыть\n");
- raspisanie *st=begin->next, *prov=begin->next;
- char punkt[40];
- int shet=0;
- fflush(stdin);
- scanf("%15s", punkt);
- int schet=0;
- while(prov!=NULL)
- {
- if(strcmp(prov->punkt,punkt)==0) schet++;
- prov=prov->next;
- }
- if(schet==0)
- {
- system("cls");
- printf("Автобуса по заданному пути не существует.\n");
- system("pause");
- return;
- }
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(strcmp(st->punkt,punkt)==0)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void poisk_reis()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите номер рейса, по котрому вы хотите узнать расписание\n");
- raspisanie *st=begin->next, *prov=begin->next;
- int nomer;
- int shet=0;
- int pr, flag;
- fflush(stdin);
- do{
- flag=0;
- fflush(stdin);
- pr=scanf("%15d", &nomer);
- if(nomer<0 || pr==0)
- {
- printf("Неверный ввод. Попробуйие ещё раз\n");
- flag=1;
- }
- }while(flag==1);
- int schet=0;
- while(prov!=NULL)
- {
- if(prov->nomer.nomerReisa==nomer) schet++;
- prov=prov->next;
- }
- if(schet==0)
- {
- system("cls");
- printf("Заданного рейса не существует.\n");
- system("pause");
- return;
- }
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->nomer.nomerReisa==nomer)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filter_timeO()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите время отправления атобуса, от которого начнётся фильтрация\n");
- int flag, pr;
- int k1,k2,min1,min2;
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &k1);
- }while(k1<0 || k1>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &min1);
- }while(min1<0 || min1>60 || pr==0);
- printf("Введите время отправления атобуса,до которого будет идти фильтрация(макс. 23:59)\n");
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &k2);
- }while(k2<0 || k2>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &min2);
- }while(min2<0 || min2>60 || pr==0);
- raspisanie *st=begin->next;
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->vremyaOCh>k1 && st->vremyaOCh<k2)//сравнение по часам
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaOCh==k1 && st->vremyaOM>min1) //если часы отправления 1 совпали
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaOCh==k2 && st->vremyaOM<min2)//если часы отправления 2 совпали
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filter_timeP()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- int ch,m,pr;
- printf("Введите время, раньше которого автобус должен прибыть в пункт\n");
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &ch);
- }while(ch<0 || ch>24 || ch==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m);
- }while(m<0 || m>60 || pr==0);
- raspisanie *rab;
- rab=begin->next;
- int s=0;
- while(rab!=NULL)
- {
- if (rab->vremyaPCh<ch) s++;
- rab=rab->next;
- }
- if(s==0) printf("Автобусов раньше заданного времени нет\n");
- system("cls");
- raspisanie *st;
- st=begin->next;
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->vremyaPCh<ch)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaPCh==ch && st->vremyaPM<m)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filter_punkt()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите букву, с которой начинается название населённого пункта (Заглавную)\n");
- int pr;
- char k1,k2;
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k1);
- }while(k1<-64 || k1>-33 || pr==0);
- printf("Введите букву до которой будет идти фильтрация(макс. Я/Заглавную)\n");
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k2);
- }while(k2<-64 || k2>-33 || pr==0);
- raspisanie *st=begin->next;
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->punkt[0]>=k1 && st->punkt[0]<=k2)//сравнение по буквам
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filter_PandT()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите время отправления атобуса, от которого начнётся фильтрация\n");
- int flag, pr;
- int k1,k2,min1,min2;
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &k1);
- }while(k1<0 || k1>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &min1);
- }while(min1<0 || min1>60 || pr==0);
- printf("Введите время отправления атобуса,до которого будет идти фильтрация(макс. 23:59)\n");
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &k2);
- }while(k2<0 || k2>24 || pr==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &min2);
- }while(min2<0 || min2>60 || pr==0);
- char k11,k22;
- printf("Введите букву, с которой начинается название населённого пункта (Заглавную)\n");
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k11);
- }while(k11<-64 || k11>-33 || pr==0);
- printf("Введите букву до которой будет идти фильтрация(макс. Я/Заглавную)\n");
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k22);
- }while(k22<-64 || k22>-33 || pr==0);
- raspisanie *st=begin->next;
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->punkt[0]>=k11 && st->punkt[0]<=k22)//сравнение по буквам
- {
- if(st->vremyaOCh>k1 && st->vremyaOCh<k2)//сравнение по часам
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaOCh==k1 && st->vremyaOM>min1) //если часы отправления 1 совпали
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaOCh==k2 && st->vremyaOM<min2)//если часы отправления 2 совпали
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filter()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите букву, с которой начинается название населённого пункта (Заглавную)\n");
- int pr;
- char k1,k2;
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k1);
- }while(k1<-64 || k1>-33 || pr==0);
- printf("Введите букву до которой будет идти фильтрация(макс. Я/Заглавную)\n");
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k2);
- }while(k2<-64 || k2>-33 || pr==0);
- int ch,m;
- printf("Введите время, раньше которого автобус должен прибыть в пункт(Макс. 23:59\n");
- do{
- printf("Час:");
- fflush(stdin);
- pr=scanf("%2d", &ch);
- }while(ch<0 || ch>24 || ch==0);
- do{
- printf("Минуты:");
- fflush(stdin);
- pr=scanf("%2d", &m);
- }while(m<0 || m>60 || pr==0);
- raspisanie *rab;
- rab=begin->next;
- int s=0;
- while(rab!=NULL)
- {
- if (rab->vremyaPCh<ch) s++;
- rab=rab->next;
- }
- if(s==0) printf("Автобусов раньше заданного времени нет\n");
- system("cls");
- raspisanie *st;
- st=begin->next;
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if (st->punkt[0]>=k1 && st->punkt[0]<=k2)//сравнение по буквам
- {
- if(st->vremyaPCh<ch)//сравнение по часам
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- if(st->vremyaPCh==ch && st->vremyaPM<m)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- void filte_reis_and_punkt()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- printf("Введите букву, с которой начинается название населённого пункта (Заглавную)\n");
- int pr;
- char k1,k2;
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k1);
- }while(k1<-64 || k1>-33 || pr==0);
- printf("Введите букву до которой будет идти фильтрация(макс. Я/Заглавную)\n");
- do{
- printf("Буква:");
- fflush(stdin);
- pr=scanf("%1c", &k2);
- }while(k2<-64 || k2>-33 || pr==0);
- printf("Введите цифру от которой будет идти фильтрация рейсов(макс. 9)\n");
- char m;
- do{
- printf("Цифра:");
- fflush(stdin);
- pr=scanf("%1c", &m);
- }while(m<48 || m>57 || pr==0);
- raspisanie *st=begin->next;
- system("cls");
- printf("--------------------------------------------------------------------------------");
- printf("| № | Номер рейса | Тип автобуса | Пункт | Время | Время |");
- printf("| | | | | отправления | прибытия |");
- printf("--------------------------------------------------------------------------------");
- int i=1;
- while(st!=NULL)
- {
- if(st->punkt[0]>=k1 && st->punkt[0]<=k2)//сравнение по буквам
- {
- char buf[16];
- _itoa(st->nomer.nomerReisa,buf,10);//преобразование номера рейса в строку для удобного сравнения
- if(buf[0]>=m)
- {
- if(st->vremyaOM>=10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM>=10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM>=10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- if(st->vremyaOM<10 && st->vremyaPM<10)
- {
- printf("|%4d|%15.0lf|%15s|%15s|%10d:0%d|%8d:0%d|",i, st->nomer.nomerReisa, st->type,st->punkt, st->vremyaOCh, st->vremyaOM,st->vremyaPCh, st->vremyaPM);
- }
- }
- }
- st=st->next;
- i++;
- }
- printf("--------------------------------------------------------------------------------\n");
- system("pause");
- }
- int menusearch()//меню поиска
- {
- int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("===============================Меню:Поиск=======================================\n");
- 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");
- pr=scanf("%d", &ch);
- }while(ch>10 || pr==0 || ch<0);
- return ch;
- }
- void menusearch_choice()
- {
- while(1)
- {
- switch(menusearch()) {
- case 1:
- poisk_time();
- break;
- case 2:
- poisk_punkt();
- break;
- case 3:
- poisk_reis();
- break;
- case 4: filter_timeO();
- break;
- case 5: filter_timeP();
- break;
- case 6: filter_punkt();
- break;
- case 7: filter_PandT();
- break;
- case 8: filter();
- break;
- case 9: filte_reis_and_punkt();
- break;
- case 10: return;
- }
- }
- }
- int menusort()
- {
- int ch;
- int pr=-1;
- do
- {
- system("cls");
- printf("=====================================МЕНЮ:======================================\n");
- printf(" 1 - Сортировать по номерам рейсов\n");
- printf(" 2 - Сортировать пункты по алфавиту\n");
- printf(" 3 - Назад\n");
- pr=scanf("%d", &ch);
- }while(ch>3 || pr==0 || ch<0);
- return ch;
- }
- void sortchoice()
- {
- if(begin==NULL)
- {
- printf("Файл не открыт!\n");
- Sleep(700);
- return;
- }
- while(1)
- {
- switch(menusort())
- {
- case 1: sort_reis();
- break;
- case 2: sort_punkt();
- break;
- case 3: return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement