Разработка комплекса программ автоматизации процесса регистрации и обработки данных для конкретной организации
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
их диапазоновKohrenFormСправочник коэффициентов КохренаLaborFormСправочник наименований лабораторийMainFormГлавная форма программы, форма менюMetodFormСправочник методикProtokolOcenkaFormФорма протокола для задачи оценки точности результатов измеренийProtokolReportFormПечатная форма протокола для задачи оценки точности результатов измеренийSelectFormФорма выбора лабораторииShuhartProtFormФорма протокола для задачи контроля стабильности результатов измеренийShuhartRepFormПечатная форма контрольной картыShuhartSpisokKSRIФорма списка набранных и рассчитанных протоколов для задач контроля стабильности результатов измеренийShuhProtokolFormПечатная форма протокола для задачи контроля стабильности результатов измеренийShuhSpIndFormФорма списка набранных и рассчитанных протоколов для КК индивидуальных значенийShuhValIndFormФорма протокола КК индивидуальных значенийSpisokProtOcenkaFormФорма списка протокоова для задачи оценки точности результатов измеренийStudentFormСправочник процентных точек распределения СтьюдентаTuningFormНастройка параметров расчетаUnitFormСправочник единиц измеренияТабл.9
Особое внимание хочется уделить модулю DataModForm. Ведь именно в нем происходят основные процессы взаимодействия между клиентской частью программы и сервером базы данных. Поскольку одной из особенностей среды Delphi является работа с данными, то для нашего случая у нее есть библиотека компонентов для доступа к базам данных Interbase по названием IBX. С помощью IBX можно работать с любыми версиями InterBase, Firebird и Yaffil. Это означает, что все версии IBX работают (и будут продолжать работать) со всеми версиями InterBase, Firebird и Yaffil, во всех средах разработки Delphi. На рисунке 7 показана данная форма с компонентами IBX.
Первым является IBDatabase. Это центральный компонент для соединения с базой данных. Один компонент может быть связан только с одной базой данных в конкретный момент времени. Настройка данного компонента вызывается двойным щелчком кнопки мыши на компоненте. В результате появляется окно настроек, показанное на рисунке 8. В секции Connection мы указываем тип соединения с сервером базы данных Firebird и физическим местоположением базы данных. В секции DataBase Parameters указываем имя пользователя и пароль для доступа к данным, в нашем случае доступ к программе осуществляется под одним пользователем, имеющим права администратора сервера. Так же указываем кодировку отображения символов WIN1251 - русская кодировка и снимаем авторизацию при каждом запуске программы (Login Prompt = false).
Рис. 7
Вторым является IBTransaction. Вне контекста транзакции в Interbase и Firebird нельзя выполнить никаких действий с данными и метаданными базы данных. IBTransaction1.DefaultDatabase:=IBDatabase1. Особое внимание необходимо уделить обработке транзакций, ведь именно они играют решающую роль в многопользовательском режиме работы программы, от них зависит, будут ли сохранены вносимые лаборантом данные, будут ли сохранены полученные в результате расчета данные. Транзакция - группа логически объединённых последовательных операций по работе с данными, обрабатываемая или отменяемая целиком. В свойствах IBTransaction1, я настроил транзакции следующим образом:
read_committed - невоспроизводимое (или неповторяемое) чтение. Транзакция может читать только те изменения, которые были подтверждены другими транзакциями. Например, если транзакции A и B стартовали и поменяли записи, то они не видят изменения друг друга. Транзакция А увидит изменения транзакции B только тогда, когда транзакция B завершится по commit. Перечитывание данных в транзакции может выдавать разные результаты;
rec_version - именно этот режим является умолчательным и рекомендуется для нормальной работы в режиме read committed;
nowait - режимы обработки конфликтов блокировок. Если транзакция стартует в режиме wait (по умолчанию), и при выполнении операции (как правило, изменения данных, за исключением режима no_rec_version) обнаруживается конфликт, то операция замораживается до разрешения конфликта. В режиме nowait сообщение о конфликте выдается приложению немедленно (возникает ошибка), а операция, которая привела к конфликту, отменяется. В случае взаимоблокировки двух wait-транзакций сервер автоматически обнаруживает эту ситуацию, и разблокирует одну из транзакций (как будто она стартовала как nowait) через интервал времени, определенный в IBCONFIG параметром DEADLOCK_TIMEOUT, который по умолчанию равен 10 секундам.
Третьим является либо датасет (IBDataSet, IBQuery), либо IBSQL он связывается с базой данных и транзакцией:
IBDataSet.Database:=IBDatabase1;
IBDataSet.Transaction:=IBTransaction1.
Четвертый - источник данных для датасета, т.е. универсальный TDataSource. DataSource1.DataSet:=IBDataSet. Пятым является DBGrid, находящийся на формах отображения данных. Он связывается только с DataSource. DBGrid.DataSource:=DataSource. Настройка вызова хранимых на стороне сервера процедур происходит при помощи компонента IBStoredProc. Теперь рассмотрим главную форму программы под названием MainForm. С нее и начинается работа программного комплекса, рисунок 9.
Рис. 9
В меню Выбор рабочей области мы видим перечень задач, описанных в техническом задании, в Справочниках находятся справочные материалы по коэффициентам, наименованиям и единицам измерения. В зависимости от предстоящих расчетов, лаборант выбирает необходимую ему рабочую область, указывает свою лабораторию из выпадающего списка и начинает работать. При выборе задачи по оценке погрешностей результатов измерений, появляется форма списка уже существующих расчетов (протоколов), где можно выбрать существующий протокол для редактирования либо завести нов