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

  • ОТЧЁТ по лабораторной работе № 1 «Разработка класса структуры данных и оконного приложения» по дисциплине: «Сетевые протоколы»

  • Сетевые протоколы Java. Сетевые протоколы 1 лаба. новосибирский государственный технический университет


    Скачать 111.68 Kb.
    Названиеновосибирский государственный технический университет
    АнкорСетевые протоколы Java
    Дата18.03.2022
    Размер111.68 Kb.
    Формат файлаdocx
    Имя файлаСетевые протоколы 1 лаба.docx
    ТипДокументы
    #402515

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
    ФЕДЕРАЛЬНОЕ государственное БЮДЖЕТНОЕ

    образовательное учреждение

    высшего образования

    «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»


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



    ОТЧЁТ

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

    «Разработка класса структуры данных и оконного

    приложения»

    по дисциплине: «Сетевые протоколы»

    Оглавление


    1.Задание 2

    2.Цель работы 3

    3.Ход работы 3

    Вариант № 5. Двусвязный список 3

    Добавление объекта в двусвязный список: 4

    Удаление объекта: 5

    4.Вывод 6

    5.Листинг 6



    1. Задание

    Портировать одну из структур данных, приведенных в ermak.cs.nstu.ru/cprog.

    Структура может быть упорядоченной и неупорядоченной. Набор операций для

    упорядоченной - добавление, удаление по индексу, ускоренный поиск по ключу и

    индексу, вставка с сохранением порядка, для неупорядоченной - добавление, удаление по индексу, поиск по ключу и индексу, вставка по индексу, сортировка. Элемент структуры данных (элемент списка, вершина дерева) реализовать в виде вложенного класса. Структур данных реализовать в виде шаблона, производного от Comparable. Проверить на объектах – строках (сгенерированных случайным образом).

    1. Цель работы

    Получение практических навыков программирования прикладных протоколов клиент-серверных приложений на Java, начиная с «нуля».

    1. Ход работы

    Вариант № 5. Двусвязный список




    Рис. 1. Внешний интерфейс односвязного списка.



    Рис. 2. Реализация добавления объекта в односвязный список.

    Добавление объекта в двусвязный список:


    public void actionPerformed(ActionEvent actionEvent) {

    var Dialog = new dialogWindow();

    Dialog.pack();

    Dialog.setVisible(true);

    if (Dialog.output != null) List.push_front(Dialog.output);

    List.printList(textArea1, textArea2);

    }

    });
    Добавление по индексу:

    public void actionPerformed(ActionEvent actionEvent) {

    var Dialog = new insertDialog();

    Dialog.pack();

    Dialog.setVisible(true);

    if (Dialog.Data != null) List.insert(Dialog.pos, Dialog.Data);

    List.printList(textArea1, textArea2);

    }



    Рис. 3. Вставка по индексу

    Удаление объекта:


    public void actionPerformed(ActionEvent actionEvent) {

    try {

    List.pop_front();

    List.printList(textArea1, textArea2);

    } catch (NullPointerException e) {

    JOptionPane.showMessageDialog(null, "Что-то сломалось");

    } catch (Exception e) {

    JOptionPane.showMessageDialog(null, "Список пуст");

    }

    }



    Рис. 3 Вывод исключения при удалении из пустого списка

    1. Вывод

    В данной лабораторной работе научились работать с графическим интерфейсом Java, познакомились с библиотекой swing, awt. Создали двусвязный список, а также реализовали функции создания, создание по индексу, удаления.

    1. Листинг

    import javax.swing.*;

    import java.awt.*;

    import java.util.LinkedList;
    public class Main extends JFrame{
    public static final String EMAIL_STUD = "Студент";
    private String name;

    private String id;
    JTextArea stdTextArea = new JTextArea();

    JPanel flow1Panel = new JPanel(new FlowLayout(FlowLayout.CENTER));

    JPanel flow2Panel = new JPanel(new FlowLayout(FlowLayout.CENTER));

    JPanel gridPanel = new JPanel(new GridLayout(2, 1));
    JLabel idLabel = new JLabel("ID :");

    JTextField idTextField = new JTextField(10);
    JLabel nameLabel = new JLabel("Имя :");

    JTextField nameTextField = new JTextField(10);
    JButton addButton = new JButton("Добавить");

    JButton deleteButton = new JButton("Удалить");

    JButton exitButton = new JButton("Выход");
    private LinkedList
    stdLinkedList = new LinkedList();
    public Main() {

    setTitle("Первая лабораторная работа");

    setLayout(new BorderLayout());

    setMinimumSize(new Dimension(500,500));
    stdTextArea.setEnabled(false);

    stdTextArea.setDisabledTextColor(Color.BLACK);
    flow1Panel.add(idLabel);

    flow1Panel.add(idTextField);

    flow1Panel.add(nameLabel);

    flow1Panel.add(nameTextField);
    flow2Panel.add(addButton);

    flow2Panel.add(deleteButton);

    flow2Panel.add(exitButton);
    add(flow1Panel);

    add(flow2Panel);
    gridPanel.add(flow1Panel);

    gridPanel.add(flow2Panel);
    add(stdTextArea, BorderLayout.CENTER);

    add(gridPanel, BorderLayout.SOUTH);
    addButton.addActionListener(e -> {

    addStudent();

    idTextField.setText("");

    nameTextField.setText("");

    });

    exitButton.addActionListener(e -> this.setVisible(false));

    deleteButton.addActionListener(e -> deleteSmth());

    }
    private boolean isIDInLinkedList (String idStr) {
    boolean inList = false;
    for (Main stud: stdLinkedList) {
    if (stud.getId().compareTo(idStr) == 0) {

    inList = true;

    }

    }
    return inList;

    }
    public void addStudent () {
    if (isIDInLinkedList (idTextField.getText()) == true) {

    JOptionPane.showMessageDialog(null, "Ошибка: студент ID уже добавлен!");

    }
    else {

    stdLinkedList.add(new Main(nameTextField.getText(),

    idTextField.getText()));
    displayAll();

    }

    }
    public void insertStudent () {
    if (isIDInLinkedList (idTextField.getText()) == true) {

    JOptionPane.showMessageDialog(null, "Ошибка: студент ID уже добавлен!");

    }
    else {

    stdLinkedList.add(new Main(nameTextField.getText(),

    idTextField.getText()));
    displayAll();

    }

    }
    private void displayAll() {

    stdTextArea.setText("");
    for (Main stud: stdLinkedList) {

    stdTextArea.append(stud + "\n");

    }

    }
    private void exitApplication() {

    // System.exit(0);

    }
    private void deleteSmth() {

    if (isIDInLinkedList (idTextField.getText()) == false) {

    JOptionPane.showMessageDialog(null, "Ошибка: студент ID ещё не добавлен!");

    }
    else {
    for (int s = 0; s < stdLinkedList.size(); s++) {
    String currId = stdLinkedList.get(s).getId();
    if (currId.compareTo(idTextField.getText()) == 0) {

    stdLinkedList.remove(s);

    }

    }
    displayAll();

    }

    }
    public Main(String name, String id) {

    this.name = name;

    this.id = id;

    }

    public String getName () {

    return name;

    }
    public String getId () {

    return id;

    }
    public void setName (String name){

    this.name = name;

    }
    public void setId (String id){

    this.id = id;

    }
    @Override

    public String toString() {

    return id + "\t" + name + "\t" + EMAIL_STUD;

    }
    public static void main(String[] args) {

    Main app = new Main();

    app.setVisible(true);

    }

    }

    Новосибирск, 2020 г.


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