Дипломная работа: Предпроектный анализ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

QSqlQuery qwerty;

qwerty.exec("SELECT * FROM Task_inside_priems WHERE id_task="+QString::number(id_task_chosen)

+" AND id_priem="+QString::number(list_priems_alreadyintable.at(i)));

qwerty.next();

item->setText(QString::number(qwerty.value(2).toInt()));

tablewidget_priems->setItem(i,k,item);

}

}

}

}

void WorkWithTask::pushbutton_Add_ok() //добавление параметров пары

{

DbConnect db;//ПОД СЕБЯ СТРОЙ!!!!!!!!!!!

QSqlQuery query=db.dbExec("SELECT * FROM Parametres_left");

int size=db.dbSize(query);

int row_choosen_left=-1;

int row_choosen_right=-1;

int flag=1;

int flag_right=1;

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

if(tablewidget_parametres_left->item(i,0)->isSelected()){flag=0;row_choosen_left=i;}

if(tablewidget_parametres_right->item(i,0)->isSelected()){flag_right=0;row_choosen_right=i;}

}

if(((flag==1)||(flag_right==1))){

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

return;

}

query.seek(-1);

int id_left; int id_right;

QString left_name;

QString right_name;

while(query.next()){

if(query.value(1).toString()==tablewidget_parametres_left->item(row_choosen_left,0)->text()){

id_left=query.value(0).toInt();

left_name=tablewidget_parametres_left->item(row_choosen_left,0)->text();

}

if(query.value(1).toString()==tablewidget_parametres_right->item(row_choosen_right,0)->text()){

id_right=query.value(0).toInt();

right_name=tablewidget_parametres_right->item(row_choosen_right,0)->text();

}

}

//будем добавлять в список пар-ов

bool flagbool=true;

for(int i=0;i<list_idparams_left_alreadyintable.size();i++){//проверка на уже выбранные пары параметров

if((id_left==list_idparams_left_alreadyintable.at(i))&&(id_right==list_idparams_right_alreadyintable.at(i))){

flagbool=false;

break;

}

}

if(!flagbool){

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

return;

}

query.clear();

query.exec("SELECT * FROM Altshuller WHERE id_parametr_left="+QString::number(id_left)

+" AND id_parametr_right="+QString::number(id_right));

size=db.dbSize(query);//теперь в сайзе приемы из альтшуллера

if(size==0){

QMessageBox::information(this,"Ошибка!","Извините, но для выбранной пары нет приемов");

return;

}

list_idparams_left_alreadyintable.append(id_left);

list_idparams_right_alreadyintable.append(id_right);

QListWidgetItem *item = new QListWidgetItem;

item->setText(left_name+" - "+right_name);

listwidget_params->addItem(item);

//теперь надо добавлять приемы к существующим(или не существующим)

query.seek(-1);

for(int i=0;i<size;i++){//добавляем только новые

query.next();

bool flag2=true;

for(int k=0;k<list_priems_alreadyintable.size();k++){

if(query.value(2).toInt()==list_priems_alreadyintable.at(k)){

flag2=false;

break;

}

}

if(flag2){

list_priems_alreadyintable.append(query.value(2).toInt());

QSqlQuery query_task_list;

query_task_list.exec("SELECT * FROM Task_list WHERE id_user="+QString::number(this->getUserID()));

float sum=0;float amount=0;

while(query_task_list.next()){

int id_task=query_task_list.value(0).toInt();

QSqlQuery query_task_inside;

query_task_inside.exec("SELECT * FROM Task_inside_priems WHERE id_task="+QString::number(id_task)

+" AND id_priem="+QString::number(list_priems_alreadyintable.at(list_priems_alreadyintable.size()-1)));

while(query_task_inside.next()){//тут имеем все оценки конкретного приема конкретного юзера, в теории

QSqlQuery query_rates;

query_rates.exec("SELECT * FROM Rates WHERE id_rate="+QString::number(query_task_inside.value(2).toInt()));

query_rates.next();

if(query_rates.value(2).toInt()==0){

continue;

}

amount++;

sum+=query_rates.value(2).toInt();

}

}

float overallRate;

if(amount==0){

overallRate=0;

}else{

overallRate=round((sum/amount)*100)/100;

}

list_priems_overallRate_alreadyintable.append(overallRate);

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

}

}

tablewidget_priems->clear();//чистим значения из табл приемов и вставляем по новой

tablewidget_priems->setRowCount(0);

QStringList strlist;

strlist.append("Прием");strlist.append("Общая оценка");strlist.append("Ваша оценка");

tablewidget_priems->setHorizontalHeaderLabels(strlist);

//сортируем для начала по хай рейту

for(int i=0; i<list_priems_overallRate_alreadyintable.size()-1;i++){ //сортируем по убыванию

for(int j=0;j<list_priems_overallRate_alreadyintable.size()-i-1;j++){

if(list_priems_overallRate_alreadyintable[j]<list_priems_overallRate_alreadyintable[j+1]){

float b=list_priems_overallRate_alreadyintable[j];

list_priems_overallRate_alreadyintable[j]=list_priems_overallRate_alreadyintable[j+1];

list_priems_overallRate_alreadyintable[j+1]=b;

int b1=list_priems_alreadyintable[j];

list_priems_alreadyintable[j]=list_priems_alreadyintable[j+1];

list_priems_alreadyintable[j+1]=b1;

}

}

}

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

tablewidget_priems->insertRow(i);

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

if(k==0){

QSqlQuery query_output;

query_output.exec("SELECT * FROM Priems WHERE id_priem="+QString::number(list_priems_alreadyintable.at(i)));

query_output.next();

QTableWidgetItem *item = new QTableWidgetItem;

item->setFlags(item->flags() ^ Qt::ItemIsEditable);//УБИРАЕТ ИЗ ФЛАГОВ ЕДИТАБЛ

item->setText(query_output.value(0).toString()+" - "+query_output.value(1).toString());

tablewidget_priems->setItem(i,k,item);

}

if(k==1){

QTableWidgetItem *item = new QTableWidgetItem;

item->setFlags(item->flags() ^ Qt::ItemIsEditable);//УБИРАЕТ ИЗ ФЛАГОВ ЕДИТАБЛ

item->setText(QString::number(list_priems_overallRate_alreadyintable.at(i)));

tablewidget_priems->setItem(i,k,item);

}

if(k==2){

QTableWidgetItem *item = new QTableWidgetItem;

QSqlQuery query_tooltip;

query_tooltip.exec("SELECT * FROM Rates");QString str_tooltip=("");

while(query_tooltip.next()){

str_tooltip.append(QString::number(query_tooltip.value(2).toInt())+" - "+query_tooltip.value(1).toString()+"\n");

}

item->setToolTip(str_tooltip);

QStringList strlist=label_task_name->text().split(": ");

if(strlist.at(1)!="Новая"){

QSqlQuery query_priem;

query_priem.exec("SELECT * FROM Task_inside_priems WHERE id_priem="+QString::number(list_priems_alreadyintable.at(i))

+" AND id_task="+QString::number(id_task_chosen));

int size=0;int rate;

while(query_priem.next()){

size++;

rate=query_priem.value(2).toInt();

}

if(size==0){

item->setText("0");

tablewidget_priems->setItem(i,k,item);

}else{

item->setText(QString::number(rate));

tablewidget_priems->setItem(i,k,item);

}

}else{

item->setText("0");

tablewidget_priems->setItem(i,k,item);

}

}

}

}

}

void WorkWithTask::pushbutton_give_rates_ok()

{

}

void WorkWithTask::tablewidget_priems_data_changed(int row, int col)

{

if(col==2){

// DbConnect db;

QSqlQuery query;

query.exec("SELECT * FROM RATES WHERE which_rate="+tablewidget_priems->item(row,col)->text());

int size=0;

while(query.next()){

size++;

}

if(size==0){

QMessageBox::information(this,"Ошибка","Выставленной оценки не существует\nБудет установлено стандартное значение 0\nДля просмотра существующих оценок посмотрите подсказку при наведении на ячейку");

tablewidget_priems->item(row,col)->setText("0");

}

}

}

void WorkWithTask::pushbutton_sprav_priemov_ok()

{

}