ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКИЙ ХИМИКО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ
им. Д.И. Менделеева
Новомосковский институт(филиал)
Кафедра
Вычислительная техника и информационные технологии
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К ДИПЛОМНОМУ ПРОЕКТУ
НА ТЕМУ:
Разработка модуля WEB-сайта
преподавателя по дисциплине Интернет технологии
Зав. кафедройВоробьев В.И.
РуководительПрохоров В.С.
Н/контролерПрохоров В.С.
СтудентКовтун А.А.
г. Новомосковск
2006г. Реферат
Пояснительная записка 186 с., 57 рис., 22 табл., 24 источников, 6 прил.
Дистанционное обучение, интернет-технологии, веб-приложение, электронный учебник, тестирование, веб-сервер apache, язык веб-программирования php, сервер баз данных mysql, средство проектирования веб-узлов macromedia dreamweaver mx 2004, инфологическая модель, даталогическая модель.
Цель работы - создание электронного модуля сайта преподавателя по дисциплине "Интернет технологии", для размещения и использования его в сети Internet.
В дипломном проекте определяются основные положения и требования к дистанционному обучению, проводится обзор программных средств разработки электронных обучающих курсов. Модуль дистанционного обучения создан на основе методических пособий по курсу "Интернет технологии" с использованием средств разработки веб-приложений, Macromedia Dreamweaver MX 2004 и предназначен для размещения на сайте преподавателя или ВУЗа.
Приложение написано на языке веб-программирования PHP 4. Его взаимодействие с базой данных MySQL организовано средствами веб-сервера Apache. Выбор средств программирования обусловлен их бесплатностью, широкими возможностями и популярностью. Приложение предполагает обучение и тестирование студентов с использованием дистанционных методов, интерактивное общение студентов и преподавателей. Доступ к веб-сайту можно получить с любого клиентского компьютера с установленным Интернет-браузером.
Для работы с приложением необходим доступ в сеть Интернет. Система не требует настройки, имеет удобный веб-интерфейс пользователя и учитывает специфические особенности системы дистанционного обучения.
Explanatory note 186 p., 57 pic., 22 tabl., 24 sources, 6 enc.
Remote learning, internet-technology, web-application, electronic textbook, testing, web-server apache, web-programming language php 4, database server mysql, means of the designing web-nodes macromedia dreamweaver mx 2004, infological model of the application domain, datalogical model of the application domain.
The Purpose of the work - a creating the electronic module of the teacher's site on discipline "Internet technologies", for accomodation and its uses in local network of the institute or network Internet.
In the diploma project main positions and requirements to remote learning are defined, the review is conducted software of development of electronic learning course. The module of remote learning is created on the basis of the methodical allowance on discipline “Internet technologies” with use of means of development Web-applications - Macromedia Dreamweaver MX 2004 and intended for accommodation on a site of the teacher or our institute.
Application is written on web-programming language PHP 4. Its interaction with database MySQL is organized by means of web-server of Apache. These means are chose because they free, possess broad possibility and large popularity. Application proposes learning and testing students with use the remote methods, interactive contacts of students and teachers. The access to web-site with any client computer may get, with installed Internet - browser.
For work with application, need to have access to network Internet. The System does not require adjustment, has suitable web-interface of the user and takes into account the specific particularities of the system of the remote education.
Содержание
The abstract. 3
Введение. 8
1. Теоретическая часть. 10
1.1 Системы дистанционного обучения. 10
1.2 Базовые принципы системы дистанционного образования. 12
1.3 Терминология. 14
1.4 Обзор систем дистанционного обучения. 15
1.5 Технологии дистанционного обучения. 25
1.6 Модель дистанционного обучения. 26
1.7 Организационно-информационная поддержка дистанционного обучения 29
1.8 Элементы дистанционного учебного курса. 29
1.9 Этапы создания дистанционных курсов. 32
1.10 Обзор средств разработки дистанционных курсов. 32
1.10 1 Обзор зарубежных средств. 33
1.10.2 Обзор российских средств. 34
1.11 Организация и контроль самостоятельной работы студентов средствами веб-сайта. 40
1.12 Описание предметной области. 44
1.12.1 Основные элементы дистанционного курса. 45
1.12.2 Структура учебного процесса. 47
1.13 Постановка задачи. 48
1.13.1 Основные требования к веб-сайту. 49
1.13.2 Дополнительные требования к веб-сайту. 51
1.13.3 Требования к оформлению учебных материалов. 51
2. ПРОЕКТНАЯ ЧАСТЬ. 53
2.2 Построение даталогической модели предметной области. 1
2.3 Описание алгоритма работы веб-сайта. 8
2.4 Выбор программных средств. 10
2.4.1 Преимущества использования PHP в сравнении с другими языками. 11
2.4.2 Сервер баз данных MySQL и его особенности. 13
2.4.3 Выбор средства проектирования web-сайта. 15
2.5 Установка и настройка аппаратно-программного комплекса. 16
2.5.1 Веб - сервер Apache. 16
2.5.2 Установка РНР и настройка Apache для работы с РНР. 19
2.5.3 Установка MySQL. 21
2.6 Работа в Macromedia Dreamweaver MX 2004. 22
2.7 Разработка веб-сайта. 27
2.7.1 Разработка пользовательского интерфейса. 27
2.7.2 Файловая структура веб-сайта. 27
2.7.3 Вход в систему MySQL. 29
2.7.4 Создание таблиц базы данных. 29
2.7.5 Формирование страниц веб-сайта. 35
2.7.6 Использование переменных сеанса. 42
2.7.6.1 Использование cookie - наборов в сеансе. 43
2.7.6.2 Реализация управления простым сеансом.. 43
2.7.6.3 Запуск сеанса. 44
2.7.6.4 Регистрация переменных сеанса. 44
2.7.6.5 Использование переменных сеанса. 45
2.7.6.6 Отмена регистрации переменных и завершение сеанса. 46
2.7.6.7 Использование переменных сеанса в приложении. 47
2.8 Запуск веб-сайта и описание работы с ним.. 48
2.8.1 Навигация по сайту. 48
2.8.2 Форма регистрации студента. 49
2.8.3 Чат и гостевая книга. 49
2.8.4 Страница тестирования. 51
2.8.5 Интернет магазин. 52
2.8.6 Система администрирования. 54
3. Экономическая часть. 61
3.1 Определение трудоемкости разработки приложения. 61
3.2 Расчет затрат на разработку приложения. 61
3.3 Определение возможной цены разработанного приложения. 66
3.4 Экономическое обоснование выбора комплекса технических и программных средств. 67
3.5 Описание экономического и социального эффекта от разработки приложения 71
4. Безопасность жизнедеятельности. 75
4.1 Теоретическая часть. 75
4.1.1 Пожароопасные и токсичные свойства веществ и материалов, применяемых при выполнении работы. 75
4.1.2 Характеристика потенциальных опасностей и вредностей. 75
4.1.3 Категорирование помещения аудитории. 77
4.1.4 Санитарно-гигиеническая характеристика помещения. 77
4.1.5 Условия безопасности при проведении экспериментальной части работы. Электробезопасность. 78
4.1.6 Пожарная безопасность и средства пожаротушения. 81
4.1.7 Защита окружающей среды.. 82
4.1.8 Гражданская оборона. 82
4.2 Расчетная часть. 84
4.2.1 Оценка уровня шума на рабочем месте. 84
4.2.2 Освещение производственных помещений. 89
Заключение. 92
Список использованной литературы.. 94
Приложения. 96
Приложение А Листинги модулей формирования страниц приложения. 96
Приложение Б. Листинги модулей формирования гостевой книги. 108
Приложение В. Листинги модулей формирования чата. 120
Приложение Г. Листинги модулей формирования магазина. 127
Приложение Д. Листинги модулей формирования тестирования. 134
Приложение Е. Листинги модулей формирования администрирования. 153
Важную роль в процессе обучения играют компьютеры и компьютерные технологии. Компьютеры используются при тестировании, демонстрации примеров и экспериментов. Существует целый класс программ, называемых "электронными" учебниками [1]. Использование информационных технологий в обучении позволяет активно использовать научный и образовательный потенциал ведущих университетов и институтов, привлекая лучших преподавателей к созданию курсов дистанционного обучения, расширяя аудиторию обучаемых и позволяет осуществлять широкомасштабную подготовку и переподготовку специалистов вне зависимости от места жительства.
В дистанционном обучении приобретает популярность использование среды WWW из-за: существования программ для просмотра WWW документов для популярных аппаратных и программных платформ; простой и интуитивно-понятный пользовательский интерфейс; возможность представления мультимедийной информации в рамках единого стандартного языка форматирования документов HTML (HyperText MarkUp Language); возможность создания форм для ввода информации пользователем. Это позволяет эффективно использовать ее как в ходе самого обучения, так и при контроле знаний учащихся. Обучаемому не надо иметь специальное программное обеспечение или выделенные линии связи для доступа к учебным материалам, а преподаватель может оперативно модифицировать материал. Сочетание гипертекстовых учебных пособий и системы электронного контроля знаний, базирующиеся на технологиях Интернет, позволяют создать единую обучающую среду, адаптирующуюся под уровень знаний и, фактически, создающую индивидуальный "электронный учебник" для каждого обучающегося.
Исследования в области дистанционного обучения активно проводятся как за рубежом, так и в России. Эти исследования связаны, прежде всего, с изучением особенностей восприятия информации с экрана компьютера, оценкой эффективности дистанционного обучения, сравнительным анализом используемых в обучении программных средств. Все больше исследователей изучают различные формы дистанционного обучения в контексте педагогики, психологии, физиологии, психиатрии и компьютерных наук.
Данная дипломная работа направлена на создание модуля веб-сайта преподавателя для дисциплины "Интернет технологии", чтобы студенты могли эффективно приобретать необходимые знания и навыки по этой дисциплине без негативных последствий для физического и психического здоровья со стороны компьютера и Интернета.
Организация и контроль работы студентов с помощью системы дистанционного обучения обеспечивают:
1. Индивидуализацию обучения, которая сводится к потенциальной возможности улучшить качество обучения за счет учета индивидуальных особенностей обучаемых по отношению к среднестатистическим студентам. К особенностям обучаемых относят: уровень начальной подготовки, скорость восприятия информации, предпочтительные формы подачи информации, объем и глубину материала, мотивацию к обучению, предметную область, склонность к групповой работе и ряд других.
2. Персонализацию учебного процесса - обучение не в рамках учебной группы, где процесс обучения, так или иначе, синхронизирован между студентами (все работают по единому графику), а обучение студентов по индивидуальному графику. Причем этот график может оперативно изменяться в соответствии с текущей занятостью учащегося и его темпом восприятия информации.
3. Интенсификацию или изменение характера преподавательского ресурса - как преподавателю экономить свое время? Как привлечь преподавателей из других вузов, предоставив им льготные условия работы? При такой постановке вопроса дистанционное обучение едва ли не единственный выход из ситуации, к сожалению, наталкивающийся на естественный консерватизм как административного, так и педагогического персонала.
4. Увеличение эффективности (качества) обучения при использовании новых принципов, приемов и технических средств, к числу которых относится и доступ к нетрадиционным учебным материалам посредством CD, Интернета и т.п.
5. Сохранение и тиражирование педагогического опыта знаний и методики преподавания - уникальные авторские учебные курсы, носителями которых являются преподаватели, исчезают со временем в никуда только потому, что не записываются на пленку, и вообще не архивируются
6. Удешевление компонентов учебного процесса - достигается за счет электронной, а не полиграфической публикации учебных материалов. Эта цель при наличии существующих сервисов типа e-mail или http вполне и легко может быть осуществлена.
К сожалению, большинство студентов и слушателей различных курсов не обладают временем для личного посещения занятий. Тем не менее, это не может считаться неразрешимой проблемой - Интернет предоставляет возможность повысить свой профессиональный уровень, не отходя от компьютера, причем за сетевое обучение иногда даже не приходится платить.
Прежде всего, стоит разобраться с тем, что именно является целью человека, решившего повысить собственный образовательный или профессиональный уровень, не вставая из-за компьютерного стола. Мотивом для виртуального студента может послужить экономия времени - не секрет, что перемещения по таким мегаполисам, как Москва или Санкт-Петербург "съедают" несколько часов в день. В качестве еще одного аргумента в пользу интернет-обучения может быть названа недоступность традиционных курсов - обнаружить в небольшом городке преподавателей, способных на хорошем уровне дать уроки программирования, непросто. Кроме того, многие потенциальные клиенты веб-курсов заинтересованы в получении свидетельств и сертификатов, подтверждающих профессиональную квалификацию.
Желающих приобрести новые знания и навыки можно условно разделить на две категории: стремящиеся пройти краткосрочный курс обучения или получить высшее (второе высшее) образование. Постоянно растет потребность людей в эффективном образовании, повышении квалификации, переподготовке и дополнительном профессиональном образовании. Растущий динамизм жизни вызывает потребность в мобильных учебных системах. Развитие сети Интернет открывает перспективы дистанционного образования, при которых учащемуся обеспечиваются возможности, свойственные очному обучению, а также целый ряд дополнительных, возникших в связи с развитием современных информационных технологий. Дистанционное образование становится единственной реальной возможностью учиться в индивидуальном режиме, независимо от места и времени; получать образование непрерывно и по индивидуальной траектории и призвано реализовать права человека на непрерывное образование и получение информации.
Появление образовательных сайтов, говорит о потенциальной востребованности услуг с использованием современных информационных технологий и, как следствие, инвестиционной привлекательности образовательных проектов.
Задача дистанционного обучения - учить, не имея прямого постоянного контакта с обучаемым. Можно сформулировать базовые принципы, на основе которых создаются системы дистанционного образования [2].
Во-первых, доступность обучения. Процесс обучения должен начинаться когда угодно - когда есть время; длиться сколько угодно - сколько есть времени и сил; он может быть внезапно прекращен или прерван и может быть продолжен с любого места. При этом накладываются субъективные особенности обучаемых: начальные знания, специфика освоения материала и т.д. Радикальный прорыв в этой области позволил осуществить научно-технический прогресс: персональный компьютер и Интернет, а в ближайшей перспективе - мобильный Интернет и беспроводные локальные пикосети.
Во-вторых, радикально новые формы представления и организации информации, обеспечивающие максимальную степень ее восприятия. Среди них можно выделить:
использование различных способов представления информации: текста, графики, видео, звукового сопровождения, анимации, т.е. то, что получило название "мультимедиа";
нелинейную форму организации материала, при которой его единицы представлены не в линейной последовательности, а как система явно указанных возможных переходов, связей между ними, дающая возможность адекватного представления всей взаимосвязи ее различных аспектов. Такой подход позволяет в максимальной степени приблизить процесс передачи знаний к естественному общению и обеспечить адаптивность траектории обучения;
присутствие большого количества справочной информации, причем в дополнительной, сопровождающей форме, когда пользователь видит основной предмет изучения в окружении каких-либо других узлов, е. любой вопрос (тема, проблема, аспект, идея, документ) всегда оказывается связанным с другими вопросами. Пользователь может не учитывать эту информацию, но она ему предоставляется, причем именно как смежная, находящаяся в определенных связях с вопросом, непосредственно интересующим пользователя. В целом такая система заставляет учитывать, что интересующая его тема может иметь еще какие-то аспекты.
В мировой практике наиболее перспективным способом организации разнородной информации признана гипермедийная технология. Ее достоинством являются, с одной стороны, ориентация на создание информационной среды, объективно отражающей практически любую предметную область, с другой - возможность адекватного представления всей взаимосвязи различных аспектов. Характерным примером ее использования является популярная World Wide Web.
В-третьих, достоверность сертификации знаний. Оценка знаний предельно усложняется. В системах дистанционного образования при сертификации знаний очного контакта, как правило, нет. Соответственно и методики сертификации знаний существенно отличаются от используемых при очном обучении. Наиболее распространенными здесь являются методики, основанные на тестировании, которые используются в практике очного образования скорее как дополнительные. Здесь они - основные. При отсутствии очного контакта нет гарантий того, что экзамены не сдал кто-то другой.
Создание полноценной системы дистанционного обучения возможно. В области Computer Science наиболее известным в России является Brainbench Test Center (www. brainbench. com). В нем после обучения и сдачи экзаменов выдаются сертификаты, которые известны и котируются во многих зарубежных организациях.
Стратегическая концепция создания и развития единой системы дистанционного образования в России разработана. В ней зафиксирована сложившаяся терминологическая база.
Нормативные документы Российской Федерации, касающиеся дистанционного образования, представлены на сайтах Министерства образования РФ [3] (db. informika. ru/do/npb/index. asp) и (www. ed. gov. ru), а также на сайте Института дистанционного образования МЭСИ, который осуществляет научно-методическое обеспечение и координацию дистанционного образования в РФ (www. fcdo. ido. ru/normativ/normativ. html).
Концепция создания и развития единой системы дистанционного образования развивается в научно-практическом журнале "Открытое образование" (www. mesi. ru/joe/n2 97. html).
Определение дистанционного образования является предметом оживленных дискуссий и педагогов, и философов, и специалистов в области информационных технологий. Обширную информацию на эту тему можно найти в материалах телеконференции "Российское дистанционное образование" по адресу: (db. informika. ru/do/teleconf). С терминологией можно ознакомиться в документе "Термины и определения дистанционного обучения" (db. informika. ni/do/news/doc/up_f. rtf).
Дистанционное обучение с использованием информационных технологий можно охарактеризовать как форму заочного обучения, в которой недостаток очного общения преподавателя и студента компенсируется возможностью сделать это посредством телекоммуникаций. В развернутом описании дистанционное образование - это комплекс образовательных услуг, предоставляемых с помощью специализированной информационной образовательной среды.
Информационно-образовательная среда это - совокупность средств приема и передачи данных, информационных ресурсов, протоколов взаимодействия, аппаратно-программного и организационно-методического обеспечения, получаемая пользователем в виде дистанционного курса.
В сети Интернет имеется большое количество обзоров современного состояния систем дистанционного обучения и перспектив их развития. Например:
обзор А.В. Соловова на сайте Центра новых информационных технологий при Самарском государственном аэрокосмическом университете (cnit. ssau. ru/do/review/do_world/index. htm);
обзор Е.Г. Коротеевой на сайте "Махаон" НИИ ядерной физики МГУ (www. machaon. ru/distant);
обзор В.А. Капустина на сайте Междисциплинарного центра дополнительного профессионального образования Санкт-Петербургского государственного университета (www. nic. nw. ru/VAK/DistLearn/intro. htmI);
информация на сайте Фонда развития образования
(www. user. cityline. ru/~cd-media);
обзор программных средств дистанционного образования на сайте "Информатика" (db. informika. ru/do/prog).
Для более подробного знакомства достаточно просмотреть разделы "Образование/Education" популярных классификаторов информационных ресурсов (www. aport. ru/) и (www. yahoo. com).
Эти информационные системы содержат структурированные ссылки на ресурсы Интернета, снабженные аннотациями, обзорами и рейтингами. Удобные системы поиска по рубрикам и ключевым словам в описании ресурса делают их незаменимыми помощниками в получении образования с использованием информационных ресурсов Интернета.
Тематический каталог аннотированных интернет-адресов по дистанционному образованию представлен на сервере Информика (www. db. informika. ru/do/). Здесь также можно получить методическое и программное обеспечение.
Интересны обзоры типа "Российские образовательные сети, серверы, ассоциации" (edu. secna. ru/links/nets. htm), "Ресурсы Интернета для науки и образования" (www. istina. inion. ru/r_www. htm).
Обширна коллекция специализированных сайтов по различным учебным дисциплинам: физике (www. spin. nw. ru), экологии (www. ecosafe. nw. ru), иностранным языкам (www. linguist. ru), праву (www. russianlaw. net), философии (www. philosophy. ru), культурологии (www. culture.21. ru), психологии (www. nsu. ru/psych/internet/index. htm). Полезную информацию по обучению русскому языку с использованием информационных технологий можно получить, подписавшись на рассылки "Грамотность и культура речи" (subscribe. ru/catalog/education. lang. ritor4russians). Большая коллекция ссылок на информационные ресурсы для гуманитарных наук и образования представлена на сайте Института "Открытое общество" (Фонд Сороса) (www. spb. osi. ru/ppk/)
Cледует отметить информационные ресурсы для системы образования, представленные на серверах Российского НИИ информационных систем (www. riis. ru).
Можно найти множество компьютерных обучающих программ на серверах www. download. ru, www. freeware. ru.
Развиваются информационные ресурсы, посвященные школьному образованию: Российский сервер школьного образования (www. school. edu. ru), Сервер школьного образования в Санкт-Петербурге (www. nit. spb. ru) содержат подробную информацию о ресурсах "школьного" Интернета. Среди сайтов можно назвать (www. education. spb. ru), (www. ipo. spb. ru), (rostest. runnet. ru).
В качестве примера систем online-тестирования назовем "Тесты online по компьютерным технологиям" (www. microinform. ru/tstart. htm) на сервере "Микроинформ"
Заслуживает внимания Всероссийская заочная компьютеризированная олимпиада для старшеклассников и абитуриентов, проводимая центром "Гуманитарные технологии" МГУ (www. teletesting. ru).
Эффективно функционирует система дистанционного образования Института технологий Монтеррей (www. sistema. itesm. mx), который дистанционно обучает по 2500 учебным курсам более 43 тыс. студентов.
Московский университет экономики, статистики и информатики (МЭСИ) (www. mesi. ru), обучает дистанционно около 20 тыс. студентов.
Достаточно развитые системы имеются в Современном гуманитарном университете (www. muh. ru), Московском институте электронного машиностроения (МИЭМ) - (dlc. miem. edu. ru) и ряде других вузов. Объединяет деятельность в сфере дистанционного образования в России Ассоциация международного образования, имеющая весьма представительный список участников (. aie. msk. su/russian/member. html), (likbez. spb. ru), (www. mart. spb. ru), (www. anriintern. com), (www. interbook. ru) и (www. lib. ru).
Рассмотрим подробнее, какие же образовательные услуги предоставляют пользователям Интернета системы дистанционного образования. Прежде всего, познакомимся с возможностями лидера дистанционного обучения в России - Московского университета экономики, статистики и информатики (МЭСИ) (www. mesi. ru)
Алгоритм обучения в системе открытого образования МЭСИ представлен на схеме (рисунок 1.1), выставленной на сайте университета в разделе "Виртуальный университет" (www. mesi. ru/ido/ido. html).
нет
да
нет
да
нет
да
Рисунок 1.1 - Алгоритм дистанционного обучения виртуального университета МЭСИ
Сетевая технология ДО МЭСИ [2] заключается в том, что обучение и сдача промежуточных и итоговых тестов происходит с использованием компьютерной сети Интернет либо в режиме online при непосредственном подключении к сайту учебного центра, либо, если условия связи не позволяют, в режиме offline с использованием электронной почты. Сдача экзамена проводится в ближайшем учебном центре очно. В ходе учебного процесса взаимодействие студента с МЭСИ организуется через адреса электронной почты. Дистанционное обучение в МЭСИ осуществляется по четырем учебным планам, объединяющим более 170 учебных курсов. Организация обучения такова, что, изучив программу по учебному плану, соответствующему, например, уровню среднего профессионального образования, и получив диплом государственного образца о среднем специальном образовании, студент может продолжить обучение. Освоив ряд дополнительных учебных дисциплин, студент может выполнить учебный план, соответствующий неполному высшему образованию, и получить диплом этого профессионального уровня. Таким образом, обучаясь по сетевой технологии дистанционного обучения, можно дойти до получения диплома государственного образца специалиста с высшим образованием (бакалавра или магистра). Обучение по дистанционной схеме в МЭСИ платное: вопросы преподавателям сверх установленного количества, пересдача тестов и т.д. разрешаются при условии дополнительной оплаты.
По такому же принципу организована работа Германо-Российского Открытого Университета, доступ в который имеется со страницы "Открытое образование". Положительным является то, что пользователю предоставляется демонстрационный вход для знакомства с условиями и возможностями обучения и материалы, структурированные следующим образом:
Домашняя страница курса:
• описание курса (Resume Session);
• расписание (Calendar).
Материалы курса (Course Materials):
• гипертекстовое оглавление курса (Course Content);
• программа курса (Course Syllabus);
• терминологический словарь (Glossary);
• поиск по материалам учебника (Search);
• сводные материалы (Resume Session);
• печать материалов (Print Notes).
Средства взаимодействия (Communication Tools):
• объявления (Bulletins) - доступные всем студентам курса;
• персональный почтовый ящик (Private Mail);
• чат (Chat) - online-аудитория;
• доска для рисования (Whiteboard) - графический редактор типа Paint, содержимое окна которого оказывается доступным другим участникам online-аудитории;
• проверка знаний (Assessment Tools);
• задания (Assignments);
• предварительное тестирование - самопроверка (Self-Test);
• тестирование знаний (Quiz/Tests).
Персональные данные студента (Student Profile):
• указания для студента (Check Your Grades);
• статистика учебных занятий (Tracking Record);
• персональные страницы (Student Homepages).
Студенту МЭСИ учебные материалы предоставляются и как гипертекстовые учебники на сайте учебного центра, и на CD-ROM для автономного изучения. Это позволяет передавать большие объемы мультимедийной информации дешевым и эффективным способом. Важными элементами обучения являются система полнотекстового поиска по материалам учебных курсов, глоссарий, конспекты учебников и средства вывода необходимых разделов на печать. Среди средств online-общения нельзя не отметить "Доску для рисования" (Whiteboard) - развитый инструмент для обмена информацией с помощью графических изображений, создаваемых участниками дистанционного обучения в окне браузера подобно тому, как это может происходить у обычной доски при обсуждении того или иного вопроса на семинаре в процессе очного обучения.
Система дистанционного обучения МЭСИ может служить образцом, по отношению к которому целесообразно рассматривать другие подобные системы с целью формулирования принципов их эффективного построения.
В Современном гуманитарном университете (СГУ) не ограничиваются только организацией дистанционного обучения для студентов, обучающихся заочно. Информационные технологии используют здесь и для проведения "IP-консультаций", доступных всем студентам вуза. Тщательно продуманная система помощи. Система дистанционного обучения СГУ позволяет организовать общение в реальном времени с коллегами по учебному курсу и друзьями. Для организации общения используется специальный сервер университета, обеспечивающий работу этой службы. После подключения можно посылать сообщения, пользоваться чатом и организовывать совместный доступ к приложениям. Можно делать даже презентации для показа на Whiteboard.
Центр компьютерного обучения "Специалист" при МГТУ им. Баумана (www. specialist. ru) является одной из самых известных организаций, предоставляющих возможность повысить квалификацию в IT-сфере. Там предлагаются online-варианты курсов, бесплатные курсы. Среди имеющихся вариантов стоит отметить: "Новые возможности Microsoft Office 2003", "Основы Microsoft Windows 2000" и "Основы сетей". Естественно, на платной основе доступно больше программ обучения.
Не меньший интерес у пользователей Всемирной паутины может вызвать и список курсов, предлагаемый Центром дистанционного обучения (ЦДО) Московского государственного института электроники и математики (МИЭМ) (www. dlc. miem. edu. ru). Центр дистанционного обучения предлагает два вида образовательных программ: краткосрочные и долгосрочные, фактически являющиеся компиляцией предыдущих. Разница заключается в их стоимости и продолжительности. Отличаются между собой и документы, подтверждающие профессиональный уровень: это может быть как "Свидетельство МИЭМ", так и государственный диплом о профессиональной переподготовке
Интернет-Университет Информационных Технологий (www. intuit. ru) открылся в апреле 2003 года. Начало работы было приурочено к выходу первого учебного пособия из серии "Основы информационных технологий". Интернет-Университет Информационных Технологий - едва ли не единственный вуз, существующий исключительно в Сети
Учебный центр REDCENTER (www. redcenter. ru) принял первых студентов в 1992 году (тогда он входил в состав компании REDLAB). Желающим повысить свой профессиональный уровень предлагается около сотни авторизованных курсов IT-тематики. Новые веяния в образовании здесь с успехом применяются: не выходя из дома можно получить знания в области администрирования UNIX, Microsoft SQL Server или сетевого оборудования Cisco. Обучение платное. По завершении учебной программы слушатели могут получить сертификат, подтверждающий их профессиональный уровень. Для обладания полновесным документом требуется сдать дополнительный экзамен, предварительно пройдя тестирование.
Московский государственный университет, точнее, входящий в его структуру Центр Дистанционного Образования (ЦДО) Научного парка МГУ (www. de. sciencepark. ru), предлагает пройти обучение на нескольких курсах.
Популярностью пользуются программы обучения иностранным языкам. Один из наиболее известных поставщиков услуг в области лингвистических курсов, Study. Ru (www. lessons. study. ru), предлагает взять несколько уроков английского, причем совершенно бесплатно. Естественно, перед тем как приступить к учебе, веб-серфер должен будет пройти online-тестирование, позволяющее выявить его уровень: для этого необходимо ответить на полсотни вопросов.
Русский институт управления создал систему дистанционного образования, основанную на использовании видео - и аудиолекций, транслируемых через Интернет (www. tantal. ru).
Схема обучения в РИУ предполагает получение основного учебного материала в форме видео - и аудиолекций по телекоммуникационным каналам.
Форму обучения с использованием только электронной почты избрал учебно-консультационный центр "Весть" (www. training. ru), использующий ее как для обучения в виртуальных группах, так и для индивидуального обучения. После заказа и оплаты курсов по указанному студентом адресу электронной почты высылают вводное письмо, в котором рассказывает об особенностях и графике учебного процесса. Учащийся изучает высылаемые материалы, отвечает на вопросы, задает свои вопросы, получает на них ответы, выполняет контрольные работы и так до тех пор, пока не закончится курс обучения. Дистанционное обучение в группе ведется в соответствии с фиксированным расписанием и по своей форме несколько напоминает управляемую преподавателем телеконференцию. В ходе занятий слушатели могут пользоваться учебниками, высылаемыми обычной почтой, а по их окончании получают сертификат.
В Интернете имеется большое количество информационных ресурсов, не связанных с образовательными учреждениями. Это тексты с гиперссылками и без них; файловые архивы компьютерных обучающих программ, которые можно использовать, перекачав по сети и установив на персональный компьютер; телеконференции, рассылки и многое другое. Особое место занимают разнообразные тестирующие системы, которые в ряде случаев позволяют не только проверить знания, но сдать вступительный экзамен в ВУЗ или получить престижный сертификат. Подобные образовательные услуги в большинстве случаев осуществляются на платной основе.
Большой известностью пользуется система "Телетестинг" (www. teletesting. ru), позволяющая проверить знания абитуриентов по широкому спектру дисциплин.
Из известных систем сертификационного тестирования, использующих тестирование по принципу "выбор одного правильного варианта из нескольких предложенных", назовем также Учебный центр по компьютерным технологиям "Микроинформ" (www. microinform. ru) Вопросы здесь иллюстрируются тщательно подобранными изображениями, существенно повышающими наглядность тестовых заданий. В ходе тестирования отслеживается ограничение на общее время прохождения теста и обязательное количество выполненных заданий.
В Интернете есть и образовательные сайты, использующие развитые тесты, в том числе анализирующие вводимый пользователем контекст. Так, сайт "Ликбез" (www. likbez. spb. ru) предлагает разнообразные упражнения и контрольные работы для проверки знания орфографии и пунктуации русского языка. Поддерживается интерактивная работа пользователя с упражнениями в режиме online с автоматической выдачей результатов тестирования. Предоставляется возможность просмотра правил русского языка, относящихся к теме выбранного теста. Проект носит некоммерческий образовательный характер; пользователями сайта могут быть школьники, абитуриенты, преподаватели русского языка, методисты, а также все, кто занимается самообразованием в области русского языка. Разработчики сайта из Петербургской компьютерной студии Март (www. mart. spb. ru) сделали систему проверки знаний "интеллектуальной" и близкой по функциональности программам, разрабатываемым для персональных компьютеров.
Обращает на себя внимание сервер бесплатного дистанционного образования (www. anriintern. com) предложениями к сотрудничеству и желанием создать виртуальный университет с широким спектром образовательных дисциплин. С сайта можно загрузить для дальнейшего автономного использования специальную программу для запоминания иностранных слов с большим количеством словарей с мультимедийным наполнением.
В Сети есть также большое количество информационных "текстовых" образовательных ресурсов. Это и отдельные книги, организованные в виде гипертекста, как, например, популярный учебник для начинающих пользователей сети Интернет (www. internetbook. ru), и целые библиотеки, такие как крупнейшая открытая коллекция текстов - библиотека Максима Мошкова (www. Iib. ru), обладающая возможностями полнотекстового поиска. Среди разнообразных материалов библиотеки имеются также и разделы учебной литературы как по вопросам информационных технологий и работы с ресурсами Интернета, так и по отдельным разделам науки.
Для поддержки дистанционного обучения используются следующие технологии: кейс-технология, TV-технология и сетевые технологии [4].
При кейс-технологии учебно-методические материалы комплектуются в специальный набор (кейс). Этот набор пересылается учащемуся для самостоятельного изучения. Общение с преподавателями-консультантами осуществляется в созданных для этих целей региональных учебных центрах. К данной группе может быть отнесена традиционная технология заочного обучения.
TV-технология основана на использовании телевизионных лекций.
К сетевым технологиям относится интернет-технология и технологии, использующие возможности локальных и глобальных вычислительных сетей.
В интернет-технологии "Всемирная паутина" используется для обеспечения учащихся учебно-методическим материалом, а также для интерактивного взаимодействия между преподавателем и обучаемыми. Данная технология имеет ряд существенных преимуществ перед другими. Она позволяет проходить обучение по индивидуальному расписанию, имея постоянный контакт как с преподавателем, так и с другими студентами и администрацией учебного центра. Возможность связи "многих-со-многими" является принципиальным отличием интернет-технологии от иных технологий дистанционного обучения: такое взаимодействие создает эффект "присутствия".
Интернет-технологии целесообразно рассматривать в сочетании с CD-ROM-технологиями.
Содержательная часть курсов может поставляться на компакт-дисках, что обеспечивает дешевизну и независимость от каналов связи. Интернет целесообразно использовать для обновления информации, тестирования и общения с обучаемыми. Описанный подход составляет основу - Web - CD - технологии (рисунок 1.2), в настоящее время наиболее перспективной, для технической поддержки дистанционного образования.
Рисунок 1.2 - Технология Web-CD
Для выяснения возможностей и ограничений дистанционного обучения проанализируем отдельные стадии обучения.
Мотивация. На успешность обучения большое влияние оказывают интересы, мотивы, ценностные установки и потребности индивидуума. Обучаемый должен иметь желание учиться и осознавать необходимость этого. Учебный процесс по своей природе целенаправлен, хотя и не исключает элементов случайности. Понимание целей и ожидаемых результатов в значительной степени облегчает восприятие новой учебной информации.
Организация. К числу организационных форм обучения относятся: лекции, практические, лабораторные, семинарские занятия, курсовое и дипломное проектирование, консультации и т.п. Одной из основных форм получения знаний является самостоятельная работа. Поэтому применение современных технических средств, особенно при "обучении на расстоянии", может иметь достаточно высокую эффективность, если учащийся имеет возможность оперативно получать рекомендации преподавателя, планы подготовки и сдачи зачетов и экзаменов, получать информацию о прохождении обучения партнерами по "виртуальной" учебной группе.
Понимание следует считать кульминацией учебного процесса. Она непосредственно связана с интеллектуальной деятельностью студентов и менее всего подвержена влиянию извне.
Стадия Понимание взаимосвязана с этапом Контроль и оценка, который зависит не только от интеллектуальной деятельности обучаемого, но и в значительной мере от возможности проверять знания в диалоге с опытным преподавателем. Разумеется, обучаемый должен убедиться, прежде всего, сам в том, что разобрался в изучаемом учебном материале, понял его, запомнил основные положения, научился применять их на практике для решения практических задач. С другой стороны, активная роль преподавателя не менее существенна, поскольку его задача не только убедиться в знаниях подопечного, но и - как при очном обучении - принять решение по корректировке программы обучения с тем, чтобы добиться наилучшего усвоения пройденного материала. К этапу Контроль и оценка относится также и итоговый контроль, в процессе которого должен быть объективно определен достигнутый обучаемым уровень знаний. Итоговый контроль в дистанционном обучении имеет специфический нюанс: обучающий должен быть уверен, что на другом конце телекоммуникационной цепочки находится именно тот человек, который претендует на получение не только определенных знаний, но и документа (диплома, свидетельства, удостоверения, сертификата) об освоении образовательной программы. Здесь имеются трудности, которые могут быть преодолены только за счет проведения контрольных испытаний обучаемого в специально подготовленных учебных помещениях в присутствии сертифицированных сотрудников и администрации учебного центра.
Эта проблема имеет место только в случае, когда по итогам обучения учащийся получает официальный документ, свидетельствующий о приобретенной квалификации. Если речь идет о системах, которые позволяют получить знания, но степень их усвоения остается заботой учащегося, вопросов об идентификации не возникает.
Стадия Повторение предназначена для закрепления полученных обучаемым знаний и умений, доведения их до уровня навыков и опыта творческой деятельности. Этой же цели, но на более высоком уровне, служит стадия Обобщение.
И на стадии Повторение, и тем более на стадии Обобщение, желательно активное общение обучающего с обучаемым. Это наиболее творческая для обучающего и наиболее результативная для обучаемого часть учебного процесса. Использование на этих стадиях средств дистанционного обучения, в принципе, возможно, но, как показывает опыт, может быть не столь эффективно, как при очном общении.
Любое обучение требует определенной организационно-информационной поддержки [3]. Составляющими дистанционного образования являются:
Учебный центр (учебное заведение), осуществляющий необходимые функции организационной поддержки, также именуемый как провайдер дистанционного обучения;
Информационные ресурсы - учебные курсы, справочные, методические и другие материалы;
Средства обеспечения технологии дистанционного обучения (организационные, технические, программные и др.);
Преподаватели-консультанты, курирующие дистанционные курсы.
Обучающиеся, по-прежнему называемые студентами.
Для организации и правильного функционирования системы дистанционного образования необходимо выполнять следующие основные функции:
поддержка учебных курсов;
доставка учебного материала студентам;
поддержка справочных материалов (библиотека);
консультации;
контроль знаний;
организация общения студентов (коллективные формы обучения).
Составляющими дистанционного учебного курса являются:
информационные ресурсы;
средства общения;
система тестирования;
система администрирования.
Информационные ресурсы. В них сосредоточена содержательная часть:
дополнительные информационные материалы (комментарии преподавателя, ответы на часто задаваемые вопросы и т.п.);
учебный материал (конспекты лекций, демонстрационные материалы и т.п.);
библиотеку ресурсов (рекомендованная литература, списки Web-ресурсов по теме курса и т.п.);
предметный и/или тематический словарь (глоссарий);
программу обучения (академический календарь); и т.д.
Средства общения. Средства общения обеспечивают процесс взаимодействия обучаемого как с учебным центром, с преподавателем и с другими обучающимися.
Традиционно здесь выделяются электронная почта e-mail (особенно рассылки), доски объявлений, виртуальные конференции, видео - и аудиотрансляции, виртуальные семинары и обсуждения.
Базовые механизмы, за счет которых можно организовать эффективные средства общения, условно разделяют на асинхронные и синхронные, которые получили название offline и online соответственно.
Асинхронные средства не требуют у обменивающихся сторон постоянного соединения. К таким средствам можно отнести: e-mail и построенные на основе e-mail автоматические рассылки (так называемые mail-lists), доски объявлений типа Bulletin Board System (BBS), offline-конференции типа "эхо" FidoNet и т.п. Необходимо отметить, что с развитием телекоммуникаций роль таких средств снижается.
Синхронные средства предполагают одновременные согласованные действия сторон - один говорит, другой слушает в то же самое время.
Все online-средства предполагают наличие прямого выхода в Интернет и базируются на сервисах, существующих в сети Интернет.
Распространенным средством являются чаты.
Распространены средства общения, как ICQ и NetMeeting, позволяющих вести общение между двумя абонентами и даже устраивать псевдо-"конференц-связь".
Становятся все более популярными интернет-трансляции видео - и аудиоматериалов и интернет-телефония.
В таблице 1.1 приведены некоторые типы взаимодействия и средства, которыми их можно обеспечить.
Таблица 1.1 Типы взаимодействия и средства общения
Типы взаимодействия
|
Средства общения
|
Online
|
Offline
|
Общение студента с преподавателем-консультантом
|
chat
|
e - mail
|
Общение со студентами группы
|
chat
|
mail - list
|
Систематические семинары по темам курса
|
online - конференции
|
-------
|
Конференции по темам курса
|
online - конференции
|
offnline - конференции
|
Общение с администратором-консультантом
|
chat
|
e - mail
|
Общение с группой технической поддержки
|
chat
|
e - mail
|
Важно заметить, что большинство типовых средств общения можно организовать, не имея постоянного online-доступа к сети Интернет, используя временный.
На этом основании можно сделать следующий вывод. При правильной организации системы дистанционного обучения и технических средств поддержки отсутствие доступа к сети Интернет не может служить причиной отказа от использования дистанционного обучения. Пример традиционной заочной формы обучения показывает, что дистанционное обучение может обеспечиваться вообще без использования средств телекоммуникаций. При наличии хотя бы каких-то offline-каналов имеется возможность полноценного (до 90%) использования дистанционных курсов.
Система тестирования. Система тестирования должна обеспечивать текущий контроль знаний, а на завершающей стадии дать объективную оценку обучаемого, на основании которой происходит выдача дипломов, сертификатов. Здесь очень важен вопрос о защите данных и средствах идентификации и аутентификации обучаемого, не допускающих подмены и искажения результатов тестирования. Система тестирования включает:
средства обработки результатов тестирования;
интерактивные тесты;
график прохождения тестов.
Система администрирования. Система администрирования обеспечивает доступ к личному делу, доске объявлений администрации, интерактивным анкетам и пр.
Путь, который проходит создатель дистанционных курсов, с нуля до завершения работ:
Выбор среды разработки дистанционных курсов.
Создание дистанционных курсов в выбранной среде разработки дистанционных курсов.
Ведение и сопровождение курсов после их разработки.
На мировом рынке имеется большой выбор программных продуктов, позволяющих обеспечивать весь цикл разработки учебных материалов и управления процессом дистанционного обучения.
Quest - система проектирования и поддержки курсов фирмы Allen (www. allencomm. com). Это модульная система. Стартовый модуль стоит $995; дополнение до полного Quest - еще столько же. Имеется много других вспомогательных модулей.
WebCourse in a Box - система дистанционного обучения через Интернет университета штата Айдахо создана система дистанционного обучения через Интернет (www. madduck. com). Система поддерживает весь жизненный технологический цикл курса дистанционного обучения. WebCourse in a Box существует в двух вариантах - для UNIX (на языке Perl 5.002) и для Windows NT (только для Web-сервера Microsoft IIS). Предпоследняя версия - бесплатная; последняя предоставляется формально бесплатно, но лишь после заключения договора о поддержке (минимальная стоимость $3 000).
В университете штата Нью-Йорк по одному из проектов, финансируемых Министерством обороны, создана инструментальная система поддержки совместной деятельности Tango (www. npac. syr. edu/tango), на базе которой разработана система дистанционного обучения. Система Tango написана на языке Java, использует специальные протоколы с памятью и имеет надежную подсистему идентификации пользователя.
Virtual-U [5] (vlei. cs. sfu. ca) - система, поддерживающая весь жизненный технологический цикл курса дистанционного обучения, создана небольшой группой сотрудников канадского университета Саймона Фрезера, написана полностью на языке Perl, эксплуатируется многими организациями по всему миру (больше всего, конечно, в Канаде). Некоторые организации даже предлагают любому преподавателю из любого конца Земного шара подготовить и провести курс дистанционного обучения любой дисциплине. Можно бесплатно попробовать проектирование курса и управление курсом через Интернет, можно получить, установить (требуется операционная система Sun Solaris 2.5) и 5 месяцев эксплуатировать Virtual-U бесплатно для неограниченного числа слушателей. Предполагается, что этого времени должно хватить на разработку и апробацию курса. За дальнейшее использование Virtual-U придется платить
Lotus LearningSpace [6] фирмы Lotus Development (www. lotus. ru). Концептуально процесс подготовки учебного курса в Lotus LearningSpace состоит в формировании документа в развитом редакторе и последующей публикации его, осуществляемой простым перетаскиванием в папку опубликованных документов.
Эта развитая среда обладает всеми возможностями для создания полнофункциональных мультимедийных учебных курсов, систем тестирования, администрирования учебным процессом, организации взаимодействия филиалов учебных центров и пр.
Структура лицензирования LearningSpace следующая: отдельно лицензируется сервер LearningSpace (ориентировочная стоимость около $7 000) и обучающиеся (стоимость для каждого пользователя около $40). Для учебных заведений существуют скидки.
ОРОКС (старое название WEB-Tester) [7], разрабатывается Московским Областным Центром Новых Информационных Технологий (МОЦНИТ) (mcserv. mocnit. zgrad. su) при Московском государственном институте электронной техники (МИЭТ).
Программный комплекс ОРОКС является многофункциональной сетевой оболочкой для создания учебно-методических модулей и организации обучения с удаленным доступом. Она реализована с использованием WWW CGI-технологии. Системы, созданные на основе ОРОКС, позволяют осуществлять:
обучение и удаленный контроль знаний через интранет и Интернет;
интерактивную связь преподавателя с обучаемыми;
тестирование и распределенный по времени контроль обучаемых;
ведение баз данных по учебным курсам и обучаемым;
авторизацию категории уровня пользователя системы: администратор, автор, обучаемый и т.д.
С помощью ОРОКСа можно создавать электронные учебно-методические пособия, обучающе-контролирующие системы; системы тестирования и контроля
Основными направлениями использования ОРОКС в МИЭТ являются:
учебный процесс;
вступительное тестирование абитуриентов;
система дистанционного обучения МИЭТ;
организация взаимодействия с региональными центрами новых информационных технологий.
Отличительные особенности системы:
простота функциональных возможностей системы для всех категорий пользователей; отсутствие необходимости изучения специальных программ; удобство, единообразие интерфейса;
сочетание в одной оболочке возможностей оперативного создания учебно-методических модулей, проведения обучения и управления учебным процессом;
большой объем базы данных для хранящихся учебных модулей и результатов контроля обучения на сервере системы;
неприхотливость в отношении используемого "железа" и программного обеспечения;
централизованность и устойчивость к взлому;
дешевизна. Все инструменты, использованные при создании системы ОРОКС, являются свободно распространяемыми (SQL-сервер MySQL, Standard Perl 5, Apache Web Server).
К достоинствам системы можно отнести:
возможности разработки и использования групповых и индивидуальных учебных планов пользователей;
наличие взаимозаменяемых типов интерфейса и дизайна системы (предлагаются три варианта, но можно создать новые);
настраиваемое меню с возможностью добавления новых пунктов;
встроенная поисковая система;
наличие защищенного каталога электронных учебных пособий.
С сайта ОРОКСа можно переписать демонстрационные версии этой оболочки, а также устанавливаемую на компьютер пользователя автономную систему разработки тестов.
ПРОМЕТЕЙ (www. prometeus. ru) [8] - позволяет создавать мультимедийные дистанционные курсы, которые могут распространяться также и на компакт-дисках, Система дистанционного обучения Прометей - программная оболочка, обеспечивающая возможности дистанционного обучения и тестирования слушателей, а также имеющая необходимые средства для управления деятельностью виртуального учебного заведения. Система Прометей имеет модульную архитектуру, поэтому легко расширяется, модернизируется и масштабируется. Система состоит из модулей:
Типовой Web-узел - набор HTML-страниц, предоставляющих информацию об учебном центре, списке курсов и дисциплин, списке тьюторов в Интернете или интранете организации.
АРМ (Автоматизированное Рабочее Место) Администратор - обеспечивает выполнение администратором своих служебных обязанностей. К ним относятся: управление системой, разграничение прав доступа к ее компонентам, регистрация новых тьюторов и организаторов. Пользователь может работать с любого клиентского компьютера, подключенного к сети.
АРМ Организатор - обеспечивает выполнение организатором своих служебных обязанностей. К ним относятся: формирование групп, регистрация слушателей, контроль над оплатой обучения и рассылкой учебных материалов. Пользователь может работать с любого клиентского компьютера, подключенного к сети.
АРМ Тьютор - обеспечивает консультирование слушателей, контроль за их успеваемостью, тестирование, простановку оценок в зачетную книжку, формирование отчетов руководству. Пользователь может работать с любого клиентского компьютера, подключенного к сети.
АРМ Слушатель - обеспечивает слушателя всеми необходимыми средствами для успешного изучения курса. Слушатель может общаться с тьютором и коллегами, изучать электронные версии курсов, выполнять лабораторные работы, сдавать тесты, работать над ошибками. Пользователь может работать с любого клиентского компьютера, подключенного к сети.
Трекинг - фиксирует в базе данных все обращения к информационным материалам, расположенным на Web-сервере учебного центра, и отчет о том, кто, когда и что читал или просматривал.
Курс - обеспечивает доступ к курсам со стороны слушателей, тьюторов, организаторов и администратора. Для каждого пользователя список курсов формируется динамически на основании его членства в группах.
Регистрация - регистрирует новых слушателей в системе и вносит информацию о них в базу данных.
Тест - формирует для каждого слушателя уникальное тестовое задание. Сохраняет ответы на вопросы в базе данных, анализирует их и подсчитывает набранный балл. Генерирует подробный отчет о прохождении теста и сохраняет его на сервере для последующего анализа.
Дизайнер тестов - позволяет в интерактивном режиме создавать новые тесты, расширять и изменять существующие или импортировать тест из текстового файла. Пользователь может работать с любого клиентского компьютера, подключенного к сети. Дизайнер тестов - компонент, выполненный по технологии ASP и устанавливаемый на сервере СДО во время инсталляции комплекса. Предназначен для ввода новых и модификации имеющихся тестовых заданий. Это высокоуровневое программное средство с простым графическим интерфейсом, которое позволяет создавать тесты, используя четыре различных формы вопросов:
"один-из-многих" - слушатель должен выбрать из нескольких вариантов ответа один (правильный);
"многие-из-многих" - нужно выбрать один или несколько вариантов ответов, которые удовлетворяют условиям вопросов;
"да/нет/не знаю" - часто используемый вариант теста первого типа;
"поле ввода" - ответ набирается слушателем в произвольной текстовой форме.
Учет - обеспечивает контроль над поступлением платежей и рассылкой учебных материалов.
Отчеты - формирует разнообразные отчеты о деятельности учебного заведения.
Дизайнер курсов - позволяет в автономном режиме создавать мультимедийные дистанционные учебные курсы с их последующим размещением на сервере учебного центра. Программа ориентирована на пользователя, неискушенного в премудростях информационных технологий, и представляет собой отдельную программу, устанавливаемую на локальный компьютер. Подключение этого компьютера к сети не обязательно.
После предварительной регистрации посетителю сайта предоставляется возможность загрузить демонстрационную версию дизайнера курсов, а также воспользоваться тестовым входом и познакомиться с системой в режимах студента, тьютора и организатора на примере демонстрационного курса.
Distance Learning Studio (www. studium. spb. ru) - инструментальное средство для создания мультимедийных учебных курсов, приспособленных для использования в системах дистанционного обучения Российского сегмента сети Интернет. В основе подхода к дистанционному обучению лежат две взаимодополняющие друг друга части - "Конструктор мультимедийных дистанционных курсов" и "Учебный центр", выполненные по технологии Web-CD.
"Конструктор мультимедийных дистанционных курсов" - программа для создания преподавателем-непрофессионалом в области компьютерных технологий собственных учебных курсов, размещаемых на CD-ROM. Структура каждого из курсов включает следующие основные разделы:
лекции, представленные в мультимедийной форме;
тесты, предназначенные для самооценки знаний;
словарь, представляющий собой иллюстрированное толкование ключевых терминов учебного материала;
поиск - встроенная система полнотекстового поиска по материалам курса;
связь с Учебным центром, на котором размещаются обновления и дополнения к курсу.
Учебный центр - сервер, выполняющий сопровождение учебных курсов, поддержку регистрации учащихся, расписания обучения, удаленного тестирования обучаемых, электронной зачетки и ведомости успеваемости, обновлений основного мультимедийного учебного материала проведения дистанционных семинаров и занятий, включая интернет-трансляцию. Предполагается, что Учебные центры могут обмениваться информацией, используя XML-формат документов. В этих форматах, в частности, представлены учебные программы курсов и наборы тестов.
К настоящему времени функционирует единственный сервер (www. studium. spb. ru), который является Учебным центром для пилотных учебных курсов, разработанных на этапе пробной эксплуатации Конструктора.
Для самостоятельных систем дистанционного обучения различных учебных заведений предназначена отчуждаемая версия "Учебного центра". Эта версия предполагает не только поддержку дистанционных курсов в рамках существующих решений, но и дополнительно позволит взаимодействовать курсам на различных серверах - обмениваться наборами тестов, учебными программами, приглашать для ведения дистанционного обучения преподавателей других учебных центров, синхронизировать расписания обучения и ряд других сервисов.
В таблице 1.2 приведены основные свойства различных систем дистанционного обучения.
Таблица 1.2 Основные свойства различных систем дистанционного обучения.
Название
|
Технология
|
Язык
|
Основные свойства
|
ОРОКС (www. mocnit. zgrad. su)
|
Интернет
|
Русский
|
Тесты (выбор вариантов, заполнение формы по логическому шаблону, по ключевым словам, по иным алгоритмам). Индивидуальное расписание занятий. Контрольные работы (проверяются вручную преподавателем). Сообщения между участниками обучения.
|
ПРОМЕТЕЙ (www. prometeus. ru)
|
Интернет
|
Русский
|
Тесты (выбор одного варианта ответа из нескольких, выбор нескольких вариантов ответа из нескольких, свободный ответ). Разнообразные средства общения между слушателями и преподавателем: электронная почта; дискуссионный клуб (телеконференция); круглый стол (чат); аудио/видеоконференция
|
Distance Learning Studio
(www. studium. spb. ru)
|
Web-CD-техно-логия
|
Русский
Английский
|
Тесты (выбор вариантов, ввод текста, соответствие). Контрольные работы. Индивидуальное расписание, доски объявлений, дискуссия (чат), видеолекции, трансляции с монитора преподавателя Поддержка групповой работы пользователей и серверов на основе обмена данными в формате XML. Возможность управления дизайном курса и сервера. Библиотека электронной литературы
|
Процесс любой разработки начинается с четкого понимания цели разработки и определения задач, решение которых обеспечивает достижение цели [9]. Сформулируем некоторые из них:
1. Индивидуализация обучения - сводится к потенциальной возможности улучшить качество обучения за счет учета индивидуальных особенностей обучаемых по отношению к среднестатистическим студентам. К особенностям обучаемых относят: уровень начальной подготовки, скорость восприятия информации, предпочтительные формы подачи информации, объем и глубину материала, мотивацию к обучению, предметную область, склонность к групповой работе и ряд других.
2. Персонализация учебного процесса - обучение не в рамках учебной группы, где процесс обучения, так или иначе, синхронизирован между студентами (все работают по единому графику), а обучение студентов по индивидуальному графику. Причем этот график может оперативно изменяться в соответствии с текущей занятостью учащегося и его темпом восприятия информации.
3. Интенсификация или изменение характера преподавательского ресурса - как преподавателю экономить свое время? Как привлечь преподавателей из других вузов, предоставив им льготные условия работы? При такой постановке вопроса дистанционное обучение едва ли не единственный выход из ситуации, к сожалению, наталкивающийся на естественный консерватизм как административного, так и педагогического персонала.
4. Увеличение эффективности (качества) обучения при использовании новых принципов, приемов и технических средств, к числу которых относится и доступ к нетрадиционным учебным материалам посредством CD, Интернета и т.п.
5. Сохранение и тиражирование педагогического опыта знаний и методики преподавания - уникальные авторские учебные курсы, носителями которых являются преподаватели, исчезают со временем в никуда только потому, что не записываются на пленку, и вообще не архивируются
6. Удешевление компонентов учебного процесса - достигается за счет электронной, а не полиграфической публикации учебных материалов. Эта цель при наличии существующих сервисов типа e-mail или http вполне и легко может быть осуществлена.
Задачи, в отличие от целей, решаются по мере их внедрения. Очередность решения задач определяется целью внедрения, существующей инфраструктурой, оборудованием и бюджетом. Кратко рассмотрим их.
1. Соответствие традиционным формам обучения, принятым в учебном заведении - в какой степени изменения коснутся существующей организации учебного процесса и деятельности преподавателей. Систему организации и контроля самостоятельной работы студентов можно рассматривать не как независимую альтернативную систему обучения, а как дополняющую традиционную, позволяющую оптимизировать учебный процесс с точки зрения нагрузки преподавателя. В этом случае такие неотъемлемые компоненты учебного процесса, как учебная часть или деканат, окажутся вторичными по отношению к информационным ресурсам, средствам общения и системе тестирования.
2. Организация доставки учебного материала обучаемому в форме мультимедийной и интерактивной с использованием Интернет и компакт-дисков.
3. Сертификация знаний, существующая в традиционном учебном процессе в виде контрольных зачетов и экзаменов, реализуется в системах дистанционного обучения интерактивными тестами, результаты которых обрабатываются автоматически. Существуют и другие виды организации контроля и сертификации знаний, как-то: контрольные работы и экзамены, выполняемые учащимися в режимах offline. В этом случае осуществляется организация обратной доставки материала от обучаемого к преподавателю. Здесь основной критической точкой является не столько организация самой доставки (существует достаточное количество технических средств и отработанных решений в этой области), сколько обеспечение достоверности того, что полученные преподавателем от учащегося материалы действительно подготовлены этим учащимся без посторонней помощи. На сегодня ни одно из дистанционных средств не обеспечивает стопроцентной гарантии этого. Решение данной задачи - основная проблема, с которой сталкиваются при внедрении системы дистанционного обучения.
3. Организация обратной связи с учащимися в ходе обучения для сопровождения (помощи) учащихся в ходе учебного процесса. Суть такого сопровождения - оперативная корректировка учебного процесса и его индивидуализация.
4. Проведение учебного процесса. В этом случае следовало бы говорить о решении задачи гибкости системы организации и контроля самостоятельной работы студентов, как в целом, так и отдельных ее компонентов по отношению к участникам (субъектам) учебного процесса: студентам, преподавателям, администрации. Каждый из них предъявляет к системе организации и контроля самостоятельной работы студентов свои собственные, зачастую противоречивые требования.
Студенты могут предъявлять (возможно, неявно) требования к форме представления и характеру материала, к глубине проработки и скорости изучения материала, к частоте и характеру взаимодействия с преподавателем. Преподаватель желал бы видоизменить отдельные части учебного курса в соответствии со своими, авторскими представлениями о характере материала, его актуальности и пр.
Администрации же требуется наличие статистики учебного процесса, отслеживания успеваемости, качества преподавания и обучения. Этим не исчерпываются задачи, возникающие при проведении учебного процесса.
Для достижения поставленной цели и решения рассмотренных задач вполне подходят все рассмотренные выше зарубежные и отечественные средства создания дистанционных курсов на базе Интернет-технологий. Но какова цена вопроса:
Зарубежные средства создания дистанционных курсов - дорогостоящие или подразумевают дорогостоящую техническую поддержку фирмы-производителя системы.
Большинство систем не обеспечивают поддержку всей технологической цепочки создания и сопровождения (так называемого жизненного цикла) дистанционного обучения.
Многие системы ориентированы на использование только интернет-технологии для реализации всех компонентов дистанционного курса.
Многие системы подразумевают, что службы "Учебного центра" могут быть размещены только на серверах фирм-производителей систем, что делает разрабатываемые дистанционные курсы зависимыми от состояния этих фирм и их политики.
В России в настоящее время не существует совершенных систем, обеспечивающих доступ к полнотекстовым информационно-справочным материалам учебного назначения, а соответственно, и возможности обучения через Интернет.
Поэтому было принято решение о разработке веб-сайт преподавателя для организации и контроля самостоятельной работы студентов с целью решения поставленных задач и достижения цели при минимизации связанных с этим процессом затрат.
Дистанционное обучение с использованием информационных технологий можно охарактеризовать как форму заочного обучения, в которой недостаток очного общения преподавателя и студента компенсируется возможностью сделать это посредством телекоммуникаций. В развернутом описании дистанционное образование - комплекс образовательных услуг, предоставляемых с помощью специализированной информационной образовательной среды, базирующейся на средствах обмена учебной информацией на расстоянии (спутниковое телевидение, радио, компьютерные сети и т.п.). Это и есть информационно-образовательная среда, представляющая собой совокупность средств приема и передачи данных, информационных ресурсов, протоколов взаимодействия, аппаратно-программного и организационно-методического обеспечения, получаемая пользователем в виде дистанционного курса.
Составляющими дистанционного учебного курса являются:
информационные ресурсы;
средства общения;
система тестирования;
система администрирования.
Информационные ресурсы. Важнейшим компонентам дистанционного курса являются информационные ресурсы, так как в них сосредоточена содержательная часть, которая включает:
Учебный материал (конспекты лекций, демонстрационные материалы, и т.п.);
Дополнительные информационные материалы (комментарии преподавателя, ответы на часто задаваемые вопросы и т.п.);
Библиотеку ресурсов (рекомендуемая литература, списки веб- ресурсов по теме курса и т.п.);
Предметный и/или тематический словарь (глоссарий);
Программу обучения (академический календарь);
Средства общения. Средства общения обеспечивает процесс взаимодействия обучаемого как с учебным центром, в частности с преподавателем, так и с другими обучающимися.
Один из важнейших вопросов - организация эффективных средств общения, не только компенсирующих отсутствие непосредственного контакта преподавателей и студентов между собой, но и, по возможности, придающих новые качества их общению.
Традиционно здесь выделяются электронная почта (особенно рассылка), доски объявлений, виртуальные конференции, видео и аудио трансляции, виртуальные семинары и обсуждения.
Базовые механизмы, за счет которых можно организовать эффективные средства общения, условно разделяются на асинхронные и синхронные, которые получили название offline и online соответственно.
Система тестирования. Система тестирования должна обеспечивать текущий контроль знаний, а на завершающей стадии дать объективную оценку обучаемого, на основании которой происходит выдача дипломов, сертификатов и пр. здесь важен вопрос о защите данных и средств идентификации и аутентификации обучаемого, не допускающих подмены и искажения результатов тестирования. Система тестирования включает:
Средства обработки результатов тестирования;
Интерактивные тесты;
График прохождения тестов.
Система администрирования. Система администрирования обеспечивает доступ к личному делу, доске объявлений администрации, интерактивным анкетам и пр.
В соответствии с этой структурой предложены составляющие организации учебного процесса, которые следует включить для использования в процессе дистанционного обучения.
Студенты смогут узнать о новостях с сайта кафедры, прочитать объявления о конференциях, выставках, собраниях, уточнить даты сессий, консультаций, государственных экзаменов. Будут выложены все методические пособия и указания по каждому предмету, задания на контрольные работы, расчетные задания, вопросы к зачетам и экзаменам.
По каждому предмету каждым преподавателем должны быть разработаны курсы лекций в электронной форме и удобной для понимания, с возможностью возврата к неусвоенному материалу. Кроме того, следует подготовить пакеты тестовых программ для зачетного контроля и самоконтроля. Полученные результаты регистрируются в базе данных и в дальнейшем могут учитываться преподавателями при проставлении итоговой оценки по предмету. Для возможности оперативного доступа, в исключительных случаях, можно сделать доступной информацию о каждом преподавателе кафедры.
Типовая структура учебного процесса представлена на рисунке 1.3 [10]:
Рисунок 1.3 - Структура учебного процесса
Рисунок 1.4 - Предполагаемая схема взаимодействия студента и преподавателя в процессе дистанционного обучения.
Студенты могут обратиться на сайт дистанционного обучения (рисунок 1.4), где располагается информация, необходимая для учебного процесса. Регулярное обновление пособий для самостоятельного освоения и тестовых программ на сайте осуществляется преподавателем через службу дистанционного образования. При возникновении вопросов студенты могут обратиться либо к секретарю службы дистанционного образования, либо к любому преподавателю кафедры по электронной почте. Преподаватель или секретарь службы дистанционного обучения вышлет ответ на вопрос или резюме на проверенную контрольную, реферат.
Необходимо предусмотреть регистрацию всех входящих по фамилии, группе, номеру зачетной книжки; реализовать возможность гостевого посещения сайта дистанционного обучения.
Следует большое внимание уделить проблеме защиты информации от взлома и несанкционированного доступа. Для координации работы, поддержания высокой надёжности и готовности необходимо создание отдельной службы дистанционного обучения. Желательно обеспечить более активное участие ведущих преподавателей кафедры в процессе информационного наполнения и динамического функционирования сайта дистанционного обучения. Достаточно остро стоит проблема адекватной оценки знаний студента в процессе дистанционной сдачи зачетов или экзаменов.
Необходимо разработать систему, функционирующую в качестве веб-приложения. Приложение должно быть написано на языке веб-программирования PHP. Его взаимодействие с базой данных MySQL организовать средствами веб-сервера Apache. Приложение предполагает обучение и тестирование студентов с использованием дистанционных методов, интерактивное общение студентов и преподавателя, а также представление различной информации для студентов. Необходимо обеспечить возможность получения доступа к веб-сайту с любого клиентского компьютера с установленным браузером.
Простой, удобный в навигации, интуитивно понятный студенту веб-интерфейс, основанный на системе подменю.
Разграничение пользовательской и административной части программного комплекса.
Необходимо обеспечить возможность однократной регистрации студентов-пользователей в системе. При повторной попытке регистрации выводится ошибка.
Зарегистрированный пользователь должен иметь возможность беспрепятственного входа в систему с использованием индивидуальных уникальных логина и пароля.
Обучение по каждой отдельной дисциплине (курсу) происходит индивидуально. Количество одновременно изучаемых дисциплин ограничено только наличием их в системе. Если студент полностью прошел обучение по отдельной дисциплине или "завалил" контрольный тест, он получает возможность регистрации другой.
Система должна обеспечивать изучение учебных материалов поэтапно и возможность промежуточного контроля студента. Итоговый контроль полученных знаний должен осуществляться при личном контакте студента и преподавателя.
Необходимо ограничить число возможных попыток прохождения каждого теста. Для сдачи теста студент предпринимает две попытки. Результаты тестирования хранятся в базе данных на сервере.
Все личные параметры студентов, в том числе названия изучаемых дисциплин, результаты прохождения тестов, а также данные для тестирования находятся на веб-сервере. Права доступа на изменение данных, удаление и просмотр есть только у администратора.
Все скрипты программы тестирования находятся и выполняются на веб-сервере и доступ к ним ограничен. Пользователь получает страницы содержащие только HTML-код. Реализовать эту возможность средствами языка PHP.
В качестве программного обеспечения, выбранного для разработки системы выбраны: средство разработки веб-узлов Macromedia Dreamweaver MX, веб-сервер Apache, язык веб-программирования PHP и сервер баз данных MySQL.
Основываясь на выборе интернет-технологии дистанционного обучения можно также сформулировать дополнительные требования к веб-сайту [11]:
Простота в освоении, требующая знаний и умений на уровне пользователя компьютера среднего уровня.
Открытость программного кода.
Отсутствие необходимости установки дополнительных программ для функционирования созданного продукта.
Веб-совместимость (совместимость с различными браузерами).
Модификация веб-приложения с незначительными финансовыми и трудовыми затратами.
Незначительный объем (компактность).
Обеспечение полного цикла самостоятельной работы с создаваемым web-приложением.
Обеспечение "на выходе" готового продукта, не требующего специальной доработки, но имеющего такую возможность, и пригодного к включению в образовательный процесс.
Может быть выбрана любая удобная форма представления материала студентам. Это могут быть фотографии, графики, рисунки, текст, видеофрагменты и т.д. Все это может быть расположено на странице в произвольной форме. Когда речь идет о чтении и рассмотрении материала с целью его понимания и запоминания необходимо выработать единую концепцию оформления документов [12].
При дистанционном обучении содержание документов должно преобладать над формой его представления. Форма документов должна быть строгой. Страница не должна содержать лишней информации (графической или текстовой), которая могла бы отвлечь внимание читающего.
Все учебные материалы должны быть четко структурированы и должны предоставлять возможность интерактивного поиска среди них. Учебные материалы могут передаваться лицу, заинтересованному в их изучении, любым способом. Это может быть и непосредственная загрузка и чтение документа с веб-сервера, и передача архива документов для просмотра программой-клиентом без подключения к Интернет, а также другими способами, которые будут обусловлены методикой учебного процесса.
2.1
Построение инфологической модели предметной области
Инфологическая модель предметной области - это описание предметной области, выполненное с использованием специальных языковых средств, не зависящих от использования в дальнейшем программных средств. Требования к инфологической модели:
адекватность отображения предметной области;
непротиворечивость;
отражение потребности всех пользователей будущей информационной системы;
допущение возможных расширений модели, а также при большой размерности инфологической модели - композиции и декомпозиции;
желательно применение языка описания предметной области как при ручном, так и при автоматизированном проектировании;
легкость восприятия разными категориями пользователей.
Инфологическая модель является ядром системы проектирования. Она содержит всю необходимую информацию для проектирования приложения. Инфологическая модель предметной области представлена в приложении А.
Для описания инфологической модели данных можно выделить десять объектов, которые участвуют в обработке информации: "Студенты", "Результаты тестов", "Дисциплины", "Вопросы тестов", "Ответы на вопросы тестов", "Записи гостевой книги", "Сообщения чата", "Запрещенные IP - адреса", "Балы для тестов", "Товары", "Заказчики" и "Заказы". Каждый объект обладает своими свойствами.
Объект "Студенты" включает в себя данные о студентах зарегистрированных в системе. Он обладает свойствами: Логин, Пароль, Фамилия, Имя, Дата последнего входа в систему, Адрес электронной почты, Шифр студента, Наименование факультета.
Объект "Дисциплины" включает в себя информацию о дисциплинах дистанционного обучения. Он обладает свойствами: Идентификатор дисциплины, Название дисциплины.
Объект "Результаты тестов" включает в себя информацию о результатах тестирования зарегистрированных студентов. Он обладает свойствами: Идентификатор теста, № студента, № дисциплины, Число попыток теста, Процент последнего результата теста, Дата последнего тестирования.
Объект "Вопросы тестов" содержит вопросы для тестов. Он обладает свойствами: Идентификатор вопроса, № дисциплины, Контекст вопроса.
Объект "Ответы на вопросы тестов" содержит ответы на вопросы тестов. Он обладает свойствами: Идентификатор ответа, № вопроса, Контекст ответа, Флаг правильного ответа.
Объект "Сообщения гостевой книги" содержит сообщения гостевой книги. Он обладает свойствами: Идентификатор сообщения, № студента, Контекст сообщения,
IP - адреса, Принадлежность к странице, Время записи.
Объект "Сообщения чата" содержит сообщения чата. Он обладает свойствами: Идентификатор сообщения, № студента, Контекст сообщения, IP - адрес, Время записи.
Объект "Запрещенные IP - адреса" содержит адреса с которых администратором запрещена запись сообщений гостевой книги и чата. Он обладает свойствами: Идентификатор адреса, Адрес, Принадлежность к гостевой книге или чату.
Объект "Баллы" содержит проценты, внесенные администратором, соответствующие определенным баллам. Он обладает свойствами: Бал, Процент.
Объект "Заказчики" включает в себя данные о заказчиках интернет-магазина. Он обладает свойствами: Идентификатор заказчика, Фамилия, Имя, Дата последнего входа в систему, Адрес электронной почты, адрес доставки, дата последнего заказа.
Объект "Товары" включает в себя данные о товарах интернет-магазина. Он обладает свойствами: Идентификатор товара, название, примечание, цена.
Объект "Заказы" включает в себя данные о заказах интернет-магазина. Он обладает свойствами: Идентификатор заказа, идентификатор товара, идентификатор заказчика, количество заказанного товара, время заказа и флаг выполнения заказа.
Объекты "Студенты" и "Результаты тестов" связаны между собой связью "Один-ко-многим".
Объекты "Студенты" и "Сообщения чата" связаны между собой связью "Один-ко-многим".
Объекты "Студенты" и "Сообщения гостевой книги" связаны между собой связью "Один-ко-многим".
Объекты "Дисциплины" и "Результаты тестов" связаны между собой связью "Один-ко-многим".
Объекты "Дисциплины" и "Вопросы тестов" связаны между собой связью "Один-ко-многим".
Объекты "Вопросы тестов" и "Ответы на вопросы" связаны между собой связью "Один-ко-многим".
Объекты "Заказчики" и "Заказы" связаны между собой связью "Один-ко-многим".
Объекты "Товары" и "Заказы" связаны между собой связью "Один-ко-многим".
Объекты "Баллы" и "Запрещенные IP - адреса" не связаны между собой и с другими объектами.
Рисунок 2.1 - инфологическая модель предметной области
На основании анализа предметно
й области и построенной инфологической модели разработана реляционная база данных "itn". (Рисунок 2.1) Для реляционной базы данных проектирование физической структуры заключается в том, чтобы разбить всю информацию по таблицам, а также определить состав полей
для каждой из этих таблиц и установить связи между таблицами.
Рисунок 2.1 - просмотр таблиц базы данных ITN с использованием программы phpMyAdmin
В каждой таблице присутствует уникальное идентификационное поле, которое позволяет однозначно идентифицировать запись таблицы. Такая структура исключает избыточность данных, позволяет ускорить отбор записей по условию, исключает вероятность конфликтов при совместной работе нескольких пользователей.
Одной из основных таблиц является таблица "students". В ней хранится вся информация о пользователях, зарегистрированных в системе. Таблица содержит поля - login - идентифицирующее студента при входе в систему. Password - пароль для доступа к подсистеме обучения. Пароль кодируется шифром md5, алгоритм которого реализован в языке PHP. Кодирование позволяет защитить пароль от просмотра заинтересованными пользователями. По этим двум параметрам осуществляется вход в систему.
Поле idstud хранит информацию о шифре студента и является уникальным идентификатором студента. Поле lastdate содержит дату последнего входа в систему, это поле заполняется автоматически текущей датой при успешной регистрации в системе. Поля: name, secondname, faculty,email - хранят данные о студенте.
Ключевым полем в таблице students является поле idstud. По полю idstud данная таблица связана с таблицей "results" связью "один-ко-многим", c таблицей "chatmessages" связью "один-ко-многим", c таблицей "guests" связью "один-ко-многим". Типы данных полей таблицы "students" представлены в таблице 2.1
Таблица 2.1 - Структура таблицы "students"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Шифр студента
|
idstud
|
char(10)
|
Ключевое UNIQUE
|
2
|
Имя
|
name
|
char(40)
|
NOT NULL
|
3
|
Фамилия
|
secondname
|
char(30)
|
NOT NULL
|
4
|
Факультет
|
faculty
|
char(30)
|
NOT NULL
|
5
|
Адрес электронной почты
|
email
|
char(128)
|
NOT NULL
|
6
|
Логин студента
|
login
|
char(16)
|
NOT NULL UNIQUE
|
7
|
Пароль
|
password
|
char(30)
|
NOT NULL
|
8
|
Дата регистрации в системе
|
lastdate
|
date
|
В таблице "subjects" хранится информация о дисциплинах дистанционного обучения. Ключевым полем в таблице является поле idsub. Таблица связана по полю idsub таблицей "questions" и с таблицей "results" связью "один-ко-многим".
Структура таблицы с описанием типов полей приведена в таблице 2.2
Таблица 2.2 - Структура таблицы "subjects"
№п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор дисциплины
|
idsub
|
int
|
Ключевое, AUTO_INCREMENT
|
2
|
Дисциплина
|
subject
|
Char(30)
|
NOT NULL
|
В таблице "questions" хранится информация о вопросах тестов. Ключевым полем в таблице "questions" является поле idques. Таблица связана по полю idques с таблицей "answers" связью "один-ко-многим".
Структура таблицы с описанием типов полей приведена в таблице 2.3
Таблица 2.3 - Структура таблицы "questions"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор вопроса
|
idques
|
int
|
Ключевое, AUTO_INCREMENT
|
2
|
Индентификатор дисциплины
|
idsubq
|
int
|
NOT NULL
|
3
|
Содержимое вопроса
|
quesmes
|
char (50)
|
NOT NULL
|
В таблице "answers" хранится информация о вариантах ответов на вопросы тестов. Ключевым полем в таблице является поле idans. Таблица связана по полю parent с таблицей "questions" связью "многие-к-одному". Структура таблицы с описанием типов полей приведена в таблице 2.4
Таблица 2.4 - Структура таблицы "answers"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор ответа
|
idans
|
int
|
Ключевое, AUTO_INCREMENT
|
2
|
Вопрос
|
parent
|
int
|
NOT NULL
|
3
|
Содержимое ответа
|
ansmes
|
char(255)
|
NOT NULL
|
4
|
Флаг правильного ответа
|
rightanswer
|
enum('1', '0')
|
NOT NULL,
DEFAULT '0'
|
В таблице "results" хранится информация о курсах, на которые зарегистрировались студенты. Ключевым полем в таблице "results" является поле idres. Таблица связана по полю idsubr с таблицей "subjects" связью "многие-к-одному", по полю idstudr с таблицей "students" связью "многие-к-одному". Поле count содержит число попыток студента пройти тест. В поле posted заносится дата последней попытки прохождения теста. Структура таблицы с описанием типов полей приведена в таблице 2.5
Таблица 2.5 - Структура таблицы "results"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор результата студента
|
idres
|
int
|
Ключевое, AUTO_INCREMENT
|
2
|
Шифр студента
|
idstudr
|
int
|
NOT NULL
|
3
|
Дисциплина
|
idsubr
|
int
|
NOT NULL
|
4
|
Результат
|
score
|
byte
|
NOT NULL
|
5
|
Дата записи
|
posted
|
date
|
6
|
Количество попыток студента
|
count
|
tinyint
|
В таблице "chatmessages" хранится информация о тестах пройденных студентами. Ключевым полем в таблице "chatmessages" является поле idchmes. Таблица связана по полю idstudc с таблицей "students" связью "многие-к-одному". Структура таблицы с описанием типов полей приведена в таблице 2.6.
Таблица 2.6- Структура таблицы "chatmessages"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор сообщения чата
|
idchmes
|
int
|
Ключевое,
AUTO_INCREMENT
|
2
|
Индентификатор студента
|
idstudc
|
int
|
NOT NULL
|
3
|
Сообщение чата
|
message
|
Char(150)
|
NOT NULL
|
4
|
Адрес сообщения
|
ip
|
Char(15)
|
NOT NULL
|
5
|
Время и дата записи
|
time
|
date
|
В таблице "guests" хранятся записи гостевой книги. Ключевым полем в таблице "guests" является поле idguest. Таблица связана по полю idstudg с таблицей "students" связью "многие-к-одному". Поле page содержит информацию о принадлежности записи гостевой книги к определенной странице модуля сайта. Структура таблицы с описанием типов полей приведена в таблице 2.7
Таблица 2.7 - Структура таблицы "guests"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Идентификатор записи гостевой книги
|
idguest
|
int
|
Ключевое, AUTO_INCREMENT
|
2
|
Индентификатор студента
|
idstudg
|
int
|
NOT NULL
|
3
|
Запись гостевой книги
|
message
|
char(150)
|
NOT NULL
|
4
|
Адрес пользователя
|
ip
|
char(128)
|
NOT NULL
|
5
|
Время записи
|
time
|
char(128)
|
NOT NULL
|
6
|
Страница принадлежности
|
page
|
Char(30)
|
NOT NULL
|
В таблице "IPs" хранится информация о запрещенных администратором для записи ip - адресах. Ключевым полем в таблице "IPs" является поле idip. Поле sub определяет принадлежность запрещенного IP - адреса к гостевой книге или чату. Структура таблицы с описанием типов полей приведена в таблице 2.8
Таблица 2.8 - Структура таблицы "IPs"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Шифр IP - адреса
|
idip
|
int
|
Ключевое
|
2
|
IP - адрес
|
ip
|
Char(15)
|
NOT NULL
|
3
|
принадлежность
|
sub
|
Char(30)
|
NOT NULL
|
В таблице "bals" хранится информация о соотношении результата тестирования в процентах к оценке. Структура таблицы с описанием типов полей приведена в таблице 2.9
Таблица 2.9 - Структура таблицы "bals"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
Оценка в баллах
|
bal
|
tinyint
|
NOT NULL
|
2
|
Результат тестирования в процентах
|
percent
|
byte
|
NOT NULL
|
В таблице "cd" хранится информация о товарах представленных в интернет - магазине. Ключевым полем является поле idcd. По полю idcd данная таблица связана с таблицей zakaz связью "один-ко-многим" Структура таблицы с описанием типов полей приведена в таблице 2.10
Таблица 2.10 - Структура таблицы "cd"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
№ товара
|
idcd
|
int
|
Ключевое
|
2
|
Примечания
|
description
|
Char(150)
|
3
|
Цена
|
price
|
float
|
NOT NULL
|
В таблице "zakaz" хранится информация о заказах в интернет - магазине. Ключевым полем в таблице "zakaz" является поле idz. Таблица связана по полю idclienta с таблицей "shopclients" связью "многие-к-одному", по полю idcd с таблицей "cd" связью "многие-к-одному". Поле count содержит количество заказанного товара. В поле recdate заносится дата заказа. В поле flag_done хранится информация о статусе выполнения заказа. Структура таблицы с описанием типов полей приведена в таблице 2.11
Таблица 2.11 - Структура таблицы "zakaz"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
№ заказа
|
idz
|
int
|
Ключевое
|
2
|
№ клиента
|
idclienta
|
int
|
NOT NULL
|
3
|
№ товара
|
idcd
|
int
|
NOT NULL
|
4
|
Количество товара
|
count
|
tinyint
|
NOT NULL, DEFAULT 0
|
Продолжение таблицы 2.11
|
5
|
Время заказа
|
recdate
|
date
|
NOT NULL
|
6
|
Флаг выполнения
|
flag_done
|
enum('y', 'n')
|
DEFAULT 'n'
|
В таблице "shopclients" вся информация о пользователях, заказавших товар в интернет - магазине. Поля: name, sname, email, address, fhone - хранят данные о заказчике. Поле lastdate содержит дату последнего заказа клиента.
Ключевым полем в таблице shopclients является поле idclient. По полю idclient данная таблица связана с таблицей "zakaz" связью "один-ко-многим". Типы данных полей таблицы "students" представлены в таблице 2.12
Таблица 2.12 - Структура таблицы "shopclients"
№ п/п
|
Описание
|
Поле
|
Тип данных
|
Дополнительные параметры
|
1
|
№ клиента
|
Idclient
|
int
|
Ключевое
|
2
|
Имя
|
Name
|
Char(15)
|
NOT NULL
|
3
|
Фамилия
|
Sname
|
Char(15)
|
NOT NULL
|
4
|
E-mail
|
Email
|
Char(15)
|
NOT NULL
|
5
|
Адрес доставки
|
Address
|
Text
|
NOT NULL
|
6
|
Телефон
|
Fhone
|
Int
|
NOT NULL
|
7
|
Время последнего заказа
|
Lastdate
|
Date
|
NOT NULL
|
Схема даталогической модели предметной области представлена на рисунке 2.2
Рисунок 2.2 - Даталогическая модель предметной области
Алгоритм работы системы тестирования веб-сайта представлен на рисунке 2.3.
Пользователь (студент или администратор) заходит на сайт и имеет возможность навигации по материалам сайта. Если пользователь зарегистрирован в системе, он может ввести логин и пароль и попасть на страницы обучения. Если же не зарегистрирован, имеется возможность регистрации. При регистрации заполняются необходимые поля. Система проверяет, заполнил ли пользователь обязательные для регистрации поля. Если все верно происходит проверка, существует ли указанный пользователем (студентом) логин в системе. Если все верно, то происходит успешная регистрация. Если что-то неверно, предлагается зарегистрироваться в системе повторно.
Нет
Да Да
Нет
Да
Нет
Да
Нет
Да
Рисунок 2.3 - Алгоритм работы системы тестирования.
После изучения материалов, размещенных на страницах приложения пользователь получает возможность пройти тестирование по любой дисциплине. По одной дисциплине тест можно пройти только два раза. При успешном прохождении теста пользователь может распечатать сертификат, сформированный в rtf формате. Результаты тестирования хранятся в базе данных.
Современные веб-сайты становятся все более сложными и все более перегружаются логикой. Раньше производительность таких приложений определялась, в основном, скоростью работы того или иного SQL-сервера и тем, существует ли для него достаточно эффективная реализация драйвера доступа к SQL-серверу для выбранного языка программирования. Это объясняется тем, что первое поколение веб-сайтов просто читало и писало информацию в базы данных. Пользователей при этом было относительно немного. Таким образом, время на отработку SQL-запроса составляло 70-90% от общего времени обработки HTTP-запроса.
С повышением требований к масштабируемости (увеличение количества пользователей) и наращиванием логики приложения требования к языку программирования и среде выполнения существенно возрастают. К этому следует также прибавить, что относительно недавно веб-сайты перешли из мира Интернет в мир корпоративных приложений. Это снова повысило требования к эффективности среды выполнения.
В настоящие время для создания веб-сайтов существует множество различных языков программирования. Самые популярные из них - PHP, Perl, С# (DOT. NET), Java2. Классическая технология ASP становится историей, поскольку ASP DOT. NET практически вытеснило эту технологию на Windows-серверах в новых приложениях.
Для разработки в работе выбран язык PHP в связке с сервером баз данных MySQL. Для их работы требуется установка веб-сервера Apache. В качестве среды разработки выбрано средство создания web-узлов Macromedia Dreamweaver MX 2004.
PHP - это инструмент объектно-ориентированного программирования с открытым кодом (open source), язык серверных скриптов (server scripting language), встраиваемый в HTML, который интерпретируется и выполняется на сервере [13].
PHP является препроцессором HTML. Его работа построена по схеме, показанной на рисунке 2.4
Рисунок 2.4 - Схема работы препроцессора PHP
До того, как сервер "отдаст" файл браузеру, его просматривает препроцессор-интерпретатор. Для того, чтобы это происходило, файлы, которые подвергаются обработке препроцессором, должны иметь определенное расширение (обычно это. phtml или. php, но эти значения можно поменять) и содержать (хотя это не обязательное требование) код для препроцессора. Перед отправкой страницы PHP-код проигрывается на сервере и браузеру выдается результат в виде опять таки HTML-страницы, которая может сильно отличаться от той, что хранится на сервере. Обычные же страницы, имеющие расширение. html/htm web-сервер будет отправлять браузеру без какой-либо обработки.
Основное отличие от CGI-скриптов, написанных на других языках, типа Perl или C - это то, что в CGI-программах вы сами пишете выводимый HTML-код, а, используя PHP - вы встраиваете свою программу-скрипт в готовую HTML-страницу, используя открывающий и закрывающий теги (в примере <? php и? >).
PHP называется языком серверных скриптов в отличие от JavaScript/Jscript/VBScript, которые являются языками клиентских скриптов. Это значит, что PHP-скрипт выполняется на сервере, а клиенту передается результат его работы, тогда как в JavaScript-код полностью передается на клиентскую машину и только там выполняется браузером.
Пользователи MS Internet Information Server найдут, что PHP очень похож на Active Server Pages (ASP), а пользователи Java скажут, что PHP похож на Java Server Pages (JSP). Еще некоторыми аналогами PHP являются языки ColdFusion и embPerl. Все эти языки позволяют размещать код, выполняемый на Web-сервере, внутри HTML-страниц. В результирующей web-странице нет и следа PHP-кода.
На PHP можно сделать все, что можно сделать с помощью CGI-программ. Например: обрабатывать данные из форм, генерировать динамические страницы, получать и посылать куки (cookies).
Кроме этого в PHP включена поддержка многих баз данных (databases), что делает написание Web-приложений с использованием БД до невозможности простым.
Вот неполный перечень поддерживаемых БД: Adabas D, InterBase, Solid, dBase, mSQL, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL, ODBC.
Вдобавок ко всему PHP понимает протоколы IMAP, SNMP, NNTP, POP3 и даже HTTP, а также имеет возможность работать с сокетами (sockets) и общаться по другим протоколам.
Разработчикам web-приложений нет необходимости говорить, что web-страницы - это не только текст и картинки. Достойный внимания сайт должен поддерживать некоторый уровень интерактивности с пользователем: поиск информации, продажа продуктов, конференции и т.п. До недавних пор все это традиционно реализовалось CGI-скриптами, написанными на Perl. Но оказалось, что CGI-скрипты очень плохо масштабируемы. Каждый новый вызов CGI-скрипта, требует от ядра порождения нового процесса, а это занимает процессорное время и тратит оперативную память. PHP предлагает другой вариант - он работает как часть web-сервера, и этим самым похож на ASP от Microsoft или ColdFusion от Allaire.
Синтаксис PHP очень похож на синтаксис C или Perl. Люди, знакомые с программированием, очень быстро смогут начать писать программы на PHP. В этом языке нет строгой типизации данных и нет необходимости в действиях по выделению/освобождению памяти.
Программы, написанные на PHP, читаются достаточно легко. В отличие от Perl-программ PHP-код легко зрительно прочитать и понять.
В дополнение к своей бесплатности (хотя MySQL требует приобретения лицензии при использовании ее в коммерческих целях) связка PHP-MySQL является кросс-платформенной. Это значит, что вы можете, работая в Windows, разрабатывать приложения, предназначенные для работы под Unix. Кроме того, PHP может работать как внешний CGI-процесс, либо как обычный интерпретатор скриптов, либо как модуль, подключаемый к web-севреру Apache или IIS.
И наконец, так как данный продукт разрабатывается совместными усилиями, существует огромное количество документации и списков рассылки, к которым можно обратиться в случае возникновения каких-либо вопросов.
Найденные ошибки исправляются достаточно быстро, ваши предложения и замечания всегда выслушают, рассмотрят, и если они окажутся ценными - реализуют в новой версии.
MySQL - небольшой, компактный многопоточный сервер баз данных [13]. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании.
MySQL был разработан компанией TcX для внутренних нужд, которые заключались в быстрой обработке очень больших баз данных. Компания утверждает, что использует MySQL с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более чем 500 имеют более 7 миллионов строк. MySQL является идеальным решением для малых и средних приложений. Исходные тексты сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. В варианте под Windows, MySQL может запускаться как сервис Windows NT или как обычный процесс на Windows 95/98.
MySQL-сервер является бесплатным для некоммерческого использования.
MySQL поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД.
Краткий перечень возможностей MySQL.
Поддерживается неограниченное количество пользователей, одновременно работающих с базой данных;
Количество строк в таблицах может достигать 50 млн;
Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих;
Простая и эффективная система безопасности.
MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют:
Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE;
Нет поддержки триггеров и хранимых процедур;
Нет поддержки внешних ключей.
По словам создателей именно эти пункты дали возможность достичь высокого быстродействия. Их реализация существенно снижает скорость сервера. Эти возможности не являются критичными при создании web-приложений, что в сочетании с высоким быстродействием и малой ценой позволило серверу приобрести большую популярность.
На сегодняшний момент существует два мощных средства создания веб-сайтов - это последние версии FrontРage 2003 компании Microsoft и Dreamweaver MX 2004 компании Macromedia [14].
Программный пакет FrontPage долгое время развивался и совершенствовался фирмой Microsoft. Его версия FrontPage 2000 отличается от всех предыдущих тем, что она впервые интегрирована в структуру пакета программ Microsoft Office. Вероятно, это объясняется тем обстоятельством, что проектирование веб-сайтов и мультимедийных электронных изданий из задачи для профессионалов перешли в сферу офисной деятельности. FrontPage 2002 вновь поставляется отдельно от Microsoft Office XP.
FrontPage специализирован на подготовке электронных изданий, в частности - на разработке web-узлов целиком. Он поддерживает фреймовую структуру, ориентирован на простоту и удобство создания гиперссылок, обеспечивает единый стиль оформления различных web-страниц, оптимизирует скорость их загрузки. Таким образом, пакет отличается продуманностью реализации как эстетических, так и технических аспектов создания электронных изданий и позволяет, в какой-то степени, автоматизировать процесс проектирования. Неудобством в работе является автоматическая вставка не всегда нужных тэгов.
Программный пакет Dreamweaver, как и FrontPage, предназначен для проектирования различных сайтов, в том числе и сайтов издательств, одной из задач которых является распространение электронных изданий. Он пригоден как для создания небольших, так и очень больших сайтов. В первом случае разработкой занимается единственный специалист - web-мастер. В последнем случае над проектом работает целый коллектив, включающий администратора проекта, web-дизайнера, HTML-верстальщика, web-программиста, корректора, менеджера рассылок. Многие специалисты утверждают, что профессиональные web-дизайнеры в своей работе чаще всего используют Adobe Photoshop для подготовки графики и Macromedia Dreamweaver - для дизайна отдельных web-страниц. Особенностью данного программного средства является хорошая поддержка языка PHP, который используется в проекте для программирования и автоматическая или ручная синхронизация измененных данных с удаленным сервером. Эти особенности, а также простота и быстрота работы программы во многом обуславливают выбор именно этого программного продукта в качестве средства проектирования разрабатываемого web-приложение.
Для разработки системы используется комплекс программ. В качестве веб-сервера выбран Apache версии 2.0.35, в качестве языка программирования PHP 4.1.2, в качестве сервера баз данных MySQL 4.0.21. Для разработки и тестирования приложения используется Macromedia Dreamweaver MX 2004.
Функции веб-сервера выполняет программа Apache. Когда браузер пользователя подключается к веб-серверу и посылает заголовок GET (это просьба передать файл), его запрос обрабатывает Apache. Apache проверяет, есть ли указанный в заголовке GET файл, и, если есть, отправляет его вместе с заголовками браузеру.
Apache - это стандарт веб-сервера в Интернете. Его основным конкурентом является IIS (Internet Information Server) от Microsoft, который работает под Windows. Apache, хотя и существуют его версии под Windows, преимущественно устанавливается на Unix-подобных операционных системах - Linux и FreeBSD. Нужно также заметить, что большинство хостеров используют именно Apache, а не IIS. IIS устанавливается в основном на корпоративных серверах, работающих под Windows.
Сервер Apache просто необходим - без него мы не сможем протестировать веб сценарии PHP. Конечно, можно тестировать и без сервера, но тогда нужно будет использовать сервер хостера. В этом случае затраты на Интернет сильно возрастут.
Для установки Apache для Windows нужно посетить сайт http://www. apache. org и загрузить версию Apache для Windows. Установка сервера проблем не вызывает: нужно просто запустить программу установки и выбрать тип установки Typical. Еще потребуется указать каталог, в который будет производиться установка. По умолчанию будет установлен в каталог "C: \Program Files\Apache Group\Apache".
По окончании установки Apache необходимо настроить. По умолчанию корневым каталогом для HTML-документов будет C: \Program Files\Apache Group\Apache\htdocs. Такое расположение не очень удобно, поэтому создадим каталог f: \home\localhost, в котором будут находиться файлы. В этом же каталоге создадим два подкаталога - cgi и html. В первом будут находится CGI-приложения, а во втором - HTML-файлы.
Затем нужно открыть в любом текстовом редакторе файл C: \Program Files\Apache Group\Apache\conf \httpd. conf и отредактировать следующие директивы:
ServerName - установить имя сервера. При этом, директива ServerName по умолчанию закомментирована, то есть игнорируется сервером. Поэтому необходимо раскомментировать эту директиву, убрав перед ней значок #.
DocumentRoot - установим значение С:/www/html:
DocumentRoot с:/www/html
Таким образом, укажем каталог, в котором будут размещаться HTML-файлы.
Установим директивы ScriptAlias так:
ScriptAlias/cgi/"с:/www/cgi/"
ScriptAlias/cgi-bin/"c:/www/cgi/"
Благодаря этому создадим два псевдонима для каталога с:/www/cgi. Таким образом, если будет указан путь http://localhost/cgi или http://localhost/cgi-bin, то на самом деле обращение будет к каталогу с:/www/cgi.
Секцию <Directory "С:/Program Files/Apache Group/Apache/htdocs"> заменим на следующую:
<Directory "c:/www">
Options Indexes Includes AllowOverride All Allow from all </Directory>
Таким образом, зададим ряд настроек по умолчанию для каталога с: \www и всех его подкаталогов. А именно: автоматическую генерацию списка содержимого каталога при просмотре его в браузере, поддержку SSI, а также возможность использовать файлы. access для индивидуальной настройки каталогов.
Убедимся, что есть директива AddHandler:
AddHandler cgi-script. bat. exe. cgi
Эта директива указывает Apache на то, что файл с расширениями. bat. exe и. cgi следует воспринимать как CGI-модули.
Установим параметры SSI:
Addtype text/html. shtml
AddHandler server-parsed. shtml. html. htm Благодаря этому файлы с указанными расширениями будут обрабатываться SSI.
Необходимо сохранить отредактированный файл.
Теперь протестируем работу Apache. Запуск:
C: \Program Files\Apache Group\Apache\apache. exe
При успешном запуске появится надпись
Apache/2.0.35 (Win32) running...
Теперь можно проверить корректность работы сервера. Запустим Internet Explorer или любой другой браузер и введем: http://localhost. Вы должны увидеть стартовую страницу Apache. Теперь проверим CGI и SSI. Для этого создадим файл test. bat и поместим его в каталог c: \www\cgi:
@echo off
echo Content-type: text/html
echo.
echo.
echo Hello!
В окне браузера введите http://localhost/cgi/test. bat -увидите слово Hello! Для проверки SSI нужно создать файл test. html и поместить его в каталог c: \www\html:
SSI Test<br>
<! -tinclude virtual="/index. html" ->
SSI (Server Side Include) - включение со стороны сервера, позволяет включать в Web-страницу код HTML, находящийся в других файлах.
В окне браузера при вызове файла test. html вы увидите SSI Test, a затем - стартовую страницу Apache.
После установки Apache установим РНР 4. Версию РНР 4 для Windows можно скачать по адресу http://www. php. net (последняя версия РНР доступна по адресу http://www. php. net/downloads. php).
Запустим программу установки, которая по умолчанию установит РНР 4 в каталог C: \Program Files\PHP 4\. Однако в процессе установки можно выбрать другой каталог.
Сразу после установки необходимо открыть файл php. ini (он будет в каталоге, куда вы установили РНР) и отредактировать следующие параметры:
[mail function] ; For Win32 only. SMTP = localhost
sendmail_from = me@localhost. com
Параметр SMTP задает имя SMTP-сервера. По умолчанию в качестве SMTP-сервера используется локальный компьютер - это хорошо для Linux, но в Windows вам нужно указать SMTP-сервер провайдера, потому что вряд ли у вас будет установлен почтовик под Windows. Если вы не сделаете этого, функция mail(), отправляющая сообщения, работать не будет.
После этого откроем файл httpd. conf (файл конфигурации Apache) и найдем в нем строку:
AddType application/x-httpd-php php
Убедимся, что данная строка не закомментирована, то есть перед ней не стоит значок #. Если он стоит - уберем его. Таким образом, всем файлам с расширением. php будет поставлен в соответствие МIМЕ-тип application/x-httpd-php.
Типы MIME используются для идентификации типа содержимого. Благодаря этому приложения смогут определять, какого вида данные присланы и в каком соответствии сети проводить их обработку. Перечень всех типов MIME, поддерживаемых системой, находится в файле C: \Program Files\Apache Group\Apache\conf. Тип MIME указывается в формате: тип/подтип. Вот основные типы MIME:
application - приложение (программа или документ, связанный с программой).
audio - аудиофайл (audio/mpeg).
image - графический файл (audio/png).
text - текст (text/html - в формате HTML, text/plain - простой).
MIME-тип пересылаемых по сети данных указывается в заголовке Content-type.
Сразу же после этой строки добавим строки:
ScriptAlias/_php_/"с:/Program Files/PHP5/" Action application/x-httpdhp "/_php_/php. exe"
В этих двух строках мы сначала создаем псевдоним _php_ для каталога с:/Program Files/PHP 4/, а затем связываем все файлы типа application/x-httpd-php с обработчиком php. exe.
Теперь можно протестировать РНР. Для этого создадим файл test. php:
<?
phpinfo ();? >
Данный файл нужно поместить в каталог c: \www\html. В браузере введите http://localhost/test. php. В итоге вы должны увидеть результат работы функции phpinfo().
Сервер MySQL можно загрузить по адресу http://www. mysql. com. Программа установки установит сервер в каталог С: \Progam Files\MySQL\. Для запуска MySQL создадим файл server. bat:
@echo off
"С: \Program Files\MySQL\bin\mysqld"
start/m "C: \Program Files\Apache Group\Apache\apache"
Если вы работаете в Windows NT или 2000, server. bat должен выглядеть так, как это показано в следующем листинге:
@echo off
start C: \Progra~l\MySQL\bin\mysqld-nt - standalone
C: \Progra~l\Apache~l\Apache\apache - k start
Теперь для запуска Apache и MySQL нужно ввести команду server. Создадим файл shutdown. bat, который будет останавливать оба сервера:
@echo off
C: \Progra~l\Apache~l\Apache\apache - k shutdown
C: \Progra~l\MySQL\bin\mysqladmin - u root shutdown
Также необходимо добавить в конец файла my. ini следующие строки (конкретно для данного проекта), задающие логин и пароль доступа к серверу:
user=root
password=geijr
Файл настройки сервера баз данных MySQL находится по умолчанию в корневом каталоге Windows. Просмотреть все базы данных и таблицы, созданные на сервере MySQL можно утилитой WinMySQLadmin 1.4
2.6 Работа
в Macromedia Dreamweaver MX 2004
Интерфейс пакета Dreamweaver показан на рисунке 2.5 Помимо строки заголовка, строки меню, панели инструментов и стандартного рабочего окна программы отметим наличие нескольких палитр, которые, как и в графических редакторах, размещаются в рабочем окне программы.
Рисунок 2.5 - Интерфейс пакета Dreamweaver MX 2004 с командами меню Window.
Остановимся на палитре Object (Объекты), внешний вид которой представлен на рисунке 2.6 Внешний вид палитры изменяется в зависимости от типа объекта, выбранного в раскрывающимся списке, расположенного в ее верхней части; таким образом палитру можно назвать адаптивной. По умолчанию в списке устанавливается раздел Common (Основные). На рисунке 2.6 выбран именно этот вариант.
Рисунок 2.6 - Палитра Objects раздел Common
Эта палитра с помощью различных инструментов позволяет включать в состав страницы различные элементы, в частности, по порядку расположения кнопок в палитре в направлении слева направо и сверху вниз: Image (Изображение), Rollover Image (Анимированную кнопку), внешний вид которой изменяется при подведении к ней курсора мыши, Table (Таблицу), Tabular Data (таблицу с занесенными в нее данными, подготовленными заранее в другом программном пакете), Draw Layer (Новый изобразительный слой), Navigation Bar (Навигационную панель со специальными кнопками для перемещения по сайту), Horizontal Rule (Горизонтальную линейку), Е-mail Link (Ссылку на электронный адрес), Date (Текущую дату), Server-Side Include (Активизацию серверной стороны), Flash Button (Анимированную Flash-кнопку), Flash Text (Анимированный Flash-текст), Shockwave (Анимационный файл в Shockwave-формате), Generator (средства, делающие Web-страницы динамическими, в частности, апплеты и элементы ActiveX, объекты, воспроизводимые с помощью дополнительных модулей) и пр.
Палитра Objects раздел Forms (Формы), показанная на рисунке 2.7, служит для создания форм и содержит следующие кнопки: Form (Форма), Text field (текстовое поле), Button (Кнопка), Checkbox и Radio Batton (Переключатели), List/menu (Список/меню), File field (Поле для передачи файлов) и Image field (Поле для передачи изображений), Hidden field (Скрытое поле) и Jump menu (Указатель гиперссылки для перехода на другой сайт).
Рисунок 2.7 - Палитра Objects раздел Forms
Палитра Objects раздел Text (Формы), показанная на рисунке 2.8 позволяет включать в страницу различные элементы текстового форматирования - жирный текст, наклонный, создавать списки, переносы и т.п.
Рисунок 2.8 - Палитра Objects раздел Text
В нижней части всех палитр группы Object (Объект) предусмотрены поля Layout (Выравнивание) и View (Просмотр), которые позволяют наблюдать и управлять размещением объектов на Web-странице (рисунок 2.9).
Рисунок 2.9 - Палитра Objects раздел Layout
И наконец, важная палитра, облегчающая во многом работу со скриптами PHP - палитра Object - PHP. Предусмотрена вставка различных элементов языка PHP, например открывающего и закрывающего тэгов, операторов и т.п. (рисунок 2.10).
Рисунок 2.10- Палитра Objects раздел PHP
Прежде всего, надо тщательно продумать общую структуру сайта, а также структуру каталогов (папок) и размещение в них файлов. В начале работы следует разместить в корневом каталоге сайта все PHP-файлы и несколько подкаталогов, в том числе: изображений, создания баз данных, файлов, данных, новостей.
Для непосредственного создания сайта следует предварительно сделать все необходимые установки. С этой целью выбирается команда Edit | Preferences (Редактирование | Настройки). В результате откроется диалоговое окно Preferences (Настройки), показанное на рисунке 2.11 Здесь задаются различные настройки для будущего сайта - название, цвета ссылок, размещение каскадных таблиц стилей CSS, параметры использования различных элементов.
Рисунок 2.11 - Диалоговое окно Preferences
Для изменения любой страницы в Dreamweaver используется редактор страниц. На рисунке 2.12 показана рабочая область с загруженным документом inde. php. Редактировать можно в трех режимах - кода, дизайнера, совмещенного (кода и дизайнера). Для работы с PHP больше всего подходит первый режим. Просматривать страницы и запускать скрипты удобно по клавише F12, которая автоматически открывает страницу в выбранном заранее браузере.
Рисунок 2.12 - Редактор кода страниц
Для синхронизации изменений внесенных при модификации страниц сайта или добавлении данных (файлов или рисунков) используется редактор файлов (рисунок 2.13). Добавлять или удалять файлы можно из контекстного меню редактора, выбирая соответствующие пункты. Удобнее всего редактировать данные и модифицировать страницы в локальном режиме Local View, а затем синхронизировать с сервером в режиме Testing Server через пункт меню Sinchronize.
Рисунок 2.13 - Редактор файлов сайта
Одним из значимых элементов любого сайта является пользовательский интерфейс. Удобство и простота его реализации во многом определяют успех любого проекта. Неудачная подборка цветовой гаммы, в том числе несочетающихся цветов, бывает причиной нежелания пользователей посещать даже насыщенный полезной информацией веб-ресурс. Для облегчения вывода текста созданы каскадные таблицы стилей [14]. А в качестве языка программирования используется
PHP, эффективно взаимодействующий с базами данных и позволяющий реализовывать серьезные проекты.
В качестве цветовой гаммы выбраны синие цвета и оттенки голубых, достаточно хорошо гармонирующие друг с другом. Текст отображен шрифтом семейства Verdana, Arial, Sans-serif черным, темно синим или красным цветом (Только в заголовочной части).
Основными элементами интерфейса являются: верхняя заголовочная часть, содержащая меню, левая информационная панель, рабочая область страницы, часть гостевой книги и нижняя часть, содержащая ссылку на страницу администрирования сайта.
Все файлы приложения размещаются в корневом каталоге сайта. Проект содержит несколько подкаталогов:
InternetTechnology, хранит файлы подразделов дисциплин;
images, хранит все файлы изображений, используемые в приложении;
smiles, хранит смайлики для чата и гостевой книги.
В корневом каталоге хранятся файлы, описанные в таблице 2.13.
Таблица 2.13- Описание файловой структуры приложения
№ п/п
|
Название файла
|
Назначение файла
|
1
|
Admchat. php
|
Страница администрирования чата
|
2
|
Admexam. php
|
Страница администрирования экзаменатора. Удаление предметов или вопросов
|
3
|
Adminguest. php
|
Страница администрирования гостевой книги
|
4
|
AdminInternetTechnology. php
|
Главная страница администратора. Связана со страницами администрирования: admchat. php, admexam. php, adminguest. php, input. php, students. php
|
5
|
Adminpass. php
|
Вход на страницу администратора
|
6
|
All. php
|
Файл связи со всеми файлами функций
|
7
|
BaseFunctions. php
|
Основные функции
|
8
|
Chat. php
|
Страница чата
|
9
|
Exam. php
|
Страница тестирования
|
10
|
FuncChat. php
|
Функции для страницы чата
|
11
|
FuncExam. php
|
Функции для страницы тестирования
|
12
|
FuncGuest. php
|
Функции для гостевой книги
|
13
|
Gb. php
|
Модуль гостевой книги
|
14
|
Input. php
|
Страница ввода новых дисциплин и вопросов. Доступна только администратору
|
15
|
InternetTechnology. php
|
Главная страница модуля Интернет технологии
|
16
|
LeftAdmin. php
|
Левая часть страницы администрирования
|
17
|
Login. php
|
Модуль входа в систему по Нику и паролю
|
18
|
Postmodule. php
|
Модуль, использующийся в гостевой книге и чате для посылки сообщений
|
19
|
RegisterUser. php
|
Модуль первоначальной регистрации
|
20
|
Rtf1. php
|
Модуль производящий сертификат
|
21
|
Rtfs. php
|
Модуль производящий список студентов прошедших тестирование
|
22
|
Score. php
|
Станица результатов тестирования
|
23
|
StartSession. php
|
Модуль обработки результатов регистрации
|
24
|
Store. php
|
Модуль записи вопросов тестирования
|
25
|
Students. php
|
Страница результатов тестирования. Доступна только администратору
|
26
|
Shop. php
|
Модуль интернет - магазина
|
27
|
Shopping. php
|
Модуль регистрации заказчика
|
28
|
Rtfshop. php
|
Модуль печати заказов в Word
|
29
|
Admshop. php
|
Администрирование интернет - магазина
|
30
|
Funcshop. php
|
Функции интернет - магазина
|
31
|
Styles. css
|
Подключаемый модуль таблицы стилей
|
Для входа в систему MySQL в интерфейс командной строки на своей машине и наберите следующее:
> mysql. exe - h localhost - u root
Командная подсказка может выглядеть по-разному, в зависимости от используемых операционной системы и командной оболочки.
Команда mysql запускает монитор MySQL. Это клиент командной строки, который выполняет соединение с сервером MySQL.
Ключ - h используется для обозначения хоста, к которому осуществляется подключение - это компьютер с запущенным сервером MySQL. При вводе этой команды на той же машине, на которой находится сервер MySQL, применять этот ключ, равно как и параметр hostname, вовсе не обязательно. Если на другой, то параметр hostname следует заменить именем машины, на которой выполняется сервер MySQL.
Ключ - u используется для указания имени пользователя, под которым требуется осуществить соединение.
(Если этого не произошло, убедитесь в том, что MySQL-сервер запущен и где-то в. вашем пути присутствует команда mysql) Необходимо ввести пароль.
Система баз данных MySQL может поддерживать множество различных баз данных. Обычно на одно приложение будет существовать одна база данных.
Для создания базы данных (itn) используют подключаемый файл “create_itn. sql”. Для этого нужно ввести команду:
Mysql>\. create_itn. sql f: \create_itn. sql
как показано на рисунке 2.14
Рисунок 2.14 - создание таблиц с помощью sql-файла
где f: \create_itn. sql - имя и путь к файлу.
Текст файла - “create_itn. sql “ приведен ниже.
create database itn; // Создать базу данных под названием “itn”
use itn; // использовать базу данных ”itn”
create table chatmessages // Создать таблицу “chatmessages”
( // Сообщения чата
idchmes int unsigned not null auto_increment primary key,
idstudc int not null, // id студента
message char(150) not null, // сообщение чата
ip char(15), // IP - адрес
time datetime not null // дата записи сообщения
);
create table guests // Создать таблицу “guests”
( // гостевая книга
idguest int unsigned not null auto_increment primary key,
idstudg int not null, // id студента
message char(150) not null, // сообщение
ip char(15), // IP - адрес
page char(30) not null, // страница гостевой книги
time datetime not null // дата записи
);
create table subjects // Создать таблицу “subjects”
( // Предметы для тестирования
idsub int unsigned not null auto_increment primary key,
subject char(30) not null // предмет
);
create table questions // Создать таблицу “questions”
( // вопросы для тестирования
idques int unsigned not null auto_increment primary key,
idsubq int not null, // родительский предмет
quesmes char(150) not null // вопрос
);
create table answers // Создать таблицу “answers”
( // ответы для тестирования
idans int unsigned not null auto_increment primary key,
parent int not null, // id - вопроса
ansmes char(150) not null, // ответ
rightanswer int default 0 not null // правильный ответ = 1
);
create table students // Создать таблицу “students”
( // Студенты прошедшие тест
idstud int not null primary key, // шифр
name char(20) not null, // имя
secondname char(20) not null, // фамилия
faculty char(20) not null, // факультет
email char(20) not null, // e-mail
login char(20) not null, // login входа в систему
password char(20) not null, // пароль
lastdate datetime not null // Дата последнего входа в систему
};
create table results
{
idres int not null auto_increment primary key,
idstudr int not null, // id - студента
idsubr int not null, // id - предмета
posted datetime not null, // дата сдачи
score int not null, // результат
count tinyint(4) not null, // IP - количество попыток
);
create table ips // Создать таблицу “ips”
( // запрещенных IP - адресов
idip int unsigned not null auto_increment primary key,
ip char(15) not null, // IP - адрес
sub char(20) not null // станица(гостевая книга или чат)
);
create table bals // Создать таблицу “bals”
( // баллы для тестирования
bal int not null, // бал
percent int not null // проценты
);
create table cd
(
idc int unsigned not null auto_increment primary key,
title char(50) not null,
description char(150),
price float not null
);
create table zakaz
(
idz int unsigned not null auto_increment primary key,
idclienta int not null,
idcd int not null,
count tinyint default 0 not null,
recdate datetime not null,
flag_done enum('y', 'n') DEFAULT 'n' NOT NULL
);
create table shopclients
(
idclient int unsigned not null auto_increment primary key,
name char(10) not null,
sname char(15) not null,
email char(30) not null,
address text not null,
fhone char(15),
lastdate datetime not null
);
grant select, insert, update, delete // определение прав пользователя
on itn. *
to itn@localhost identified by 'password';
Таблица 2.14 - Используемые типы данных
№ п/п
|
Тип данных
|
Описание
|
1
|
int
|
Целое число. В MySQL тип данных int может быть со знаком или без знака
|
2
|
tinyint
|
Очень маленькие целые числа
|
3
|
char(длина)
|
Символьная величина фиксированной длины. Поля типа char не могут содержать строки длины большей, чем указанное значение. Поля меньшей длины дополняются пробелами
|
4
|
date
|
Стандартное значение даты. Формат хранения даты по умолчанию ‘yyyy-mm-dd’
|
5
|
text
|
Символьная величина переменной длины
|
6
|
enum(‘знач1’, …, ‘значN’)
|
Перечисляемый тип
|
Что означают другие ключевые слова
NOT NULL означает, что все строки таблицы должны иметь значение в этом атрибуте. Если NOT NULL не указано, поле может быть пустым (NULL).
AUTO_INCREMENT - специальная возможность MySQL, которую можно задействовать в числовых столбцах. Если при вставке строк в таблицу оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу больше максимального значения, уже существующего в столбце. В каждой таблице может быть не больше одного такого поля. Столбцы с AUTO_INCREMENT должны быть проиндексированными.
PRIMARY KEY после имени столбца определяет, что этот столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными. MySQL автоматически индексирует этот столбец. Автоматический индекс по первичному ключу сберегает индекс, требуемый AUTO_NCREMENT.
Указывать PRIMARY KEY после названия столбца следует лишь тогда, когда мы имеем дело с первичным ключом в виде одиночного столбца. Альтернативным вариантом является конструкция PRIMARY KEY в конце описания таблицы order_items. В последнем случае первичный ключ включает два столбца.
UNSIGNED после целочисленного типа означает, что его значение может быть либо положительным, либо нулевым.
На рисунке 2.15 показан результат обработки подключаемого файла SQL.
Рисунок 2.15 - создание таблиц после обработки файла SQL
Для просмотра созданных таблиц в базе данных нужно ввести команду SHOW TABLES (рисунок 2.16):
Mysql>Show tables;
Рисунок 2.16 - просмотр созданных таблиц
Команда DESCRIBE дает возможность увидеть дополнительную информацию по конкретной таблице (рисунок 2.17)
Рисунок 2.17 - просмотр типов полей таблицы
Эти команды полезны, если требуется вспомнить, какие типы столбцов используются.
Рассмотрим создание страниц приложения на примере главной страницы модуля сайта "Интернет технологии". Скелет страницы состоит из заголовочной части, таблицы из двух столбцов, в левой части которой располагается форма регистрации и кнопка входа на страницу тестирования и кнопка входа в чат, в правой отображается основное содержимое страницы, гостевой книги, находящейся сразу под основной таблицей и нижней части со ссылкой на страницу входа в администрирования. (Рисунок 2.18)
Заголовочная часть
|
Часть кнопок навигации по дисциплинам
|
Часть с формой входа в систему и кнопками входа в тестирование и входа в чат.
|
Основная часть
|
|
Часть гостевой книги
|
Нижняя часть
|
Рисунок 2.18 - скелет главной страницы
Все скрипты PHP заключаются в скобки <? и? >. Язык позволяет формировать страницы из нескольких отдельных составляющих. Для этого используются функции include и require. Например, скрипт
<? include "all. php"? >
Делает доступными для страницы все функции подключенные в этом файле.
<? doheader(‘Интернет технологии);? >
Включает в страницу функцию doheader(), отображающую заголовочную часть с логотипом и названием сайта. (Рисунок 2. 19)
Рисунок 2. 19 - заголовочная часть
Следующая часть кода выводит кнопки навигации по дисциплинам, отображенным на рисунке 2. 20:
<? do_buttons()? >
function do_buttons() // Кнопки
{
? >
<center><table width="100%" cellpspacing=6>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=enter">
<font size="4" сolor="#0000FF">Введение</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=lections">
<font size="4" color="#0000FF">Лекции</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=labs">
<font size="4" color="#0000FF">Лабораторные работы</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=ind">
<font size="4" color="#0000FF">Контрольные работы</font></a></td>
</table></center>
<?
}, где MODE указывает основной части таблицы на то, что должно выводиться.
Рисунок 2.20 - кнопки навигации по дисциплинам
Затем в левой части таблицы выводится форма регистрации и кнопки тестирования и чата. (Рисунок 2.21)
<?
echo"<form action=login. php method=post>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue cellpadding=3><tr><td><font color=blue><b>Войти в систему</b></font><hr color=#ff9900>
Ник<br><input type=text name=login><br>
Пароль</font><br><input type=password name=password><br><input type=submit name=submit value='Вход'><br>
<a href=InternetTechnology. php?
mode=register>Регистрация</a></td></tr></table>";
echo "</form>";
echo"<br><table width=155 bgcolor=blue border=2
bordercolor=darkblue><tr><td align=center><a href=exam. php><font color=white size=+1>Тестирование</font></a></td></tr></table>";
echo"<br><table width=155 bgcolor=blue border=2 bordercolor=darkblue><tr><td align=center><a href=chat. php><font color=white size=+1>Общение</font></a></td></tr></table><br>"
? >
Рисунок 2.21 - левая часть страницы с формой входа и кнопками
Здесь echo"<form action=login. php method=post>"; означает что данные формы входа будут посланы модулю проверки данных login. php. Метод POST отличается от метода GET тем, что при использовании метода GET значения полей присоединяются к URL, указанному в атрибуте ACTION.
Далее в правой части выводится основная часть страницы, выбранная пользователем с помощью кнопок навигации. (С помощью переменной MODE).
switch($mode)
{
case 'register': // подключить модуль регистрации
include('register_user. php');
break;
case 'enter': // Модуль введения
$pagegb='Интернет_технологии'; // Эта переменная указывает гостевой книге // индентификатор страницы.
include('InternetTechnology\enter. php');
break;
case 'lections': // Подключить модуль лекции
$pagegb='Лекции';
include('InternetTechnology\lections. php');
break;
case 'labs':
$pagegb='Лабораторные_работы'; // Подключить модуль Лабораторные работы
include('InternetTechnology\labs. php');
break;
case 'ind': //// Подключить модуль контрольные работы
$pagegb='Индивидуальные_задания';
include('InternetTechnology\ind. php');
break;
default:
include('InternetTechnology\enter. php'); // по умолчанию подключить модуль введение
break;
}
Модули, подключаемые в этой части имеют вид:
<?
Текстовый материал с использованием тегов логического и физического форматирования текста.
? >
Затем, ниже основной таблицы, выводится гостевая книга, относящаяся к данной странице. (Рисунок 2.22)
<? include('gb. php');? >
Просто подключается модуль гостевой книги 'gb. php', который в свою очередь включает модуль посылки сообщений: ‘postmodule. php’, который также используется на странице чата.
Рисунок 2.22 - модуль гостевой книги
Ниже вызовом функции doout(), выводится нижняя часть изображения со ссылкой на страницу входа в администрирование. (Рисунок 2.23)
Рисунок 2.23 - нижняя часть страницы
Общий вид главной страницы модуля сайта по дисциплине "Интернет технологии" со значением переменной MODE равной lections (Лекции) приводится на рисунке 2.24.
Рисунок 2.24 - страница лекции
HTTP иногда называют "протоколом без состояния". Это означает, что данный протокол не имеет встроенного способа поддержки состояния между двумя транзакциями. Когда пользователь запрашивает друг за другом две страницы, HTTP не обеспечивает возможности уведомить, что оба запроса исходят от одного и того же пользователя.
Таким образом, идея управления сеансами заключается в обеспечении отслеживания пользователя в течение одного сеанса связи с Web-сайтом.
Если это удастся осуществить, мы сможем легко поддерживать подключение пользователя и предоставление ему содержимого сайта в соответствии с его уровнем прав доступа или персональными настройками. Мы сумеем отслеживать поведение пользователя.
Для запуска сеанса в РНР используется уникальный идентификатор сеанса, представляющий собой зашифрованное случайное число. Идентификатор сеанса генерируется РНР и сохраняется на стороне клиента в течение всего времени жизни сеанса. Для хранения идентификатора сеанса используется либо cookie-набор на компьютере пользователя, либо URL.
Идентификатор сеанса играет роль ключа, обеспечивающего возможность регистрации некоторых специфических переменных в качестве так называемых переменных сеанса. Содержимое этих переменных сохраняется на сервере. Единственной информацией, "видимой" на стороне клиента, является идентификатор сеанса. Если во время определенного подключения к вашему сайту идентификатор сеанса является "видимым" либо в cookie-наборе, либо в URL, имеется возможность получить доступ к переменным сеанса, которые сохранены на сервере для данного сеанса. По умолчанию переменные сеанса хранятся в двумерных файлах на сервере (при желании способ хранения можно изменить и использовать вместо двумерного файла базу данных, но для этого потребуется написать собственную функцию).
Скорее всего, придется иметь дело с Web-сайтами, на которых для хранения идентификатора сеанса используется URL. Если в вашем URL имеется строка данных, которые выглядят случайными, то это, скорее всего, свидетельствует об использовании одной из двух описанных здесь разновидностей управления сеансом.
Другим решением проблемы сохранения состояния на протяжении некоторого количества транзакций, при наличии чистого внешнего вида URL, являются cookie-наборы.
При использовании cookie-наборов возникают некоторые проблемы: есть браузеры, которые не принимают cookie-наборы, а есть пользователи, которые запрещают использование cookie-наборов в своих браузерах. Это одна из причин, по которым в сеансах РНР используются двойной метод cookie-набор/адрес URL (ниже этот вопрос рассматривается более подробно).
В сеансе РНР нет необходимости задавать cookie-наборы вручную. Это за вас сделают функции сеанса.
Для того чтобы просмотреть содержимое cookie-набора, установленное при управлении сеансом, можно воспользоваться функцией session_get_cookie_params(). Она возвращает ассоциативный массив, содержащий элементы lifetime, path и domain.
Можно использовать также:
session_set_cookie_params($lifetime, $path, $domain);
этот оператор устанавливает параметры cookie-набора для сеанса.
Основными этапами использования сеанса являются следующие: Запуск сеанса;
Регистрация переменных сеанса;
Использование переменных сеанса;
Отмена регистрации переменных и закрытие сеанса.
Заметим, что все перечисленные этапы не обязательно могут содержаться в одном сценарии, и некоторые из них могут находиться в нескольких сценариях. Рассмотрим каждый из этих этапов последовательно.
Прежде чем можно будет воспользоваться функциональными возможностями сеанса, следует запустить сам сеанс. Существует три способа сделать это.
Первый (и самый простой) заключается в том, что сценарий начинается с вызова функции session_start().
Эта функция проверяет, существует ли идентификатор текущего сеанса. Если нет, она его создает. Если же идентификатор текущего сеанса уже существует, она загружает зарегистрированные переменные сеанса, чтобы они стали доступными для использования.
Надо отметить, что это прекрасный способ - вызов session_start() в начале сценариев, в которых используются сеансы.
Второй способ заключается в том, что сеанс запускается при попытке зарегистрировать переменные сеанса.
Третий способ запустить сеанс - задать установки РНР, при которых сеанс будет запускаться автоматически, как только кто-либо посетит ваш сайт.д.ля этого следует воспользоваться опцией session. auto_start в файле php. ini.
Для того чтобы получить возможность отслеживать переменные от одного сценария к другому, их необходимо зарегистрировать. Это делается путем вызова функции session_register().
Данный оператор регистрирует имя переменной и отслеживает ее значение. Отслеживание переменной будет осуществляться, пока не завершится сеанс либо пока вручную не отменится ее регистрация.
If(! session_id()) session_start();
If(! isset($_session [‘error_fill’] $_session [‘error_fill’] [‘bool’] =falle
Здесь регистрируется переменная сеанса “error fill”, используемая для отображения ошибки заполнения полей регистрации студента.
Чтобы сделать переменную сеанса доступной для использования, сначала необходимо запустить сеанс, воспользовавшись одним из описанных выше способов.
После этого появляется доступ к этой переменной. Если опция register_globals включена, то доступ к этой переменной можно получить через сокращенную форму ее имени, например, $error_fill. Если же упомянутая опция не включена, получить доступ к переменной можно через ассоциативный массив $ _SESSION, например, $ _SESSION ["error_fill"].
Переменные сеанса не могут быть перезаписаны данными GET или POST. Это хорошо с точки зрения обеспечения безопасности, однако сопряжено с некоторыми ограничениями при кодировании.
С другой стороны, от вас потребуется тщательность при проверке на предмет того, установлены ли уже переменные сеанса (например, с использованием isset() либо empty()). Кроме того, следует иметь в виду, что переменные могут быть установлены пользователем через GET или POST. Проверить, является ли переменная зарегистрированной переменной сеанса, можно обратившись к функции $_session (). Вызов функции выполняется следующим образом:
$_session [‘error_fill’]
Следующая функция проверит правильность написания электронного адреса и вернет, $_session [‘error_fill’] [bool’] =true, если адрес написан неправильно.
If(! ereg(^. +@. +\\. +$,$email))
{
$session [‘error_fill’] [bool’] =true;
$_session [‘error_fill’] [‘message’] =”Проверьте правильность написания электронного адреса”;
}
Если переменная $_session [‘student’] существует то ей присваиваются текущие значения. Здесь переменной присваиваются значения регистрации студента.
$_SESSION ['student'] ['name'] =$name; $_SESSION ['student'] ['family'] =$family;
$_SESSION ['student'] ['group'] =$group; $_SESSION ['student'] ['faculty'] =$faculty;
$_SESSION ['student'] ['email'] =$email; $_SESSION ['student'] ['login'] =$login;
2.7.6.6 Отмена
регистрации переменных и завершение сеанса
После окончания работы с переменной сеанса ее регистрацию можно отменить, воспользовавшись функцией session_unregister():
$_session_unregister(‘error_fill’)
Подобно функции регистрации, эта функция требует указания имени переменной, регистрацию которой необходимо отменить, в виде строки, не включающей символ $. Данная функция за один раз может отменить регистрацию только одной переменной сеанса (в противоположность session_register()). Однако, для отмены регистрации всех переменных текущего сеанса можно обратиться к session_unset().
По завершении сеанса сначала потребуется отменить регистрацию всех переменных, а затем вызвать
Session_destroy()
для обнуления идентификатора сеанса.
При запуске приложения создаются 2 переменные сеанса: $_SESSION [‘mode’], отвечающая за страницу приложения и $_SESSION [‘error_fill’], отвечающая за правильность заполнения полей регистрации студентом.
if(! session_id()) session_start();
if(! isset($_SESSION ['error_fill'])) $_SESSION ['error_fill'] ['bool'] ='false';
if(isset($_REQUEST ['mode']))
{
$mode=$_REQUEST ['mode'] ;
$_SESSION ['mode'] =$mode;
}
else $mode=isset($_SESSION ['mode'])? $_SESSION ['mode']: '';
При посещении магазина создается еще одна переменная сеанса - $_SESION [‘client’].
$_SESSION ['client'] =isset($_SESSION ['client'])? $_SESSION ['client']: '';
if($_SESSION ['client'] =='')
{
if(isset($_SESSION ['student']))
{
$_SESSION ['client'] ['name'] =$_SESSION ['student'] ['name'] ;
$_SESSION ['client'] ['sname'] =$_SESSION ['student'] ['family'] ;
$_SESSION ['client'] ['email'] =$_SESSION ['student'] ['email'] ;
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['address'] ='';
}else
{
$_SESSION ['client'] ['name'] ='';
$_SESSION ['client'] ['sname'] ='';
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['email'] ='';
$_SESSION ['client'] ['address'] ='';
}
Здесь сначала проверяется наличие переменной сеанса $_SESSION [‘student’], и если она зарегистрирована, совпадающим полям переменной $_SESION [‘client’] присваиваются соответствующие поля переменной $_SESSION [‘student’], иначе поля обнуляются.
Для запуска веб-сайта необходимо запустить Интернет-браузер и набрать в строке адреса в локальном режиме http://localhost/kashtan/InternetTechnology. php. Откроется главная страница приложения (Рисунок 2.25). Пользователь получает возможность навигации по материалам сайта, регистрации (для незарегистрированных пользователей) или входа в систему (для зарегистрированных пользователей) и дистанционного обучения.
С левой стороны расположены поля для входа в систему, ссылка на форму регистрации и кнопки тестирования и чата.
Навигация по сайту организована средствами кнопок, расположенных в верхней части страницы.
Рисунок 2.25 - кнопки навигации по дисциплинам
Страницы: лекции, лабораторные работы, контрольные работы в свою очередь содержат ссылки на страницы с конкретными заданиями. Например страница лекций отображена в предыдущей подглаве на рисунке 2.24.
Для того чтобы получить доступ к обучению на сайте необходимо зарегистрироваться в системе. Переход на страницу регистрации осуществляется щелчком по ссылке "Регистрация" в левой части страницы. Открывается форма регистрации (рисунок 2.26). Пользователь должен заполнить все поля формы и нажать на кнопку "Регистрация". Программа проверяет наличие введенного Ника в базе данных. (Ник должен быть уникальным). При успешной проверке происходит регистрация и данные из формы записываются в базу данных.
Рисунок 2.26 - форма регистрации
Теперь пользователь может войти в систему, просто осуществив ввод Ника и пароля в левой части формы.
Зарегистрированные пользователи могут оставлять сообщения в гостевой книге и чате. (Рисунки 2.27 и 2.28)
Для входа в чат нужно воспользоваться кнопкой входа изображенной на рисунке 2.21. В гостевой книге можно оставить свои вопросы преподавателю, отзывы и предложения. В чате можно завязать беседу по интересующей вас теме.
Рисунок 2.27 - гостевая книга
Рисунок 2.28 - Чат
В гостевой книге и чате использован один и тот же модуль отправки сообщений отображенный на рисунке 2.29. В конце этих страниц пишем: include ”postmodule. php”.
Рисунок 2.29 - модуль отправки сообщений
Также зарегистрированный пользователь может зайти на страницу тестирования (Рисунок 2.30), нажав на кнопку "Тестирование" в левой части страницы. (Рисунок 2.21) В открывшемся окне пользователь может выбрать дисциплину для тестирования. При наведении указатель на ссылку дисциплины, появляется подсказка, в которой отображается количество оставшихся попыток. Всего пользователь имеет по две попытки для каждой из дисциплин.
Рисунок 2.30 - страница тестирования
При выборе дисциплины в окне выводятся вопросы по данной теме и случайным образом расположенные ответы (Рисунок 2.31).
Рисунок 2.31 - страница тестирования
Нужно выбрать правильные ответы и нажать на кнопку "Готово". В появившемся окне (Рисунок 2.32) отображаются результаты тестирования. Есть возможность распечатать сертификат в формате RTF, подтверждающий результаты тестирования.
Рисунок 2.32 - результаты тестирования
В закладке "Магазин" предоставленный на страницах сайта материал можно заказать на CD-носителе. Он будет доставлен Вам по почте. Для входа в интернет магазин нужно воспользоваться кнопкой "Магазин" отображенной на рисунке 2.21. Откроется окно с информацией о дисках по дисциплинам, доступных к заказу. (Рисунок 2.33)
Рисунок 2.33 - интернет магазин
Для заказа диска с интересующей информацией нужно нажать на ссылку с названием диска. Откроется окно регистрации заказа (Рисунок 2.34), в котором нужно заполнить все поля и нажать кнопку "Заказать".
Рисунок 2.34 - регистрация заказа
В появившемся окне будут представлены данные регистрации заказа, количество заказанных дисков и сумма оплаты. После проверки всех данных нужно подтвердить заказ нажав на ссылку "Заказать", после чего программа подтвердит регистрацию заказа. (Рисунок 2.35)
Рисунок 2.35 - подтверждение заказа
Одновременно произойдет отправка по электронной почте с уведомление о поступлении заказа администратору сайта.
$mess=$_SESSION ['client'] ['name']. " ". $_SESSION ['client'] ['sname']. " заказал(а)". $_SESSION ['client'] ['count']. " ". $idz ['title']. " на сумму: ". $_SESSION ['client'] ['count'] *$idz ['price']. "р. Заказ нужно доставить по адресу: ". $_SESSION ['client'] ['address']. ". Адрес электронной почты: ". $_SESSION ['client'] ['email']. ". ";
if(! mail('kash@newmsk. tula. net', 'Поступил заказ', $mess, "Content-type: text/plain; charset=UTF-8", "Content-Transfer-Encoding: 8bit")) echo"Невозможно соединиться с почтовым сервером! ";
Где "Content-type: text/plain; charset=UTF-8", "Content-Transfer-Encoding: 8bit" - заголовки определяющие кодировку сообщения. (Рисунок 2.36).
Рисунок 2.36 - Результат обработки функции mail
Чтобы зайти на страницу администрирования нужно в нижней части главной страницы нажать на ссылку "Администрирование модуля - Интернет технологии". (Рисунок 2.37)
Рисунок 2.37 - ссылка на страницу администрирования
В открывшемся окне в полях ввода нужно ввести имя и пароль администратора. (Рисунок 2.38). По умолчания это "alex" и "2202".
Рисунок 2.38 - доступ к странице администрирования
Откроется главная страница администратора (Рисунок 2.39)
Рисунок 2.39 - главная страница администратора
На этой странице есть ссылки на страницы:
"Экзаменатор" (Рисунок 2.40), где можно удалить отдельные вопросы по какому либо предмету или удалить весь предмет;
Рисунок 2.40 - страница администратора "Экзаменатор"
"Ввод новых вопросов" (Рисунок 2.41), где можно ввести новые вопросы по существующим предметам или создать новый предмет;
Рисунок 2.41 - Ввод новых вопросов
"Студенты" (Рисунок 2.42), где можно просмотреть результаты тестирования по одному студенту, по одному предмету или весь список, а также удалить некоторые записи;
Рисунок 2.42 - просмотр результатов по одному студенту
"Гостевая книга" (Рисунки 2.43, 2.44), где можно просмотреть, ввести, удалить запрещенные для записи адреса, а также удалить некоторые записи сообщений;
Рисунок 2.43 - просмотр записей гостевой книги
Рисунок 2.44 - блок запрещенных адресов гостевой книги
"Чат" (Рисунок 2.45, 2.46), где можно просмотреть, ввести, удалить запрещенные адреса, а также удалить некоторые записи сообщений.
Рисунок 2.45 - запрещенные адреса чата
Рисунок 2.46 - блок сообщений чата
"Магазин" (Рисунки 2.47, 2.49, 2.50, 2.51), - где можно просмотреть, ввести, удалить новые товары. Просмотреть, удалить заказчиков, а также просматривать поступившие заказы. При нажатии на ссылку с именем заказчика, данные заказа экспортируются в MS Word. (Рисунок 2.48). При нажатии на ссылку "Выполнен", происходит смена статуса выполнения заказа на положительный, и отправка сообщения о выполнении заказа на электронный адрес заказчика.
Рисунок 2.47 - страница заказов интернет – магазина
Рисунок 2.48 - данные заказа в MS Word
Рисунок 2.49 - Ввод новых товаров
Рисунок 2.50 - просмотр существующих товаров
Рисунок 2.51 - заказчики интернет-магазина
Для определения трудоемкости разработки АИС (автоматизированной информационной системы) прежде всего составляется перечень всех основных этапов работ, которые должны быть выполнены [15]. Форма разделения работ по этапам с указанием трудоемкости их выполнения приведена в таблице 3.1
Таблица 3.1 - Распределение работ по этапам и видам и оценка их трудоемкости
Этап проведения
|
Вид работы на данном этапе
|
Трудоемкость выполнения, чел. - ч.
|
Подготовительный
|
Сбор данных о предметной области
|
50
|
Определение задач
|
20
|
Анализ данных
|
40
|
Создание структуры баз данных
|
10
|
Этап реализации
|
Разработка алгоритма
|
20
|
Разработка web-интерфейса
|
40
|
Написание программы
|
90
|
Заключительный
|
Отладка программы
|
100
|
Оформление пояснительной записки
|
40
|
ИТОГО трудоемкость выполнения дипломной работы
|
410
|
Определение затрат на разработку АИС производится путем составления соответствующей сметы, которая включает следующие статьи:
Материальные затраты.
Затраты на оплату труда.
Отчисления на социальные нужды.
Амортизация основных фондов.
Прочие затраты.
Если для разработки АИС используется электрооборудование, то необходимо рассчитать затраты на электроэнергию по форме, приведенной в таблице 3.2
Таблица 3.2 - Затраты на электроэнергию
*
|
Паспортная мощность, кВт
|
Коэффи-циент использо-вания мощности
|
Время работы оборудования для разработки АИС, ч
|
Цена электроэнергии,
|
Сумма, руб.
|
ПК
|
0,300
|
0,8
|
410
|
1,66
|
163,34
|
Монитор
|
0,080
|
0,9
|
410
|
1,66
|
49,0032
|
Принтер
|
0,264
|
0,9
|
5
|
1,66
|
1,97
|
ИТОГО
|
214,32
|
Общая сумма затрат на электроэнергию (ЗЭ) рассчитывается по формуле (3.1):
,
|
(3.1)
|
где Mi - паспортная мощность i-го электрооборудования, кВт;
Ki - коэффициент использования мощности i-го электрооборудования
(принимается Кi = 0.7¸0.9);
Ц - цена электроэнергии, руб/кВт×ч;
- вид электрооборудования;
количество электрооборудования;
- количество электрооборудования.
|
руб.
Общая сумма затрат на оплату труда определяется по форме, приведенной в таблице 3.3
Таблица 3.3 - Затраты на оплату труда
Категория работника
|
Квалификация
|
Трудоемкость разработки АИС,
чел. - ч.
|
Часовая ставка, руб/ч
|
Сумма, руб
|
Разработчик программы
|
Студент-программист
|
410
|
38,52
|
15793. 20
|
Руководитель диплома
|
Доцент
|
20
|
36,9
|
738.00
|
Консультант по БЖД
|
Доцент
|
2
|
40,76
|
81.52
|
Консультант по экономической части
|
Старший преподаватель
|
2
|
36,9
|
73.80
|
Итого
|
-
|
-
|
-
|
16686.52
|
Общая сумма затрат на оплату труда () определяется по формуле (3.2):
,
|
(3.2)
|
где - часовая ставка i-го работника, руб.,
- время на разработку АИС, ч,
i- категория работника,
n- количество работников, занятых разработкой АИС.
|
Общее время работы программиста Т определяется из таблицы 3.1 и равно 410 часов. Министерством образования РФ установлены следующие нормы затрат рабочего времени на одну дипломную работу: руководитель работы 20 ч, консультант по БЖД - 2 ч, консультант по экономической части - 2 ч.
Среднечасовая заработная плата разработчика рассчитывается по формуле (3.3):
,
|
(3.3)
|
где - среднемесячная заработная плата разработчика АИС (в данном случае берется размер стипендии), руб.;
- среднемесячный фонд рабочего времени (приблизительно 100 часов в месяц).
|
Стоимость одного часа работы программиста равна:
руб.
Общая сумма затрат на оплату труда равна:
руб.
В статью "Отчисления на социальные нужды" включаются сумма единого социального налога и взносы на страхование от несчастных случаев и профессиональных заболеваний, которые составляют соответственно 26% и 0,2% (для НИ РХТУ) от затрат на оплату труда всех работников, занятых выполнением НИР. Студенческие стипендии данным налогом не облагаются.
Отчисления на социальные нужды составят:
руб.
Расчет амортизационных отчислений приведен в таблице 3.4
Таблица 3.4 - Расчет амортизационных отчислений
Наимено-вание оборудова-ния
|
Стоимость оборудования, руб
|
Годовая норма амортизации,%
|
Эффективный фонд времени работы оборудования, ч/год
|
Время работы оборудования во время разработки АИС, ч
|
Сум-ма, руб.
|
Компьютер разработчика
|
24600.00
|
20
|
2224
|
410
|
907.01
|
Итого
|
907.01
|
Общая сумма амортизационных отчислений определяется по формуле (3.4):
,
|
(3.4)
|
где - стоимость i-го оборудования, руб.;
- годовая норма амортизации i-го оборудования,%;
- время работы i-го оборудования за весь период разработки АИС, ч;
- эффективный фонд времени работы i-го оборудования за год, ч/год;
- вид оборудования;
- количество оборудования.
|
Сумма амортизационных отчислений составит:
руб.
В статью “Прочие затраты” включаются расходы на содержание административно-управленческого и учебно-вспомогательного персонала, на отопление, освещение и текущий ремонт помещений, канцелярские, командировочные и прочие хозяйственные расходы. Затраты по этой статье принимаются в размере 70-75% от затрат на оплату труда (по согласованию с консультантом по экономической части).
руб.
На основании полученных данных по отдельным статьям составляется смета затрат на разработку АИС по форме, приведенной в таблице 3.5
Таблица 3.5 - Смета затрат на разработку модуля сайта по дисциплине "Интернет - технологии"
Статьи затрат
|
Сумма, руб.
|
1 Материальные затраты
|
214.32
|
2 Затраты на оплату труда
|
16686.52
|
3 Отчисления на социальные нужды
|
4371.87
|
4 Амортизация основных фондов
|
907.01
|
5 Прочие затраты
|
11680.56
|
Итого по смете
|
37290.50
|
Затраты на разработку АИС составят руб.
Величина возможной (договорной) цены приложения должна устанавливаться с учетом эффективности, качества и сроков ее разработки на уровне, отвечающем экономическим интересам заказчика (потребителя) и исполнителя.
Договорная цена () для прикладных АИС рассчитывается по формуле (3.5):
Формула:
,
|
(3.5)
|
где - затраты на разработку АИС (из таблицы 3.5), руб.;
- средний уровень рентабельности АИС.% (принимается в размере 20-30% по согласованию с консультантом по экономической части);.
|
Исходя из этого, договорная цена данной АИС будет следующей:
руб.
Выбор средств программирования при проектировании во многом зависит от возможностей системы и в не меньшей степени от знакомства с ней разработчика. Web-приложение "Интернет технологии" написано с использованием современных средств программирования, таких как язык PHP 4 и сервера баз данных MySQL. Для работы этих средств требуется установка web-сервера Apache.
Язык PHP представляет собой полноценный скриптовый язык. Он прост в использовании и функциональнее других современных языков. Практически ни один уважающий себя web-ресурс не обходится без использования на страницах скриптов, написанных на PHP. Язык в полной мере соответствует требованиям, предъявляемым к современным средствам проектирования. А поддержка основных форматов баз данных, таких как mSQL, MySQL, Oracle, InterBase, PostgreSQL, dBase, доступ к которым реализован через их собственные API, обусловило его широчайшее применение.
Перечисленные средства бесплатны, нетребовательны к аппаратной части системы, быстры в работе и поддерживают все те возможности, которые необходимы при разработке данного программного продукта. Они работают в операционных системах UNIX, Microsoft Windows 98/XP.
В качестве среды разработки используется популярное средство создания web-узлов Macromedia Dreamweaver MX 2004. Для работы с ним рекомендуется установка операционной системы Microsoft Windows XP.
Следует учитывать тот фактор, что конечный пользователь, для которого и разработано данное web-приложение, увидит лишь последовательность web-страниц с требуемой ему информацией. И на компьютере пользователя должен быть установлен лишь web-браузер, поддерживающий отображение страниц с PHP-скриптами, например Internet Explorer 5 и выше. Наиболее популярной современной операционной системой для домашнего использования является Microsoft Windows XP Home Edition или Microsoft Windows XP Professional Edition, в которые уже встроен браузер Internet Explorer 6. Операционные системы Windows 98/NT/2000, UNIX сейчас используется довольно редко. Поэтому будем учитывать требования, предъявляемые к Windows XP.
Таким образом, выбор технических средств зависит от нескольких факторов:
Минимальные требования для работы операционной системы (Windows XP);
Минимальные требования к среде разработки программного обеспечения (Macromedia Dreamweaver MX 2004);
Минимальные требования к средствам разработки программного обеспечения (Apache, PHP 4, MySQL);
Минимальные требования к разрабатываемой системе;
Минимальные требования к пользовательской системе.
Термин "минимальные" включает в себя тот минимум, при котором данный модуль работает. Этих требований часто не хватает для комфортной работы с программой (необходимый минимум для работы с системой без больших временных задержек, без сбоев).
Рекомендуемыми требованиями для операционной системы Windows XP Home Edition являются Pentium IV/Celeron, оперативная память 256 Мб, жесткий диск объемом 3 Гб.
Для установки пакета Macromedia Dreamweaver MX 2004 необходим компьютер, работающий под управлением Windows XP. Таким образом, эти требования такие же, как и требования к операционной среде.
При выборе технических средств необходимо также учитывать движение времени, которое с каждым днем повышает требования аппаратной части. И возможности покупки (здесь имеется в виду, что сейчас все фирмы пытаются продавать компьютеры, пользующиеся спросом, и найти устаревшую модель очень сложно).
Предлагается следующая конфигурация компьютера для разработки web-приложения:
Процессор Intel Celeron 2,8GHz (128k, 400MHz) Box: 2750 руб.;
Материнская плата - S478 GIGABYTE 8LD533-P i845GL (mATX, 2DDR, SB, SVGA, LAN, U2.0): 1612 руб.;
Оперативная память - DIMM 256Mb DDR SDRAM M. Tec (PC3200, 400MHz, CL2.5): 646 руб.;
Жесткий диск - 40Gb IDE MAXTOR “6E040L0” 7200rpm U-ATA 133: 1509 руб.;
Дисковод FDD 3,5” - MITSUMI: 182 руб.;
CD-ROM - ASUS “CD-S520 QuieTrack” 52x: 466 руб.;
Монитор - 17” SAMSUNG “793DF” 0,20 (1280x1024@65 Гц) MPRII TCO’03: 4206 руб.;
Корпус - Miditower BX-77S ATX2.03, 300w: 1081 руб.;
Клавиатура - MITSUMI Classic PS/2: 267 руб.;
Мышь - LOGITECH “M-SBF90” оптич. PS/2: 227 руб.;
Сетевой фильтр - SVEN “Optima” (3,1м) на 5 розеток: 152 руб.;
Операционная система - Windows XP Home Edition: 2122 руб.;
Средство разработки web-узлов - Macromedia Dreamweaver MX 2004 Studio: 4200 руб.
Предлагается следующая конфигурация клиентской рабочей станции:
Процессор Intel Celeron 1,8GHz (128k, 400MHz) Box: 1797 руб.;
Материнская плата - S478 GIGABYTE 8LD533-P i845GL (mATX, 2DDR, SB, SVGA, LAN, U2.0): 1612 руб.;
Оперативная память - DIMM 256Mb DDR SDRAM M. Tec (PC3200, 400MHz, CL2.5): 646 руб.;
Жесткий диск - 40Gb IDE MAXTOR “6E040L0” 7200rpm U-ATA 133: 1509 руб.;
Дисковод FDD 3,5” - MITSUMI: 182 руб.;
CD-ROM - ASUS “CD-S520 QuieTrack” 52x: 466 руб.;
Монитор - 17” SAMSUNG “793DF” 0,20 (1280x1024@65 Гц) MPRII TCO’03: 4206 руб.;
Корпус - Miditower BX-77S ATX2.03, 300w: 1081 руб.;
Клавиатура - MITSUMI Classic PS/2: 267 руб.;
Мышь - LOGITECH “M-SBF90” оптич. PS/2: 227 руб.;
Сетевой фильтр - SVEN “Optima” (3,1м) на 5 розеток: 152 руб.;
Операционная система - Windows XP Home Edition: 2122 руб.
Цены на комплектующие даны на 5 мая 2006 по данным ТТЦ "ВЕХА" г. Новомосковск.
Предлагается разместить web-сайт на сервере хостинг-провайдера Agava. ru. Поэтому стоимость серверной части web-приложения, будет включать лишь стоимость хостинга при оплате трех месяцев, т.е.750 руб. При этом регистрация сайта осуществляется бесплатно.
Итого: 34437 руб.
Таким образом, общая сумма затрат на технические средства и программное обеспечение составит: 34437 руб.
3.5
Описание экономического и социального эффекта от разработки приложения
При разработке web-приложения “Модуль сайта преподавателя по дисциплине Интернет технологии” предполагалось, что внедрение данной системы не окажет какой-нибудь существенной экономической выгоды. Наоборот, для ее внедрения понадобятся дополнительные вложения средств, так как регистрация домена, размещение, хостинг и поддержка web-приложения в сети Интернет требуют дополнительных затрат. Например, хостинг с поддержкой PHP и MySQL от Agava. ru стоит порядка 9$ в месяц, регистрация домена бесплатна.
Внедрение данной системы позволит решить ряд задач:
Усовершенствуется организации учебного процесса и научной деятельности за счет обеспечения коллективного контролируемого доступа к информационным ресурсам сети Интернет;
Создание базы данных позволит обеспечить безопасность информации на должном уровне;
Повысит престиж института.
Дистанционное обучение представленное в данном проекте состоит из нескольких этапов:
Регистрация пользователя в системе;
Получение доступа к электронным материалам курса;
Изучение материалов курса;
Общение с преподавателем и студентами посредством гостевой книги и чата;
Прохождение тестирования.
Прохождение всех этапов дистанционного обучения совокупно с требованиями предъявляемыми к студенту институтом, т.е. обязательный минимум посещения лекций и т.п., позволит студенту получить допуск к сдаче зачета или экзамена без выполнения каких-то заданий курса. Эти задания должны быть определенны преподавателем - разработчиком данного курса.
Электронные материалы полностью загружены на сервер в сети Интернет, поэтому зарегистрированный пользователь получает доступ к информации и может раньше приступать к выполнению поставленных задач. Регистрация пользователя обязательно подтверждается преподавателем.
Дистанционное обучение принято определять как комплекс образовательных услуг, предоставляемых широким слоям специалистов-пользователей с помощью специализированной информационно-образовательной среды на любом расстоянии от учреждений дополнительного профессионального образования.
Дистанционное обучение хорошо вписывается в рамки системы АИС ВУЗ. Такой способ обучения позволяет без отрыва от рабочего места, заниматься изучением обязательного материала курса.
Так как на данный момент все больше людей обращает свое внимание на Internet, не только в целях развлечений, но и в образовательных целях, то тема дистанционного обучения как нельзя лучше подходит для данной работы.
Существуют различные способы организации дистанционного обучения на базе новых информационных технологий: на основе интерактивного телевидения, телекоммуникаций, на основе технологий CD-ROM, учебного радио и телевидения, видеозаписи, пр.
При использовании видеокассет, радио и телевидения в обучении связь получается односторонней. Преподаватель, говоря об очередной теме не ориентируется на аудиторию (как это бывает при очном обучении). То есть, если кто-то что-то не понял, можно, конечно, перемотать кассету, но она не ответит на вопрос, и сомнения останутся. И педагог не сможет уделить внимание каждому ученику отдельно.
Интерактивное телевидение, радио пока не актуально для наших сетей в связи с низкой скоростью передачи данных и достаточно высокой стоимостью выделенных каналов. Метод дистанционного обучения посредством web-интерфейса с возможностью проверки уровня усвоения знаний наиболее удобен, так как не требует больших затрат и предоставляет актуальную информацию в удобной форме и в удобное время.
Социальный эффект от внедрения web-приложения “Модуль преподавателя по дисциплине Интернет технологии ” по мнению автора следующий:
Дополнительная возможность пользователю пройти курс обучения, изучить материалы данной дисциплины и осуществить контроль знаний в удобном для него месте и в удобное время;
Возможность обучения не зависит от фактического расстояния между преподавателем и студентом;
Возможность обучения без привязки к конкретному компьютеру;
Снижение нагрузки на преподавателя посредством автоматизированного контроля знаний с выставлением итоговых оценок. Просмотреть результаты тестирования преподаватель может в любой момент и имеет возможность прекратить обучение по дисциплине того или иного студента при неудовлетворительных промежуточных результатах. Для этого нужен лишь доступ в Интернет;
Получение своевременного доступа к электронным материалам дисциплины зарегистрированным пользователям в любой момент при наличии доступа в Интернет;
Удобство пользователя при работе с web-приложением. Нет необходимости в установке какого-либо дополнительного программного обеспечения;
Обучение ведется преимущественно самостоятельно, но пользователь может воспользоваться помощью преподавателя посредством электронной почты, дистанционной консультации в чате или, задав вопрос в гостевой книге;
Изучение материала происходит в удобном для пользователя темпе, что позволяет более внимательно прорабатывать сложный материал и не затрачивать дополнительное время на более легкий;
Последовательность доступа к электронным материалам позволяет контролировать текущий уровень усвоения дисциплины студентом;
Возможность совмещения обучения и работы;
Обеспечение надежности хранения информации о зарегистрированных пользователях. Просматривать данные системы могут только преподаватель и администратор web-приложения;
Актуальность предоставляемой информации;
Снижение стоимости подготовки и издания электронных материалов;
Повышение престижа подразделения.
Нужно принять во внимание также то, что такой социальный эффект во многом зависит от политики руководства института, возможности непосещения некоторых занятий и согласия преподавателя курса.
Совершенствование данного программного продукта не требует дополнительных вложений, изменения можно внести на любой локальной машине, при условии наличия необходимого программного обеспечения, а затем синхронизировать с удаленным сервером.
В помещении аудитории № 213 в процессе выполнения работы не использовались никакие вещества, обладающие токсичными свойствами.
Пожароопасными свойствами обладают твердые вещества, расположенные в данном помещении, такие как столы, стулья, книжные стеллажи, компьютеры, провода, сетевые кабели и др. Из наиболее пожароопасных объектов можно выделить мебель: это - столы, шкафы (ДСП), двери (дерево+ДВП). Также имеется некоторое количество бумажных материалов, в том числе обоев. Кроме того, при возгорании помещения различная аппаратура из пластмассы (ЭВМ) может не только активно гореть, но и выделять ядовитые химические продукты сгорания. Дверные проемы и оконные рамы из дерева, а также предметы интерьера различного рода, в случае возгорания также будут способствовать распространению пламени. Еще один пожароопасный материал - линолеум. Он при пожаре выделяет вредные продукты горения.
ГОСТ 12.1 044-89 ССБТ “Пожаро-взрывоопасность веществ и материалов, номенклатура показателей и методы их определения” устанавливает номенклатуру показателей пожаро-взрывоопасности веществ и материалов, их применяемость, а также методы их определения.
В процессе выполнения экспериментальной части данной работы могут возникнуть некоторые опасности и вредности, характеристика которых приведена ниже:
Воздействие электромагнитного излучения.
Основную опасность при работе на компьютере представляют электромагнитные излучения, способные приводить к необратимым изменениям в организме человека. Наибольшую опасность представляет излучение от электронно-лучевой трубки монитора. Необходимо заметить, что подобным воздействием на окружающую среду обладают практически все электрические приборы;
Поражение электрическим током.
Все оборудование, установленное в рабочем помещении, работает от сети напряжением 220В. Следовательно, ЭВМ и периферийные устройства, которые использовались в процессе выполнения экспериментальной части работы, представляют опасность поражения человека-оператора электрическим током из-за:
Нарушения целостности кабельной системы;
Короткого замыкания;
Повреждения корпуса оборудования;
Несоблюдения правил техники безопасности;
Опасные факторы пожара, которые воздействуют на людей:
Пламя и искры;
Повышение температуры окружающей среды;
Токсичные продукты сгорания и термического разложения, главным образом, корпусов оборудования, микросхем;
Дым;
Пониженная концентрация кислорода;
Воздействие на анализаторы человека:
Зрительный анализатор является основным источником получения информации. Особенно в области работ с вычислительной техникой, где обмен информацией между человеком и ЭВМ осуществляется, главным образом, через отображение данных на дисплее, наиболее вероятны случаи перенапряжения органов зрения, что в дальнейшем может привести к нарушению функций и падению зрения.
Слуховой анализатор. В помещении аудитории № 213 есть источники повышенного уровня шума - это вентиляторы, охлаждающие процессоры.
Пожар в помещении аудитории может возникнуть (исключая человеческий фактор) из-за короткого замыкания проводки, а также из-за выхода из строя различного электрооборудования.
Согласно НПБ 105-03 [16] по взрывопожарной и пожарной опасности помещение относится к категории В (пожароопасная), так как есть твердые горючие вещества. Согласно СНиП-21.01-97 [17] помещение относится ко II-ой степени огнестойкости.
Согласно ПУЭ по опасности поражения электрическим током помещение относится к категории без повышенной опасности (I категория) и не относится к классу взрывоопасных или пожароопасных зон, так как характеризуется отсутствием условий, создающих повышенную или особую опасность.
Допустимые нормы температуры, относительной влажности и скорости движения воздуха согласно СанПиН 2.2.4 548-96 "Гигиенические требования к микроклимату производственных помещений" [18] в рабочей зоне аудитории для холодного и теплого времени года для категории 1а, к которой относятся виды работ, для аудитории № 213, т.е. работы с интенсивностью энергозатрат до 120 ккал/ч (до 139 Вт), производимые сидя и сопровождающиеся незначительным физическим напряжением, можно отразить таблицей 4.1:
Таблица 4.1 - Допустимые нормы температуры, относительной влажности и скорости движения воздуха
Период года
|
Температура воздуха, °С
|
Температура поверхностей, °С
|
Относительная влажность,%
|
Скорость движения воздуха, м/с
|
Диапазон ниже оптимальных величин (tвозд < tоптим)
|
Диапазон выше оптимальных величин (tвозд > tоптим)
|
Для диапазона температур воздуха ниже оптимальных (tвозд < tоптим)
|
Для диапазона температур воздуха выше оптимальных (tвозд > tоптим)
|
Холодный
|
20-21,9
|
24,1-25
|
19,0-26,0
|
15-75
|
0,1
|
0,1
|
Теплый
|
21,0-22,9
|
25,1-28,0
|
20,0-29,0
|
15-75
|
0,1
|
0,2
|
Для поддержания температуры воздуха в заданных пределах помещение должно быть оборудовано отопительными установками (для холодного времени года), а также системой вентиляции и кондиционирования (для теплого времени года).
Согласно СанПиН 2.2.2 - 2.4 1340-03 [19] устанавливаются гигиенические требования к персональным электронно-вычислительным машинам и организации работы.
Требования к ПЭВМ. При работе на ПЭВМ должный контроль уделяется следующим параметрам: уровням электромагнитных полей (ЭМП), акустического шума, концентрации вредных веществ в воздухе, визуальным показателям ВДТ, мягкому рентгеновскому излучению. Эти параметры соответствовуют нормам.
Конструкция ПЭВМ обеспечивает возможность поворота корпуса в горизонтальной и вертикальной плоскости с фиксацией в заданном положении для обеспечения фронтального наблюдения экрана ВДТ. Д.изайн ПЭВМ предусматривает окраску корпуса в спокойные мягкие тона с диффузным рассеиванием света. Корпус ПЭВМ, клавиатура и другие блоки и устройства ПЭВМ имеют матовую поверхность и не имеют блестящих деталей, способных создавать блики. Конструкция ВДТ предусматривает регулирование яркости и контрастности.
Требования к помещениям для работы с ПЭВМ.
Помещения для эксплуатации ПЭВМ должны имеют естественное и искусственное освещение. Оконные проемы оборудованы регулируемыми устройствами типа жалюзи из занавесей.
Требования к уровням шума и вибрации.
При выполнении основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих местах не превышают предельно допустимых значений.
Шумящее оборудование (принтеры, серверы), уровни шума которых превышают нормативные, размещены вне аудитории.
Требования к освещению на рабочих местах, оборудованных ПЭВМ.
Рациональное освещение помещений и рабочих мест - еще один из важнейших элементов благоприятных условий труда. При правильном освещении повышается производительность труда, улучшаются условия безопасности, снижается утомляемость.
Расчет освещенности должен выполняться с учетом двух основных правил:
Для обеспечения требуемой контрастности между экраном дисплея и окружающей обстановкой уровень освещенности должен составлять 300-500 лк при использовании общего освещения.
При установке экрана монитора следует учитывать направление потока естественного света и располагать экран таким образом, чтобы поток исходил сбоку с левой стороны.
Мониторы на рабочих местах ориентированы боковой стороной к световым проемам, чтобы естественный свет падал преимущественно слева. Искусственное освещение равномерное.
В случае появления у работающих дискомфорта или неприятных ощущений администрация обязана ввести индивидуальный график работы или перевести на работу, не связанную с компьютером.
Работодатели несут ответственность за проведение оценки рабочего места с точки зрения проведения обучения. Необходимо проводить обучение по вышеизложенным требованиям.
При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.
Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой 1,5-2,0 м.
Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов.
Электробезопасность
.
Для защиты людей от поражения электрическим током принимаются следующие меры электробезопасности:
недопустимо оголение токоведущих частей, приборов;
электропроводка внутренняя (в стенах), напряжение сети 220В, частота тока 50Гц;
все приборы и оборудование должны быть в исправном состоянии и иметь защитное заземление;
предусматривается аварийное отключение электросети в случае резкого увеличения тока (короткое замыкание и т.п.), для этих целей необходима установка защитного оборудования - плавких предохранителей, реле;
пол должен быть выполнен из нетоковедущих материалов (дерево, линолеум и т.п.);
все работы по монтажу производятся при отключенном напряжении с использованием инструмента с изолированными рукоятками;
к работе допускаются лица, прошедшие инструктаж по технике безопасности;
помещение поддерживается в чистоте и сухости, что является мерой для повышения сопротивления человека;
особое внимание уделяется исправности розеток и разъемов.
В качестве пожаропредупреждения можно посоветовать применять соответствующее электрооборудование, соблюдать требования искробезопасности и т.д. К защите можно отнести следующее: применение пожарной сигнализации, средств пожаротушения, применение конструкций с заданными пределами огнестойкости, эвакуация людей, применение средств коллективной и индивидуальной защиты. Должны быть проведены в полном объеме и своевременно мероприятия по обучению правилам пожарной безопасности, разработаны нормы, регламенты, средства наглядной агитации, контроль. В помещении должно быть необходимое количество огнетушителей, объем которых должен позволять ликвидировать очаг пожара в помещении. Так как возникновение пожара в данном помещении возможно, скорее всего, из-за электрической неисправности, то можно порекомендовать углекислотные огнетушители, типа ОУ-5, которые применяются для тушения загорании различных веществ и материалов, а также электроустановок, находящихся под напряжением.
Никаких вредных выбросов и загрязненного воздуха в рабочем помещении не образуется. Поэтому защита окружающей среды сводится к соблюдению элементарных правил:
Поддержание санитарно-гигиенического состояния рабочего места, то есть уборка мусора в специально отведенные для этого урны. Категорически запрещается выбрасывать мусор в окна, загрязняя тем самым территорию, прилежащую к НИ РХТУ;
Регулярно должна проводиться влажная уборка помещения. Необходимо соблюдать чистоту и порядок в помещении.
Системы оповещения о непосредственной угрозе нападения противника.
На основании постановления главы муниципального образования города Новомосковска и Новомосковского района 30.12.98 г. №2775.
"О системе оповещения и информировании населения об угрозе возникновения или возникновении ЧС-й" в г. Новомосковске и Новомосковском районе разработана система оповещения и информирования населения. Утверждены и введены в действие тексты информации об угрозе возникновения или возникновении ЧС-й в мирное и военное время, а также об отбое опасности, подлежащее передаче по сетям местного радиовещания, телеканалам ТНТ, RenTV и посредством использования громкоговорящих устройств УВД Новомосковского района.
Система оповещения в институте: решение на производство тех или иных мероприятий о непосредственной угрозе нападения противника принимает ректор НГО НИ РХТУ на основании информации полученной по СМИ или адресным распоряжениям (указанием органов управления муниципального образования города Новомосковска и Новомосковского района).
Защитных сооружений, отвечающих требованиям норм ИТМ ГО институт не имеет, следовательно, при угрозе заражения города СДЯВ защита сотрудников института и студентов будет состоять из мероприятий по экстренной эвакуации с использованием простейших средств защиты органов дыхания и других подручных средств.
Своих средств защиты органов дыхания институт не имеет, поэтому, если позволяет обстановка, по указанию Управления по делам ГО и ЧС города в институте развертывается пункт выдачи противогазов в спортивном зале нового учебного корпуса и организуется выдача противогазов всему личному составу института и членам их семей и только после этого организуется вывоз людей из предполагаемой зоны заражения. В случае экстренной эвакуации личный состав использует простейшие средства защиты органов дыхания (влажные ватно-марлевые повязки, респираторы, полотенце и т.п.).
На объектовом уровне (в т. ч. институте) координирующим органом является объектовая комиссия по ЧС (КЧС объекта), которая организует и проводит все мероприятия по защите личного состава института.
Для ликвидации последствий чрезвычайных ситуаций в военное время в НИ РХТУ созданы формирования ГО:
Санитарная дружина;
Пост РХН;
Группа охраны общественного порядка;
Сборный эвакопункт;
Пункт выдачи противогазов.
Обучение населения в области ГО осуществляется в рамках единой системы подготовки населения в области чрезвычайной обороны и защиты от чрезвычайных ситуаций природного и техногенного характера. Обучение является обязательным и проводится по месту работы, учебы и месту жительства по определенным программам. Работающее население, не входящее в состав формирований обучаются:
По месту работы;
Участие в учениях, тренировках и других плановых мероприятиях по ГО;
Индивидуальные изучения способов защиты от опасностей, возникающих при ведении военных действий или вследствие этих действий.
При проектировании рабочих мест в вычислительных центрах или конторских помещениях следует предварительно рассчитать эквивалентный уровень звука А на рабочих местах, если известны шумовые характеристики отдельных устройств [20].
Основой для расчетов являются корректированные уровни звуковой мощности А источников шума. Если рассматриваемое рабочее место находится в ближней сфере источника шума, то необходимо знать уровень звука А этого источника на расстоянии удаленности оператора.
Частотно-зависимые акустические параметры следует определять для среднеоктавной частоты 500 Гц.
Определение типа помещения.
В нашем случае аудитория 213 (рисунок 4.1) имеет размеры: L = 10,4 м; B = 6м; H = 3,5м.
r1=9,5m r2=8,3m r3=7,1m r4=6,1m r5=5,2m r6=4,6m r7=4,4m
r8=3,4м
r9=2м
Рисунок 4.1 – Аудитория № 213
Следовательно:
помещение кубическое.
Ближняя сфера распространяется от источника шума на расстояния:
0,75·lmax - в кубическом помещении, где lmax - максимальные размеры устройств, м;
lmax= 1м; ближняя сфера равна 0,75м.
Так как рабочее место находится в ближней сфере источника шума, то уровень звукового давления А = 52дБ.
Определим акустические параметры помещения.
Акустические свойства кубического помещения характеризуются при помощи эквивалентной площади звукопоглощения (А) в квадратных метрах. Значение (А) определяют исходя из среднего времени коэффициента звукопоглощения всей поверхности, ограничивающей помещение:
(1)
Для кубических помещений без звукопоглощающей облицовки средний коэффициент звукопоглощения можно принять равным = 0,17.
Определим площадь звукопоглощения всей поверхности ограничивающей помещение:
(2)
Тогда А по формуле (1):
Рассчитаем уровень звукового давления (L(rν) A) от отдельного источника на рабочем месте по формуле:
(3)
где LWA - корректированный уровень звуковой мощности А, дБ, относящегося к этому источнику шума;
ΔLRQ - поправка, дБ, учитывающая тип помещения;
ΔLr - поправка, дБ, учитывающая расстояние и поглощение звука;
ΔLR - поправка, дБ, учитывающая отражение звука от стен.
Для кубического помещения:
ΔLRQ= 0 дБ и ΔLR= 0 дБ.
Формулу (3) применяют если r > 0,75·ℓmax (кубическое помещение).
Поправку ΔLr определяют по чертежу 4.2:
Чертеж 4.2 - Определение ΔLr для кубических помещений
Определим уровень звукового давления (L(rν) A) по формуле (3):
Расчет общего уровня звукового давления LAqes, дБ
Прежде чем провести расчет общего уровня звукового давления (LAqes) по формуле (4), следует учесть по формуле (5) время эксплуатации отдельных устройств, которое выражают коэффициентом загрузки Кз.
Коэффициент загрузки Кз определяют на основе допустимого времени работы устройства за одну рабочую смену. В нашем случае Кз = 0,7.
(4)
(5)
Определим L(rv) Akorr по формуле (4):
Определим общий уровень звукового давления LAqes по формуле (5):
Рассматриваемое рабочее место подходит под категорию: "Рабочие места с использованием устройств в административных помещениях и лабораториях, связанных с часто повторяющимися операциями", где допустимое значение уровня шума до 60 дБ. Следовательно, имеет место превышение уровня звука на рабочем месте [20].
Для снижения уровня шума необходимо перейти на образцы вычислительной техники, выполненные по современным технологиям: вместо матричных принтеров следует использовать печатающие устройства лазерного или струйного типа, производящие процесс печати практически бесшумно; что же касается вентиляторов, то следует использовать современные качественные образцы - в отличие от дешевых моделей, произведенных малоизвестными изготовителями, они создают достаточно невысокий шум. Также можно использовать аккустический экран высотой около 3 метров.
Искусственное освещение предусматривается в помещениях, в которых недостаточно естественного света, или для освещения помещения в часы суток, когда естественная освещенность отсутствует.
Основной метод расчета - по коэффициенту использования светового потока, которым определяется поток, необходимый для создания заданной освещенности горизонтальной поверхности при общем равномерном освещении с учетом света, отраженного стенами и потолком. Расчет ведется для люминесцентных ламп по следующим формуле (4.3):
,
|
(4.3)
|
Для искусственного освещения нормируемый параметр - освещенность рабочей поверхности, которую согласно СанПиН 2.2.2/2.4 1340-03 [19] принимаем Е = 300 лк.
Выбираем для освещения помещения компактные люминесцентные лампы типа КЛЛ мощностью 55 Вт, номинальным световым потоком
F = 3300 лм.
Принимаем также:
Поправочный коэффициент светильника z = 1,1;
Коэффициент запаса, учитывающий снижение освещенности при эксплуатации k = 1,4;
Коэффициент использования светового потока, зависящий от типа светильника, показателя (индекса - i) помещения, площади помещения, расчетной высоты, коэффициентов отражения потолка, стен, пола помещения и т.д. - u.
,
|
(4.4)
|
где S = 6*10,4 = 62,4 м2 - площадь помещения;
h = 2,5 м - расчетная высота, т.е. расстояние между источником света и освещаемой им рабочей поверхностью;
A = 10,4 м, B = 6 м - длина и ширина помещения соответственно.
|
Тогда коэффициент использования светового потока принимаем равным u = 0,50.
При заданной освещенности и выбранном световом потоке конкретной лампы можно определить количество светильников п:
.
В результате произведенного расчета для оптимального освещения аудитории № 213 получаем 18 компактных люминесцентных ламп КЛЛ мощностью 55 Вт и номинальным световым потоком 3300 лм каждая. Схема размещения рабочих мест и КЛЛ в помещении представлена на рисунке 4.2
3м.
1,8м
Рисунок 4.2 – схема освещения аудитории
В данном дипломном проекте рассматривалась разработка электронного модуля дистанционного обучения предназначенного для размещения в сети Интернет на сайте преподавателя или учебного центра НИ РХТУ.
Электронный модуль дистанционного обучения создавался с целью повышения эффективности процесса обучения студентов заочного факультета.
Модуль разработан на тему "Интернет - технологии" и содержит учебные материалы, лекции, лабораторные работы, индивидуальные задания, систему тестирования - позволяющую в интерактивном режиме проверять уровень знаний у обучающегося, а также средства интерактивного общения - чат и гостевая книга. В модуле предусмотрена обратная связь и система администрирования.
Данные о результатах тестирования обучающихся хранятся централизованно и всегда доступны для просмотра.
Web-интерфейс модуля достаточно удобен для быстрого освоения пользователями. Доступ к модулю осуществляется посредством стандартного web-браузера.
Положительной стороной данного модуля является постоянная система навигации, обязательность авторизации и регистрации, наглядность информации о результатах тестирования.
Дистанционная форма обучения предполагает, что слушатель будет обучаться в удобном месте, в удобное время, в удобном темпе времени, используя имеющиеся компьютерные средства для общения с преподавателем центра, обмениваясь текстовыми сообщениями.
Поставленные цели и задачи выполнены, и разработанный модуль вполне можно применять.
Так как структура дистанционных учебных курсов подразумевает модульный принцип, то разработанный модуль может быть включен в состав курса по Интернет технологиям, или использоваться отдельно.
1. Агапонов С.В. Средства дистанционного обучения. Методика, технологии, инструментарий: СПб.: БХВ-Петербург, 2003. - 336 с.
2. Андреев А.А. Введение в дистанционное обучение. ч. II - М.: МЭСИ, 1997 - 50 с.
3. Методика применения дистанционных технологий (дистанционного обучения) в образовательных учреждениях высшего профессионального образования Российской Федерации от 01.07. 2002 // Министерство образования РФ. Сервер "Дистанционное обучение". Страница "Нормативно-правовая база".
Дистанционное обучение и новые технологии в образовании - М.: Изд. Моск. гос. социальный университет. 1995 г. с.54. 4. Полат Е.С. Моисеева М.В. Дистанционное обучение. - М,: Владос - 1998. - 192 с.
5. Virtual-U // Сервер "DL". Страница "Дистанционное обучение" // http://dl. nw. ru/software/des/part11/.
6. Lotus LearningSpace // Сервер "LearningSpace". Страница "Document" // http://www. lotus. ru/sa/part1/.
7. OPOKC // Сервер "ОРОКС". Страница "software" // http://dl. nw. ru/software/review/.
8. Прометей // Сервер "Дистанционное образование". Страница "СДО "Прометей", версия 4. x" // http://www. prometeus. ru/products/sdo/new. asp
9. Поляков А.А. Системы дистанционного обучения // Новые знания - 1996. - № 3. - С.34-35.
10. Концепция создания и развития единой системы дистанционного образования в России. // Открытое образование, №2, 1997. http://www. mesi. ru/joe/
11. Мержанова М.И. Уроки Web-мастерства. Урок 6. Создаем свой первый сайт. // Мир ПК - 2004. - № 6. - С.76-83.
12. Разработка средств дистанционного обучения, компьютерных сетей и баз данных: Отчет о НИР // НИИ Микроэлектроники и информационной измерительной техники, Рук. Моисеев С.Х., 1995 г.
13. Томсон Лаура: Разработка Веб - приложений на PHP и MySql. // Пер. с англ. -М.: ИПП "Тивали-Стиль", 1997. - 352с.
14. Кухарчик А.М. По ту сторону сайта. Первые шаги в мир PHP // Hard&Soft - 2004. - № 7. - С.112-117.
15. Лобковская О.З. Методические указания по технико-экономическому обоснованию дипломных проектов, связанных с разработкой автоматизированных систем управления и программных изделий. - Новомосковск, 2002.
16. НПБ 105-03. Нормы пожарной безопасности. Определение категорий помещений, зданий и наружных установок по взрывопожарной и пожарной опасности.
17. СНиП-21.01-97. Пожарная безопасность зданий и сооружений.
18. СанПиН 2.2.4 548-96 "Гигиенические требования к микроклимату производственных помещений"
19. СанПиН 2.2.2/2.4 1340-03. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы.
20. ГОСТ 27818-88. Допустимые уровни шума на рабочих местах и методы определения.
21. Котеров Д.В. Самоучитель РНР4. - СПб.: БХВ-Петербург, 2004. - 576с.
22. СТП НИ(ф) РХТУ 201.01 - 2004 Стандарт предприятия. Проекты(работы) дипломные и курсовые: НИ РХТУ им Д.И. Менделеева, подготовлен к печати на кафедрах МСК и АПП
23. Электронные системы // "Система для разработки компьютерных тестов" // Страница "Статьи" http://www. bytic. ru/cue99M/cwf7pvpwke. html.
24. Компьютерная и техническая документация // Сервер "eManual. ru" http://www. emanual. ru
А.1 Листинг модуля "InternetTechnology. php"
<?
if(! session_id()) session_start();
if(! isset($_SESSION ['error_fill']))
$_SESSION ['error_fill'] ['bool'] ='false';
if(isset($_REQUEST ['mode']))
{ $mode=$_REQUEST ['mode'] ;
$_SESSION ['mode'] =$mode;
} else $mode=isset($_SESSION ['mode'])? $_SESSION ['mode']: '';
? >
<html>
<head>
<title>Интернет технологии-Главная страница</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bgcolor='#cbdff7' background="images/blocks_bg. gif">
<?
include('all. php'); doheader('Интернет технологии','');
$color2="#cbdff7"; $color1='#e5e5e5';
$pagegb=''; do_buttons();
echo"<table width='100%' cellpadding='6' border='0'><tr><td width=20% valign='top' align='center'>";
// // // // // // // // // // // /Блок входа с кнопками
echo"<form action=login. php method=post>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue cellpadding=3><tr><td>
Бащте сщдщк=идгуЮБиЮВойти в системуБ. иЮБ. ащтеЮБрк сщдщк=№аа9900Ю
Ник<br><input type=text name=login><br>
Пароль</font><br><input type=password name=password><br><input type=submit name=submit value='Вход'><br>
<a href=InternetTechnology. php? mode=register>Регистрация</a></td></tr></table>";
echo "</form>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue><tr><td align=center>
<a href=exam. php><font color=blue size=+1>Тестирование</font></a></td></tr></table>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue><tr><td align=center>
<a href=chat. php><font color=blue size=+1>Общение</font></a></td></tr></table>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue><tr><td align=center>
<a href=InternetTechnology. php? mode=shop>
<font color=blue size=+1>Магазин</font></a></td></tr></table><br>";
echo"</td><td class='body' width='80%'>";
// // // // // // // // // // // //
if($_SESSION ['error_fill'] ['bool'] =='true')
{echo $_SESSION ['error_fill'] ['message'] ;
echo"<br>";
include 'register_user. php';
$_SESSION ['error_fill'] ['bool'] ='false'; }
else switch($mode)
{
case 'register': include('register_user. php'); break;
case 'enter': $pagegb='Интернет_технологии'; include('InternetTechnology/enter. php'); break;
case 'lections': $pagegb='Лекции'; include('InternetTechnology/lections. php'); break;
case 'labs': $pagegb='Лабораторные_работы'; include('InternetTechnology/labs. php'); break;
case 'lab1': include('InternetTechnology/labs/lab1. php'); break;
case 'lab2': include('InternetTechnology/labs/lab2. php'); break;
case 'lab3': include('InternetTechnology/labs/lab3. php'); break;
case 'lab4': include('InternetTechnology/labs/lab4. php'); break;
case 'lab5': include('InternetTechnology/labs/lab5. php'); break;
case 'lab6': include('InternetTechnology/labs/lab6. php'); break;
case 'lab7': include('InternetTechnology/labs/lab7. php'); break;
case 'lab8': include('InternetTechnology/labs/lab8. php'); break;
case 'ind': $pagegb='Индивидуальные_задания'; include('InternetTechnology/ind. php'); break;
case 'shop': $pagegb='Магазин'; include('shop. php'); break;
case 'store_zakaz': $pagegb='Магазин'; include('shopping. php'); break;
default: $pagegb='Интернет_технологии'; include('InternetTechnology/enter. php'); break;
}
echo "<center><table width=95% border=0><tr><td><hr align=center width=95% noshade>
<p>Качество усвоения материала можно проверить при интерактивном тестировании. Если студент выдержит тестирование, то ему будет сгенерирован сертификат в RTF-формате, который он может сохранить на своем компьютере, а потом распечатать. </p>
<p>Предоставленный материал можно скопировать на свой компьютер или заказать на CD-носителе на странице <a href =InternetTechnology. php? mode=shop>Магазин</a>. Он будет доставлен Вам по почте. </p></td></tr></table></center></td></tr></table>";
if($pagegb)
{ echo "<form name=gb action=InternetTechnology. php? mode=". $mode. " method=post>";
$_SESSION ['page'] =$pagegb;
include('gb. php');
echo "</form>"; }
doout('Администрирование модуля - Интернет технологии');
? >
</body>
</html>
А.2 Листинг модуля "BaseFunctions. php"
<?
function do_buttons() // Кнопки
{
? >
<center><table width="100%" cellpspacing=6>
<td class="bor" align="center" width="25%"><a href="InternetTechnology. php? mode=enter">
<font size="4" color="#0000FF">Введение</font></a></td>
<td class="bor" align="center" width="25%"><a href="InternetTechnology. php? mode=lections">
<font size="4" color="#0000FF">Лекции</font></a></td>
<td class="bor" align="center" width="25%"><a href="InternetTechnology. php? mode=labs">
<font size="4" color="#0000FF">Лабораторные работы</font></a></td>
<td class="bor" align="center" width="25%"><a href="InternetTechnology. php? mode=ind">
<font size="4" color="#0000FF">Контрольные работы</font></a></td>
</table></center>
<?
}
function doheader($wer1='', $swer='') // Шапка
{
echo "<link href='bor. css' rel='stylesheet' type='text/css'>
<table width=100% border=0 height=76 bgcolor='#cbdff7' background='images/h1. jpg' cellspacing=0 cellpadding=0><tr>
<td width=15%><img src='images/ques. jpg'></td>
<td width=70% align=center><font size=+3 color=red>Студент и Прохоров В.С. </font>
<font size=+2 color=red><br>$wer1$swer</font></td>
<td width=15%><img src='images/diplom. jpg'></td></tr>
</table>";
}
function delete($table) // Удаление всех пунктов
{
$conn = db_connect();
$query="delete from $table";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function reformat_date($datetime)
{
list($year, $month, $day, $hour, $min, $sec) = split(' [: -] ', $datetime);
return "$hour: $min $day/$month/$year";
}
function mes($id, $idname, $table)
{
$conn = db_connect();
$query = "select* from $table where $idname=$id";
$result = mysql_query($query);
if(! $result) return false;
return mysql_fetch_array($result);
}
function ids($table, $name) // Количество пунктов id
{
$conn = db_connect();
$query = "select $name from $table";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num>0)
{
for($i=0; $i<$num; $i++)
$ids [$i] =mysql_result($result,$i,0);
return $ids;
}
}
function db_connect() // Соединение с базой данных
{ $result = @mysql_pconnect("localhost", "root", "");
if (! $result)
{ echo "Нет соединения с базой данных! ";
return false; }
if (! @mysql_select_db("itn"))
{ echo "Невозможно выбрать базу! ";
return false; }
return $result;
}
function doout($ad='')
{
echo "<table width=100% border=0 height=80 bgcolor='#cbdff7' background='images/H11. jpg' cellspacing=0 cellpadding=0>
<tr>
<td width=10%> </td>
<td width=80%><a href=adminpass. php>$ad</a></td>
<td width=10% align=right><img src='images/quesd. jpg'></td>
</tr>
</table> ";
}
? >
А.3 Листинг модуля "Styles. css"
<style type="text/css">
. body {font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; font-size:
55%; color: black;
background-color: lightyellow}
. h2{
color: 3366ff;
letter-spacing: 0.2em;
text-align: center;
font: bold 1.6em Verdana, Tahoma, Arial, Helvetica, sans-serif;
text-transform: uppercase;
}
. color { background-color: #cbdff7; }
. bor {
background-image: url(images/button1. gif);
border: thin ridge blue;
text-align: center;
height: 30;
background-color: #e5e5e5;
}
. for {
font-family: "Times New Roman", Times, serif;
font-size: 18px;
font-style: normal;
font-color: blue;
color: #0000FF;
}
. borc {
background-color: #cbdff7;
border: thin ridge blue;
border-left-width: 0;
border-right-width: 0;
}
</style>
А.4 Листинг модуля "register_user. php"
<form action="start_stop_session. php" method="post">
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<body>
<table border="0" cellspacing="0" cellpadding="6"> <tr>
<td>Все поля обязательны к заполнению </td> </tr>
<tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="6">
<tr> <td>Имя</td>
<td><input type="text" name="name"></td>
</tr>
<tr> <td>Фамилия</td>
<td><input type="text" name="secondname"></td>
</tr>
<tr> <td>Факультет</td>
<td><input type="text" name="faculty"></td>
</tr>
<tr> <td>Шифр</td>
<td><input type="text" name="group"></td>
</tr>
<tr> <td>Адрес</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Ник</td>
<td><input type="text" name="login"></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td> </td>
<td><input type=submit name=submit value="Регистрация"></td>
</tr>
</table></td>
</tr>
</table>
</body>
</form>
А.5 Листинг модуля "login. php"
<?
session_start();
include 'all. php';
if(isset($_REQUEST ['login'])) $login=$_REQUEST ['login'] ;
if(isset($_REQUEST ['password'])) $password=md5($_REQUEST ['password']);
$student=loginpass($login, $password);
if(! $student)
{
echo "<script> alert('Неправильное имя или пароль пользователя! ') </script>";
include 'InternetTechnology. php';
}
else
{
$_SESSION ['student'] ['name'] =$student ['name'] ; $_SESSION ['student'] ['family'] =$student ['secondname'] ;
$_SESSION ['student'] ['group'] =$student ['idstud'] ; $_SESSION ['student'] ['faculty'] =$student ['faculty'] ;
$_SESSION ['student'] ['email'] =$student ['email'] ; $_SESSION ['student'] ['login'] =$student ['login'] ;
echo "<script> alert('Вы в системе! ') </script>";
include 'InternetTechnology. php';
}
? >
А.6 Листинг модуля "start_stop_session. php"
<?
session_start();
//echo '<meta http-equiv=Content-Type content=text/html; charset=UTF-8>';
include("all. php");
$family=$_REQUEST ['secondname'] ; $name=$_REQUEST ['name'] ; $group=$_REQUEST ['group'] ; $faculty=$_REQUEST ['faculty'] ;
$login=$_REQUEST ['login'] ; $pass=$_REQUEST ['password'] ; $email=$_REQUEST ['email'] ;
if($family! =''&$name! =''&$group! =''&$faculty! =''&$pass! =''&$email! =''&$login! ='')
{
if (! ereg ("^. +@. +\\. +$",$email))
{
$_SESSION ['error_fill'] ['bool'] =true;
$_SESSION ['error_fill'] ['message'] ='<b>Проверьте правильность написания электронного адреса! </b>';
include 'InternetTechnology. php';
}
elseif(store_student($group, $name, $family, $faculty, $login, md5($pass), $email))
{
$_SESSION ['student'] ['name'] =$name; $_SESSION ['student'] ['family'] =$family;
$_SESSION ['student'] ['group'] =$group; $_SESSION ['student'] ['faculty'] =$faculty;
$_SESSION ['student'] ['email'] =$email; $_SESSION ['student'] ['login'] =$login;
echo"<script> alert('Вы зарегистрированы в системе') </script>";
include 'InternetTechnology. php';
} else
{
$_SESSION ['error_fill'] ['bool'] =true;
$_SESSION ['error_fill'] ['message'] ='<b>Не записано. Возможно такой шифр или Ник уже существует. Шифр и Ник должны быть уникальными. </b>';
include 'InternetTechnology. php';
}
}
else
{
$_SESSION ['error_fill'] ['bool'] =true;
$_SESSION ['error_fill'] ['message'] ='<b>Заполнены не все поля! Пожалуйста будьте внимательнее! </b>';
include 'InternetTechnology. php';
}
? >
А.7 Листинг модуля "all. php"
<?
include_once("funcexam. php");
include_once("BaseFunctions. php");
include_once("funcquest. php");
include_once("funcchat. php");
include_once("funcshop. php");
include_once("styles. css");
? >
Б.1 Листинг модуля "gb. php"
<?
echo '<meta http-equiv=Content-Type content=text/html; charset=UTF-8>';
if(isset($_REQUEST ['message'])) $message=$_REQUEST ['message'] ;
else $message='';
$group='';
if(! isset($_SESSION ['student']))
{
if($message)
{
echo "<script> alert ('Чтобы оставить ссобщение в гостевой книге нужно зарегистрироваться! ') </script>";
}
} else $group=$_SESSION ['student'] ['group'] ;
include('all. php');
$color_replace = array ('#\ [color=(\# [0-9A-F] {6}| [a-z\-] +) \] (. *?) \ [/color\] #si' => '<font color="\\1">\\2</font>');
$link_replace=array('#([\w] +?: // [^ \"\n\r\t<] *) #si' => '<a href="\\1" target=_blank><u>\\1</a></u>');
$color1='#e5e5e5';
$color2='#cbdff7';
$color3='#84ade1';
$pageid=$_SESSION ['page'] ;
if($message! =''&$group! ='')
{
$ip=$_SERVER ['REMOTE_ADDR'] ;
if(! badip($ip, 'gb'))
{
$message=wordwrap($message,50," ",1);
filter($message);
if(! storeguest($group, $message, $ip, $pageid)) echo "<b><script> alert('Не удалось записать сообщение! ')";
}else echo "<b><script> alert('Запись сообщений с этого IP - адреса запрещена администратором! ') </b>";
}
$ids=idsg($pageid);
echo "<center>
<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=$color3>
<tr bgcolor=$color2>
<td><font color=darkblue size=+1><b> Вы можете оставить свои пожелание в гостевой книге: $pageid</b></font></td>
</tr>
<tr bgcolor=$color3><td>
<table width=100% border=0> <tr> <td width=15%><b><center>
<font color=darkblue> Автор</font></center></b></td> <td width=75%><center><b>
<font color=darkblue>Сообщение</font></b></center></td><td width=10%>
<b><center><font color=darkblue>Записано</font></b></center></td></tr></table>
</td></tr><tr><td>";
echo "<table width=100% border=0>";
if(sizeof($ids) >0)
{
$i=0; $row=0;
while(++$i<=sizeof($ids))
{
$mes=mes($ids [$i-1], 'idguest','guests');
$student=studguest($ids [$i-1], $pageid);
if($mes)
{
foreach($color_replace as $k=>$v)
{
$mes ['message'] =preg_replace($k,$v,$mes ['message']);
}
foreach($link_replace as $key=>$value)
{
$mes ['message'] =preg_replace($key, $value, $mes ['message']);
}
$mes ['message'] =smiles($mes ['message']);
$date=reformat_date($mes ['time']);
if ($row%2) $col=$color1; else $col=$color2;
echo
"<tr bgcolor=". $col. "> <td width=15% valign=top align=center>
<a href=mailto: ". $student ['email']. " title=\" Нажмите для отправки по e-mail\"><b>". $student ['name']. "</b>
<a><font size=1><br>". $mes ['ip']. "</font> </td> <td width=75% valign=center align=left>". $mes ['message']. "</td>
<td width=10% align=center><font size=2>". $date. "</font></td></tr> ";
$row++;
}}
echo "</table> </center>";
}
echo "
</td></tr>
<tr>
<td bgcolor=$color3><font color=darkblue><b>Отображается 10 последних сообщений</b></font></td>
</tr>
<tr>
<td>";
include('postmodule. php');
echo "</td></tr></table></td></tr></table>";
? >
Б.2 Листинг модуля "postmodule. php"
<SCRIPT language=javascript>
var Bold = 0;
var Italic = 0;
var Underline = 0;
var Color = 0;
function PostWrite(NewCode) {
document. gb. message. value+=NewCode;
document. gb. message. focus();
return;
}
function WObold() {
if (Bold == 0) {
ToAdd = " [b] ";
document. gb. bold. value = " B*";
Bold = 1;
} else {
ToAdd = " [/b] ";
document. gb. bold. value = " B ";
Bold = 0;
}
PostWrite(ToAdd);
}
function WOitalic() {
if (Italic == 0) {
ToAdd = " [i] ";
document. gb. italic. value = " I*";
Italic = 1;
} else {
ToAdd = " [/i] ";
document. gb. italic. value = " I ";
Italic = 0;
}
PostWrite(ToAdd);
}
function WOunder() {
if (Underline == 0) {
ToAdd = " [u] ";
document. gb. under. value = " U*";
Underline = 1;
} else {
ToAdd = " [/u] ";
document. gb. under. value = " U ";
Underline = 0;
}
PostWrite(ToAdd);
}
function WOColor() {
if (Color == 0) {
ToAdd = " [color=] ";
document. gb. color. value = " Font Color*";
Color = 1;
} else {
ToAdd = " [/color] ";
document. gb. color. value = " Font Color ";
Color = 0;
}
PostWrite(ToAdd);
}
function WOLi() {
ToAdd = " [*] ";
PostWrite(ToAdd);
}
function emoticon(theSmilie) {
document. gb. message. value += ' ' + theSmilie + ' ';
document. gb. message. focus();
}
</SCRIPT>
<?
echo "<table width=100% border=1 cellpadding=0 cellspacing=0 bgcolor='#e5e5e5'>
<tr>
<td><table width=100% border=0 cellspacing=0 cellpadding=6>
<tr>
<td width=60% align=left>";
echo"
<INPUT class=form_but title='Bold: [Alt + b] - При повторном нажатии тег закроется' style='FONT-WEIGHT: bold' accessKey=b onclick=WObold() type=button value=' B ' name=bold>
<INPUT class=form_but title='Italic: [Alt + i] - При повторном нажатии тег закроется' style='FONT-STYLE: italic' accessKey=i onclick=WOitalic() type=button value=' I ' name=italic>
<INPUT class=form_but title='Underline: [Alt + u] - При повторном нажатии тег закроется' style='TEXT-DECORATION: underline' accessKey=u onclick=WOunder() type=button value=' U ' name=under>
<INPUT class=form_but title='Элемент списка: [Alt + l] - Закрывающий тег не требуется' style='FONT-WEIGHT: bold' accessKey=l onclick=WOLi() type=button value=' * ' name=li>
<INPUT class=form_but title='Цвет шрифта: [Alt + c] - При повторном нажатии тег закроется' accessKey=c onclick=WOColor() type=button value='Font Color' name=color>
<br><textarea class=message name=message cols=60 rows=3></textarea><br>
 
<a href=javascript: emoticon(':: wink:: ') >
<img alt='Ухмылочка' src=smiles/icon_wink. gif border=0></a>  
<a href=javascript: emoticon(':: sad:: ') >
<img alt='Не рад' src=smiles/icon_sad. gif border=0></a>  
<a href=javascript: emoticon(':: lol:: ') >
<img alt='Очень рад' src=smiles/icon_lol. gif border=0></a>  
<a href=javascript: emoticon(':: cry:: ') >
<img alt='Плач' src=smiles/icon_cry. gif border=0></a>  
<a href=javascript: emoticon(':: shock:: ') >
<img alt='Шок' src=smiles/icon_eek. gif border=0></a>  
<a href=javascript: emoticon(':: smile:: ') >
<img alt='Улыбка' src=smiles/icon_smile. gif border=0></a>  
<a href=javascript: emoticon(':: exclaim:: ') >
<img alt='Восклицательный знак' src=smiles/icon_exclaim. gif border=0></a>  
<a href=javascript: emoticon(':: question:: ') >
<img alt='Вопрос' src=smiles/icon_question. gif border=0></a>  
<a href=javascript: emoticon(':: dont:: ') >
<img alt='Не надо' src=smiles/dont. gif border=0></a>
<a href=javascript: emoticon(':: dedmoroz:: ') >
<img alt='Дед мороз' src=smiles/dedmoroz. gif border=0></a>
<A href=javascript: emoticon(':: kiss:: ') >
<IMG alt='Поцелуй' src=smiles/kiss. gif border=0></A>
<A href=javascript: emoticon(':: frag:: ') >
<IMG alt='Лягушка' src=smiles/frag. gif border=0></A>
<A href=javascript: emoticon(':: flag:: ') >
<IMG alt='Флаг' src=smiles/flag. gif border=0></A>
<input type='submit' name='Submit' title='Нажмите для отправки сообщения' value=Отправить></td>
<td width=45% align=left>
[b] <b>Полужирный текст</b> [/b] <br>
[u] <u>Подчеркнутый</u> [/u] <br>
[i] <i>Курсив</i> [/i]  
[*] Элемент списка<br>
[color=blue] </span><b><font color='#0000FF'>Цветной текст</font></b> [/color]
<br>Ссылки, начинающиеся с http:, <b> подчеркиваются автоматически. </b></td>
</tr></table></td></tr></table>";
? >
Б.3 Листинг модуля "funcguest. php"
<?
function studguest($idguest, $page) // Eiee? anoai ioieoia id
{
$conn = db_connect();
if($page=='all')
{
$query = "select idstudg from guests where idguest='$idguest'"; //
$result = mysql_query($query);
if(! $result) return false;
}else
{
$query = "select idstudg from guests where page='$page' and idguest='$idguest'"; //
$result = mysql_query($query);
if(! $result) return false;
}
$id=mysql_result($result,0,0);
$query = "select* from students where idstud='$id'";
$result = mysql_query($query);
if(! $result) return false;
return mysql_fetch_array($result);
}
function idssort($page) // Eiee? anoai ioieoia id
{
$conn = db_connect();
$query = "select idguest from guests order by $page";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num>0)
{
for($i=0; $i<$num; $i++)
$idsg [$i] =mysql_result($result,$i,0);
return $idsg;
}
}
function delguest($id) // Eiee? anoai ioieoia id
{
$conn = db_connect();
$query = "delete from guests where idguest=$id";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function idsg($page) // Eiee? anoai ioieoia id
{
$conn = db_connect();
$query = "select idguest from guests where page='$page' order by time";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num>0)
{
for($i=0; $i<$num; $i++)
$idsg [$i] =mysql_result($result,$i,0);
return $idsg;
}
}
function filter(&$func_var1)
{
$func_var1=htmlspecialchars(stripslashes(trim($func_var1)));
}
function storeguest($idstud, $message, $ip, $page)
{
$maxgbmes=10;
$id=idsg($page);
if(sizeof($id) >=$maxgbmes) delguest($id [0]);
$conn = db_connect();
$query = "insert into guests values (null, '". $idstud. "', '". $message. "', '". $ip. "', '". $page. "', now())";
$result = mysql_query($query);
if (! $result)
return false;
return true;
}
function smiles($mes)
{
$mes=str_replace(":: smile:: ","<img src=smiles/icon_smile. gif>",$mes);
$mes=str_replace(":: dedmoroz:: ","<img src=smiles/dedmoroz. gif>",$mes);
$mes=str_replace(":: sad:: ","<img src=smiles/icon_sad. gif>",$mes);
$mes=str_replace(":: lol:: ","<img src=smiles/icon_lol. gif>",$mes);
$mes=str_replace(":: cry:: ","<img src=smiles/icon_cry. gif>",$mes);
$mes=str_replace(":: imad:: ","<img src=smiles/icon_imad. gif>",$mes);
$mes=str_replace(":: arrow:: ","<img src=smiles/icon_arrow. gif>",$mes);
$mes=str_replace(":: exclaim:: ","<img src=smiles/icon_exclaim. gif>",$mes);
$mes=str_replace(":: question:: ","<img src=smiles/icon_question. gif>",$mes);
$mes=str_replace(":: dont:: ","<img src=smiles/icon_dont. gif>",$mes);
$mes=str_replace(":: wink:: ","<img src=smiles/icon_wink. gif>",$mes);
$mes=str_replace(":: shock:: ","<img src=smiles/icon_shock. gif>",$mes);
$mes = str_replace(":: kiss:: ","<IMG src=smiles/kiss. gif border=0>",$mes);
$mes = str_replace(":: frag:: ","<IMG src=smiles/frag. gif border=0>",$mes);
$mes = str_replace(":: flag:: ","<IMG src=smiles/flag. gif border=0>",$mes);
$mes=str_replace(" [b] ","<b>",$mes);
$mes=str_replace(" [/b] ","</b>",$mes);
$mes=str_replace(" [i] ","<i>",$mes);
$mes=str_replace(" [/i] ","</i>",$mes);
$mes=str_replace(" [u] ","<u>",$mes);
$mes=str_replace(" [/u] ","</u>",$mes);
$mes=str_replace(" [*] ","<li>",$mes);
return $mes;
}
? >
В.1 Листинг модуля "chat. php"
<?
session_start();
if(! isset($_SESSION ['student']))
{
$_SESSION ['error_fill'] ['bool'] =true;
$_SESSION ['error_fill'] ['message'] ='<b>Чтобы войти в чат надо зарегистрироваться! </b>';
include 'InternetTechnology. php';
}else
{
echo "
<html><head>
<title>Чат</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
</head>
<body leftmargin='0' rightmargin='0' topmargin='0' background='images/blocks_bg. gif'>";
$color1='#e5e5e5';
$color2='#cbdff7';
$color3='#84adel'; // '#009999';
$row=0;
include("all. php");
doheader('Интернет технологии', ' - Чат');
$color_replace = array ('#\ [color=(\# [0-9A-F] {6}| [a-z\-] +) \] (. *?) \ [/color\] #si' => '<font color="\\1">\\2</font>');
$link_replace=array('#([\w] +?: // [^ \"\n\r\t<] *) #si' => '<a href="\\1" target=_blank><u>\\1</a></u>');
$group=$_SESSION ['student'] ['group'] ;
if(isset($_REQUEST ['message'])) $message=$_REQUEST ['message'] ; else $message='';
if(isset($_REQUEST ['history'])) $history=$_REQUEST ['history'] ; else $history='';
$ip=$_SERVER ['REMOTE_ADDR'] ;
if(badip($ip, 'chat')) echo "<script> alert ('Запись с этого IP - адреса запрещена администратором! ') </script>";
else {
if($message! =''&$group! ='')
if(! storemessage($group, $message, $ip)) echo "<script> alert ('Не удалось записать сообщение! ') </script>";
}
echo "
<center><TABLE border=0 width=100% height=85% cellspacing=0 cellpadding=0>
<tr><td><table width=100% cellspacing=3 cellpadding=3>
<tr><td class=bor width=33%><a href=chat. php? history=1><font class=for>История</font></a></td>
<td class=bor width=33%><a href=chat. php><font class=for>Чат</font></a></td>
<td class=bor width=33%><a href=InternetTechnology. php>
<font class=for>Выйти из чата</font></a></td></tr></table></td></tr>";
echo "<tr><td> </td></tr>
<tr><td height=60% valign=middle align=center>";
echo "<table width=95% border=1 bgcolor=$color2><tr><td><table width=100% bgcolor=$color3 cellspacing=1 cellpadding=3><tr>";
echo"<td valign=middle align=center width=10%><font color=darkblue><b>Автор</b></font></td>
<td width=80% align=center><font color=darkblue><b>Сообщение</b></font></td>
<td width=12% align=center ><font color=darkblue><b>Записано</b></font></td></tr></table><tr><td>
<table width=100% cellpadding=3 bgcolor=$color3>";
$idch=ids('chatmessages','idchmes');
if(sizeof($idch) >0) $idch=array_reverse($idch);
if($history) $n=sizeof($idch);
elseif(sizeof($idch) <=10) $n=sizeof($idch); else $n=10;
for($i=$n-1; $i>=0; $i--)
{
$mes=mes($idch [$i], 'idchmes', 'chatmessages');
$guest=returnchatguest($idch [$i]);
foreach($color_replace as $k=>$v) $mes ['message'] =preg_replace($k,$v,$mes ['message']);
foreach($link_replace as $key=>$value) $mes ['message'] =preg_replace($key, $value, $mes ['message']);
$mes ['message'] =smiles($mes ['message']);
$date=reformat_date($mes ['time']);
if ($row%2) $col=$color2; else $col=$color1;
echo
"<tr bgcolor=". $col. "><td valign=center align=center width=10%>
<a href=mailto: ". $guest ['email']. " title=\" Нажмите для отправки по e-mail\"><b>". $guest ['login']. "</b>
<a></td><td align=left width=80%> ". $mes ['message']. "</td><td align=center width=10%>
<font size=2>". $date. "</font></td></tr>";
$row++;
} echo"</table><tr></tr></table><tr><td> </td></tr></td></tr><tr><td>";
echo "<form name=gb action=chat. php method=post>";
if(! $history)
{
echo "<center><table width=95%><tr><td align=center>";
include('postmodule. php');
echo"</td></tr></table></center>";
}
else echo "<center><table width=100% cellspacing=1 cellpadding=3><tr><td class=bor>
<a href=chat. php><font class=for>Вернуться в чат</font></a></td></tr></center>";
echo "</center></td></tr></table>";
doout('');
echo "</form></body></html>";
}
? >
В.2 Листинг модуля "chat. php"
<?
function delchguest($id) // Oaaeaiea anao ioieoia
{
$conn = db_connect();
$query = "select idchmes from chatmessages where idchg='$id'";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ==0)
{
$query="delete from chatguests where idchguest='$id'";
$result = mysql_query($query);
if(! $result) return false;
return true;
} else echo"<b>Не удается удалить участника, сначала удалите его сообщения! </b><br>";
}
function badip($ip, $sub) // Eiee? anoai ioieoia id
{
$conn = db_connect();
$query = "select idip from ips where ip='$ip' and sub='$sub'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num>0) return true;
else return false;
}
function del($d, $tab, $table) // Oaaeaiea anao ioieoia
{
$conn = db_connect();
$query="delete from $table where $tab='$d'";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function idsip($sub) // Eiee? anoai ioieoia id
{
$conn = db_connect();
$query = "select idip from ips where sub='$sub'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num>0)
{
for($i=0; $i<$num; $i++)
$idsip [$i] =mysql_result($result,$i,0);
return $idsip;
}
}
function storeip($ip, $sub)
{
$conn = db_connect();
$query ="select* from ips where ip='$ip' and sub='$sub'";
$result = mysql_query($query);
if(mysql_numrows($result) ==0)
{
$query = "insert into ips values (null, '". $ip. "', '". $sub. "')";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
}
function storemessage($idstud, $mes, $ip)
{
$maxchmes=100;
$id=ids('chatmessages', 'idchmes');
if(sizeof($id) >$maxchmes) delchatmes($id [0]);
$conn = db_connect();
$query = "insert into chatmessages values (null, '". $idstud. "', '". $mes. "', '". $ip. "', now())";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function returnchatguest($id)
{
$conn = db_connect();
$query = "select idstudc from chatmessages where idchmes='$id'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
if($num==1)
$idchg=mysql_result($result,0,0);
$query = "select * from students where idstud='$idchg'";
$result = mysql_query($query);
if(! $result) return false;
return mysql_fetch_array($result);
}
? >
Г.1 Листинг модуля "shop. php"
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h2><font size="+2" class=color> Магазин почтой</font></h2>
<form action="InternetTechnology. php? mode=store_zakaz" method="post">
<?
$color3="#84ade1";
$color2="#cbdff7";
$color1='#e5e5e5';
$done=isset($_REQUEST ['done'])? $_REQUEST ['done']: '';
$id=isset($_REQUEST ['id'])? $_REQUEST ['id']: '';
$_SESSION ['client'] =isset($_SESSION ['client'])? $_SESSION ['client']: '';
if($_SESSION ['client'] =='')
{
if(isset($_SESSION ['student']))
{
$_SESSION ['client'] ['name'] =$_SESSION ['student'] ['name'] ;
$_SESSION ['client'] ['sname'] =$_SESSION ['student'] ['family'] ;
$_SESSION ['client'] ['email'] =$_SESSION ['student'] ['email'] ;
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['address'] ='';
}else
{
$_SESSION ['client'] ['name'] ='';
$_SESSION ['client'] ['sname'] ='';
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['email'] ='';
$_SESSION ['client'] ['address'] ='';
}
}
if($done) $id='';
if($id)
{
$cd=mes($id, 'idc', 'cd');
echo"<center><table bgcolor=$color2 width=95% cellspacing=2 cellpadding=6>
<tr bgcolor=$color1><td><b>Название: </b> ". $cd ['title']. "</td></tr>
<tr bgcolor=$color1><td><b>Описание</b>: ". $cd ['description']. "</td></tr>
<tr bgcolor=$color1><td><b>Цена: </b> ". $cd ['price']. "</td></tr>
<tr><td>Количество: <br><input type='text' name='count' value=1 size='3' maxlength=3></td></tr>
<tr><td>Имя: <br><input type='text' name='name' value='". $_SESSION ['client'] ['name']. "' size='15' maxlength=15></td></tr>
<tr><td>Фамилия: <br><input type='text' name='sname' value='". $_SESSION ['client'] ['sname']. "' size='15' maxlength=15></td></tr>
<tr><td>Адрес электронной почты: <br><input type='text' name='email' value='". $_SESSION ['client'] ['email']. "' size='30' maxlength=30></td></tr>
<tr><td>Введите номер телефона без пробелов и разделителей: <br><input type='text' name='fhone' value='". $_SESSION ['client'] ['fhone']. "' size=12 maxlength=12></td></tr>
<tr><td>Введите адрес почтовой доставки: <br><textarea name=address cols=50 rows=3>". $_SESSION ['client'] ['address']. "</textarea></td></tr>
<tr><td bgcolor=$color1><input type=hidden name=id value=". $id. "><input type=submit value='Заказать'>
</td></tr></table></center></form>";
}
else
{
? >
<form action="InternetTechnology. php? mode=shop" method="post">
<table width="95%" border="0" cellspacing="2" cellpadding="6" bgcolor=<? =$color2? >>
<tr>
<td width=30%><b>Название</b></td>
<td width=60%><b>Описание</b></td>
<td width=10%><b>Цена</b></td>
</tr>
<?
$num=ids('cd', 'idc');
for($i=0; $i<sizeof($num); $i++)
{
$cd=mes($num [$i], 'idc', 'cd');
echo"<tr bgcolor=$color1><td>
<a href=InternetTechnology. php? mode=shop&id=". $cd ['idc']. ">". $cd ['title']. "</a></td><td>". $cd ['description']. "</td>
<td>". $cd ['price']. "</td></tr>";
}echo" </table></form>";
}
? >
Г.2 Листинг модуля "shopping. php"
<?
$pod=isset($_REQUEST ['pod'])? $_REQUEST ['pod']: '';
if($pod)
{
if(! session_id()) session_start();
echo"<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
include 'all. php';
storeshopclient($_SESSION ['client'] ['name'], $_SESSION ['client'] ['sname'], $_SESSION ['client'] ['email'], $_SESSION ['client'] ['address'], $_SESSION ['client'] ['fhone']);
$idclienta=idclienta($_SESSION ['client'] ['name'], $_SESSION ['client'] ['sname'], $_SESSION ['client'] ['email']);
if(storezakaz($idclienta, $_SESSION ['client'] ['id'], $_SESSION ['client'] ['count']))
{
echo "<script> alert('Ваш заказ принят! ') </script>";
$idz=mes($_SESSION ['client'] ['id'], 'idc', 'cd');
$mess=$_SESSION ['client'] ['name']. " ". $_SESSION ['client'] ['sname']. " заказал(а)". $_SESSION ['client'] ['count']. " ". $idz ['title']. " на сумму: ". $_SESSION ['client'] ['count'] *$idz ['price']. "р. Заказ нужно доставить по адресу: ". $_SESSION ['client'] ['address']. ". Адрес электронной почты: ". $_SESSION ['client'] ['email']. ". ";
error_reporting(0);
if(! mail('kash@newmsk. tula. net', 'Поступил заказ', $mess, "Content-type: text/plain; charset=UTF-8", "Content-Transfer-Encoding: 8bit")) echo"Невозможно соединиться с почтовым сервером! "; //
error_reporting(E_ALL);
$_SESSION ['mode'] ='shop';
include 'InternetTechnology. php';
} else echo "<script> alert('Ваш заказ не принят! ') </script>";
}
else
{
$name=isset($_REQUEST ['name'])? $_REQUEST ['name']: '';
$sname=isset($_REQUEST ['sname'])? $_REQUEST ['sname']: '';
$email=isset($_REQUEST ['email'])? $_REQUEST ['email']: '';
$fhone=isset($_REQUEST ['fhone'])? $_REQUEST ['fhone']: '';
$id=isset($_REQUEST ['id'])? $_REQUEST ['id']: '';
$count=isset($_REQUEST ['count'])? $_REQUEST ['count']: '';
$address=isset($_REQUEST ['address'])? $_REQUEST ['address']: '';
if($id! =''&$address! =''&$count! =''&$name! =''&$sname! =''&$email! ='')
{
$_SESSION ['client'] ['name'] =$name;
$_SESSION ['client'] ['sname'] =$sname;
$_SESSION ['client'] ['fhone'] =$fhone;
$_SESSION ['client'] ['email'] =$email;
$_SESSION ['client'] ['address'] =$address;
$_SESSION ['client'] ['id'] =$id;
$_SESSION ['client'] ['count'] =$count;
$cd=mes($id, 'idc', 'cd');
echo '<font size=2>Уважаемый(ая) '. $name. ' '. $sname. '! Ваши данные: <br> Телефон: '. $fhone. '<br> Адрес электронной почты: '. $email. '<br> Адрес доставки: '. $address. '<br>';
echo 'Вы заказали '. $count. ' диск(а)"'. $cd ['title']. '" на сумму '. $cd ['price'] *$count. 'р. <br>Если все правильно, пожалуйста нажмите <a href=shopping. php? pod=true>Заказать</a>! </font><br><br><br>';
}
}
? >
Г.3 Листинг модуля "funcshop. php"
<?
function update_status($id)
{
$conn = db_connect();
$query = "update zakaz set flag_done = 'y' where idz = '$id'";
$result = mysql_query($query);
if(! $result) return false;
else return true;
}
function fdel($id, $idname, $table)
{
$conn = db_connect();
$query = "delete from $table where $idname=$id";
$result = mysql_query($query);
if(! $result) return false;
else return true;
}
function idclienta($name, $sname, $email)
{
$conn = db_connect();
$query = "select idclient from shopclients where name='$name' and sname='$sname' and email='$email'";
$result = mysql_query($query);
if(mysql_numrows($result) >0)
return mysql_result($result, 0, 0);
else return 0;
}
function reccd($cd)
{
$conn = db_connect();
$query = "insert into cd values (null, '". $cd ['title']. "', '". $cd ['description']. "', '". $cd ['price']. "')";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function storeshopclient($name, $sname, $email, $address, $fhone)
{
if(idclienta($name, $sname, $email) ==0)
{
$conn = db_connect();
$query = "insert into shopclients values (null, '". $name. "', '". $sname. "', '". $email. "', '". $address. "', '". $fhone. "', now())";
$result = mysql_query($query);
if(! $result) return false;
return true;
}}
function storezakaz($idclienta, $idcd, $count)
{
$conn = db_connect();
$query = "insert into zakaz values (null, '". $idclienta. "', '". $idcd. "', '". $count. "', now(), 'n')";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
? >
Д.1 Листинг модуля "exam. php"
<?
session_start();
echo"<html><title>Страница тестирования</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<body leftmargin='0' rightmargin='0' topmargin='0'>";
include("all. php");
if(! isset($_SESSION ['student']))
{
$_SESSION ['error_fill'] ['bool'] ='true';
$_SESSION ['error_fill'] ['message'] ='<b>Чтобы войти в экзаменатор нужно зарегистрироваться! </b>';
include 'InternetTechnology. php';
}
else
{
doheader('Интернет технологии',' - Тестирование');
do_buttons();
if(isset($_REQUEST ['sub'])) $sub=$_REQUEST ['sub'] ; else $sub='';
$massq=ids('subjects', 'idsub'); // массив id всех предметов
$subnum=idss($sub); // Номер выбранного предмета
$color2='#cbdff7';
$color1='#e5e5e5';
$row=0;
$idstud=$_SESSION ['student'] ['group'] ;
echo "<table width=100% background='images/blocks_bg. gif'><tr><td width=20% valign=top>";
echo"<center><table width=160 border=1 bgcolor=$color1 bordercolor=darkblue cellpadding=6><tr>
<td align=left><font color=blue><b>Предметы: </b><center><hr color=#ff9900 width=98%></center>";
for($i=0; $i<sizeof($massq); $i++)
{
$subj=mes($massq [$i], 'idsub', 'subjects');
$ntry=2-count_try($massq [$i], $idstud);
if($ntry>0)
{
$tit='У вас осталось попыток: '. $ntry;
echo "<a href=exam. php? sub=". $subj ['subject']. " title='$tit'>
<font color=blue><b>". $subj ['subject']. "</font></a></b><br>";
}
else
{
$tit='У вас не осталось попыток! ';
echo "<a href=exam. php? nt=false title='$tit'><font color=blue><b>". $subj ['subject']. "</font></a></b><br>";
}
}
echo"</td></tr></table><br></td><td class='body' width=80% valign=top>";
if(! $sub)
{
$idstud=$_SESSION ['student'] ['group'] ;
echo "<b>". $_SESSION ['student'] ['group']. " ". $_SESSION ['student'] ['name']. " ". $_SESSION ['student'] ['family']. " ". $_SESSION ['student'] ['faculty']. "<br></b>";
echo"<br><b>Для тестирования по каждой теме у вас есть 2 попытки. Выберите тему тестирования. <b><br>
<b>Перед повторным тестирование рекомендуется повторить тему еще раз<b>";
}
else
{
echo"<form action=score. php method=post>";
$mass=idsq($subnum);
$n=sizeof($mass);
echo"<center><table cellpadding=6 cellspacing=1 border=0 width=100% bgcolor=$color1>
<tr><td><font size='+1'>Тест состоит из $n вопросов. </font></td></tr></table> ";
if(sizeof($mass) >1) shuffle($mass);
for($i=0; $i<sizeof($mass); $i++)
{
if ($row%2) $col=$color1; else $col=$color2;
$message=mes($mass [$i], 'idques', 'questions');
echo "<table width=100% cellpadding=6 cellspacing=0 border=0><tr><td bgcolor=". $col. " ><strong>". ($i+1). ". ". $message ['quesmes']. "</strong><ol>";
$res=outans($mass [$i]); if($res>1) shuffle($res);
for($j=0; $j<sizeof($res); $j++)
{
$val=mes($res [$j], 'idans', 'answers');
echo "<li><input type=radio name=q". ($i+1). " value=". $val ['rightanswer']. ">". $val ['ansmes']. "<br>";
}
echo "</ol></td></tr></table>";
$row++;
}
if ($row%2) $col=$color1; else $col=$color2;
echo "<table cellpadding=10 cellspacing=0 border=0 bgcolor=". $col. " width=100% >
<tr><td align=center><font size=+1>$sub</font><br><br>
<input type=hidden name=subnum value=". $subnum. "><input type=hidden name=subject value=". $sub. ">
<input type=submit name=submit value=Готово></td></tr>
</table>";
}
echo"</td></tr></table></center></form>";
doout('');
} // not registered
? >
</body>
</html>
Д.2 Листинг модуля "funcexam. php"
<?
function loginpass($log, $pass)
{
$conn = db_connect();
$query = "select* from students where login='$log' and password='$pass'";
$result = mysql_query($query);
if(mysql_numrows($result) ==0)
{
return false;
}
return mysql_fetch_array($result);
}
function fdelstud($id) // Oaaeaiea anao ioieoia
{
$conn = db_connect();
$query = "select idres from results where idstudr='$id'";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ==0)
{
$query="delete from students where idstud='$id'";
$result = mysql_query($query);
if(! $result) return false;
return true;
} else echo"<center><b>Не удается удалить участника, сначала удалите его сообщения! </b></center><br>";
}
function outstudents($nums, $mode)
{
$row=0;
$color2='#cbdff7';
$color1='#e5e5e5';
echo "<table width=100% bgcolor=$color1 cellpadding=3 cellspacing=0 border=0>
<tr><td width=22% align=center><b>Имя и фамилия</b></td>
<td width=6% align=center><b>Шифр</b></td>
<td width=10% align=center><b>Факультет</b></td>
<td width=17% align=center><b>Предмет</b></td>
<td width=10% align=center><b>Оценка</b></td>
<td width=9% align=center><b>Попытка</b></td>
<td width=12% align=center><b>Дата</b></td>
<td width=14% align=center><b>Удаление</b></td></tr></table>";
echo"<table width=100% cellpadding=5 cellspacing=0>";
for($i=0; $i<sizeof($nums); $i++)
{
$results=mes($nums [$i],'idres','results');
$student=mes($results ['idstudr'],'idstud','students');
$subject=mes($results ['idsubr'],'idsub','subjects');
if ($row%2) $col=$color1; else $col=$color2;
$date=reformat_date($results ['posted']);
echo "<tr bgcolor=". $col. ">
<td width=22% >". ($i+1). ". ". $student ['name']. " ". $student ['secondname']. "</td>
<td width=6%>". $student ['idstud']. "</td>
<td width=10%>". $student ['faculty']. "</td>
<td width=17% >". $subject ['subject']. "</td>
<td width=10%>". bal($results ['score']). " (". $results ['score']. "%) </td>
<td width=9% >". $results ['count']. "</td>
<td width=12%>". $date. "</td>
<td width=14%><a href=students. php? mode=". $mode. "&del=". $results ['idres']. ">Удалить запись</a></td>
</tr>";
$row++;
}echo "</table>";
}
function idsst($id, $idname) // Количество вопросов
{
$conn = db_connect();
$query = "select idres from results where $idname='$id'";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) >0)
{
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
$idsst [$i] =mysql_result($result,$i,0);
return $idsst;
}
}
function store_result($group, $score, $sub) // Запись студента
{
$conn = db_connect();
$count=count_try($sub, $group);
if($count==0)
{
$query = "insert into results values (null, '". $sub. "', '". $group. "', now(), '". $score. "',
1)";
$result = mysql_query($query);
if (! $result) return false;
} else
{
$count=$count+1;
$query = "delete from results where idstudr='$group' and idsubr='$sub'";
$result = mysql_query($query);
if (! $result) return false;
$query = "insert into results values (null, '". $sub. "', '". $group. "', now(), '". $score. "', '". $count. "')";
$result = mysql_query($query);
if (! $result) return false;
}
return true;
}
function count_try($idsub, $idstud)
{
$conn = db_connect();
$query = "select count from results where idsubr='$idsub' and idstudr='$idstud'";
$result = mysql_query($query);
if(mysql_numrows($result) ==0) return 0;
else return mysql_result($result,0,0);
}
function deletesubject($delsub) // Удаление предмета и его вопросов
{
$conn = db_connect();
$query = "select idques from questions where idsubq='$delsub'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
{
$idsq [$i] =mysql_result($result,$i,0);
deleteques($idsq [$i]);
}
$query = "select idres from results where idsubr='$delsub'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
{
$idsq [$i] =mysql_result($result,$i,0);
delresult($idsq [$i]);
}
return true;
}
function idsq($id) // Количество вопросов
{
$conn = db_connect();
$query = "select idques from questions where idsubq='$id'";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
$idsq [$i] =mysql_result($result,$i,0);
return $idsq;
}
function idss($sub) // Количество предметов
{
$conn = db_connect();
$query = "select idsub from subjects where subject='$sub'";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ==1)
{
$idss=mysql_result($result,0,0);
return $idss;
} else return false;
}
function storebals($bal3, $bal4)
{
$conn = db_connect();
$query="delete from bals";
$result = mysql_query($query);
if(! $result) return false;
$query="insert into bals values (3, '". $bal3. "')";
$result = mysql_query($query);
if(! $result) return false;
$query="insert into bals values (4, '". $bal4. "')";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function percent($bal)
{
$conn = db_connect();
$query="select percent from bals where bal=$bal";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ! =0)
return mysql_result($result,0,0);
}
function delquestions() // Удаление всех вопросов
{
$conn = db_connect();
$query="delete from answers";
$result = mysql_query($query);
if(! $result) return false;
$query="delete from questions";
$result = mysql_query($query);
if(! $result) return false;
$query="delete from subjects";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function delresult($resid) // Удаление записи студента
{
if(! $resid) return false;
$conn = db_connect();
$query="delete from results where idres=$resid";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function studids($sort) // Массив студентов
{
$conn = db_connect();
$query = "select idstud from students order by $sort";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
$mess [$i] =mysql_result($result,$i,0);
return $mess;
}
function store_student($group, $name, $sname, $faculty, $login, $pass, $email) // Запись студента
{
$conn = db_connect();
$query = "select password from students where login='$login'";
$result = mysql_query($query);
if(mysql_numrows($result) ==1)
{
echo"<script> alert('Такой Ник уже существует! Пожалуйста выеберите другой. ') </script>";
return false;
}
elseif(mysql_numrows($result) ==0)
{
$query = "insert into students values ('". $group. "', '". $name. "', '". $sname. "', '". $faculty. "', '". $email. "', '". $login. "', '". $pass. "', now())";
$result = mysql_query($query);
if (! $result) return false;
}
return true;
}
function bal($score)
{
$conn = db_connect();
$query = "select percent from bals where bal=3";
$result = mysql_query($query);
if(! $result) return false;
$bal3=mysql_result($result,0,0);
$query = "select percent from bals where bal=4";
$result = mysql_query($query);
if(! $result) return false;
$bal4=mysql_result($result,0,0);
if($score<$bal3) $bal='2';
elseif($score>=$bal3 && $score<$bal4) $bal='3';
elseif($score>=$bal4) $bal='4';
if($score=='100') $bal='5';
return $bal;
}
function deleteques($idques) // Удаление вопроса
{
if(! $idques) return false;
$conn = db_connect();
$query="select idsubq from questions where idques=$idques";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ! =0) $iddelsub=mysql_result($result,0,0);
$query="delete from answers where parent=$idques";
$result = mysql_query($query);
if(! $result)
{ echo 'Dont deleted answers'; return false; }
$query="delete from questions where idques=$idques";
$result = mysql_query($query);
if(! $result)
{ echo 'Dont deleted questions'; return false; }
$query="select idsubq from questions where idsubq=$iddelsub";
$result = mysql_query($query);
if(! $result) return false;
if(mysql_numrows($result) ==0)
$query="delete from subjects where idsub=$iddelsub";
$result = mysql_query($query);
if(! $result) return false;
return true;
}
function outans($id) // Получение ответа
{
$conn = db_connect();
$query = "select idans from answers where parent=$id";
$result = mysql_query($query);
if(! $result) return false;
$num=mysql_numrows($result);
for($i=0; $i<$num; $i++)
$mes [$i] =mysql_result($result,$i,0);
return $mes;
}
function store($qest) // Запись вопроса и ответов
{
$sub=$qest ['subject'] ;
$conn = db_connect();
$query = "select idsub from subjects where subject = '$sub'";
$result = mysql_query($query);
if (mysql_numrows($result) ==0)
{
$query = "insert into subjects values (null, '". $qest ['subject']. "')";
$result = mysql_query($query);
if (! $result) return false;
}
$query = "select idsub from subjects where subject = '". $qest ["subject"]. "'";
$result = mysql_query($query);
if (! $result) return false;
$idsub=mysql_result($result,0,0);
$query = "insert into questions values (null, '". $idsub. "', '". $qest ["qes"]. "')";
$result = mysql_query($query);
if (! $result)
return false;
$query = "select idques from questions where idsubq='". $idsub. "' and quesmes = '". $qest ["qes"]. "'";
$result = mysql_query($query);
$parentid=mysql_result($result,0,0);
$query = "insert into answers values
(null,'". $parentid. "','". $qest ['rans']. "',1)";
$result = mysql_query($query);
if (! $result)
return false;
$j [0] =$qest ['ans1'] ; $j [1] =$qest ['ans2'] ;
$j [2] =$qest ['ans3'] ; $j [3] =$qest ['ans4'] ;
for($i=0; $i<4; $i++) if($j [$i] ! ='')
{
$query = "insert into answers values
(null, '". $parentid. "', '". $j [$i]. "',0)";
$result = mysql_query($query);
if (! $result) return false;
}
return true;
}
? >
Д.3 Листинг модуля "score. php"
<? session_start();
echo"<html><head><title>Станица результатов</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
</head>
<body leftmargin='0' rightmargin='0' topmargin='0'>";
include("all. php");
doheader('Экзаменатор',' - Результаты');
do_buttons();
$color1='#e5e5e5';
$color2='#cbdff7';
$score=0;
$sub=$_REQUEST ['subnum'] ;
$subject=$_REQUEST ['subject'] ;
$group=$_SESSION ['student'] ['group'] ; $name=$_SESSION ['student'] ['name'] ;
$family=$_SESSION ['student'] ['family'] ; $faculty=$_SESSION ['student'] ['faculty'] ;
$num=idsq($sub); unset($student);
? >
<table width="100%" cellpadding="6" cellspacing="0" bgcolor=<? =$color1? >><tr>
<td><b>Имя: </b> <? =$name? > <b>Фамилия: </b> <? =$family? > <b>Шифр: </b> <? =$group? > <b>Факультет: </b> <? =$faculty? ><br></td></tr>
</tr><tr><td bgcolor="#cbdff7">
<?
for($i=1; $i<=sizeof($num); $i++)
{
if($_REQUEST ["q". $i] ==1)
echo "<b>". $i. ": </b>Верно   "; else echo "<b>". $i. ": </b>Неверно   ";
$score=$score+$_REQUEST ["q". $i] ;
} if($num! =0) { $score=($score/sizeof($num)) *100; $bal=bal($score); $score=(int) $score; }? >
</td></tr><tr><td>
<b>Результат: <? =$score? >% Оценка: <? =$bal? ></b>
</td></tr></table>
<?
if(! store_result($group, $score, $sub))
echo "<b>Ошибка записи студента</b>";
elseif($bal! =2)
{
echo"<form action = rtf1. php method = post>";
echo "<input type = hidden name = name value = '$name'>";
echo "<input type = hidden name = fam value = '$family'>";
echo "<input type = hidden name = group value = '$group'>";
echo "<input type = hidden name = facul value = '$faculty'>";
echo "<input type = hidden name = score value = '$score'>";
echo "<input type = hidden name = bal value = '$bal'>";
echo "<input type = hidden name = sub value = '$subject'>";
echo "<table width=100% cellpadding=6 cellspacing=0 bgcolor=$color2><tr>
<td width=20%><b>Распечатать сертификат: </b></td><td>
<input type=image src=images\certificate. gif value=post></td></table>";
echo "</form>";
}
doout('');
? >
</body>
</html>
Д.4 Листинг модуля "rtf1. php"
<?
header("Content-type: application/msword");
header("Content-Disposition: inline, filename=ITCertify. rtf");
$name=$_REQUEST ['name'] ;
$family=$_REQUEST ['fam'] ;
$faculty=$_REQUEST ['facul'] ;
$group=$_REQUEST ['group'] ;
$score=$_REQUEST ['score'] ;
$bal=$_REQUEST ['bal'] ;
$sub=$_REQUEST ['sub'] ;
$date = date("d. m. Y");
$filename = "Certification. rtf";
$fp = fopen ($filename, "r");
$output = fread($fp, filesize($filename));
fclose ($fp);
$output = str_replace("sub", $sub, $output);
$output = str_replace("name", $name, $output);
$output = str_replace("family", $family, $output);
$output = str_replace("group", $group, $output);
$output = str_replace("faculty", $faculty, $output);
$output = str_replace("score", $score, $output);
$output = str_replace("bal", $bal, $output);
$output = str_replace("data", $date, $output);
echo $output;
? >
Д.5 Листинг модуля "store. php"
<?
include ("all. php");
if(isset($_REQUEST ['bal3'])) $bal3=$_REQUEST ['bal3'] ; else $bal3='';
if(isset($_REQUEST ['bal4'])) $bal4=$_REQUEST ['bal4'] ; else $bal4='';
if($_REQUEST ['subject'] ==''&$_REQUEST ['qes'] ==''&$_REQUEST ['rans'] ==''&$_REQUEST ['ans1'] ==''&$_REQUEST ['ans2'] =='')
{
if(isset($_REQUEST ['rec']))
if($_REQUEST ['rec'] ==true)
if($bal3! =''&&$bal4! ='')
if(storebals($bal3, $bal4) ==true) $_REQUEST ['sb'] =true;
$_REQUEST ['errorcount'] =true;
include ("input. php");
} else
{
if(isset($_REQUEST ['rec']))
if($_REQUEST ['rec'] ==true)
if($bal3! =''&&$bal4! ='')
if(storebals($bal3, $bal4) ==true) $_REQUEST ['sb'] =true;
$_REQUEST ['errorcount'] =false;
if(store($_REQUEST) ==true) $_REQUEST ['error'] ='Done';
else $_REQUEST ['error'] ='No done';
include("input. php");
}
? >
Е.1 Листинг модуля "AdminInternetTechnology. php"
<html>
<head>
<title>Экзаменатор-администрирование</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body leftmargin="0" rightmargin="0" topmargin="0">
<?
include('all. php');
doheader('Интернет технологии',' - Администрирование');
do_buttons();
$color2="#cbdff7";
$color1='#e5e5e5';
echo"
<table cellpadding=10 cellspacing=1 border=0 bgcolor='#cbdff7' background='images/blocks_bg. gif'><tr><td width=20%>";
include 'leftadmin. php';
echo"</td><td width=80%>";
? >
<table cellpadding=10 cellspacing=1 border='0'>
<tr bgcolor=<? =$color1? >><td width="20%"><b>Экзаменатор</b></td>
<td> - позволяет удалить некоторые вопросы из конкретного предмета или удалить весь предмет. </td></tr>
<tr bgcolor=<? =$color2? >><td width="20%"><b>Ввод новых вопросов</b></td>
<td> - позволяет ввести новые вопросы по существующему предмету или создать новый предмет. </td></tr>
<tr bgcolor=<? =$color1? >><td width="20%"><b>Студенты</b></td>
<td> - посзволяет просмотреть результаты тестирования по одному предмету, по одному студенту или весь спсок, а также удалить некоторые записи</td></tr>
<tr bgcolor=<? =$color2? >><td width="20%"><b>Гостевая книга</b></td>
<td> - позволяет просмотреть, ввести, удалить запрещенные адреса, удалить некоторые записи сообщений. </td></tr>
<tr bgcolor=<? =$color1? >><td width="20%"><b>Чат</b></td>
<td> - позволяет просмотреть, ввести, удалить запрещенные адреса. Просмотреть, удалить зарегистрированных участников, а также удалить записи сообщений. </td></tr>
<tr bgcolor=<? =$color2? >><td width="20%"><b>Магазин</b></td>
<td> - позволяет просмотреть, ввести, удалить новые товары. Просмотреть, удалить заказчиков, а также просматривать поступившие заказы. </td></tr>
</table></center></td></tr></table>
<?
doout('');
? >
</body>
</html>
Е.2 Листинг модуля "leftadmin. php"
<?
include 'all. php';
$colorb='#e5e5e5';
$colorf='blue';
$conn=db_connect();
if (! $conn)
{
echo"<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr>
<td align=center><a href='create_db. php'><font color=$colorf>
<b>Create DB</b></font></a></td></tr></table><br>";
}
else
echo" <center><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center>
<a href='admexam. php'><font color=$colorf><b>Экзаменатор</b></font></a></td></tr></table><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center><a href='input. php'>
<font color=$colorf><b>Ввод вопросов</b></font></a></td></tr></table><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center>
<a href='students. php'><font color=$colorf><b>Студенты</b></font></a></td></tr></table><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center>
<a href='adminguest. php'><font color=$colorf><b>Гостевая книга</b></font></a></td></tr></table><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center>
<a href='admchat. php'><font color=$colorf><b>Чат</b></font></a></td></tr></table><br>
<table width=160 bgcolor=$colorb border=2 bordercolor= darkblue><tr><td align=center>
<a href='admshop. php'><font color=$colorf><b>Магазин</b></font></a></td></tr></table><br>
</center><br>";
? >
Е.3 Листинг модуля "create_db. php"
<?
$link = mysql_pconnect("localhost", "root", "")
or exit("Could not connect");
$result=mysql_query("create database itn");
if(! $result) echo"not create";
$result=mysql_select_db("itn");
if(! $result) echo"not select";
$result=mysql_query("create table chatmessages
(
idchmes int unsigned not null auto_increment primary key,
idstudc int not null,
message char(150) not null,
ip char(15) not null,
time datetime not null
)");
if($result) echo "chatmessages created<br>";
$result=mysql_query("create table guests
(
idguest int unsigned not null auto_increment primary key,
idstudg int not null,
message char(150) not null,
ip char(15),
page char(30) not null,
time datetime not null
)");
if($result) echo "guests created<br>";
$result=mysql_query("create table subjects
(
idsub int unsigned not null auto_increment primary key,
subject char(30) not null
)");
if($result) echo "subjects created<br>";
$result=mysql_query("create table questions
(
idques int unsigned not null auto_increment primary key,
idsubq int not null,
quesmes char(150) not null
)");
if($result) echo "questions created<br>";
$result=mysql_query("create table answers
(
idans int unsigned not null auto_increment primary key,
parent int not null,
ansmes char(150) not null,
rightanswer enum('1', '0') DEFAULT '0' NOT NULL
)");
if($result) echo "answers created<br>";
$result=mysql_query("create table students
(
idstud int not null primary key,
name char(20) not null,
secondname char(20) not null,
faculty char(20) not null,
email char(30) not null,
login char(10) not null unique,
password char(100) not null,
lastdate date not null
)");
if($result) echo "students created<br>";
$result=mysql_query("create table results
(
idres int not null auto_increment primary key,
idsubr int not null,
idstudr int not null,
posted datetime not null,
score int not null,
count tinyint default 0 not null
)");
if($result) echo "results created<br>";
$result=mysql_query("create table cd
(
idc int unsigned not null auto_increment primary key,
title char(50) not null,
description char(150),
price float not null
)");
if($result) echo "cd created<br>";
$result=mysql_query("create table zakaz
(
idz int unsigned not null auto_increment primary key,
idclienta int not null,
idcd int not null,
count tinyint default 0 not null,
recdate datetime not null,
flag_done enum('y', 'n') DEFAULT 'n' NOT NULL
)");
if($result) echo "zakaz created<br>";
$result=mysql_query("create table shopclients
(
idclient int unsigned not null auto_increment primary key,
name char(10) not null,
sname char(15) not null,
email char(30) not null,
address text not null,
fhone char(15),
lastdate datetime not null
)");
if($result) echo "shopclients created<br>";
$result=mysql_query("create table ips
(
idip smallint unsigned not null auto_increment primary key,
ip char(15) not null,
sub char(20) not null
)");
if($result) echo "ips created<br>";
$result=mysql_query("create table bals
(
bal tinyint not null,
percent tinyint not null
)");
if($result) echo "bals created<br>";
$result=mysql_query("grant select, insert, update, delete
on admin. *
to admin@localhost identified by ''
");
if($result) echo "grants created";
? >
Е.4 Листинг модуля "input. php"
<html>
<form action="store. php" method="post">
<head>
<title>Ввод новых вопросов</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" >
<?
include('all. php');
$color3="#84ade1";
$color2="#cbdff7";
$color1='#e5e5e5';
if(isset($_REQUEST ['sub'])) $sub=$_REQUEST ['sub'] ; else $sub='';
$massq=ids('subjects', 'idsub');
doheader('Экзаменатор',' - Ввод новых вопросов');
$s='Введите название предмета, вопрос и минимум 3 варианта ответов';
if(isset($_REQUEST ['errorcount'])) if($_REQUEST ['errorcount'] ==true) $s='Недостаточно вариантов ответов';
if(isset($_REQUEST ['sb'])) $sb=$_REQUEST ['sb'] ; else $sb='';
if($sb==true) $sb='Проценты<br>изменены';
$bal3=percent('3');
$bal4=percent('4');
? >
<link href=bor. css rel=stylesheet type=text/css>
<table width=100%>
<td class=bor align=center>
<a href=AdminInternetTechnology. php><font size=+1 color=#0000FF>Администрирование</font></a></td>
</table>
<table width=100% cellpadding=6 cellspacing=0 border=0 >
<tr>
<td bgcolor=<? =$color2? >><font size=+1><b><? =$s? ></b></font></td></tr></table>
<table width=100% cellpadding=6 cellspacing=0 border=0 bgcolor=<? =$color1? >>
<tr><td width=50% align=right><b>Введите название предмета или выберите из существующих: </b><br>
<input type=text name=subject maxlength=30 size=30 value='<? =$sub? >'></td><td><table cellpadding=1 cellspacing=0 width=100%>
<?
for($i=0; $i<sizeof($massq); $i++)
{
$subj=mes($massq [$i], 'idsub', 'subjects');
echo "<tr><td width=50%><li>
<a href=input. php? sub=". $subj ['subject']. "><b>". $subj ['subject']. "</b></a></td></tr>";
} echo "</table></td></tr></table>";
? >
<table width="100%" cellpadding="6" cellspacing="0" border="0" ><tr>
<td bgcolor=<? =$color2? >><b>Введите вопрос: </b><br>
<input type="text" size="100" name="qes" value=""></td></tr>
<td bgcolor=<? =$color1? >><b>Правильный ответ: </b><br>
<input type="text" size="100" name="rans" value="" >
</td>
</tr>
<tr><td bgcolor=<? =$color2? >><b>Другой вариант ответа: </b><br>
<input type="text" size="100" name="ans1" value="" ></td></tr>
<tr><td bgcolor=<? =$color1? >><b>Другой вариант ответа: </b><br>
<input type="text" size="100" name="ans2" value=""></td></tr>
<tr><td bgcolor=<? =$color2? >><b>Другой вариант ответа: </b><br>
<input type="text" size="100" name="ans3" value=""></td></tr>
<tr><td bgcolor=<? =$color1? >><b>Другой вариант ответа: </b><br>
<input type="text" size="100" name="ans4" value="" ></td>
</tr></table>
<table bgcolor=<? =$color2? > width="100%" cellpadding="6" cellspacing=0><tr>
<td width="350" ><b>Минимальный процент правильных ответов<br> на 3 бала:
<input type="text" size="2" name="bal3" value="<? =$bal3? >" >%</b></td>
<td width="150"><b><br>на 4 бала:
<input type="text" size="2" name="bal4" value="<? =$bal4? >" >%</b></td>
<td>
<input type="checkbox" name="rec" value="rec">
<b>Изменить проценты в базе данных<b></td><td><b> <? =$sb? ></b></td></tr></table>
<table width="100%"><tr><td bgcolor=<? =$color1? > align="center"> <br>
<input type="submit" value="Записать"></td></tr></table>
</table>
<?
if(isset($_REQUEST ['error'])) $error=$_REQUEST ['error'] ; else $error='';
if($error=='No done') echo "Вопрос не записан";
elseif($error=='Done') echo '<b>Вопрос успешно внесен в базу данных</b>';
doout('');
? >
</body></form>
</html>
Е.5 Листинг модуля "admchat. php"
<?
echo "
<html><head>
<title>Чат-админ</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<form action=admchat. php method=post>
</head>
<body leftmargin='0' rightmargin='0' topmargin='0' bgcolorw='#e5e5e5'>";
include("all. php");
doheader('ЧАТ', ' - Администрирование');
$color1='#e5e5e5';
$color2='#cbdff7';
$color3='#009999';
$color4='#84adel';
if(isset($_REQUEST ['set'])) $set=$_REQUEST ['set'] ; else $set='';
$color_replace = array ('#\ [color=(\# [0-9A-F] {6}| [a-z\-] +) \] (. *?) \ [/color\] #si' => '<font color="\\1">\\2</font>');
$link_replace=array('#([\w] +?: // [^ \"\n\r\t<] *) #si' => '<a href="\\1" target=_blank><u>\\1</a></u>');
echo"<table width=100%><tr>
<td class=bor align=center width=50%><a href=AdminInternetTechnology. php>
<font size=+1 color=#0000FF>Администрирование</font></a></td>
<td class=bor align=center width=50%><a href=internettechnology. php>
<font size=+1 color=#0000FF>На главную</font></a></td></tr>
</table>";
echo"<center><table width=60% bgcolor=$color2><tr>
<td align=center width=50%><a href=admchat. php? set=ip>
<font size=+1 color=#0000FF>Блок IP-адресов</font></a></td>
<td align=center width=50%><a href=admchat. php? set=messages>
<font size=+1 color=#0000FF>Блок сообщений</font></a></td></tr>
</table><br>";
// // // // // // // // // // // // // // // // // // // // // // // // блок адресов
if($set=='ip')
{
if(isset($_REQUEST ['ipname'])) $ipname=$_REQUEST ['ipname'] ; else $ipname='';
if($ipname! ='') storeip($ipname, 'chat');
if(isset($_REQUEST ['delip'])) $delip=$_REQUEST ['delip'] ; else $delip='';
if($delip) del($delip, 'idip', 'ips');
echo"<table cellspacing=0 cellpadding=6 border=0 bordercolor=darkblue bgcolor=$color1>
<tr><td align=center >Запретить запись с IP - адреса: <input type=text name=ipname> <input type=hidden name=set value=ip><input type=submit name=submit value=Записать></a></td></tr></table>";
echo "<br><table width=20% border=1 bgcolor=$color2><tr><td><b>Запрещенные адреса: </b></td></tr><tr><td><table width=100% bgcolor=$color1 border=0>";
$ips=idsip('chat');
if(sizeof($ips) >0)
{ for($i=0; $i<sizeof($ips); $i++)
{ $ip=mes($ips [$i], 'idip', 'ips');
echo"
<tr><td>". $ip ['ip']. "</td><td><a href=admchat. php? set=". $set. "&delip=". $ip ['idip']. ">Удалить</a></td></tr>";
}
}
echo"</table></td></tr></table><br>";
}
// // // // // // // // // // // // // // // // // // // // // // // ///блок сообщений
if($set=='messages')
{
if(isset($_REQUEST ['del'])) $del=$_REQUEST ['del'] ; else $del='';
if($del! ='')
{
if($del=='all') delete('chatmessages'); else del($del, 'idchmes', 'chatmessages');
}
$idch=ids('chatmessages','idchmes');
if(sizeof($idch) >0)
{
echo "<table width=95% bgcolor=$color4 cellspacing=1 cellpadding=3 border=0 ><tr bgcolor=$color1>";
echo"<td width=15% valign=middle align=center><font color=darkblue><b>Автор</b></font></td>
<td width=70% align=center><font color=darkblue><b>Сообщение</b></font></td>
<td width=15% align=center><font color=darkblue><b>
<a href=admchat. php? set=messages&del=all>Удалить все</a></b></font></td></tr>";
$idch=array_reverse($idch);
$n=sizeof($idch); $row=0;
for($i=$n-1; $i>=0; $i--)
{
$mes=mes($idch [$i], 'idchmes', 'chatmessages');
$guest=returnchatguest($idch [$i]);
foreach($color_replace as $k=>$v) $mes ['message'] =preg_replace($k,$v,$mes ['message']);
foreach($link_replace as $key=>$value) $mes ['message'] =preg_replace($key, $value, $mes ['message']);
$mes ['message'] =smiles($mes ['message']);
$date=reformat_date($mes ['time']);
if ($row%2) $col=$color1; else $col=$color2;
echo
"<tr bgcolor=". $col. "><td valign=center align=center><b>". $guest ['name']. "</b><br>
<font size=2>". $date. "<br>". $guest ['email']. "</font></td><td align=left>". $mes ['message']. "</td>
<td align=center><font size=2>
<a href=admchat. php? set=". $set. "&del=". $mes ['idchmes']. ">Удалить</a><br>". $mes ['ip']. "</font></td></tr>";
$row++;
}
echo"</table>";
}
}
echo "</center></form></body></html>";
doout();
? >
Е.6 Листинг модуля "admexam. php"
<?
echo "<html><head><title>Администратор - экзаменатора</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'></head>
<body leftmargin=0 topmargin=0 rightmargin=0>";
include('all. php');
doheader('Интернет технологии',' - Тестирование');
echo "
<table width=100%>
<td class=bor align=center width=50%><a href=AdminInternetTechnology. php>
<font size=+1 color=#0000FF>Администрирование</font></a></td>
<td class=bor align=center width=50%><a href=InternetTechnology. php>
<font size=+1 color=#0000FF>На главную</font></a></td>
</table>";
if(isset($_REQUEST ['sub'])) $sub=$_REQUEST ['sub'] ; else $sub='';
if(isset($_REQUEST ['idques'])) $idques=$_REQUEST ['idques'] ; else $idques='';
if($idques=='all')
{if(! delquestions()) echo "<b>Вопросы не удалены</b>";
else echo "<b>Вопросы удалены</b>"; }
if($idques! ='') if(deleteques($idques) ==false)
echo"<b>Вопрос не удален. </b>";
else echo"<b>Вопрос удален</b>";
if(isset($_REQUEST ['delsub'])) $delsub=$_REQUEST ['delsub'] ; else $delsub='';
if($delsub! ='') if(deletesubject($delsub)) echo "Subject deleted";
$massq=ids('subjects', 'idsub'); // массив id предметов
$color3='#84ade1';
$color2='#cbdff7';
$color1='#e5e5e5';
$row=0;
echo "
<table width=100% cellpadding=6 cellspacing=0 border=0 bgcolor=$color2>
<tr><td width=50% align=center><b>Выберите предмет: </b></td>
<td><table cellpadding=1 cellspacing=0 width=100%>";
for($i=0; $i<sizeof($massq); $i++)
{
$subj=mes($massq [$i], 'idsub', 'subjects');
echo "<tr>
<td width=50%><li><a href=admexam. php? sub=". $subj ['subject']. "><b>". $subj ['subject']. "</b></a></td>
<td><a href=admexam. php? delsub=". $subj ['idsub']. ">Удалить этот предмет</a></td></tr>";
} echo "</table></td></tr></table>";
if($sub! ='')
{
$subnum=idss($sub);
$mass=idsq($subnum);
if(sizeof($mass) >1) shuffle($mass);
for($i=0; $i<sizeof($mass); $i++)
{
if ($row%2) $col=$color2; else $col=$color1;
$message=mes($mass [$i], 'idques', 'questions');
echo "<table width=100% cellpadding=6 cellspacing=0 border=0><tr>
<td bgcolor=". $col. " ><strong>". ($i+1). ". ". $message ['quesmes']. "</strong>
<td width=170 bgcolor=". $col. ">
<a href=admexam. php? idques=". $mass [$i]. ">Удалить этот вопрос</a></td></tr></table>";
$row++;
}
}
doout();
? >
</body>
</html>
Е.7 Листинг модуля "adminguest. php"
<?
echo "
<html>
<head>
<title>Гостевая книга-администрирование</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<form action=adminguest. php method=post>
<body leftmargin=0 rightmargin=0 topmargin=0>"; // bgcolor='#e5e5e5'
include('all. php');
doheader('Интернет технологии', ' - Гостевая книга');
$color_replace = array ('#\ [color=(\# [0-9A-F] {6}| [a-z\-] +) \] (. *?) \ [/color\] #si' => '<font color="\\1">\\2</font>');
$link_replace=array('#([\w] +?: // [^ \"\n\r\t<] *) #si' => '<a href="\\1" target=_blank><u>\\1</a></u>');
$color1='#e5e5e5';
$color2='#cbdff7';
$color3='#84adel';
if(isset($_REQUEST ['del'])) $del=$_REQUEST ['del'] ; else $del='';
if(isset($_REQUEST ['mode'])) $mode=$_REQUEST ['mode'] ; else $mode='';
if($del! ='')
if(! del($del,'idguest','guests')) $s="Не удалось удалить запись";
else $s="Запись удалена";
echo "
<table width=100%><tr>
<td class=bor align=center width=50%><a href=AdminInternetTechnology. php><font size=+1 color=#0000FF>Администрирование</font></a></td>
<td class=bor align=center width=50%><a href=internettechnology. php><font size=+1 color=#0000FF>На главную</font></a></td></tr>
</table><center>";
echo"<table width=50% bgcolor=$color2><tr>
<td align=center width=50%><a href=adminguest. php? mode=IP><font size=+1 color=#0000FF>Блок IP - адресов</font></a></td>
<td align=center width=50%><a href=adminguest. php? mode=messages><font size=+1 color=#0000FF>Блок сообщений</font></a></td></tr>
</table><center><br>";
// // // // // // // // // // // // // // // // // // // // IPs
if($mode=='IP')
{
if(isset($_REQUEST ['ipname'])) $ipname=$_REQUEST ['ipname'] ; else $ipname='';
if($ipname! ='') storeip($ipname, 'gb');
if(isset($_REQUEST ['delip'])) $delip=$_REQUEST ['delip'] ; else $delip='';
if($delip! ='') del($delip, 'idip', 'ips');
echo"<table cellspacing=0 cellpadding=6 border=0 bordercolor=darkblue bgcolor=$color1>
<tr><td align=center >Запретить запись с IP - адреса: <input type=text name=ipname> <input type=hidden name=mode value=IP><input type=submit name=submit value=Записать></td></tr></table>";
echo "<br><table width=20% border=1 bgcolor=$color2><tr><td><b>Запрещенные адреса: </b></td></tr><tr><td><table width=100% bgcolor=$color1 border=0>";
$ips=idsip('gb');
if(sizeof($ips) >0)
{ for($i=0; $i<sizeof($ips); $i++)
{ $ip=mes($ips [$i], 'idip', 'ips');
echo"
<tr><td>". $ip ['ip']. "</td><td><a href=adminguest. php? mode=". $mode. "&delip=". $ip ['idip']. ">Удалить</a></td></tr>";
}
}
echo"</table></td></tr></table><br>";
} // end IPs
// // // // // // // // // // // // // // // // // //// messages
if($mode=='messages')
{
$row=0;
echo "<table width=90% border=0 bgcolor=$color3 cellspacing=1>
<tr bgcolor=$color1><td width=10% align=center><b>Страница</b></td><td width=17% align=center><b>Автор</b></td><td width=60% align=center><b>Сообщение</b></td><td width=13% align=center><b>Удалить</b></td></tr>";
$ids=idssort('page');
if(sizeof($ids) >0)
for($i=0; $i<sizeof($ids); $i++)
{
$mes=mes($ids [$i], 'idguest','guests');
$student=studguest($ids [$i], 'all');
foreach($color_replace as $k=>$v)
{
$mes ['message'] =preg_replace($k,$v,$mes ['message']);
}
foreach($link_replace as $key=>$value)
{
$mes ['message'] =preg_replace($key, $value, $mes ['message']);
}
$mes ['message'] =smiles($mes ['message']);
$date=reformat_date($mes ['time']);
if ($row%2) $col=$color1; else $col=$color2;
echo
"<tr bgcolor=". $col. "><td align=center><font size=2>". $mes ['page']. "</font><td align=center><font size=2><b>". $student ['name']. " ". $student ['secondname']. "</font></b><br><font size=2>   (". $date. ") <br>  ". $student ['email']. "<br>  ". $mes ['ip']. "</font> </td> <td valign=center align=left> ". $mes ['message']. "</td><td align=center><a href=adminguest. php? mode=messages&del=". $mes ['idguest']. "><font size=2>Удалить запись</font></a></td> </tr> ";
$row++;
}
echo "</table></center>";
} //// end messages
doout('');
echo "</body></html>";
? >
Е.8 листинг модуля "adminpass. php"
<html>
<form method = post action = "adminpass. php">
<head>
<title>Доступ администратора</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body leftmargin="0" rightmargin="0" topmargin="0">
<?
include("all. php");
$color2='#cbdff7';
$color1='#e5e5e5';
if(! isset($_REQUEST ['name']) &&! isset($_REQUEST ['password']))
{doheader('Интернет технологии'," - Администрирование");
echo "<link href=bor. css rel=stylesheet type=text/css>
<table width=100%>
<td class=bor align=center width=50% ><a href=InternetTechnology. php>
<font size=+1 color=#0000FF>На главную</font></a></td>
</table>";
? >
<table width="100%" cellpadding="6" cellspacing="0">
<tr>
<td width="100%" bgcolor=<? =$color2? >>
<font size='+1'><b>Введите имя и пароль администратора</b></font></td></tr></table>
<table width="100%" bgcolor=<? =$color1? > border="0" cellspacing="0" cellpadding="6" cellspacing="0">
<tr>
<td width=80><b>Ваше имя: </b></td>
<td width=150><input type=text name=name> </td>
<td > </td>
</tr>
<tr>
<td width=80 bgcolor=<? =$color2? >><b>Пароль: </b></td>
<td width=150 bgcolor=<? =$color2? >><input type=password name=password></td>
<td bgcolor=<? =$color2? >><input type="submit" name="Submit" value="Доступ"></td>
</tr>
</table>
<? doout("");
}
else if($_REQUEST ['name'] =="alex"&&md5($_REQUEST ['password']) =='dd28e50635038e9cf3a648c2dd17ad0a')
include("AdminInternetTechnology. php");
else include("exam. php");
? >
</body>
</html>
Е.9 Листинг модуля "adminshop. php"
<html>
<head>
<title>Админ - Магазин</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body leftmargin="0" rightmargin="0" topmargin="0">
<form action="admshop. php" method="post">
<?
include 'all. php';
if(isset($_GET ['mode'])) $mode=$_GET ['mode'] ; else $mode='';
if(isset($_REQUEST ['title']) &isset($_REQUEST ['description']) &isset($_REQUEST ['price']))
if(! reccd($HTTP_POST_VARS))
echo"<script> alias ('Товар занесен в базу данных! ') </script>";
else echo"<script> alias ('Ошибка записи! ') </script>";
doheader('Интернет технологии',' - Магазин');
echo "
<table width=100%>
<td class=bor align=center width=50%><a href=AdminInternetTechnology. php>
<font size=+1 color=#0000FF>Администрирование</font></a></td>
<td class=bor align=center width=50%>
<a href=InternetTechnology. php><font size=+1 color=#0000FF>На главную</font></a></td>
</table>";
$color2="#cbdff7";
$color1='#e5e5e5';
echo"<center><table width=70% bgcolor=$color2>
<td align=center width=25% >
<a href=admshop. php? mode=zakaz><font size=+1 color=#0000FF>Заказы</font></a></td>
<td align=center width=25% ><a href=admshop. php? mode=input>
<font size=+1 color=#0000FF>Ввод новых товаров</font></a></td>
<td align=center width=25% ><a href=admshop. php? mode=tovar>
<font size=+1 color=#0000FF>Товары</font></a></td>
<td align=center width=25% ><a href=admshop. php? mode=clients>
<font size=+1 color=#0000FF>Заказчики</font></a></td>
</table></center>";
echo "<table width='100%' border='0' cellspacing='0' cellpadding='6' background='images/blocks_bg. gif'><tr><td><center><br>";
// // // // // // // // ///mode=input
if($mode=='input')
{
echo "<table width='30%' border='1' bgcolor='$color2' cellspacing='3' cellpadding='6'>
<tr bgcolor=$color1><td><b>Введите данные о товаре: </b></td></tr>
<tr bgcolor=$color1><td>Название: <br>
<input type='text' name='title' size='65' maxlength='50'><br>
Примечание: <br>
<textarea name='description' cols='50' rows='3'></textarea><br>
Цена: <br>
<input type='text' name='price'>
</td></tr>
<tr bgcolor=$color1><td>
<center><input type='submit' name='submit' value='Записать'></center>
</td></tr></table>";
}
// // // // // // // // //// end input
// // // // // // // // //// mode=tovar
if($mode=='tovar')
{
if(isset($_REQUEST ['deltovar'])) $deltovar=$_REQUEST ['deltovar'] ; else $deltovar='';
if($deltovar! ='')
if($deltovar=='all') delete('cd');
elseif(! fdel($deltovar, 'idc', 'cd')) $s="Не удалось удалить запись";
else $s="Запись удалена";
echo"<center><table bgcolor=$color2 border=1 width=90%><tr><td><table cellpadding=4 cellspacing=2 width=100% border=0><tr bgcolor=$color1>
<td width=25%><b>Название</b></td><td width=50%><b>Примечание</b></td><td width=10%><b>Цена</b></td><td width=15%><b>
<a href=admshop. php? mode=tovar&deltovar=all>Удалить все</a></b></td></tr></table>";
echo"</td></tr><tr><td><center><table border=0 width=100% cellspacing=2 cellpadding=4>";
$num=ids('cd', 'idc');
for($i=0; $i<sizeof($num); $i++)
{
$cd=mes($num [$i], 'idc', 'cd');
echo"<tr bgcolor=$color1><td width=25%>". $cd ['title']. "</td><td width=50%>". $cd ['description']. "</td><td width=10%>". $cd ['price']. "</td><td width=15%><a href=admshop. php? mode=tovar&deltovar=". $cd ['idc']. ">Удалить</a></tr>";
}
echo"</table></tr></td><table><br>";
}
// // // // // // // // // // // end tovar
// // // // // // // // // // // /mode=zakaz
if($mode=='zakaz')
{
$done=isset($_REQUEST ['done'])? $_REQUEST ['done']: '';
if($done) if($done! ='') update_status($done);
$delzakaz=isset($_REQUEST ['delzakaz'])? $_REQUEST ['delzakaz']: '';
if($delzakaz! ='')
if($delzakaz=='all') delete('zakaz');
elseif(! fdel($delzakaz, 'idz', 'zakaz')) $s="Не удалось удалить запись";
echo"<center><table bgcolor=$color2 border=1 width=98%><tr><td><table cellpadding=4 cellspacing=2 width=100% border=0><tr bgcolor=$color1>
<td width=43%><b>Заказчики</b></td><td width=43%><b>Данные о заказе</b></td><td width=14%><b><a href=admshop. php? mode=zakaz&delzakaz=all>Удалить все</a></b></td></tr></table>";
echo"</td></tr><tr><td><center><table border=0 width=100% cellspacing=2 cellpadding=4>";
$num=ids('zakaz', 'idz');
for($i=0; $i<sizeof($num); $i++)
{
$zak=mes($num [$i], 'idz', 'zakaz');
if($zak ['flag_done'] =='n')
{$col='red'; $status='Не выполнен'; } else { $status='Выполнен'; $col='green'; }
$client=mes($zak ['idclienta'], 'idclient', 'shopclients');
$cd=mes($zak ['idcd'], 'idc', 'cd');
echo"<tr bgcolor=$color1 align=center><td width=40% align=left><font size=2><b>Заказчик: </b></font><a href=rtfshop. php? id=". $zak ['idz']. " title='Нажмите для создания отчета в MS Word'>". $client ['name']. " ". $client ['sname']. ". </a><br><font size=2><b>E-mail: </b></font>
<a href=mailto: ". $client ['email']. "? subject=Заказ%20выполнен&body=Ваш%20заказ%20выполнен.%20С%20уважением,%20админстратор. title='Нажмите для отправки по электронной почте'>". $client ['email']. "</a>
<font size=2><b> Телефон: </b></font>". $client ['fhone']. "<br>
<font size=2><b>Адрес: </b></font>". $client ['address']. "<br>
<font size=2><b>Статус: <font size=3 color=". $col. ">". $status. "</b></font><br>
<a href=admshop. php? mode=zakaz&done=". $zak ['idz']. " title='Нажмите для изменения статуса выполнения'>Выполнен</a></td><td width=26% align=left valign=top>
<font size=2><b>Название: </b></font><br>". $cd ['title']. "</td><td width=7%>
<font size=2><b>Цена: </b></font><br>". $cd ['price']. "</td><td width=7%>
<font size=2><b>Кол-во: </b></font><br>". $zak ['count']. "</font></td><td width=7%>
<font size=2><b>Сумма: </b></font><br>". $cd ['price'] *$zak ['count']. "</td><td width=7%>
<a href=admshop. php? mode=zakaz&delzakaz=". $zak ['idz']. ">Удалить</a></tr>";
}
echo"</table></tr></td><table><br>";
}
// // // // // // // // // // // // end
// // // // // // // // // // // // mode=clients
if($mode=='clients')
{
$delclient=isset($_REQUEST ['delclient'])? $_REQUEST ['delclient']: '';
if($delclient! ='')
if($delclient=='all') delete('shopclients');
elseif(! fdel($delclient, 'idclient', 'shopclients')) $s="Не удалось удалить запись";
else $s="Запись удалена";
echo"<center><table bgcolor=$color2 border=1 width=90%><tr><td><table cellpadding=4 cellspacing=2 width=100% border=0><tr bgcolor=$color1>
<td width=89%><b>Сведения о заказчиках</b></td></td><td width=11%><b>
<a href=admshop. php? mode=clients&delclient=all>Удалить все</a></b></td></tr></table>";
echo"</td></tr><tr><td><center><table border=0 width=100% cellspacing=2 cellpadding=4>";
$num=ids('shopclients', 'idclient');
for($i=0; $i<sizeof($num); $i++)
{
$client=mes($num [$i], 'idclient', 'shopclients');
echo"<tr bgcolor=$color1><td width=14%>". $client ['name']. " ". $client ['sname']. "</td><td width=10%>". $client ['fhone']. "</td><td width=15%>". $client ['email']. "</td><td width=50%>". $client ['address']. "</td><td width=11%><a href=admshop. php? mode=clients&delclient=". $client ['idclient']. ">Удалить</a></tr>";
}
echo"</table></tr></td><table><br>";
}
// // // // // // // // // // // // // //
echo"</center></tr></td></table><br>";
doout()
? >
</form>
</body>
</html>
Е.10 Листинг модуля "students. php"
<?
if(! session_id())
session_start();
echo "<html><head>
<title>Интернет технологии - Студенты</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
</head>
<body leftmargin=0 rightmargin=0 topmargin=0>";
include("all. php");
$color2='#cbdff7';
$color1='#e5e5e5';
$s='';
if(isset($_REQUEST ['mode'])) $mode=$_REQUEST ['mode'] ; else $mode='';
if(isset($_REQUEST ['del'])) $del=$_REQUEST ['del'] ; else $del='';
if(isset($_REQUEST ['idot'])) $idot=$_REQUEST ['idot'] ; else $idot='';
if($del! ='')
if(! delresult($del)) $s="Не удалось удалить запись";
else $s="Запись удалена";
doheader('Экзаменатор',' - Студенты');
echo "<link href=bor. css rel=stylesheet type=text/css>
<center><table width=100%>
<td class=bor align=center width=50% ><a href=rtfs. php>
<font size=+1 color=#0000FF>Сформировать отчет</font></a></td>
<td class=bor align=center width=50% >
<a href=AdminInternetTechnology. php><font size=+1 color=#0000FF>Администрирование</font></a></td>
</table>";
echo"<table width=50% bgcolor=$color2>
<td align=center width=33% ><a href=students. php? mode=students>
<font size=+1 color=#0000FF>По студенту</font></a></td>
<td align=center width=33% ><a href=students. php? mode=subjects>
<font size=+1 color=#0000FF>По предмету</font></a></td>
<td align=center width=33% ><a href=students. php? mode=all>
<font size=+1 color=#0000FF>По результатам</font></a></td>
</table></center>";
// // // // // // // // // // // // // // // // /subjects
if($mode=='subjects')
{
echo"<center><br><table border=1 bgcolor=$color2><tr><td><table cellpadding=3 cellspasing=6>";
$numst=ids('subjects', 'idsub');
for($i=0; $i<sizeof($numst); $i++)
{
$st1=mes($numst [$i], 'idsub', 'subjects');
echo"<tr><td><a href=students. php? mode=subjects&idsts=". $st1 ['idsub']. ">". $st1 ['subject']. "</a></td></tr>";
}
echo"</table></tr></td><table><br>";
if(isset($_REQUEST ['idsts'])) $idsts=$_REQUEST ['idsts'] ; else $idsts='';
if($idsts! ='')
{
$idsts=idsst($idsts, 'idsubr');
if($idsts)
{
outstudents($idsts, $mode);
$_SESSION ['idot'] =array();
$_SESSION ['idot'] =$idsts;
}
}
}
// // // // // // // // // // // // // // ///students
if($mode=='students')
{
if(isset($_REQUEST ['delstudent'])) $delstudent=$_REQUEST ['delstudent'] ; else $delstudent='';
if($delstudent! ='')
if(! fdelstud($delstudent)) $s="Не удалось удалить запись";
else $s="Запись удалена";
echo"<center><br><table bgcolor=$color2 border=1><tr><td><table cellpadding=3 cellspacing=1><tr><td>Шифр</td><td>Имя и фамилия</td><td>Факультет</td><td> </td></tr>";
$numst=ids('students', 'idstud');
for($i=0; $i<sizeof($numst); $i++)
{
$st2=mes($numst [$i], 'idstud', 'students');
echo"<tr><td>". $st2 ['idstud']. "</td><td><a href=students. php? mode=students&idst=". $st2 ['idstud']. ">". $st2 ['name']. " ". $st2 ['secondname']. "</a></td><td>". $st2 ['faculty']. "</td><td><a href=students. php? mode=students&delstudent=". $st2 ['idstud']. ">Удалить</a></tr>";
}
echo"</table></tr></td><table><br>";
if(isset($_REQUEST ['idst'])) $idst=$_REQUEST ['idst'] ; else $idst='';
if($idst! ='')
{
$idst=idsst($idst, 'idstudr');
if($idst)
{
outstudents($idst, $mode);
$_SESSION ['idot'] =array();
$_SESSION ['idot'] =$idst;
}
}
}
// // // // // // // // // // /Блок всех результатов
if($mode=='all')
{
$nums=ids('results', 'idres');
if($nums)
{
outstudents($nums, $mode);
$_SESSION ['idot'] =array();
$_SESSION ['idot'] =$nums;
echo "<font size=+1 color=blue>". $s. "</font>";
}
}
// // // // // // // // // // // // // ///конец блока всех результатов
doout();
echo "</body></form></html>";
? >
Е.11 Листинг модуля "rtfs. php"
<?
if(! session_id())
session_start();
include('BaseFunctions. php');
include('funcexam. php');
$nums=$_SESSION ['idot'] ;
if($nums)
{
header("Content-type: application/msword");
header("Content-Disposition: inline, filename=students. rtf");
echo "\tСтуденты прошедшие тест. \n\n";
for($i=0; $i<sizeof($nums); $i++)
{
$results=mes($nums [$i],'idres','results');
$student=mes($results ['idstudr'],'idstud','students');
$subject=mes($results ['idsubr'],'idsub','subjects');
$date=reformat_date($results ['posted']);
echo ($i+1). ". Студент: ". $student ['name'] ; echo " ";
echo $student ['secondname'] ; echo "\n";
echo " "; echo "Шифр: "; echo "\t";
echo $student ['idstud'] ; echo "\n";
echo " "; echo "Факультет: ";
echo $student ['faculty'] ; echo "\n";
echo " "; echo "Результат: "; echo "\t";
echo $results ['score'] ; echo "%\n";
echo " "; echo "Оценка: "; echo "\t";
echo bal($results ['score']); echo "\n";
echo " "; echo "Предмет: "; echo "";
echo $subject ['subject'] ; echo "\n";
echo " "; echo "Число попыток: "; echo "";
echo $results ['count'] ; echo "\n";
echo " "; echo "Дата: "; echo "\t";
echo $date;
echo "\n"; echo "\n";
}
} else
{
echo "Сначала выберите категорию отображения! ";
include 'students. php';
}
? >
Е.12 Листинг модуля "rtfshop. php"
<?
header("Content-type: application/msword");
header("Content-Disposition: inline, filename=students. rtf");
include 'BaseFunctions. php';
if(isset($_REQUEST ['id'])) $id=$_REQUEST ['id'] ; else $id='';
$zak=mes($id, 'idz', 'zakaz');
$client=mes($zak ['idclienta'], 'idclient', 'shopclients');
$cd=mes($zak ['idcd'], 'idc', 'cd');
$date=reformat_date($zak ['recdate']);
echo"Заказчик: ". $client ['name']. " ". $client ['sname'] ; echo "\n";
echo"Номер телефона: ". $client ['fhone'] ; echo "\n";
echo"Эл. почта: ". $client ['email'] ; echo "\n";
echo"Адрес: ". $client ['address'] ; echo "\n";
echo"Заказал: ". $zak ['count']. " диск(а) '". $cd ['title']. "'"; echo "\n";
echo"По цене: ". $cd ['price'] ; echo "\n";
echo"На сумму: ". $zak ['count'] *$cd ['price'] ; echo "\n";
echo"Дата заказа: ". $date; echo "\n";
? >
|