русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лабораторная работа 8


Дата добавления: 2015-06-12; просмотров: 879; Нарушение авторских прав


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

 

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

Попробуем осмыслить задачу. Расчетный алгоритм пока не суть важен, необходимо научиться считывать данные из текстового файла. Записывать данные в файл мы уже умеем (см. лаб. работу 4). Считывание данных из текстового файла происходит по практически идентичному алгоритму. Его усложненный вариант уже использовался в работе 6 при считывании файла с использованием диалога JfileChooser. Попробуем упростить этот код:

 

try { BufferedReader in = new BufferedReader(new FileReader("infilename")); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); } catch (IOException e) { }

Вместо"infilename"необходимо указать путь к файлу. Проверку работы алгоритма сделать самостоятельно.

Представляется интересным следующий аспект. Если у нас будет выбор, откуда считывать входную информацию, то логично будет реализовать этот выбор при помощи переключателей. Однако еще более логичным будет в принципе не допустить некорректного действия пользователя: если выбран переключатель «Считывать из файла», то поле формы должно быть закрыто для ввода. Наоборот, если выбран переключатель «Форма», то поле должно допускать ввод. Текст программы для реализации этого алгоритма приведен ниже. Предполагается, что уже существует апплет или контейнер с именем f, на который мы добавляем контейнер Panel с именем jpl:

Panel jpl=new Panel ();

jpl.setSize(200,200);

jpl.setLayout(new BorderLayout());

Label lbl1 = new Label ("Choose your method");



 

jpl.add(lbl1, BorderLayout.NORTH);

 

CheckboxGroup g = new CheckboxGroup();

 

final Checkbox file = new Checkbox("From file", g, false);

 

final Checkbox form = new Checkbox("From Form", g, true);

 

jpl.add(file, BorderLayout.CENTER);

 

jpl.add(form, BorderLayout.SOUTH);

f.add(jpl, BorderLayout.NORTH);

 

Panel jpl1=new Panel ();

jpl1.setSize(200,200);

f.add(jpl1, BorderLayout.CENTER);

jpl1.setLayout(new BorderLayout());

 

jpl1.show();

 

final TextField txtar=new TextField ("Введите данные");

 

jpl1.add(txtar, BorderLayout.NORTH);

 

txtar.addActionListener(new ActionListener(){

public void actionPerformed (ActionEvent e)

{

System.exit(0);

}

});

 

 

jpl.show();

 

file.addItemListener(new ItemListener(){

 

 

public void itemStateChanged(ItemEvent arg0) {

if (file.getState())

txtar.setEditable(false);

 

}

});

 

form.addItemListener(new ItemListener(){

 

 

public void itemStateChanged(ItemEvent arg0) {

if (form.getState())

txtar.setEditable(true);

 

}

});

 

Проанализируем код. В первых трех строках описывается контейнер типа panel с именем jpl. Его размер задается равным 200x200. Размещение компонентов на нем задается шаблоном BorderLayout. Далее в четвертой и пятой строках добавляется надпись «Choose your method». В шестой строке мы добавляем набор переключателей CheckboxGroup с именем g. В эту группу входят два переключателя: file (с надписью «From file») и form (с надписью «From form»). В строке 12 добавляется еще один контейнер Panel с именем jpl1. На нем размещается текстовое поле ввода TextField txtar, в которе пользователь будет вводить некоторые данные. В конце программы описываются две подпрограммы обработки события изменения состояния переключателей. В случае изменения состояния любого из двух переключателей программа проверяет, не является ли он включенным. Если включен переключатель «From form», то поле становится активным. Если включен переключатель «From file», то поле становится неактивным для ввода. Самостоятельно разобраться с обработчиком события для текстового поля. Вид формы приведен на рис.9.

 

Рис.9. Форма с переключателем

Далее надо запустить программу. Для этого добавим на наш контейнер f еще одну панель с кнопкой btn1 (рис.10):

 

Panel jpl2=new Panel ();

jpl2.setSize(200,200);

f.add(jpl2, BorderLayout.SOUTH);

jpl2.setLayout(new BorderLayout());

 

jpl2.show();

Button btn1=new Button ("ПУСК");

jpl2.add(btn1, BorderLayout.NORTH);

Рис.10. Форма с кнопкой

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

(1)

Очевидно, что для расчета необходимо ввести значение N. Его-то мы и будем получать из полей формы, либо из текстового файла. Ниже приведен код для обработки события нажатия кнопки. Предполагается, что sum, iterac и str – глобальные переменные (поля класса):

btn1.addActionListener(new ActionListener(){

public void actionPerformed (ActionEvent e)

{

if (file.getState()){

try {

BufferedReader in = new BufferedReader(new FileReader("C:/1.txt"));

 

str = in.readLine();

 

in.close();

 

 

} catch (IOException e1) {

 

}}

 

if (form.getState())

str=txtar.getText();

iterac=Integer.parseInt(str);

 

for (int i=1;i<=iterac;i++){

sum=sum-1/(float)(i*i);

 

}

System.out.println(sum);

}

});

 

Таким образом, код класса целиком:

import java.applet.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.io.*;

import javax.swing.*;

 

public class pusk extends Applet {

 

String str;

int iterac;

float sum;

public void init() {

 

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}

catch(Exception e) {

}

 

 

final Frame f = new Frame("Demo Frame");

 

f.setSize(800, 800);

f.show();

f.setLayout(new BorderLayout());

MenuBar mbar = new MenuBar();

 

f.setMenuBar(mbar);

Panel jpl=new Panel ();

jpl.setSize(200,200);

jpl.setLayout(new BorderLayout());

Label lbl1 = new Label ("Choose your method");



 

jpl.add(lbl1, BorderLayout.NORTH);

 

 

CheckboxGroup g = new CheckboxGroup();

 

final Checkbox file = new Checkbox("From file", g, false);

 

final Checkbox form = new Checkbox("From Form", g, true);

 

jpl.add(file, BorderLayout.CENTER);

 

jpl.add(form, BorderLayout.SOUTH);

f.add(jpl, BorderLayout.NORTH);

 

Panel jpl1=new Panel ();

jpl1.setSize(200,200);

f.add(jpl1, BorderLayout.CENTER);

jpl1.setLayout(new BorderLayout());

 

jpl1.show();

 

final TextField txtar=new TextField ("12");

 

jpl1.add(txtar, BorderLayout.NORTH);

 

txtar.addActionListener(new ActionListener(){

public void actionPerformed (ActionEvent e)

{

System.exit(0);

 

 

}

});

 

 

jpl.show();

 

file.addItemListener(new ItemListener(){

 

 

public void itemStateChanged(ItemEvent arg0) {

if (file.getState())

txtar.setEditable(false);

 

}

});

 

form.addItemListener(new ItemListener(){

 

 

public void itemStateChanged(ItemEvent arg0) {

if (form.getState())

txtar.setEditable(true);

 

}

});

 

 

Panel jpl2=new Panel ();

jpl2.setSize(200,200);

f.add(jpl2, BorderLayout.SOUTH);

jpl2.setLayout(new BorderLayout());

 

jpl2.show();

Button btn1=new Button ("ПУСК");

jpl2.add(btn1, BorderLayout.NORTH);

 

btn1.addActionListener(new ActionListener(){

public void actionPerformed (ActionEvent e)

{

if (file.getState()){

try {

BufferedReader in = new BufferedReader(new FileReader("C:/1.txt"));

 

str = in.readLine();

 

in.close();

 

 

} catch (IOException e1) {

 

}}

 

if (form.getState())

str=txtar.getText();

iterac=Integer.parseInt(str);

 

for (int i=1;i<=iterac;i++){

sum=sum-1/(float)(i*i);

 

}

System.out.println(sum);

}

});

 

}

}

 

ЗАДАНИЕ: разработать приложение, реализующее некоторый расчетный алгоритм с обязательным использованием циклов в расчете. Хотя бы одно значение для расчета должно вводиться через форму либо считываться из текстового файла с возможностью выбора. Вывод рассчитанного значения должен быть произведен на НОВОЙ (созданной) форме, также рассчитанное значение должно быть сохранено в текстовый файл. Формула рассчитываемого алгоритма должны быть приведена на форме.


ЛИТЕРАТУРА

 

1. Арнольд К., Гослинг Дж. Язык программирования JAVA. – Питер: СПб, 1997. – 304 с.

2. В. Фесюнов. Конспект лекций по Java. Электронный учебник, 2000. – 242 с.

3. Картузов А.В. Программирование на языке Java. Электронный учебник. 1999 – 170 с.

4. Флэнаган Д. Java в примерах. Справочник. 2-е изд. - Символ-Плюс: СПБ, 2003. – 664 с.

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



<== предыдущая лекция | следующая лекция ==>
Построение графиков функций на основе визуального интерфейса апплетов Java | Общие сведения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.757 сек.