Разработка информационной системы "Обработка текста на естественном языке"
Проектирование программного обеспечения, позволяющего создавать и вести множество электронных словарей. Обоснование выбора программных средств решения задачи. Разработка формы входных и выходных данных. Описание модулей программы и процесса отладки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.07.2015 |
Размер файла | 1007,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
РЕФЕРАТ
Дипломный проект состоит из введения, пяти разделов основной части пояснительной записки, библиографического списка.
В первом разделе пояснительной записки определяется характеристика объекта, процесса, предметной области как объекта информатизации. Анализируется информационное обеспечение объекта информатизации. Рассматривается актуальность создания системы, подсистемы, задачи.
Во втором разделе пояснительной записки рассмотрены вопросы об обосновании выбора программных средств решения задачи. Разработаны формы входных и выходных данных, модели задачи, алгоритм решения задачи. Описаны модули программы, процесс отладки программы. Разработаны меры защиты информации от несанкционированного доступа. Показывается, в какой среде был разработан программный продукт. Приводятся результаты тестирования программного продукта.
В третьем разделе пояснительной записки рассматривается расчетно- экономическая часть, прибыльность создания подобных информационных систем. Рассчитаны показатели экономической эффективности его использования в условиях бизнеса.
В четвертом разделе рассматриваются техника безопасности, рассматривается способы заземления компьютеров с установленным ПП.
В пятом разделе пояснительной записки сделаны выводы, заключения и рекомендации по применению полученных результатов.
Библиографический список содержит перечень из источников информации.
1. ОБЩАЯ (ТЕОРЕТИЧЕСКАЯ) ЧАСТЬ
1.1 Введение
На сегодняшний день вопросы, касающиеся построения подобных систем являются очень актуальными. Это прежде всего связано с возросшими информационными потребностями современного общества. Накопление больших массивов информации создаёт необходимость в конструировании систем, ответственных за её обработку и хранение. Сегодня рынок информационных услуг предлагает множество готовых решений для реализации подобных информационных систем от различных производителей, начиная с мелких фирм и заканчивая крупными корпорациями. Например, такие системы управления базами данных, как MS Access, MS SQL от компании Microsoft, MySQL от компании Sun Microsystems, PostgreSQL от PostgreSQL Global Development Group и множество других. Однако несмотря на большое разнообразие программных продуктов, всё же некоторые проблемы остались нерешёнными. К примеру, все существующие на данный момент информационные системы такого типа имеют крайне сложный интерфейс, поэтому работать в них могут только высококвалифицированные специалисты, когда обыкновенным пользователям необходимо обращаться за их помощью. Понятно, что крупные корпорации всегда могут нанять таких специалистов, но как быть тем, у кого такой возможности нет? Так как потребности в обработке и хранении информации испытывают все, поэтому возможность их удовлетворения должна быть предоставлена каждому.
Словарь же в качестве конкретной реализации такой информационной системы подходит как нельзя лучше. Во-первых, структуру любого словаря очень легко реализовать в виде базы данных. Во-вторых, все готовые программные продукты, предназначенные для ведения своего электронного словаря, либо являются системами закрытого типа (т.е. позволяют только добавлять новые словарные статьи в уже имеющиеся словари), либо не предназначены для неквалифицированного пользователя. Наконец, открытый электронный словарь, сконструированный на основе актуальных технологий, удовлетворяет все информационные потребности современного общества.
Цель данного дипломного проекта -- сконструировать программное обеспечение, позволяющее создавать и вести множество электронных словарей. Причём такой программный продукт не должен требовать от своего пользователя каких-либо особых знаний в области работы с базами данных. Это достигается за счёт комбинирования двух программных интерфейсов -- графического и естественно-языкового. Причём последний освобождает пользователя от изучения специального языка запросов SQL, используемого по-умолчанию практически в любой современной базе данных, и позволяет формулировать запросы на русском языке.
Задачи данного дипломного проекта:
– Изучить язык программирования Java.
– Изучить способы построения баз данных в СУБД SQLite.
– Разработать модель базы данных «Электронный словарь».
– Сконструировать программное обеспечение, позволяющее работать с базой данных «Электронный словарь».
– Разработать естественно-языковой интерфейс к этой базе данных.
Данный проект состоит из общей части, расчётно-технической части, расчётно- экономической части, части, посвящённой охране труда и безопасности жизнедеятельности, выводов и списка используемой литературы. В общей части кратко излагается характеристика словаря как объекта информатизации, даётся анализ информационного обеспечения, а также описывается актуальность создания системы и подсистемы. В расчётно-технической части описан процесс создания программного продукта, основанного на компактной встраиваемой реляционной базе данных SQLite
В расчётно-экономической части разрабатывается график организации проектирования, определяется трудоёмкость разработки программного обеспечения, а также рассчитывается сметная стоимость и экономическая эффективность проекта.
Практическая значимость проекта заключается в применении данного программного продукта для обработки и хранения любых типов информации.
1.2 Характеристика объекта, процесса, предметной области как объекта информатизации
В данном дипломном проекте в качестве объекта информатизации рассматривается словарь как носитель информации.
Словарь -- справочная книга, содержащая собрание слов (или морфем, словосочетаний, идиом и т. д.), расположенных по определенному принципу, и дающая сведения об их значениях, употреблении, происхождении, переводе на др. язык и т. п. (лингвистические словари) или информацию о понятиях и предметах, ими обозначаемых, о деятелях в каких-либо областях науки, культуры и др.
Словари играют большую роль в современной культуре, в них отражаются знания, накопленные обществом на протяжении веков. Они служат целям описания и нормализации языка, содействуют повышению правильности и выразительности речи его носителей.
Словари принято делить на два типа: энциклопедические и лингвистические.
Энциклопедические (от греческого enkyklios paideia -- обучение по всему кругу знаний) словари содержат экстралингвистическую информацию об описываемых языковых единицах; эти словари содержат сведения о научных понятиях, терминах, исторических событиях, персоналиях, географии и т.п. В энциклопедическом словаре нет грамматических сведений о слове, а даётся информация о предмете, обозначаемом словом.
Объект описания лингвистических (языковых) словарей -- языковые единицы (слова, словоформы, морфемы). В таком словаре слово (словоформа, морфема) может быть охарактеризовано с разных сторон, в зависимости от целей, объёма и задач словаря: со стороны смыслового содержания, словообразования, орфографии , орфоэпии, правильности употребления. В зависимости от того, сколько признаков слова описаны в словаре, различают словари одноаспектные и многоаспектные.
Любой словарь состоит из словарных статей. Словарная статья -- основная структурная единица словаря; текст, разъясняющий заголовочную единицу в словаре и описывающий ее основные характеристики. Структура словарной статьи определяется задачами словаря. Но словарная статья любого словаря начинается с заглавного слова [по-иному: заголовочное слово, лемма, черное слово (от полужирного шрифта, которым обычно выделено заглавное слово)]. Совокупность заглавных статей образуют словник, или левую часть словаря.
Правая часть словаря -- та, в которой объясняется заголовочная единица. Правая часть толкового словаря, как правило, включает зоны: грамматическая характеристика слова, толкование, тип значения (прямое, переносное); иллюстрации (цитаты, речения); словообразовательное гнездо; так называемая «заромбовая» часть (фразеологизмы) и др. Зоны правой части разрабатываются для каждого словаря. Совокупность всех словарных статей образует корпус словаря. Кроме корпуса, в любом словаре есть предисловие, раздел «Как пользоваться словарем», список условных сокращений и др.
Итак, каждый словарь, независимо от своего типа и содержания, имеет следующую структуру:
– предисловие: Содержит краткую характеристику, описание и назначение словаря.
– раздел «Как пользоваться словарём»: Описывает структуру словарной статьи и её правую часть. Объясняет назначение специальных символов, используемых в этой части.
– словарная статья: Основная единица словаря. Разъясняет левую часть и описывает её основные характеристики.
– список условных сокращений: Расшифровывает сокращённые выражения, используемые в словарных статьях.
1.3 Анализ информационного обеспечения объекта информатизации
Наибольшее количество электронных лексикографических продуктов в настоящее время создается в области переводческой деятельности. Существовать переводные словари могут как в самостоятельном формате, в виде скачиваемой и устанавливаемой отдельно программы, так и в формате интерактивном, т.е. интегрированными в какой-либо электронный ресурс: иначе говоря, пользоваться таким словарем можно в режиме on-line, посетив нужный сайт в сети Интернет. Как правило, способы представления материала в таких словарях однотипны и достаточно просты: пользователю нужно в максимально короткие сроки получить точный перевод отдельной лексемы или выражения, это, в свою очередь, диктует специфику навигации: в таком словаре всегда есть поле для ввода переводимого слова и поле, в котором появляются перевод либо варианты перевода. Практически все двуязычные словари, существующие в электронном формате, подразумевают подобный способ работы с материалом. Специально для создания словарей переводческого типа компанией ABBYY -- одним из наиболее известных в России разработчиков, занимающихся созданием электронных словарей, -- был придуман язык DSL (Dictionary Specification Language). Широко известных аналогов данного языка в рамках российской электронной лексикографии в настоящий момент не применяется: связано это, прежде всего, с тем, что большинство компьютерных приложений для использования в разных областях -- и электронная лексикография не является исключением -- до сих создается за рубежом.
Однако, программные продукты, предоставляемые компанией ABBYY, во- первых, не позволяют создавать свои собственные словари и, во-вторых, являются коммерческими и проприентарными. Это значит, что их исходный код закрыт и за их использование нужно заплатить. К примеру, программа ABBYY Lingvo, предназначенная для перевода слов с одного языка на другой, стоит пять тысяч девятьсот девяносто рублей за одну многоязычную копию.
На сегодняшний день существует очень мало бесплатного программного обеспечения, позволяющего создавать и вести свой электронный словарь. Самым лучшим из них является сетевой ресурс «Викисловарь».
Викисловарь -- свободно пополняемый многофункциональный многоязычный словарь и тезаурус, основанный на вики-движке. В нём содержатся грамматические описания, толкования и переводы слов. Кроме того, в статьях может отражаться информация об этимологии, фонетических свойствах и семантических связях слов. Таким образом, Викисловарь -- попытка объединить в одном продукте грамматический, толковый, этимологический и многоязычный словари, а также тезаурус.
Викисловарь работает по принципу т. н. «вики»: любой желающий, соблюдающий правила вики-сообщества, может свободно отредактировать любую статью, и изменения будут сразу же учтены и отображены на сайте. Кроме отдельных слов в статьях Викисловаря также могут описываться другие языковые единицы: устойчивые словосочетания (фразеологизмы, пословицы, поговорки, крылатые выражения, народные приметы, загадки, скороговорки, палиндромы, аббревиатуры и т. д.), отдельные морфемы (корни, суффиксы, приставки, трансфиксы и т. д.). Кроме описания самих языковых единиц здесь собирается сопутствующая информация об их омонимах, омографах, анаграммах, метаграммах и рифмах (в том числе, межъязыковых). Викисловарь предполагает жёсткую стандартизованную структуру описания языковых единиц. Сообщество Викисловаря выработало ряд общих правил оформления, задающих структуру статьи.
Однако, у такого подхода есть два недостатка. Во-первых, к словарным статьям Викисловаря можно получить доступ только при наличии подключения к сети Интернет, так как возможности скачать словарь данный сетевой ресурс не представляет. Во-вторых, у пользователя Викисловаря нет возможности создавать свой словарь, содержащий только те статьи, которые добавит этот пользователь. Таким образом, на данный момент рынок информационных услуг не предоставляет свободного программного обеспечения, эффективно удовлетворяющего информационные потребности общества в сфере компьютерной лингвистики и лексикографии.
1.4 Актуальность создания информационной системы «Электронный словарь», подсистемы, задачи
Особую актуальность и востребованность в настоящее время приобрело такое направление в сфере информационных технологий, как компьютерная лексикография: сейчас разработка и создание электронных словарей, корпусов и баз данных являются наиболее продуктивными ее областями. Ценность данного направления заключается не только в разработке наглядных и удобных методов представления и классификации материала, но и в том, что электронные словари и компьютерные корпусы позволяют сохранить для дальнейшей обработки уже собранный (иногда на протяжении очень долгого времени) материал, хранившийся ранее в менее удобной и неустойчивой к внешним воздействиям форме (бумажные картотеки, рукописные источники, аудио, а также видео-носители, уязвимые перед внешними пагубными факторами, -- аудиокассеты, видеокассеты, дискеты и т.д.). В то же время словарь, существующий в электронном формате, это не просто электронная (отсканированная, оцифрованная) версия уже созданного бумажного словаря, это полностью самостоятельный продукт, и форма его бытования логично продолжает и дополняет содержательную составляющую.
Актуальным представляется замечание о том, что компьютерная лексикография является особым направлением в практической лексикографии со своими собственными подходами не только к отображению, но и к содержанию словаря.
Безусловно, электронный словарь не только особый лексикографический объект, в котором могут быть реализованы и введены в обращение многие продуктивные идеи, невостребованные по разным причинам в бумажных словарях, но также и эффективный исследовательский инструмент, использование которого может способствовать более продуктивному накапливанию и обработке информации.
Можно противопоставить электронные словари традиционным, опираясь на несколько основных проблем. Во-первых большой объем бумажного словаря (являющийся следствием богатой лексической базы и полноты словарных статей) выступает серьезным препятствием для удобного пользования: многотомный (или же просто очень объемный) словарь становится буквально непригодным для быстрого поиска информации -- не говоря уже о том, что он абсолютно не мобилен в процессе использования. Таким образом, высокое качество словаря на содержательном уровне является непосредственной причиной низкого качества удобства его использования.
Вторая проблема касается актуальности представленной в словаре информации: необходимо отметить, однако, что данное замечание справедливо в первую очередь для двуязычных (переводных) словарей, а также словарей терминологических. Чрезвычайно долгий цикл создания и модификации фундаментальных бумажных словарей приводит к тому, что образ мира, который они фиксируют в системе своих значений, примеров и переводов, уже заметно отличается от действительности.
Еще один недостаток бумажных (традиционных) словарей -- отсутствие удобной навигации: в данном вопросе наиболее объективной представляется позиция пользователя, работающего со словарем; при этом чем больше объем словаря, тем сильнее данный недостаток проявляется. Основным навигационным инструментом, используемым в словарях, является способ расположения материала: в алфавитном порядке или по тематическому принципу. Возможен и смешанный вариант данных способов подачи материала, но этим возможности бумажного словаря исчерпываются.
Возможности же компьютерной лексикографии позволяют успешно преодолеть перечисленные трудности и противоречия. Так, первая проблема в рамках электронной лексикографии разрешается благодаря возможности поместить большой объем данных на легкий и мобильный носитель информации, а также разместить созданный словарь (корпус) в сети Интернет. Таким образом, к словарю можно будет обращаться практически в любое время и любом месте. Неблагоприятные последствия, связанные с долгим циклом создания словаря, можно нейтрализовать, если программа, в которой создается лексикографический продукт, допускает возможность внесения новой информации и корректировки уже имеющейся. Эта же опция позволяет пополнять базу словаря: таким образом, лексикографический объект перестает быть статичным, застывшим во времени и пространстве, и получает возможность обновляться, если таковая потребность возникает.
В отличие от бумажной, электронная лексикография обладает весьма обширными навигационными возможностями. Помимо традиционных способов организации материала -- в алфавитном порядке и по тематическому принципу
-- лексикограф получает возможность выстроить максимально удобные для пользователя словаря связи между объектами: лексикографируемыми единицами, статьями, комментариями, списками источников и литературы, списком составителей и т.д.
Однако давно назрела необходимость создания электронных словарей не только переводного и толкового, но и других типов: перечисленные ранее проблемы актуальны для всех лексикографических областей; не являются исключением словари лингвокультурологического и этнолингвистического типов. Закономерным выглядит предположение о том, что организация материала в словарях этого типа предполагает принципиально иной подход, отличающийся от подхода к организации материала толковых и двуязычных словарей; следовательно, и модель базы данных для них будет строиться иных на принципах.
Помимо всего прочего, с помощью электронного словаря решается множество задач, связанных с обработкой текста, написанного на естественном языке. В их число входят:
- машинный перевод на основе правил;
– распознавание и синтез речи, где электронный словарь выступает в роли источника данных для автоматического построения словаря произношений;
– построение онтологий и баз знаний;
– отображение онтологий;
– упрощение текста;
– частеричная разметка;
– анализ тональности текста;
Наконец, электронные словари можно использовать в образовательном процессе, например, при изучении иностранных языков.
Таким образом, актуальности создания информационной системы
«Электронный словарь» определяется возрастающими информационными потребностями современного общества в подобном программном обеспечении.
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Постановка задачи
Итак, сформулируем и обоснуем основные требования к создаваемой информационной системе.
Во-первых, программа должна быть совместима со следующими версиями операционной системы Microsoft Windows: MS Windows XP, MS Windows Vista, MS Windows 7, MS Windows 8, MS Windows 10.
Microsoft Windows сегодня -- это самая популярная операционная система на рынке информационных услуг. Проверенная годами надёжность, простота и удобный дизайн позволяют по праву считать её одной из лучших операционных систем для серверов и персональных компьютеров, поэтому в качестве основной операционной системы для нашей программы естественно выбрать именно её. Это не только даст возможность многим людям пользоваться нашей программой, но и существенно упростит её создание, отладку и тестирование.
Во-вторых, программа должна уметь эффективно создавать, удалять, обрабатывать и хранить электронные словари любого типа и размера.
Под обработкой словаря понимается добавление, удаление и редактирование его словарных статей. Это основания задача нашей программы, поэтому данный функционал должен быть реализован как можно лучше.
В-третьих, программа должна быть простой и удобной в использовании. Необходимо добиться того, чтобы пользоваться этой программой мог любой, обладающий только базовыми навыками работы за персональным компьютером.
Это задача вполне понятна. В соответствии с написанным выше, одной из главный проблем любого программного обеспечения подобного типа является именно сложность в работе с ним, поэтому решение этой проблемы является основным требованием, предъявляемым к разрабатываемой программе.
В-четвёртых, программа должна уметь выполнять команды, написанные на естественном языке. Понятно, что никакое современное программное обеспечение не в силах выполнять абсолютно все такие команды, поэтому было решено ограничиться некоторым подмножеством выбранного естественного языка. Это значительно упростит разработку программы, но, в то же время, потребует от пользователя краткого ознакомления с основами её работы.
В-пятых, программа должна иметь многопользовательский интерфейс. Это значит, что она будет предназначена для нескольких пользователей, каждый из которых будет иметь собственный набор словарей и настроек.
Наконец, программа должна предоставлять комплексную защиту пользовательских данных от всех видов внешних и внутренних информационных угроз.
Это требование необходимо для полноценного функционирования любой многопользовательской системы. Это не только защитит информационную систему от потери данных, но и даст возможность пользователям работать более удобно, более эффективно и более безопасно.
2.2 Обоснование выбора программных средств решения задачи
Для разработки заявленной информационной системы были выбраны следующие программные решения:
В качестве основного языка программирования используется Java. Это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) -- программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером вызывают немедленное прерывание.
Таким образом, выбрав Java, решается задача портирования готовой программы на различные операционные системы, в том числе и на Microsoft Windows. Однако у такого подхода имеется и свой недостаток: пользователю придётся дополнительно скачать и установить виртуальную машину Java -- Java Runtime Environment (либо любую другую).
В качестве основной среды разработки была выбрана Eclipse. Это свободная интегрированная среда разработки модульных кроссплатформенных приложений. Eclipse служит в первую очередь платформой для разработки расширений, чем она и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT) и средства для языков Ada, COBOL, FORTRAN, PHP, и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse диспетчерами для работы с базами данных, серверами приложений и др.
Eclipse Java Development Tools -- наиболее известный модуль, нацеленный на групповую разработку: среда интегрирована с системами управления версиями -- CVS, GIT в основной поставке, для других систем существуют плагины. Также предлагает поддержку связи между IDE и системой управления задачами (ошибками). В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений. Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ (см. ниже). Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса.
В качестве основной системы управления базами данных была выбрана SQLite -- компактная встраиваемая реляционная база данных. Слово
«встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим, взаимодействующим с программой процессом, а предоставляет библиотеку, с которой программа компонуется, следовательно движок становится составной частью программы. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется. Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Благодаря такой архитектуре возможно использовать SQLite как на встраиваемых системах, так и на выделенных машинах с гигабайтными массивами данных.
В качестве текстового редактора для написания кода программы был выбран Vim -- свободный текстовый редактор, один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и дополнительным надстройкам. Пользовательский интерфейс Vim'а может работать в чистом текстовом (консольном) режиме. Существует и модификация для использования в графическом оконном интерфейсе -- GVim.
Также было принято решение использовать при разработке программы систему контроля версий (Version Control System), а именно: Git -- популярную распределённую систему управления версиями файлов.
Система управления версиями -- программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое. Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы.
Ситуация, в которой электронный документ за время своего существования претерпевает ряд изменений, достаточно типична. При этом часто бывает важно иметь не только последнюю версию, но и несколько предыдущих. В простейшем случае можно просто хранить несколько вариантов документа, нумеруя их соответствующим образом. Такой способ неэффективен (приходится хранить несколько практически идентичных копий), требует повышенного внимания и дисциплины и часто ведёт к ошибкам, поэтому были разработаны средства для автоматизации этой работы.
2.3 Разработка формы входных и выходных данных
Данное программное обеспечение реализует четыре графические формы ввода и вывода данных:
1) форма авторизации пользователя;
2) форма регистрации пользователя;
3) форма работы с базой данных;
4) табличная форма;
Рассмотрим каждую из них в отдельности.
Форма «Авторизация» предназначена для ввода регистрационных данных --
Рисунок 1 - Форма авторизации
логина и пароля -- указанных при регистрации. Данная форма состоит из следующих компонентов:
– Текстовое поле «Имя пользователя» предназначено для ввода логина.
Может содержать только латиницу.
– Текстовое поле «Пароль» предназначено для ввода пароля. Может содержать только латиницу и арабские символы.
– Кнопка Войти предназначена для считывания регистрационных данных и выполнения входа в систему.
– Кнопка Регистрация предназначена для регистрации нового пользователя.
Более детальное описание полей этой формы представлено на странице 44.
Форма «Регистрация» предназначена для регистрации нового пользователя
Рисунок 2 - Форма регистрации
с введёнными им регистрационными данными. Эта форма состоит из следующих полей:
– Текстовое поле «Фамилия»: может содержать только кириллицу.
– Текстовое поле «Имя»: может содержать только кириллицу.
– Текстовое поле «Отчество»: может содержать только кириллицу.
– Текстовое поле «Логин»: может содержать только латиницу.
– Текстовое поле «Пароль»: может содержать любую последовательность символов.
Если хотя бы одно поле содержит запрещённые символы -- например, пароль содержит кириллицу -- то программа укажет на ошибку и даст совет по её исправлению. Более детальное описание полей этой формы представлено на странице 45.
Форма работы с базой является основной частью программы. С её помощью
Рисунок 3 - Форма работы с базой данных
пользователь может добавлять, просматривать и изменять содержимое имеющихся словарей, а также создавать и удалять новые. Детальное описание процесса работы с этой формой представлено на странице 46.
Табличная форма предназначена для работы со словарными статьями. С помощью этой формы пользователь может добавлять, просматривать и изменять содержимое имеющихся словарей. Детальное описание процесса работы с этой формой представлено на странице 46.
2.4 Разработка модели задачи
В этом параграфе рассматривается реляционная модель баз данных.
Модель данных -- это абстрактное, самодостаточное, логическое определение объектов, операторов и прочих элементов, в совокупности составляющих абстрактную машину доступа к данным, с которой взаимодействует пользователь. Эти объекты позволяют моделировать структуру данных, а операторы -- поведение данных.
В литературе иногда встречается использование этого термина в смысле «схема базы данных». Такое использование является неверным, на что указывают многие авторитетные специалисты, в том числе К. Дж. Дейт, М. Р. Когаловский, С. Д. Кузнецов. Модель данных есть теория или инструмент моделирования, в то время как модель базы данных (схема базы данных) есть результат моделирования. По выражению К. Дейта, соотношение между этими понятиями аналогично соотношению между языком программирования и конкретной программой на этом языке.
Теперь можно дать следующую классификацию баз данных по используемой в них модели данных:
– Иерархическая
– Объектная и объектно-ориентированная
– Реляционная
– Сетевая
– Функциональная
В реализуемой информационный системе используется реляционная модель базы данных, поэтому стоит рассмотреть её более подробно.
Как было уже сказано ранее, трактовать понятия «данные» и «база данных» можно по-разному. На самом деле, разные трактовки этих понятий соответствуют различным моделям данных, которые обсуждались в предыдущем разделе. Например, в реляционной модели, данные представляют собой истинные логические высказывания. Логическое высказывание -- это утверждение, которое может быть либо истинным, либо ложным. Таким образом, в такой интерпретации, база данных -- множество истинных высказываний. Реляционная модель данных характеризуется описанными ниже особенностями:
1) данные представлены посредством строк в таблицах, и эти строки могут быть непосредственно интерпретированы как истинные высказывания.
2) Для обработки строк данных предоставляются операторы, которые напрямую поддерживают процесс логического вывода дополнительных истинных высказываний из существующих высказываний.
Сегодня системы с реляционной моделью стали преобладающими на рынке баз данных. Одна из важных причин такого положения дел состоит в том, что реляционная модель обладает сильным теоретическим аппаратом. Например, в него входит одна из областей математики, называемая «реляционной алгеброй».
Теория реляционных моделей данных на сегодняшний день -- одна из самых разработанных областей компьютерных наук (computer science). Причина, по которой реляционная система получила своё название, состоит в том, что английский термин «relation» (отношение), по сути, представляет собой общепринятое математическое обозначение для таблиц.
В реляционной модели данных выполняются следующие три аспекта:
– Структурный аспект. Данные в базе воспринимаются пользователем как таблицы и никак иначе.
– Аспект целостности. Эти таблицы отвечают определённым условиям целостности.
– Аспект обработки. В распоряжении пользователя имеются операторы манипулирования таблицами, которые генерируют новые таблицы на основании уже имеющихся и среди которых есть, по крайней мере, операторы сокращения, проекции и объединения.
Ниже представлены определения этих операций:
– Операция сокращения извлекает указанные строки из таблицы. Эту операцию ещё часто называют выборкой.
– Операция проекции предназначена для извлечения определённых столбцов из таблицы.
– Операция соединения предназначена для получения комбинации двух таблиц на основе общих значений в общих столбцах.
Кроме того, все операции в реляционной модели имеют одно важное свойство -- замкнутость. Это значит, что, так как операции проводятся с таблицами и результат этих операций тоже является таблицей, можно к результату любой операции снова применить какую-либо операцию. Можно заметить, что три аспекта реляционной модели во многом совпадают с аспектами понятия «модели данных». На самом деле, эти три аспекта являются лишь частным случаем аспектов, общих для всех баз данных. Рассмотрим теперь некоторые из них более подробно.
Сначала следует отметить, что эти аспекты являются главным отличием реляционной модели от всех остальных. Говоря нестрого, каждый из них задаёт некоторые правила. Например, аспект структуры задаёт то, как данные представляются в данной модели, аспект обработки -- что с этими данными можно делать, а аспект целостности -- как эти данные могут изменяться.
Для начала, рассмотрим более подробно структурный аспект. Как уже было сказано ранее, в реляционной модели данные представляются в виде прямоугольных таблиц. Причём, каждому элементу таблицы соответствует
Рисунок 4 - Элементы реляционной модели данных
некоторый профессиональный термин. Это соответствие представлено на рис.4. Пользуясь новой терминологией, можно сказать, что данные в реляционной БД хранятся в виде значений кортежей, которые находятся в отношении друг с другом. Причём, все значения кортежа имеют определённый тип, задаваемый значением атрибута.
Типы данных могут быть как встроенные в систему, например целочисленный или строковой тип, так и определяемые пользователем. Обычно последние представляют собой отношения. Чтобы осуществлять быстрый поиск требуемых кортежей применяются специальные поля, называемые ключевыми, значения таких полей не могут повторяться. В каждой таблице есть ключевое поле. Следует ещё раз подчеркнуть, что таблица и отношение это два различных объекта. Отношение это абстрактный объект, а таблица является конкретным изображением такого абстрактного объекта. Чтобы можно было рассматривать таблицу как корректную реализацию отношения, необходимо принять соглашение о том, что каждый столбец характеризуется соответствующим типом, каждое значение атрибута представляет собой значение определённого типа, а упорядочение сток и столбцов не имеет значения и дубликаты строк не допускаются.
Одно из главных преимуществ реляционной модели является то, что её главный объект -- отношение -- может быть представлен в виде таблицы. Именно благодаря этому простому представлению реляционные системы становятся удобными для использования и изучения, к тому же намного упрощается само обсуждение особенностей функционирования реляционных систем.
Теперь рассмотрим аспект обработки. Для описания и анализа операций, применимых к отношениям, используется реляционная алгебра. Реляционная алгебра -- это коллекция операций, которые принимают отношения в качестве операндов и возвращают отношение в качестве результата. Эта алгебра включала в себя восемь операций, которые подразделялись на описанные ниже две группы с четырьмя операциями каждая.
1) Основные теоретико-множественные операции -- объединение, пересечение, разность и декартово произведение. Все они были модифицированы для работы с отношениями.
2) Специальные реляционные операции, такие как сокращение, проекция, соединение и деление.
Прежде чем начать обсуждение каждой операции, нужно провести различие между реляционной алгеброй как одной из областей математики и как коллекции операций. Здесь и далее этот термин будет употребляться только во втором смысле, если не сказано обратного. Теперь можно дать определение каждой операции.
– Объединение -- A UNION B. Результатом этой операции является множество, состоящее из кортежей, присутствующих либо в одном, либо в обоих из заданных отношений.
– Пересечение -- A INTERSECT B. Результат -- множество всех таких кортежей, что они присутствуют в обоих отношениях.
– Разность -- A MINUS B. Результат -- множество всех таких кортежей, что они присутствуют только в отношении А.
– Декартово произведение -- A TIMES B. Определяется как отношение, заголовок которого представляет собой (теоретико- множественное) объединение заголовков отношений A и B, а тело состоит из всех возможных пар элементов обоих кортежей. При этом А и В не должны иметь общих атрибутов.
– Сокращение -- A WHERE p, где p -- предикат. Результатом этой операции является такое отношение, которое включено в А и для каждого его кортежа выполняется этот предикат.
Проекция -- A {X, Y, …, Z}. Результат -- отношение, из заголовка которого удалены все атрибуты, не указанные в фигурных скобках, а тело состоит из всех кортежей, очищенных от значений таких атрибутов.
– Естественное соединение -- A JOIN B. Неформально выражаясь, результат представляет собой отношение, кортежи которого были получены соединением всех кортежей из А и всех кортежей из В, причём два общих атрибута заменяются на один.
– Деление -- A DIVIDEBY B PER C. Результат состоит из тех значений кортежей А, для которых соответствующие значения кортежей в С включают все значения этих кортежей из B.
Основное назначение рассмотренной алгебры состоит в обеспечении возможности составления сколь угодно сложных реляционных выражений (запросов).
Понятие нормализации тесно связано с аспектом целостности в реляционной модели. Это означает, что правильно спроектированная база данных должна соответствовать определённым критериям. Эти критерии называются нормальными формами, а приведение базы данных к таким формам называется нормализацией.
Существует три вида нормальных форм, они называются первой, второй, и третьей нормальной формой соответственно. Существует ещё одна нормальная форма, носящая название нормальной формы Бойса-Кодда, однако, на практике она используется редко, поэтому не имеет смысла рассматривать её здесь более подробно. Рассмотрим каждую из них по отдельности.
1) Таблица находится в первой нормальной форме, если значения всех её полей атомарные и в ней отсутствуют повторяющиеся группы полей. Удовлетворение этим требованиям ещё называют структурной или синтаксической нормализацией.
2) Вторая нормальная форма требует, чтобы таблица удовлетворяла требованиям первой нормальной формы и любое неключевое поле однозначно идентифицируется полным набором ключевых полей.
3) Таблица находится в третьей нормальной форме, если она удовлетворяет условиям второй нормальной формы и ни одно из неключевых полей таблицы не идентифицируется с помощью другого неключевого поля.
Кроме нормализации, для создания хороших баз данных, необходимо задать связи между таблицами.
Схема данных является графическим образом БД. Она используется различными объектами Access для определения связей между несколькими
Рисунок 5 - Схема связей между таблицами
таблицами. Например, при создании формы, содержащей данные из нескольких взаимосвязанных таблиц, схема данных обеспечивает автоматический согласованный доступ к полям этих таблиц. Она же обеспечивает целостность взаимосвязанных данных при корректировке таблиц. Существует четыре типа связей, все они представлены на рисунке 5.
1) Связь «один-к-одному» означает, что каждой записи одной таблицы соответствует только одна запись другой таблицы и наоборот. Такая связь между таблицами устанавливается на основании значений совпадающих полей.
2) Связь «один-ко-многим» означает, что каждой записи одной таблицы соответствует несколько записей другой таблицы. Устанавливается с помощью составных первичных ключей.
3) Связь «многие-к-одному» аналогична предыдущей, но соответствие происходит в обратную сторону.
Связь «многие-ко-многим» возникает между двумя таблицами в тех случаях когда одна запись из первой таблицы может быть связана более чем с одной записью из первой таблицы. Таких связей следует избегать, так как реляционная модель не позволяет непосредственно работать с ними.
Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях, обычно между полями, имеющими одинаковые имена в обеих таблицах. В большинстве случаев с ключевым полем одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы.
Таким образом, реляционная модель баз данных лучше всего подходит для разрабатываемого программного обеспечения.
2.5 Разработка алгоритма решения задачи
Данное программное обеспечение реализует следующий алгоритм: Работа с формой авторизации.
1) Открыть форму авторизации.
2) Если введённого пользователя не существует, то сообщить об ошибке.
3) Иначе -- проверить введённый пароль.
4) Если пароли совпадают, то открыть форму работы с базой данных.
5) Иначе -- сообщить об ошибке.
6) Работа с командной формой:
1) Прочесть команду пользователя.
2) Пока команда не распознана делать:
3) Введённая пользователем команда подходит к текущей?
4) Если да, то прочесть аргументы команды.
5) Аргументы достаточны?
6) Если да, то выполнить команду пользователя.
7) Иначе -- запросить пользователя дополнить аргументы и выполнить команду.
8) Иначе -- перейти к другой команде.
9) Если ни одна из существующих команд не подходит к команде , введённой пользователем, то выполнить стандартную команду.
7) Работа с регистрационной формой:
1) Поле содержит только разрешённые символы?
3) Если да, то дать возможность редактировать следующее поле Нажатие кнопки «Регистрация»:
4) Если пароли совпадают и регистрируемого пользователя не существует, то сообщить об ошибке
5) Иначе -- зарегистрировать нового пользователя.
2.6 Описание модулей программы
Программа состоит из четырёх главных модулей:
1) Модуль командной формы.
2) Модуль регистрационной формы.
3) Модуль формы входа.
4) Модуль табличной формы
Далее будет приведён исходный код каждого из них.
Исходный код формы авторизации. Графическая часть этой формы представлена на рисунке 1.
public class AuthForm extends JFrame { private JButton btnEnter;
private JPanel rootPanel; private JTextField tfLogin; private JButton btnOpenReg; private JPanel passwordPanel;
private JPasswordField pfPassword; private JButton btnShowPassword; private final Main main;
AuthForm(Main main) { super("Авторизация | EssentialDict");
//Инициализация формы this.main = main; setContentPane(rootPanel); pack(); setLocationRelativeTo(null); setResizable(true);
initListeners();
}
//Инициализация компонентов
private void iniComponents()
tfLogin.setInputVerifier(new LoginVerifier());
((AbstractDocument)tfLogin.getDocument())
setDocumentFilter(new LoginDocumentFilter());
btnShowPassword.setFocusable(false);
btnEnter.setEnabled(false);
}
//Инициализация обработчиков событий
private void initListeners()
{
pfPassword.getDocument().addDocumentListener(new DocumentAdapter() {
@Override
public void insertUpdate(DocumentEvent e)
public void insertUpdate(DocumentEvent e)
{
if (!btnEnter.isEnabled())
btnEnter.setEnabled(true);
}
@Override
public void removeUpdate(DocumentEvent e)
public void removeUpdate(DocumentEvent e)
{
if (pfPassword.getPassword().length == 0)
btnEnter.setEnabled(false);
}
});
btnEnter.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
{
String userName = tfLogin.getText();
OptionsParser op = main.getOptionsParser();
if (!User.isLoginValid(userName))
{
System.out.println("Login not valid, return.");
return;
}
if (!op.hasUser(userName))
{
System.out.println("No such user exists!");
}
else
{
System.out.println(String.format
("User %s OK, attempt to compare passwords", userName));
String typedHash = DigestUtils.md5Hex(String.valueOf(pfPassword.getPassword()));
if (typedHash.equals(op.getOption(userName, "HASH")))
{
System.out.println("Password OK, attempt to read user data...");
User mainUser = op.readUser(userName);
System.out.println(String.format(
"User`s %s data successfully read. His name is: %s.",
userName,
mainUser.getOption(OPTIONS.FIRSTNAME) ));
}
else
{
System.out.println("Bad password, user data will not be read!");
}
}
}
});
final ImageIcon eyeOpen = new ImageIcon("res/eyeOpen.png");
final ImageIcon eyeCrossed = new ImageIcon("res/eyeCrossed.png");
btnShowPassword.setIcon(eyeCrossed);
btnShowPassword.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
if (btnShowPassword.getIcon().equals(eyeCrossed))
btnShowPassword.setIcon(eyeOpen);
else
btnShowPassword.setIcon(eyeCrossed);
if (pfPassword.echoCharIsSet())
pfPassword.setEchoChar((char) 0);
else
pfPassword.setEchoChar('*');
}
});
btnOpenReg.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
main.getRegForm().setVisible(true);
setEnabled(false);
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
JFrame frame = (JFrame) e.getSource();
int result = JOptionPane.showConfirmDialog(
frame,
"Выйти из программы?",
"Выход",
JOptionPane.OK_CANCEL_OPTION
);
if (result == JOptionPane.OK_OPTION)
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
else
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
});
}
}
Исходный код формы регистрации.
package com.mycompany;
RegForm(Main main) {
super("Регистрация нового пользователя | EssentialDict");
//Инициализация формы
this.main = main;
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
setContentPane(rootPanel);
pack();
setLocationRelativeTo(null);
setResizable(false);
initComponents();
initListeners();
}
private void showMessage(String message)
{
JOptionPane.showMessageDialog(
this,
message,
"Ошибка регистрационных данных",
JOptionPane.ERROR_MESSAGE
);
}
//Инициализация компонентов
private void initComponents()
{
tfFirstName.setInputVerifier(new NameVerifier());
tfSecondName.setInputVerifier(new NameVerifier());
tfThirdName.setInputVerifier(new NameVerifier());
tfLogin.setInputVerifier(new LoginVerifier());
((AbstractDocument)tfFirstName.getDocument())
.setDocumentFilter(new NameDocumentFilter());
((AbstractDocument)tfSecondName.getDocument())
.setDocumentFilter(new NameDocumentFilter());
((AbstractDocument)tfThirdName.getDocument())
.setDocumentFilter(new NameDocumentFilter());
((AbstractDocument)tfLogin.getDocument())
.setDocumentFilter(new LoginDocumentFilter());
btnRegister.setEnabled(false);
btnShowPass.setFocusable(false);
}
//Инициализация обработчиков событий
private void initListeners() {
pfConfirmPassword.getDocument().addDocumentListener(new DocumentAdapter() {
@Override
public void insertUpdate(DocumentEvent e) {
if (!btnRegister.isEnabled())
btnRegister.setEnabled(true);
}
});
final ImageIcon eyeOpen = new ImageIcon("res/eyeOpen.png");
final ImageIcon eyeCrossed = new ImageIcon("res/eyeCrossed.png");
btnShowPass.setIcon(eyeCrossed);
btnShowPass.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
btnShowPass.setIcon((btnShowPass.getIcon()
.equals(eyeCrossed)) ? eyeOpen : eyeCrossed);
pfPassword.setEchoChar((pfPassword.echoCharIsSet()) ? (char) 0 : '*');
pfConfirmPassword.setEchoChar((pfConfirmPassword.echoCharIsSet()) ? (char) 0 : '*');
}
});
btnRegister.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (!Arrays.equals(pfPassword.getPassword(),pfConfirmPassword.getPassword()))
{
showMessage("Пароли не совпадают.");
return;
if (main.getOptionsParser().hasUser(tfLogin.getText()))
{
showMessage(String.format("Пользователь с логином %s уже существует.",
tfLogin.getText()));
return;
}
Map<OPTIONS, String> options = new HashMap<>();
options.put(OPTIONS.HASH,
DigestUtils.md5Hex(String.valueOf(pfPassword.getPassword())));
options.put(OPTIONS.FIRSTNAME, tfFirstName.getText());
options.put(OPTIONS.SECONDNAME, tfSecondName.getText());
options.put(OPTIONS.THIRDNAME, tfThirdName.getText());
try {
main.getOptionsParser().addUser(new User(tfLogin.getText(), options));
System.out.println(String.format("User %s successfully added.", tfLogin.getText()));
JOptionPane.showMessageDialog(main.getRegForm(),
"Пользователь успешно зарегистрирован.");
dispatchEvent(new WindowEvent(main.getRegForm(),
WindowEvent.WINDOW_CLOSING));
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
for (Component component : rootPanel.getComponents())
{
if (component instanceof JTextField) ((JTextField) component).setText("");
}
for (Component component : datePanel.getComponents())
{
((JComboBox) component).setSelectedIndex(0);
}
pfPassword.setEchoChar('*'); pfPassword.setText(""); pfConfirmPassword.setEchoChar('*'); btnShowPass.setIcon(eyeCrossed); main.getAuthForm().setEnabled(true);
}
});
}
}
Исходный код командной формы.
package com.mycompany; import javax.swing.*;
/**
* Инициализация формы
*/
public class CommandForm extends JFrame
{
private JPanel rootPanel; private JTextField tf2; private JTextPane tp2;
private JButton btnOpenTab; private JTextPane tp1; private JTextField tf1; private JLabel lb1;
private JLabel lb2;
CommandForm()
{
super("Работа с БД | EssentialDict");
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); setContentPane(rootPanel);
pack(); setLocationRelativeTo(null); setResizable(false);
//initComponents();
//initListeners();
}
}
Исходный код командной формы. package com.mycompany;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
* Created by A on 24.06.2015.
*/
public class TableForm extends JFrame
{
private JPanel rootPanel; private JTable table1;
private DefaultTableModel dtm; TableForm()
Подобные документы
Разработка программы для автоматизации расчетов на телефонной станции. Описание входной и выходной информации, комплекс технических средств. Интерфейс конечного пользователя. Проектирование программных модулей представления входных и выходных данных.
курсовая работа [460,1 K], добавлен 26.06.2015Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.
курсовая работа [421,6 K], добавлен 27.06.2015Разработка технологии обработки информации, структуры и формы представления данных. Проектирование программных модулей. Блок-схема алгоритма и исходный код программы анализа арифметического выражения, синтаксического анализа простой программы на языке С.
курсовая работа [2,4 M], добавлен 12.12.2011Математическая постановка задачи. Обоснование выбора средств разработки. Входные и выходные данные работы программы. Решение задачи теста для написания и отладки программы. Описание программных модулей. Разработка алгоритма, анализ полученных результатов.
курсовая работа [2,2 M], добавлен 13.12.2015Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.
отчет по практике [175,0 K], добавлен 30.09.2022Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [159,8 K], добавлен 26.01.2010Определение этапов разработки программного обеспечения. Разработка модели представления данных и структуры интерфейса. Проектирование входных и выходных форм. Этапы программирование приложения. Проверка функциональности на контрольном примере.
курсовая работа [1,2 M], добавлен 25.05.2009