Задания для самостоятельного выполнения
Написать программу-обёртку для базы данных SQLite. Программа должна обладать следующими функциями:
- Отображение данных таблиц и запросов
- Редактирование данных
- Добавление данных
- Удаление данных
Программы должны компилироваться на Linux и Windows без изменения исходного кода. В данной работе вам придётся устанавливать и настраивать большое количество инструментов разработки, поэтому, чтобы не забивать свою основную систему, можете использовать виртуальные машины.
Варианты заданий
1. Преподаватели кафедр
2. Животные
3. Дети и врачи
4. Товары
5. Контент авторов
6. Сотрудники организаций
7. Преподаватели и дисциплины
8. Расписание
9. Кафедры и дисциплины
10. Адреса
11. Автомобили и владельцы
12. Книги
Пример
База данных
Создадим и заполним простую базу данных.

Для этого установите пакет sqlite3, в терминале наберите sqlite3 mydb.db и выполните следующие запросы:
CREATE TABLE shops (shop_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL);
INSERT INTO shops (name) VALUES ("PNS"),("Второй");
SELECT * FROM shops;
CREATE TABLE components (
component_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
shop_id INTEGER NOT NULL,
FOREIGN KEY (shop_id)
REFERENCES shops (shop_id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
INSERT INTO components (name, price, shop_id)
VALUES ("AMD Ryzen 7 3700X", 25000, 1),
("Nvidia RTX 2060 Super", 30000, 2),
("Intel Core i7 9700KF", 30000, 2),
("AMD RX 5700 XT", 38000, 1);
SELECT
components.component_id,
components.name,
price,
shops.shop_id,
shops.name
FROM
components
INNER JOIN shops ON components.shop_id = shops.shop_id;
Теперь можно выйти из консольного интерфейса sqlite3 командой .exit.
Gtk+3. Сборка в Linux
Необходимые файлы находятся тут. Установите необходимые пакеты.
Необходимые пакеты
Debian-based
- libsqlite3-dev
- gcc
- make
- libgtk-3-0
- libgtk-3-dev
- glade
Arch-based
- pkg-config
- gcc
- make
- gtk3
- glade
Проанализируйте исходный код и прилагающийся makefile, это поможет в написании собственного варианта.
Скомпилируйте программу командой make. Примерно так будет выглядеть получившееся приложение:

GUI для этой программы разрабатывался с помощью Glade. Откройте файл lab04.glade и проанализируйте структуру интерфейса. Чтобы освоить разработку в Glade, вам пригодится cтатья на хабре https://habr.com/ru/post/116268/. Для разработки с Gtk+ могут быть полезными:
- GTK API Reference https://developer.gnome.org/
- Дополнительная литература в папке books
Gtk+3. Сборка в Windows
- Скачайте, установите и обновите MSYS2, следуя инструкциям на сайте https://www.msys2.org/
- В консоли MSYS2 установите необходимые для сборки пакеты:
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-toolchain base-devel sqlite3 libsqlite3-devel
- После установки закройте консоль MSYS2 MSYS и откройте MSYS2 MinGW x64. Нужно удостовериться, что в переменной окружения PKG_CONFIG_PATH есть пути
/mingw64/lib/pkgconfigи/mingw64/share/pkgconfig:
echo $PKG_CONFIG_PATH
- Создайте каталог для своего проекта и перейдите в него:
mkdir ~/lab04
cd ~/lab04
Для Windows этот каталог имеет путь C:\msys64\home\%USERNAME%\lab04, если вы следовали инструкции в п.1.
В созданный каталог положите файлы исходного кода, файл .glade, makefile и файл базы данных.
Cкопируйте в этот каталог ресурсы, нужные для работы собираемой программы:
cp /mingw64/bin/*dll .
mkdir -p ./lib/gdk-pixbuf-2.0
cp -r /mingw64/lib/gdk-pixbuf-2.0/* ./lib/gdk-pixbuf-2.0/
mkdir -p ./share/glib-2.0/schemas
cp -r /mingw64/share/glib-2.0/schemas/* ./share/glib-2.0/schemas
mkdir -p ./share/icons
cp -r /mingw64/share/icons/* ./share/icons
- Наконец-то можно собрать программу командой
makeи запустить её. Чтобы удостовериться, что программа запускается и работает в Windows правильно, её следует запустить просто даблкликом lab04.exe, т.е. не из консоли MSYS2 - это нужно для того, чтобы программа не видела переменные окружения и настройки MSYS, как будто мы запускаем приложение в роли обычного пользователя. Если всё прошло успешно, программа запустится.
Примечание: Конечно, на данном этапе папка с программой занимает ~130 Мб, но для простоты мы скопировали в неё все иконки и dll файлы, хотя конечно же, она использует только некоторые из них. Вы можете самостоятельно подобрать минимально необходимый набор файлов для поставки вашей программы.