
- •1 Постановка задачи
- •2 Выбор и обоснование типа разрабатываемого контейнера
- •3 Разработка структуры программы
- •Объекты:
- •4.7 FootbalPlayer – класс описания футбольного игрока
- •5 Разработка интерфейса
- •6 Инструкция пользователю Создание | чтение базы данных:
- •7 Справочные материалы
- •1. Документация Qt - https://doc.Qt.Io/qt-5/qstring.Html
- •3. Коробов с.А – лекции по дисциплине объектно-ориентированное программирование
3 Разработка структуры программы
Программа по обыкновению состоит из модулей back-end и front-end программирования (логики программы и интерфейса).
Основное окно программы:
Главное меню: QMenuBar
Панель инструментов: QToolBar
Таблица: QTableWidget
Строка статуса таблицы: QLineEdit
Диалог добавления нового элемента:
Строка номера игрока: QLineEdit
Строка возраста игрока: QlineEdit_2
Строки рейтинга игрока: QlineEdit_3 и QlineEdit_4
Строка имени игрока: QLineEdit_5
Строка команды игрока: QLineEdit_6
Блок кнопок для применения/отклонения параметров: buttonBox
Диалог поиска элемента по таблице
Строка поиска элемента: QLineEdit
Применение/отклонение параметров: buttonBox
Диалог редактирования элемента базы данных:
Строка номера игрока: QLineEdit
Строка возраста игрока: QlineEdit_2
Строки рейтинга игрока: QlineEdit_3 и QlineEdit_4
Строка имени игрока: QLineEdit_5
Строка команды игрока: QLineEdit_6
Блок кнопок для применения/отклонения параметров: buttonBox
Код:
Основной класс формы Qt – окно главной программы.
Файл с имплементацией главной формы
Класс формы Qt – окно добавления элемента.
Файл с имплементацией окна добавления
Класс формы Qt – окно поиска элемента.
Файл с имплементацией окна поиска элемента.
Класс формы Qt – окно изменение элемента.
Файл с имплементацией окна изменения элемента.
Класс хэш-таблицы
Файл с имплементацией хэш-таблицы
Класс базы данных FDB
Файл с имплементацией базы данных
Класс описывающий футбольного игрока
Файл с имплементацией класса описывающего футбольного игрока
4 Разработка собственных классов
4.1 dbWindow – класс главного окна и функций яп.
Поля класса:
1. Определение редактирования базы данных – bool isEdit()
Методы класса:
1. Инициализация главного окна void - initWindow()
2. Добавление элемента в базу данных из формы нового элемента - void ldToTable()
3. Выбор действия «новый файл» - void on_actionNew_triggered()
4. Выбор действия «открыть файл» - void on_actionOpen_triggered()
5. Выбор действия «сохранить файл» - void on_actionSave_triggered()
6. Выбор действия «добавить элемент» - void on_actionAdd_new_item_triggered()
7. Выбор действия «удалить элемент» - void on_actionDelete_item_triggered()
8. Выбор действия «слияние бд» - void on_actionMerge_triggered()
9. Выбор действия «поиск» - void on_actionFind_triggered()
10. Выбор действия «информация» - void on_actionHelp_triggered()
11. Выбор действия «редактировать» - void on_actionEdit_triggered()
12. Добавление нового элемента в таблицу из диалогового окна – void setNewTableItemFromDialog(int number, int age, string rate, string name, string team )
13. Логика поиска элементов в таблице void findItemInWidgetTable(QString wanted_line)
14. Изменение элемента базы данных из диалогового окна – void repalceTableItem(int number, int age, string rate, string name, string team)
15. Вывод количества элементов базы данных в окно статуса базы void showItemAmountStauts()
Объекты:
1. Объект класса базы данных – FDB fdb
2. Указатель на объект интерфейса окна ui::dbWindow *iu
4.2 editdialog – класс окна редактирования записей
Поля класса:
Отсутствуют
Методы класса:
1. Применение отредактированных данных – void on_ButtonBox_accepted()
2. Сигнал отправки отредактированных данных в главную форму – void senEditToTabel( int number, int age, string rate, string name, string team)
Объекты:
1. Указатель на объект интерфейса окна редактирования записей – Ui::editdialog *ui
4.3 finindb – класс окна поиска по базе данных
Поля класса:
Отсутствуют
Методы класса:
1. Сигнал нажатие кнопки «ОК» - void okClicled(QString wantedLine)
2. Нажатие кнопки, запускающий логику поиска – void on_buttonBox_accepted()
Объекты:
1. Указатель на объект интерфейса окна поиска –Ui::finindb *ui
4.4 newitemdialog – класс окна добавления нового элемента
Поля класса:
1. Поле номера игрока – int number
2. Поле возраста игрока – int age
3. Поле рейтинга игрока – int rating
4. Поле имени игрока – string name
5. Поле команды игрока – string team
Методы класса:
1. Сигнал применения параметров при нажатии кнопки «ОК» - void acceptClicked( int number, int age, string rating, string name, string team)
2. Запуск логики добавления элемента по нажатии кнопки – void on_buttonBox_accepted()
Объекты:
1. Указатель на объект интерфейса окна ui::newitemdialog *ui
4.5 FDB – класс базы данных
Поля класса:
1. Поле пути к файлу – string dbfile
2. Копия одной строки их полученного файла – string line
3. Проверка на соответствие передаваемого файла нужному формату разметки базы данных – bool isdatabase()
Методы класса:
1. Парсер файла формата базы данных – void dbparser(string path)
2. Шифрование базы данных – string encrypt(string path)
3. Расшифровка базы данных - string decrypt(string path)
4. Открытие файла и размещение в таблице – void open_n_place(string path)
5. Открытие и размещение зашифрованного файла в таблице – void dopen_n_place(string path)
6. Запись информации из контейнера базы данных файл и его сохранение – void writeToDB(string path)
7. Слияние баз данных – void merge(string path)
Объекты:
1. Объект хэш-таблицы HashTable DataBase
4.6 HashTable – класс хэш-таблицы (контейнер)
Поля класса:
1. Хеш группы – static const int hashGroups
Методы класса:
1. Функция хеширования – int hashFunction(int key)
2. Геттер номера игрока – size_t getPlayerNumber(size_t key)
3. Геттер возраста игрока – size_t getPlayerAge(size_t key)
4. Геттер рейтинга игрока – string getPlayerRating(size_t key)
5. Геттер имени игрока – string getPlayerName(size_t key)
6. Геттер команды игрока – string getPlayerTeam(size_t key)
7. Геттер количества ключей – size_t index_amount()
8. Геттер ключа из списка ключей по индексу – size_t get_index(size_t number)
9. Проверка на пустоту таблицы – bool isEmpty()
10. Проверка на входимость ключа в таблицу – bool isKeyExist(int key)
11. Добавление элемента в таблицу – void insertItem(int key, FootbalPlayer value)
12. Удаление элемента из таблицы – void removeItem(int key)
13. Вывод таблицы на экран (только консоль) – void printTable()
14. Очистка всей таблицы – void clear()
15. Изменение элемента таблицы – void replaceItem(int key, FootbalPlayer value)