Материал: ПЗ_Рушева_972304 (1)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Char password[33] – используется для записи и хранения пароля пользователя.

Char login[33] – используется для записи и хранения логина пользователя.

Enum ROLE role – используется для идентификации пользователя. Структура Date нужна для хранения в ней информацию о дате:

Size_t day - используется для записи и хранения дня. Size_t month - используется для записи и хранения месяца. Size_t year – используется для записи и хранения года.

Структура Fio нужна для хранения в ней информацию о ФИО клиента и сотрудника:

Char name[31] – используется для записи и хранения имени клиента и сотрудника.

Chae surname[31] – используется для записи и хранения фамилии клиента и сотрудника.

Char patronymic[31] – используется для записи и хранения отчества клиента и сотрудника.

Структура Client нужна для хранения в ней информации о клиенте, в эту структуру вложены структуры Date и Fio, которые описывались ранее.

Fio fio – для записи и хранения ФИО клиента (вложенная).

Size_t age – используется для записи и хранения возраста клиента.

Char tel[21] – используется для записи и хранения номера телефона клиента. Char passport[20] – используется для записи и хранения номера и серии паспорта клиента.

Date departure – используется для записи и хранения даты отлета клиента (вложенная).

Size_t flight_number – используется для записи и хранения номера рейса клиента.

Date order – используется для записи и хранения даты заказа клиента (вложенная).

Структура Sotr нужна для хранения в ней информации о сотруднике турфирмы, в эту структуру вложены структуры Date и Fio, которые описывались ранее.

Fio fios – для записи и хранения ФИО сотрудника (вложенная).

Size_t age – используется для записи и хранения возраста сотрудника.

Char tel[21] – используется для записи и хранения номера телефона сотрудника.

11

Date startwork – используется для записи и хранения даты начала работы в турфирме (вложенная).

Size_t premia – используется для записи и хранения размера премии сотрудника за месяц.

Char dolzhnost[31] – используется для записи и хранения должности сотрудника.

Структура Reclama нужна для хранения в ней информации о предложениях о турах.

Char tour[31] – используется для записи и хранения названия рекламируемого тура.

Char opisanie[31] – используется для записи и хранения описания тура. Size_t tsena – используется для записи и хранения цены тура.

Структура Otzyf нужна для хранения в ней информации и отзывах, в эту структуру вложены структура Date которая описывалась ранее.

Date mes – используется для записи и хранения даты написания отзыва (вложенная).

Char nickname[31] – используется для записи и хранения никнэйма клиента, который оставляет отзыв.

Char otzyf[31] – используется для записи и хранения самого отзыва клиента. Size_t zvezdy – используется для записи и хранения количества баллов за сотрудничество с компанией.

В структурах Client Sotr и Otzyt использованы вложенные структуры. По условиям и задачам, поставленным в данном проекте, для реализации возможностей данного проекта нужны эти поля. Дальнейшая работа осуществляется непосредственно с данными хранящимися в файлах.

12

3 ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ ПРИЛОЖЕНИЯ

Ниже представлено объявление прототипов функций, используемых в данной курсовой работе.

int main()

enum ROLE menu_1() void admin_menu() void user_menu() void encrpt(char* log)

void decrypt(char* log) void print_fio(Client client) void print_fios(Sotr sotr)

void print_departure_date(Client client) void print_startwork_date(Sotr sotr) void print_order_date(Client client) void print_mes_date(Client client)

void print_clients(Client* clients, size_t) void print_sotr(Sotr* sotrs, size_t)

void print_otz(Otzyf* otz, size_t n) void print_rec(Reclama* rec, size_t n) void init_fio(Fio* fio)

void init_fios(Fio* fios)

void init_date(Date* date, size_t var) void init_dates(Date* date, size_t var) void init_datee(Date* date, size_t var) void init_client(Client* client)

void init_sotr(Sotr* sotr) void init_otz(Otzyf* otz) void init_rec(Reclama* rec)

enum COMPARE compare_date(Date* d1, Date* d2) enum COMPARE compare_datee(Date* d1, Date* d2) enum COMPARE compare_dates(Date* d1, Date* d2) void add_client(FILE** f, Client** clients_list, size_t* n) void add_sotr(FILE** s, Sotr** sotrs_list, size_t* n) void add_otz(FILE** t, Otzyf** otz_list, size_t* n)

void add_rec(FILE** p, Reclama** rec_list, size_t* n)

void read_clients_file(FILE** f, Client** clients_list, size_t* clients_count) void read_sotr_file(FILE** s, Sotr** sotrs_list, size_t* sotrs_count)

13

void read_otz_file(FILE** t, Otzyf** otz_list, size_t* otz_count) void read_rec_file(FILE** p, Reclama** rec_list, size_t* rec_count)

void write_clients_file(const char* fname, Client* clients_list, size_t k) void write_sotr_file(const char* fname, Sotr* sotrs_list, size_t k)

void write_otz_file(const char* fname, Otzyf* otz_list, size_t k) void write_rec_file(const char* fname, Reclama* rec_list, size_t k)

void read_users_file(FILE** f, User** users_list, size_t* users_count) void edit_fio(Client* client)

void edit_fios(Sotr* sotr) void edit_tel(Client* client)

void edit_dolzhnost(Sotr* sotr) void edit_passport(Client* client)

void edit_date(Client* client, size_t n) void edit_flight_number(Client* client) void edit_premia(Sotr* sotr)

void edit_tsena(Reclama* reclama) void edit_opisanie(Reclama* reclama) void edit_tour(Reclama* reclama) void edit_client(Client* client)

void edit_sotr(Sotr* sotr)

void edit_rec(Reclama* reclama)

void remove_client(Client** clients_list, size_t n, size_t* size, FILE** f) void remove_sotr(Sotr** sotrs_list, size_t n, size_t* size, FILE** s)

void remove_rec(Reclama** rec_list, size_t n, size_t* size, FILE** p) void print_tables(Sotr* sotrs_list, size_t k)

void print_table(Client* clients_list, size_t k)

client* find_by_surname(Client* clients_list, size_t k, const char* surname, size_t* n)

client* find_by_passport(Client* clients_list, size_t k, const char* passport, size_t* n)

client* find_by_depature(Client* clients_list, size_t k, Date d, size_t* n) client* find_by_age(Client* clients_list, size_t k, size_t age, size_t* n) client* find_by_flight_number(Client* clients_list, size_t k, size_t number,

size_t* n)

reclama* find_by_tsena(Reclama* rec_list, size_t k, size_t number, size_t* n) void find(Client* clients_list, size_t k)

void find_rec(Reclama* rec_list, size_t k)

14

client* filter_by_age(Client* clients_list, size_t k, size_t age, size_t* n, int

order)

client* filter_by_depature(Client* clients_list, size_t k, Date d, size_t* n, int

order)

void filter(Client* clients_list, size_t k)

void filter_by_order_date(Client* clients_list, size_t k, Date* d1, Date* d2) bool init_user(User* user)

void print_users(User* users_list, size_t k)

void add_user(FILE** f, User** users_list, size_t* n) void remove_user(User** users_list, size_t n, size_t* size) void edit_user_login(User* user)

void edit_user_password(User* user) void edit_user(User* user)

int find_user(User* users_list, size_t users_count, const char* log, const char*

pwd)

void maintain_users(const char* fname)

int main() – основная функция. С нее начинается выполнение программы. С помощью оператора множественного выбора switch() осуществляется выбор. При входе в программу вызывается функция enum ROLE menu_1(), отображающая меню:

1.Вход под администратором

2.Вход под пользователем

3.Выход Если это первый вход в систему, то после выбора выше нужна

регистрация. Тогда при вводе логина и пароля данные шифруются с помощью encrypt(). Если вход в систему не первый, то нужно ввести логин и пароль. Если логин и пароль введены правильно, то вызывается функция void admin_menu() или, при соответствующем выборе, void user_menu(), в противном случае она сообщает об ошибке и предлагает попробовать ещё раз.

void admin_menu() – функция вызова меню администратора. Меню администратора имеет следующий вид:

1.открыть/создать файл с данными клиентов

2.добавить запись

3.редактировать запись

4.удалить запись

5.просмотр данных

6.поиск данных

7.фильтрация данных

15

Источник: https://studfile.net/preview/16447983/