Разработка клиентского приложения информационной системы проекта интернет–фотоцентра

Автор: Пользователь скрыл имя, 28 Апреля 2015 в 16:38, курсовая работа

Краткое описание

Предмет исследования - применение современных информационных технологий и средств визуального программирования для создания автоматизированных информационных систем.
Цель работы - проектирование и разработка информационной системы интернет – фотоцентра.

Оглавление

Введение……………….…………………………………………................
1 Теоретические основы разработки автоматизированной
информационной системы……………………………………………..………..
1.1 Qt – кроссплатформенный инструментарий разработчика
прикладного программного обеспечения……...……………………………….
1.2 Система управления базами данных MySQL…………..………….
2 Проектирование и разработка клиентского приложения
информационной системы проекта интернет – фотоцентр………..…….……
2.1 Создание структуры базы данных MySQL проекта
интернет – фотоцентр…..……………………..…………………………………
2.2 Реализация проекта интернет – фотоцентр в Qt……..……..…….
Заключение…………………………………………………………………
Список использованных источников……………………………………..

Файлы: 1 файл

курсов_Qt_фотоцен.doc

— 408.50 Кб (Скачать)

 

    void on_actionTableProducts_triggered();

 

    void on_actionTablePrices_triggered();

 

    void on_actionTableMagazineSales_triggered();

 

    void on_actionTableMagazineIncoming_triggered();

 

    void on_actionQuery1_triggered();

 

    void on_actionQuery2_triggered();

 

    void on_actionConnecting_triggered();

 

private:

    Ui::MainWindow *ui;                         //указатель на класс

 

};

 

#endif // MAINWINDOW_H

 

Главное окно предоставляет структуру для создания пользовательского интерфейса приложения. Qt имеет класс QMainWindow и связанные с ним классы для управления главным окном. QMainWindow имеет собственный компоновщик, в который можно добавлять QToolBar, QDockWidget, QMenuBar и QStatusBar. Компоновщик имеет центральную область, которая может быть занята любым виджетом (рисунок 2.2).

Рисунок 2.2 – Схематическая структура главного окна

Qt реализует меню в  классе QMainWindow. QAction (действия) добавляются в меню, которое отображает их как элементы меню.

В файле mainwindow.cpp записываются: подключения нужных библиотек (приложение), файлов, процесс реализации данного класса mainwindow.

Листинг 2.3 – файл mainwindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include "tablewindow.h"

#include "querywindow.h"

#include "dialogsettings.h"

#include "dialogquery.h"

 

#include <QMainWindow>

#include <QMessageBox>

#include <QMdiSubWindow>

#include <QSqlQuery>

#include <QInputDialog>

#include <QSqlError>

 

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)       //реализация класса и конструктора с параметрами и выделение памяти

{

    ui->setupUi(this);    // указатель на setupUi

}

MainWindow::~MainWindow()

{

    delete ui;

}

void MainWindow::on_actionTableCustomers_triggered()

{

    QStringList headerTitles;

    headerTitles.append("Номер_покупателя/id_customer");

    headerTitles.append("ФИО_покуп/name");

    headerTitles.append("Эл_почта_покуп/email");

    QMap<int, QSqlRelation> relations;

    TableWindow *window = new TableWindow ("customers", "Покупатели", headerTitles, relations, this);

    window->setAttribute(Qt::WA_DeleteOnClose);

    QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

    sw->setAttribute(Qt::WA_DeleteOnClose);

    sw->showMaximized();

}

void MainWindow::on_actionTableVendors_triggered()

{

       QStringList headerTitles;

       headerTitles.append("Номер_поставщика/id_vendor");

       headerTitles.append("Юр_название_поставщ/name");

       headerTitles.append("Город_поставщ/city");

       headerTitles.append("Юр_адрес_поставщ/address");

       QMap<int, QSqlRelation> relations;

       TableWindow *window = new TableWindow ("vendors", "Поставщики", headerTitles, relations, this);

       window->setAttribute(Qt::WA_DeleteOnClose);

       QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

       sw->setAttribute(Qt::WA_DeleteOnClose);

       sw->showMaximized();

}

void MainWindow::on_actionTableSale_triggered()

{

    QStringList headerTitles;

        headerTitles.append("Номер_покупки/id_sale");

        headerTitles.append("Номер_покупателя/id_customer");

        headerTitles.append("Дата/data_sale");

        QMap<int, QSqlRelation> relations;

        relations.insert(1, QSqlRelation ("customers", "id_customer", "id_customer"));

        TableWindow *window = new TableWindow ("sale", "Покупки", headerTitles, relations, this);

        window->setAttribute(Qt::WA_DeleteOnClose);

        QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

        sw->setAttribute(Qt::WA_DeleteOnClose);

        sw->showMaximized();

}

void MainWindow::on_actionTableIncoming_triggered()

{

    QStringList headerTitles;

       headerTitles.append("Номер_поставки/id_incoming");

        headerTitles.append("Номер_поставщика/id_vendor");

        headerTitles.append("Дата/date_incoming");

        QMap<int, QSqlRelation> relations;

        relations.insert(1, QSqlRelation ("vendors", "id_vendor", "id_vendor"));

        TableWindow *window = new TableWindow ("incoming", "Поставки", headerTitles, relations, this);

        window->setAttribute(Qt::WA_DeleteOnClose);

        QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

        sw->setAttribute(Qt::WA_DeleteOnClose);

        sw->showMaximized();

}

void MainWindow::on_actionTableProducts_triggered()

{

    QStringList headerTitles;

       headerTitles.append("Номер_товара/id_product");

       headerTitles.append("Имя_товара/name");

       headerTitles.append("Наименование/case_name");

       QMap<int, QSqlRelation> relations;

       TableWindow *window = new TableWindow ("products", "Товары", headerTitles, relations, this);

       window->setAttribute(Qt::WA_DeleteOnClose);

       QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

       sw->setAttribute(Qt::WA_DeleteOnClose);

       sw->showMaximized();

}

void MainWindow::on_actionTablePrices_triggered()

{

    QStringList headerTitles;

        headerTitles.append("Номер_продукта/id_product");

        headerTitles.append("Дата/date_price_changes");

        headerTitles.append("Цена/price");

        QMap<int, QSqlRelation> relations;

        relations.insert(0, QSqlRelation ("products", "id_product", "id_product"));

        TableWindow *window = new TableWindow ("prices", "Цены", headerTitles, relations, this);

        window->setAttribute(Qt::WA_DeleteOnClose);

        QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

        sw->setAttribute(Qt::WA_DeleteOnClose);

        sw->showMaximized();

}

void MainWindow::on_actionTableMagazineSales_triggered()

{

    QStringList headerTitles;

        headerTitles.append("Номер_покупки/id_sale");

        headerTitles.append("Номер_продукта/id_product");

        headerTitles.append("Количество/quantity");

        QMap<int, QSqlRelation> relations;

        relations.insert(0, QSqlRelation ("sale", "id_sale", "id_sale"));

        relations.insert(1, QSqlRelation ("products", "id_product", "id_product"));

        TableWindow *window = new TableWindow ("magazine_sales", "Журнал покупок", headerTitles, relations, this);

        window->setAttribute(Qt::WA_DeleteOnClose);

        QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

        sw->setAttribute(Qt::WA_DeleteOnClose);

        sw->showMaximized();

}

void MainWindow::on_actionTableMagazineIncoming_triggered()

{

    QStringList headerTitles;

        headerTitles.append("Номер_поставки/id_incoming");

        headerTitles.append("Номер_продукта/id_product");

        headerTitles.append("Количество/quantity");

        QMap<int, QSqlRelation> relations;

        relations.insert(0, QSqlRelation ("incoming", "id_incoming", "id_incoming"));

        relations.insert(1, QSqlRelation ("products", "id_product", "id_product"));

        TableWindow *window = new TableWindow ("magazine_incoming", "Журнал поставок", headerTitles, relations, this);

        window->setAttribute(Qt::WA_DeleteOnClose);

        QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

        sw->setAttribute(Qt::WA_DeleteOnClose);

        sw->showMaximized();

}

void MainWindow::on_actionQuery1_triggered()

{

      QSqlQuery query;

      query.prepare("SELECT name FROM vendors");

      if (!query.exec())

      {

          QMessageBox::information(this, "Ошибка", query.lastError().text());

      }

    QStringList headers;

    headers.append("Юр_название_поставщ/name");

    QueryWindow *window = new QueryWindow ("Вывести юр.имя всех поставщиков", query, headers);

    window->setAttribute(Qt::WA_DeleteOnClose);

    QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

    sw->setAttribute(Qt::WA_DeleteOnClose);

    sw->showMaximized();

}

void MainWindow::on_actionQuery2_triggered()

{

    QSqlQuery query;

      query.prepare("SELECT MIN(price), MAX(price), AVG(price) FROM prices");

      if (!query.exec())

      {

          QMessageBox::information(this, "Ошибка", query.lastError().text());

      }

    QStringList headers;

    headers.append("Цена/price");

    QueryWindow *window = new QueryWindow ("Мин., макс. и средняя цена  по товарам (оказываемым услугам)", query, headers);

    window->setAttribute(Qt::WA_DeleteOnClose);

    QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

    sw->setAttribute(Qt::WA_DeleteOnClose);

    sw->showMaximized();

}

void MainWindow::on_actionConnecting_triggered()

{

    Dialogsettings dialog;

    if (dialog.exec() == QDialog::Accepted){

        QMessageBox::information(this, "Предупреждение", "Изменение  настроек вступит в силу только  после перезапуска программы");

    }

}

Затем осуществляется создание реляционной модели и выделяется под нее память, после чего происходит переход модели к таблице базы данных.

Осуществляется создание виджета для отображения базы данных и запросов, на главном окне приложения отображается одна из таблиц базы данных (рисунок 2.3.)

Рисунок 2.3 – Отображение базы данных

В ходе разработки приложения были разработаны запросы. Сами запросы осуществляются стандартным языком запросов SQL (Structured Query Language – структурированный язык запросов), без какого-либо изменения синтаксиса (листинг 2.4)

Листинг 2.4 – Sql-запрос из файла mainwindow.cpp:

 

void MainWindow::on_actionQuery1_triggered()

{

      QSqlQuery query;

      query.prepare("SELECT name FROM vendors");

      if (!query.exec())

      {

          QMessageBox::information(this, "Ошибка", query.lastError().text());

      }

    QStringList headers;

    headers.append("Юр_название_поставщ/name");

 

    QueryWindow *window = new QueryWindow ("Вывести юр.имя всех поставщиков", query, headers);

    window->setAttribute(Qt::WA_DeleteOnClose);

    QMdiSubWindow *sw = ui->mdiArea->addSubWindow(window);

    sw->setAttribute(Qt::WA_DeleteOnClose);

    sw->showMaximized();

}

Таким образом, основным преимуществом Qt является возможность запускать написанное приложение на большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода.

Qt является  полностью объектно-ориентированным, легко расширяемым и поддерживающим  технику компонентного программирования.

Qt обладает определенной «быстротой». Зачастую кроссплатформенные приложения, написанные на платформах Java и .Net Framework, оказываются очень медлительным из-за дополнительного уровня абстракции. Программы Qt являются компилируемыми C++-приложениями, т.е. работают также быстро как и приложения С++.

 

 

 

 

Заключение

В процессе выполнения курсовой работы изучены взаимосвязи в информационной структуре интернет – фотоцентра, проанализированы различные запросы к базе данных определенных таблиц. На основе полученных данных было спроектировано и разработано клиентское приложение с использованием кроссплатформенного инструментария Qt.

В теоретической части курсовой работы рассмотрены основы разработки автоматизированной информационной системы: процесс создания, проектирования и использования базы данных MySQL, реализация различных классов при разработке приложений с использованием библиотеки Qt.

В практической части курсовой работы реализована структура базы данных интернет – фотоцентра и описан процесс создания клиентского приложения с использованием программы Qt.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованных источников

  1. Шлее М. Qt4.8. Профессиональное программирование на C++.Издательство: СПб.: БХВ-Петербург, 2012. – 912 с.
  2. Саммерфилд М. Qt. Профессиональное программирование. Разработка кроссплатформенных  приложений на С++. Издательство: СПб.: Символ-Плюс, 2011. – 560 с.
  3. Бланшет Ж., Саммерфилд М. Qt 4: программирование GUI на C++. Издательство: М.: КУДИЦ-ПРЕСС, 2008. – 736 с.
  4. Гольцман В. MySQL5. Библиотека программиста. Издательство: Питер. Год: 2010. - 253 с.
  5. Грабер М. SQL. Издательство: «Лори». Год: 2003. – 645 с.
  6. Земсков Ю.  Qt 4 на примерах. Издательство: СПб.: БХВ-Петербург, 2008. – 608 с.
  7. Qt Project, Норвегия, Официальный сайт [Электронный ресурс] / http://qt-project.org – Дата доступа: 16.01.2015.
  8. crossplatform.ru – Все о кроссплатформенном программировании, РФ, [Электронный ресурс] / http://www.crossplatform.ru – Дата доступа: 16.01.2015.

 

 


Информация о работе Разработка клиентского приложения информационной системы проекта интернет–фотоцентра