Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач.docx
Скачиваний:
0
Добавлен:
06.06.2025
Размер:
556.29 Кб
Скачать

Минобрнауки России

Санкт-петербургский государственный

Электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра вычислительной техники

Курсовая работа

По дисциплине «программирование»

Тема: «Обработка электронной картотеки»

Студент гр. 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 функций и одну структуру.

Сначала в консоль выводится меню, через которое пользователь решает, какое действие ему выполнить (меню следует из условия задачи). В зависимости от введенного значения будут выполняться разные команды:

  1. Вызов функции print_info().

  2. Вызов функции add_record(), которая открывает файл, считывает с клавиатуры новую структуру по полям, затем выделяет одну ячейку памяти для новой структуры и записывает новую структуру в конец файла.

  3. Вызов функции alter_record() для изменения существующей структуры путем считывания с клавиатуры первого поля структуры (id), которую необходимо изменить и переписывания старой записи при совпадении значения id с нужной структурой.

  4. Вызов функции delete_record() для удаления существующей структуры путем реаллоцирования памяти и записи всех структур, значение id которых не совпадает со значением поля id структуры, которую необходимо изменить (ввод id с клавиатуры).

  5. Вызов функции print_all_records() для вывода всех существующих структур (в цикле, итератор – индекс в массиве структур).

  6. Вызов функции search() для поиска структур по нужному полю. В зависимости от введенного значения будут вызываться различные функции для поиска по конкретному полю (search_by_id и так далее).

  7. Вызов функции sort() для сортировки структур в массиве структур по заданному полю.

  8. Очистка выделенной памяти и выход из программы.