Модификация подсистемы АИСВУЗ "Основные средства"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?и решения или реализации проекта
2.2.1 Концептуальное решение проекта
Данный проект может иметь два способа распределения рабочих ресурсов - локализованный и распределенный. В эти два понятия необходимо вложить и программно-зависимое и аппаратное решения.
Первый вариант подразумевает наличие на рабочем месте всех необходимых ресурсов для ведения ОС - достаточно мощная рабочая станция, локальный принтер, программная блокировка рабочей базы от изменений с других рабочих станций (т.е. открытие в монопольном режиме). Принтер, не используемый другими станциями, естественно, всегда готов к работе, но простаивает практически до начала отчетного периода. В зависимости от требований к отчетным документам принтер выбирается или матричный или недорогой лазерный.
Второй вариант это многопользовательская работа в локальной сети. Возможность одновременного доступа к общим данным является мощным средством совместной работы группы пользователей. Однако при этом от разработчика конечного приложения требуются дополнительные действия по упорядочению доступа к базе данных. Основной проблемой является устранение противоречий между параллельным доступом к данным и сохранением целостности базы данных.
В приложениях, предназначенных для работы в сети, рекомендуется использовать блокировки. Они помогают оптимизировать совместную работу группы пользователей. Блокировки можно устанавливать на всю таблицу или же на отдельные записи таблицы. Блокировки ограничивают доступ пользователей к таблице или записи. В Visual FoxPro существуют два типа блокировок:
Полная блокировка. Запрещается чтение, запись и изменение структуры указанной таблицы из других сеансов работы. Для установления полной блокировки используется команда SET EXCLUSIVE, которая имеет следующий синтаксис:
SET EXCLUSIVE ON | OFF
ON установить режим монопольного использования таблиц
OFF снять режим монопольного использования таблиц
Блокировка изменений. Запрещает модификацию записи/таблицы из других сеансов работы. Для установления блокировки изменений на всю таблицу используется функция:
FLOCK ([алиас])
Функция FLOCK делает попытку заблокировать таблицу базы данных. Если эта попытка завершилась успешно, функция возвращает логическое значение (.Т.). В этом случае доступ к таблице на чтение и запись открыт только пользователю, выполнившему блокировку. Остальным пользователям сети таблица базы данных доступна только для чтения.
Для установления блокировки изменений на отдельные записи таблицы используются функции LOCK или RLOCK, которые являются взаимозаменяемыми:
LOCK ([номер_рабочей_области1 | "алиас1"]
| ["номер_записи1, номер_записи2, …", номер_рабочей_области2 | "алиас2"])
Функция LOCK пытается блокировать одну или несколько записей таблицы (во втором случае предварительно должна быть выполнена установка SET MULTILOCKS ON). Если блокировка установлена, возвращается значение (.Т.). Заблокированные записи доступны по чтению и записи только пользователю, установившему блокировку. Для остальных пользователей в сети эти записи доступны только для чтения.
Для снятия блокировок таблиц и записей используется команда UNLOCK. Синтаксис команды:
UNLOCK [RECORD ] [ALL]
При помощи данной команды можно сбросить блокировку записи, таблицы в текущей рабочей области, таблицы в указанной рабочей области или разблокировать все открытые таблицы. Запись или таблица может быть разблокирована только пользователем, установившим блокировку. С таблиц, открытых в режиме полной блокировки, с помощью данной команды блокировку снять невозможно. Разблокирование таблицы или записи в таблице происходит автоматически при закрытии данной таблицы.
2.2.2 Организация работы в сети
Для обеспечения функционирования разработанного приложения в сети используются различные типы блокировок:
- при добавлении, удалении и редактировании данных используются блокировки изменений;
- при осуществлении перехода на новый месяц используется полная блокировка всех таблиц базы данных.
Важную роль при работе приложения в сети играет вспомогательная таблица CON_NUM.DBF (таблица 2.1). Она не входит в основную базу данных, а является частью вспомогательной базы данных CON_NUM.
Таблица 2.1 Структура таблицы CON_NUM.DBF
ПолеТипРазмерПримечаниеCON_NUMN2,0Количество соединений с основной базой данных
В таблице CON_NUM.DBF регистрируется число соединений с основной базой данных, и при прекращении работы с программой последнего пользователя осуществляется упаковка всех таблиц основной базы данных. Такая реализация операции упаковки таблиц необходима, так как команда PACK стандартное средство упаковки таблиц в Visual FoxPro требует открытия таблицы в монопольном режиме, т.е. требуется установка на таблицу полной блокировки, что невозможно, если с таблицей работают другие пользователи. Кроме того, при выполнении операции резервного копирования на таблицу CON_NUM.DBF устанавливается блокировка, которая задерживает соединения других пользователей с основной базой данных, что препятствует возникновению ошибок выполнения программы.
С целью повышения уровня защиты целостности данных все критические операции по их обработке оформлены в виде транзакций.
2.2.3 Порядок установки и запуска программы
Для установки программы на компьютер необходимо: