Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Автоматизовані системи управління”
Курсовий проект
“ Розробка прикладної програми тестового контролю з використанням технологій JSP та сервлетів ”.
Керівник роботи:
асистент кафедри АСУ /xxxxxx/
Виконавець:
студент групи xxxxxxx
Харків 2004
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Автоматизовані системи управління”
Оцінка
_____________________
голова комісії
_____________________
«___»_________2004р.
Курсовий проект
Тема:“ Розробка прикладної програми тестового контролю з використанням технологій JSP та сервлетів”.
Керівник роботи:
асистент кафедри АСУ / xxxxxx./
“____”______________2004р.
Виконавець:
студент групи xxxxxxx
“____”______________2004р.
Харків 2004
Національний технічний університет "Харківський політехнічний інститут"
Кафедра автоматизованих систем управління
Студент xxxxxxx. Група xxxxxx в Курс 2
З А В Д А Н Н Я
на науково-дослідну курсову роботу
з курсу "Технологія програмування"
Тема:
Розробка прикладної програми тестового контролю з використанням технологій JSP та сервлетів
Постановка задачі:
Під час виконання курсової роботи необхідно спроектувати та реалізувати програму, яка в залежності від прав користувача (адміністратор / викладач / студент) дозволяє:
Доступ до програми повинен здійснюватися за допомогою web-броузеру. Засоби роботи з файлами та обробки даних повинні бути розташовані на web-сервері. Для розміщення серверних компонентів застосувати контейнер сервлетів Tomcat, а для збереження даних про користувачів, тести та статистику файли XML.
Короткий зміст роботи:
а) реферативна частина
Вивчення предметної області. Вивчення засобів мови Java для роботи з XML-файлами. Вивчення технологій JSP та сервлетів. Вивчення можливостей контейнеру сервлетів Tomcat.
б) теоретична частина
Проектування програмного забезпечення. Визначення вимог щодо програмного забезпечення. Розробка діаграм варіантів використання, класів, послідовності. Проектування інтерфейсу користувача.
в) програмна частина
Реалізація консольної програми для тестування роботи з XML-файлами. Реалізація та тестування програми з використанням технологій JSP та сервлетів. Документування програмного продукту.
Термін демонстрації програмного забезпечення 12.05.2004
Термін захисту курсової роботи 22.05.2004
Керівник курсової роботи _________________________(xxxxxxx.)
Отзыв
на курсовой проект
студента группы xxxxxxxxx
Данный курсовой проект посвящен разработке и реализации прикладной программы тестового контроля с использованием технологии JSP и сервлетов. При выполнении курсовой работы были изучены методы работы с XML-файлами, технологии сервлетов, JSP, JavaBeans. Во время выполнения работы были закреплены знания о методах проектирования, об унифицированном языке моделирования (UML). Программный продукт разрабатывался в рамках интегрированной среды разработки Borland JBuilder.
Студенту удалось реализовать удобный и понятный интерфейс, разделить права пользователей, обеспечить защиту программы от несанкционированного доступа.
При выполнении данной работы, студент Уманский А.Г. продемонстрировал инициативность и самостоятельность, освоил методы разработки web-ориентированных приложений, выполнял отдельные этапы своей работы в рамках установленных сроков.
Курсовая работа полностью отвечает поставленным требованиям и заслуживает оценки «____________»
Руководитель курсовой работы: ____________ асс. xxxxxxxx
АНОТАЦІЯ
Розробка прикладної програми тестового контролю з використанням технологій JSP та сервлетів.
Курсовий проект по курсу "Технологія програмування" за спеціальністю «Програмне забезпечення автоматизованих систем», Національний Технічний Університет "Харківський Політехнічний Інститут", Харків 2004.
Даний курсовий проект присвячений розробці програмного забезпечення створення тестів та їх проведення . Використовується технологія JSP та сервлети. Для збереження даних використовується XML. На цій основі розроблено програмне забезпечення мовою Java у середовищі Borland JBuilder 8.0.
АННОТАЦИЯ
Разработка прикладной программы тестового контроля с использованием технологий JSP и сервлетов.
Курсовой проект по курсу "Технология программирования" специальности «Программное обеспечение автоматизированных систем», Национальный Технический Университет "Харьковский Политехнический Институт", Харьков 2004.
Данный курсовой проект посвящен разработке программного обеспечения создания тестов и их проведения. Используется технология JSP и сервлетов. Для хранения данных используется XML. На этой основе разработано программное обеспечение на языке Java в среде Borland JBuilder 8.0.
ABSTRACT
Elaboration of the program of test control by means of JSP technologies and servlets.
An academic year project in “Technology of programming” course; specialization “Software of Automatized Systems”, National Technical University “Kharkov Polytechnical Institute”, Kharkov 2004.
This academic year project is devoted to elaboration of the software of test creation and their carrying out. Technology JSP and servlets are used. XML is used for the data storage. The software was developed by means of Java language in Borland JBuilder environment.
СОДЕРЖАНИЕ
Введение
Выводы
СПИСОК использованных источников
Задачей данного курсового проекта является разработка Web-ориентированного приложения тестового контроля знаний студентов. Основной особенностью Web-приложений является использование их большим количеством пользователей, которые могут использовать различные операционные системы. Таким образом должна обеспечивается независимость от платформы. Java, являясь многоплатформенным языком отлично справляется с данной задачей.
Тестовый контроль является неотъемлемой частью современного учебного процесса. Программа создана для автоматизации данного процесса, получения расширенных возможностей сохранения результатов и ведения статистики тестирования. Процесс создания и администрирования тестами имеет иерархическую(или вложенную структуру), что сделало его наглядным и простым. Работа проектировалась с учетом разделения прав пользователей, что позволило оградить программу от несанкционированных доступов.
Все вышеизложенное говорит о том, что созданная прикладная программа в среде JBuilder 8.0 значительно ускорит производительность труда преподавателей, сократит временные затраты студентов на прохождение контроля, создаст предпосылки для достоверности полученных оценок.
XML (Extensible Markup Language) - это язык разметки, описывающий целый класс объектов данных, называемых XML- документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов. Т.е. сам по себе XML не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания. Набор тэгов может быть легко расширен. Cам процесс создания XML документа очень прост и требует от разработчика лишь базовых знаний HTML и понимания тех задач, которые необходимо выполнить, используя XML в качестве языка разметки. Таким образом, у разработчиков появляется уникальная возможность определять собственные команды, позволяющие им наиболее эффективно определять данные, содержащиеся в документе. Автор документа создает его структуру, строит необходимые связи между элементами, используя те команды, которые удовлетворяют его требованиям и добивается такого типа разметки, которое необходимо ему для выполнения операций просмотра, поиска, анализа документа.
Еще одним из очевидных достоинств XML является возможность использования его в качестве универсального языка запросов к хранилищам информации. Кроме того, XML-документы могут выступать в качестве уникального способа хранения данных, который включает в себя одновременно средства для разбора информации и представления ее на стороне клиента. В этой области одним из перспективных направлений является интеграция Java и XML - технологий, позволяющая использовать мощь обеих технологий при построении машинно-независимых приложений, использующих, кроме того, универсальный формат данных при обмене информации.
XML позволяет также осуществлять контроль за корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные. Это означает, что его можно использовать при построении сложных информационных систем, в которых очень важным является вопрос обмена информацией между различными приложениями, работающими в одной системе. Создавая структуру механизма обмена информации в самом начале работы над проектом, менеджер может избавить себя в будущем от многих проблем, связанных с несовместимостью используемых различными компонентами системы форматов данных.
Тело документа XML состоит из элементов разметки (markup) и непосредственно содержимого документа - данных (content). XML - тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка.
В XML-документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов (сложность DTD является одной из причин того, что использование SGML, требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML). Как уже отмечалось, в XML использовать DTD не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса XML. Однако контроль за типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика XML-документа не описана, с ним не могут работать универсальные программы-анализаторы.
В DTD для XML используются следующие типы правил: правила для элементов и их атрибутов, описания категорий(макроопределений), описание форматов бинарных данных. Все они описывают основные конструкции языка - элементы, атрибуты, символьные константы внешние файлы бинарных данных.
Для того, чтобы использовать DTD в документе, необходимо или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD- описания:
<?xml version="1.0" standalone="yes" ?>
<! DOCTYPE journal SYSTEM "journal.dtd">
...
Внутри же документа DTD- декларации включаются следующим образом:
...
<! DOCTYPE journal [
<!ELEMENT journal (contacts, issues, authors)>
...
]>
...
В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML- процессор в первую очередь ищет DTD внутри документа. Если правила внутри документа не определены и не задан атрибут standalone ="yes" , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут standalone имеет значение "yes", то использование внешних DTD описаний будет запрещено.
Элемент в DTD определяется с помощью дескриптора !ELEMENT, в котором указывается название элемента и структура его содержимого.
Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элемента и тип его содержимого.
В определении элемента мы указываем сначала название элемента, а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ? :
Списки атрибутов элемента определяются с помощью ключевого слова !ATTLIST. Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры.
Всего существует шесть возможных типов значений атрибута:
Список допустимых значений - определяется список значений, которые может иметь данный атрибут.
Также в определении атрибута можно использовать следующие параметры:
Web-службы зависят от способности участников взаимодействовать друг с другом даже при использовании ими различных информационных систем. XML (Extensible Markup Language), язык разметки, делающий данные переносимыми, является ключевой технологией, предназначенной для обеспечения такой способности. Корпоративные пользователи увидели преимущества использования XML для интеграции данных как для совместного использования существующих данных между подразделениями, так и для использования их совместно с другими предприятиями. В результате XML все больше используется в корпоративных интегрированных приложениях, как в сильносвязанных, так и в слабосвязанных системах. Из-за такой способности к интеграции данных XML стал фундаментом Web-вычислений. Web-службы зависят также от способности предприятий использовать различные вычислительные платформы для взаимодействия друг с другом. Это требование делает платформу Java™, программы в которой являются переносимыми, естественным выбором для разработки Web-служб. Этот выбор стал еще более привлекательным после появления
новых Java API для XML, что сделало более легким использование XML в языке программирования Java. Кроме переносимости кода и данных Web-службы должны быть масштабируемыми, безопасными и эффективными. Java™ 2 Platform, Enterprise Edition (J2EE™), специально разработана для удовлетворения этих потребностей. Она облегчает в действительности трудную часть разработки Web-служб, а именно программирование инфраструктуры. Эта инфраструктура включает в себя такие функции как безопасность, управление распределенными транзакциями и управление пулом соединений, которые имеют важнейшее значение для производительности Web-служб. А поскольку компоненты являются повторно используемыми, время разработки существенно уменьшается. Поскольку XML и платформа Java хорошо работают вместе, они стали играть центральную роль в Web-службах. Фактически, преимущества, предлагаемые Java API для XML и платформой J2EE, делают их идеальной комбинацией для размещения Web-служб. Эти API дают возможность сообществу Java, разработчикам и поставщикам сервисных программ и контейнеров начать разработку приложений Web-служб и использование стандартных Java API, составляющих основу принципа технологии Java - Write Once, Run Anywhere™ (пишется один раз, используется везде). Java Web Services Developer Pack (Java WSDP) собирает все эти API в один пакет. Примеры в Java WSDP должны запускаться в контейнере Tomcat (входящим в пакет Java WSDP).
Java API for XML Processing (JAXP) предназначен для обработки XML-данных в приложениях, написанных на языке программирования Java. JAXP использует стандарты анализаторов SAX (Simple API for XML Parsing) и DOM (Document Object Model), так что вы можете выбирать между анализом данных как потока событий или построением их объектного представления. JAXP поддерживает также стандарт XSLT (XML Stylesheet Language Transformations), предоставляющий вам контроль над представлением данных и позволяющий преобразование данных в другие XML-документы или в другие форматы, такие как HTML. JAXP обеспечивает также поддержку пространства имен, позволяя вам работать с DTD, которые могли бы в противном случае вызвать конфликт имен.
JAXP позволяет вам использовать любой XML-совместимый анализатор в вашем приложении. Это обеспечивается при помощи так называемого уровня подключений, который разрешает подключать реализации SAX или DOM API. Уровень подключений позволяет также подключить XSL-процессор, дающий вам контроль над способом отображения ваших XML-данных.
"Simple API" for XML (SAX) представляет собой основанный на событиях механизм последовательного доступа, осуществляющий обработку "элемент-за-элементом". API этого уровня читает и записывает XML в хранилище данных или Web. Для серверных и высокопроизводительных приложений вы должны полностью понимать этот уровень. Но для многих приложений достаточно минимальных знаний.
DOM API обычно легче в использовании. Он обеспечивает относительно знакомую древовидную структуру объектов. Вы можете использовать DOM API для управления иерархией объектов приложения, которые он объединяет. DOM API является идеальным для интерактивных приложений, поскольку в памяти присутствует полная модель объектов, к ней можно получить доступ и пользователь может управлять ею.
Document Object Model (объектная модель документа) является искусственной древовидной структурой, в которой каждый узел содержит один из компонентов XML-структуры. Двумя наиболее общими типами узлов являются узлы элементов и текстовые узлы. Использование функций DOM позволяет вам создавать узлы, удалять узлы, изменять их содержимое и проходить по иерархии узлов.
С самого начала DOM разрабатывался нейтральным к языку. Поскольку он был предназначался для использования с языками, подобными С или Perl, DOM не использует преимуществ объектно-ориентированных особенностей Java.
С другой стороны, создание DOM требует чтения полной XML-структуры и хранения дерева объектов в памяти, то есть этот метод использует значительно больше ресурсов CPU и памяти. По этой причине SAX API более предпочтителен для серверных приложений и фильтров данных, которые не требуют наличия данных в памяти.
Однако SAX-протокол требует гораздо большего объема программирования, чем Document Object Model (DOM). Это управляемая событиями модель (вы обеспечиваете методы обратного вызова, а анализатор вызывает их по мере чтения XML-данных), которая затрудняет визуализацию данных. И, наконец, вы не можете вернуться к предыдущей части документа или реорганизовать его, точно также, как не можете вернуться к предыдущим данным в последовательном потоке данных, или реорганизовать символы, прочитанные из потока. По этим причинам разработчики, создающие ориентированное на пользователя приложение, которое отображает XML-документ и, возможно, модифицирует его, будут, вероятно, использовать DOM-механизм,
Когда необходимо изменить XML-структуру, особенно если это нужно сделать в интерактивном режиме, больший смысл имеет применение структуры, находящейся в памяти, такой как DOM. Однако, в то время как DOM предоставляет много мощных возможностей для больших документов (таких как книги и статьи), он также требует много сложного кодирования.
Так как данная курсовая работы представляет собой приложение для работы с небольшими объемами данных, но которые необходимо часто менять, то целесообразно использовать DOM-механизм работы с XML-файлами.
Сервлет является Java-классом, используемым для расширения функциональных возможностей серверов, на которых размещаются приложения, доступ к которым осуществляется посредством программной модели запрос-ответ. Несмотря на то, что сервлеты могут отвечать на любой тип запроса, они используются для расширения приложений, находящихся на Web-серверах. Для таких приложений технология Java Servlet определяет характерные для HTTP классы сервлетов.
Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для написания сервлетов. Все сервлеты должны реализовывать интерфейс Servlet, который определяет методы жизненного цикла. При реализации службы generic, можно использовать или расширять класс GenericServlet, поставляемый с интерфейсом API для Java Servlet. Класс HttpServlet обеспечивает для обработки служб HTTP такие методы, как doGet и doPost. Служба, обеспеченная сервлетом, реализована в методе service сервлета GenericServlet, методе doMethod (где Method может принимать значения Get, Delete, Options, Post, Put, Trace) сервлета HttpServlet или любых других, определенных протоколом методов, которые определены классом, реализующим интерфейс Servlet. В конце данного раздела, термин метод службы будет использован для любого метода класса сервлета, обеспечивающего службу клиенту.
Общим принципом действия метода службы является извлечение информации из запроса, доступ к внешним ресурсам и последующее заполнение ответа, базирующегося на данной информации. Для сервлетов HTTP, корректной процедурой заполнения ответа будет следующая последовательность действий: заполнение заголовков ответа, получение входящего потока из ответа и запись содержимого тела в исходящий поток. Заголовки ответов всегда должны устанавливаться перед получением PrintWriter или ServletOutputStream. Это необходимо по причине того, что HTTP-протокол ожидает получения всех заголовков перед перед получением содержимого тела.
Запрос содержит данные, передаваемые между клиентом и сервлетом. Все запросы реализуют интерфейс ServletRequest. Данный интерфейс определяет методы для доступа к следующей информации:
Ответ содержит данные, передаваемые между сервером и клиентом. Все ответы реализуют интерфейс ServletResponse. Данный интерфейс определяет методы, которые позволяют вам выполнять следующие действия:
Технология JSP-страниц (JavaServer Pages - JSP) позволяет без труда создавать web-содержимое, у которого есть как статическая, так и динамическая компоненты. JSP-технология воплощает все динамические возможности Java Servlet-технологии, однако обеспечивает при этом более естественный подход к созданию постоянного содержимого. Основными характеристиками JSP-технологии являются:
JSP-страницей является документ с текстовой основой, содержащий два типа текста: статические шаблонные данные, выражаемые при помощи любого формата на текстовой основе, такого как HTML, SVG, WML, и XML, а также JSP-элементы, которые создают динамическое содержимое.
Статическое содержимое создается в JSP-странице так же, как если бы это была обычная страница, содержащая только текстовый формат данных. Статическое содержимое может быть выражено в любом формате, предназначенном для форматирования текстов, к примеру, HTML, WML и XML. Форматом, определенным по-умолчанию, является HTML. При желании можно использовать и другой формат текста. Для этого включите в начало вашей JSP-страницы директиву page с атрибутом contentType, которому в качестве значения следует установить тип формата.
Динамическое содержимое создается путем обращения к объектам языка программирования Java из элементов сценариев.
Из JSP-страницы можно получить доступ к различным объектам, включая корпоративные компоненты и JavaBean-компоненты. JSP-технология автоматически организует доступ к определенным объектам так, что можно создавать объекты-приложения и обращаться к ним из JSP-страницы.
По возможности, режим работы приложения следует инкапсулировать в объекты так, чтобы создатели страниц могли сфокусироваться на аспектах представления. Объекты могут создаваться разработчиками, которые являются профессионалами в программировании Java и в получении доступа к базам данных и другим службам. Существует четыре способа для создания и использования объектов в JSP-странице.
Вы также можете создавать JavaBean-компонент в объявлении или скриптлете и вызывать методы JavaBean-компонента в скриптлете или выражении.
JSP-скриптлет используется для хранения какого-либо фрагмента кода, действительного для языка сценариев, используемого в данной странице. Синтаксис для скриптлета выглядит следующим образом:
<%
scripting language statements
%>
Когда языком сценариев является java, скриптлет трансформируется во фрагмент выражения языка Java и вставляется в метод service сервлета JSP-страницы. Переменная языка программирования, созданная в скриптлете, доступна из любой точки JSP-страницы.
JSP-выражение используется для вставки в поток данных, возвращаемый клиенту, значения выражения языка сценариев, конвертированного в строку. Когда языком написания сценариев является Java, выражение преобразовывается в оператор, конвертирующий значение выражения в объект String и вставляющий его в неявный объект out. Синтаксис такого выражения выглядит следующим образом:
<%= scripting language expression %>
Использование точки с запятой в JSP-выражениях запрещено, даже в тех случаях, когда у такого же выражения, используемого в скриптлете, она присутствует.
JavaBean-компоненты - это Java-классы многократного использования, которые можно объединять в приложения. Любой Java-класс, который удовлетворяет определенным правилам создания, можно считать JavaBean-компонентом.
Технология страниц JavaServer поддерживает использование JavaBean-компонентов с элементами языка JSP. Вы можете легко создавать и инициализировать компоненты, а также получать и устанавливать значения их свойств. Правила создания JavaBean-компонентов управляют свойствами класса и методами public, которые дают доступ к свойствам.
В качестве свойств JavaBean-компонентов могут быть:
Реализация свойства при помощи переменной экземпляра не является необходимым. К свойству просто должен осуществляться доступ с помощью методов public, удовлетворяющих определенным условиям:
Кроме методов свойств, JavaBean-компонент должен определять конструктор, у которого нет параметров.
Элемент jsp:useBean объявляет, что в странице будет использован компонент, который хранится, и к которому есть доступ из определенной области действия. Такой областью действия может быть приложение, сессия, запрос или страница. Если такого компонента не существует, выражение само создает компонент и хранит его как атрибут объекта области действия. Значение атрибута id определяет имя компонента в области действия и идентификатор, используемый для того, чтобы ссылаться на компонент из других JSP-элементов и скриптлетов.
При разработке данного программного продукта была избрана концепция визуального моделирование проекта, реализованная при помощи языка моделирования UML. В качестве среды проектирования была выбрана Ration Rose. Сначала была создана диаграмма вариантов использования, описывающая общую функциональность данного программного продукта.
Рис 2.1 Диаграмма вариантов использования
На данной диаграмме отображено взаимодействие программы с различными актерами. Существует три типа пользователей: администратор, преподаватель, студент. Администратору доступны такие функции, как создание, изменение и удаление пользователей разных уровней. Преподавателю не доступны функции администратора, но доступны функции администрирования тестов и просмотра статистики их прохождения студентами. Студенту доступны лишь функции прохождения тестов и получения личной статистики.
Далее были разработаны модели данных о пользователях, тестах и статистики которые были описаны в DTD файлах Users.dtd, Tests.dtd и Stats.dtd.
Users.dtd
<!ELEMENT User (User_ID, FirstName, SecondName, Group, Position, Rank, Login, Password, Type, Date)>
<!ELEMENT User_ID (#PCDATA)>
<!ELEMENT FirstName (#PCDATA)>
<!ELEMENT SecondName (#PCDATA)>
<!ELEMENT Group (#PCDATA)>
<!ELEMENT Position (#PCDATA)>
<!ELEMENT Rank (#PCDATA)>
<!ELEMENT Login (#PCDATA)>
<!ELEMENT Password (#PCDATA)>
<!ELEMENT Type (#PCDATA)>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT Users (User+)>
Корневым элементом данной структуры является Users, который представляет информацию о всех пользователях. Информация о конкретном пользователе находиться в элементе User, который в свою очередь содержит поля User_ID, FirstName, SecondName, Group, Position, Rank, Login, Password, Type, Date. Все элементы отображают различные характеристики пользователя, и являются обычными текстовыми полями.
Tests.dtd
<!ELEMENT Test (Test_ID, Subject, Teacher, Questions, Time_Limit)>
<!ELEMENT Test_ID (#PCDATA)>
<!ELEMENT Subject (#PCDATA)>
<!ELEMENT Teacher (#PCDATA)>
<!ELEMENT Question (Quest_ID, Text,Quont_ Ans,Answers, Right_Ans_ID)>
<!ELEMENT Time_Limit (#PCDATA)>
<!ELEMENT Quest_ID (#PCDATA)>
<!ELEMENT Text (#PCDATA)>
<!ELEMENT Quont_Ans (#PCDATA)>
<!ELEMENT Answer (Ans_ID, Ans_Text, Correctness)>
<!ELEMENT Right_Ans_ID (#PCDATA)>
<!ELEMENT Ans_ID (#PCDATA)>
<!ELEMENT Ans_Text (#PCDATA)>
<!ELEMENT Correctness (#PCDATA)>
<!ELEMENT Answers (Answer+)>
<!ELEMENT Questions (Question+)>
<!ELEMENT Tests (Test+)>
Поле Tests является корневым и содержит информацию о всех тестах. Информация о конкретном тесте содержится в элементе Test, он включает в себя атрибуты Test_ID, Subject, Teacher, Time_Limit, а также вложенный элемент Questions, который содержит информацию о вопросах. Информация о конкретном вопросе содержится в элементе Question, он включает в себя атрибуты Quest_ID, Text,Quont_ Ans, Right_Ans_ID, а также вложенный элемент Answers, содержащий информацию о ответах на данный вопрос. Информация о конкретном ответа содержится в элементе Answer, который характеризуется полями Ans_ID, Ans_Text, Correctness.
Stats.dtd
<!ELEMENT Stat (S_Stat_ID,S_User_ID,S_Test_ID,S_Questions)>
<!ELEMENT S_Stat_ID (#PCDATA)>
<!ELEMENT S_User_ID (#PCDATA)>
<!ELEMENT S_Test_ID (#PCDATA)>
<!ELEMENT S_Question (S_Quest_ID,S_Correctness)>
<!ELEMENT S_Quest_ID (#PCDATA)>
<!ELEMENT S_Correctness (#PCDATA)>
<!ELEMENT S_Questions (S_Question+)>
<!ELEMENT Stats (Stat+)>
Поле Stats является корневым и содержит информацию о всех пройденных тестах. Статистика прохождения конкретного теста содержится в элементе Stat, он включает в себя атрибуты S_Stat_ID,S_User_ID,S_Test_ID, а также вложенный элемент S_Questions, который содержит информацию о корректности ответов, которые давал студент при ответах на вопросы.
Диаграммы классов изображенные на рисунках 2.2, 2.3, 2.4 отображают объектную модель части приложения для работы с пользователями, тестами и статистикой соответственно.
Класс XMLLogin отвечает за работу с XML файлом, в котором хранятся данные о пользователях. Данный класс реализует основную функциональность администратора . Функция addUser() добавляет нового пользователя, в качестве параметров получает данные, отображающие все его характеристики (User_ID, FirstName, SecondName, Group, Position, Rank, Login, Password, Type, Date). Функция removeUser() удаляет пользователя, номер которого передается в качестве параметра. Функция modifyUser() изменяет данные о конкретном пользователе, в качестве параметров получает номер пользователя и значение характеристик.
Функция readData() читает данные из файла, имя которого храниться в поле fileName и записывает их в поле Users, которое является контейнером для хранения данных. Классы User_ID, FirstName, SecondName, Group, Position, Rank, Login, Password, Type, Date были сгенерированы автоматически при помощи среды разработки Jbuilder 8.0 на основе модели данных и используются для хранения и удобной работы с данными. Каждый класс хранит информацию о соответствующем элементе. Функция newUser() является private-функцией и используется для создания объекта типа User.
рис 2.1 Диаграмма классов XMLLogin и TypeBean
Класс XMLTests отвечает за работу с данными о тестах. Данный класс реализует основную функциональность преподавателя. Функция addTest() добавляет новый тест, в качестве параметров получает данные, отображающие все его характеристики (Test_ID, Subject, Teacher, Questions, Time_Limit). Функция removeTest() удаляет тест, номер которого передается в качестве параметра. Функция readData() читает данные из файла, имя которого храниться в поле fileName и записывает их в поле Tests, которое является контейнером для хранения данных. Классы Test_ID, Subject, Teacher, Questions, Time_Limit были сгенерированы автоматически при помощи среды разработки Jbuilder 8.0 на основе модели данных и используются для хранения и удобной работы с данными. Каждый класс хранит информацию о соответствующем элементе. Функция newTest() является private-функцией и используется для создания объекта типа Test.
рис 2.2 Диаграмма классов XMLTests и TestsBean
рис 2.3 Диаграмма классов XMLStats и StatsBean
рис 2.5 Архитектура программного обеспечения
Программное обеспечение имеет двухуровневую структуру. На верхнем уровне находиться программное обеспечение реализованное в виде сервлета или JSP-страницы. Нижний уровень представляет собой ПК клиента на котором установлен Web-браузер. Данные на сервере хранятся в XML-файлах. При обращении к серверу работа с данными на JSP-страницах осуществляется через классы JavaBeans (TypeBean, TestsBean, StatsBean), которые в свою очередь обращаются к классам XMLLogin, XMLTests и XMLStats. Таким образом достигается большая независимость уровня данных от уровня приложений. Т.к. классы JavaBeans, находящиеся на внешнем уровне не взаимодействуют непосредственно с файлами данных, то при изменении способа хранения данных будут затронуты только классы XMLLogin, XMLTests и XMLStats, которые отвечают за хранение и изменение данных. Таким образом программное обеспечение становиться более «гибким» и легко изменяемым. Пользователь взаимодействует только со внешним уровнем ПО, представленного JSP-страницами.
Перед непосредственным созданием JSP страниц необходимо уяснить общую структуру программы и взаимодействие между страницами.
рис 2.6. Диаграмма навигаций
Работа с программой начинается со страницы login.jsp.
рис 2.7. Начальная страница программы login.jsp
При правильном вводе логина и пароля пользователь попадает на страницу main.jsp, которая направляет в зависимости от его прав на страницы admin.jsp, teacher.jsp и testspassing.jsp. Страница администратора admin.jsp позволяет создавать, редактировать и удалять пользователей. Страница преподавателя teacher.jsp позволяет создавать, редактировать и удалять тесты, вопросы и ответы к ним, просматривать статистику проведения тестового контроля. Страница студента testspassign.jsp позволяет студенту выбрать тест для прохождения и просматривать информацию о пройденных им тестах.
Интерфейс проектируется исходя из диаграммы навигаций. На странице login.jsp необходимо реализовать форму с полями для ввода логина и пароля (рис 2.7). Т.к. с главной страницы возможен переход на все остальные, а со всех страниц возможен возврат на главную страницу, то целесообразно реализовать меню навигации по сайту на каждой странице (см. рис 2.8). На страница admin.jsp, teacher.jsp и testpassing.jsp необходимо реализовать таблицы просмотра информации и формы для добавления, редактирования и удаления различных данных .
рис 2.8. Страница admin.jsp (меню слево, таблица и форма - справа)
В начале были разработаны классы, которые служат для хранения, удобного доступа и редактирования данных. Среда разработки Borland JBuilder 8.0, на которой разрабатывался данный программный продукт, позволяет автоматически генерировать классы для хранения и доступа к информации. Таким образом были сгенерированы классы описанные в п.2 данной записки, каждый из которых отвечает за хранение соответствующего элемента файлов Users.xml, Tests.xml и Stats.xml. Для удобного добавления, удаления и редактирования данных были разработаны классы XMLLogin, XMLTests и XMLStats реализующие данные функции, описание данных класса приводиться в разделе 2.1.3.
Работа данных классов была протестирована при помощи стандартной консоли.
JSP страницы и классы JavaBeans отвечают за хранение и выведение данных. Данные классы так же отвечают за обработку сообщений пользователя, т.е. обеспечивают непосредственные взаимодействие пользователя с программным продуктом. При разработке данных классов необходимо обращать внимание на обработку исключительных ситуаций. Информация об ошибках на сервере не должна быть доступна пользователю. Поэтому необходимо учитывать возможность некорректности ввода данных, а так же случаи, когда страницы, обрабатывающие запросы какой-либо формы вызываться непосредственно. Таким образом при работе с переменными, которые передаются в запросе формы, необходимо делать проверку на их существование.
Интерфейс пользователя был разработан с учетом всех пунктов, описанных в пункте 2.1.6. В зависимости от прав пользователя интерфейс видоизменяется. Неизменным остается лишь навигационное меню в левой части страницы. При попытке обращения пользователя, на страницу с ограниченным для него доступом произойдет переадресация на начальную страницу с выводом информации о некорректном доступе.
На странице администратора расположена информация о всех пользователях приложения. Для изменения информации о конкретном пользователи необходимо нажать на ссылку с его идентификационным номером в таблице. Для удаления пользователя следует нажать на кнопку «-» в соответствующей пользователю строке таблицы. Для добавления реализована форма расположенная справа от таблицы.
Логика интерфейса пользователя для администратора используется и на страницах преподавателя и студента. Исключение составляет страница студента, на которой вместо формы добавления данных существует таблица личной статистики.
Прохождение тестов для студента реализовано в виде последовательной смены вопросов (рис 3.1). По окончанию тестирования пользователь получает информацию в виде таблицы о правильности ответов на каждый из поставленных вопросом и получает оценку.
рис 3.1. Страница прохождения тестирования
ВЫВОДЫ
В рамках данной курсовой работы было спроектировано и реализовано Web-ориентированное приложение, предназначенное для проведения тестового контроля знаний студентов. При разработке использовались технологии сервлетов и JSP. Для хранения данных был избран язык разметки XML.
Основной особенностью Web-службы является способность участников взаимодействовать друг с другом даже при использовании ими различных информационных систем. XML обеспечивает легкую переносимость данных, что является ключевой технологией, предназначенной для обеспечения такой способности. Также Web-службы зависят от способности предприятий использовать различные вычислительные платформы для взаимодействия друг с другом. Это требование делает платформу Java™, программы в которой являются переносимыми, естественным выбором для разработки Web-служб.
При разработке была разработана двухуровневая структура программного обеспечения. На верхнем уровне находиться программное обеспечение реализованное в виде сервлета или JSP-страницы. Нижний уровень представляет собой ПК клиента на котором установлен Web-браузер. Что качается серверной части приложения, то ее структуру также можно разбить на несколько слоев. Уровень данных представлен XML-файлами. С уровнем данных работают непосредственно только классы XMLLogin, XMLTests и XMLStats. Классы, которые отвечают за конечное представление информации на JSP страницах не работают с данными непосредственно, а только через методы классов XMLLogin, XMLTests и XMLStats. Таким образом изменение на уровне данных не повлияет на уровень представления информации, что делает программный продукт более гибким и легко изменяемым.
СПИСОК использованных источников
5. Х.М. Дейтел, П.Дж. Дейтел, Т.Р. Нието, Т.М. Лин, П. Садху. Как программировать на XML. Пер. с англ. М.: ЗАО «Издательство БИНОМ», 2001 г. - 944 с.: ил.