Разработка системы учета проката автомобилей

 















Расчетно-пояснительная записка

к курсовой работе

Разработка системы учета проката автомобилей



Введение


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

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

Сейчас широко распространена архитектура «клиент-сервер». В этом случае в качестве клиента выступает 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 Особенности архитектуры 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 (или 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 - Таблица «Марки_автомобилей»

Имя поляТип данныхИндексацияРазрешить NULLID_авто_характеристикичисловойДаНетНаименованиекороткий текстНетДаХарактеристикикороткий текстНетДаОписаниекороткий текстНетДа

Таблица 2.2 - Таблица «Автомобили»

Имя поляТип данныхИндексацияРазрешить NULLId_автомобилячисловойДаНетId_авто_характеристикичисловойДаНетРегистр_номеркороткий текстНетДаНомер_кузовакороткий текстНетДаНомер_двигателякороткий текстНетДаГод_выпускачисловойДаНетПробегчисловойДаНетЦена_авточисловойДаНетЦена_дня_прокатачисловойДаНетДата_последнего_ТОчисловойДаНетId_сотрудника_механикачисловойДаНетСпец_отметкикороткий текстДаНетОтметка_о_возвратекороткий текстДаНет

Таблица 2.3 - Таблица «Клиенты»

Имя поляТип данныхИндексацияРазрешить NULLID_КлиентаСчетчикДаНетФ.И.О.короткий текстНетДаДата_рождениякороткий текстНетДаПолкороткий текстНетДаАдрескороткий текстНетДаТелефончисловойДаНетПаспортные_данныекороткий текстНетДа

Таблица 2.4 - Таблица «Прокат»

Имя поляТип данныхИндексацияРазрешить NULLId_прокатаЧисловойДаНетДата_выдачикороткий текстНетДаСрок_прокатаЧисловойДаНетДата_возвратакороткий текстНетДаId_автомобиляЧисловойДаНетId_клиентаЧисловойДаНетId_услугиЧисловойДаНет

Таблица 2.5 - Таблица «Дополнительные_услуги»

Имя поляТип данныхИндексацияРазрешить NULLID_УслугиЧисловойДаНетНаименованиекороткий текстНетДаОписаниекороткий текстНетДаЦенаЧисловойДаНет


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.:

-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.3. На форме отображается таблица с полями: Id_авто_характеристики, Наименование, Тех_характеристики, Описание. Возможно редактирование, добавление, удаление.



Рисунок 3.3 - Вид формы «Таблица Марки автомобилей»


При выборе пункта меню «Дополнительные услуги», отображается форма, представленная на рисунке 3.4. На форме представлена таблица с данными: id_услуги, наименование, описание, цена. Возможно редактирование, добавление и удаление данных.


Рисунок 3.4 - Вид формы «Таблица Дополнительные услуги»


При выборе пункта меню «Клиенты», отображается форма, показанная на рисунке 3.5. На форме представлена таблица с данными: id_клиента, Ф.И.О., дата рождения, пол, адрес, телефон, паспортные данные. Возможна правка, удаление и добавление данных.


Рисунок 3.5 - Вид формы «Таблица Клиенты»


При выборе пункта меню «Прокат», отображается форма, показанная на рисунке 3.6. На форме представлена таблица с данными: id_проката, дата выдачи, срок проката, дата возврата, срок проката, дата возврата, id_автомобиля, id_клиента, id_услуги. Возможно редактирование, добавление, удаление данных.


Рисунок 3.6 - Вид формы «Таблица Прокат»


На страницах, в которых допускается изменение существующих данных, редактирование производится следующим образом: при нажатии кнопки «Изменить», открывается новая форма. В выпадающем списке выбираем то поле, которое хотим изменить и вводим новые данные в поля редактирования имеющиеся на этой форме. После введения корректных данных и нажатия кнопки «изменить данные в таблице» измененная запись будет сохранена. Пример изменения данных представлен на рисунке 3.7.


Рисунок 3.7 - Пример изменения данных в таблице


Для добавления данных нужно нажать кнопку «Добавить» и в открывшейся форме ввести данные и нажать кнопку «добавить данные в таблицу». Если данные все введенные данные будут допустимы, запись добавится в таблицу, если нет - появится сообщение о некорректности данных. Пример добавления данных в таблицу представлен на рисунке 3.8.


Рисунок 3.8 - Пример добавления данных в таблицу


Для удаления информации нужно нажать кнопку «Удалить», затем выбрать из выпадающего списка нужную строку и нажать кнопку «удалить данные из таблицы». Данные будут удалены. Пример удаления данных представлен на рисунке 3.9.


Рисунок 3.9 - Пример удаления данных из таблицы


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

Требования к пользователю:

умение пользоваться компьютерной мышью и клавиатурой;

ознакомление с предметной областью задачи;

понимание работы программы для её оценки.

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

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

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

В ходе выполнения программы, при не заполнении полей, выдается сообщение. На рисунке 3.12 изображен пример.


Рисунок 3.10 - Пример сообщения при наличии незаполненных ячеек


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

Пример выпадающих списков, используемых при вводе данных приведен на рисунке 3.13.


Рисунок 3.11 - Пример выпадающих списков, используемых при вводе данных



Заключение


Курсовая работа - этап обучения студента, где проявляются навыки выполнения самостоятельной научно-исследовательской работы и овладения методикой исследования и эксперимента при решении актуальной задачи в области избранной студентом специальности. Любая курсовая работа является неотъемлемой частью обучения студентов. В результате выполнения курсовой была спроектирована информационная система «Учет проката автомобилей».

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

Итогом курсовой работы стало приложение «Учет проката автомобилей», осуществляющее переход из одной таблицы на другую и выполнения операций с данными, а именно: добавление, удаление, правка. Сначала был проведён анализ предметной области, разработана база данных, затем был разработан алгоритм работы приложения и интерфейс. Приложение имеет простой и понятный интерфейс, который позволяет пользователям без труда работать с данной информационной системой, поскольку при разработке были использованы общепринятые стандарты.

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



Список использованных источников


1.Хомоненко А.Д. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - 5-е изд., доп. - М.: Бином-Пресс; СПб.: КОРОНА принт, 2006. -736 с.

2.В. Монахов Язык программирования Java и среда NetBeans 4-е издание. - СПб.: Питер, 2009. - 640 с.

.Блинов И.Н. Java промышленное программирование: практ. пособие. - Минск: УниверсалПресс, 2007. - 704 с.

.Брюс Эккель. Философия Java. Библиотека программиста. 4-е изд. - СПб.: Питер, 2009. - 640 с.

.Хабибулин И.Ш. Самоучитель Java. - Спб.: БХВ-Петербург, 2001. - 464 с.



Приложение А


Исходный код главной формы


import java.sql.*;java.util.*;javax.swing.*;javax.swing.table.*;class kyrsovoiUI extends javax.swing.JFrame {


/**

* Creates new form kyrsovoiUI

*/kyrsovoiUI() {();

}


/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JLabel();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JMenuBar();= new javax.swing.JMenu();= new javax.swing.JMenu();= new javax.swing.JMenu();= new javax.swing.JMenu();= new javax.swing.JMenu();= new javax.swing.JMenu();

(«Курсовая работа ВСРПП»);(javax.swing.UIManager.getDefaults().getColor («textHighlight»));

.setFont (new java.awt. Font («Tahoma», 0, 18)); // NOI18N.setText (» Выберите пункт меню»);

.setText («Таблица Автомобили»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Таблица Марки автомобилей»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Таблица Прокат»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Таблица Доп. услуги»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Таблица Клиенты»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Выход»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});.setText («Файл»);

.setText («Выход»);.addMouseListener (new java.awt.event. MouseAdapter() {void mouseClicked (java.awt.event. MouseEvent evt) {MouseClicked(evt);

}

});.addMenuListener (new javax.swing.event. MenuListener() {void menuDeselected (javax.swing.event. MenuEvent evt) {

}void menuSelected (javax.swing.event. MenuEvent evt) {

}void menuCanceled (javax.swing.event. MenuEvent evt) {MenuCanceled(evt);

}

});.add(jMenu7);

.add(jMenu3);

.setText («Запросы»);4.setToolTipText(«»);


jMenu5.setText («Запрос на просмотр информации о прокате»);

jMenu5.addMouseListener (new java.awt.event. MouseAdapter() {void mouseClicked (java.awt.event. MouseEvent evt) {MouseClicked(evt);

}

});.add(jMenu5);

6.setText («Запрос на просмотр произведенных услуг»);

jMenu6.addMouseListener (new java.awt.event. MouseAdapter() {void mouseClicked (java.awt.event. MouseEvent evt) {MouseClicked(evt);

}

});.add(jMenu6);

1.setText («Запрос на просмотр цены за прокат»);

jMenu1.addMouseListener (new java.awt.event. MouseAdapter() {void mouseClicked (java.awt.event. MouseEvent evt) {MouseClicked(evt);

}

});.add(jMenu1);

.add(jMenu4);

(jMenuBar2);

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING, false)(layout.createSequentialGroup()(jButton1)(18, 18, 18)(jButton2)(26, 26, 26)(jButton4))(jLabel1, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(javax.swing. GroupLayout. Alignment.TRAILING, layout.createSequentialGroup()(89, 89, 89)(jButton3)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jButton5)(84, 84, 84))))(layout.createSequentialGroup()(140, 140, 140)(jButton6, javax.swing. GroupLayout.PREFERRED_SIZE, 229, javax.swing. GroupLayout.PREFERRED_SIZE)))(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(6, 6, 6)(jLabel1, javax.swing. GroupLayout.PREFERRED_SIZE, 37, javax.swing. GroupLayout.PREFERRED_SIZE)(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton1)(jButton2)(jButton4))(javax.swing. LayoutStyle. ComponentPlacement.UNRELATED)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton3)(jButton5))(javax.swing. LayoutStyle. ComponentPlacement.UNRELATED)(jButton6)(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>

void jButton5ActionPerformed (java.awt.event. ActionEvent evt) {f4 = new Table4 ();.setVisible(true); // TODO add your handling code here:

}

void jButton6ActionPerformed (java.awt.event. ActionEvent evt) {.exit(0); // TODO add your handling code here:

}

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {f3 = new Table3 ();.setVisible(true); // TODO add your handling code here:

}

void jButton2ActionPerformed (java.awt.event. ActionEvent evt) {f1 = new Table1 ();.setVisible(true); // TODO add your handling code here:

}

void jButton3ActionPerformed (java.awt.event. ActionEvent evt) {f2 = new Table2 ();.setVisible(true); // TODO add your handling code here:

}

void jButton4ActionPerformed (java.awt.event. ActionEvent evt) {f5 = new Table5 ();.setVisible(true); // TODO add your handling code here:

}

void jMenu7MenuCanceled (javax.swing.event. MenuEvent evt) {

// TODO add your handling code here:

} void jMenu7MouseClicked (java.awt.event. MouseEvent evt) {.exit(0); // TODO add your handling code here:

}

void jMenu5MouseClicked (java.awt.event. MouseEvent evt) {_prokat z3 = new Zapros_prokat();.setVisible(true); // TODO add your handling code here:

}

void jMenu6MouseClicked (java.awt.event. MouseEvent evt) {_prosm_avto z3 = new Zapros_prosm_avto();.setVisible(true); // TODO add your handling code here:

}

void jMenu1MouseClicked (java.awt.event. MouseEvent evt) {_cen z3 = new Zapr_cen();.setVisible(true); // TODO add your handling code here:

}void jMenu8MouseClicked (java.awt.event. MouseEvent evt) {

// TODO add your handling code here:

}

/**

* @param args the command line arguments

*/static void main (String args[]) {

/* Set the Nimbus look and feel */

// <editor-fold defaultstate= «collapsed» desc=» Look and feel setting code (optional) «>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"justify">*/{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (kyrsovoiUI.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (kyrsovoiUI.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (kyrsovoiUI.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (kyrsovoiUI.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {kyrsovoiUI().setVisible(true);

}

});

}

// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JButton jButton3;javax.swing.JButton jButton4;javax.swing.JButton jButton5;javax.swing.JButton jButton6;javax.swing.JLabel jLabel1;javax.swing.JMenu jMenu1;javax.swing.JMenu jMenu3;javax.swing.JMenu jMenu4;javax.swing.JMenu jMenu5;javax.swing.JMenu jMenu6;javax.swing.JMenu jMenu7;javax.swing.JMenuBar jMenuBar2;

// End of variables declaration}



Приложение Б


Исходный код формы «Марка автомобилей»


import java.sql.*;java.util.*;javax.swing.*;javax.swing.table.*;

/**

*

* @author User

*/class Table1 extends javax.swing.JFrame {


/**

* Creates new form Table1

*/Table1 () {();();

}void Connection()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();= new javax.swing.JTable();.setAutoCreateRowSorter(true);.setViewportView(jTable1);klass=s.executeQuery («SELECT * FROM Марки_авто»);(klass.next())

{++;

}klass1=s.executeQuery («SELECT * FROM Марки_авто»);[] columnNames = {«Id_авто_характеристики», «Наименование», «Тех_характеристики», «Описание»};

String[][] data = new String[count] [1];.setModel (new javax.swing.table. DefaultTableModel (data, columnNames));(int i=0; i<count; i++)

{.next();.setValueAt (klass1.getString(1), i, 0);.setValueAt (klass1.getString(2), i, 1);.setValueAt (klass1.getString(3), i, 2);.setValueAt (klass1.getString(4), i, 3);

}.close();.close();

}(Exception ex)

{.out.println(ex);

}

}


/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JScrollPane();= new javax.swing.JTable();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();

(«Таблица \ «Марки автомобилей»);(new java.awt.event. WindowAdapter() {void windowActivated (java.awt.event. WindowEvent evt) {(evt);

}

});

.setModel (new javax.swing.table. DefaultTableModel (Object [][] {

{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}

},String [] {

«Title 1», «Title 2», «Title 3», «Title 4»

}

));.setViewportView(jTable1);

.setText («Выход»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Добавление»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Удаление»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Изменение»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jScrollPane1, javax.swing. GroupLayout.DEFAULT_SIZE, 740, Short.MAX_VALUE)(layout.createSequentialGroup()(jButton2)(18, 18, 18)(jButton3)(18, 18, 18)(jButton4, javax.swing. GroupLayout.PREFERRED_SIZE, 118, javax.swing. GroupLayout.PREFERRED_SIZE)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jButton1, javax.swing. GroupLayout.PREFERRED_SIZE, 89, javax.swing. GroupLayout.PREFERRED_SIZE)))())

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(jScrollPane1, javax.swing. GroupLayout.PREFERRED_SIZE, 191, javax.swing. GroupLayout.PREFERRED_SIZE)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton1)(jButton2)(jButton3)(jButton4))())

);();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {

.setVisible(false); // TODO add your handling code here:

}

void jButton2ActionPerformed (java.awt.event. ActionEvent evt) {Dob f3 = new Table1Dob();.setVisible(true);

}

void jButton4ActionPerformed (java.awt.event. ActionEvent evt) {

Izm f3 = new Table1Izm();.setVisible(true);

}

void jButton3ActionPerformed (java.awt.event. ActionEvent evt) {Del f3 = new Table1Del();.setVisible(true); // TODO add your handling code here:

}

void formWindowActivated (java.awt.event. WindowEvent evt) {();

}


/**

* @param args the command line arguments

*/static void main (String args[]) {

/* Set the Nimbus look and feel */

// <editor-fold defaultstate= «collapsed» desc=» Look and feel setting code (optional) «>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"justify">*/{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Table1.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Table1.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Table1.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Table1.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Table1 ().setVisible(true);

}

});

}int k = 0;static String search;

// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JButton jButton3;javax.swing.JButton jButton4;javax.swing.JScrollPane jScrollPane1;javax.swing.JTable jTable1;}



Приложение В


Исходный код формы «Добавление марки автомобиля»


import java.sql. Connection;java.sql. DriverManager;java.sql. PreparedStatement;java.sql. ResultSet;java.sql. Statement;java.util. Properties;javax.swing.JOptionPane;

/**

* Creates new form Table1Dob

*/Table1Dob() {();

}


/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JLabel();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JButton();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JButton();

.setText («jLabel3»);

(«Добавление»);

1.setText («Добавить данные в таблицу»);

jButton1.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Введите id характеристики»);

2.setText («Введите название автомобиля»);


jLabel4.setText («Введите техн. хар-ки автомобиля»);


jLabel5.setText («Введите описание автомобиля»);


jButton2.setText («Отмена»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(21, 21, 21)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.TRAILING)(layout.createSequentialGroup()(jLabel2)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jTextField2, javax.swing. GroupLayout.PREFERRED_SIZE, 142, javax.swing. GroupLayout.PREFERRED_SIZE))(layout.createSequentialGroup()(jLabel1)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jTextField1, javax.swing. GroupLayout.PREFERRED_SIZE, 142, javax.swing. GroupLayout.PREFERRED_SIZE))(layout.createSequentialGroup()(jLabel5)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jTextField4, javax.swing. GroupLayout.PREFERRED_SIZE, 142, javax.swing. GroupLayout.PREFERRED_SIZE))(layout.createSequentialGroup()(jLabel4)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, 36, Short.MAX_VALUE)(jTextField3, javax.swing. GroupLayout.PREFERRED_SIZE, 142, javax.swing. GroupLayout.PREFERRED_SIZE)))(27, 27, 27))(layout.createSequentialGroup()(51, 51, 51)(jButton1)(29, 29, 29)(jButton2)(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(20, 20, 20)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField1, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel1))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField2, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel2))(javax.swing. LayoutStyle. ComponentPlacement.UNRELATED)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField3, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel4))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField4, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel5))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton1)(jButton2))(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {id_txt = jTextField1.getText();id = Integer.parseInt (id_txt);name = jTextField2.getText();tech = jTextField3.getText();opis = jTextField4.getText();prov1 = id_txt.compareTo(«»);prov2 = name.compareTo(«»);prov3 = tech.compareTo(«»);prov4 = opis.compareTo(«»);(prov1!=0 && prov2!=0 && prov3!=0 && prov4!=0)

{(id, name, tech, opis);.showMessageDialog (null, «Данные были добавлены»);

}{JOptionPane.showMessageDialog (null, «Заполните все поля»);}


// TODO add your handling code here:

}

void jButton2ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}void Add (int id, String name, String tech, String opis)

{

{.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.prepareStatement («INSERT INTO Марки_авто (Id_авто_характеристики, Наименование, Тех_характеристики, Описание)\n» +

«VALUES (?,?,?,?);»);.setInt (1, id);.setString (2, name);.setString (3, tech);.setString (4, opis);.executeUpdate();.close();.close();

}(Exception ex)

{.out.println(ex);

}

}


/**

* @param args the command line arguments

*/static void main (String args[]) {

/* Set the Nimbus look and feel */

// <editor-fold defaultstate= «collapsed» desc=» Look and feel setting code (optional) «>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"justify">*/{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Table1Dob.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Table1Dob.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Table1Dob.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Table1Dob.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Table1Dob().setVisible(true);

}

});

}


// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JLabel jLabel1;javax.swing.JLabel jLabel2;javax.swing.JLabel jLabel3;javax.swing.JLabel jLabel4;javax.swing.JLabel jLabel5;javax.swing.JTextField jTextField1;javax.swing.JTextField jTextField2;javax.swing.JTextField jTextField3;javax.swing.JTextField jTextField4;

// End of variables declaration

Приложение Г


Исходный код формы «Удаление марки автомобиля»


import java.sql. Connection;java.sql. DriverManager;java.sql. PreparedStatement;java.sql. ResultSet;java.sql. Statement;java.util. Properties;javax.swing.JOptionPane;

* @author User

*/class Table1Del extends javax.swing.JFrame {Table1Del() {();();

}

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JButton();= new javax.swing.JLabel();= new javax.swing.JButton();= new javax.swing.JComboBox();

(«Удаление»);


jButton1.setText («Удалить данные из таблицы»);

jButton1.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Выберите наименование автомобиля»);

.setText («Отмена»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(21, 21, 21)(jButton1)(33, 33, 33)(jButton2)(0, 64, Short.MAX_VALUE))(layout.createSequentialGroup()()(jLabel1)(18, 18, 18)(jComboBox1, 0, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))())

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jLabel1)(jComboBox1, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton1)(jButton2))(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {name = (jComboBox1.getSelectedItem()).toString();(name);.showMessageDialog (null, «Данные были удалены»); // TODO add your handling code here:

}

void jButton2ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}void Del (String name)

{

{.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.prepareStatement («DELETE FROM Марки_авто WHERE (Наименование =?);»);.setString (1, name);.executeUpdate();.close();.close();

}(Exception ex)

{.out.println(ex);.showMessageDialog (null, «Не удалось подключиться к базе данных»);

}

}void Search()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();res = s.executeQuery («SELECT * FROM Марки_авто»);(res.next())

{++;

}res1=s.executeQuery («SELECT * FROM Марки_авто»);(int i=0; i<count; i++)

{.next();.addItem (res1.getString(2));.setSelectedIndex(i);

}.close();.close();

}(Exception ex)

{.out.println(ex);.showMessageDialog (null, «Не удалось подключиться к базе данных»);

}

}{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Table1Del.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Table1Del.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Table1Del.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Table1Del.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Table1Del().setVisible(true);

}

});

}


// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JComboBox jComboBox1;javax.swing.JLabel jLabel1;

// End of variables declaration

}



Приложение Д


Исходный код формы «Изменение марки автомобиля»


import java.sql.*;java.util.*;javax.swing.*;javax.swing.table.*;

/**

*

* @author User

*/class Table1Izm extends javax.swing.JFrame {


/**

* Creates new form Table1Izm

*/Table1Izm() {();();

}void Search()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();res = s.executeQuery («SELECT * FROM Марки_авто»);(res.next())

{++;

}res1=s.executeQuery («SELECT * FROM Марки_авто»);(int i=0; i<count; i++)

{.next();.addItem (res1.getString(2));.setSelectedIndex(i);

}.close();.close();

}(Exception ex)

{.out.println(ex);.showMessageDialog (null, «Не удалось подключиться к базе данных»);

}

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JButton();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JTextField();= new javax.swing.JComboBox();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JButton();

1.setText («Изменить данные в таблице»);

jButton1.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.setText («Выберите наименование автомобиля»);

.setText («Id автомобиля»);


jLabel3.setText («Наименование»);

4.setText («Технические характеристики»);


jLabel5.setText («Описание»);


jButton2.setText («Отмена»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jLabel1)(layout.createSequentialGroup()(15, 15, 15)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jLabel2)(jLabel4)(jLabel3)(jLabel5))))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jTextField3)(jTextField2)(jTextField1)(jComboBox1, 0, 140, Short.MAX_VALUE)(jTextField4))(44, 44, 44))(layout.createSequentialGroup()(37, 37, 37)(jButton1)(18, 18, 18)(jButton2)(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(javax.swing. GroupLayout. Alignment.TRAILING, layout.createSequentialGroup()(20, 20, 20)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jComboBox1, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel1))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField1, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel2))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField2, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel3))(javax.swing. LayoutStyle. ComponentPlacement.UNRELATED)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jTextField3, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel4))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jTextField4, javax.swing. GroupLayout.PREFERRED_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.PREFERRED_SIZE)(jLabel5))(18, 18, 18)(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.BASELINE)(jButton1)(jButton2))(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {

{id = Integer.parseInt (jTextField1.getText());name = jTextField2.getText();tech = jTextField3.getText();opis = jTextField4.getText();n1 = String.valueOf (jComboBox1.getSelectedItem());prov2 = name.compareTo(«»);prov3 = tech.compareTo(«»);prov4 = opis.compareTo(«»);(prov2!=0 && prov3!=0 && prov4!=0)

{.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.prepareStatement («UPDATE Марки_авто SET Id_авто_характеристики =?, Наименование =?, Тех_характеристики =?, Описание =?\n» +

«WHERE (((Наименование)=?));»);.setInt (1, id);.setString (2, name);.setString (3, tech);.setString (4, opis);.setString (5, n1);.executeUpdate();.close();.close();.showMessageDialog (null, «Данные были отредактированы»);

}{JOptionPane.showMessageDialog (null, «Поля не должны быть пустыми»);}

}(Exception ex)

{.out.println(ex);.showMessageDialog (null, «Не удалось подключиться к базе данных»);

}

// TODO add your handling code here:

}

void jButton2ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}


/**

* @param args the command line arguments

*/static void main (String args[]) {

/* Set the Nimbus look and feel */

// <editor-fold defaultstate= «collapsed» desc=» Look and feel setting code (optional) «>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"justify">*/{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Table1Izm.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Table1Izm.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Table1Izm.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Table1Izm.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Table1Izm().setVisible(true);

}

});

}


// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JComboBox jComboBox1;javax.swing.JLabel jLabel1;javax.swing.JLabel jLabel2;javax.swing.JLabel jLabel3;javax.swing.JLabel jLabel4;javax.swing.JLabel jLabel5;javax.swing.JTextField jTextField1;javax.swing.JTextField jTextField2;javax.swing.JTextField jTextField3;javax.swing.JTextField jTextField4;

// End of variables declaration

}



Приложение Ж


Исходный код формы «Информация о прокате»


import java.sql. Connection;java.sql. DriverManager;java.sql. ResultSet;java.sql. Statement;java.util. Properties;

class Zapros_prokat extends javax.swing.JFrame {


/**

* Creates new form Zapros_prokat

*/Zapros_prokat() {();();

}void Connection()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();= new javax.swing.JTable();.setAutoCreateRowSorter(true);.setViewportView(jTable1);klass=s.executeQuery («SELECT Марки_авто. Наименование, Клиенты.Ф.И.О._клиента, Прокат. Дата_выдачи, Прокат. Срок_проката, Прокат. Дата_возврата\n» +

«FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. Id_клиента = Прокат. Id_клиента) ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики;»);

while (klass.next())

{++;

}klass1=s.executeQuery («SELECT Марки_авто. Наименование, Клиенты.Ф.И.О._клиента, Прокат. Дата_выдачи, Прокат. Срок_проката, Прокат. Дата_возврата\n» +

«FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. Id_клиента = Прокат. Id_клиента) ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики;»);

String[] columnNames = {«Наименование автомобиля», «Ф.И.О. клиента», «Дата выдачи автомобиля», «Срок проката», «Дата возврата автомобиля»};

String[][] data = new String[count] [1];.setModel (new javax.swing.table. DefaultTableModel (data, columnNames));(int i=0; i<count; i++)

{.next();.setValueAt (klass1.getString(1), i, 0);.setValueAt (klass1.getString(2), i, 1);.setValueAt (klass1.getString(3), i, 2);.setValueAt (klass1.getString(4), i, 3);.setValueAt (klass1.getString(5), i, 4);

}.close();.close();

}(Exception ex)

{.out.println(ex);

}

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JScrollPane();= new javax.swing.JTable();= new javax.swing.JButton();

(«Запрос на просмотр информации о прокате»);


jTable1.setModel (new javax.swing.table. DefaultTableModel (Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},String [] {

«Title 1», «Title 2», «Title 3», «Title 4»

}

));.setViewportView(jTable1);

.setText («Выход»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jScrollPane1, javax.swing. GroupLayout.DEFAULT_SIZE, 491, Short.MAX_VALUE)(jButton1, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))())

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(jScrollPane1, javax.swing. GroupLayout.PREFERRED_SIZE, 154, javax.swing. GroupLayout.PREFERRED_SIZE)(javax.swing. LayoutStyle. ComponentPlacement.UNRELATED)(jButton1)(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}


/**

* @param args the command line arguments

*/static void main (String args[]) {

/* Set the Nimbus look and feel */

// <editor-fold defaultstate= «collapsed» desc=» Look and feel setting code (optional) «>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"justify">*/{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Zapros_prokat.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Zapros_prokat.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Zapros_prokat.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Zapros_prokat.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Zapros_prokat().setVisible(true);

}

});

}


// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JScrollPane jScrollPane1;javax.swing.JTable jTable1;

// End of variables declaration

}



Приложение И


Исходный код формы «Просмотр выполненных услуг»


import java.sql. Connection;java.sql. DriverManager;java.sql. ResultSet;java.sql. Statement;java.util. Properties;


/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/


/**

*

* @author User

*/class Zapros_prosm_avto extends javax.swing.JFrame {


/**

* Creates new form Zapros_prosm_avto

*/Zapros_prosm_avto() {();();

}void Connection()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();= new javax.swing.JTable();.setAutoCreateRowSorter(true);.setViewportView(jTable1);klass=s.executeQuery («SELECT Марки_авто. Наименование, Дополнительные_услуги. Наименование\n» +

«FROM Дополнительные_услуги INNER JOIN ((Марки_авто INNER JOIN Автомобили ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики) INNER JOIN Прокат ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Дополнительные_услуги. Id_услуги = Прокат. Id_услуги;»);(klass.next())

{++;

}klass1=s.executeQuery («SELECT Марки_авто. Наименование, Дополнительные_услуги. Наименование\n» +

«FROM Дополнительные_услуги INNER JOIN ((Марки_авто INNER JOIN Автомобили ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики) INNER JOIN Прокат ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Дополнительные_услуги. Id_услуги = Прокат. Id_услуги;»);

String[] columnNames = {«Наименование автомобиля», «Наименование услуги»};

String[][] data = new String[count] [1];

jTable1.setModel (new javax.swing.table. DefaultTableModel (data, columnNames));(int i=0; i<count; i++)

{.next();.setValueAt (klass1.getString(1), i, 0);.setValueAt (klass1.getString(2), i, 1);

}.close();.close();

}(Exception ex)

{.out.println(ex);

}

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JScrollPane();= new javax.swing.JTable();= new javax.swing.JButton();

(«Запрос на просмотр информации о услугах»);


jTable1.setModel (new javax.swing.table. DefaultTableModel (Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},String [] {

«Title 1», «Title 2», «Title 3», «Title 4»

}

));.setViewportView(jTable1);

.setText («Выход»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});


javax.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jScrollPane1, javax.swing. GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)(jButton1, javax.swing. GroupLayout. Alignment.TRAILING, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))())

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(jScrollPane1, javax.swing. GroupLayout.PREFERRED_SIZE, 132, javax.swing. GroupLayout.PREFERRED_SIZE)(18, 18, 18)(jButton1)(javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Zapros_prosm_avto.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Zapros_prosm_avto.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Zapros_prosm_avto.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Zapros_prosm_avto.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>

/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Zapros_prosm_avto().setVisible(true);

}

});

}


// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JScrollPane jScrollPane1;javax.swing.JTable jTable1;

// End of variables declaration

}



Приложение К


Исходный код формы «Просмотр цены за прокат»


import java.sql. Connection;java.sql. DriverManager;java.sql. ResultSet;java.sql. Statement;java.util. Properties;

class Zapr_cen extends javax.swing.JFrame {Zapr_cen() {();();

}void Connection()

{

{count = 0;.forName («sun.jdbc.odbc. JdbcOdbcDriver»);connInfo = new Properties();.put («user», «»);.put («password», «»);.put («charSet», «Cp1251»);conn = DriverManager.getConnection («jdbc:odbc:mydb», connInfo);s = conn.createStatement();= new javax.swing.JTable();.setAutoCreateRowSorter(true);.setViewportView(jTable1);klass=s.executeQuery («SELECT Клиенты.Ф.И.О._клиента, Марки_авто. Наименование, Марки_авто. Тех_характеристики, Автомобили. Цена_дня_проката, Прокат. Срок_проката, [Автомобили]! [Цена_дня_проката]*[Прокат]! [Срок_проката] AS Выражение1\n» +

«FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Дополнительные_услуги INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. Id_клиента = Прокат. Id_клиента) ON Дополнительные_услуги. Id_услуги = Прокат. Id_услуги) ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики;»);

while (klass.next())

{

count++;

}

ResultSet klass1=s.executeQuery («SELECT Клиенты.Ф.И.О._клиента, Марки_авто. Наименование, Марки_авто. Тех_характеристики, Автомобили. Цена_дня_проката, Прокат. Срок_проката, [Автомобили]! [Цена_дня_проката]*[Прокат]! [Срок_проката] AS Выражение1\n» +

«FROM Марки_авто INNER JOIN (Автомобили INNER JOIN (Дополнительные_услуги INNER JOIN (Клиенты INNER JOIN Прокат ON Клиенты. Id_клиента = Прокат. Id_клиента) ON Дополнительные_услуги. Id_услуги = Прокат. Id_услуги) ON Автомобили. Id_автомобиля = Прокат. Id_автомобиля) ON Марки_авто. Id_авто_характеристики = Автомобили. Id_авто_характеристики;»);

String[] columnNames = {«Ф.И.О. клиента», «Наименование автомобиля», «Технические характеристики», «Цена дня проката», «Срок проката», «Итого за прокат»};

String[][] data = new String[count] [1];.setModel (new javax.swing.table. DefaultTableModel (data, columnNames));(int i=0; i<count; i++)

{.next();.setValueAt (klass1.getString(1), i, 0);.setValueAt (klass1.getString(2), i, 1);.setValueAt (klass1.getString(3), i, 2);.setValueAt (klass1.getString(4), i, 3);.setValueAt (klass1.getString(5), i, 4);.setValueAt (klass1.getString(6), i, 5);

}.close();.close();

}(Exception ex)

{.out.println(ex);

}

}

@SuppressWarnings («unchecked»)

// <editor-fold defaultstate= «collapsed» desc= «Generated Code»>void initComponents() {

= new javax.swing.JScrollPane();= new javax.swing.JTable();= new javax.swing.JButton();

(«Запрос на просмотр информации о цене за все дни»);


jTable1.setModel (new javax.swing.table. DefaultTableModel (Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},String [] {

«Title 1», «Title 2», «Title 3», «Title 4»

}

));.setViewportView(jTable1);

.setText («Выход»);.addActionListener (new java.awt.event. ActionListener() {void actionPerformed (java.awt.event. ActionEvent evt) {ActionPerformed(evt);

}

});

.swing. GroupLayout layout = new javax.swing. GroupLayout (getContentPane());().setLayout(layout);.setHorizontalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()()(layout.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(jButton1, javax.swing. GroupLayout.DEFAULT_SIZE, javax.swing. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)(jScrollPane1, javax.swing. GroupLayout.DEFAULT_SIZE, 703, Short.MAX_VALUE))())

);.setVerticalGroup (.createParallelGroup (javax.swing. GroupLayout. Alignment.LEADING)(layout.createSequentialGroup()(jScrollPane1, javax.swing. GroupLayout.PREFERRED_SIZE, 161, javax.swing. GroupLayout.PREFERRED_SIZE)(javax.swing. LayoutStyle. ComponentPlacement.RELATED, 15, Short.MAX_VALUE)(jButton1)())

);

();

} // </editor-fold>

void jButton1ActionPerformed (java.awt.event. ActionEvent evt) {.setVisible(false); // TODO add your handling code here:

}static void main (String args[]) {{(javax.swing.UIManager. LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {(«Nimbus».equals (info.getName())) {.swing.UIManager.setLookAndFeel (info.getClassName());;

}

}

} catch (ClassNotFoundException ex) {.util.logging. Logger.getLogger (Zapr_cen.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging. Logger.getLogger (Zapr_cen.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging. Logger.getLogger (Zapr_cen.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

} catch (javax.swing. UnsupportedLookAndFeelException ex) {.util.logging. Logger.getLogger (Zapr_cen.class.getName()).log (java.util.logging. Level.SEVERE, null, ex);

}

// </editor-fold>


/* Create and display the form */.awt. EventQueue.invokeLater (new Runnable() {void run() {Zapr_cen().setVisible(true);

}

});

}

// Variables declaration - do not modifyjavax.swing.JButton jButton1;javax.swing.JScrollPane jScrollPane1;javax.swing.JTable jTable1;

// End of variables declaration

}


Расчетно-пояснительная записка к курсовой работе Разработка системы учета проката автомобилей

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ