Разработка автоматизированной обучающей системы с функцией контроля знаний

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

  • Введение
  • 1. Анализ технического задания
  • 2. Обзор и анализ технологий, языков программирования и СУБД для создания системы
    • 2.1 Клиентские языки программирования
    • 2.2 Серверные языки программирования
    • 2.3 Системы управления базами данных
    • 2.4 Средства построения векторых изображений
  • 3. Разработка и анализ алгоритмического и программного обеспечения
  • 4. Проектирование БД
    • 4.1 Инфологическое проектирование базы данных
    • 4.2 Логическое проектирование базы данных
  • 5. Тестирования, верификация и экспериментальная эксплуатация систем. Настройка и отладка компонентов системы
    • 5.1 Компонент сбора данных
    • 5.2 Компонент новостная лента
    • 5.3 Компонент прогнозирования
  • 6. Эргономические особенности организации труда при использовании системы сбора статистических данных и прогнозирование возможностей системы общего образования
    • 6.1 Общие сведения
    • 6.2 Характеристика условий труда разработчика системы сбора статистических данных и прогнозирования возможностей системы общего образования
    • 6.3 Эргономика физической среды
    • 6.4 Эргономические требования к рабочему месту
    • 6.5 Организационная эргономика
    • 6.6 Расчет освещенности
    • 6.7 Расчет уровня шума
    • Вывод
  • 7. Бизнес-план разработки автоматизированной обучающей системы с функцией контроля знаний
    • 7.1 Резюме
    • 7.2 Характеристика разработки
    • 7.3 Анализ конкуренции
    • 7.4 Производственный план
    • 7.5 Оценка и предупреждение риска
    • 7.6 Финансовый план
    • 7.7 Оценка эффективности проекта
    • Заключение. Основные выводы и перспективы развития системы
  • Список литературы
  • Приложение

Введение

Выпускники системы профессионального образования являются основным источником удовлетворения потребности в рабочей силе на рынке труда, и их численная прогнозная оценка служит основой для расчета баланса трудовых ресурсов на перспективный период. Кроме того, выпускники системы профессионального образования вносят существенный вклад в приемы других ступеней образования, что необходимо учитывать при их оценке. Так, например, выпускники учреждений начального профессионального образования (НПО) текущего и прошлых лет составляют в приеме учреждений среднего профессионального образования (СПО) 8%, а выпускники СПО в приеме в учреждения высшего профессионального образования (ВПО) — 28%. Таким образом, для корректной оценки приемов необходимо уметь рассчитывать выпуск из учреждений системы профессионального образования [1].

Выпускники 9-х и 11-х классов школ являются фактором, осуществляющим внешнее воздействие на систему профессионального образования. Численность выпускников общеобразовательных школ напрямую влияет на объем приемов в образовательные учреждения профессионального образования. В свою очередь, численность выпускников школ напрямую зависит от демографического фактора рождаемости.

Прогнозирование численности обучающихся студентов позволяет в перспективе оценить объем государственных затрат на финансирование образования [2].

1. Анализ технического задания

Целью дипломного проекта является разработка системы сбора статистических данных и прогнозирование возможностей системы общего образования с использованием математических методов прогнозирования (Винтерса) и различных способов представления результирующей информации.

Объектом дипломного проектирования является web-сайт, который позволяет проводить расчет и прогнозирование возможностей системы общего образования, а также представлять результаты этих действий в виде таблиц (Excel, Html, Pdf) и диаграмм (гистограмм, линейных графиков и др.). Web-сайт включает в себя несколько компонентов:

компонент сбора данных;

компонент прогнозирования;

компонент новостной ленты;

Назначение системы. Разработанная система позволяет проводить обзор и анализ демографического состояния региона в динамике. Она предназначена для расчета количества выпускников 9 и 11 классов общего образования, а также для расчета их распределения между уровнями профессионального образования на основе статистических данных.

Базовые требования и ограничения к проекту:

К аппаратному обеспечению:

персональный компьютер с установленной операционной системой семейства Windows, Linux или Mac OS;

К программному обеспечению:

Программное обеспечение, требуемое для разработки системы:

операционная система семейства Windows, Linux или MacOS;

браузер с нативной поддержкой svg изображений;

веб-сервер Apache;

языкпрограммированияphp, JavaScript.

язык разметки HTML;

интегрированная среда разработки NetBeans 7. 0;

case-средство Erwin;

СУБД MySQL.

Программное обеспечение, требуемое для использования системы:

операционная система семейства Windows, Linux или MacOS;

браузер с поддержкой векторных SVG изображений.

Требования к эргономике и эффективности. Система должна:

работать максимально эффективно, обмены информацией между сервером и клиентом должны быть минимальны;

поддерживать принцип открытости компонентов среды разработки с возможностью последующей модификации.

Быть достаточно «легкой» по объему графических элементов и обеспечивать достаточную скорость загрузки информации;

Обеспечивать легкую идентификацию раздела, в котором находится пользователь;

Корректно отображаться при возможных разрешениях монитора;

Обладать системой контекстных подсказок в местах, где у пользователя потенциально могут возникнуть затруднения;

обеспечиватьприемлемыйрезультатприраспечаткеинформациинапринтере.

Результатом дипломного проектирования является система, разработанная на основе клиент-серверной технологии, позволяющая производить прогнозирование возможностей системы общего образования, выводить результаты прогнозирования в табличном и графическом виде. Приложение имеет модульную структуру, что позволяет в дальнейшем модифицировать и улучшать систему добавлением новых модулей. Интерфейс системы дружественен и понятен любому пользователю.

2. Обзор и анализ технологий, языков программирования и СУБД для создания системы

2.1 Клиентские языки программирования

JavaScript -- объектно-ориентированный скриптовый язык программирования. JavaScript используется в клиентской части веб-приложений клиент-серверных программ, в котором клиентом выступает браузер, а сервером -- веб-сервер, имеющих распределённую между сервером и клиентом логику. Обмен информацией в веб-приложениях происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому веб-приложения являются кроссплатформенными сервисами. [3]

Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation.

Основные архитектурные черты:

динамическая типизация;

слабая типизация;

автоматическое управление памятью;

прототипное программирование;

функции как объекты первого класса.

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.

Растущую популярность JavaScript можно объяснить тем, что в настоящее время прослеживается тенденция перехода от использования прикладных приложений к использованию web-приложений, где это возможно и имеет смысл. Также, лидирующую позицию JavaScript занял в связи с развитием AJAX, поскольку эта технология требует дополнительной прослойки, которая реализуется языком JavaScript.

Возможности языка

JavaScript обладает рядом свойств объектно-ориентированного языка, но реализованное в языке прототипирование обуславливает отличия в работе с объектами по сравнению с традиционными объектно-ориентированными языками. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам-- функции как объекты первого класса, объекты как списки, карринг, анонимные функции, замыкания-- что придаёт языку дополнительную гибкость [4].

Несмотря на схожий с Си синтаксис, JavaScript по сравнению с языком Си имеет коренные отличия:

— объекты, с возможностью интроспекции;

— функции как объекты первого класса;

— автоматическое приведение типов;

— автоматическая сборка мусора;

— анонимные функции.

В языке отсутствуют такие полезные вещи, как:

— модульная система: JavaScript не предоставляет возможности управлять зависимостями и изоляцией областей видимости;

— стандартная библиотека: в частности, отсутствует интерфейс программирования приложений по работе с файловой системой, управлению потоками ввода/вывода, базовых типов для бинарных данных;

— стандартные интерфейсы к веб-серверам и базам данных;

— система управления пакетами, которая бы отслеживала зависимости и автоматически устанавливала их.

Семантика и синтаксис

Синтаксис языка JavaScript во многом напоминает синтаксис Си и Java, семантически же язык гораздо ближе к Self, Smalltalk. В JavaScript:

— все идентификаторы регистрозависимы,

— в названиях переменных можно использовать буквы, подчёркивание, символ доллара, арабские цифры,

— названия переменных не могут начинаться с цифры,

— для оформления однострочных комментариев используются //, многострочные и внутристрочные комментарии начинаются с /* и заканчиваются */. [4]

Структура языка

Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей:

- ядро;

— объектная модель браузера;

— объектная модель документа.

Если рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная модель документа могут не поддерживаться.

Объектная модель браузера

Объектная модель браузера -- браузеро-специфичная часть языка, являющаяся прослойкой между ядром и объектной моделью документа. Основное предназначение объектной модели браузера -- управление окнами браузера и обеспечение их взаимодействия. Каждое из окон браузера представляется объектом window, центральным объектом BOM (browser object model). Объектная модель браузера на данный момент не стандартизирована, однако спецификация находится в разработке WHATWG (Web Hypertext Application Technology Working Group) и W3C (World Wide Web Consortium).

Помимо управления окнами, в рамках объектной модели браузера, браузерами обычно обеспечивается поддержка следующих сущностей:

— управление фреймами,

— поддержка задержки в исполнении кода и зацикливания с задержкой,

— системные диалоги,

— управление адресом открытой страницы,

— управление информацией о браузере,

— управление информацией о параметрах монитора,

— ограниченное управление историей просмотра страниц,

— поддержка работы с HTTP cookie.

Объектная модель документа

Объектная модель документа-- интерфейс программирования приложений для HTML и XML-документов. Согласно DOM (document object model) документу можно поставить в соответствие дерево объектов, обладающих рядом свойств, которые позволяют производить с ним различные манипуляции:

— получение узлов,

— изменение узлов,

— изменение связей между узлами,

— удаление узлов.

Расположение внутри тега

Спецификация HTML описывает набор атрибутов, используемых для задания обработчиков событий. Пример использования:

< ahref="delete. php"onclick="returnconfirm('Вы</p><p>уверены?');«>Удалить</a></p><p><strong>Отделениеот разметки</strong></p><p><strong>В приведённомвышепримерепринажатиина ссылкуфункциявызываетмодальноеокнос надписью«Вы уверены?»и блокируетпереходпо ссылке.Этоткодбудетработать,еслив браузереестьи включенаподдержкаJavaScript,иначепереходпо ссылкепроизойдётбезпредупреждения.</strong></p><p><strong>ИспользованиекодаJavaScriptвнутриHTMLтеговявляетсяотрицательнойчертой.Зачастуюгораздоудобнееи правильнееснабдитьссылкуидентификатором,и реализовыватьтот жефункционалотдельноот разметки:</strong></p><p>window.onload=function(){</p><p>var linkWithAlert = document. getElementById («alertLink»);</p><p>linkWithAlert.onclick=function(){</p><p>returnconfirm ('Выуверены?');</p><p>};</p><p>};</p><p><strong>Безопасность</strong></p><p><strong>ТаккакJavaScriptпозволяетвыполнятьпотенциальноопасныйкодна любомкомпьютересети,существуютдвапринципиальныхограниченияна возможностиданногоязыкапрограммирования:</strong></p><p><strong>-</strong> JavaScript-программы выполняются в среде браузера, в которой они могут выполнять только ограниченный круг действий, а не задачи общего назначения (например, создание файлов, работа с сокетами),</p><p>— дляJavaScript-кодаприменяетсяполитикаобщегопроисхождения,в соответствиис которойскрипт,встроенныйв страницу,не можетполучитьдоступк рядусвойствобъектовдругойстраницы(в частности,к большинствусвойствобъектаdocument)приотличиив протоколе,хостеи номерепортаэтихстраниц.</p><p>Java -- объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска -- 23 мая1995 года.</p><p>Основныеособенностиязыка</p><p><strong>Программы на Java</strong>транслируютсяв байт-код,выполняемыйвиртуальноймашинойJava(JVM)--программой,обрабатывающейбайтовыйкоди передающейинструкцииоборудованиюкакинтерпретатор.</p><p>Достоинство подобного способа выполнения программ -- в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.</p><p>Часток недостаткамконцепциивиртуальноймашиныотносятто,чтоисполнениебайт-кодавиртуальноймашинойможетснижатьпроизводительностьпрограмми алгоритмов,реализованныхна языкеJava.ДанноеутверждениебылосправедливодляпервыхверсийвиртуальноймашиныJava,однаков последнеевремяонопрактическипотерялоактуальность.Этомуспособствовалрядусовершенствований:</p><p>применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,</p><p>широкоеиспользованиеплатформенно-ориентированногокода(native-код)в стандартныхбиблиотеках,</p><p>аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).</p><p>По даннымсайтаshootout.alioth.debian.org,длясемиразныхзадачвремявыполненияна Javaсоставляетв среднемв полтора-дваразабольше,чемдляC/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10−30 раз больше, чем программой на C/C++.</p><p>Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине.</p><p>Основныевозможности</p><p><strong>автоматическое управление памятью; </strong></p><p><strong>расширенные возможности обработки исключительных ситуаций; </strong></p><p><strong>богатый набор средств фильтрации ввода/вывода;</strong></p><p><strong>наборстандартныхколлекций,такихкакмассив,списоки стек;</strong></p><p><strong>наличиепростыхсредствсозданиясетевыхприложений;</strong></p><p><strong>наличиеклассов,позволяющихвыполнятьHTTP-запросыи обрабатыватьответы;</strong></p><p><strong>встроенныев языксредствасозданиямногопоточныхприложений;</strong></p><p><strong>унифицированныйдоступк базамданных:</strong></p><p><strong>на уровнеотдельныхSQL-запросов--на основеJDBC,SQLJ;</strong></p><p><strong>на уровнеконцепцииобъектов,обладающихспособностьюк хранениюв базеданных--на основеJava Data Objectsи Java Persistence API;</strong></p><p><strong>поддержкашаблонов(начинаяс версии1.5);</strong></p><p><strong>параллельноевыполнениепрограмм.</strong></p><p><strong>Преобразованияприматематическихоперациях</strong></p><p><strong>В языкеJavaдействуютследующиеправила:</strong></p><p><strong>Еслиодиноперандимееттипdouble,другойтожепреобразуетсяк типуdouble.</strong></p><p><strong>Иначе,еслиодиноперандимееттипfloat,другойтожепреобразуетсяк типуfloat.</strong></p><p><strong>Иначе,еслиодиноперандимееттипlong,другойтожепреобразуетсяк типуlong.</strong></p><p><strong>Иначеобаоперандапреобразуютсяк типуint.</strong></p><p><strong>Данныйспособнеявногопреобразованиявстроенныхтиповполностьюсовпадаетс преобразованиемтиповвC++.[30]</strong></p><p><strong>Сборкамусора</strong></p><p><strong>В языкеJavaневозможноявноеудалениеобъектаиз памяти--вместоэтогореализованасборкамусора.Традиционнымприёмом,дающимсборщикумусора«намёк»на освобождениепамяти,являетсяприсваиваниепеременнойпустогозначенияnull.Это,однако,не значит,чтообъект,заменённыйзначениемnull,будетнепременнои немедленноудалён.Данныйприёмвсеголишьустраняетссылкуна объект,то естьотвязываетуказательот объектав памяти.Приэтомследуетучитывать,чтообъектне будетудаленсборщикоммусора,покана негоуказываетхотя быоднассылкаиз используемыхпеременныхилиобъектов.Существуюттакжеметодыдляинициациипринудительнойсборкимусора,но не гарантируется,чтоонибудутвызваныисполняющейсредой,и их нерекомендуетсяиспользоватьдляобычнойработы.</strong></p><p>Результатомразработкиприложенияна языкеJavaявляетсяJava-апплет.</p><p>Java-апплет -- прикладная программа на Java в форме байт-кода. Java-апплеты выполняются в веб-браузере с использованием виртуальной Java машины (JVM) — автономном инструменте для тестирования апплетов. Java-апплеты были внедрены в первой версии языка Java в 1995.</p><p>Апплетыиспользуютсядляпредоставленияинтерактивныхвозможностейвеб-приложений,которыене могутбытьпредоставленыHTML.Таккакбайт-кодJavaплатформо-независим,то Java-апплетымогутвыполнятьсяс помощьюплагиновбраузерамимногихплатформ,включаяMicrosoft Windows,UNIX,Apple Mac OSи GNU/Linux.</p><p>Техническаяинформация</p><p><strong>Java-апплеты в большинстве браузеров выполняются в «песочнице», предотвращая их доступ к локальным данным. Код апплета загружается с</strong>веб-сервера,и браузерлибовставляетапплетв веб-страницу,либооткрываетновоеокнос собственнымпользовательскиминтерфейсомапплета.Апплетможетбытьотображенна веб-страницепутемиспользованияустаревшегоHTMLэлементаapplet,илирекомендуемогоэлементаobject.Этимопределяетсяместорасположениеи источникапплета.</p><p>Преимущества апплетов</p><p>1.<strong>Кроссплатформенность.Апплетможетработатьна «всех»установленныхк этомувремениверсияхJava,а не толькос последнейверсией;однако,еслиапплеттребуетпоследнююверсиюJRE,то клиентбудетвынужденждатьболеедлительнойзагрузки;</strong></p><p><strong>2.</strong> апплет поддерживается большинством браузеров;</p><p>3.он кэшируетсяв большинствебраузеров,а потомубудетбыстрозагружатьсяпривозвращениина веб-страницу;но апплетможетсохранятьсяв кэшеи создаватьпроблемыпослевыходановыхверсий;</p><p>4. он может иметь полный доступ к машине, на которой выполняется, если пользователь согласен на это;</p><p>5.апплетможетулучшитьиспользование:послепервогозапускаапплета,когдаJVMужевыполняетсяи быстрозапускается,преимущественноу постоянныхпользователейJava,однакоJVMпридетсяперезапускатькаждыйраз,когдазапускаетсяновыйбраузер.</p><p>6. он может запуститься с сопоставимой (но обычно медленнее) скоростью на других компилируемых языках, таких как C++, но во много раз быстрее, чем Java Script</p><p>7.он можетперенестиработус серверак клиенту,делаяИнтернет-решениес,большимчисломпользователей/ клиентов.</p><p>Недостаткиапплетов</p><p>1. <strong>он требует установки Java-расширения (plug-in), которое не во всех</strong>браузерахдоступнопо умолчанию;</p><p>2. он не может запуститься до тех пор, пока не запустится виртуальная Java-машина, и это может занять значительное время при первом запуске;</p><p>3.созданиеи дизайнхорошегопользовательскогоинтерфейсас использованиемапплетовсчитаетсяболеесложнойзадачей,чемс помощьютехнологии,основаннойна HTML;</p><p>4. некоторые организации допускают только программное обеспечение, установленное администраторами. В результате многие пользователи не могут видеть апплеты по умолчанию.</p><p>5.апплетымогутпотребоватьиспользованияопределенногоJRE.</p><p>2.2 Серверные языки программирования</p><p>PHP —интерпретируемыйязыкпрограммированияобщегоназначения,интенсивноприменяемыйдляразработкивеб-приложений.В настоящеевремяподдерживаетсяподавляющимбольшинствомхостинг-провайдерови являетсяоднимиз лидеровсредиязыковпрограммирования,применяющихсядлясозданиядинамическихвеб-сайтов[5].</p><p>Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них:</p><p>— автоматическоеизвлечениеPOSTи GET-параметров,а такжепеременныхокружениявеб-серверав предопределённыемассивы;</p><p>— взаимодействие с большим количеством различных систем управления базами данных (MySQL, SQLite, PostgreSQL, Oracle <nobr>и т. д.</nobr>);</p><p>— автоматизированная отправка HTTP-заголовков;</p><p>— работас HTTP-авторизацией;</p><p>— работа с cookies и сессиями;</p><p>— работас локальнымии удалённымифайлами,сокетами.</p><p>— обработка файлов, загружаемых на сервер;</p><p>Особенностиинтерпретатора[7]</p><p><strong>PHP-скрипты, обычно, обрабатываются</strong>интерпретаторомв порядке,обеспечивающемкроссплатформенностьразработанногоприложения:</p><p>1. лексический анализисходного кода и генерация лексем,</p><p>2.синтаксическийанализполученныхлексем,</p><p>3. генерация байт-кода,</p><p>4.выполнениебайт-кодаинтерпретатором(безсозданияисполняемогофайла).</p><p>Для увеличения быстродействия приложений, возможно, использование специального программного обеспечения, так называемых акселераторов. Принцип их работы заключается в кэшировании однажды сгенерированного байт-кода в памяти и/илина диске,такимобразом,из процессаработыприложенияисключаютсяэтапы1--3,чтов общемслучаеведётк значительномуускорениюработы.Наибольшаяэффективностьакселераторадостигаетсяна скриптахс большимколичествомисходногокода,содержащихнебольшоеколичествоопераций,ресурсоёмкихпривыполнении.</p><p>Важной особенностью является то, что разработчику нет необходимости заботиться о распределении и освобождении памяти. Ядро PHP реализует средства для автоматического управления памятью; вся выделенная память возвращается системе после завершения работы скрипта. Но все же, следить за количеством используемой памяти нужно, так как обычно на сервере администратором устанавливается ограничение на количество выделяемой памяти для работы скрипта.</p><p>Расширения</p><p><strong>Интерпретатор состоит из</strong>ядраи подключаемыхмодулей,представляющихсобойдинамическиебиблиотеки.Расширенияпозволяютдополнитьбазовыевозможностиязыка,предоставляяинтерфейсдляработыс базамиданных,сокетами,динамическойграфикой,криптографическимибиблиотеками,документамиформатаPDF.Существуетогромноеколичестворасширений,какстандартных,таки созданныхстороннимикомпаниямии энтузиастами,однаков стандартнуюпоставкувходитлишьнесколькодесятковхорошозарекомендовавшихсебя[7].</p><p>Параметры настройки</p><p><strong>ИнтерпретаторPHPимеетспециальный</strong> конфигурационный файл -- php. ini, содержащий множество настроек, изменение которых влияет на поведение интерпретатора. Имеется возможность отключить использование ряда функций, изменить ограничения на используемую скриптом оперативную память, время выполнения, объём загружаемых файлов, настроить журналирование ошибок, работу с сессиями и почтовыми сервисами, подключить дополнительные расширения, а также многое другое.</p><p>Синтаксис</p><p><strong>Синтаксис PHP подобен синтаксису языка</strong>Си.Некоторыеэлементы,такиекакассоциативныемассивыи циклforeach,заимствованыиз Perl.</p><p>Для работы программы переменные не требуется описывать. Любая программа может начинаться непосредственно с оператора PHP.</p><p>PHPисполняеткод,находящийсявнутриограничителей,такихкак<?php?>.Всё,чтонаходитсявнеограничителей,выводитсябезизменений.</p><p>Имена переменных начинаются с символа $, тип переменной объявлять не нужно. Имена переменных, функций и классов чувствительны к регистру. Константы также чувствительны к регистру. Инструкции разделяются с помощью точки с запятой (;), за исключением некоторых случаев, после объявления конструкции if/elseи циклов.</p><p>PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /**/), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).</p><p>Типыданных[7]</p><p><strong>PHP является языком программирования с</strong>динамическойтипизацией,не требующимуказаниятипаприобъявлениипеременных,равнокаки самогообъявленияпеременных.Преобразованиямеждускалярнымитипамизачастуюосуществляютсянеявнобездополнительныхусилий.</p><p>К скалярным типам данных относятся:</p><p>— целыйтип(integer),</p><p>— вещественный тип данных (float, double),</p><p>— логическийтип(boolean),</p><p>— строковый тип (string),</p><p>— и специальныйтипNULL.</p><p>К нескалярным типам относятся:</p><p>— «ресурс»(resource),</p><p>— массив (array),</p><p>— объект(object),</p><p>— анонимная функция (closure) или псевдотип callback.</p><p>Диапазонцелыхчисел(integer)в PHPзависитот платформы(обычно,этодиапазон32-битныхзнаковыхцелыхчисел,то есть,от?2 147 483 648до 2 147 483 647).Числаможнозадаватьв десятичной,восьмеричнойи шестнадцатеричнойсистемахсчисления.Диапазонвещественныхчисел(double),также,зависитот платформы(для32-битнойархитектурыдиапазонпозволяетоперироватьчисламиот±1.7Ч10<sup>?308</sup> до ±1. 7Ч10<sup>+308</sup>).</p><p>PHP предоставляет разработчикам логический тип (boolean), способный принимать только два значения TRUE («истина») и FALSE («ложь»). При преобразовании в логический тип число 0, пустую строку, ноль в строке «0», NULL и пустой массив считаются равными FALSE. Все остальные значения автоматически преобразуются в TRUE.</p><p>СпециальныйтипNULLпредназначендляпеременныхбезопределённогозначения.ЕдинственнымзначениемданноготипаявляетсяконстантаNULL.ТипNULLпринимаютнеинициализированныепеременные,переменныеинициализированныеконстантойNULL,а такжепеременные,удалённыеприпомощиконструкцииunset().</p><p>Ссылки на внешние ресурсы имеют тип «ресурс» (resource). Переменные данного типа, как правило, представляют собой дескриптор, позволяющий управлять внешними объектами, такими как файлы, динамические изображения, результирующие таблицы базы данных <nobr>и т. п.</nobr></p><p>Массивы (array) поддерживают числовые и строковые ключи и являются гетерогенными. Массивы могут содержать значения любых типов, включая другие массивы. Порядок элементов и их ключей сохраняется. Не совсем корректно называть php-массивы массивами, на самом деле это, скорее всего, упорядоченный хеш.</p><p>Объектно-ориентированноепрограммирование</p><p><strong>PHP поддерживает широкие возможности</strong>объектно-ориентированногопрограммирования,полнаяподдержкакоторыхбылавведенав пятойверсииязыка.</p><p>Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основных механизма ООП -- инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.</p><p>Классыв PHPимеютрядспециальныхметодов,начинающихсяс двухсимволовподчёркивания.Особостоитотметитьконструктор(__construct(),в версияхдо 5.0конструкторомслужилметод,одноимённыйс классом)и деструктор(__destruct()),а такжеметодычтения(__get())и записи(__set()),свёртывания(__sleep())и развёртывания(__wake()),клонирования(__clone())и др.Этиметодыявляютсядостаточногибкиминструментом:переопределяяих,можнодобитьсясущественногоизмененияповеденияобъекта[7].</p><p>Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием оператора «стрелка». Для доступа к членам класса из его методов используется переменная $this.</p><p>Примеркодана языкеPHP:</p><p>$U = 0. 3;//константа сглаживания уровня</p><p>$V=0.3;"Hello, world! n";

Дозаписьвстроку.

$x=5;

$x. =0;

print$x; #50

2.3 Системы управления базами данных

MySQL -- свободнаясистема управления базами данных (СУБД). Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации [5].

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Платформы [5]

MySQL портирована на большое количество платформ: FreeBSD, Linux, Mac OS X, NetBSD, OpenBSD, OS/2, Solaris, Windows Server 2003, WinCE, Windows Vista и Windows 7. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.

Поддерживаемые языки программирования [5]

MySQL имеет API для языков Delphi, C, C++, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и библиотеки для языков платформы. NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.

Отличительные особенности MySQL [5]

— Многопоточность. Поддержка нескольких одновременных запросов.

- Оптимизация связей с присоединением многих данных за один проход.

— Записи фиксированной и переменной длины.

— ODBC драйвер в комплекте с исходником

— Гибкая система привилегий и паролей.

— До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

— Поддержка ключевых полей и специальных полей в операторе CREATE.

— Поддержка чисел длинной от 1 до 4 байт (int, float, double, fixed), строк переменной длины и меток времени.

— Интерфейс с языками C и perl.

— Основанная на потоках, быстрая система памяти.

— Утилита проверки и ремонта таблицы (isamchk).

— Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.

— Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.

— Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.

— Легкость управления таблицей, включая добавление и удаление ключей и полей.

Начиная с версии MySQL 5. 5, СУБД содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:

— Использование по умолчанию движка InnoDB.

— Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на дополнениях к InnoDB от компании Google.

— Улучшение функций по партицированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в * разных файловых системах (partitioning).

— Новый механизм оптимизации вложенных запросов и JOIN операций.

— Переработана система внутренних блокировок.

— Интегрированы дополнения Google с оптимизацией работы InnoDB на CPU с большим количеством ядер.

Максимальные размеры хранимых данных [5]

Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы. Например в NTFS этот размер теоретически может быть до 32 экзабайт. В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство. Размер последнего может достигать 64 терабайт.

Firebird (FirebirdSQL) -- компактная, кроссплатформенная, свободнаясистема управления базами данных, работающая на Linux, Microsoft Windows и разнообразных Unix платформах [5].

Это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном коде, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0.

Firebird является сервером баз данных. Один сервер Firebird может обрабатывать несколько сотен независимых баз данных, каждую с множеством пользовательских соединений. Он является полностью свободным от лицензионных отчислений даже для коммерческого использования.

Основные характеристики [5]

Версионная архитектура: Основная особенность Firebird -- версионная архитектура, позволяющая серверу обрабатывать различные версии одной и той же записи в любое время таким образом, что каждая транзакция видит свою версию данных, не мешая соседним («читающие транзакции не блокируют пишущие, а пишущие не блокируют читающих»).

Хранимые процедуры: Используя язык PSQL (процедурный SQL) Firebird, возможно создавать сложные хранимые процедуры для обработки данных полностью на стороне сервера. Для генерации отчётов особенно удобны хранимые процедуры с возможностью выборки, возвращающие данные в виде набора записей. Такие процедуры можно использовать в запросах точно так же как и обычные таблицы.

События: Хранимые процедуры и триггеры могут генерировать события, на которые может подписаться клиент. После успешного завершения транзакции (COMMIT) он будет извещён о произошедших событиях и их количестве.

Генераторы: Идея генераторов (последовательностей) делает возможной простую реализацию автоинкрементных полей, и не только их. Генераторы являются 64? битными хранимыми в базе данных счётчиками, работающими независимо от транзакций. Они могут быть использованы для различных целей, таких как генерация первичных ключей, управление длительными запросами в соседних транзакциях.

Базы данных только для чтения: позволяют распространять базы данных, к примеру, на CD-ROM. Особенно упрощает распространение данных их использование в комбинации с встраиваемой версией сервера Firebird (Firebird Embedded).

Полный контроль за транзакциями: Одно клиентское приложение может выполнять множество одновременных транзакций. В разных транзакциях могут быть использованы разные уровни изоляции. Протокол двухфазного подтверждения транзакций обеспечивает гарантированную устойчивость при работе с несколькими базами данных. Так же доступны оптимистическое блокирование данных и точки сохранения транзакций.

Резервное копирование на лету: Для резервного копирования нет надобности останавливать сервер. Процесс резервного копирования сохраняет состояние базы данных на момент своего старта, не мешая при этом работе с базой. Кроме того, существует возможность производить инкрементальное резервное копирование БД.

Триггеры: Для каждой таблицы возможно назначение нескольких триггеров, срабатывающих до или после вставки, обновления или удаления записей. Для триггеров используется язык PSQL, позволяя вносить начальные значения, проверять целостность данных, вызывать исключения, и т. д. В Firebird 1.5 появились «универсальные» триггеры, позволяющие в одном триггере обрабатывать вставки, обновления и удаления записей таблицы.

Внешние функции: библиотеки с UDF (User Defined Function) могут быть написаны на любом языке и легко подключены к серверу в виде DLL/SO, позволяя расширять возможности сервера «изнутри».

Декларативное описание ссылочной целостности: Обеспечивает непротиворечивость и целостность многоуровневых отношений «master-detail» между таблицами.

Наборы символов: Firebird поддерживает множество международных наборов символов (включая Unicode) с множеством вариантов сортировки

Преимущества [5]

1. Многоверсионная архитектура. Обеспечивает параллельную обработку оперативных и аналитических запросов

2. Компактность. Объем дистрибутива на диске около 5Mb

3. Высокая эффективность.

4. Мощная языковая поддержку для хранимых процедур и триггеров.

Недостатки [5]

1. Отсутствие кеша результатов запросов

2. Отсутствие полнотекстовых индексов.

Соответствие стандарту SQL [5]

Firebird полностью поддерживает SQL 92 Entry Level 1 и реализует большую часть стандарта SQL-99 c некоторыми очень полезными дополнениями. Это включает выражения DML/DDL, синтаксис объединений FULL/LEFT/RIGHT [OUTER] JOIN, выражения UNION, DISTINCT, подзапросы (IN, EXISTS), встроенные функции (AVG, SUM, MIN, MAX, COALESCE, CASE, .), ограничения целостности (PRIMARY KEY, UNIQUE, FOREIGN KEY), и все общие типы данных SQL.

Firebird также реализует ограничения проверки (check constraints) на уровне доменов и полей, отображения, исключения, роли и управление правами доступа.

Требования к аппаратному обеспечению [5]

Firebird работает на 32- и 64-разрядных версиях Windows, Linux, также на MacOS X, HP-UX, FreeBSD и многих других. Переход от одной ОС к другой весьма прост -- достаточно сделать резервную копию базы в переносимом формате в одной системе и восстановить на другой. Может использоваться даже не очень мощное оборудование, особенно под Linux.

На производительность СУБД влияют: количество памяти, скорость работы дисковой подсистемы. Рекомендации для выбора аппаратного обеспечения зависят от требования к системе, прогнозируемого размера базы данных, количества пользователей. Допустимо начинать с минимальной конфигурации, расширяя её по мере надобности.

Средства доступа к серверу [5]

Firebird поддерживает множество способов доступа, включая: собственные наборы компонент для C/C++, Delphi, классы для ADO, ODBC, JDBC (Jaybird), драйверы для Python, PHP, драйвер OLE DB, dbExpress, провайдер данных. NET и прямой доступ с использованием клиентской библиотеки сервера (fbclient. dll или GDS32. dll)

Физические ограничения [5]

Firebird поддерживает большие базы данных. Базы данных могут быть расположены в нескольких файлах, предельный размер которых зависит от операционной системы. Теоретический предел в настоящее время составляет 64TB для одного файла базы данных, таким образом, главные ограничения накладываются файловой системой и местом на жёстком диске.

Практически, база данных объемом 1 ТБ работает стабильно. Максимальная длина одной записи (суммарно все поля за исключением полей с типом BLOB) равна 64 КБ.

PostgreSQL -свободнаяобъектно-реляционнаясистема управления базами данных. Существует в реализациях для следующих платформ: Linux, Solaris/OpenSolaris, Win32, Win x86−64, Mac OS X, FreeBSD, QNX 4. 25, QNX 6

Поддержка стандартов, возможности, особенности [5]

PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL: 2003 (ISO/IEC 9075).

Основные возможности [5]

Функции. Являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки собственно SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием одного из следующих языков:

— Встроенный процедурный язык PL/pgSQL, во многом аналогичный языку PL/SQL, используемому в СУБД Oracle;

— Скриптовые языки -- PL/Lua, PL/LOLCODE, PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh, PL/Tcl и PL/Scheme;

— Классические языки -- C, C++, Java (через модуль PL/Java);

— Статистический язык R (через модуль PL/R).

PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса.

Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.

Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие.

Триггеры. Определяются как функции, инициируемые DML--операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования (см. выше). Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.

Правила и представления. Механизм правил (англ. rules) представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице. Хорошим примером является реализация механизма представлений (англ. views): при создании представления создается правило, которое определяет, что вместо выполнения операции выборки к представлению система должна выполнять операцию выборки к базовой таблице/таблицам с учетом условий выборки, лежащих в основе определения представления. Для создания представлений, поддерживающих операции обновления, правила для операций вставки, изменения и удаления строк должны быть определены пользователем.

Индексы. В PostgreSQL имеется поддержка индексов следующих типов: B-дерево, хэш, R-дерево, GiST, GIN. При необходимости можно создавать новые типы индексов, хотя это далеко не тривиальный процесс. Индексы в PostgreSQL обладают следующими свойствами:

возможен просмотр индекса не только в прямом, но и в обратном порядке -- создание отдельного индекса для работы конструкции ORDER BY … DESC не нужно;

возможно создание индекса над несколькими столбцами таблицы, в том числе над столбцами различных типов данных;

индексы могут быть функциональными, то есть строиться не на базе набора значений некоего столбца/столбцов, а на базе набора значений функции от набора значений;

индексы могут быть частичными, то есть строиться только по части таблицы (по некоторой её проекции); в некоторых случаях это помогает создавать намного более компактные индексы или достигать улучшения производительности за счёт использования разных типов индексов для разных (например, с точки зрения частоты обновления) частей таблицы;

планировщик запросов может использовать несколько индексов одновременно для выполнения сложных запросов.

Многоверсионность (MVCC). PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает нужда в блокировках чтения.

Типы данных. PostgreSQL поддерживает большой набор встроенных типов данных:

Численные типы

Целые

С фиксированной точкой

С плавающей точкой

Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с фиксированной точкой с двумя знаками после запятой)

Символьные типы произвольной длины

Двоичные типы (включая BLOB)

Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая последние изменения в часовых поясах)

Булев тип

Перечисление

Геометрические примитивы

Сетевые типы

IP и IPv6--адреса

CIDR--формат

МАС--адрес

UUID--идентификатор

XML--данные

Массивы

OID--типы

Псевдотипы

Пользовательские объекты. PostgreSQL может быть расширен пользователем для собственных нужд практически в любом аспекте. Есть возможность добавлять собственные:

Преобразования типов

Типы данных

Домены (пользовательские типы с изначально наложенными ограничениями)

Функции (включая агрегатные)

Индексы

Операторы (включая переопределение уже существующих)

Процедурные языки

Наследование. Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице. Данный функционал в текущее время не является полностью завершённым. Однако он достаточен для практического использования.

Надёжность [5]

Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода). Для сравнения: MySQL -- 97 проблем, одна ошибка на 4 000 строк кода; FreeBSD (целиком) -- 306 проблем, одна ошибка на 4 000 строк кода; Linux (только ядро) -- 950 проблем, одна ошибка на 10 000 строк кода.

Для разработки системы поддержки абитуриентов ВУЗов в выборе перспективной профессии в качестве серверного языка программирования был выбран PHP. Основными критериями выбора стали:

Поддержка данного языка программирования подавляющим большиством хост-провайдеров.

Наличие большого количества интегрированных сред разработки, поддерживающих этот языке программирования.

Наличие встроенных механизмов работы с сессиями.

Поддержка большого количества СУБД.

В качестве клиентского языка программирования используется язык JavaScript. Преимуществом использования данного языка программирования является то, что он поддерживается всеми без исключения браузерами и не требует для выполнения дополнительного программного обеспечения в отличие от языка Java.

Из рассмотренных выше СУБД, лучше всего для разрабатываемой системы подходит СУБД MySQL. Это высокопроизводительная и легковесная СУБД. Она широко распостранена и включается в состав большинства веб-серверов.

2.4 Средства построения векторых изображений

SVG (от англ. Scalable Vector Graphics -- масштабируемая векторная графика) --язык разметки масштабируемой векторной графики, созданный Консорциумом Всемирной паутины (W3C)и входящий в подмножество расширяемого языка разметки XML, предназначен для описания двумерной векторной и смешанной векторно / растровой графики в формате XML. Поддерживает как неподвижную, так анимированную и интерактивную графику -- или, в иных терминах, декларативную и скриптовую. Не поддерживает описание трёхмерных объектов. Это открытый стандарт, является рекомендацией консорциума W3C, -- организации, разработавшей такие стандарты, как HTML и XHTML. Разрабатывается с 1999 года, в 2001 году вышла 1.1 версия, которая остается актуальной до сегодняшнего дня, в активной разработке версия 1.2.

Растровое изображение, сгенерированное из примера SVG, демонстрирует прозрачность, градиентную заливку, разнообразные контуры и текст. Для просмотра оригинала потребуется браузер со встроенной поддержкой SVG, или оборудованный специальным плагином.

Возможности языка

Позволяет задать любую фигуру компактной строкой, описывающей путь от начальной точки до конечной через любые промежуточные координаты. Строка с данными задаётся атрибутом dтегаpathи содержит команды, закодированные набором букв и чисел. Буква определяет тип команды, числа -- её параметры (чаще всего -- координаты). Команды позволяют описывать фигуры, состоящие из отрезков прямых (L, H, V), кривых Безье (C, S, Q, T) и дуг (A). Пример, описывающий звезду из 5 линий, содержит строку данных с командами M (англ. moveto -- переместить) и L (англ. lineto -- нарисовать линию), содержащими в качестве аргументов координаты точек по X и Y.

ПоказатьСвернуть
Заполнить форму текущей работой