1   2   3   4
Ім'я файлу: Основний розділ.doc
Розширення: doc
Розмір: 1193кб.
Дата: 04.03.2020
скачати

Доповнення

  • 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("last_name")).toString()<<
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).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

NAME

VARCHAR(50)

ПІБ водія

ADRESS

VARCHAR(80)

Адреса проживання

PASSPORT_NO

VARCHAR(15)

Номер паспорта

PASSPORT_DATE

TIMESTAMP

Дата видачі паспорта

PASSPORT_NOTE

VARCHAR(100)

Дані паспорта

IPN

VARCHAR(20)

Ідентифікаційний код

PHONE

VARCHAR(30)

Телефон


В цій таблиці будуть зберігатися дані про всіх водіїв, які працюють в організації, їхні адреси та телефони.
Таблиця 2.

Автомобілі (AUTOMOBILE).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

NAME

VARCHAR(30)

Назва авто

MARKA

VARCHAR(30)

Марка автомобіля

COLOR

VARCHAR(30)

Колір автомобіля

CREATE_DATE

TIMESTAMP

Дата випуску авто

AUTOMOBILE_TYPE_ID

INTEGER

Тип автомобіля (зовнішнє ключове поле на таблицю AUTOMOBILE_TYPE)

NOTE

VARCHAR(50)

Примітки

Всі дані про парк автомобілів, який є у наявності зберігається в цій таблиці, - марка авто, колір, дата випуску автомобіля, тощо.

Таблиця 3.

Тип автомобіля (AUTOMOBILE_TYPE).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

NAME

VARCHAR(30)

Назва типу(седан, хечбек, мікроавтобус, вантажівка)

Оскільки автомобілі можуть бути різних типів( седан, мікроавтобус), то ця таблиця буде своєрідним довідником типів автомобілів.
Таблиця 4.

Виклики абонентів (CALLS).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

CALL_DATE

TIMESTAMP

Час виклику

POINT_FROM

VARCHAR(50)

Місце відправки

POINT_DESTINATION

VARCHAR(50)

Точка призначення

IS_CARGO

SMALLINT

Чи є вантаж?

OPERATOR_ID

INTEGER

Оператор, який прийняв замовлення (зовнішнє ключове поле на таблицю OPERATOR)

AUTOMOBILE_ID

INTEGER

Автомобіль, який виїхав (зовнішнє ключове поле на таблицю AUTOMOBILE)

Це ключова таблиця, сюди попадають всі виклики від замовників, дата виклику, автомобіль який їде до замовника, а також пункт старту та пункт призначення.
Таблиця 5.

Оператори (OPERATORS).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

NAME

VARCHAR(60)

ПІБ оператора

PHONE

VARCHAR(30)

Телефон

NOTE

VARCHAR(30)

Примітки

Ця таблиця призначена для збереження списку операторів-диспетчерів організації, які будуть приймати замовлення та вводити дані в комп’ютер.
Таблиця 6.

Зміни водіїв (DRIVER_TIME).

Назва поля

Тип поля

Призначення поля

ID

INTEGER

Ключове поле

WORKING_DATE

TIMESTAMP

День роботи

TAXI_DRIVER_ID

INTEGER

Водій таксі (зовнішнє ключове поле на таблицю TAXI_DRIVER)

AUTOMOBILE_ID

INTEGER

Автомобіль, який їздить (зовнішнє ключове поле на таблицю AUTOMOBILE)

NOTE

VARCHAR(30)

Примітки


Структура бази даних готова, вона містить 6 таблиць, тепер переходимо до наступного етапу – фізичного створення таблиць, первинних ключів, зовнішніх ключів. Для цього зручно скористатися яким-небудь редактором БД і найбільш підходящим я вважаю редактор SQLite Manager.

Завантажую архівований пакет і як виявилося, він не потребує окремої інсталяції, а почати роботу можна зразу, запустивши файл програми в папці, яку ми завантажили.



Рисунок 3. Головне вікно програми SQLite Manager

Тепер створюємо базу даних, для цього на панелі інструментів, на якій зображені великі піктограми, натискаємо Create Database(створити базу даних), в результаті з’явиться вікно:



1   2   3   4

скачати

© Усі права захищені
написати до нас