Особенности архитектуры Java, виртуальная машина, кроссплатформенность приложений. Информационно-логическая модель предметной области, описание сущностей, атрибутов, ключей, связей. Реализация интерфейса пользователя, принципы разработки инструкции.
Аннотация к работе
Название метода Описание private void JBUTTON1ACTIONPERFORMED() Метод служит для загрузки класса «Tabe3». private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table1». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table2». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table5». private void JBUTTON5ACTIONPERFORMED() Метод служит для загрузки класса «Table4». private void JBUTTON6ACTIONPERFORMED() Метод служит для закрытия всего проекта. Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table1. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table1Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table1Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table1Izm». Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table2. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table2Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table2Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table2Izm». Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table3. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table3Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table3Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table3Izm». Название МЕТОДАОПИСАНИЕ public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table4. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table4Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table4Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table4Izm».Курсовая работа - этап обучения студента, где проявляются навыки выполнения самостоятельной научно-исследовательской работы и овладения методикой исследования и эксперимента при решении актуальной задачи в области избранной студентом специальности. В результате выполнения курсовой была спроектирована информационная система «Учет проката автомобилей». Итогом курсовой работы стало приложение «Учет проката автомобилей», осуществляющее переход из одной таблицы на другую и выполнения операций с данными, а именно: добавление, удаление, правка.import javax.swing.*; import javax.swing.table.*; public class KYRSOVOIUI extends javax.swing.JFRAME { * Creates new form KYRSOVOIUI f5.SETVISIBLE(true); // TODO add your handling code here: } private void JMENU7MENUCANCELED (javax.swing.event.import javax.swing.*; import javax.swing.table.*; */ public class Table1 extends javax.swing.JFRAME { * Creates new form Table1 {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}GROUPLAYOUT.PREFERRED_SIZE, 142, javax.swing. GROUPLAYOUT.PREFERRED_SIZE, 142, javax.swing. GROUPLAYOUT.PREFERRED_SIZE, 142, javax.swing. GROUPLAYOUT.PREFERRED_SIZE, 142, javax.swing. GROUPLAYOUT.PREFERRED_SIZE, javax.swing.Исходный код формы «Информация о прокате» import java.sql. «FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. «FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. String[] COLUMNNAMES = {«Наименование автомобиля», «Ф.И.О. клиента», «Дата выдачи автомобиля», «Срок проката», «Дата возврата автомобиля»}; {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}«FROM Дополнительные_услуги INNER JOIN ((Марки_авто INNER JOIN Автомобили ON Марки_авто. Id_авто_характеристики) INNER JOIN Прокат ON Автомобили. «FROM Дополнительные_услуги INNER JOIN ((Марки_авто INNER JOIN Автомобили ON Марки_авто. Id_авто_характеристики) INNER JOIN Прокат ON Автомобили. {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null}Исходный код формы «Просмотр цены за прокат»
Введение
Современный мир информационных технологий трудно представить себе без возможности обработки больших объемов информации. Такие объемы информации удобно обрабатывать с помощью баз данных. Практически все системы в той или иной степени связаны с долговременным хранением и обработкой информации. Фактически, информация становится фактором, определяющим эффективность любой сферы деятельности. В связи с увеличением информационных потоков большинство операций не может быть выполнено вручную. Создание информационной системы позволит обеспечить надежное хранение данных, быстрый и эффективный поиск информации, предотвращение накладок, дублирования, малую вероятность ввода ошибочных данных.
В настоящее время существует множество областей производства, в ходе функционирования которых большая часть времени тратится на учет различной информации и ее обработку, поэтому возникает необходимость в автоматизации таких областей. Правильно организованная автоматизация какой-либо области позволяет в разы сократить расходы предприятий и затрачиваемое время на выполнение каких-либо операций. Успешность реализации автоматизированной информационной системы напрямую зависит от выбранных средств разработки.
Сейчас широко распространена архитектура «клиент-сервер». В этом случае в качестве клиента выступает Web-браузер, а в качестве сервера - Web-сервер. В функции Web-сервера входят: обработка запросов клиентов сети, передача параметров запроса и формирование Web-документа с использованием различных HTML-шаблонов. Готовый HTML-документ отсылается Web-обозревателю в формате протокола HTTP [1].
Для разработки базы данных была выбрана MS Access. MS Access - реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Ассе можно писать приложения, работающие с базами данных.
Для разработки приложения была выбрана технология Java.
Одно из основных преимуществ языка Java - независимость от платформы, на которой выполняются программы: один и тот же код можно запускать под управлением операционных систем Windows, Solaris, Linux, Machintosh и др.
Это действительно необходимо, когда программы загружаются через Интернет для последующего выполнения под управлением разных операционных систем.
Другое преимущество заключается в том, что синтаксис языка Java похож на синтаксис языка C , и программистам, знающим языки С и C , его изучение не составляет труда. Правда, для программистов, владеющих языком Visual Basic, этот синтаксис, возможно, будет непривычен.
Если вы никогда не программировали на языке C , некоторые термины, использованные в этом разделе, будут вам непонятны. В этом случае можете пропустить его. Пока вы доберетесь до конца главы 6, эти термины станут для вас привычными.
Кроме того, Java - полностью объектно-ориентированный язык, даже в большей степени, чем C . Все сущности в языке Java являются объектами, за исключением немногих основных типов, например чисел [2].
Целью курсовой работы является разработка приложения «Учет проката автомобилей». С помощью которой можно легко и быстро просматривать информацию о прокате автомобилей, клиентах которые брали в прокат автомобиль, дополнительных услугах для обслуживания автомобилей и т.д.
Задачами данной курсовой работы являются разработка и создание приложения с графическим интерфейсом пользователя, для хранения данных использовалась база данных. Разработанная база данных должна содержать всю подробную информацию о заданной предметной области, а разработанное приложение представлять информацию в удобном и приятном пользователю виде.
1. Обзор технологии Java
1.1 Особенности архитектуры Java архитектура приложение интерфейс пользователь
Java как язык программирования является объектно-ориентированной с момента основания. Кроме того, программист с самого начала обеспечивается набором «стандартных» библиотек, обеспечивающих функциональность от стандартного ввода или вывода и сетевых протоколов до графических пользовательских интерфейсов. Эти библиотеки легко могут быть расширены.
Несмотря на то, что язык С был отвергнут, синтаксис языка Java максимально приближен к синтаксису С . Это делает язык знакомым широкому кругу программистов. В то же время из языка были удалены многие свойства, которые делают С излишне сложным для пользования, не являясь абсолютно необходимыми. В результате язык Java получился более простым и органичным, чем С .
Надежность и безопасность Java существенно облегчает создание надежного программного обеспечения. Кроме исчерпывающей проверки на этапе компиляции, система предусматривается анализ на этапе выполнения. Сам язык спроектирован так, чтобы вырабатывать у программиста привычку писать «правильно». Модель работы с памятью, в которой исключено использование указателей, делает невозможными целый класс ошибок, характерных для С и С [3].
В силу того, что Java предназначена для работы в распределенной среде, безопасность становится чрезвычайно важной проблемой. Требования безопасности определяют многие черты, как языка, так и реализации всей системы.
Независимость от архитектуры и переносимость. Компилятор Java производит байт-коды, т.е. модули приложения имеют архитектурно-независимый формат, который может быть проинтерпретирован на множестве разнообразных платформ.
Следующий шаг - «замораживание» стандарта на формат основных встроенных типов данных. Программа, созданная на одной платформе, работает на всех остальных.
Производительность-схема работы системы и набор байт-кодов виртуальной машины Java таковы, что позволяют достичь высокой производительности на этапе выполнения программы: - анализ кодов на соблюдение правил безопасности производится один раз до запуска кодов на выполнение, в момент выполнения таких проверок уже не нужно, и коды выполняются максимально эффективно;
- работа с базовыми типами максимально эффективна, для операций с ними зарезервированы специальные байт-коды;
- методы в классах не обязательно связываются динамически;
- автоматический сборщик мусора работает отдельным фоновым потоком, не замедляя основную работу программы, но в то же время обеспечивая своевременный возврат свободной памяти в систему;
- стандарт предусматривает возможность написания критических по производительности участков программы в машинных кодах.
Интерпретируемый, многопотоковый и динамический. Интерпретируемая природа языка позволяет сделать фазу линкования простой, инкрементальной и, следовательно, быстрой. Это резко сокращает цикл разработки и тестирования программных фрагментов.
Многопотоковость позволяет выполнять в рамках одного приложения несколько задач одновременно. Это становится особенно актуально в современных распределенных приложениях, когда процессы сетевого обмена могут идти одновременно и асинхронно. При этом программа продолжает реагировать на ввод информации пользователем без неприятных задержек.
Многопотоковость поддерживается на уровне языка - часть примитивов синхронизации встроена в систему реального времени, а библиотека содержит базовый класс Thread. К тому же системные библиотеки написаны thread-safe, т.е. все они могут быть использованы в многопотоковых приложениях.
Система обеспечивает динамическую сборку программы. Классы подгружаются по мере необходимости, причем загружены они могут быть с любой точки сети, что позволяет сделать внесение изменений в приложения прозрачным для пользователя. Пользователь может быть уверен, что всегда работает со свежей версией приложения.
Система Java создавалась объектно-ориентированной с самого начала. Объектно-ориентированная парадигма наиболее удобна при создании программного обеспечения типа клиент-сервер, а также для организации распределенных вычислений.
Одна из черт, присущих объектам, заключается в том, что объекты обычно переживают процедуру, их создающую. Они затем могут перемещаться по сети, храниться в базах данных и т.д.
Идейными наследниками Java являются такие языки, как C , Eiffel, Smalltalk и Objective C. За исключением примитивных типов данных, практически все в языке является объектом.
Основные требования к объектно-ориентированной системе: - инкапсуляция - сокрытие реализации за абстрактным интерфейсом;
- полиморфизм-одно и то же сообщение, посланное различным объектам, приводит к выполнению разных операций;
- наследование-новые классы могут наследовать данные и функциональность уже существующих классов;
- динамическое связывание - новые классы могут появляться в системе откуда угодно, в том числе и из сети. Необходимо иметь возможность динамически включать их в систему.
Система Java предназначена для создания программного обеспечения, которое должно быть интеллектуальным, предельно надежным и безопасным по множеству параметров. Особое внимание уделяется как ранней диагностике возможных проблем, так и поздней, во время выполнения кодов.
Компиляция с языка Java предусматривает жесткую проверку исходных текстов, множество ошибок может быть выявлено уже на этом этапе.
Одним из преимуществ языка С как строго типизованного языка является возможность раннего выявления некоторых категорий ошибок. Однако во многом этот язык наследует свойства С, позволяя нарушать требования строгого объявления функций и методов. Язык Java требует явного объявления прототипов и не поддерживает характерных для С неявных преобразований.
Значительное число проверок, производимых компилятором, повторяются виртуальной машиной непосредственно перед выполнением приложения.
Наиболее существенное отличие языка Java от С или С заключается в том, что архитектура Java не позволяет случайно или намеренно повредить память программы. Вместо арифметики указателей Java использует полноценные объекты для массивов и строк, что позволяет контролировать индексы доступа к ним во время выполнения. Кроме того, невозможны превращения между целыми числами и указателями.
При сравнении таких языков программирования как C# и Java мы можем сказать, что оба языка используют в качестве синтаксической основы язык программирования C. В частности, от него унаследованы без изменений: - обозначения начала / конца блока кода фигурными скобками;
- обозначения, ассоциативность и приоритет большинства встроенных операций (присвоение, арифметические, логические, побитовые операции, операции инкремента / декремента, тернарная условная операция «?:»);
- синтаксис описания и использования переменных и функций (порядок «тип имя», использование модификаторов, обязательность скобок для функций, описание формальных параметров);
- синтаксис всех основных конструкций: условного оператора, циклов, оператора множественного выбора;
- отсутствие процедур (их заменяют функции типа void);
- наименования встроенных элементарных типов (кроме bool, в Java этот тип называется boolean);
- использование точки с запятой и т.д.
Все это приводит к тому, что программы на Java и C# внешне на первый взгляд выглядят чрезвычайно похоже на С-программы. В обоих языках сделаны однотипные расширения и дополнения по отношению к C (или C ), в частности, расширен алфавит и введен собственный синтаксис, поддерживающий пакеты, импорт описаний, определение единиц компиляции.
1.2 Виртуальная машина Java
Программа, написанная на одном из языков высокого уровня, к которым относится и язык Java, так называемый исходный модуль, не может быть сразу же выполнена. Ее сначала надо откомпилировать, т.е. перевести в последовательность машинных команд - объектный модуль. Но и он, как правило, не может быть сразу, же выполнен: объектный модуль надо еще скомпоновать с библиотеками использованных в модуле функций и разрешить перекрестные ссылки между секциями объектного модуля, получив в результате загрузочный модуль - полностью готовую к выполнению программу.
Исходный модуль, написанный на Java, не может избежать этих процедур, но здесь проявляется главная особенность технологии Java - программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (JVM, JAVAVIRTUALMACHINE). Виртуальная машина Java - это совокупность команд вместе с системой их выполнения. Виртуальная машина Java полностью стековая, так что не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, от чего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта. Согласно статистическим исследованиям средняя длина команды составляет 1,8 байта. Полное описание команд и всей архитектуры JVM содержится в спецификации виртуальной машины Java (VMS, VIRTUALMACHINESPECIFICATION).
Другая особенность Java - все стандартные функции, вызываемые в программе, подключаются к ней только на этапе выполнения, а не включаются в байт-коды. Как говорят специалисты, происходит динамическая компоновка (dynamicbinding). Это тоже сильно уменьшает объем откомпилированной программы.
Итак, на первом этапе программа, написанная на языке Java, переводится компилятором в байт-коды. Эта компиляция не зависит от типа какого-либо конкретного процессора и архитектуры некоего конкретного компьютера. Она может быть выполнена один раз сразу же после написания программы. Байт-коды записываются в одном или нескольких файлах, могут храниться во внешней памяти или передаваться по сети. Это особенно удобно благодаря небольшому размеру файлов с байт-кодами. Затем полученные в результате компиляции байт-коды можно выполнять на любом компьютере, имеющем систему, реализующую JVM. Так какреализуется принцип Java «Writeonce, runanywhere» - «Написано однажды, выполняется где угодно».
Интерпретация байт-кодов и динамическая компоновка значительно замедляют выполнение программ. Это не имеет значения в тех ситуациях, когда байт-коды передаются по сети, сеть все равно медленнее любой интерпретации, но в других ситуациях требуется мощный и быстрый компьютер. Поэтому постоянно идет усовершенствование интерпретаторов в сторону увеличения скорости интерпретации. Разработаны JIT-компиляторы (Just-In-Time), запоминающие уже интерпретированные участки кода в машинных командах процессора и просто выполняющие эти участки при повторном обращении, например, в циклах. Это значительно увеличивает скорость повторяющихся вычислений.
Кроме реализации JVM для выполнения байт-кодов на компьютере еще нужно иметь набор функций, вызываемых из байт-кодов и динамически компонующихся с байт-кодами. Этот набор оформляется в виде библиотеки классов Java.
Фирма SUN Microsystems - создатель технологии Java - бесплатно распространяет набор необходимых программных инструментов для полного цикла работы с этим языком программирования: компиляции, интерпретации, отладки, включающий и богатую библиотеку классов, под названием JDK (JAVADEVELOPMENTKIT).
Набор программ и классов JDK содержит: - компилятор javac из исходного текста в байт-коды; интерпретатор java, содержащий реализацию JVM;
- облегченный интерпретатор jre (в последних версиях отсутствует);
- программу просмотра апплетов appietviewer, заменяющую браузер;
- отладчик jdb;
- дизассемблер javap;
- программу архивации и сжатия jar;
- программу сбора документации javadoc;
- программу javah генерации заголовочных файлов языка С;
- программу javakey добавления электронной подписи;
- программу native2ascii, преобразующую бинарные файлы в текстовые;
- программы rmic и rmiregistry для работы с удаленными объектами;
- программу serialver, определяющую номер версии класса;
- библиотеки и заголовочные файлы «родных» методов;
- БИБЛИОТЕКУКЛАССОВJAVA API (Application Programming Interface).
Кроме JDK, компания SUN отдельно распространяет еще и набор JRE (JAVARUNTIMEENVIRONMENT) [4].
Набор программ и пакетов классов JRE содержит все необходимое для выполнения байт-кодов, в том числе интерпретатор java и библиотеку классов. Это часть JDK, не содержащая компиляторы, отладчики и другие средства разработки.
1.3 Кроссплатформенность Java-приложений
Создание приложений, действительно работающих на разных платформах - непростая задача. К сожалению, дело не ограничивается необходимостью перекомпиляции исходного текста программы для работы в другой среде. Много проблем возникает с несовместимостью программных интерфейсов различных операционных систем и графических оболочек, реализующих пользовательский интерфейс.
Программа на языке Java компилируется в двоичный модуль, состоящий из команд виртуального процессора Java. Такой модуль содержит байт-код, предназначенный для выполнения Java-интерпретатором. На настоящий момент уже созданы первые модели физического процессора, способного выполнять этот байт-код, однако интерпретаторы Java имеются на всех основных компьютерных платформах. Разумеется, на каждой платформе используется свой интерпретатор, или, точнее говоря, свой виртуальный процессор Java.
Если ваше приложение Java (или апплет) должно работать на нескольких платформах, нет необходимости компилировать его исходные тексты несколько раз. Вы можете откомпилировать и отладить приложение Java на одной, наиболее удобной для вас платформе. В результате вы получите кроссплатформенное приложение, способное работать в любой среде, поддерживающей процессор Java.
Внутренняя реализация библиотек классов, зависит от платформы. Однако все загрузочные модули, реализующие возможности этих библиотек, поставляются в готовом виде вместе с виртуальной машиной Java, поэтому программисту не нужно об этом заботиться. Для операционной системы Windows, например, поставляются библиотеки динамической загрузки DLL, внутри которых запрятана вся функциональность стандартных классов Java.
Абстрагируясь от аппаратуры на уровне библиотек классов, программисты могут больше не заботиться о различиях в реализации программного интерфейса конкретных операционных систем. Это позволяет создавать по-настоящему мобильные приложения, не требующие при переносе на различные платформы перетрансляции и изменения исходного текста [5].
2. Описание разработанного приложения
2.1 Информационно-логическая модель предметной области. Описание сущностей, атрибутов, ключей, связей
Описание сущностей
При исследовании предметной области были выделены следующие сущности: - «Автомобили» - хранит информацию о автомобилях.
- «Марки автомобилей» - хранит информацию о характеристиках марок автомобилей.
- «Прокат» - хранит информацию о прокате автомобилей.
- «Дополнительные услуги» - хранит информацию о дополнительных услугах.
- «Клиенты» - хранит информацию о всех клиентах.
Описание атрибутов сущностей
Атрибуты сущности «Марки_автомобилей»: - ID_авто_характеристики - уникальный номер марки автомобиля;
- Наименование - наименование марки автомобиля;
- Характеристики - технические характеристики марки автомобиля;
- Описание - описание марки автомобиля;
Атрибуты сущности «Клиенты»: - ID_Клиента - уникальный номер клиента;
- Ф.И.О._клиента - Ф.И.О. клиента;
- Дата_рождения - дата рождения клиента;
- Пол - пол клиента;
- Адрес - адрес проживания клиента;
- Телефон - номер телефона клиента;
- Паспортные данные - серия и номер паспорта клиента;
Атрибуты сущности «Автомобили»: - ID_Автомобиля - уникальный номер для автомобиля;
- ID_авто_характеристики - уникальный номер марки автомобиля;
- Регистр_номер - регистрационный номер автомобиля;
- Номер_кузова - номер кузова автомобиля;
- Номер_двигателя - номер двигателя автомобиля;
- Год_выпуска - год выпуска автомобиля;
- Пробег - пробег автомобиля;
- Цена_авто - цена автомобиля;
- Цена_дня_проката - цена за один день проката автомобиля;
- Дата_последнего_ТО - дата последнего ТО автомобиля;
- Id_сотрудника_механика - код сотрудника механика;
- Спец_отметки - специальные отметки;
- Отметка_о_возврате - отметка о возврате автомобиля;
Атрибуты сущности «Прокат»: - ID_проката - уникальный номер для каждой путевки;
- Дата_выдачи - дата начала путевки;
- Срок_проката - дата окончания путевки;
- Дата_возврата - название отеля;
- ID_Автомобиля - уникальный номер для автомобиля;
- ID_Клиента - уникальный номер клиента;
- ID_услуги - уникальный номер услуги;
Атрибуты сущности «Дополнительные услуги»: - ID_услуги - уникальный номер услуги;
- Наименование - наименование услуги;
- Описание - описание услуги;
- Цена - цена услуги;
Описание ключей
Для того чтобы однозначно идентифицировать каждый экземпляр всех сущностей, необходимо выбрать для каждой сущности ключевой атрибут: - «Автомобили» - в качестве первичного ключа выбрано поле
«ID_Автомобиля», так как он однозначно идентифицирует каждый автомобиль, поскольку не имеет совпадений с кодами других автомобилей. В качестве внешних ключей выбраны атрибуты «Наименование» для связи с сущностью «Марки_автомобилей» и «ID_Автомобиля» для связи с сущностью «Прокат»;
- «Марки автомобилей» - в качестве первичного ключа выбран атрибут «ID_ авто_характеристики»;
- «Дополнительные_услуги» - в качестве первичного ключа выбрано поле «ID_Услуги»;
- «Клиенты» - в качестве первичного ключа выбрано поле «ID_Клиента»;
- «Прокат» - в качестве первичного ключа выбрано поле «ID_Проката». В качестве внешних ключей выбраны атрибуты «Регистр_номер» для связи с сущностью «Автомобили», «Ф.И.О._клиента» для связи с сущностью «Клиенты», «Наименование» для связи с сущностью «Дополнительные_услуги».
Описание связей
Опишем типы связей между сущностями: - «Марки_авто» > «Автомобили»: тип связи «один ко многим»;
- «Автомобили» > «Прокат»: тип связи «один ко многим»;
- «Дополнительные_услуги» > «Прокат»: тип связи «один ко многим»;
- «Клиенты» > «Прокат»: тип связи «один ко многим»;
Также связи могут быть идентифицирующими или не идентифицирующими. Если задана идентифицирующая связь, то это значит, что каждому экземпляру дочерней сущности должен соответствовать хотя бы один экземпляр родительской. Не идентифицирующая связь означает, что экземпляр дочерней сущности может быть идентифицирован без использования экземпляра родительской сущности. Все первичные ключи в сущностях являются простыми - состоят из одного поля и однозначно идентифицируют запись.
2.2 Физическая структура базы данных
Диаграмма базы данных. Описание состава, типов данных и свойств полей таблиц базы данных
Схема базы данных приведена на рисунке 2.1.
Рисунок 2.1 - Схема базы данных
Структуры таблиц разработанной БД приведены в таблицах 2.1, 2.2, 2.3, 2.4, 2.5.
Таблица 2.1 - Таблица «Марки_автомобилей»
Имя поля Тип данных Индексация Разрешить NULL
ID_авто_характеристики числовой Да Нет
Наименование короткий текст Нет Да Характеристики короткий текст Нет Да Описание короткий текст Нет Да Таблица 2.2 - Таблица «Автомобили»
Имя поля Тип данных Индексация Разрешить NULL
Id_автомобиля числовой Да Нет
Id_авто_характеристики числовой Да Нет
Регистр_номер короткий текст Нет Да Номер_кузова короткий текст Нет Да Номер_двигателя короткий текст Нет Да Год_выпуска числовой Да Нет
Пробег числовой Да Нет
Цена_авто числовой Да Нет
Цена_дня_проката числовой Да Нет
Дата_последнего_ТО числовой Да Нет
Id_сотрудника_механика числовой Да Нет
Спец_отметки короткий текст Да Нет
Отметка_о_возврате короткий текст Да Нет
Таблица 2.3 - Таблица «Клиенты»
Имя поля Тип данных Индексация Разрешить NULL
ID_Клиента Счетчик Да Нет
Ф.И.О. короткий текст Нет Да Дата_рождения короткий текст Нет Да Пол короткий текст Нет Да Адрес короткий текст Нет Да Телефон числовой Да Нет
Паспортные_данные короткий текст Нет Да Таблица 2.4 - Таблица «Прокат»
Имя поля Тип данных Индексация Разрешить NULL
Id_проката Числовой Да Нет
Дата_выдачи короткий текст Нет Да Срок_проката Числовой Да Нет
Дата_возврата короткий текст Нет Да Id_автомобиля Числовой Да Нет
Id_клиента Числовой Да Нет
Id_услуги Числовой Да Нет
Таблица 2.5 - Таблица «Дополнительные_услуги»
Имя поля Тип данных Индексация Разрешить NULL
ID_Услуги Числовой Да Нет
Наименование короткий текст Нет Да Описание короткий текст Нет Да Цена Числовой Да Нет
2.3 Аппаратное и программное обеспечение системы
Для работы с базой данных необходимо наличие на компьютере установленного программного комплекса Microsoft Access. Перечислим минимальные системные требования для правильной работы Microsoft Access: - компьютер и процессор: процессор с тактовой частотой 1 гигагерц (ГГЦ) или выше (x86) либо 64-разрядный процессор с набором инструкций SSE2. Для Mac: процессор Intel;
- оперативная память: 1 ГБ ОЗУ (для 32-разрядной версии) или 2 ГБ ОЗУ (для 64-разрядной версии). Для Mac: 1 ГБ ОЗУ;
- жесткий диск: 3,0 ГБ свободного места на жестком диске. Для
Mac: 2,5 ГБ, форматирование жесткого диска типа HFS ;
- дисплей: разрешение экрана 1366 x 768. Для Mac: разрешение экрана 1280 x 800;
- графика: для использования аппаратного ускорения графики необходима графическая карта с поддержкой DIRECTX 10;
- операционная система: Windows 7, Windows 8, Windows Server 2008 R2 или Windows Server 2012. Для Mac: Mac OS X 10.6 или более поздней версии;
- версия. Net: 3.5, 4.0 или 4.5;
- другие: для использования Интернета необходимо подключение к Интернету (может быть платным). Для использования мультисенсорной технологии требуется устройство с поддержкой сенсорного ввода. Новые сенсорные возможности оптимизированы для использования в Windows 8.
Чтобы получить доступ к данным из базы данных Microsoft Access с помощью драйвера Драйвер Microsoft JDBC для Microsoft Access, на компьютере должны быть установлены следующие компоненты: - Драйвер Microsoft JDBC для SQL Server
- Среда выполнения Java
Требования к среде выполнения Java: Для разработки программ в среде NETBEANS и для успешной инсталляции и работы самой среды NETBEANS должен быть предварительно установлен Sun JDK или J2EE SDK подходящей версии. Среда разработки NETBEANS по умолчанию поддерживала разработку для платформ J2SE и J2EE. Драйвер JDK включает в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.
Системные требования для Java: Windows: - Windows 8 (Настольные ПК)
- Windows 7
- Windows Vista SP2
- Windows XP SP3 (32-разрядная версия); Windows XP SP2 (64-разрядная версия)
- Windows Server 2008
- Windows Server 2012 (64-разрядная версия)
- RAM: 128 МБ; 64 МБ для Windows XP (32-разрядная версия)
- Дисковое пространство: 124 МБ
- Браузеры: Internet Explorer 7.0 и выше, Firefox 3.6 и выше, Chrome
Mac OS X: - Mac на базе Intel, на котором запущен Mac OS X 10.7.3 (Lion) или более поздней версии.
- Полномочия администратора для установки
- 64-битный браузер
- Для запуска Java 7 на Mac OS X требуется 64-битный браузер (например, Safari или Firefox). 32-разрядные браузеры, такие как Chrome, не поддерживают Java 7 на платформе Mac.
Linux: - Oracle Linux 5.5
- Oracle Linux 6.x (32-разрядная версия)*, 6.x (64-разрядная версия)**
- Red Hat Enterprise Linux 5.5 , 6.x (32-разрядная версия)*, 6.x (64-разрядная версия)**
- Ubuntu Linux* 10.04 и выше
- Suse Linux Enterprise Server* 10 SP2, 11.x
- RAM: 64 МБ
- Дисковое пространство: 58 МБ
- Браузеры: все ОС, поддерживающие Firefox 3.6 и выше
2.4 Структура программного комплекса
Для решения поставленной задачи была выбрана свободная интегрированная среда разработки приложений NETBEANS IDE. По качеству и возможностям последние версии NETBEANS IDE не уступают лучшим коммерческим (платным) интегрированным средам разработки для языка Java, таким, как INTELLIJ IDEA, поддерживая рефакторинг, профилирование, выделение синтаксических конструкций цветом, автодополнение набираемых конструкций на лету, множество предопределенных шаблонов кода и др. В разработанной программе реализовано 21 класс, с помощью которых данные структурированы и разделены между собой. В классах реализованы различные методы, которые предназначенные для упрощения общих задач программирования. Ниже описаны классы и их методы: - класс KURSOVOIUI, главный класс, который отображает все таблицы базы данных и запросы. Элементы класса описаны в таблице 2.7;
- класс Table1, содержит информацию о всех видах марках автомобилей, элементы класса описаны в таблице 2.8;
- класс Table2, содержит информацию о прокате автомобилей, элементы класса описаны в таблице 2.9;
- класс Table3, содержит информацию о всех автомобилях, элементы класса описаны в таблице 2.10;
- класс Table4, содержит информацию о всех клиентах, элементы класса описаны в таблице 2.11;
- класс Table5, содержит информацию о всех дополнительных услугах, элементы класса описаны в таблице 2.12;
- классы Table1Dob, Table2Dob, Table3Dob, Table4Dob, Table5Dob служат для добавления элемента в таблицу, который введет пользователь. Добавление элемента аналогично остальным классам так, что нет необходимости приводить элементы всех классов, а достаточночно привести только одного. Элементы класса описаны в таблице 2.13;
классы Table1Del, Table2Del, Table3Del, Table4Del, Table5Del служат для удаления элемента из таблицы, удаляемый элемент выбираеться пользователем из выпадающего списка. Удаление элемента аналогично остальным классам так, что нет необходимости приводить элементы всех классов, а достаточночно привести только одного. Элементы класса описаны в таблице 2.14;
- классы Table1Izm, Table2Izm, Table3Izm, Table4Izm, Table5Izm служат для изменения элемента в таблице, изменяемы элемент выбираеться пользователем из выпадающего списка. Изменение элемента аналогично остальным классам так, что нет необходимости приводить элементы всех классов, а достаточночно привести только одного. Элементы класса описаны в таблице 2.15;
Таблица 2.7 - Элементы класса «KURSOVOIUI»
Название метода Описание private void JBUTTON1ACTIONPERFORMED() Метод служит для загрузки класса «Tabe3». private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table1». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table2». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table5». private void JBUTTON5ACTIONPERFORMED() Метод служит для загрузки класса «Table4». private void JBUTTON6ACTIONPERFORMED() Метод служит для закрытия всего проекта.
Таблица 2.8 - Элементы класса «Table1»
Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table1. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table1Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table1Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table1Izm».
Таблица 2.9 - Элементы класса «Table2»
Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table2. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table2Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table2Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table2Izm».
Таблица 2.10 - Элементы класса «Table3»
Название метода Описание public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table3. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table3Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table3Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table3Izm».
Таблица 2.11 - Элементы класса «Table4»
Название МЕТОДАОПИСАНИЕ public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table4. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table4Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table4Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table4Izm».
Таблица 2.12 - Элементы класса «Table5»
Название МЕТОДАОПИСАНИЕ public void Connection() Этот метод позволяет соединится с базой данных, посчитать количество записей в нужной таблице и вывести содержимое этой таблицы в разрабатываемом приложении. private void JBUTTON1ACTIONPERFORMED() Метод служит для закрытия класса Table5. private void JBUTTON2ACTIONPERFORMED() Метод служит для загрузки класса «Table5Dob». private void JBUTTON3ACTIONPERFORMED() Метод служит для загрузки класса «Table5Del». private void JBUTTON4ACTIONPERFORMED() Метод служит для загрузки класса «Table5Izm».
Таблица 2.13 - Элементы класса «Table1Dob»
Название метода Описание public void Add() Метод позволяет соединиться с базой данных и с помощью SQL-запроса на добавление данных в таблицу, добавить запись введенную пользователем. private void JBUTTON1ACTIONPERFORMED() Метод обрабатывает и проверяет на правильность, вводимые пользователем данные, а затем реализует метод add(). Если введены некорректные данные, то пользователю выдается сообщение. private void JBUTTON2ACTIONPERFORMED Метод служит для закрытия класса «TABLEDOB».
Таблица 2.14 - Элементы класса «Table1Del»
Название метода Описание public void Del() Метод позволяет соединиться с базой данных и с помощью SQL-запроса на удаление данных из таблицы, удалить выбранную из списка запись. public void Search() Этот метод записывает в выпадающий список все наименования марок автомобилей. Он также соединяется с базой данных и с помощью SQL-запроса выбирает нужные данные. private void JBUTTON1ACTIONPERFORMED() Метод обрабатывает выбранные пользователем данные, а затем реализует метод Del(). private void JBUTTON2ACTIONPERFORMED() Метод служит для закрытия класса «Table1Del».
Таблица 2.15 - Элементы класса «TABLEIZM»
Название метода Описание public void izm() Метод позволяет соединиться с базой данных и с помощью SQL-запроса на изменение данных в таблице, изменить выбранную из списка запись, введя новые значения. public void Search() Этот метод записывает в выпадающий список все наименования видов отдыха. Он также соединяется с базой данных и с помощью SQL-запроса выбирает нужные данные. private void JTEXTFIELD2MOUSECLICKED() Метод служит для того, чтобы по нажатию на текстовое поле, пользователь мог ввести данные, если они сразу были введены неверно. private void JTEXTFIELD3MOUSECLICKED() Аналогичен методу JTEXTFIELD2MOUSECLICKED(). private void JTEXTFIELD4MOUSECLICKED() Аналогичен методу JTEXTFIELD2MOUSECLICKED(). private void JBUTTON1ACTIONPERFORMED() Метод обрабатывает и проверяет на правильность, вводимые пользователем данные, а затем реализует метод izm(). Если введены некорректные данные, то пользователю подсвечивается поле, которое нужно исправить. private void JBUTTON2ACTIONPERFORMED() Метод служит для закрытия класса «Vid_Izm».
3. Реализация интерфейса пользователя
3.1 Инструкция пользователя
Для работы с базой данных пользователю не нужно иметь специальных навыков, достаточно лишь ознакомиться с данной пояснительной запиской или с литературными источниками, использовавшимися для выполнения курсовой работы, список которых приведен ниже.
Разработанное приложения позволяет следить количеством путевок, а также вносить изменения. Приложения также считает выводит информацию о нужных путевках и их стоимость.
Для отображения и редактирования информации в базе данных, а также для выполнения дополнительных функций по обработке данных был создан набор форм. Пользователь имеет возможность перейти к редактированию любой таблицы путем выбора надписи с ее именем в списке.
Для запуска программы следует запустить jar-файл, который находится в папке с проектом: Курсовая\Kursovaya\dist\Kursovaya.jar или открыть проект в среде разработки приложений Netbeans IDE. В запустившейся программе нажать функциональную клавишу F6, после чего проект будет собран и запущен. После открытия проекта на экране появится главная форма «Главное меню», отображающая все таблицы, изображенная на рисунке 3.1.
Рисунок 3.1 - Вид главной формы
3.2 Описание результатов
После открытия главной формы, пользователю необходимо выбрать нужную ему таблицу базу данных и работать с ней, которые в свою очередь отображают, добавляют новые, удаляют и изменяют имеющиеся данные.
При выборе пункта меню «Таблица Автомобили», отображается форма, представленная на рисунке 3.2. На форме отображается таблица с полями: Id_автомобиля, Id_авто_характеристики, Регистр_номер, Номер_кузова, Номер_двигателя, Год_выпуска, Пробег, Цена_авто, «Цена_дня_проката», Дата_последнего_ТО, Id_сотрудника_механика, Спец_отметки, Отметка_о_возврате. Возможно редактирование, добавление, удаление данных в таблице.
Рисунок 3.2 - Вид формы «Таблица Автомобили»
При выборе пункта меню «Таблица Марки автомобилей», отображается форма, представленная на рисунке 3
Вывод
Курсовая работа - этап обучения студента, где проявляются навыки выполнения самостоятельной научно-исследовательской работы и овладения методикой исследования и эксперимента при решении актуальной задачи в области избранной студентом специальности. Любая курсовая работа является неотъемлемой частью обучения студентов. В результате выполнения курсовой была спроектирована информационная система «Учет проката автомобилей».
В ходе разработки приложения для курсового проекта, были учтены все требования. А так же учтены пожелания пользователя в легкости и доступности данной программы.
Итогом курсовой работы стало приложение «Учет проката автомобилей», осуществляющее переход из одной таблицы на другую и выполнения операций с данными, а именно: добавление, удаление, правка. Сначала был проведен анализ предметной области, разработана база данных, затем был разработан алгоритм работы приложения и интерфейс. Приложение имеет простой и понятный интерфейс, который позволяет пользователям без труда работать с данной информационной системой, поскольку при разработке были использованы общепринятые стандарты.
Данная курсовая работа дает возможность глубже изучить пройденный материал, позволяет закрепить навыки решения поставленных задач и научиться поиску необходимой для этого информации, а так же помогла освоить на практике все теоретические знания.
Список литературы
1. Хомоненко А.Д. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - 5-е изд., доп. - М.: Бином-Пресс; СПБ.: КОРОНА принт, 2006. -736 с.
2. В. Монахов Язык программирования Java и среда NETBEANS 4-е издание. - СПБ.: Питер, 2009. - 640 с.