Автор: Пользователь скрыл имя, 28 Апреля 2015 в 16:38, курсовая работа
Предмет исследования - применение современных информационных технологий и средств визуального программирования для создания автоматизированных информационных систем.
Цель работы - проектирование и разработка информационной системы интернет – фотоцентра.
Введение……………….…………………………………………................
1 Теоретические основы разработки автоматизированной
информационной системы……………………………………………..………..
1.1 Qt – кроссплатформенный инструментарий разработчика
прикладного программного обеспечения……...……………………………….
1.2 Система управления базами данных MySQL…………..………….
2 Проектирование и разработка клиентского приложения
информационной системы проекта интернет – фотоцентр………..…….……
2.1 Создание структуры базы данных MySQL проекта
интернет – фотоцентр…..……………………..…………………………………
2.2 Реализация проекта интернет – фотоцентр в Qt……..……..…….
Заключение…………………………………………………………………
Список использованных источников……………………………………..
void on_actionTableProducts_
void on_actionTablePrices_
void on_actionTableMagazineSales_
void on_actionTableMagazineIncoming
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_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("ФИО_
headerTitles.append("Эл_почта_
QMap<int, QSqlRelation> relations;
TableWindow *window = new TableWindow ("customers", "Покупатели", headerTitles, relations, this);
window->setAttribute(Qt::WA_
QMdiSubWindow *sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Юр_
headerTitles.append("Город_
headerTitles.append("Юр_адрес_
QMap<int, QSqlRelation> relations;
TableWindow *window = new TableWindow ("vendors", "Поставщики", headerTitles, relations, this);
window->setAttribute(Qt::WA_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Номер_
headerTitles.append("Дата/
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_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Номер_
headerTitles.append("Дата/
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_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Имя_
headerTitles.append("
QMap<int, QSqlRelation> relations;
TableWindow *window = new TableWindow ("products", "Товары", headerTitles, relations, this);
window->setAttribute(Qt::WA_
QMdiSubWindow *sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Дата/
headerTitles.append("Цена/
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_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Номер_
headerTitles.append("Количеств
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_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
QStringList headerTitles;
headerTitles.append("Номер_
headerTitles.append("Номер_
headerTitles.append("Количеств
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_
QMdiSubWindow
*sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_actionQuery1_
{
QSqlQuery query;
query.prepare("SELECT name FROM vendors");
if (!query.exec())
{
QMessageBox::information(this, "Ошибка", query.lastError().text());
}
QStringList headers;
headers.append("Юр_название_
QueryWindow *window = new QueryWindow
("Вывести юр.имя всех
window->setAttribute(Qt::WA_
QMdiSubWindow *sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_actionQuery2_
{
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_
QMdiSubWindow *sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
void MainWindow::on_
{
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_
{
QSqlQuery query;
query.prepare("SELECT name FROM vendors");
if (!query.exec())
{
QMessageBox::information(this, "Ошибка", query.lastError().text());
}
QStringList headers;
headers.append("Юр_название_
QueryWindow *window = new QueryWindow
("Вывести юр.имя всех
window->setAttribute(Qt::WA_
QMdiSubWindow *sw = ui->mdiArea->addSubWindow(
sw->setAttribute(Qt::WA_
sw->showMaximized();
}
Таким образом, основным преимуществом Qt является возможность запускать написанное приложение на большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода.
Qt является
полностью объектно-
Qt обладает определенной «быстротой». Зачастую кроссплатформенные приложения, написанные на платформах Java и .Net Framework, оказываются очень медлительным из-за дополнительного уровня абстракции. Программы Qt являются компилируемыми C++-приложениями, т.е. работают также быстро как и приложения С++.
Заключение
В процессе выполнения курсовой работы изучены взаимосвязи в информационной структуре интернет – фотоцентра, проанализированы различные запросы к базе данных определенных таблиц. На основе полученных данных было спроектировано и разработано клиентское приложение с использованием кроссплатформенного инструментария Qt.
В теоретической части курсовой работы рассмотрены основы разработки автоматизированной информационной системы: процесс создания, проектирования и использования базы данных MySQL, реализация различных классов при разработке приложений с использованием библиотеки Qt.
В практической части курсовой работы реализована структура базы данных интернет – фотоцентра и описан процесс создания клиентского приложения с использованием программы Qt.
Список использованных источников