Ejemplo n.º 1
0
//---------------------------------------------------------------------------
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);
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
//---------------------------------------------------------------------------
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 = "зачет";
  }

}