Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мой курсач / записка / ПЗ_Рушева_972304 (1)

.pdf
Скачиваний:
11
Добавлен:
28.03.2021
Размер:
1.49 Mб
Скачать

Как мы можем заметить, в меню пользователя есть почти все те же функции, что и в меню администратора, поэтому рассмотрим те функции, которые еще не рассматривали выше.

Пользователю предоставляется возможность совершать поиск тура для себя. При выборе пункта 7, найдем тур по интересующей цене (Рисунок 5.22).

Рисунок 5.22 – Поиск тура

У пользователя есть возможность добавить отзыв (Рисунок 5.23).

Рисунок 5.22 – Добавление отзыва

Пункт 13 – это выполнение индивидуального задания (Рисунок 5.24).

41

Рисунок 5.24 – Выполнение задания

42

ВЫВОДЫ

В данной курсовой работе была исследована организованность хранения сведений о туристической компании. Были рассмотрены такие процедуры с этими сведениями, как поиск и сортировка информации по определенным параметрам, редактирование и удаление введенной информации, и другие функции.

Были разработаны блок-схемы программы, которые наглядно отражают работу некоторых функций программы. Были описаны используемые функции и структуры хранимых данных.

Программа предусматривает обработку исключительных ситуаций, что помогает пользователю проще работать с ней. Программа позволяет достаточно легко и быстро просмотреть необходимые сведения и выполнить интересующие процедуры с информацией о них и сократить количество ошибок при обработке информации.

43

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

[1]Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ: Пособие для студентов БГУИР / Е.М. Демидович. ─Минс:

Бестпринт, 2004. ─ 384 с.

[2]Батура М. П. Основы алгоритмизации и программирования. Язык СИ: учеб. Пособие / М. П. Батура, В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова. ─ Минск: БГУИР, 2007. ─ 240 с.

[3]Дейтел Х. М., Дейтел П. Дж. Как программировать на C: Четверное издание. Пер. с англ. ─ М.: ООО «Бином-Пресс»2006г. ─ 912 с.

44

ПРИЛОЖЕНИЕ А КОД ПРОГРАММЫ

“main.c”

#include "Header.h" int main()

{

system("chcp 1251 && cls"); /*char log[] = "qqq"; encrypt(log);

decrypt(log);*/ while (1){

enum ROLE role = menu_1(); switch (role)

{

case GUEST: system("cls"); user_menu(); break;

case ADMIN: system("cls"); admin_menu(); break;

case EXIT: break;

default:

break;

}

if (role == EXIT) break; system("cls");

}

}

“header.h”

/**** меню первого уровня *****/

 

enum ROLE menu_1()

 

{

 

int c = -1;

 

puts("------------------------------------------------

\n");

puts("*****************ГЛАВНОЕ МЕНЮ*********************");

puts("------------------------------------------------

\n");

puts("1.Вход под администратором");

 

puts("2.Вход под пользователем");

 

puts("3.Выход");

 

45

puts("------------------------------------------------

\n");

//ввод

 

printf(">> ");

 

scanf_s("%d", &c); getchar();

FILE* f = NULL;

/*для логина и пароля когда 1-ый раз запускается программа*/ char pwd[33], login[33];

/*если вход для администратора*/ if (c == 1)

{

/*файл админов открывается для чтения в бинарном режиме*/ fopen_s(&f, admins, "rb");

/*если не открылся, значит, скорее всего его ещё нет*/ if (!f)

{

puts("Это первый вход в систему. Необходима регистрация!"); /*файл открывается для записи*/

fopen_s(&f, admins, "wb");

/*если открылся...*/ if (f)

{

/*создаётся объект User с ролью ADMIN*/ User admin;

admin.role = ADMIN; /*вводится логин ...*/ printf_s("Введите логин: ");

gets_s(admin.login, sizeof admin.login); if (strlen(admin.login))

{

/*... и пароль*/ printf_s("Введите пароль: ");

gets_s(admin.password, sizeof admin.password); if (strlen(admin.password))

{

/*данные админа штфруются и записываются в соответствующий бинарный файл*/

encrypt(admin.login);

encrypt(admin.password); fwrite(&admin, 1, sizeof admin, f);

}

else

puts("Пароль не может быть

пустым!\nРегистрация отклонена!");

}

46

else

puts("Логин не может быть

пустым!\nРегистрация отклонена!");

}

/*файл закрывается ...*/ fclose(f);

f = NULL;

/*... и следует рекурсивный вызов этого меню*/ c = 5;

}

/*если файл admins.bin открылся, следует запрос логина и пароля*/ else

{

printf_s("Введите логин: "); gets_s(login, sizeof login); if (strlen(login))

{

printf_s("Введите пароль: "); gets_s(pwd, sizeof pwd);

if (strlen(pwd))

{

encrypt(login);

encrypt(pwd);

User u;

/*объект для чтения

данных админа из файла*/

while (fread(&u, sizeof u, 1, f) == 1) /*чтение

данных админа из файла*/

{

/*если логи/пароль совпали, значение с

остаётся = 1*/

if (!strcmp(u.login, login) &&

!strcmp(u.password, pwd))

{

puts("Ok!");

break;

}

}

if (feof(f))

{

/*если админа с данным логином/паролем нет в списке, значение с меняется на 5 в этом случае ф-ция вернёт значение CONTINUE*/

puts("Вы не зарегистрированы :("); c = 5;

}

47

}

else

{

puts("Пароль не может быть пустой строкой!"); c = 5;

}

}

else

{

puts("Логин не может быть пустой строкой!"); c = 5;

}

fclose(f); f = NULL;

}

}

/*если вход для пользователя, то меняется только файл*/ else if (c == 2)

{

fopen_s(&f, users, "rb"); if (!f)

{

puts("Это первый вход в систему. Необходима регистрация!"); /*файл открывается для записи*/

fopen_s(&f, users, "wb");

/*если открылся...*/ if (f)

{

/*создаётся объект User с ролью GUEST*/ User user;

user.role = GUEST; /*вводится логин ...*/ printf_s("Введите логин: ");

gets_s(user.login, sizeof user.login); if (strlen(user.login))

{

/*... и пароль*/ printf_s("Введите пароль: ");

gets_s(user.password, sizeof user.password); if (strlen(user.password))

{

/*данные пользователя шифруются и записываются в соответствующий бинарный файл*/

encrypt(user.login);

encrypt(user.password);

48

fwrite(&user, 1, sizeof user, f);

}

else

puts("Пароль не может быть

пустым!\nРегистрация отклонена!");

}

else

puts("Логин не может быть

пустым!\nРегистрация отклонена!");

}

/*файл закрывается ...*/ fclose(f);

f = NULL;

/*... и следует рекурсивный вызов этого меню*/ c = 5;

}

/*если файл users.bin открылся, следует запрос логина и пароля*/ else

{

printf_s("Введите логин: "); gets_s(login, sizeof login); if (strlen(login))

{

printf_s("Введите пароль: "); gets_s(pwd, sizeof pwd);

if (strlen(pwd))

{

encrypt(login);

encrypt(pwd);

User u;

/*объект для чтения

данных пользователя из файла*/

while (fread(&u, sizeof u, 1, f) == 1) /*чтение

данных пользователя из файла*/

{

/*если логи/пароль совпали, значение с

остаётся = 1*/

if (!strcmp(u.login, login) &&

!strcmp(u.password, pwd))

{

puts("Ok!");

break;

}

}

if (feof(f))

49

{

/*если пользователя с данным логином/паролем нет в списке, значение с меняется на 5 в этом случае ф-ция вернёт значение CONTINUE*/

puts("Вы не зарегистрированы :("); c = 5;

}

}

else

{

puts("Пароль не может быть пустой строкой!"); c = 5;

}

}

else

{

puts("Логин не может быть пустой строкой!"); c = 5;

}

fclose(f); f = NULL;

}

}

/*проверка пользовательского ввода и определение возвращаемого

значения*/

switch (c)

{

case 1:

return ADMIN;

case 2:

return GUEST;

case 3:

return EXIT; default:

break;

}

/*случай, когда, например, с = 5*/ return CONTINUE;

}

50