Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД-отчёт1.doc
Скачиваний:
2
Добавлен:
18.09.2019
Размер:
783.36 Кб
Скачать

4.3. Описание взаимодействия серверной и клиентской части программного комплекса

Чтобы программа могла обращаться к базе данных, необходимо установить между ними соединение. В программе эту функцию выполняет метод CreateConnection.

bool MainWindow::createConnection() {

db = QSqlDatabase::addDatabase("QODBC");

db.setDatabaseName("PostgreSQL35W");

db.setHostName("localhost");

db.setUserName("postgres");

db.setPassword("7531280");

if (!db.open())

{

return false;

}

return true;

}

Далее создаётся параметризированный или непараметризированный запрос. Параметры передаются через интерфейс.

//непараметризированный запрос

QSqlQuery MainWindow::createQuery(QString param) {

QSqlQuery query;

query.prepare(param);

return query;

}

//параметризированный запрос

QSqlQuery MainWindow::createQuery1(QString param1, QString param2, QString param3, QString param4, QString param5, QString qtext) {

QSqlQuery query;

query.prepare(qtext);

query.bindValue(":X1", param1);

query.bindValue(":X2", param2);

query.bindValue(":X3", param3);

query.bindValue(":X4", param4);

query.bindValue(":X5", param5);

return query;

}

После этого запрос отправляется на выполнение, и, если необходимо, результат выводится в таблицу.

void MainWindow::doQuery(QSqlQuery query, QTableWidget *table) {

query.exec();

QSqlRecord rec = query.record();

QTableWidgetItem *buf;

int rows = 0;

table->setRowCount(rows);

table->setColumnCount(rec.count());

for (int col=0; col<rec.count(); col++) {

buf = new QTableWidgetItem;

buf->setText(rec.fieldName(col));

table->setHorizontalHeaderItem(col,buf);

}

while (query.next())

{

int i=0;

table->setRowCount(rows+1);

table->setRowHeight(rows,20);

while (query.value(i).isValid())

{

buf = new QTableWidgetItem;

buf->setText(query.value(i).toString());

table->setItem(rows,i,buf);

i++;

}

rows++;

}

this->resizeTable(table);

}

4.4. Инструментальная среда разработки и язык(и) программирования

Инструментальной средой разработки был выбран Qt Creator — свободная интегрированная среда разработки модульных кроссплатформенных приложений.

Qt Creator (ранее известная под кодовым названием Greenhouse) — кроссплатформенная свободная IDE для работы с фреймворком Qt, разработанная Trolltech (Nokia).

Языком разработки выбран C++. С++ поддерживает такие парадигмы программирования как процедурное программирование, модульность, раздельная компиляция, обработка исключений, абстракция данных, типы (объекты), виртуальные функции, объектно-ориентированное программирование, обобщенное программирование, контейнеры и алгоритмы, сочетает свойства как высокоуровневых, так и низкоуровневых языков.

4.5. Организация доступа к данным

Доступ к данным получают только зарегистрированные в системе пользователи. Метод, обеспечивающий авторизацию:

void MainWindow::on_pushButton_clicked()

{

QString str1;

QString str2;

str1=ui->lineEdit->text();

str2=ui->lineEdit_2->text();

if ((str1=="1")&&(str2=="1")){

ui->tab_1->setEnabled(true);

ui->tab_2->setEnabled(false);

ui->tab_3->setEnabled(false);

ui->tab_4->setEnabled(false);

ui->tab_5->setEnabled(false);

ui->tab_6->setEnabled(false);

}

if ((str1=="2")&&(str2=="2")){

ui->tab_1->setEnabled(false);

ui->tab_2->setEnabled(true);

ui->tab_3->setEnabled(false);

ui->tab_4->setEnabled(false);

ui->tab_5->setEnabled(false);

ui->tab_6->setEnabled(false);

}

if ((str1=="3")&&(str2=="3")){

ui->tab_1->setEnabled(false);

ui->tab_2->setEnabled(false);

ui->tab_3->setEnabled(true);

ui->tab_4->setEnabled(false);

ui->tab_5->setEnabled(false);

ui->tab_6->setEnabled(false);

}

if ((str1=="4")&&(str2=="4")){

ui->tab_1->setEnabled(false);

ui->tab_2->setEnabled(false);

ui->tab_3->setEnabled(false);

ui->tab_4->setEnabled(true);

ui->tab_5->setEnabled(false);

ui->tab_6->setEnabled(false);

}

if ((str1=="5")&&(str2=="5")){

ui->tab_1->setEnabled(false);

ui->tab_2->setEnabled(false);

ui->tab_3->setEnabled(false);

ui->tab_4->setEnabled(false);

ui->tab_5->setEnabled(true);

ui->tab_6->setEnabled(false);

}

if ((str1=="6")&&(str2=="6")){

ui->tab_1->setEnabled(false);

ui->tab_2->setEnabled(false);

ui->tab_3->setEnabled(false);

ui->tab_4->setEnabled(false);

ui->tab_5->setEnabled(false);

ui->tab_6->setEnabled(true);

}

}

Пользователи:

- гость

- работник

- заведующий по палате

- начальник отдела кадров

- заведующий

-главврач.

ВЫВОДЫ

Результатом проектирования данной БД стало создание достаточно функционального и гибкого в отношении последующего усовершенствования и адаптации к конкретным специфическим запросам конечного пользователя программного продукта. Данное приложение не претендует на абсолютное совершенство в своей сфере; оно лишь реализовывает базовые требования. В результате выполнения данного курсового проекта были реализованы все требования, изложенные в задании, в результате чего появилось работоспособное корпоративное приложение не требующие больших ресурсов.

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