русс | укр

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

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

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

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


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

Лабораторная работа № 5.


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


 

Листинг 5.ab5.java - решение квадратного уравнения с чтением данных из файла ab5.text, c использованием меню и записью результата в файл Score.txt

-----------------------------------------------------------

//подключение пакетов, содержащих классы

import java.io.*; //для ввода-вывода данных

import java.awt.*; // для работы с графикой

import java.awt.event.*;//для обработки событий

// Объявляем класс ab5, являющий собой окошко Frame...

public class ab5 extends Frame

implements Serializable,WindowListener,ActionListener{

String Sa;

//count - количество считанных чисел из файла.

int count,i;

double a,b,c;

//Объявляем файловый диалог для открытия файла...

FileDialog opener;

//Массив символов, считанных из файла...

 

// Метод, читающий вещественные числа.

// Создает исключение, если не удалось прочитать число.

private static double readDouble(StreamTokenizer st) throws Exception

{

// читаем следующую лексему из файла

st.nextToken();

// если не удалось прочитать число - создаем исключение

if (st.ttype != st.TT_NUMBER)

throw new Exception();

// возвращаем прочитанное число

return st.nval;

}

 

public ab5(){

// Создаем окно с размещенными на нем элементами меню...

super("Quadratic. (c) 2006. Ivan Khramkov.");

// Устанавливает цвет фона для апплета

super.setBackground(new Color(120,181,202));

// Устанавливаем абсолютное позицирование компонентов внутри апплета

super.setLayout(null);

MenuBar mbar;

MenuItem exit,open,help;

mbar = new MenuBar();

super.setMenuBar(mbar);

// Устанавливаем размер и расположение окна

super.setSize(599,153);

super.setLocation(233,233);

// Создаем меню File с пунктами Open, Help, Quit

Menu file = new Menu("File");

open=new MenuItem("Open");



help=new MenuItem("Help");

exit=new MenuItem("Quit...");

// Открываем прослушиватель

open.addActionListener(this);

// Добавляем прослушиватель

exit.addActionListener(this);

// событий для

help.addActionListener(this);

// каждого пункта меню...

file.add(open);

file.add(help);

file.add("-");

file.add(exit);

mbar.add(file);

// Добавляем прослушиватель событий окна для нашего окна...

addWindowListener(this);

setVisible(true);

}

public static void main(String[] args)

{ab5 f=new ab5(); //Создаем объект-окно...

}

// Событие при попытке закрыть окно...

public void windowClosing(WindowEvent we){

dispose(); System.exit(0); }

// Метод для вывода графики в окне

public void paint(Graphics g){

// Установка цвета

g.setColor(new Color(120,181,202));

// Заполнение прямоугольника

g.fillRect(0,0,533,333);

// Установка черного цвета

g.setColor(Color.black);

// Вывод строки

g.drawString(Sa,9,53); }

//

public void actionPerformed(ActionEvent ae){

Graphics g=getGraphics();;

String str=(String)ae.getActionCommand();

if (str.equals("Open")){

//Если выбрали пункт меню "Open"...

i=0; opener=new FileDialog(this);

// Вызываем окно

opener.setVisible(true);

// для открытия файла...

String what;

if(opener.getFile()!=null)

{

what=opener.getDirectory()+

opener.getFile();

// Фиксируем путь и имя выбранного файла.../

try {data(what,0);}

catch (Exception re){

Sa="Your output Error is: "+re.getMessage();

System.out.println("Your input Error is: "+

re.getMessage());

}

what=opener.getDirectory()+"Score.txt";

try{data(what,1);}

catch (Exception re){

Sa="Your output Error is: "+re.getMessage();

System.out.println("Your output Error is: "+

re.getMessage());

}

}

}

else

if(str.equals("Help")){

//Если выбрали пункт меню "Help"...

g.setColor(new Color(120,181,202));

g.fillRect(0,0,533,333);

g.setColor(Color.black);

g.drawString("Click on OPEN menu item and choose file, where constants a,b,c should be.",33,53);

g.drawString("After that, you will see the solution of quadratic, you needed to solve.",33,73);

g.drawString("If you want to save results, you can open text file,",33,93);

g.drawString(" named Score.txt, situated in such directory as this program.",33,113);

}

else {dispose(); System.exit(0);}

}

// Функция data(String path,int mode) - служит для записи

// и чтения информации из определенных файлов...

// Здесь: path - путь и имя файла, mode - сущность работы.

//Принимает 2 значения:

// 0 - если нужно считать информацию...

// 1 - если записать информацию...

public void data(String path,int mode) throws Exception {

if (mode==0) {

try

{

// Открываем поток для чтения из файла

DataInputStream dis = new DataInputStream(new FileInputStream(path));

// инициализируем символьный поток

Reader r = new BufferedReader(new InputStreamReader(dis));

// создаем объект, разбирающий числа в открытом потоке

StreamTokenizer strt = new StreamTokenizer(r);

// указываем, что будем читать числа

strt.parseNumbers();

// считываем коэффициент A

a = readDouble(strt);

// считываем коэффициент B

b = readDouble(strt);

// считываем коэффициент C

c = readDouble(strt);

}

catch (Exception e)

{

// выдаем сообщение об ошибке

Sa="Your output Error is: "+e.getMessage();

System.out.println("Your output Error is: "+

e.getMessage());

}

}

else

{

// Объявление файловой переменной для записи в файл...

Writer outp=new FileWriter(path);

int j;

getVal(a,b,c);

try{

for(j=0;j<Sa.length();j++)

outp.write(Sa.charAt(j));

outp.write("\n");

outp.close();

}

catch(Exception e){

// выдаем сообщение об ошибке

Sa="Your output Error is: "+e.getMessage();

System.out.println("Your output Error is: "+

e.getMessage());

}

}

}

// Решение уравнения ax2+bx+c=0

// Ответ присваивается строковой переменной Sa, которая потом

// пишется в файл и выводится на отображение в окне...

public void getVal (double a,double b,double c){

double d, m, eps = 1e-8;

int i;

if(Math.abs(a) < eps)

if(Math.abs(b) < eps)

if(Math.abs(c) < eps)

Sa="any solution";

else

Sa="no solution";

else

Sa="x1 = x2 = " + (-c/b);

else

{if((d = b*b - 4*a*c) < 0)

{d=0.5*Math.sqrt(-d)/a;

a=-0.5*b/a;

Sa="x1 ="+a+" + i" +d+ ",x2="+a+"-i"+d;

}

else

{ d=0.5*Math.sqrt(d)/a;

a=-0.5*b/a;

Sa="x1 = "+(a+d)+", x2 = "+(a-d);

}

}

}

// Функции обработки событий окна...

public void windowOpened(WindowEvent we){}

public void windowClosed(WindowEvent we){}

public void windowActivated(WindowEvent we){}

public void windowIconified(WindowEvent we){}

public void windowDeactivated(WindowEvent we){}

public void windowDeiconified(WindowEvent we){}

}

 

 

При запуске программы ab5 появляется окошко с опцией File, в которой выбрав Open и выбрав имя заранее подготовленного файла с данными (например, ab5.data cо строкой 1 –5 6) получаем указанный выше результат.

 



<== предыдущая лекция | следующая лекция ==>
Лабораторная работа № 4. | Лабораторная работа № 6.


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


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

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

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


 


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

 
 

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

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