Информационная система исследования на устойчивость математической модели оценки творческих компетенций студентов

Обзор математического моделирования оценки основных творческих компетенций студентов. Введение в теорию устойчивости. Формализация математической модели и её подготовка к реальному применению. Процесс проектирования архитектуры программного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 08.10.2018
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

А.4 Сообщения об ошибках

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

Таблица А.1 - Сообщения об ошибках

Ошибка

Расшифровка

Пример

«Такие параметры уже сохранены»

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

«Такое имя уже существует, попробуйте еще раз»

Имя набора параметров уникально, а значит не может быть несколько одинаковых имен.

«Имя не должно начинаться с цифры, попробуйте еще раз»

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

«Введенные логин и/или пароль неверны! Попробуйте еще раз!»

Неверно введен логин или пароль.

ПРИЛОЖЕНИЕ Б

Листинг программы

#include "widget.h"

#include "tetacreatewidget.h"

#include "dbconnect.h"

#include <cmath>

#include <QLineEdit>

#include <QGridLayout>

#include <QPushButton>

#include <QLabel>

#include <QList>

#include <QString>

#include <QObject>

#include <QMessageBox>

#include <QTableWidget>

#include <QTableWidgetItem>

#include <QSqlQuery>

#include <QSqlDatabase>

#include <QInputDialog>

#include <QStringList>

Widget::Widget(QWidget *parent): QWidget(parent)

{

QGridLayout *layout_main = new QGridLayout;

this->setWindowTitle("Ввод параметров");

this->setMinimumWidth(870);

tablewidget->setMinimumHeight(300);

QString s;

for(int i=0;i<32;i++){ //fill array with empty lineedit and label

QLineEdit *line = new QLineEdit;

list_linedit.append(line);

QLabel *label = new QLabel;

list_label.append(label);

if((i/9)==0){s=QString::number(i+1);list_label.at(i)->setText("B"+s);list_linedit.at(i)->setText(QString::number(0.12));} //setting names for labels

if((i/9)==1){s=QString::number(i+1-9);list_label.at(i)->setText("O"+s);list_linedit.at(i)->setText(QString::number(0.1));}

if((i/9)==2){s=QString::number(i+1-18);list_label.at(i)->setText("A"+s);list_linedit.at(i)->setText(QString::number(0.03));}

if(i==27){list_label.at(i)->setText("Mmax");}//виб

if(i==28){list_label.at(i)->setText("M_0");}

if(i==29){list_label.at(i)->setText("X_0");}

if(i==30){list_label.at(i)->setText("h");}

if(i==31){list_label.at(i)->setText("t");}

}

for(int i=0;i<32;i++){ //set main items to layout

if((i/9)==0){layout_main->addWidget(list_label.at(i),i,2);

layout_main->addWidget(list_linedit.at(i),i,3);}

if((i/9)==2){layout_main->addWidget(list_label.at(i),i-18,4);

layout_main->addWidget(list_linedit.at(i),i-18,5);}

if((i/9)==3){layout_main->addWidget(list_label.at(i),i-27,6);

layout_main->addWidget(list_linedit.at(i),i-27,7);}

}

QLabel *label1 = new QLabel("Поиск тематики");

QLabel *label2 = new QLabel("Формирование идей и плана решения");

QLabel *label3 = new QLabel("Формализация проблемы исследования");

QLabel *label4 = new QLabel("Выбор, освоение и реализация необходимого обеспечения");

QLabel *label5 = new QLabel("Реализация отдельных элментов исследования");

QLabel *label6 = new QLabel("Синтез решения");

QLabel *label7 = new QLabel("Оформление решения");

QLabel *label8 = new QLabel("Ввод в научный обиход, защита и сопровождение решения");

QLabel *label9 = new QLabel("Внутренний критический анализ решения");

layout_main->addWidget(label1,0,0,1,2);

layout_main->addWidget(label2,1,0,1,2);

layout_main->addWidget(label3,2,0,1,2);

layout_main->addWidget(label4,3,0,1,2);

layout_main->addWidget(label5,4,0,1,2);

layout_main->addWidget(label6,5,0,1,2);

layout_main->addWidget(label7,6,0,1,2);

layout_main->addWidget(label8,7,0,1,2);

layout_main->addWidget(label9,8,0,1,2);

//addin teta actions on layout

layout_main->addWidget(label_current_tetastack,5,6);

// combobox_naborteta_name->setReadOnly(true);

DbConnect db;

QSqlQuery query_tetaname;

query_tetaname=db.dbExec("SELECT * FROM Nabor_teta");

while(query_tetaname.next()){

combobox_naborteta_name->addItem(query_tetaname.value(1).toString());

}

layout_main->addWidget(combobox_naborteta_name,5,7);

layout_main->addWidget(button_create_load,6,6,1,2);

layout_main->addWidget(button_create_teta,7,6,1,2);

// list_linedit.at(15)->setText(QString::number(0.2));

list_linedit.at(20)->setText(QString::number(-0.03));

list_linedit.at(27)->setText(QString::number(25));

list_linedit.at(28)->setText(QString::number(10));

list_linedit.at(29)->setText(QString::number(0.1));

list_linedit.at(30)->setText(QString::number(0.1));

list_linedit.at(31)->setText(QString::number(120));

list_linedit.at(31)->setReadOnly(true);

layout_main->addWidget(this->button,9,0,1,4);

layout_main->addWidget(this->button_save,9,4,1,4);

// layout_main->addWidget(this->output,10,0,1,6);

layout_main->addWidget(this->tablewidget,10,0,4,8);

QObject::connect(button,SIGNAL(clicked()),SLOT(pushbutton_clicked()));

QObject::connect(button_save,SIGNAL(clicked()),SLOT(button_save_clicked()));

QObject::connect(button_create_load,SIGNAL(clicked(bool)),SLOT(button_create_load_clicked()));

QObject::connect(button_create_teta,SIGNAL(clicked(bool)),SLOT(button_create_teta_clicked()));

this->setLayout(layout_main);

}

Widget::~Widget()

{

}

void Widget::pushbutton_clicked()

{

//Here is float value of LINEEDIT at 8 //float x=list_linedit.at(8)->text().toFloat();

float Fx0,x0,m0,Fm0,mMax,h,t;

float jj=0;

for(int i=9;i<18;i++){

jj+=list_linedit.at(i)->text().toFloat();

}

if(jj>1){

QMessageBox::information(this,"Ошибка при вводе тетта!","Сумма тетта не должна превышать единицу!");

return;

}

x0=list_linedit.at(29)->text().toFloat();

m0=list_linedit.at(28)->text().toFloat();

mMax=list_linedit.at(27)->text().toFloat();

h=list_linedit.at(30)->text().toFloat();//STEP

t=list_linedit.at(31)->text().toFloat();

//rasschet 4 pokazateley

QList< float > A;

QList< float > B;

QList< float > O;

QList< float > O_all;

DbConnect db;

QString nabor_name=this->combobox_naborteta_name->currentText();

for(int i=0;i<9;i++){

B.append(list_linedit.at(i)->text().toFloat());

//_________________HERE COMES NEW TETA HEY HEY

// O.append(list_linedit.at(i+9)->text().toFloat());

QSqlQuery query=db.dbExec("SELECT * FROM Nabor_teta WHERE Nabor_name='"+nabor_name+"'");

query.next();

int ID=query.value(0).toInt();

// QMessageBox::information(this,"!",QString::number(ID));

QSqlQuery query_sem;

if(i!=8){//row potomu chto u nas 8 semestrov, odnako

query_sem.clear();

query_sem=db.dbExec("SELECT * FROM Teta WHERE id_nabor="+QString::number(ID)+" AND semestr="+QString::number(i+1));

// QMessageBox::information(this,"!","SELECT * FROM Teta WHERE id_nabor="+QString::number(ID)+" AND semestr="+QString::number(i+1));

query_sem.next();

for(int z=0;z<9;z++){//col

// QMessageBox::information(this,"!",QString::number(query_sem.value(z+3).toFloat()));

O_all.append(query_sem.value(z+3).toFloat());

}

}

A.append(list_linedit.at(i+18)->text().toFloat());

}

QList< float > x;

QList< float > Fx;

QList< float > Fm;

QList< float > m; m.append(m0);

int CurrentSemestr=1;

// QMessageBox::information(this,"SIZE",QString::number(O_all.size()));

//perviy shag

float atetta; //A * Tetta

O.clear();

for(int i=0;i<9;i++){

O.append(O_all.at(i));

atetta+=(A.at(i)*O.at(i)); //summa vseh A * Tetta

x.append(x0);

Fx.append(B.at(i)*x.at(i)*(1-x.at(i))*O.at(i)*m0);

}

Fm.append(m0*atetta*(mMax-m0));

//vse posleduyushie shagi

for(int i=1;i<t+1;i++){

if((i-1)/15==CurrentSemestr){//esli proshli semestr, to menyaem nabor O iz O_all

O.clear();

// QMessageBox::information(this,"shag",QString::number(i));

atetta=0;

for(int k=0;k<9;k++){

O.append(O_all.at(k+CurrentSemestr*9));

atetta+=(A.at(k)*O.at(k));

}

CurrentSemestr++;

}

m.append(m.at(i-1)+h*Fm.at(i-1));

Fm.append(m.at(i)*atetta*(mMax-m.at(i)));

for(int j=0;j<9;j++){

x.append(x.at((i-1)*9+j)+Fx.at((i-1)*9+j)*h);

Fx.append(B.at(j)*x.at(i*9+j)*(1-x.at(i*9+j))*O.at(j)*m.at(i));

}

}

//OUTPUT VER 2.0

tablewidget->setRowCount(t); //creating table outputting results

tablewidget->setColumnCount(10);

for(int i=0;i<10;i++){

tablewidget->setColumnWidth(i,80);

}

QStringList headers;

headers.append("X1");headers.append("X2");headers.append("X3");headers.append("X4");headers.append("X5");headers.append("X6");headers.append("X7");headers.append("X8");headers.append("X9");headers.append("M");

tablewidget->setHorizontalHeaderLabels(headers);

for(int irow=0;irow<t+1;irow++){

for(int icol=0;icol<10;icol++){

QTableWidgetItem *item = new QTableWidgetItem;

if(icol==9){

item->setText(QString::number(round(m.at(irow)*1000)/1000));

item->setTextAlignment(Qt::AlignCenter);

}else{

item->setText(QString::number(round(x.at(irow*9+icol)*1000)/1000));

item->setTextAlignment(Qt::AlignCenter);

}

tablewidget->setItem(irow,icol,item);

}

}

QString answ="";

bool flag=false;

for(int i=0;i<x.size();i+=9){

flag=false;

for(int j=0;j<9;j++){

if(i==0)continue;

int q=i/9;

if(q>=t)break;

// QMessageBox::information(this,"",QString::number(q));

if(true){//tablewidget->item(q,j)->text().toFloat()>=0.999

// if(x.at(i+j)>=0.999){

flag=true;

}else{

flag=false;

break;

}

}

if(flag){

//zdes nujno novoe okno. mojno 4erez dialog pri accept vivesti tupo i vse

answ.append("\n Хотите просмотреть график?");

QMessageBox::StandardButton reply;

reply = QMessageBox::question(this, QString("Результат"),

QString(answ),

QMessageBox::Yes | QMessageBox::No);

if (reply == QMessageBox::Yes){ //vot tut to mi i zadaem vse ishod dannie dlay GRAPHIKA

delete this->draw_widget;

this->draw_widget = new drawing_graph;

this->draw_widget->setMinimumSize(800,600);

draw_widget->sizeof_t=t;

for(int irow=0;irow<t+1;irow++){

draw_widget->x1.append(x.at(irow*9));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x2.append(x.at(irow*9+1));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x3.append(x.at(irow*9+2));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x4.append(x.at(irow*9+3));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x5.append(x.at(irow*9+4));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x6.append(x.at(irow*9+5));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x7.append(x.at(irow*9+6));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x8.append(x.at(irow*9+7));

}

for(int irow=0;irow<t+1;irow++){

draw_widget->x9.append(x.at(irow*9+8));

}

//____________________________________________________________

for(int i=0;i<draw_widget->sizeof_t;i++){

draw_widget->t_vector.append(i);

}

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(0)->setPen(QColor(255,0,0,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(1)->setPen(QColor(225,0,255,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(2)->setPen(QColor(68,0,255,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(3)->setPen(QColor(0,255,115,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(4)->setPen(QColor(238,255,156,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(5)->setPen(QColor(0,0,0,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(6)->setPen(QColor(0,0,0,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(7)->setPen(QColor(0,0,0,255));

draw_widget->customPlot->addGraph();

draw_widget->customPlot->graph(8)->setPen(QColor(0,0,0,255));

draw_widget->customPlot->graph(0)->setData(draw_widget->t_vector,draw_widget->x1);

draw_widget->customPlot->graph(1)->setData(draw_widget->t_vector,draw_widget->x2);

draw_widget->customPlot->graph(2)->setData(draw_widget->t_vector,draw_widget->x3);

draw_widget->customPlot->graph(3)->setData(draw_widget->t_vector,draw_widget->x4);

draw_widget->customPlot->graph(5)->setData(draw_widget->t_vector,draw_widget->x6);

draw_widget->customPlot->graph(4)->setData(draw_widget->t_vector,draw_widget->x5);

draw_widget->customPlot->graph(6)->setData(draw_widget->t_vector,draw_widget->x7);

draw_widget->customPlot->graph(7)->setData(draw_widget->t_vector,draw_widget->x8);

draw_widget->customPlot->graph(8)->setData(draw_widget->t_vector,draw_widget->x9);

// give the axes some labels:

draw_widget->customPlot->xAxis->setLabel("t");

draw_widget->customPlot->yAxis->setLabel("x");

// set axes ranges, so we see all data:

draw_widget->customPlot->xAxis->setRange(0, draw_widget->sizeof_t);

draw_widget->customPlot->yAxis->setRange(0, 1); //draw_widget->sizeof_t

draw_widget->customPlot->replot();

draw_widget->show();

}

else if (reply == QMessageBox::No){

break;

}

break;

}

}

if(!flag){

answ=("Достигнуть единицы не удалось, попробуйте увеличить 'h' или 't'");

QMessageBox::information(this,"Результат",answ);

}

}

void Widget::button_save_clicked()

{

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

db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=../difur10/test1.mdb");

if (!db.open()) {

QMessageBox::information(this,"","Cannot open database!");

exit(0);

} else QMessageBox::information(this,"","Opened!");

//vvod novogo nabora

bool check_bool;

QString save_name = QInputDialog::getText( 0,

"Новый набор",

"Имя набора:",

QLineEdit::Normal,

"Введите здесь",

&check_bool

);

if(!check_bool)return;

//proverka na pravilnost i nepovtorenie

if(save_name.at(0).isDigit()){

QMessageBox::information(this,"Ошибка!","Имя не должно начинаться с единицы, пожалуйста, попробуйте еще раз!");

return;

}

QSqlQuery query;

QString s;

QString s1;

s=("SELECT * FROM Nabor WHERE Nabor_name='");s.append(save_name);s.append("'");

query.exec(s);

int est_ili_net=0;

while(query.next()){

est_ili_net++;

}

if(est_ili_net>=1){

QMessageBox::information(this,"Ошибка!","Такое имя уже существует, попробуйте еще раз!");

return;

}

query.clear();

//s4itaem summarnoe kol-vo zapisey v tablicah, vdrug razoydutsa potom?!?!

s=("SELECT * FROM Nabor");

query.exec(s);

int total_amount_nabor=0;

while(query.next()){

total_amount_nabor++;

}

// QMessageBox::information(this,"total_nabor",QString::number(total_amount_nabor));

query.clear();

s=("SELECT * FROM Parametr");

query.exec(s);

int total_amount_parametr=0;

while(query.next()){

total_amount_parametr++;

}

// QMessageBox::information(this,"total_parametr",QString::number(total_amount_parametr));

//sha budem proveryat parametri!

query.clear();

s=("SELECT * FROM Parametr");

query.exec(s);

int iterator=0;

bool flag=false;

while(query.next()){

iterator++;

flag=false;

for(int i=1;i<=32;i++){

if(query.value(i).toFloat()==list_linedit.at(i-1)->text().toFloat()){

flag=true;

//

}else{

flag=false; break;

}}

if(flag){ QString zzz=("Error!","Such parametrs already saved under name");

QMessageBox::information(this,"",zzz);

return;

} }

//esli vse proverki proshli - vstavlyaem nabor!

query.clear();

query.prepare("INSERT INTO Nabor VALUES (:Code , :Nabor_name)");

query.bindValue(":Code",total_amount_nabor+1);

query.bindValue(":Nabor_name",save_name);

query.exec();

query.clear();

query.prepare("INSERT INTO Parametr VALUES (:Nabor_code , :B1 , :B2 , :B3 , :B4 , :B5 , :B6 , :B7 , :B8 , :B9 , :O1 , :O2 , :O3 , :O4 , :O5 , :O6 , :O7 , :O8 , :O9 , :A1 , :A2 , :A3 , :A4 , :A5 , :A6 , :A7 , :A8 , :A9 , :Mmax , :M_0 , :X_0 , :h , :t)");

QString chtoto;

query.bindValue(":Nabor_code",total_amount_parametr+1);

for(int i=0;i<32;i++){

chtoto=(":");chtoto.append(list_label.at(i)->text());

// QMessageBox::information(this,"",chtoto);

query.bindValue(chtoto,list_linedit.at(i)->text()); }

query.exec();}

void Widget::button_create_teta_clicked() //CREATE

{ tetacreate_widget = new TetaCreateWidget;

tetacreate_widget->show();

this->hide();}

void Widget::button_create_load_clicked()

{ tetaload_widget = new TetaLoadWidget(0,this->combobox_naborteta_name->currentText());

tetaload_widget->show();

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.