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

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

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

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

8.удалить данные всех клиентов

9.управление пользователями

10.открыть/создать файл с данными предложений

11.добавить предложение тура

12.посмотреть предложения о турах

13.редактировать предложение о туре

14.удалить предложение о туре

15.открыть файл с отзывами

16.посмотреть отзывы клиентов

17.открыть файл с данными сотрудников

18.добавить сотрудника

19.редактировать данные сотрудников

20.удалить данные сотрудника

21.просмотр данных сотрудников

22.выход в меню 1-го уровня

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

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

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

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

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

5.открыть файл с предложениями о турах

6.посмотреть предложения о турах

7.искать предложения о турах

8.открыть файл отзывов

9.посмотреть отзывы

10.добавить отзыв

11.открыть файл с данными сотрудников

12.посмотреть данные сотрудников 13.выполнение задачи(вывести на экран все сделки за определенный

период(числа вводим с клавиатуры)) 14.выход в меню 1-го уровня");

void add_client() – функция добавления информации (клиента) в структуру. Если файл не открыт или не создан, выводится сообщение об ошибке.

void edit_client() – функция вызова меню редактирования информации

оклиенте. Меню редактирования имеет следующий вид:

-Редактирование ФИО

16

-Редактирование номера телефона

-Редактирования паспортных данных

-Редактирование даты вылета

-Редактирование номера рейса

-Редактирования даты заказа

-Выход

void edit_fio() – функция редактирования имени, фамилии и отчества по заданному диапазону.

void edit_tel() – функция редактирования номера телефона по заданному диапазону.

void edit_passport() – функция редактирования номера и серии паспорта по заданному диапазону.

void edit_date(4) – функция редактирования даты вылета по заданному диапазону.

void edit_flight_number() – функция редактирования номера рейса по заданному диапазону.

void edit_date(6) – функция редактирования даты заказа по заданному диапазону.

void remove_client() – функция удаления записи о клиенте. Если файл не открыт или не создан, выводится сообщение об ошибке. Перед тем как удалить запись клиента, с помощью функции void print_clients(), нужно сделать выбор, информацию о каком именно клиенте нужно удалить.

void print_table() – функция вывода на экран информации о клиентах в табличной форме. Если файл не открыт, выводится сообщение об ошибке.

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

-Поиск по фамилии

-Поиск по паспорту

-Поиск по дате вылета

-Поиск по возрасту

-Поиск по номеру рейса

-Выйти

client* find_by_surname() – функция поиска по фамилии по заданному диапазону.

client* find_by_passport() – функция поиска по номеру и серии паспорта по заданному диапазону.

client* find_by_depature() – функция поиска по дате вылета по заданному диапазону.

17

client* find_by_age() – функция поиска по возрасту по заданному диапазону.

client* find_by_flight_number()– функция поиска по номеру рейса по заданному диапазону.

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

-Моложе чем

-Старше чем

-Дата вылета раньше чем

-Дата вылета позже чем

-Выйти

client* filter_by_age – функция фильтрации по возрасту (моложе чем или старше чем в зависимости от критерия) по заданному диапазону.

client* filter_by_depature – функция фильтрации по дате вылета(дата вылета раньше чем или дата вылета позже чем в зависимости от критерия) по заданному диапазону.

void maintain_users() - функция вызова меню управления пользователями для администратора. Если файл не открыт или не создан, выводится сообщение об ошибке. Меню управления имеет следующий вид:

-Добавление пользователя

-Удаление пользователя

-void edit_user (редактирование данных пользователя)

-Удаление всех данных

-Выход

void add_user()- функция добавления пользователя. void remove_user() – функция удаление пользователя.

void edit_user()- функция, в который содержатся функции void edit_user_login() и void edit_user_password, которые позволяют администратору сменить логин и пароль пользователю.

void add_rec() – функция добавления информации предлагаемого тура в структуру. Если файл не открыт или не создан, выводится сообщение об ошибке.

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

-Редактирование названия тура

-Редактирование описания тура

-Редактирования цены тура

-Выход

18

void edit_tour() – функция редактирования имени тура по заданному диапазону.

void edit_opisanie() – функция редактирования описания тура по заданному диапазону.

void edit_tsena() – функция редактирования цены предлагаемого тура по заданному диапазону.

void remove_rec() – функция удаления записи о предлагаемом туре. Если файл не открыт или не создан, выводится сообщение об ошибке. Перед тем как удалить запись о туре, с помощью функции void print_rec(), нужно сделать выбор, информацию о каком именно туре нужно удалить.

void add_otz() – функция добавления информации отзыва клиента в структуру. Если файл не открыт или не создан, выводится сообщение об ошибке.

void print_otz() – функция просмотра отзывов клиентов, с которыми сотрудничала компания. Если файл не открыт или не создан, выводится сообщение об ошибке.

void add_sotr() – функция добавления информации о сотруднике компании в структуру. Если файл не открыт или не создан, выводится сообщение об ошибке.

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

-Редактирование ФИО

-Редактирование должности

-Редактирования премии

-Выход

void edit_fios() – функция редактирования имени, фамилии и отчества по заданному диапазону.

void edit_dolzhnost() – функция редактирования должности по заданному диапазону.

void edit_premia() – функция редактирования премии по заданному диапазону.

void remove_sotr() – функция удаления записи о сотруднике. Если файл не открыт или не создан, выводится сообщение об ошибке. Перед тем как удалить запись о сотруднике, с помощью функции void print_sotr(), нужно сделать выбор, информацию о каком именно сотруднике нужно удалить.

void print_tables() – функция вывода на экран информации о сотрудниках в табличной форме. Если файл не открыт, выводится сообщение об ошибке.

19

void filter_by_order_date() – функция выполнения задачи(вывести все сделки за определенный период(с какое и по какое число вводим с клавиатуры)).

void read_clients_file() – функция чтения файла с информацией о клиентах.

void read_otz_file() – функция чтения файла с отзывами клиентов. void read_rec_file() – функция чтения файла с предложениями туров.

void read_sotr_file() – функция чтения файла с информацией о сотрудниках.

void read_users_file() – функция чтения файла с информацией о пользователях.

void write_clients_file()- функция записи данных клиентов. void write_otz_file()- функция записи отзывов клиентов.

void write_rec_file()- функция записи данных о предлагаемых турах. void write_sotr_file()- функция записи данных сотрудников.

20