//--------------------------------------------------------------------------- void __fastcall TFormDLLProgr::ComboBoxDiscipChange(TObject *Sender) { indexDiscipForEditOneGroup=ComboBoxDiscip->ItemIndex; ListBoxOcenk->Clear(); listIDsOfOcenk->Clear(); ListBoxOcenk->Items->Add("Сем. по плану Сем. по графику Оценка Балл"); listIDsOfOcenk->Add(""); ListBoxOcenk->Items->Add(""); listIDsOfOcenk->Add(""); if (ComboBoxDiscip->Items->Count==0) { BtnCheckOcenk->Enabled=false; return; } else BtnCheckOcenk->Enabled=true; int indexsel=ComboBoxDiscip->ItemIndex; if (indexsel < 0 || indexsel >= listIDsOfDiscip->Count) return; AnsiString idselDiscip=listIDsOfDiscip->Strings[indexsel]; int classDiscip=listClassOfDiscip->Strings[indexsel].ToInt(); MYSQL_RES *result; MYSQL_ROW row; AnsiString numplansem,numgraphsem,est,ball; int estindex; AnsiString SpaceStr; AnsiString Str; AnsiString myquery; myquery="SELECT id,numplansemestr,numgraphsemestr,estimation,ball FROM "+opts.DBProgress+" WHERE idstud="+ToStr(AnsiString(idstud))+" AND iddiscip="+ToStr(idselDiscip)+" AND deleted=0 ORDER BY numplansemestr"; mysql_query(mysql,myquery.c_str()); if (mysql_field_count(mysql)) { result=mysql_store_result(mysql); if (result && mysql_num_rows(result)) { while (row = mysql_fetch_row(result)) { listIDsOfOcenk->Add(AnsiString(row[0])); numplansem=AnsiString(row[1]); numgraphsem=AnsiString(row[2]); estindex=AnsiString(row[3]).ToInt(); est=arrOcenk[estindex]; ball=GetStrWithReplacedPoints(AnsiString(row[4]),","); SpaceStr=" "; if (numplansem.Length()==1) SpaceStr+=" "; Str=SpaceStr+numplansem; SpaceStr=" "; if (numgraphsem.Length()==1) SpaceStr+=" "; Str+=SpaceStr+numgraphsem; SpaceStr=" "; switch(estindex) { case 0: SpaceStr+=" ";break; case 1: SpaceStr+=" ";break; case 2: SpaceStr+=" ";break; case 4: SpaceStr+=" ";break; case 5: SpaceStr+=" ";break; } Str+=SpaceStr+est; switch(estindex) { case 0: SpaceStr=" ";break; case 1: SpaceStr=" ";break; case 2: SpaceStr=" ";break; case 3: SpaceStr=" ";break; case 4: SpaceStr=" ";break; case 5: SpaceStr=" ";break; } SpaceStr+=" "; Str+=SpaceStr+ball; SpaceStr=" "; if (IS_PERIOD(classDiscip)) Str+=SpaceStr; ListBoxOcenk->Items->Add(Str); } } mysql_free_result(result); } ListBoxOcenkClick(ListBoxOcenk); }
std::string read_user_format_number(std::ifstream &ifs, UserFormatColumn<DATA_T> &ufc, std::string &line, bool &need_readline, encode_result &encres, char* argv[] = 0) { std::string ret, fm_buffer; DATA_T val = 0; char* c; ret.clear(); while (std::getline(ifs, line)) { encres.line_nr++; encres.line_in_blk++; c = const_cast<char*>(line.c_str()); fm_buffer.clear(); if (IS_COMMENT(line)) continue; /* end of FORMATs of a user block */ if (IS_BLANK(line)) { need_readline = false; break; } while (!IS_EOL(*c) && !IS_EOS(*c)) { /* Meeting the next FORMAT, which means this format is done */ if (IS_LETTER(*c)) { need_readline = false; break; } else if (IS_PLACEHOLD(*c)) { if (!TEMPLATE_MODE) throw E2promValueException("Placehold should be used in template file", to_string<int>(encres.line_nr), usage_allowed_user_format_type); E2promMsg("Reading parameter for user "+to_string<uint16_t>(ufc.uheader.ID)+ " @ line "+to_string<int>(encres.line_nr)); read_user_parameters(fm_buffer, ufc.uheader.ID, encres, argv); break; } else if (IS_DIGIT(*c) || IS_PERIOD(*c)) { fm_buffer += *c++; } else if (IS_SPACE(*c) || (IS_COMMENT_SIGN(*c))) { break; } else { throw E2promValueException( "Unexpected characters found for type", to_string<int>(encres.line_nr), usage_allowed_user_format_type ); } } /* end of read-char while-loop */ // if (TEMPLATE_MODE) // process_fm_buffer(fm_buffer, ufc.uheader.ID); if (!fm_buffer.empty()) { val = to_digits<DATA_T>(fm_buffer); ufc += val; } if (!IS_LETTER(*c) && !IS_BLANK(line)) { need_readline = true; } else { break; } } /* end of read-line while-loop */ // ret += strize_formats<DATA_T>(ufc); std::stringstream ss; // ss.width(decres.GLOBAL_ALIGNMENT); ss << ufc; return ss.str(); }
//--------------------------------------------------------------------------- void __fastcall TFormDLLProgr::BtnCheckOcenkClick(TObject *Sender) { if (ComboBoxOcenka->ItemIndex==-1) { MessageBox(Handle,"Выберите оценку пожалуйста.","Ошибка",MB_OK|MB_ICONERROR); //ComboBoxOcenka->SetFocus(); return; } AnsiString EstimationStr=ComboBoxOcenka->ItemIndex; AnsiString BallStr=GetStrWithReplacedPoints(ComboBoxBall->Text); double valBall; try { valBall=BallStr.ToDouble(); if (valBall<0 || valBall>5.0) throw 1; } catch(...) { MessageBox(Handle,"Балл это вещественное неотрицательное число из диапазона [0..5].\nИсправьте пожалуйста.","Ошибка",MB_OK|MB_ICONERROR); //ComboBoxBall->SetFocus(); ComboBoxBall->SelectAll(); return; } BallStr=GetStrWithReplacedPoints(BallStr,"."); //для MySql нужна точка AnsiString Msg=""; switch (EstimationStr.ToInt()) { case OTL: if (valBall<4.50 || valBall>5.0) Msg="Ошибка! При оценке \'отлично\' балл выбирается из дипазаона [4.50 .. 5.00].\nИсправьте пожалуйста."; break; case HOR: if (valBall<3.50 || valBall>4.49) Msg="Ошибка! При оценке \'хорошо\' балл выбирается из дипазаона [3.50 .. 4.49].\nИсправьте пожалуйста."; break; case UDOVL: if (valBall<2.50 || valBall>3.49) Msg="Ошибка! При оценке \'удовлетворительно\' балл выбирается из дипазаона [2.50 .. 3.49].\nИсправьте пожалуйста."; break; case NEUD: Msg="Ошибка! Оценка \'неудовлетворительно\' не может быть проставлена, поскольку о наличии такой оценки часто забывают, что может отразиться в отчетах.\nПроставьте оценку после пересдачи студентом экзамена."; break; case ZACH: if (valBall<2.50 || valBall>5.0) Msg="Ошибка! При оценке \'зачтено\' балл выбирается из дипазаона [2.50 .. 5.00].\nИсправьте пожалуйста."; break; case NEZACH: Msg="Ошибка! Оценка \'незачтено\' не может быть проставлена, поскольку о наличии такой оценки часто забывают, что может отразиться в отчетах.\nПроставьте оценку после пересдачи студентом зачета."; break; } if (!Msg.IsEmpty()) { MessageBox(Handle,Msg.c_str(),"предупреждение",MB_OK|MB_ICONINFORMATION); ComboBoxBall->SelectAll(); return; } int indexsel=ComboBoxDiscip->ItemIndex; if (indexsel < 0 || indexsel >= listIDsOfDiscip->Count) return; AnsiString IDDiscipStr=listIDsOfDiscip->Strings[indexsel]; int classDiscip=listClassOfDiscip->Strings[indexsel].ToInt(); bool isPeriod = IS_PERIOD(classDiscip); AnsiString IDStudStr=AnsiString(idstud); AnsiString PlanSemestrStr=UpDownPlan->Position; AnsiString GraphSemestrStr=UpDownGraphic->Position; AnsiString myquery="INSERT INTO "+opts.DBProgress+" (idstud,iddiscip,numplansemestr,numgraphsemestr,estimation,ball) VALUES("+ToStr(IDStudStr)+","+ToStr(IDDiscipStr)+","+ToStr(PlanSemestrStr)+","+ToStr(GraphSemestrStr)+","+ToStr(EstimationStr)+","+ToStr(BallStr)+")"; mysql_query(mysql,myquery.c_str()); //MessageBox(Handle,"Оценка зафиксирована!","Сообщение:",MB_OK|MB_ICONINFORMATION); ComboBoxDiscipChange(ComboBoxDiscip); // устанавливаем экзамен или зачет if ( ComboBoxOcenka->ItemIndex < 4 ) { estim = 1; EstimLabel->Caption = "экзамен"; } else { estim = 2; EstimLabel->Caption = "зачет"; } }