- •1. Специальная часть 6
- •2. Технологическая часть. Особенности разработки программ на скриптовом языке Perl с использованием интерфейса cgi 60
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта 76
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм 88
- •Введение
- •1. Специальная часть
- •Введение
- •1.1. Анализ системы орокс
- •1.1.2. Состав индивидуального учебного плана пользователя
- •1.1.1. Организация обучения на базе системы орокс
- •1.1.3. Процесс взаимодействия обучаемого с учебным заведением
- •1.1.4. Анализ существующих функций администрирования процесса обучения
- •1.1.5. Постановка задачи
- •1.1.5.1. Требования к информационной и программной совместимости
- •1.1.5.2. Основные элементы интерфейса, предоставляемые технологией www
- •1.2. Проектирование подсистемы статистического учёта успеваемости студентов
- •1.2.1. Язык моделирования, используемый при проектировании подсистемы
- •1.2.2. Разработка общей структурной схемы подсистемы.
- •1.2.3. Структура данных, используемых подсистемой
- •1.2.4. Проектирование и реализация компонентов подсистемы
- •1.2.4.1. Учебная карточка студента
- •1.2.4.2. Передача работ преподавателю
- •1.2.4.3. Текущая успеваемость
- •1.2.4.4. Статистика по студентам
- •1.3. Особенности реализации подсистемы
- •1.3.1. Взаимодействие с базой данных
- •1.3.2. Передача значений между формами
- •1.3.3. Особенности, связанные с подготовкой отчётов для печати
- •1.3.4. Сортировка массивов
- •1.4. Методика испытаний
- •2. Технологическая часть. Особенности разработки программ на скриптовом языке Perl с использованием интерфейса cgi
- •Введение
- •2.1. Интерфейс cgi. Вопросы взаимодействия внешних прикладных программ с информационным сервером http
- •2.1.1. Введение в технологию www
- •2.1.2. Common Gateway Interface как средство расширения возможностей World Wide Web технологии
- •2.2. Особенности языка Perl
- •2.2.1. История создания языка
- •2.2.2. Синтаксис языка
- •2.3. Особенности отладки cgi-программ
- •2.2.1. Ошибки в Perl-программе
- •2.2.2. Отладка шаблонов
- •2.2.3. Использование ModPerl
- •2.2.4. Ошибки при настройке www-сервера
- •2.2.5. Ошибки при выполнении sql-выражений
- •2.4. Диаграммы uml, используемые при проектировании подсистемы
- •2.4.1. Введение
- •2.4.2. Диаграммы вариантов использования
- •2.4.3. Диаграммы деятельности
- •2.4.4. Диаграммы последовательностей
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта
- •Введение
- •3.1. Принципы сегментации с учётом специфики продукта
- •3.2. Методика расчёта сегментации рынка
- •3.3. Поиск сегментов рынка для подсистемы статистического учёта успеваемости студентов
- •3.5. Оценка затрат на создание программного продукта и определение точки безубыточности
- •3.6. Вывод
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм
- •Введение
- •4.1. Вредные факторы на рабочем месте программиста и пользователя эвм
- •Излучения экрана монитора.
- •Физические перегрузки (статические);
- •4.1.1. Излучения экрана монитора
- •4.1.2. Микроклимат помещения
- •4.1.3. Требования к уровням шума
- •4.1.4. Психофизиологические факторы
- •4.1.4.1. Физические перегрузки (статические)
- •4.1.4.2. Монотонность труда
- •4.1.4.3. Описание зрительной работы оператора
- •Заключение
- •Список литературы
- •Приложения Фрагмент текста программы
1.3. Особенности реализации подсистемы
1.3.1. Взаимодействие с базой данных
Для взаимодействия Perl-скриптов с СУБД MySQL система ОРОКС использует модуль DBI.
Общий алгоритм работы с базой данных можно представить в следующем виде:
Подключение к базе данных с помощью функции connect;
Подготовка запроса к выполнению с помощью функции prepare;
Выполнение запроса с помощью функции execute;
Выборка данных (для запросов содержащих команду SQL select) с помощью функций fetch;
Завершение работы с базой данных: функции finish и disconnect.
Подключение к базе данных производится системой ОРОКС автоматически при входе пользователя в систему.
Функции подготовки запроса к базе данных ОРОКС, выполнения этого запроса и выборки данных были изменены для автоматизации перехвата сообщений о возможных ошибках и приведены к более удобному виду для использования.
В результате для работы с БД имеются следующие функции:
ExecSQL($sql) – выполняет выражение $sql;
Assign2var – присваивает результат, возвращённый функцией ExecSQL переменной(ым);
Assign2list – присваивает результат, возращённый функцией ExecSQL массиву(ам) значений.
Приведём фрагмент программы, реализующий выборку из таблицы USERS идентификаторов записей ID, фамилий ufam и имён uname студентов, занимающихся в группе $FORM{group}. Результаты запроса с помощью функции Assign2list заносятся в соответствующие массивы данных:
$sql="SELECT ID, ufam, uname FROM users WHERE uflags='stand' AND ugroup='$FORM{group}'
$sth=ExecSQL($sql);
Assign2list($sth, \@ID, \@fams, \@names);
1.3.2. Передача значений между формами
При передаче данных из одной формы в другую используются хэш %Hidden и скрытый элемент ввода «hidden».
Для передачи значения переменной $var сначала необходимо занести его в специальный ассоциативный массив %Hidden: $Hidden{name}=$var. Перед отправкой формы элементы этого массива шифруются функцией ОРОКС CodeHiddens() и передаются с использованием скрытого элемента ввода «hidden» на следующий экран, где они будут доступны как обычные элементы хэша %FORM. Т.е. значение переменной $var, записанное в хэш %Hiddens будет доступно через $FORM{name}.
Поскольку значениями хэша могут быть только переменные, для передачи массивов значений требуется сначала занести все элементы массива в переменную, а после передачи этой переменной разобрать полученное значение.
Допустим, нужно передать на следующую форму массив идентификаторов @ID. Для этого с помощью функции join() языка Perl объединим все значения массива @ID в переменную $ID_array. В качестве разделителя выступит точка с запятой: $ID_array = join(";", @ID). Затем заносим эту переменную в хэш %Hiddens: $Hidden{ID_array}=$ID_array.
После кодирования хэша с помощью функции CodeHiddens() и отправки формы на следующем экране при обращении к элементу $FORMS{ID_array} получим искомый массив в виде строки, элементы которого разделены точкой с запятой. Для разбора этой строки и занесения элементов обратно в массив используется функция split:
my (@ID)=split(';', $FORM{'ID_array'});
