Главная страница
Навигация по странице:

  • Цель работы: Освоить работу диалогового режима работы с формами для создания графических пользовательских интерфейсов (GUI) для языков Java и Android StudioХод работы

  • Задание Диалоговый режим работы с формами для создания графических пользовательских интерфейсов (GUI) для языков Java и Android Studioп 1.

  • Вариант 6. Даны основания равнобедренной трапеции и ее боковая сторона. Найти площадь трапеции.Листинг ( Java IntelIiJ IDEA )

  • Листинг (Java Android Studio) activity_main.xml

  • Тесты При помощи NoxPlayer

  • Листинг (Kotlin Android Studio) activity_main.xml

  • А. Н. Тушев 09 февраля 2021 г


    Скачать 380.5 Kb.
    НазваниеА. Н. Тушев 09 февраля 2021 г
    Дата16.11.2022
    Размер380.5 Kb.
    Формат файлаdoc
    Имя файлаlr2_kabanov.doc
    ТипОтчет
    #791055

    Министерство науки и высшего образования Российской Федерации

    Федеральное государственное бюджетное образовательное

    учреждения высшего образования

    «Алтайский государственный технический университет им. И.И. Ползунова»
    Факультет информационных технологий

    Кафедра информатики, вычислительной техники

    и информационной безопасности

    Направление Информационная безопасность

    Профиль Организация и технология защиты информации

    Отчёт защищён с оценкой 85 _

    ____________________ А.Н. Тушев

    «09» февраля 2021 г.
    ОТЧЁТ

    по лабораторной работе № 2

    Диалоговый режим работы с формами для создания графических пользовательских интерфейсов (GUI) для языков Java и Android Studio

    по дисциплине Современные технологии программирования

    ЛР 10.03.01.06.000 О

    обозначение документа
    Студент группы ИБ-81 И.А. Кабанов

    Руководитель работы к.т.н., доцент А.Н. Тушев

    БАРНАУЛ 2021


    Цель работы:

    Освоить работу диалогового режима работы с формами для создания графических пользовательских интерфейсов (GUI) для языков Java и Android Studio

    Ход работы

    Задание

    Диалоговый режим работы с формами для создания графических пользовательских интерфейсов (GUI) для языков Java и Android Studio

    п 1.

    Реализовать алгоритм вычисления величин по варианту при заданных исходных значениях. Ввод выполнить через текстовые поля (TextField,EditText), вывод в (Label,TextView). Должна быть Label с подсказкой (типа “введите длины сторон:”). Вычисления выполнять по нажатию кнопки.

    Вариант 6.

    Даны основания равнобедренной трапеции и ее боковая сторона. Найти площадь трапеции.

    Листинг (Java IntelIiJ IDEA)

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;

    public class Calc
    {
    double A;
    double B;
    double C;
    double S;
    JFrame form; // основная форма
    JLabel SideA; // поле вывода стороны А
    JLabel SideB; // поле вывода стороны В
    JLabel SideС; // поле вывода стороны С
    JLabel Square; // поле вывода площади
    JTextField sA; // поле для ввода стороны А
    JTextField sB; // поле для ввода стороны В
    JTextField sC; // поле для ввода стороны С
    JButton bt; // кнопка вычислить
    Calc() // конструктор
    {
    form = new JFrame();
    form.setBounds (10,20,350,300);
    form.setTitle ("Площадь трапеции");
    form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    form.setLayout(null); // не использовать менеджер размещений
    // задание параметров Label
    SideA = new JLabel();
    SideA.setBounds(20,10,400,40); // left,top,width,height
    SideA.setText("Введите малое основание");
    form.add(SideA); // добавка в форму Label lb
    // задание параметров первого текстового поля
    sA = new JTextField();
    sA.setBounds(210,20,100,20);
    sA.setText("");
    form.add(sA); // добавка в форму текстового поля tf1
    // задание параметров второго текстового поля
    SideB = new JLabel();
    SideB.setBounds(20,40,400,40); // left,top,width,height
    SideB.setText("Введите большее основание");
    form.add(SideB); // добавка в форму Label SideB
    // задание параметров первого текстового поля
    sB = new JTextField();
    sB.setBounds(210,50,100,20);
    sB.setText("");
    form.add(sB); // добавка в форму текстового поля sB
    SideС = new JLabel();
    SideС.setBounds(20,70,400,40); // left,top,width,height
    SideС.setText("Введите боковую сторону");
    form.add(SideС); // добавка в форму Label lb
    // задание параметров первого текстового поля
    sC = new JTextField();
    sC.setBounds(210,80,100,20);
    sC.setText("");
    form.add(sC); // добавка в форму текстового поля
    Square = new JLabel();
    Square.setBounds(20,150,400,40); // left,top,width,height
    form.add(Square); // добавка в форму Label lb
    // задание параметров второго текстового поля
    // задание параметров кнопки
    bt=new JButton();
    bt.setBounds(20,130,140,20);
    bt.setLabel("Вычислить");
    form.add(bt); // добавка в форму кнопки
    // добавление отклика на событие click слушатель
    bt.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    // при нажатии кнопки bt переход в данную точку
    Calculate();
    }
    });
    // задание формы видимой
    form.show();

    }
    public void Calculate()
    {
    String s1;
    double p, X, Y;
    s1=sA.getText(); // введенная строка курса
    A = Double.parseDouble(s1); // перевод в вещественное число
    s1=sB.getText(); // введенная строка количества долларов
    B=Double.parseDouble(s1); // перевод в целое число
    s1=sC.getText(); // введенная строка количества долларов
    C=Double.parseDouble(s1); // перевод в целое число
    p = (A+B+2*C)/2;
    X = (A+B)/(Math.abs(A-B));
    Y = Math.sqrt((p-A)*(p-B)*(p-A-C)*2);
    S = X*Y;
    s1=Double.toString(S); // перевод вещественного числа в строку
    s1="Площадь трапеции равна: "+s1;
    Square.setText(s1); // вывод в Label
    }

    public static void main (String args[])
    {
    Calc f; // объект основного класса
    f= new Calc();
    }
    }
    Тесты




    п 2.

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

    Листинг (Java Android Studio)

    activity_main.xml


    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    android:layout_width="238dp"
    android:layout_height="40dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="5dp"
    android:text="Площадь трапеции" />

    android:layout_width="210dp"
    android:layout_height="30dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="53dp"
    android:text="Малое основание: "
    />
    android:layout_width="210dp"
    android:layout_height="30dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="103dp"
    android:text="Большее основание: "
    />
    android:layout_width="210dp"
    android:layout_height="30dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="153dp"
    android:text="Боковая сторона: "
    />

    android:id="@+id/et1"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:layout_marginLeft="150dp"
    android:layout_marginTop="45dp"
    android:text="0" />

    android:id="@+id/et2"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:layout_marginLeft="150dp"
    android:layout_marginTop="95dp"
    android:text="0" />

    android:id="@+id/et3"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:layout_marginLeft="150dp"
    android:layout_marginTop="145dp"
    android:text="0" />

    android:id="@+id/bt1"
    android:layout_width="190dp"
    android:layout_height="40dp"
    android:layout_marginLeft="40dp"
    android:layout_marginTop="250dp"
    android:text="Выйти" />

    android:layout_width="113dp"
    android:layout_height="40dp"
    android:text="Ответ 0.00"
    android:layout_marginLeft="90dp"
    android:layout_marginTop="205dp"
    android:id="@+id/tv1"
    />


    MainActivity.java

    package com.example.trapetion;

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    import java.text.BreakIterator;

    public class MainActivity extends AppCompatActivity {
    private TextView tv1; // связанные с соответствующим в Activity_main.xml
    private EditText et1;
    private EditText et2;
    private EditText et3;
    private Button bt1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv1 = (TextView) findViewById(R.id.tv1); // установка связи объектов java с
    et1 = (EditText) findViewById(R.id.et1); // виджетами в xml
    et2 = (EditText) findViewById(R.id.et2);
    et3 = (EditText) findViewById(R.id.et3);
    bt1 = (Button) findViewById(R.id.bt1);
    bt1.setOnClickListener(new View.OnClickListener() { // отклик на событие click кнопки
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    System.exit(0);
    }
    });
    et1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    // событие получение/потеря фокуса
    public void onFocusChange(View v, boolean hasFocus) {
    if (!hasFocus) { // Если вышли из компоненты, а не попали на нее
    Calculate();
    }
    }
    });
    et2.setOnFocusChangeListener(new View.OnFocusChangeListener() {

    public void onFocusChange(View v, boolean hasFocus) { // аналогично для второго числа
    if (!hasFocus) {
    Calculate();
    }
    }
    });
    et3.setOnFocusChangeListener(new View.OnFocusChangeListener() {

    public void onFocusChange(View v, boolean hasFocus) { // аналогично для второго числа
    if (!hasFocus) {
    Calculate();
    }
    }
    });
    }
    private void Calculate() // вычисление суммы чисел с проверкой правильности ввода
    {
    String s1;
    boolean p;
    double Pol, X, Y, A = 0, B = 0, C = 0, S = 0;
    s1 = et1.getText().toString(); // символы, введенные в первом поле
    p = true;
    try {
    A = Double.parseDouble(s1); // попытка перевода в вещественное строку из 1 поля
    } catch (NumberFormatException e) // ошибка перевода
    {
    p = false;
    }
    s1 = et2.getText().toString();
    try {
    B = Double.parseDouble(s1);
    } catch (NumberFormatException e) {
    p = false;
    }
    s1 = et3.getText().toString();
    try {
    C = Double.parseDouble(s1);
    } catch (NumberFormatException e) {
    p = false;
    }

    if (p) // если оба перевода выполнены, то p=true.
    {
    Pol = (A+B+2*C)/2;
    X = (A+B)/(Math.abs(A-B));
    Y = Math.sqrt((Pol-A)*(Pol-B)*(Pol-A-C)*(Pol-A-C));
    S = X*Y;
    s1 = Double.toString(S); // перевод в строку
    s1 = "Площадь трапеции: " + s1;
    tv1.setText(s1); // вывод в TextView
    } else
    {
    tv1.setText("неправильно");
    }
    }
    }
    Тесты

    При помощи NoxPlayer




    Установленное приложение на телефон


    п 3.

    Реализовать вычисление кусочно-аналитической функции по варианту задания.

    Использовать компоненты:

    текстовое поле для ввода аргумента x

    кнопка Button для вычисления y=f(x)

    метка (Label,TextView) для вывода результата

    3 радиокнопки RadioButton для выбора формулы вычисления

    checkBox для возможности удвоения результата (при загрузке checked=false)

    На радиокнопках сделать надписи: формула1 , формула2, формула3, на checkBox- удвоить.

    Алгоритм работы:

    При вводе аргумента x и нажатии кнопки Button проверяется в какой из трех диапазонов

    попадает x, выполняются вычисления y и результат отображается в Label (TextView). При этом соответствующая радиокнопка становится отмеченной.

    Если далее нажать другую радиокнопку, вычисления пересчитываются для формулы, соответствующей этой кнопки, в Label выводится новый результат, диапазон, в котором находится x игнорируется. Если отметить checkBox – результат удваивается и выводится.

    Вариант 6)

    [sin(x)]2, x<=0

    y= x3-1, 0<x<1

    (x+1)*(sqrt(x), x>=1
    Листинг (Kotlin Android Studio)

    activity_main.xml


    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    android:id="@+id/tv2"
    android:layout_width="328dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="10dp"
    android:text="Вычисление кусочно-заданной функции" />


    android:id="@+id/rg1"
    android:layout_width="206dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="40dp"
    android:background="#ffffff"
    android:orientation="vertical">

    android:layout_width="73dp"

    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="10dp"
    android:gravity="left"
    android:text="Введите x" />

    android:id="@+id/rb1"
    android:layout_width="192dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="0dp"
    android:layout_marginTop="5dp"
    android:text="(sin(x))^2" />

    android:id="@+id/rb2"
    android:layout_width="189dp"
    android:layout_height="wrap_content"
    android:text="х*х*х-1" />

    android:id="@+id/rb3"
    android:layout_width="189dp"
    android:layout_height="wrap_content"
    android:text="(x+1)*sqrt(x)" />

    android:id="@+id/bt1"
    android:layout_width="217dp"
    android:layout_height="40dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="220dp"
    android:text="Вычислить" />

    android:id="@+id/et1"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="35dp"
    android:text="0" />
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="215dp"
    android:layout_marginTop="40dp"
    android:id="@+id/cb1"
    android:checked="false"
    android:text="Удвоить"
    />

    android:id="@+id/tv1"
    android:layout_width="231dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="280dp"
    android:text="Y = " />


    MainActivity.kt

    package com.ivan.function

    import android.os.Bundle
    import androidx.appcompat.app.AppCompatActivity
    import kotlinx.android.synthetic.main.activity_main.*
    import kotlin.math.sin
    import kotlin.math.sqrt

    class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    rb1.setOnClickListener()
    {
    Calculate();
    }
    rb2.setOnClickListener()
    {
    Calculate();
    }
    rb3.setOnClickListener()
    {
    Calculate();
    }
    cb1.setOnClickListener()
    {
    Calculate();
    }
    bt1.setOnClickListener() // видит кнопку button с именем bt1 в xml
    {
    Funktion(); // вызов функции
    }


    }

    fun Funktion() {
    var s1: String;
    var x: Double;
    var y: Double;
    s1 = et1.text.toString(); // s1=et1.getText().toString();
    x = s1.toDouble(); // x = Double.parseDouble(s1);
    y = 0.0;
    if (x <= 0) {
    rb1.setChecked(true);
    y = (sin(x) * sin(x));
    }
    if (x > 0 && x < 1) {
    rb2.setChecked(true);
    y = x * x * x - 1;
    }
    if (x >= 1) {
    rb3.setChecked(true);
    y = (x + 1) * sqrt(x);
    }

    s1 = y.toString();
    s1 = "Y = " + s1;
    tv1.text = s1
    return;
    }

    fun Calculate() {
    var s1: String;
    var x: Double;
    var y: Double;
    s1 = et1.text.toString(); // s1=et1.getText().toString();
    x = s1.toDouble(); // x = Double.parseDouble(s1);
    y = 0.0;
    if (rb1.isChecked) {
    y = (sin(x) * sin(x));
    }
    if (rb2.isChecked) {
    y = x * x * x - 1;
    }
    if (rb3.isChecked) {
    y = (x + 1) * sqrt(x);
    }
    if (cb1.isChecked) {
    y = y * 2;
    }
    s1 = y.toString();
    s1 = "Y = " + s1;
    tv1.text = s1
    return;
    }
    }
    Тесты










    написать администратору сайта