1 2 3 4 Доповнення Qt Xml Qt XmlPatterns Qt Svg Qt Concurrent Qt Printsupport Qt DBus Qt OpenGL Qt ActiveQt Qt Graphical Effects Qt Script Qt Declarative Qt Image Formats Qt Creator Починаючи з версії 4.5 в комплект Qt включено середовище розробки Qt Creator, яке включає в себе редактор коду, довідку, графічні засоби Qt Designer. Qt Creator може використовувати GCC або Microsoft VC++ в якості компілятора. Для Windows версій бібліотека комплектується компілятором, заголовними і об'єктними файлами MinGW. Qt Creator — середовище розробки, призначене для створення крос-платформових застосунків з використанням бібліотеки Qt. Підтримується розробка як класичних програм мовою C++, так і використання мови QML, для визначення сценаріїв в якій використовується JavaScript, а структура і параметри елементів інтерфейсу задаються CSS-подібними блоками. Qt комплектується візуальним середовищем розробки графічного інтерфейсу Qt Designer, що дозволяє створювати діалоги і форми« мишею (в режимі WYSIWYG). У постачанні Qt є Qt Linguist — графічна утиліта, що дозволяє спростити локалізацію і переклад вашої програми багатьма мовами; і Qt Assistant — довідкова система Qt, що спрощує роботу з документацією по бібліотеці, а також дозволяє створювати крос-платформену довідку для розроблюваного на основі Qt ПЗ. 1.3. Розробка ключових рішень ПЗ Під’єднання до БД. Для з’єднання з базою даних потрібно активізувати необхідний драйвер, в нашому випадку це - SQLite, і використовуємо для цього статичний метод QSqlDatabase::addDatabase: QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//активуємо драйвер db.setDatabaseName("db_name "); // ім’я БД db.setHostName("db"); db.setUserName("sysdba"); db.setPassword("masterkey"); if(!db.open()) { //підєднюємося qDebug()< return; } Створення таблиці. Для того щоб виконувати команди SQL, слід скористатися класом QSqlQuery. Клас можна використовувати не тільки для виконання DML команд, таких, як SELECT, INSERT, UPDATE и DELETE, але і DDL виразів, таких, як CREATE TABLE. Запити, які виконані успішно, встановлюють стан в «активний», а isActive() поверне true, в іншому разі стан встановиться в "неактивний". Запити оформляються у виді звичайної стрічки, яка буде передана в конструктор або метод QSqlQuery::exec(). Код для створення нової таблиці буде мати вигляд: QSqlQuery query; QString str = "CREATE TABLE my_table(" "id integer PRIMARY KEY NOT NULL, " "last_name VARCHAR(100)," "first_name VARCHAR(100)," "middle_name VARCHAR(100));"; if(!query.exec(str)) { qDebug()<<"помилка при створенні таблиці"; return; } Добавлення даних до таблиці. Для добавлення даних в таблицю використовують SQL команду INSERT, фрагмент коду, який вставить в таблицю my_table запис Сидоренко Іван Іванович буде таким: QString insert_query = "INSERT INTO my_table(last_name,first_name,middle_name) VALUES('%1','%2','%3');"; insert_query = insert_query.arg(QString::fromUtf8("Сидоренко")) .arg(QString::fromUtf8("Іван")) .arg(QString::fromUtf8("Іванович")); if(!query.exec(insert_query)) { qDebug()<<QString::fromUtf8("Ошибка при добавлении данных"); return; } Отримання даних Для того щоб отримати дані з якоїсь однієї таблиці, або групи таблиць, Можна скористатися таким SQL – фрагментом: SELECT * FROM my_table. Тут, my_table – це таблиця, з якої вибираємо дані, а символ * означає, що вибрати всі поля , які є в цій таблиці. Наведемо фрагмент програмного коду: if (!query.exec("SELECT * FROM my_table")) { qDebug() << "Помилка отримання даних"; return; } QSqlRecord rec = query.record(); //отримання всіх записів while(query.next()) { //наступний запис qDebug()< query.value(rec.indexOf("first_name")).toString()<< query.value(rec.indexOf("middle_name")).toString(); } Після виконання запиту QSQLQuery надає можливість переміщуватися но результуючому набору даних за допомогою методів next(), previous(), first(), last() и seek(). Метод next() дозволяє перейти на наступну стрічку даних, previous() на попередню. Методи first(), last() вибирають відповідно перший та останній запис таблиці. Метод seek() дозволяє переміститися на довільний запис в таблиці, а отриати кількість записів таблиці допоможе метод size(). 1.4. Основні функції та змінні програми Розглянемо основні фінкції, які використовуються в нашій програмі. Почнемо з функції main: int main(int argc, char *argv[]) Функція, з якої починається будь-яка програма на мові С++, називається main і в нашому випадку в цій функції відбувається встановлення правильної системи кодуванн а потім запускається головне вікно програми. void Connect() В цій функції відбувається підєднання до нашої бази даних, після чого можна відправляти запити, переглядати та редагувати дані. void Disconnect() Ця функція закриває зєднання з базою даних. Щоб мати можливість робити з базою даних, потрібно знову до неї під єднатися. void QueryToTable() Ця функція дозволяє здійснити запит да вказаної таблиці і повернути результуючий набір даних. void UpdateTable() Після виклику цієї функції буде поновлено весь набір даних, який відображається в таблиці. void FindRecord() Знайти запис в указаній таблиці, серед вхідних параметрів також потрібно вказати назву поля, в якому буде проводитися пошук. Звичайно, що в програмі існує велика кількість не перерахованих нами функцій, яки виконують різноманітні дії. Ми з вами переглянули основні, які дозволяють працювати з базою даних. 1.5. Розробка бази даних (БД) Структура бази даних буде містити шість таблиць та мати наступний вигляд: Розглянемо призначення та поля кожної з цих таблиць. Таблиця 1. Водії таксі (TAXI_DRIVER).
В цій таблиці будуть зберігатися дані про всіх водіїв, які працюють в організації, їхні адреси та телефони. Таблиця 2. Автомобілі (AUTOMOBILE).
Всі дані про парк автомобілів, який є у наявності зберігається в цій таблиці, - марка авто, колір, дата випуску автомобіля, тощо. Таблиця 3. Тип автомобіля (AUTOMOBILE_TYPE).
Оскільки автомобілі можуть бути різних типів( седан, мікроавтобус), то ця таблиця буде своєрідним довідником типів автомобілів. Таблиця 4. Виклики абонентів (CALLS).
Це ключова таблиця, сюди попадають всі виклики від замовників, дата виклику, автомобіль який їде до замовника, а також пункт старту та пункт призначення. Таблиця 5. Оператори (OPERATORS).
Ця таблиця призначена для збереження списку операторів-диспетчерів організації, які будуть приймати замовлення та вводити дані в комп’ютер. Таблиця 6. Зміни водіїв (DRIVER_TIME).
Структура бази даних готова, вона містить 6 таблиць, тепер переходимо до наступного етапу – фізичного створення таблиць, первинних ключів, зовнішніх ключів. Для цього зручно скористатися яким-небудь редактором БД і найбільш підходящим я вважаю редактор SQLite Manager. Завантажую архівований пакет і як виявилося, він не потребує окремої інсталяції, а почати роботу можна зразу, запустивши файл програми в папці, яку ми завантажили. Рисунок 3. Головне вікно програми SQLite Manager Тепер створюємо базу даних, для цього на панелі інструментів, на якій зображені великі піктограми, натискаємо Create Database(створити базу даних), в результаті з’явиться вікно: 1 2 3 4 |