- •Постановка задачи
- •Выбор и обоснование типа разрабатываемого контейнера
- •Разработка структуры программы
- •Разработка собственных классов
- •Разработка интерфейса
- •Инструкция пользователю
- •Программа
- •1. mainwindow.cpp
- •2. mainwindow.h
- •3. add_dialog.cpp
- •4. add_dialog.h
- •5. function.cpp
- •6. function.h
- •7. main.cpp
- •Заключение
- •Список литературы
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»
Факультет инфокоммуникационных сетей и систем
Кафедра программной инженерии и вычислительной техники
КУРСОВАЯ РАБОТА
По дисциплине «Объектно-ориентированное программирование»
ВАРИАНТ 24
Выполнил:
Студент 2 курса
Дневного отделения
Группы ИКПИ-32
Яковлев М. А.
Санкт-Петербург
2024 г.
|
Содержание |
|
Постановка задачи ......................................................................................................................... |
3 |
|
Выбор и обоснование типа разрабатываемого контейнера ....................................................... |
3 |
|
Разработка структуры программы ............................................................................................... |
4 |
|
Разработка собственных классов ................................................................................................. |
4 |
|
Разработка интерфейса.................................................................................................................. |
6 |
|
Инструкция пользователю ............................................................................................................ |
8 |
|
Программа .................................................................................................................................... |
14 |
|
1. |
mainwindow.cpp.............................................................................................. |
14 |
2. |
mainwindow.h ................................................................................................. |
22 |
3. |
add_dialog.cpp ................................................................................................ |
23 |
4. |
add_dialog.h.................................................................................................... |
24 |
5. |
function.cpp .................................................................................................... |
25 |
6. |
function.h........................................................................................................ |
28 |
7. |
main.cpp ......................................................................................................... |
30 |
Заключение................................................................................................................................... |
31 |
|
Список литературы...................................................................................................................... |
31 |
|
2
Постановка задачи
Создать базу данных, работающую на основе контейнера, который следует разработать в процессе выполнения курсовой работы. В качестве прототипа разрабатываемого контейнера можно использовать контейнеры vector или list из библиотеки STL. Для работы с контейнером следует предусмотреть итератор. Остальные требования к контейнеру определяются студентом самостоятельно.
Разрабатываемая база данных должна быть создана использованием C++ и библиотеки Qt5. Среда программировании QT Creater.
База данных должна обеспечивать выполнение следующих операций: создание базы данных, объединение баз данных, добавления и удаления записей, редактирования записей, просмотра базы данных, поиск данных, запись на диск, чтение с диска.
Интерфейсная часть программы должна содержать следующие компоненты: окно «О программе», главное меню, всплывающее меню, строку состояния, панель инструментов, подсказки по командам меню и панели инструментов.
Выбор и обоснование типа разрабатываемого контейнера
В курсовой работе необходимо использовать контейнер для хранения объектов. В качестве прототипа разрабатываемого контейнера выбран vector (динамический массив), потому что он обладает меньшей сложностью при доступе к элементам в отличии от контейнера типа list.
Разрабатываемый контейнер должен обладать следующими функциями:
1.Создание пустого контейнера;
2.Создание контейнера размера n;
3.Конструкторы и операторы копирования и перемещения;
4.Получение элемента по индексу;
5.Вставка элемента в произвольную позицию;
6.Очистка контейнера;
7.Удаление элемента по индексу;
8.Наличие класса итератора и итераторов begin и end.
3
Разработка структуры программы
Программа состоит из интерфейса и кода.
1.Интерфейс:
1.1.Основное окно программы.
1.2.Главное меню QMenuBar.
1.3.Панель инструментов QToolBar.
1.4.Таблица QTableWidget.
1.5.Строка поиска по таблице QLineEdit.
1.6.Статусная строка QStatusBar.
2.Диалог добавления / редактирования элемента.
2.1.4 метки QLabel: бренд, название, частота процессора и дополнение.
2.2.4 текстовые поля QLineEdit.
3.Диалог просмотра базы данных в CSV-формате.
3.1.Многострочное текстовое поле QTextEdit.
3.2.Кнопка закрытия окна QPushButton.
4.Программа:
4.1.Основной класс формы QT — окно главной программы.
4.2.Класс формы QT — диалог добавления / редактирования записи.
4.3.Класс формы QT — диалог просмотра базы данных в CSV-формате.
4.4.Шаблонный класс контейнера типа vector.
Разработка собственных классов
Function — класс основной функции.
1.Поля класса:
1.1.Имя: QString name.
1.2.Тип: QString type.
1.3.Количество аргументов: int n_arguments.
1.4.Указатель на массив с аргументами: QString *arguments.
1.5.Комментарий: QString comment.
2.Методы класса:
2.1.Оператор получения аргумента функции по индексу.
2.2.Изменение имени функции: setName.
2.3.Получение имени функции: getName.
2.4.Изменение типа функции: setType.
2.5.Получение типа функции: getType.
2.6.Изменение комментария функции: setComment.
2.7.Получение комментария функции: getComment.
2.8.Изменение числа аргументов: setNArguments.
2.9.Получение числа аргументов: getNArguments.
Vector — класс контейнера выбранного типа.
1.Поля класса:
1.1.Текущий размер массива: int n_.
1.2.Резервируемый размер массива: int m_.
1.3.Указатель на массив с элементами: T * value.
1.4.Стандартное число резервируемых элементов: int standart.
2.Методы класса:
2.1.Оператор получения элемента по индексу.
4
2.2.Получение размера массива: size.
2.3.Вставка элемента в произвольную позицию: insert.
2.4.Добавление элемента в начало: push_front.
2.5.Добавление элемента в конец: push_back.
2.6.Получение булевого значения «пустой ли массив».
2.7.Удаление элемента произвольного индекса: erase.
2.8.Удаление первого и последнего элемента: pop_front, pop_back
MainWindow — класс главного окна.
1.Поля класса:
1.1.Строка, содержащая текущее имя файла: QString file_.
1.2.Цвет типа функции в таблице: QColor FunctionType.
1.3.Цвет комментария функции в таблице: QColor FunctionComment.
1.4.Контейнер с элементами: Vector<Function> main_vector.
2.Методы класса:
2.1.Выбор действия «Новый файл»: on_action_New_triggered.
2.2.Выбор действия «Открыть»: on_action_—pen_triggered.
2.3.Выбор действия «Сохранить»: on_action_Save_triggered.
2.4.Выбор действия «Сохранить как»: on_action_SaveAs_triggered.
2.5.Выбор действия «Объединить»: on_action_Merge_triggered.
2.6.Выбор действия «Добавить запись»: on_action_Add_triggered.
2.7.Выбор действия «Редактировать запись»: on_action_Edit_triggered.
2.8.Выбор действия «Удалить запись»: on_action_Delete_triggered.
2.9.Выбор действия «Очистить»: on_action_Clear_triggered.
2.10.Выбор действия «Отобразить данные»: on_action_ShowData_triggered.
2.11.Выбор действия «О программе»: on_action_About_triggered.
2.12.Выбор действия «Выйти»: on_action_Exit_triggered.
2.13.Двойной клик по таблице: on_tableWidget_cellDoubleClicked.
2.14.Поиск в LineEdit: on_lineEdit_textChanged.
Add_Dialog — класс диалогового окна для добавления / редактирования записи.
1.Методы класса:
1.1.Установка типа и имени функции: setType, setName
1.2.Установка аргументов функции: setArgs.
1.3.Установка комментария функции: setComment.
1.4.Получение данных в результате диалога: getData.
Show_Data — класс диалогового окна для отображения данных в CSV-формате.
1.Методы класса:
1.1.Установка и получение текста в многострочное поле: setText, getText.
1.2.Нажатие кнопки закрытия: on_pushButton_clicked.
5
Разработка интерфейса
1. Основное окно программы, размер окна меняется (рис. 1).
Рисунок 1. Основное окно программы.
Кроме главного меню в программе имеется панель инструментов, которая позволяет добавлять, удалять, редактировать информацию о компоненте компьютера, а также есть строка поиска, которая ищет все вхождения набора символов в таблице.
2. Диалог добавления / редактирования записи (рис. 2).
Рисунок 2. Диалоговое окно.
После нажатия OK все пробелы в текстовых строках удаляются слева и справа нормализуются в середине до одного, а точки с запятой преобразуются в запятые.
6
3. Диалог отображения данных в CSV-формате (рис. 3).
Рисунок 3. Диалог отображения данных в CSV-формате.
Текст изменить нельзя. Только для чтения. После нажатия OK окно закрывается.
7
