Главная Полезно Рефераты‹ Ссылки Статьи Контакты

Внимание!!!
Все материалы сайта защищены авторским правом, содержат на момент размещения не менее 60% оригинального текста. Материалы предназначены только для выполнения собственной студенческой работы. Любое воспрозведение или иное использование запрещено законом
Кроме того, просим терпимее относиться ко всем видам рекламы на сайте. Так как за счет её и существует наш проект. Спасибо за понимание и удачи вам в поиске нужной информации.

Апплет и работа с базой данных



Контрольная работа


1. Буферизованные потоки вывода

Операции ввода/вывода по сравнению с операциями в оперативной памяти выполняются очень медленно. Для компенсации в оперативной памяти выделяется некоторая промежуточная область — буфер, в которой постепенно накапливается информация. Когда буфер заполнен, его содержимое быстро переносится процессором, буфер очищается и снова заполняется информацией.
Житейский пример буфера — почтовый ящик, в котором накапливаются письма. Мы бросаем в него письмо и уходим по своим делам, не дожидаясь приезда почтовой машины. Почтовая машина периодически очищает почтовый ящик, перенося сразу большое число писем. Представьте себе город, в котором нет почтовых ящиков, и толпа людей с письмами в руках дожидается приезда почтовой машины.
Классы файлового ввода/вывода не занимаются буферизацией. Для этой цели есть четыре специальных класса BufferedXxx. Они присоединяются к потокам ввода/вывода как "переходное кольцо", например:

BufferedReader br = new BufferedReader(isr);

BufferedWriter bw = new BufferedWriter(fw);

Потоки isr и fw определены выше.

Программа следующего листинга читает текстовый файл, написанный в кодировке СР866, и записывает его содержимое в файл в кодировке KOI8_R. При чтении и записи применяется буферизация. Имя исходного файла задается в командной строке параметром args[0], имя копии — параметром argstl].

import java.io.*;

class DOStoUNIX{

public static void main(String[] args) throws IOException{

if (args.length != 2){

System.err.println("Usage: DOStoUNIX Cp866file KOI8_Rfile");

System.exit(0);

}

BufferedReader br = new BufferedReader(

new InputStreamReader(

new FileInputStream(args[0]), "Cp866"));

BufferedWriter bw = new BufferedWriter(

new OutputStreamWriter(

new FileOutputStreamtargs[1]), "KOI8_R"));




int с = 0;

while ((c = br.readO) != -1)

bw.write((char)c);

br.closeO; bw.close();

System.out.println("The job's finished.");

}

}

Для буферизованного вывода на верхнем уровне иерархии классов используется класс BufferedOutputStream. Вот два конструктора, предусмотренных в этом классе:

public BufferedOutputStream(
OutputStream out);
public BufferedOutputStream(
OutputStream out, int size);

Первый из них создает буферизованный выходной поток на базе потока класса OutputStream, а второй делает то же самое, но дополнительно позволяет указать размер буфера в байтах.
Если нужно создать выходной буферизованный поток для записи форматированных данных, создание потока выполняется в три приема:
- создается поток, связанный с файлом, как объект класса FileOutputStream;
- ссылка на этот поток передается конструктору класса BufferedOutputStream, в результате чего создается буферизованный поток, связанный с файлом;
- ссылка на буферизованный поток, созданный на предыдущем шаге, передается конструктору класса DataOutputStream, который и создает нужный поток
Вот фрагмент исходного текста программы, который создает выходной буферизованный поток для записи форматированных данных в файл с именем output.txt:

DataOutputStream OutStream;
OutStream = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("output.txt")));

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

DataInputStream InStream;
InStream = new DataInputStream(
new BufferedInputStream(
new FileInputStream("output.txt")));

Задать вопрос                                                      

2. Общее представление о классах-утилитах

Работа с массивами

В классе Arrays из пакета java.utii собрано множество методов для работы с массивами. Их можно разделить на четыре группы.
Восемнадцать статических методов сортируют массивы с разными типами числовых элементов в порядке возрастания чисел или просто объекты в их естественном порядке.
Восемь из них имеют простой вид

static void sort(type[] a)

где type может быть один из семи примитивных типов byte, short, int, long, char, float, double ИЛИ ТИП Object .
Восемь методов с теми же типами сортируют часть массива от индекса from включительно до индекса to исключительно:

static void sort(type[] a, int from, int to)

Оставшиеся два метода сортировки упорядочивают массив или его часть с элементами типа object по правилу, заданному объектом с, реализующим интерфейс Comparator :

static void sort(Object[] a, Comparator c)

static void sort(Object[] a, int from, int to, Comparator c)

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

static int binarySearch(type[] a, type element)

где type — один из тех же восьми типов. Девятый метод поиска имеет вид

static int binarySearch(Object[] a, Object element, Comparator c).

Он отыскивает элемент element в массиве, отсортированном в порядке, заданном объектом с .
Методы поиска возвращают индекс найденного элемента массива. Если элемент не найден, то возвращается отрицательное число, означающее индекс, с которым элемент был бы вставлен в массив в заданном порядке, с обратным знаком.
Восемнадцать статических методов заполняют массив или часть массива указанным значением value :

static void fill(type[], type value)

static void fill(type[], int from, int to, type value)

где type — один из восьми примитивных типов или тип object . Наконец, девять статических логических методов сравнивают массивы:


Задать вопрос                                                      

static boolean equals(type[] al, type[] a2)

где type — один из восьми примитивных типов или тип Object .

Массивы считаются равными, и возвращается true , если они имеют одинаковую длину и равны элементы массивов с одинаковыми индексами.

Применение методов класса Arrays

import java.utii.*;

class ArraysTest{

public static void main(String[] args){

int[] a = {34, -45, 12, 67, -24, 45, 36, -56};

Arrays.sort(a) ;

for (int i = 0; i < a.length; i++)

System.out.print (a[i]. + " ");

System.out.println();

Arrays.fill(a, Arrays.binarySearch(a, 12), a.length, 0);

for (int i = 6; i < a.length; i++)

System.out.print(a[i] + " ");

System.out.println();

}

}

Локальные установки

Некоторые данные — даты, время — традиционно представляются в разных местностях по-разному. Например, дата в России выводится в формате число, месяц, год через точку: 27.06.01. В США принята запись месяц/число/год через наклонную черту: 06/27/01.
Совокупность таких форматов для данной местности, как говорят на жаргоне "локаль", хранится в объекте класса Locale из пакета java.utii . Для создания такого объекта достаточно знать язык language и местность country. Иногда требуется третья характеристика — вариант variant , определяющая программный продукт, например, "WIN", "MAC", "POSIX".
По умолчанию местные установки определяются операционной системой и читаются из системных свойств.
user.language = ru // Язык — русский
user.region = RU // Местность — Россия


file.encoding = Cpl251 // Байтовая кодировка — CP1251

Строки определяют русскую локаль и локальную кодировку байтовых символов. Локаль, установленную по умолчанию на той машине, где выполняется программа, можно выяснить статическим методом Locale.getDefaultInfo .
Чтобы работать с другой локалью, ее надо прежде всего создать. Для этого в классе Locale есть два конструктора:

Locale(String language, String country)

Locale(String language, String country, String variant)

Параметр language — это строка из двух строчных букв, определенная стандартом ISO639, например, "ru", "fr", "en". Параметр country — строка из двух прописных букв, определенная стандартом ISO3166, например, "RU", "us", "ев" . Параметр variant не определяется стандартом, это может быть, например, строка " Traditional ".
Локаль часто указывают одной строкой "ru_RU", "en_GB", "en_us", "en_CA " и т. д.
После создания локали можно сделать ее локалью по умолчанию статическим методом:

Locale.setDefault(Locale newLocale);

Несколько статических методов класса Locale позволяют получить параметры локали по умолчанию, или локали, заданной параметром locale :

string getCountry — стандартный код страны из двух букв;

string getDisplayCountry() — страна записывается словом, обычно выводящимся на экран;

String getDisplayCountry (Locale locale) — то же для указанной локали.

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

Можно просмотреть список всех локалей, определенных для данной JVM, и их параметров, выводимый в стандартном виде:

Locale[] getAvailableLocales()

String[] getlSOCountries()

String[] getlSOLanguages()

Установленная локаль в дальнейшем используется при выводе данных в местном формате.

Работа с датами и временем

Методы работы с датами и показаниями времени собраны в два класса: Calendar и Date из пакета java.util.



Объект класса Date хранит число миллисекунд, прошедших с 1 января 1970 г. 00:00:00 по Гринвичу. Это "день рождения" UNIX, он называется " Epoch ".
Класс Date удобно использовать для отсчета промежутков времени в миллисекундах.
Получить текущее число миллисекунд, прошедших с момента Epoch на той машине, где выполняется программа, можно статическим методом
System.currentTimeMillis()
В классе Date два конструктора. Конструктор Date () заносит в создаваемый объект текущее время машины, на которой выполняется программа, по системным часам, а конструктор Date (long millisec) — указанное число.
Получить значение, хранящееся в объекте, можно методом long getTime (), установить новое значение — методом setTimedong newTime).
Три логических метода сравнивают отсчеты времени:

boolean after (long when) — возвращает true , если время when больше данного;

boolean before (long when) — возвращает true , если время when меньше данного;

boolean after (Object when) — возвращает true , если when — объект класca Date и времена совпадают.
Еще два метода, сравнивая отсчеты времени, возвращают отрицательное число типа int , если данное время меньше аргумента when; нуль, если времена совпадают; положительное число, если данное время больше аргумента when :

int compareTo(Date when);

int compareToObject when) — если when не относится к объектам класса Date , создается исключительная ситуация.

Преобразование миллисекунд, хранящихся в объектах класса Date , в текущее время и дату производится методами класса Calendar .

Получение случайных чисел

Получить случайное неотрицательное число, строго меньшее единицы, в виде типа double можно статическим методом random() из класса java.lang.Math.
При первом обращении к этому методу создается генератор псевдослучайных чисел, который используется потом при получении следующих случайных чисел.
Более серьезные действия со случайными числами можно организовать с помощью методов класса Random из пакета java.util . В классе два конструктора:

Random (long seed) — создает генератор псевдослучайных чисел, использующий для начала работы число seed; Random() —выбирает в качестве начального значения текущее время. ;
Создав генератор, можно получать случайные числа соответствующего типа методами nextBoolean(), nextDouble(), nextFloat()(, nextGaussian(), next into, nextLong(), nextint(int max) или записать сразу последовательность случайных чисел в заранее определенный массив байтов bytes методом nextBytes(byte[] bytes) .
Вещественные случайные числа равномерно располагаются в диапазоне от 0,0 включительно до 1,0 исключительно. Целые случайные числа равномерно распределяются по всему диапазону соответствующего типа за, одним исключением: если в аргументе указано целое число max , то диапазон случайных чисел будет от нуля включительно до max исключительно.


Копирование массивов

В классе System из пакета java.lang есть статический метод копирования массивов, который использует сама исполняющая система Java. Этот метод действует быстро и надежно, его удобно применять в программах. Синтаксис:

static void arraycopy(Object src, int src_ind, Object dest, int dest_ind, int count)

Из массива, на который указывает ссылка src , копируется count элементов, начиная с элемента с индексом src_ind , в массив, на который указывает ссылка dest , начиная с его элемента с индексом dest_ind.
Все индексы должны быть заданы так, чтобы элементы лежали в массивах, типы массивов должны быть совместимы, а примитивные типы обязаны полностью совпадать. Ссылки на массивы не должны быть равны null .
Ссылки src и dest могут совпадать, при этом для копирования создается промежуточный буфер. Метод можно использовать, например, для сдвига элементов в массиве. После выполнения

int[] arr = {5, 6, 1, 8, 9, 1, 2, 3, 4, 5, -3, -7};

System.arraycopy(arr, 2, arr, 1, arr.length — 2);

получим ( 5, 7, 8, 9, 1, 2, 3, 4, 5, -3, -7, -7} .

Взаимодействие с системой

Класс System позволяет осуществить и некоторое взаимодействие с системой во время выполнения программы (run time ). Но кроме него для этого есть специальный класс Runtime .
Класс Runtime содержит некоторые методы взаимодействия с JVM во время выполнения программы. Каждое приложение может получить только один экземпляр данного класса статическим методом getRuntime (}. Все вызовы этого метода возвращают ссылку на один и тот же объект.

Методы fгееMemory() и totalMemory() возвращают количество свободной и всей памяти, находящейся в распоряжении JVM для размещения объектов, в байтах, в виде числа типа long. He стоит твердо опираться на эти числа, поскольку количество памяти меняется динамически.
Метод exit(int status) запускает процесс останова JVM и передает операционной системе статус завершения status . По соглашению, ненулевой статус означает ненормальное завершение. Удобнее использовать аналогичный метод класса System , который является статическим.
Метод halt(int status ) осуществляет немедленный останов JVM. Он не завершает запущенные процессы нормально и должен использоваться только в аварийных ситуациях.
Метод loadLibrary(string libName) позволяет подгрузить динамическую библиотеку во время выполнения по ее имени libName .

Метод load (string fileName ) подгружает динамическую библиотеку по имени файла fileName , в котором она хранится.
Впрочем, вместо этих методов удобнее использовать статические методы класса System с теми же именами и аргументами.
Метод gc() запускает процесс освобождения ненужной оперативной памяти ( garbage collection) . Этот процесс периодически запускается самой виртуальной машиной Java и выполняется на фоне с небольшим приоритетом, но можно его запустить и из программы. Опять-таки удобнее использовать статический Метод System.gc () .
Наконец, несколько методов ехес () запускают в отдельных процессах исполнимые файлы. Аргументом этих методов служит командная строка исполнимого файла.
Например , Runtime.getRuntime ().exec ("notepad" ) запускает программу «Блокнот» на платформе MS Windows.
Методы exec () возвращают экземпляр класса Process , позволяющего управлять запущенным процессом. Методом destroy() можно остановить процесс, методом exitValue() получить его код завершения. метод waitFor() приостанавливает основной подпроцесс до тех пор, пока не закончится запущенный процесс. Три метода getInputStream(), getOutputStream() и getErrorStream()( возвращают входной, выходной поток и поток ошибок запущенного процесса.

GUI-приложение по учету покупок в магазине бытовой техники Описание программы и запуск

Данная программа представляет собой java-архив Smarket.jar и базу данных smarket.mdb.
Для запуска необходимо настроит источник данных ODBC с именем smarket, который ссылается на файл базы данных.
Программа может быть запущена, использовав файл smarket.cmd.

Пример работы программы:

Описание исходного кода:

Программа представляет собой два класса, JDBCAdapter и SuperMarket

Класс JDBCAdapter служит связующим звеном между базой данных и Swing-компонентом JTable. Он реализует абстрактный класс AbstractTableModel.
С его помощью можно добавлять, удалять и читать строки данных.

Класс SuperMarket представляет собой Swing GUI приложение. При запуске создается новая форма SuperMarket, производится инициализация компонентов и подключение базы данных.

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




Апплет, реализующий фейерверк

Описание программы и запуск

Данная программа представляет собой java-апплет.
Этот апплет может быть как помещен в HTML-страницу, так и запущен отдельным процессом при помощи входящего в состав Java Runtime Environment средства appletviewer.

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

Для запуска программы существует несколько способов.

  • Открыть в браузере файл Fireworks.html
  • Запустить run.cmd

 

Пример работы программы:

Описание исходного кода:

Программа представляет собой три класса:
Fireworks, который наследует от класса Applet.
Bullet, который описывает элемент ракеты
Rocket, который описывает собой ракету.

Класс Fireworks является главным классом. Его методы вызываются при старте апплета.
Эти методы следующие:

  • init – метод вызывается при инициализации апплета. В этом методе происходит добавление разнообразных элементов на апплет.
  • mouseDown – при нажатии мышью на апплет
  • paint – при отрисовке апплета
  • run – этот метод вызывается в отдельном потоке и управляет анимацией
  • start – при запуске апплета
  • stop – при остановке
  • update – при обновлении окна апплета

Анимация происходит в методе run. В цикле происходит определение новых координат ракет и следов и перерисовка их в окне апплета.

Внимание! Для данной работы приложения платные. С их описанием и стоимостью можно ознакомиться здесь

Описание приложений!


Скачать контрольную




Если у вас появилось непреодолимое желание пожертвовать средства на развитие сайта или отблагодарить владельца за бесценный материал :), можете перевести любую сумму на кошелек R200818721914 или Z890150328460.

Яндекс.Метрика
© studlight 2011-2014