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

4.1. Структура приложения и его основных частей.

Приложение состоит из семи частей, каждая из которых состоит из подчастей.

  1. Авторизация.

Состоит из полей ввода логина и пароля и кнопки авторизации.

2. Форма гостя.

Включает кнопки вывода информации о работниках и палатах.

  1. Форма работника.

Состоит из полей ввода данных о пациенте, а также кнопки вывода информации о них.

  1. Форма заведующего палатой.

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

  1. Форма заведующего отделом кадров.

Состоит из полей ввода информации о новом сотруднике, формы поиска сотрудников по их квалификации и по их должности.

  1. Форма заведующего.

Состоит из формы регистрации нового амбулаторного пациента, формы назначения медикаментов пациенту, формы поиска пациентов в палате, формы поиска пациентов в очереди к палате, формы показа отчёта о медикаментах, назначенных пациенту, а также вывода отчёта всех заявок, а также заявок в конкретную палату.

  1. Форма главврача

Состоит из формы регистрации нового амбулаторного пациента, просмотра всех амбулаторных пациентов, формы поиска пациентов в палате, формы поиска пациентов в очереди к палате, вывода отчёта всех заявок, а также формы регистрации и вывода отчёта о поставщиках.

4.2. Входные и выходные потоки данных.

Входные данные передаются в запросы через элементы типа «Label» через функцию text(). Пример – запрос ввода в таблицу Supplier.

#define QUERY_26 "INSERT INTO \"Supplier\""\

"VALUES (:X1, :X2, :X3, :X4, :X5)"

int MainWindow::checkQuery(QSqlQuery query) {

if (!query.exec()) return -1;

return 0;

}

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::doQuery1(QSqlQuery query) {

query.exec();

}

void MainWindow::on_pushButton_30_clicked()

{

int result = checkQuery(this->createQuery1(ui->lineEdit_85->text(), ui->lineEdit_86->text(), ui->lineEdit_87->text(), ui->lineEdit_88->text(), ui->lineEdit_89->text(), QUERY_26));

if (result==-1) this->setStatus(ERROR_GETDATA,true);

else{

this->setStatus(ACCEPT_DATA,false);

this->doQuery1(this->createQuery1(ui->lineEdit_85->text(), ui->lineEdit_86->text(), ui->lineEdit_87->text(), ui->lineEdit_88->text(), ui->lineEdit_89->text(), QUERY_26));

}

}

Вывод информации производится через элемент Table. Пример – вывод информации о работниках.

#define QUERY_1 "SELECT \"Personnel\".\"FIO\",\"Personnel\".\"Number_phone\", \"Chamber\".\"Number_ch\", \"Chamber\".\"Name_ch\", \"Chamber\".\"Block\", \"Post\".\"Post_name\""\

"FROM \"Personnel\", \"Post\", \"Chamber\""\

"WHERE \"Personnel\".\"Id_post\"=\"Post\".\"Id_post\""\

"AND \"Personnel\".\"Id_chamber\"=\"Chamber\".\"Id_chamber\""\

"ORDER BY \"Personnel\".\"FIO\""

QSqlQuery MainWindow::createQuery(QString param) {

QSqlQuery query;

query.prepare(param);

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);

}

void MainWindow::on_pushButton_2_clicked()

{

QString ccQuery = QUERY_1;

int result = this->checkQuery(createQuery(ccQuery));

this->clearTables();

if (result==-1) this->setStatus(ERROR_GETDATA,true);

else {

this->setStatus(ACCEPT_DATA,false);

this->doQuery(createQuery(ccQuery),ui->tableWidget);

}

}