
мой курсач / записка / ПЗ_Рушева_972304 (1)
.pdfChar 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