ПЗ (1191596), страница 5
Текст из файла (страница 5)
Рисунок 25 – Блок схема функции рассчёта
Рисунок 24 –Поле вывода результата
Рисунок 26 –Продолжение блок-схемы функции расчёта
Программная реализация на языке C++ функции расчёта приведена ниже.
if (ui->comboBox_2->currentIndex()==1)
{
K=8; Ko=9.26;
if(L<=1) {K=40; Ko=40;}
if(L<=2) {K=20+20*(2-L); Ko=25+15*(2-L);}
if(L<=3) {K=15+5*(3-L); Ko=20+5*(3-L); }
if(L<=4) {K=15; Ko=18.75+1.25*(4-L); }
if(L<=5) {K=14.40+.6*(5-L); Ko=16.80+1.95*(5-L); }
if(L<=6) {K=13.33+1.07*(6-L); Ko=15.00+1.80*(6-L); }
if(L<=7) {K=12.24+1.09*(7-L); Ko=14.29+.71*(7-L); }
if(L<=8) {K=11.25+.99*(8-L); Ko=13.75+.54*(8-L); }
if(L<=9) {K=10.37+.88*(9-L); Ko=13.33+.42*(9-L); }
if(L<=10) {K=10.37+.03*(L-9); Ko=13.20+.13*(10-L); }
if(L<=12) {K=10.31+.045*(12-L); Ko=12.50+.35*(12-L); }
if(L<=14) {K=9.99+.16*(14-L); Ko=11.63+.435*(14-L); }
if(L<=16) {K=9.51+.24*(16-L); Ko=10.94+.345*(16-L); }
if(L<=18) {K=8.98+.265*(18-L); Ko=10.56+.19*(18-L); }
if(L<=20) {K=8.60+.19*(20-L); Ko=10.35+.105*(20-L); }
if(L<=25) {K=8.26+.068*(25-L); Ko=9.98+.074*(25-L); }
if(L<=30) {K=8.00+.052*(30-L); Ko=9.60+.076*(30-L); }
}
else
{
K=8.63; Ko=10.2;
if (L<=1) {K=46.8; Ko=46.8;}
if (L<=2) {K=23.4+23.4*(2-L); Ko=28.08+18.72*(2-L);}
if (L<=3) {K=16.78+6.62*(3-L); Ko=22.88+5.20*(3-L);}
if (L<=4) {K=14.98+1.80*(4-L); Ko=18.72+4.16*(4-L);}
if (L<=5) {K=14.24+.74*(5-L); Ko=17.23+1.49*(5-L);}
if (L<=6) {K=13.37+.87*(6-L); Ko=16.56+.67*(6-L);}
if (L<=7) {K=13.15+.22*(7-L); Ko=15.54+1.02*(7-L);}
if (L<=8) {K=12.63+.52*(8-L); Ko=14.49+1.05*(8-L);}
if (L<=9) {K=12.01+.62*(9-L); Ko=14+.49*(9-L);}
if (L<=10) {K=11.43+.58*(10-L); Ko=13.58+.42*(10-L);}
if (L<=12) {K=10.81+.31*(12-L); Ko=13.11+.235*(12-L);}
if (L<=14) {K=10.56+.125*(14-L); Ko=12.84+.135*(14-L);}
if (L<=16) {K=10.56; Ko=12.42+.21*(16-L);}
if(L<=18) {K=10.37+.095*(18-L); Ko=11.86+.28*(18-L);}
if(L<=20) {K=10.04+.165*(20-L); Ko=11.26+.3*(20-L);}
if(L<=25) {K=9.07+.194*(25-L); Ko=10.55+.142*(25-L);}
if(L<=30) {K=8.63+.088*(30-L); Ko=10.02+.07*(30-L);}
}
double K1,Rdb,Rdab;
if (ui->comboBox_2->currentIndex()==1)
{
switch (ui->comboBox_3->currentIndex())
{
case 0: {K1=0.87; Rdb=140; Rdab=20; break;}
case 1: {K1=1.21; Rdb=140; Rdab=20; break;}
case 2: {K1=1.35; Rdb=140; Rdab=20; break;}
case 3: {K1=1.27; Rdb=168; Rdab=20; break;}
case 4: {K1=0.81; Rdb=126; Rdab=18; break;}
case 5: {K1=0.75; Rdb=112; Rdab=16; break;}
case 6: {K1=0.98; Rdb=112; Rdab=16; break;}
case 7: {K1=0.88; Rdb=112; Rdab=16; break;}
case 8: {K1=1.35; Rdb=182; Rdab=26; break;}
case 9: {K1=1.35; Rdb=182; Rdab=32; break;}
case 10:{K1=1.25; Rdb=182; Rdab=32; break;}
case 11:{K1=1.44; Rdb=182; Rdab=32; break;}
case 12:{K1=1.25; Rdb=154; Rdab=26; break;}
case 13:{K1=1.25; Rdb=154; Rdab=26; break;}
case 14:{K1=1.02; Rdb=112; Rdab=22; break;}
case 15:{K1=1.02; Rdb=112; Rdab=22; break;}
case 16:{K1=1.00; Rdb=140; Rdab=20; break;}
}
}
else
{
switch (ui->comboBox_3->currentIndex())
{
case 0:{K1=0.87; Rdb=160; Rdab=24; break;}
case 1:{K1=1.21; Rdb=160; Rdab=24; break;}
case 2:{K1=1.35; Rdb=160; Rdab=24; break;}
case 3:{K1=1.27; Rdb=192; Rdab=24; break;}
case 4:{K1=0.81; Rdb=144; Rdab=21.6; break;}
case 5:{K1=0.75; Rdb=128; Rdab=19.2; break;}
case 6:{K1=0.98; Rdb=128; Rdab=19.2; break;}
case 7:{K1=0.88; Rdb=128; Rdab=19.2; break;}
case 8:{K1=1.35; Rdb=208; Rdab=31.2; break;}
case 9:{K1=1.35; Rdb=208; Rdab=38.4; break;}
case 10:{K1=1.25;Rdb=208; Rdab=38.4; break;}
case 11:{K1=1.44;Rdb=208; Rdab=38.4; break;}
case 12:{K1=1.25;Rdb=176; Rdab=31.2; break;}
case 13:{K1=1.25;Rdb=176; Rdab=31.2; break;}
case 14:{K1=1.02;Rdb=128; Rdab=26.4; break;}
case 15:{K1=1.02;Rdb=128; Rdab=26.4; break;}
case 16:{K1=1.00;Rdb=160; Rdab=24; break;}
}
}
double J,S,Wnt,b;
Первые два условия отвечают за вычисление коэффициента. Исходя из условий для далее производятся вычисления жёсткости и прочности.
J=(.351*(pow(D,4)))+(4.44*D*D*(pow((D-3),2)));
S=1.665*D*D*(1.5*D-4.5);
Wnt=J/(1.5*D-4.5);
b=3*D;
if (Nbr==2) {J=.078*(pow(D,4)); S=.126*(pow(D,3)); Wnt=.182*(pow(D,3)); b=2*D;}
if (Nbr==3) {J=.117*(pow(D,4)); S=.189*(pow(D,3)); Wnt=.273*(pow(D,3)); b=3*D;}
if (Nbr==6) {J=(.234*(pow(D,4)))+(4.44*D*D*pow(((.5*D)-1.5),2)); S=2.22*D*D*((.5*D)-3); Wnt=J/(D-3); b=3*D;}
double PP=Qps*K1;
double p=PP/Lp;
double w=(L*L)/8;
double w1=L/2;
double Qd1=(Np1*p+Np2*Kd*Ko*Kf)*w1*1000,Qd2,Qd;
if (ui->comboBox_2->currentIndex()==1) Qd=Qd1; else Qd2=0;
if (L<=1.6) Qd2=((Np1*p*w1)+(Np2*Kd*23.4*Kf))*1000;
if (L<=4) Qd2=((Np1*p*w1)+(Np2*Kd*23.4*Kf*(1+((L-1.6)/L))))*1000;
if (Qd1>=Qd2) Qd=Qd1; else Qd=Qd2 ;
double Md1=(Np1*p+Np2*Kd*K*Kf)*w*100000,Md2,Md;
if (ui->comboBox_2->currentIndex()==1) Md=Md1;
if (L<3) Md2=((Np1*p*w)+(Np2*Kd*Kf*5.85*L))*100000; else Md2=0;
if (Md1>=Md2) Md=Md1; else Md=Md2;
double TAU=Qd*S/(J*b*N);
double nn2=100*((Rdab-TAU)/Rdab);
double SIGMA=Md/(Wnt*N);
double nn1=100*((Rdb-SIGMA)/Rdb);
Кнопка «Файл» открывает окошко меню (рисунок 27) и предоставляет пользователю функции: «Сохранить как», «Выход», «Печать».
Рисунок 27 –Вкладка кнопки «Файл»
Для каждой функции предусмотрена возможность консольного вызова, что видно из рисунка 28. Выполнено это было при помощи стандартных средств Qt creator – редактора действий (рисунок 28).
Рисунок 28 – Окно редактора действий
При сохранении файла программа просит задать имя файла и расположение, вызывая программу «Проводник».
Кнопка «Выход» закрывает программу без предварительного сохранения файла.
Кнопка «Печать» передаёт расчёт в текстовом варианте печатному устройству, подключённого к компьютеру.
Для более удобной работы кнопка сохранения вынесена на главное окно над полем вывода результата расчётов. В программе возможно сохранение результатов в двух вариантах (рисунок 29) типов файлов: doc, txt. При сохранении в текстовом режиме программа переносит результат построчно, пример сохранённого документа на представлен рисунке.
Рисунок 29 – Выбор типа сохраняемого документа
Рисунок 27 – Сохранённый результат расчёта
Реализация этой функции представлена ниже.
QString fileName = QFileDialog::getSaveFileName(this, tr("Сохранить файл"), "",
tr("Text Files (*.txt);;DOC Files (*.doc)"));
if (fileName != "") {
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
// error message
} else {
QTextStream stream(&file);
stream <<ui->textEdit->toPlainText();
stream.flush();
file.close();
}
}
Файл создаётся, получает имя, получает поток данных и закрывается.
В результате расчёта в поле выводятся следующие значения:
– результаты расчета;
– полная масса пролетного строения;
– проверка по нормальным напряжениям;
– максимальное нормальное напряжение;
– расчетное сопротивление при изгибе;
– недонапряжение-условие удовлетворяется/ не удовлетворяется;
– проверка по касательным напряжениям;
– максимальное напряжение;
– расчетное сопротивление на скалывание (наибольшее);
– доль волокон при изгибе;
– недонапряжение %= удовлетворяется/не удовлетворяется условие;
– расчет на жесткость;
– фактический прогиб;
– допускаемый прогиб;
– допускаемый прогиб.
В результате расчёта пользователь может увидеть – пригодна ли исследуемая система для работы.
ЗАКЛЮЧЕНИЕ
В рамках выпускной квалификационной работы был создан программный модуль для расчёта прочности мостовых опор. Программный модуль облегчает процесс вычисления конструкции на устойчивость. В ходе выполнения задания были разработаны необходимые таблицы коэффициентов, а также формы ввода данных. Созданы модули для формирования отчетности.
Компьютерная организация учета позволяет уменьшить расходуемое время, при этом стоимостные затраты будут минимальны. Вероятность наличия ошибок сводится к минимуму. Эффективность компьютерной обработки можно проанализировать по приведённым отчетам.
Для достижения поставленной цели были решены следующие задачи:
– выполнен обзор предметной области, в которой были рассмотрены схожие проектировочные системы;
– проведены математические расчёты, для получения значений условия прочности по касательным напряжениям, условия прочности по нормальным напряжениям, значения выносливости системы, жесткости опор;
– реализованы программный модуль для сбора данных и их обработки. В дальнейшем, программный модуль будет усложнён дополнительными функциями визуализации.
Разработанный комплекс может использоваться для расчёта на прочность в области проектирования мостовых конструкций, а также для восстановления мостовых сооружений. Также программный продукт может служить для обучения студентов специальности «Строительство автомобильных дорог». Дальнейшее расширение возможностей системы может быть осуществлено за счет увеличения количества хранимой справочной информации, расширения ее номенклатуры, а также за счет доработки расчетной подсистемы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 ACI Committee 318, Building Code Requirements for Structural Concrete (ACI 318-02) and Commentary (ACI 318R-02): An ACI Standard. Farmington Hills, MI: American Concrete Institute, 2002. – 287 c.
2 AISC Committee on Manuals and Textbooks, Manual of Steel Construction: Load and Resistance Factor Design. Third Edition. American Institute of Steel Construction, 2001. – 320 c.
3 Hibbeler, R.C. Mechanics of Materials. Third Edition. Upper Saddle River, NJ: Prentice Hall, 1997. – 180 c.
4 К. Бек, М. Фаулер. Экстремальное программирование: планирование. Библиотека программиста. – СПб.: Питер, 2003. – 144 с.
5 Кролл П., Крачтен Ф. Rational Unified Process – это легко. Руководство по RUP. Пер. с англ. – М.: КУДИЦ-ОБРАЗ, 2004. – 432 с.
6 Открытые системы. Scrum: гибкое управление разработкой [Электронный ресурс]: Статья [б.м, б.г, б.и]. – Режим доступа: – http://www.osp.ru/os /2007/04/4220063/
7 Обзор методологии Scrum [Электронный ресурс]: Статья [б.м, б.г, б.и].– Режим доступа: – http://www.citforum.ru/SE/project/scrum/
8 Django [Электронный ресурс]: [б.м, б.г, б.и].– Режим доступа: – http://www.djangoproject.com/
9 MAXKIR Самое интересное о разработке программного обеспечения [Электронный ресурс]: Статья [б.м, б.г, б.и].– Режим доступа: – http://www. maxkir.com/sd/newmethRUS.html
10 Гопкало В.Н., Графский О.А. Выпускная квалификационная работа. Общие требования и правила оформления: метод. Пособие – Хабаровск, изд-во ДВГУПС, 2014. – 46 с.
11 М.Уэйт, С.Прата, Д.Мартин Язык Си: Пер с англ.-М.: Мир, 1988.-463 с.















