Тестирование программного обеспечения
Итак, давайте протестируем ПО. Как известно программа работает на любой ОС, для которой установлена Java SE Runtime Environment.Среда выполнения сейчас разработана для 4-х основных ОС, а именно - Linux x64, Linux x86, Mac OS X, Solaris x64, а также Windows x86 и Windows x64.
Я буду тестировать на Windows x64, а также мы посмотрим как программа отработает на Linux x64. Скриншоты будут прилагаться.
1) Запускаем консоль
2) Прописываем команду cd и адрес где находиться программа
3) Прописываем команду java –jar и имя файла
Рис. 7.1 – запуск java приложения
4) Вводим в соответствующие поля :
4.1) Вводим правильно все значения, -1 степень пока не вводим. Проверяем конечный результат в программе MathCad.
Рис 7.2 – нормальное тестирование без -1-ой степени
4.1) Вводим правильно все значения, Сумма степеней «y» ровна -1 (-13+12 = -1). Проверяем конечный результат в программе MathCad.
Рис. 7.3 – значение степени «у» ровно -1
4.2) Вводим правильно все значения, Сумма степеней «x» и сумма степеней «y» ровна -1 Проверяем конечный результат в программе MathCad.
Рис 7.4 – значение степени х и у ровно -1
4.2) Вводим правильно все значения, Сумма степеней «x» ровна -1 Проверяем конечный результат в программе MathCad.
Рис.7.4 – значение степени «х» ровно -1
4.3) Вводим ОЧЕНЬ БОЛЬШУЮ СТЕПЕНЬ «х»
Рис. 7.5 – очень большая степень «х»
4.3) Вводим буквы вместо степени «х»
Рис. 7.6 – ввод букв
4.4) Пробуем запустить программу на Linux:
Рис. 7.7 – запуск на линукс
Как видно все работает, только шрифт немного не соответствует тому что в Windows…
Тестирование показало, что ПО корректно работает с реализованным алгоритмом. Реализация ПО включает ввод и контроль данных с экранной формы, что значительно улучшает устойчивость программы к сбоям.
Тестирование всех возможных реакций программы на входные данные показало, что разработанное ПО соответствует требованиям постановке задачи.
ЛИСТИНГ ИСХОДНОГО КОДА
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
public classIntegralFrame extendsJFrame {
privateString[] itemsmonom= {
"1-й моном",
"2-й моном",
"3-й моном",
"4-й моном",
"5-й моном",
"6-й моном",
"7-й моном",
"8-й моном",
"9-й моном",
"10-й моном",
"11-й моном",
"12-й моном",
"13-й моном",
"14-й моном",
"15-й моном",
"16-й моном",
"17-й моном",
"18-й моном",
"19-й моном",
"20-й моном"
};
privateString[] itemspolinom= {"Редактирование полинома φᵢ", "Редактирование полинома φᵤ"};
JButton btnOk= newJButton("OK");//создание кнопки
JButton btnResult= newJButton("INTEGRATE");//создание кнопки
privateJTextField textFieldCONST, textFieldpwrX, textFieldpwrY, textFieldpwrZ,
textFieldA, textFieldB, textFieldC, textFieldD, textFieldZ;
privateJLabel integral, LabelCONST, LabelA, LabelB, LabelC, LabelD, LabelZ, LabelpwrX, LabelpwrY, LabelpwrZ;
privateJComboBox monomBox= newJComboBox(itemsmonom);//создание выпадающего списка
privateJComboBox polinomBox= newJComboBox(itemspolinom);//создание выпадающего списка
privateString[] r= {"₁", "₂", "₃", "₄", "₅", "₆", "₇", "₈", "₉", "₁₀", "₁₁", "₁₂", "₁₃", "₁₄", "₁₅", "₁₆", "₁₇", "₁₈", "₁₉", "₂₀"};
privateString[] FunctioNiu= {"φᵢ: ", "φᵤ: "};
private int i= 0, u= 0;//счетчики массивов констант и степеней
private double[][] CONST= {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
private int[][] POWx= {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
POWy= {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
POWz= {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
private double A= 0;
private double B= 0;
private double C= 0;
private double D= 0;
private double Z= 0;
publicIntegralFrame() {
super("Нахождение двойного интеграла - КП Васевич Н.Р.");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300, 300, 800, 210);//координаты расположения и размер окна
getContentPane().setLayout(null);
intX = 140, deltaX = 110,
Y = 130;
btnResult.setBounds(X + 4 * deltaX + 70, Y - 1, 120, 23);//координаты расположения и размер кнопки btnOk
btnOk.setBounds(X + 4 * deltaX - 25, Y - 1, 89, 23);//координаты расположения и размер кнопки btnOk
integral= newJLabel("∫∫φᵢ·(φᵤ)'ₓ dx dy");
integral.setBounds(10, 15, 315, 30);
LabelA= newJLabel("a = ");
LabelA.setBounds(X - 30, Y - 40, 120, 18);
LabelB= newJLabel("b = ");
LabelB.setBounds(X - 30 + deltaX - 10, Y - 40, 120, 18);
LabelC= newJLabel("c = ");
LabelC.setBounds(X - 30 + 2 * deltaX - 10, Y - 40, 120, 18);
LabelD= newJLabel("d = ");
LabelD.setBounds(X - 30 + 3 * deltaX - 10, Y - 40, 120, 18);
LabelZ= newJLabel("z = ");
LabelZ.setBounds(X - 30 + 4 * deltaX - 10, Y - 40, 120, 18);
LabelCONST= newJLabel(FunctioNiu[u] + " С"+ r[i] + " =");
LabelCONST.setBounds(X - 100, Y, 120, 18);
LabelpwrX= newJLabel("X"+ r[i] + "^ ");
LabelpwrX.setBounds(X + deltaX - 48, Y, 100, 18);
LabelpwrY= newJLabel("Y"+ r[i] + "^ ");
LabelpwrY.setBounds(X + 2 * deltaX - 48, Y, 100, 18);
LabelpwrZ= newJLabel("Z"+ r[i] + "^ ");
LabelpwrZ.setBounds(X + 3 * deltaX - 48, Y, 100, 18);
textFieldCONST= newJTextField();//создание элемента для редактирования текста
textFieldCONST.setBounds(X + 0 * deltaX, Y, 50, 20);//положение Х,У и размер элемента
textFieldA= newJTextField();//создание элемента для редактирования текста
textFieldA.setBounds(X + 0 * deltaX, Y - 40, 50, 20);//положение Х,У и размер элемента
textFieldB= newJTextField();//создание элемента для редактирования текста
textFieldB.setBounds(X + 1 * deltaX - 10, Y - 40, 50, 20);//положение Х,У и размер элемента
textFieldC= newJTextField();//создание элемента для редактирования текста
textFieldC.setBounds(X + 2 * deltaX - 10, Y - 40, 50, 20);//положение Х,У и размер элемента
textFieldD= newJTextField();//создание элемента для редактирования текста
textFieldD.setBounds(X + 3 * deltaX - 10, Y - 40, 50, 20);//положение Х,У и размер элемента
textFieldZ= newJTextField();//создание элемента для редактирования текста
textFieldZ.setBounds(X + 4 * deltaX - 10, Y - 40, 50, 20);//положение Х,У и размер элемента
textFieldpwrX= newJTextField();//создание элемента для редактирования текста
textFieldpwrX.setBounds(X + deltaX - 10, Y, 50, 20);//положение Х,У и размер элемента
textFieldpwrY= newJTextField();//создание элемента для редактирования текста
textFieldpwrY.setBounds(X + 2 * deltaX - 10, Y, 50, 20);//положение Х,У и размер элемента
textFieldpwrZ= newJTextField();//создание элемента для редактирования текста
textFieldpwrZ.setBounds(X + 3 * deltaX - 10, Y, 50, 20);//положение Х,У и размер элемента
polinomBox.setAlignmentX(LEFT_ALIGNMENT);
polinomBox.setBounds(200, 20, 250, 24);//положение Х,У и размер элемента
monomBox.setAlignmentX(LEFT_ALIGNMENT);
monomBox.setBounds(450, 20, 110, 24);//положение Х,У и размер элемента
Font font = newFont("Cambria Math", Font.PLAIN, 16);//установка стиля текста
Font font1 = newFont("Cambria Math", Font.PLAIN, 22);//установка стиля текста
btnResult.setFont(font);//присвоение стиля
btnOk.setFont(font);//присвоение стиля
integral.setFont(font1);//присвоение стиля
LabelA.setFont(font);//присвоение стиля
LabelB.setFont(font);//присвоение стиля
LabelC.setFont(font);//присвоение стиля
LabelCONST.setFont(font);//присвоение стиля
LabelD.setFont(font);//присвоение стиля
LabelZ.setFont(font);//присвоение стиля
LabelpwrX.setFont(font);//присвоение стиля
LabelpwrY.setFont(font);//присвоение стиля
LabelpwrZ.setFont(font);//присвоение стиля
polinomBox.setFont(font);
monomBox.setFont(font);//присвоение стиля
textFieldA.setFont(font);//присвоение стиля
textFieldB.setFont(font);//присвоение стиля
textFieldC.setFont(font);//присвоение стиля
textFieldCONST.setFont(font);//присвоение стиля
textFieldD.setFont(font);//присвоение стиля
textFieldZ.setFont(font);//присвоение стиля
textFieldpwrX.setFont(font);//присвоение стиля
textFieldpwrY.setFont(font);//присвоение стиля
textFieldpwrZ.setFont(font);//присвоение стиля
getContentPane().add(btnOk);//добавление в активное окно
getContentPane().add(integral);//добавление в активное окно
getContentPane().add(LabelCONST);//добавление в активное окно
getContentPane().add(LabelA);//добавление в активное окно
getContentPane().add(LabelB);//добавление в активное окно
getContentPane().add(LabelC);//добавление в активное окно
getContentPane().add(LabelD);//добавление в активное окно
getContentPane().add(LabelZ);//добавление в активное окно
getContentPane().add(LabelpwrX);//добавление в активное окно
getContentPane().add(LabelpwrY);//добавление в активное окно
getContentPane().add(LabelpwrZ);//добавление в активное окно
getContentPane().add(textFieldA);//добавление в активное окно
getContentPane().add(textFieldB);//добавление в активное окно
getContentPane().add(textFieldC);//добавление в активное окно
getContentPane().add(textFieldCONST);//добавление в активное окно
getContentPane().add(textFieldD);//добавление в активное окно
getContentPane().add(textFieldZ);//добавление в активное окно
getContentPane().add(textFieldpwrX);//добавление в активное окно
getContentPane().add(textFieldpwrY);//добавление в активное окно
getContentPane().add(textFieldpwrZ);//добавление в активное окно
getContentPane().add(polinomBox);//добавление в активное окно
getContentPane().add(monomBox);//добавление в активное окно
getContentPane().add(btnResult);
textFieldCONST.setText(Double.toString(CONST[u][i]));
textFieldA.setText(Double.toString(A));
textFieldB.setText(Double.toString(B));
textFieldC.setText(Double.toString(C));
textFieldD.setText(Double.toString(D));
textFieldZ.setText(Double.toString(Z));
textFieldpwrX.setText(Integer.toString(POWx[u][i]));
textFieldpwrY.setText(Integer.toString(POWy[u][i]));
textFieldpwrZ.setText(Integer.toString(POWz[u][i]));
classbtnResultEventListener implementsActionListener {
public voidactionPerformed(ActionEvent e) {
javax.swing.SwingUtilities.invokeLater(newRunnable() {
public voidrun() {
JFrame.setDefaultLookAndFeelDecorated(false);
AnalyticalCalculation CalculationFrame = newAnalyticalCalculation();
CalculationFrame.create();
}
}
);
}
}
btnResult.addActionListener(newbtnResultEventListener());
classmonomBoxActionListener implementsActionListener {
public voidactionPerformed(ActionEvent e) {
JComboBox box = (JComboBox) e.getSource();
//getSource() возвращает ссылку на объект, от которого пришло событие пруф
i= box.getSelectedIndex();
LabelCONST.setText(FunctioNiu[u] + " С"+ r[i] + " = ");
LabelpwrX.setText("X"+ r[i] + " ^ ");
LabelpwrY.setText("Y"+ r[i] + " ^ ");
LabelpwrZ.setText("Z"+ r[i] + " ^ ");
textFieldCONST.setText(Double.toString(CONST[u][i]));
textFieldA.setText(Double.toString(A));
textFieldB.setText(Double.toString(B));
textFieldC.setText(Double.toString(C));
textFieldD.setText(Double.toString(D));
textFieldZ.setText(Double.toString(Z));
textFieldpwrX.setText(Integer.toString(POWx[u][i]));
textFieldpwrY.setText(Integer.toString(POWy[u][i]));
textFieldpwrZ.setText(Integer.toString(POWz[u][i]));
}
}
monomBox.addActionListener(newmonomBoxActionListener());
classpolinomBoxActionListener implementsActionListener {
public voidactionPerformed(ActionEvent e) {
JComboBox box = (JComboBox) e.getSource();
//getSource() возвращает ссылку на объект, от которого пришло событие пруф
u= box.getSelectedIndex();
LabelCONST.setText(FunctioNiu[u] + " С"+ r[i] + " = ");
LabelpwrX.setText("X"+ r[i] + " ^ ");
LabelpwrY.setText("Y"+ r[i] + " ^ ");
LabelpwrZ.setText("Z"+ r[i] + " ^ ");
textFieldCONST.setText(Double.toString(CONST[u][i]));
textFieldA.setText(Double.toString(A));
textFieldB.setText(Double.toString(B));
textFieldC.setText(Double.toString(C));
textFieldD.setText(Double.toString(D));
textFieldZ.setText(Double.toString(Z));
textFieldpwrX.setText(Integer.toString(POWx[u][i]));
textFieldpwrY.setText(Integer.toString(POWy[u][i]));
textFieldpwrZ.setText(Integer.toString(POWz[u][i]));
}
}
polinomBox.addActionListener(newpolinomBoxActionListener());
classbtnOkActionListener implementsActionListener {
public voidactionPerformed(ActionEvent e) {
String valueAssignment = "Числа вводятся БЕЗ БУКВ и БЕЗ СИМВОЛОВ"+ System.lineSeparator()
+ "Для записи дробной части используется ТОЧКА"+ System.lineSeparator()
+ "Показатели степеней для x,y,z ― только ЦЕЛЫЕ ЧИСЛА"+ System.lineSeparator()
+ "В полях все значения должны быть ЗАПОЛНЕНЫ"+ System.lineSeparator()
+ "Если значения нет, то введите в поле 0";
try{
CONST[u][i] = Double.parseDouble(textFieldCONST.getText());
POWx[u][i] = Integer.parseInt(textFieldpwrX.getText());
POWy[u][i] = Integer.parseInt(textFieldpwrY.getText());
POWz[u][i] = Integer.parseInt(textFieldpwrZ.getText());
A= Double.parseDouble(textFieldA.getText());
B= Double.parseDouble(textFieldB.getText());
C= Double.parseDouble(textFieldC.getText());
D= Double.parseDouble(textFieldD.getText());
Z= Double.parseDouble(textFieldZ.getText());
javax.swing.SwingUtilities.invokeLater(newRunnable() {
public voidrun() {
JFrame.setDefaultLookAndFeelDecorated(true);
}
});
}
catch(IllegalArgumentException o) {
JOptionPane.showMessageDialog(null, valueAssignment, "Ошибка введеных Вами данных...", JOptionPane.PLAIN_MESSAGE);
}
}
}
btnOk.addActionListener(newbtnOkActionListener());//добавление события
}
classAnalyticalCalculation extendsJFrame {
privateString TEXT= "";
privateString ABCDmessageEROR= "Неверные пределы интегрирования."+ System.lineSeparator() +"Введите данные, при которых выполняется условия: B>A и D>C";
private double result= 0;
public voidcreate() {
setBounds(200, 200, 800, 500);
getContentPane().setLayout(newBorderLayout());
if((B<= A) || (D<= C)) {
JOptionPane.showMessageDialog(null, ABCDmessageEROR, "Ошибка введеных Вами данных...", JOptionPane.PLAIN_MESSAGE);
} else{
TEXT= "∫∫φᵢ·(φᵤ)'ₓ dx dy = ";
for(inti = 0; i < 20; i++) {
if((POWx[0][i] + POWx[1][i] != 0)&&(POWy[0][i] + POWy[1][i] != -1)) {
if((CONST[0][i] != 0) && (CONST[1][i] != 0) && (POWx[1][i] != 0) && (Z!= 0)) {
if((i > 0) && (i < 20)) {TEXT= TEXT+ System.lineSeparator() + " + ";}
TEXT= TEXT
+ Double.toString(CONST[0][i]) + "·"
+ Double.toString(CONST[1][i]) + "·"
+ Integer.toString(POWx[1][i]) + "·"
+ Double.toString(Z)
+ MathText.pwr(Integer.toString(POWz[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWz[1][i])) + "·"
+ "("+ "a"+ MathText.pwr(Integer.toString(POWy[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWy[1][i])) + MathText.pwr("+"+ "1")
+ " ― "+ "b"+ MathText.pwr(Integer.toString(POWy[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWy[1][i])) + MathText.pwr("+"+ "1") + ")"
+ "·"+ "("+ "c"+ MathText.pwr(Integer.toString(POWx[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWx[1][i]))
+ " ― "+ "d"+ MathText.pwr(Integer.toString(POWx[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWx[1][i])) + ")"
+ "("+ Integer.toString(POWx[0][i]) + " + "+ POWx[1][i] + ")"+ MathText.pwr("-1")
+ "("+ Integer.toString(POWy[0][i]) + " + "+ POWy[1][i] + " + "+ "1"+ ")"+ MathText.pwr("-1");
result= result+ CONST[0][i]*CONST[1][i]*POWx[1][i]*Math.pow(Z,POWz[0][i]+POWz[1][i])
*(Math.pow(A, POWy[0][i]+POWy[1][i]+1) - Math.pow(B, POWy[0][i]+POWy[1][i]+1))
*(Math.pow(C, POWx[0][i]+POWx[1][i]) - Math.pow(D, POWx[0][i]+POWx[1][i]))
*Math.pow(POWx[0][i] + POWx[1][i],-1)
*Math.pow(POWy[0][i] + POWy[1][i] + 1,-1);
}
}
if((POWx[0][i] + POWx[1][i] == 0)&&(POWy[0][i] + POWy[1][i] != -1)) {
if((CONST[0][i] != 0) && (CONST[1][i] != 0) && (POWx[1][i] != 0) && (Z!= 0)) {
if((i > 0) && (i < 20)) {TEXT= TEXT+ System.lineSeparator() + " + ";}
TEXT= TEXT
+ Double.toString(CONST[0][i]) + "·"
+ Double.toString(CONST[1][i]) + "·"
+ Integer.toString(POWx[1][i]) + "·"
+ Double.toString(Z)
+ MathText.pwr(Integer.toString(POWz[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWz[1][i])) + "·"
+ "("+ "a"+ MathText.pwr(Integer.toString(POWy[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWy[1][i])) + MathText.pwr("+"+ "1")
+ " ― "+ "b"+ MathText.pwr(Integer.toString(POWy[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWy[1][i])) + MathText.pwr("+"+ "1") + ")"
+ "·"+ "(ln(c)―ln(d))"
+ "("+ Integer.toString(POWy[0][i]) + " + "+ POWy[1][i] + " + "+ "1"+ ")"+ MathText.pwr("-1");
result= result+ CONST[0][i]*CONST[1][i]*POWx[1][i]*Math.pow(Z,POWz[0][i]+POWz[1][i])
*(Math.pow(A, POWy[0][i]+POWy[1][i]+1) - Math.pow(B, POWy[0][i]+POWy[1][i]+1))
*(Math.log(C) - Math.log(D))
*Math.pow(POWy[0][i] + POWy[1][i] + 1,-1);
}
}
if((POWx[0][i] + POWx[1][i] != 0)&&(POWy[0][i] + POWy[1][i] == -1)){
if((CONST[0][i] != 0) && (CONST[1][i] != 0) && (POWx[1][i] != 0) && (Z!= 0)) {
if((i > 0) && (i < 20)) {TEXT= TEXT+ System.lineSeparator() + " + ";}
TEXT= TEXT
+ Double.toString(CONST[0][i]) + "·"
+ Double.toString(CONST[1][i]) + "·"
+ Integer.toString(POWx[1][i]) + "·"
+ Double.toString(Z)
+ MathText.pwr(Integer.toString(POWz[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWz[1][i])) + "·"
+ "(ln(a)―ln(b))"
+ "·"+ "("+ "c"+ MathText.pwr(Integer.toString(POWx[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWx[1][i]))
+ " ― "+ "d"+ MathText.pwr(Integer.toString(POWx[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWx[1][i])) + ")"
+ "("+ Integer.toString(POWx[0][i]) + " + "+ POWx[1][i] + ")"+ MathText.pwr("-1");
result= result+ CONST[0][i]*CONST[1][i]*POWx[1][i]*Math.pow(Z,POWz[0][i]+POWz[1][i])
*(Math.log(A) - Math.log(B))
*(Math.pow(C, POWx[0][i]+POWx[1][i]) - Math.pow(D, POWx[0][i]+POWx[1][i]))
*Math.pow(POWx[0][i] + POWx[1][i],-1);
}
}
if((POWx[0][i] + POWx[1][i] == 0)&&(POWy[0][i] + POWy[1][i] == -1)){
if((CONST[0][i] != 0) && (CONST[1][i] != 0) && (POWx[1][i] != 0) && (Z!= 0)) {
if((i > 0) && (i < 20)) {TEXT= TEXT+ System.lineSeparator() + " + ";}
TEXT= TEXT
+ Double.toString(CONST[0][i]) + "·"
+ Double.toString(CONST[1][i]) + "·"
+ Integer.toString(POWx[1][i]) + "·"
+ Double.toString(Z)
+ MathText.pwr(Integer.toString(POWz[0][i])) + MathText.pwr("+") + MathText.pwr(Integer.toString(POWz[1][i])) + "·"
+ "(ln(a)―ln(b))"
+ "(ln(c)―ln(d))";
result= result+ CONST[0][i]*CONST[1][i]*POWx[1][i]*Math.pow(Z,POWz[0][i]+POWz[1][i])
*(Math.log(A) - Math.log(B))
*(Math.log(C) - Math.log(D));
}
}
}
TEXT= TEXT+ " = "+ Double.toString(result);
JTextArea IngtegralTextArea = newJTextArea();
IngtegralTextArea.setBounds(10, 60, 762, 500);
IngtegralTextArea.setText(TEXT);
IngtegralTextArea.setEditable(true);
IngtegralTextArea.setLineWrap(true);
Font font2 = newFont("Cambria Math", Font.PLAIN, 22);//установка стиля текста
IngtegralTextArea.setFont(font2);
finalJScrollPane IntegralScrollPane = newJScrollPane(IngtegralTextArea);
getContentPane().add(IntegralScrollPane);
IntegralScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setVisible(true);
}
}
}
}
staticString pwr(String s){
String[] power = {"⁰","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","⁺"," ","⁻","⁽","⁾"};
String str = "";
booleanminus = false;
for(charc : s.toLowerCase().toCharArray()){
if(c == '0'){str = str + power[0];}
if(c == '1'){str = str + power[1];}
if(c == '2'){str = str + power[2];}
if(c == '3'){str = str + power[3];}
if(c == '4'){str = str + power[4];}
if(c == '5'){str = str + power[5];}
if(c == '6'){str = str + power[6];}
if(c == '7'){str = str + power[7];}
if(c == '8'){str = str + power[8];}
if(c == '9'){str = str + power[9];}
if(c == '+'){str = str + power[10];}
if(c == ' '){str = str + power[11];}
if(c == '-'){str = str + "⁽"+ power[12];
if(c == '('){str = str + power[13];}
if(c == ')'){str = str + power[14];}
minus = true;}
}
if(minus == true) {str = str + "⁾";}
returnstr;
}
} public classMain {
public static voidmain(String[] args) {
IntegralFrame frame = newIntegralFrame();
frame.setVisible(true);
}
}
ВЫВОДЫ
Была проделана работа по созданию ПО расчета двойного интеграла. Интеграл рассчитывается по общей формуле исходя из формул интеграла для степенной функции. Другие методы не рассматривались, так как данный вариант расчета дает точный результат.
В качестве языка и среды работы ПО, была выбрана Java. Она обеспечивает мультиплатформенность, скорость работы, открытость кода для редактирования и доработки под разные нужды.
Как уже упоминалось выше программа состоит из трех классов:
IntegralFrame, MathText, и Main.
А также подклассов суперкласса IntegralFrame:
btnResultEventListener, monomBoxActionListener,
polinomBoxActionListener, btnOkActionListener,
и самый большой – AnalyticalCalculation.
Я считаю поставленная задача выполнена в полном объеме.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
https://docs.oracle.com/javase/7/docs/api/javax/swing/package-summary.html
https://javaswing.wordpress.com/