
Минобрнауки России
Санкт-петербургский государственный
Электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра вычислительной техники
Курсовая работа
По дисциплине «программирование»
Тема: «Обработка электронной картотеки»
Студент гр. 3316 |
|
Руденский И.М. |
Преподаватель |
|
Подклетнов С.Г. |
Санкт-Петербург
2024
Цель работы.
Законченное поэтапное решение содержательной задачи (постановка задачи, спецификация, выбор структур данных и разработка алгоритма, программная реализация, тестирование).
Задание
Создать электронную картотеку данных о продуктах в магазине, хранящуюся на диске, и программу, обеспечивающую взаимодействие с ней. Данные для структуры находятся в файле.
Постановка задачи и описание решения
Задача:
Необходимо написать программу, в которой соблюдены следующие требования:
Занесение данных в электронную картотеку;
внесение изменений (исключение, корректировка, добавление);
поиск данных по различным признакам;
сортировку по различным признакам;
вывод результатов на экран и сохранение на диске.
Выбор подлежащих выполнению команд должен быть реализован с помощью основного меню и вложенных меню.
Задача должна быть структурирована и отдельные части должны быть оформлены как функции.
Исходные данные должны вводиться с клавиатуры. В процессе обработки картотека должна храниться в памяти компьютера в виде списков и массивов структур, связанных указателями. Типы списков и структур выбираются исходя из предметной области.
Картотека составляется по выбранной предметной области.
В программе должно быть реализовано простейшее меню. Выполнение программы должно быть многократным по желанию пользователя. Данные первоначально считываются из файла (файлов), в процессе работы данные вводятся с клавиатуры.
Примерный перечень пунктов меню:
0: Справка
1: Добавление карточек об объектах предметной области
2: Редактирование карточек
3: Удаление карточек
4: Вывод картотеки
5: Поиск карточек по параметру
6: Сортировка картотеки по параметру
7: Выход
Дополнительно:
Программа должна быть работоспособна в Windows. Linux и Mac OS.
Описание функций
print_record() – выводит в консоль одну структуру.
print_all_records() – выводит в консоль все имеющиеся структуры (вызов через меню).
print_info() – вывод информации о программе (вызов через меню).
add_record() – добавление структуры (вызов через меню).
delete_record() – удаление структуры (вызов через меню).
alter_record() – изменение структуры (вызов через меню).
search_by_id() – поиск по первому полю структуры.
search_by_name() – поиск по второму полю структуры.
search_by_price() – поиск по третьему полю структуры.
search_by_quantity() – поиск по четвертому полю структуры.
search_by_weight() – поиск по пятому полю структуры.
search() – функция поиска по заданной структуре (вызов через меню).
id_comparator() – функция сравнения по первому полю структуры.
quantity_comparator() – функция сравнения по второму полю структуры.
sort() – функция сортировки (вызов через меню).
Описание Структуры
typedef struct Product
{
int id;
char name[20];
double price;
int quantity;
double weight;
} Product;
Структура вызова функций:
Описание решения:
Данная программа помимо главной функции main() содержит еще 15 функций и одну структуру.
Сначала в консоль выводится меню, через которое пользователь решает, какое действие ему выполнить (меню следует из условия задачи). В зависимости от введенного значения будут выполняться разные команды:
Вызов функции print_info().
Вызов функции add_record(), которая открывает файл, считывает с клавиатуры новую структуру по полям, затем выделяет одну ячейку памяти для новой структуры и записывает новую структуру в конец файла.
Вызов функции alter_record() для изменения существующей структуры путем считывания с клавиатуры первого поля структуры (id), которую необходимо изменить и переписывания старой записи при совпадении значения id с нужной структурой.
Вызов функции delete_record() для удаления существующей структуры путем реаллоцирования памяти и записи всех структур, значение id которых не совпадает со значением поля id структуры, которую необходимо изменить (ввод id с клавиатуры).
Вызов функции print_all_records() для вывода всех существующих структур (в цикле, итератор – индекс в массиве структур).
Вызов функции search() для поиска структур по нужному полю. В зависимости от введенного значения будут вызываться различные функции для поиска по конкретному полю (search_by_id и так далее).
Вызов функции sort() для сортировки структур в массиве структур по заданному полю.
Очистка выделенной памяти и выход из программы.