Разработка программного изделия «Материальное требование» (раздел курсовой работы "Тексты программ")

Страницы работы

Содержание работы

5.  Тексты программ

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

Данный документ раскрывает содержание и логику работы модулей, реализующих выполнение п. 4.1.4.1 технического задания, т.е. обеспечивающих выполнение Запроса 1.

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

5.1.  Программный код, обеспечивающий настройку внешнего вида и заполнение информацией из справочных таблиц экранной формы, в которой задаются параметры выполняемого запроса.

5.1.1  Начнем рассмотрение текста с функции OnInitDialog, которая вызывается при инициализации диалогового окна.

Начало программного кода данной функции содержит следующие переменные:

m_strSign – данная переменная класса CString содержит значение знака, который задает параметры поиска суммы по документу

m_ctrlSign – переменная класса CComboBox служит для управления состоянием комбинированного списка, содержащего значения знаков.

db – переменная класса CDatabase. Используется для подключения к базе данный через интерфейс ODBC.

m_ctrlRecieved – переменная класса CComboBox. Используется для управления списком, содержащим перечень ФИО материально ответственных лиц.

m_ctrlMaterialName – переменная класса CComboBox. Используется для управления списком, содержащим перечень наименований материалов.

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

CDialog::OnInitDialog();

          m_strSign = "=";

          UpdateData(FALSE);

          db.Open("Warehouse");             

          OnCheckFrom();

          OnCheckTo();

          m_ctrlRecieved.ResetContent();

          m_ctrlMaterialName.ResetContent();

          m_ctrlSign.ResetContent();

          m_ctrlSign.AddString("<=");

          m_ctrlSign.AddString("=");

          m_ctrlSign.AddString(">=");

Следующий фрагмент программного кода, используя переменную pTrebSet, которая является указателем на набор записей, с помощью которого осуществляется доступ к таблице базы данных “Материальное требование”, в цикле  заполняет список ФИО материально ответственных лиц значениями из базы данных.

          TrebSet *pTrebSet = new TrebSet(&db);

          pTrebSet->Open();

          while (!pTrebSet->IsEOF())

          {

                    m_ctrlRecieved.AddString(pTrebSet->m_strRecieved);

                    pTrebSet->MoveNext();

          }

          pTrebSet->Close();

Следующий фрагмент кода удалят из полученного перечня повторяющиеся значений ФИО.

Переменные:

strCur – значение текущей строки в списке

strPrev – значение предыдущей строки в списке

iCur – индекс текущего элемента в списке

          CString strCur;

          CString strPrev="";

          int iCur;

          for (iCur = m_ctrlRecieved.GetCount();iCur>0;iCur--)

          {

                    m_ctrlRecieved.GetLBText((iCur-1),strCur);

                    if (strCur==strPrev)

                    {

                              m_ctrlRecieved.DeleteString((iCur-1));

                    }

                    else

                    {

                              strPrev=strCur;

                    }

          }

Последний фрагмент программного кода данной функции, используя переменную pMaterialSet, которая является указателем на набор записей, с помощью которого осуществляется доступ к таблице базы данных “Справочник материалов”, в цикле  заполняет список наименований материалов значениями из базы данных.

          CMaterialSet *pMaterialSet = new CMaterialSet(&db);

          pMaterialSet->Open();

          while (!pMaterialSet->IsEOF())

          {

                    m_ctrlMaterialName.AddString(pMaterialSet->m_strMaterialName);

                    pMaterialSet->MoveNext();

          }

          pMaterialSet->Close();

          AddToolTipText();

          return TRUE; 

5.1.2  Функция CheckInput

Данная функция использует логические переменные m_bFrom и m_bTo, которые являются индикаторами состояния полей ввода начальной и конечной даты. Остальные переменные функции содержат значения текстовых полей ввода диалогового окна.

Функция считывает значения переменных диалогового окна и после чего проверяет наличие хотя бы одной границы временного интервала и заполненность всех текстовых полей и по окончании выполнения возвращает логическое значение-результат.

UpdateData();

          if ((m_bFrom==TRUE) && (m_bTo==TRUE))

          {

                    MessageBox("Введите временной интервал","Ошибка ввода",MB_ICONEXCLAMATION);

                    return FALSE;

          }

          if (m_strRecieved=="")

          {

MessageBox("Введите ФИО материально ответственного лица","Ошибка ввода",MB_ICONEXCLAMATION);

                    return FALSE;

          }

          if (m_strMaterialName=="")

          {

                    MessageBox("Введите наименование материала","Ошибка ввода",MB_ICONEXCLAMATION);

                    return FALSE;

          }

          if (m_strSign=="")

          {

                    MessageBox("Введите знак","Ошибка ввода",MB_ICONEXCLAMATION);

                    return FALSE;

          }

          if (m_strSum=="")

          {

                    MessageBox("Введите сумму по документу","Ошибка ввода",MB_ICONEXCLAMATION);

                    return FALSE;

          }

          return TRUE;

5.1.3  Функция OnOK()

Данная функция вызывается при нажатии кнопки ОК диалогового окна и инициализирует выполнение запроса.

Функцией используются следующие переменные:

pTrebSet – указатель на класс набора записей, с помощью которого осуществляется доступ к таблице базы данных “Материальное требование”.

min_time – Объект класса CTime. Используется для нахождения  самой ранней  даты регистрации материального требования.

IsArhiveUsed – переменная-индикатор, показывающая, следует ли обращаться к архивной базе данных.

Логика работы данного программного фрагмента следующая: после проверки корректности информации, введенной в экранную форму (вызов функции CheckInput), в цикле производится поиск самой ранней даты в основном массиве материальных  требований.

В случае если полученное значение меньше значения начальной даты, введенного в поле экранной формы, индикатору IsArchiveUsed присваивается значение 1.

          if (CheckInput())

          {

                    UpdateData();

                    CTime min_time(2010,01,01,0,0,0);

                    TrebSet *pTrebSet = new TrebSet(&db);

                    pTrebSet->Open();

                    while (!pTrebSet->IsEOF())

                    {

                              if  (pTrebSet->m_timeDate < min_time)

                                       min_time = pTrebSet->m_timeDate;

                              pTrebSet->MoveNext();

                    }

                    pTrebSet->Close();

Похожие материалы

Информация о работе