Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Перечень условных обозначений и сокращений 5 страница



Е.2 Структура программы

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

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

Связи с другими программами отсутствуют.

Е.3 Настройка программы

Разработанная программа не нуждается в дополнительной настройке и способна корректно исполняться в том виде, в котором поставляется.

Е.4 Проверка программы

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

Е.5 Дополнительные возможности

Дополнительные возможности в данной программе отсутствуют.

Е.6 Сообщения системному программисту

Сообщения об ошибках (выводятся в отдельном окне):

.Dontload7ChInitial.bd - проверьте наличие файла 7ChInitial.bd

5.Запуск программы невозможен, так как на компьютере отсутствует *.dll. Попробуйте переустановить программу.(ОСWindows) - проверьте наличие в папке с программой файла *.dll.

 

ПРИЛОЖЕНИЕ Ж

 

Исходный код программы

 

Листинг 1 ─ Содержимое файла main.cpp

// Целью данного программного кода является инициализация и вывод на экран стартового окна программы

#include

#include "modeselect.h"main(int argc, char *argv[])

show();app.exec();">{app(argc, argv);*modeSelect = new ModeSelect;>show();app.exec();

}

Листинг 2 ─ Содержимоефайла modeselect.h

// Заголовочныйфайлдляmodeselect.cpp

#ifndef MODESELECT_H

#define MODESELECT_H

#include

#include

#include firstscreen7ch.hModeSelect: public Qdialog

{_OBJECT:();ChFill *firstScreen;*soundLevel1;*soundLevel2;*soundLevel3;*soundLevel4;*soundLevelLayout;*soundLevel;:*startButton;*closeButton;*buttonsLayout;*mainLayout;slots:

//float setLs();

};

#endif // MODESELECT_H

Листинг 3 ─ Содержимоефайлаmodeselect.cpp

// Целью данного программного кода является создание окна для выбора уровня речевого сигнала в //помещении и заполнение таблицы со справочными данными в соответствии с выбором

#include

#include

#include::ModeSelect()

{= new FirstScren7ChFill;= new QRadioButton(tr("Low level of speech (64 dB)"));= new QRadioButton(tr("Medium level of speech (70 dB)"));= new QRadioButton(tr("High level of speech (76 dB)"));= new QRadioButton(tr("Technicaly increased level of speech (84 dB)"));= new QVBoxLayout;>addWidget(soundLevel1);>addWidget(soundLevel2);>addWidget(soundLevel3);>addWidget(soundLevel4);->setChecked(true);(soundLevel1, SIGNAL(clicked()), firstScreen, SLOT(setLs1()));(soundLevel2, SIGNAL(clicked()), firstScreen, SLOT(setLs2()));(soundLevel3, SIGNAL(clicked()), firstScreen, SLOT(setLs3()));(soundLevel4, SIGNAL(clicked()), firstScreen, SLOT(setLs4()));= new QGroupBox;>setTitle("Level of sound");>setLayout(soundLevelLayout);;= new QPushButton(tr("Next >>"));= new QPushButton(tr("Exit"));= new QHBoxLayout;>addWidget(startButton);>addWidget(closeButton);= new QVBoxLayout;>addWidget(soundLevel);>addLayout(buttonsLayout);(mainLayout);(closeButton, SIGNAL(clicked()), firstScreen->secondScreen, SLOT(close()));(closeButton, SIGNAL(clicked()), firstScreen, SLOT(close()));(closeButton, SIGNAL(clicked()), this, SLOT(close()));(startButton, SIGNAL(clicked()), firstScreen, SLOT(show()));(tr("Welcome!!!"));



}

Листинг 4 ─ Содержимоефайла firstscreen7ch.h

// Заголовочныйфайлдля firstscreen7ch.cpp

#ifndef FIRSTSCREEN7CH_H

#define FIRSTSCREEN7CH_H

#include

#include

#include "secondscreen7ch.h"FirstScren7ChFill: public QDialog

{_OBJECT:ChFill();ChFill *secondScreen;* floatLs;:*secondTable;*firstTable;*Ls;*saveButton;*loadButton;*backButton;*startCalculation;curFile;Kp;saveFile(const QString &fileName);slots:setLs1();setLs2();setLs3();setLs4();slots:save();saveAs();load();loadFile(QTableWidget *table, const QString &fileName);clearTable();calcKp();calcW();

};

#endif // FIRSTSCREEN7CH_H

Листинг 5 ─ Содержимоефайла firstscreen7ch.cpp

// Целью данного программного кода является создание окна д

ля ввода исходных данных и вывод //справочных данных. В нем же производятся расчеты и передаются данные для заполнения таблицы //результатов расчетов

#include

#include

#include

#include "secondscreen7ch.h"e = 2.71828;ChFill::FirstScren7ChFill()

{= new SecondScren7ChFill;= new QTableWidget;>setRowCount(7);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(5);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setWordWrap(true);>setEditTriggers(0);firstLabels;<<tr("Border of band \nf1 - f2, Hz")<<tr("Medium frequ-\nency Fcp, Hz")<<tr("Bandwidth \ndf, Hz")

setHorizontalHeaderLabels(firstLabels);fileName="7ChInitial.bd";(firstTable,fileName);=newQTableWidget;>setRowCount(2);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(7);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setMaximumHeight(80);secondLabels;setItem(row, column, item);

}

}= new QPushButton(tr("Save..."));= new QPushButton(tr("Load..."));= new QPushButton(tr("addLayout(buttonsLayout);(mainLayout);(saveButton, SIGNAL(clicked()), this, SLOT(save()));(loadButton, SIGNAL(clicked()), this, SLOT(load()));(backButton, SIGNAL(clicked()), this, SLOT(clearTable()));(backButton, SIGNAL(clicked()), this, SLOT(close()));(startCalculation, SIGNAL(clicked()), this, SLOT(calcKp()));(startCalculation, SIGNAL(clicked()), secondScreen, SLOT(show()));(650,350);(tr("Base"));

}FirstScren7ChFill::setLs1()

{floatLs[7] = {35.6, 36.2, 34.5, 27.0, 18.5, 10.5, 4.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);

}

}FirstScren7ChFill::setLs2()

{floatLs [7] = {41.6, 42.2, 40.5, 33.0, 24.5, 16.6, 10.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);

}

}FirstScren7ChFill::setLs3()

{floatLs [7] = {47.6, 48.2, 46.5, 39.0, 30.5, 22.6, 16.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);

}

}FirstScren7ChFill::setLs4()

{floatLs [7] = {55.6, 56.2, 54.5, 47.0, 38.5, 30.6, 24.5};(int row=0; row!=firstTable->rowCount(); ++row) {= new QTableWidgetItem;>setText(QString::number(floatLs[row]));>setItem(row, 3, Ls);

}

}FirstScren7ChFill::save()

{(curFile.isEmpty()) {saveAs();

} else {saveFile(curFile);

}

}FirstScren7ChFill::saveAs()

{fileName = QFileDialog::getSaveFileName(this);(fileName.isEmpty())false;saveFile(fileName);

}FirstScren7ChFill::saveFile(const QString &fileName)

{file(fileName);(!file.open(QIODevice::WriteOnly)){notSaved;.setText(tr("Dont save"));.exec();false;

rowCount();++row){(intcolumn=0;column!=secondTable->columnCount();++column){str;=secondTable->item(row,column)->text();(!str.isEmpty())text();(!str.isEmpty())<<int(row)<<int(column)<<str;

}

}::restoreOverrideCursor();true;

}FirstScren7ChFill::load()

{fileName = QFileDialog::getOpenFileName(this);(!fileName.isEmpty())(secondTable, fileName);

}FirstScren7ChFill::loadFile(QTableWidget *table, const QString &fileName)

{file(fileName);(!file.open(QIODevice::ReadOnly)) {notLoaded;.setText(tr("Dont load"));.exec();false;

>row>>column>>str;>setText(str);>setItem(row,column,item);">}in(&file);.setVersion(QDataStream::Qt_4_1);row;column;str;*item;::setOverrideCursor(Qt::WaitCursor);(!in.atEnd()) {= new QTableWidgetItem();>>row>>column>>str;>setText(str);>setItem(row, column, item);

}::restoreOverrideCursor();true;

}FirstScren7ChFill::clearTable()

{(int row=0; row!=secondTable->rowCount(); ++row){(int column=0; column!=secondTable->columnCount(); ++column){>item(row, column)->setText(" ");

}

}

}FirstScren7ChFill::calcKp()

{= 0;(int column = 0; column!=secondScreen->firstTable->columnCount(); column++) {Ei;Kpi;razn;fsr;w;= firstTable->item(column,3)->text().toFloat() - secondTable->item(0,column)->text().toFloat() ->item(1,column)->text().toFloat();= Ei - firstTable->item(column, 4)->text().toFloat();= sqrt(firstTable->item(column,2)->text().toFloat()*2*firstTable->item(column,2)->text().toFloat());(razn <= 0) {verh;niz;stepen;= -0.0043*pow((razn+27.3),2.0);= 0.78 + 5.46*pow(e,stepen);= 1 + pow(10.0,-razn/10);= verh/niz;

}(fsr text().toFloat();= 2.57*pow(10.0,-8.0)*pow(2*fv,2.4);= fv - fn;

}{stepen;fn;fv;= pow(10.0, -4.0)*pow(firstTable->item(column,2)->text().toFloat(),1.18);= 1 - 1.074*pow(e, - stepen);= pow(10.0, -4.0)*pow(2*firstTable->item(column,2)->text().toFloat(),1.18);= 1 - 1.074*pow(e, - stepen);= fv - fn;

}= Kp + Kpi*w;*item1 = new QTableWidgetItem;*item2 = new QTableWidgetItem;*item3 = new QTableWidgetItem;*item4 = new QTableWidgetItem;->setText(QString::number(Ei));->setText(QString::number(fsr));->setText(QString::number(Kpi));->setText(QString::number(w));>firstTable->setItem(0,column,item1);>firstTable->setItem(1,column,item2);>firstTable->setItem(2,column,item3);>firstTable->setItem(3,column,item4);

}>Kp->setText("Kp = " + QString::number(Kp));();

}FirstScren7ChFill::calcW()

{S;WotS;stepen;WotKp;(Kp = 0.15){= -11*Kp/(1 + 0.7*Kp);= 1 - pow(e, stepen);

}>WotKp->setText("W(Kp) = " + QString::number(WotKp));

}

Листинг 6 ─ Содержимоефайла secondscreen7ch.h

// Заголовочныйфайлдля secondscreen7ch.cpp

#ifndef SECONDSCREEN7CH_H

#define SECONDSCREEN7CH_H

#include

#include SecondScren7ChFill: public QDialog

{_OBJECT:ChFill();*firstTable;*Kp;*S;*WotS;*WotKp;:*mainLayout;

};

#endif // SECONDSCREEN7CH_H

Листинг 7 ─ Содержимоефайла secondscreen7ch.cpp

// Целью данного программного кода является вывод результатов расчета в виде таблицы на экран

#include

#include ChFill::SecondScren7ChFill()

{= new QTableWidget;>setRowCount(4);>horizontalHeader()->setResizeMode(QHeaderView::Stretch);>setColumnCount(7);>verticalHeader()->setResizeMode(QHeaderView::Stretch);>setEditTriggers(0);(int row=0; row!=firstTable->rowCount(); ++row) {>setRowHeight(row,21);

}(int column=0; column!=firstTable->columnCount(); ++column) {>setColumnWidth(column,100);

}firstLabels;addWidget(WotKp);(mainLayout);(750,240);(tr("Calculation results"));

}

 


Дата добавления: 2015-08-29; просмотров: 24 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.014 сек.)







<== предыдущая лекция | следующая лекция ==>