Приложение "Очередь"

Разработка приложения для визуализации структуры данных очереди с возможностью добавления и удаления элементов. Алгоритм реализации очереди. Описание JavaFX Scene Builder. Алгоритм реализации открытия и сохранения файлов. Анализ методов отладки системы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.09.2016
Размер файла 906,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Курсовой проект по дисциплине

«Объектно-ориентированное программирование»

ПРИЛОЖЕНИЕ «ОЧЕРЕДЬ»

Реферат

Курсовая работа, 28 страниц, 15 рисунков, 3 таблицы, 6 источников, 1 приложение.

Ключевые слова: XML, FXML, Java, JavaFX, коллекции, объектно-ориентированное программирование.

Цель работы - разработка приложения для визуализации структуры данных очереди с возможностью добавления и удаления элементов.

В процессе разработки приложения был более детально изучен зык программирования Java, получены навыки работы с форматом данных XML и программой JavaFX Scene Builder 2.0.

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

Введение

Очередь - это структура данных очень напоминающую обычную очередь из людей, тот, кто пришел первым, обслуживается первым (FIFO - First Input First Output.). Добавлять новые элементы можно только в конец очереди, забирать элементы можно только из начала. Удалять элементы из середины очереди - нельзя.

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

Цели и задачи курсовой работы

Цели:

1. Закрепление знаний и умений, полученных в процессе теоретического изучения языка Java.

2. Знакомство со структурой данных «очередь».

3. Приобретение и совершенствование практических навыков работы в JavaFX Scene Builder 2.0.

4. Знакомство и работа с форматом XML, его использование в реализации приложения.

Задачи:

1. Использование данных из файлов приложением.

2. Занесение полученных данных в очередь.

3. Возможность добавить элементы в очередь из самого приложения.

4. Отладка программы.

5. Составление документации к программе.

.Информация о проделанной работе

Ниже представлена сокращенная таблица 1.1 о проделанной работе, в соответствии с графиком.

Таблица 1.

Недели

Краткое описание работы

1 - 3 недели

(17.02.2016. - .28.02.2016.)

Получение задач для написания курсовой работы и календарного плана.

Изучение документации по используемым программным средствам.

Изучение работы с программными средствами.

Составление ТЗ.

3 - 7 недели

(28.02.2016 - 23.03.2016.)

Проектирование системы.

Создание прототипа интерфейса.

7 - 12 недели

(23.03.2016 -23.04.2016.)

Кодирование и тестирование системы.

12 - 16 недели

(23.04.2016 -15.05.2016.)

Тестирование системы.

16 неделя

(15.05.2016 - 20.06.2016.)

Написание отчета о проделанной работе.

Создание презентации по отчету.

1.Основная часть

1.1 Постановка задачи

Разработать приложение для реализации и визуализации структуры данных «очередь». С возможностью добавлять новые элементы из файлов.

1.2Технические программные средства

При создании приложения использовалась JavaFX Scene Builder 2.0. JavaFX - платформа для создания RIA, позволяет строить унифицированные приложения с насыщенным графическим интерфейсом пользователя для непосредственного запуска из-под операционных систем, работы в браузерах и на мобильных телефонах, в том числе работающих с мультимедийным содержимым.

Версия JavaFX Scene Builder - 2.0.

Созданные посредством JavaFX Scene Builder приложения будут способны работать на следующих платформах

Платформа

CPU архитектура

Версия

JavaFX

Windows Vista

x86 и x86-64

SP2

2.0

Windows XP

x86 и x86-64

SP3

2.0

Windows 7

x86 и x86-64

SP1

2.0

Mac OS X

64-бит

10.7.3+

2.2

Linux

32 и 64 бит

gtk2 2.18+

2.2

Solaris

32 и 64 бит

10

2.2

Приложение разрабатывалось и тестировалось на компьютере с ОС Windows 10.

1.4 Работа с JavaFX Scene Builder.

Технология JavaFX была впервые продемонстрирована корпорацией Sun Microsystems на конференции JavaOne в мае 2007 года. 4 декабря 2008 года вышла версия 1.0 платформы.

1.4.1Описание JavaFX Scene Builder

Используя электронный ресурс [4] мы можем описать JavaFX Scene Builder следующим образом.

JavaFX Scene Builder - представляет собой визуальный инструмент, который позволяет пользователям быстро создавать интерфейс для JavaFX приложений, без кодирования. Пользователи могут перетаскивать компоненты интерфейса в рабочую область, изменять их свойства, применять таблицы стилей, а код FXML для интерфейса генерируется автоматически в фоновом режиме. Результатом является FXML файл, который может быть объединён с проектом Java путем связывания пользовательского интерфейса к логике приложения.

Ключевые особенности

JavaFX Scene Builder включает в себя следующие основные функции:

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

· Легкая интеграция с любым Java IDE, поскольку она представляет собой автономный инструмент разработки.

· Автоматическая генерация FXML кода. Сгенерированный код хранится в отдельном файле и может быть использован в логике приложения, а также в таблице стилей.

· Возможность добавления пользовательский компонентов графического интерфейса в библиотеку. Также библиотека компонентов может быть расширена благодаря возможности импорта сторонних JAR-файлов, FXML файлов.

· JavaFX Scene Builder Kit снабжен Scene Builder 2.0. Комплект представляет собой API, который позволяет интегрировать Scene Builder непосредственно в графический интерфейс, таких Java IDE, как NetBeans, IntelliJ и Eclipse.

1.4.2 Алгоритм реализации очереди

Алгоритм очереди реализуется в классе «QueueRealization» на основе класса коллекции «Queue». Статичные метод getIntegers служит для того, чтобы мы могли получить доступ к элементам очереди из разных классов, т.е. чтобы у нас была одна и та же очередь для всех классов, которые используют методы коллекции «Queue». Сама очередь объявлена приватной, чтобы сохранялся принцип инкапсуляции.

Рис.1

На Рисунке 2 представлен фрагмент реализации добавления элементов через текстовое поле. Сначала мы вызываем метод getIntegers класса QueueRealization, а потом вызываем метод для добавления элемента (add) и записываем в очередь число, которое ввели в текстовом поле, преобразовав его из «String» в «Integer» с помощью метода «parseInt». Если добавление прошло успешно, выводим на метку «Элемент добавлен». И вызываем метод «showQueue» (Рисунок 3), чтобы вывести элементы. Если мы введем в текстовое поле не число, а строку, то, выводим исключение.

Рис.2

В этом методе происходит вывод элементов, добавленных из файла или же введенных из текстового поля.

Рис.3

Данный метод удаляет элемент, который находится в самом начале.

Рис.4

Этот метод позволяет удалить всю очередь. Сначала проверяем есть ли элементы в очереди, если есть, то удаляем.

Рис.5

1.4.3 Алгоритм реализации открытия и сохранения файлов

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

Рис.6

Метод для сохранения элементов очереди в TXT файле.

Рис.7

В этом методе мы считываем элементы, которые находятся в XML файле, и добавляем в очередь.

Рис.8

Этот метод служит для сохранения введенной очереди в XML файле.

Рис.9

1.5.Интерфейс системы

Рис.10 - Основное окно для работы с программой

Основные возможности:

- Кнопка «Добавить» добавляет элемент в очередь. Для того, чтобы самому добавить элемент, нужно ввести число в текстовое поле и нажать «добавить».

- Кнопка «Удалить» удаляет самый первый элемент, который находится в очереди.

- Кнопка «Вывести» выводит элементы на текстовую арену, и также выводит элементы, которые мы добавили из файла.

- Кнопка «Новая очередь» удаляет все элементы очереди, т.е. очищает его.

Вывод добавленных элементов осуществляется сразу, т.е. нету необходимости каждый раз нажимать кнопку «Вывести».

Рис.11

Удаление элемента также осуществляется сразу.

Рис.12

В строке «Файл» содержатся элементы управления, которые позволяют открыть файл с элементами очереди, сохранять введенную очередь и с возможностью выйти из программы.

Рис.13

Нажав «Открыть файл» открывается диалоговое окно, в котором мы можем выбрать файл, с элементами очереди, для открытия.

Если нажать кнопку «Сохранить файл», то открывается диалоговое окно, в котором мы можем сохранить введенную очередь.

Рисунок 14 - Пример сохранения очереди в XML

1.6Технология разработки программного изделия

Архитектура приложения состоит из двух систем- системы основного окна и системы меню.

Характеристики архитектуры данного приложения:

- Базовая архитектурная парадигма: объектно - ориентированная.

- Языковая парадигма (каждой системы) - высокоуровневая (язык программирования высокого уровня Java)

- Форматы использования данных - XML текстовый формат обмена данными

1.6.1Отладка системы

Цель отладки - исправление выявленных ошибок и недочетов в работе программы. За время отладки все вышеописанные ошибки и нижеописанные недочеты были исправлены. Результаты отладки представлены в таблице 2.1

Таблица 2.

Действие

В чем заключается ошибка

Способ исправления

Добавляем вместо числа строку.

Элемент не добавлялся в очередь, а выводилось исключение.

Использование try-catch в основном блоке метода добавления «NumberFormatException». И предупреждение пользователя.

Попытка добавить пустую строку

Выводилось исключение при попытке сделать это.

Использование проверки того, что вводит пользователь.

Попытка открыть файл не того формата.

При попытке открыть файл, программа выдавала исключение.

Добавление фильтра для того, чтобы видеть файл строго определенного формата.

Добавление элементов в очередь из файла.

Так как строка меню и основное окно это два разных FXML файла. То при попытке добавления элементов из файла меню, получалось, что создалась новая очередь и поэтому элементы не выводились в текстовую арену.

Сама коллекция «Queue» была сделана статической и метод для получения элементов из этой коллекции тоже был сделан статическим.

Заключение

очередь данные java алгоритм

В результате написания курсовой работы были приобретены некоторые практические навыки, такие как: изучение интегрированной среды разработки программного обеспечения JavaFX Scene Builder, более глубоко была изучена Intellij IDEA, работа с форматом данных XML, составление документации и работа с ней. Все полученные знания позволят продолжить изучение своей предметной области более углубленно и досконально.

Источники информации

1. Java. Объектно-ориентированное программирование для магистров и бакалавров [Текст] : учебное пособие для изучающих объектно-ориентированное программирование в вузе / А. Н. Васильев. - Санкт-Петербург [и др.]: Питер, 2013. - 395 с.

2. Лекция 11: Структуры данных: общее понятие, реализация. Простейшие структуры данных: очередь, стек. Использование стека и обратная польская запись [Электронный ресурс] Режим доступа: http://www.intuit.ru/studies/courses/2193/67/lecture/1980?page=3#sect6 (дата обращения 15.05.2016)

3. Структуры данных и алгоритмы Java [Текст] : / Р. Лафоре - 2-е изд. - Санкт-Петербург [и др.] : Питер, 2014. - 701 с.

4. Учебник по JavaFX 8 (Русский) [Электронный ресурс] Режим доступа: http://code.makery.ch/library/javafx-8-tutorial/ru/ (дата обращения 5.05.2016)

5. JavaFX Scene Builder: Getting Started with JavaFX Scene Builder [Электронный ресурс]Режим доступа: http://docs.oracle.com/javase/8/scene-builder-2/get-started-tutorial/overview.htm#JSBGS164 (дата обращения 10.05.2016)

6. Java™ Platform, Standard Edition 7 API Specification [Электронный ресурс] Режим доступа: https://docs.oracle.com/javase/7/docs/api/ (дата обращения 22.05.2016)

Приложение А

Структура программы.

Рис.15

Код класса QueueRealization.

package com.queue;

import java.util.ArrayDeque;

import java.util.Queue;

public class QueueRealization {

private static Queue<Integer> integers = new ArrayDeque<>();

/**

* Статический метод для получения доступа к элементам очереди

* */

public static Queue<Integer> getIntegers() {

return integers;

}

}

Код класса Root_Controller

package com.queue;

import javafx.fxml.FXML;

import javafx.scene.control.Label;

import javafx.scene.control.TextArea;

import javafx.scene.control.TextField;

import java.util.*;

/**

* Created by Fizyli on 01.05.2016.

*/

public class Root_Controller {

/**

* Сюда вводим значения для добавления в очередь

*/

@FXML

private TextField textarea;

/**

* Сюда выводим очередь

*/

@FXML

private TextArea TA;

/**

* Метка для информирования о произведенных действиях

* сюда записываем возможные действия которые произошли

*/

@FXML

private Label infoLabel;

/**

* Метод для добавление элементов в очередь

*/

@FXML

public void addElementQueue() {

try {

QueueRealization.getIntegers().add(Integer.parseInt(textarea.getText()));

infoLabel.setText("Элемент добавлен");

showQueue(); //Вызываем метод showQueue чтобы выводить элементы в текстовую арену

} catch (NumberFormatException e) { //Выводим исключение если ничего не введено или введена строка

if (textarea.getText().equals("")) { //Если ввод пустой, выводим сообщение о необходимости ввести число

infoLabel.setText("Введите число");

} else { //Иначе проверяем правильность ввода

infoLabel.setText("Проверьте правильность ввода");

}

}

}

/**

* Метод для показа элементов очереди открытых с файла

*/

@FXML

public void showQueue() {

TA.setText(""); //Каждый раз при нажатии кнопки, очищаем поле вывода

if (QueueRealization.getIntegers().isEmpty()) {//Если очередь пуста, выводим сообщение об этом

infoLabel.setText("Очередь пуста");

}

for (int entry : QueueRealization.getIntegers() //Сохраняем элементы коллекции в entry и выводим в TA

) {

TA.appendText(entry + " "); //Выводим очередь через пробел

TA.setWrapText(true); //устанавливаем параметр true чтобы при выводе текст переносился на следующую строку

}

}

/**

* Метод для удаления элементов очереди

*/

@FXML

public void removeElementQueue() {

infoLabel.setText("Элемент удален ");

try {

QueueRealization.getIntegers().remove(); //Удаляем элемент из очереди при нажатии на кнопку

showQueue(); //Вызываем метод showQueue чтобы удалять элементы из текстовой арены

} catch (NoSuchElementException e) { //при отсутвии элементов выводим исключение

infoLabel.setText("Очередь пуста");

}

}

/**

* Метод для очистки очереди

*/

@FXML

public void deleteAllElements() {

try {

if (QueueRealization.getIntegers().isEmpty()) {//Если очередь пуста выводим на label

infoLabel.setText("Очередь пуста");

} else {

while (!QueueRealization.getIntegers().isEmpty()) {//пока очередь не пуста, удаляем все элементы

TA.setText(""); //Очищаем поле вывода

QueueRealization.getIntegers().remove();

infoLabel.setText("Очередь очищена");

}

}

} catch (NoSuchElementException e) {//Если очередь изначально пуста, выводим исключение

infoLabel.setText("Очередь пуста");

}

}

}

Код класса Root_Menu_Controller

package com.queue;

import javafx.fxml.FXML;

import javafx.scene.Scene;

import javafx.scene.control.Alert;

import javafx.scene.control.Label;

import javafx.scene.control.TextArea;

import javafx.scene.layout.Pane;

import javafx.stage.FileChooser;

import javafx.stage.Stage;

import mainClass.MainApp;

import org.w3c.dom.*;

import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.*;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import java.io.*;

/**

* Created by Fizyli on 01.05.2016.

*/

public class Root_Menu_Controller {

/**

* Сюда сохраняется путь к файлам

*/

private File file;

private String line;

@FXML

private Label label;

/**

* Метод для открытия TXT файла

*/

@FXML

private void setOpenFile() {

FileChooser openFile = new FileChooser();

//Создаем фильтр чтобы открывать только файлы с форматом TXT

FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");

//Добавляем фильтр

openFile.getExtensionFilters().add(filter);

file = openFile.showOpenDialog(new MainApp().getPrimaryStage()); //Открываем диалоговое окно при нажатии на кнопку

//Считывем файл

try {

InputStream stream = new FileInputStream(file);

//Создаем объект класса InputStreamReader на основе объекта stream

InputStreamReader sReader = new InputStreamReader(stream);

//Создаем объект класса BufferedReader на основе объекта sReader

BufferedReader read = new BufferedReader(sReader);

while ((line = read.readLine()) != null) { //Считываем содержимое файла

QueueRealization.getIntegers().add(Integer.parseInt(line)); //Добавляем то, что считали в очередь

}

} catch (IOException e) {

}

}

/**

* Метод для сохранения элементов очереди в TXT файле

*/

@FXML

private void handleSaveFile() {

if (QueueRealization.getIntegers().isEmpty()){

label.setText("Нечего записывать");

}else {

FileChooser saveFile = new FileChooser();

//Создаем фильтр чтобы очередь сохранялась в TXT формате

FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");

//Добавляем фильтр

saveFile.getExtensionFilters().add(filter);

file = saveFile.showSaveDialog(new MainApp().getPrimaryStage()); //Открываем диалоговое окно для сохранения файла

//Создаем файл

try {

OutputStream stream = new FileOutputStream(file);

OutputStreamWriter sReader = new OutputStreamWriter(stream);

BufferedWriter writer = new BufferedWriter(sReader);

for (int entry : QueueRealization.getIntegers() //Записываем элементы очереди в переменную entry и добавляем в файл

) {

writer.append(String.valueOf(entry)); //Тут непосредственно добавляем

writer.newLine();//Переходим на новую строку

}

writer.flush();//Закрываем поток

} catch (IOException e) {

}

}

}

/**

* Метод для открытия ХМL файла в которой находится очередь

*/

@FXML

private void readXML() {

FileChooser openXML = new FileChooser();

//Создаем фильт форматов, чтобы открывались только XML файлы

FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("XML files (*.xml)", "*.xml");

//Добавляем фильтр

openXML.getExtensionFilters().add(filter);

File XmlFile = openXML.showOpenDialog(new MainApp().getPrimaryStage());//Открываем диалоговое окно для открытия файла

//Считываем XML файл и добавляем содержимое в очередь

try {

DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder dBuilder = dFactory.newDocumentBuilder();

Document document = dBuilder.parse(XmlFile);

document.getDocumentElement().normalize();

NodeList nList = document.getElementsByTagName("element"); //Считываем то, что находится в этом теге

for (int i = 0; i < nList.getLength(); i++) {

//Начиная с 0-го элемента записывем всё в очередь

String childList = nList.item(i).getTextContent();

QueueRealization.getIntegers().add(Integer.parseInt(childList));

}

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* Метод для сохранения элементов очереди в ХМL файле

*/

@FXML

private void handleSaveXML() {

FileChooser saveXML = new FileChooser();

//Создаем фильтр форматов, чтобы файл сохранился в XML

FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("XML files (*.xml)", "*.xml");

//Добавляем фильтр

saveXML.getExtensionFilters().add(filter);

//Используем метод showSaveDialog чтобы вызвать окно сохранения файла

file = saveXML.showSaveDialog(new MainApp().getPrimaryStage());

try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.newDocument(); //Создаем новый документ

Element RootElement = doc.createElement("Queue"); //Создаем корневой элемент в ХМL файле

for (int entry : QueueRealization.getIntegers()

) { //Считываем всю очередь и записываем в entry

Element NameElementTitle = doc.createElement("element"); //Создаем элемент очереди, куда отдельно заносим каждый элемент

//Переводим entry в строковый формат и записываем в перменную NameElementTitle

NameElementTitle.appendChild(doc.createTextNode(String.valueOf(entry)));

//Заносим в корневой элемент значения переменной NameElementTitle

RootElement.appendChild(NameElementTitle);

}

doc.appendChild(RootElement);

Transformer t = TransformerFactory.newInstance().newTransformer();

t.setOutputProperty(OutputKeys.METHOD, "xml");

t.setOutputProperty(OutputKeys.INDENT, "yes");

t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file)));

} catch (TransformerConfigurationException e) {

} catch (TransformerException e) {

} catch (FileNotFoundException e) {

} catch (ParserConfigurationException e) {

}

}

@FXML

private void handleHelp() {

Stage primaryStage = new Stage();

Pane root = new Pane();

TextArea textArea = new TextArea();

textArea.setEditable(false);

textArea.setText("Основные функциональные возможности:\n" +

"- Кнопка 'Добавить' как ни странно, добавляет новые элементы в очередь.\n" +

"- Кнопка 'Удалить' удаляет элемент, который находится в самом начале.\n" +

"- Кнопка 'Вывести' выводит элементы добавленные из TXT файла или XML файла.\n" +

"- Кнопка 'Новая очередь' очищает всю очередь.\n" +

"- Чтобы добавить новый элемент, нужно вписать этот элемент в текстовую строку и нажать кнопку добавить.\n" +

"\n" +

"Меню:\n" +

"- 'Открыть файл' открывает файл с заранее записанными элементами и добавляет их в очередь.\n" +

"- 'Открыть XML' открывает XML файл с заранее записанными элементами и добавляет их в очередь.\n" +

"- 'Сохранить файл' сохраняет очередь элементов, которые мы записали с помощью текстовой строки в TXT файл.\n" +

"- 'Сохранить XML' сохраняет очередь элементов, которые мы записали с помощью текстовой строки в XML файл.\n"

);

textArea.setWrapText(true);

textArea.setPrefSize(400, 400);

root.getChildren().add(textArea);

Scene scene = new Scene(root, 400, 400);

primaryStage.setScene(scene);

primaryStage.show();

}

/**

* Метод для закрытия приложения через кнопку

*/

@FXML

private void setClose() {

System.exit(0);

}

/**

* Метод для вывода информации о программе через Alert

*/

@FXML

private void setAbout() {

Alert alert = new Alert(Alert.AlertType.INFORMATION);

alert.setTitle("Queue");

alert.setHeaderText("О программе");

alert.setContentText("Автор: Махмудов Физули\n" +

"ver.1.0");

alert.showAndWait();

}

}

Код класса MainApp.

package mainClass;

import javafx.application.Application;

import javafx.fxml.FXMLLoader;

import javafx.scene.Scene;

import javafx.scene.image.Image;

import javafx.scene.layout.AnchorPane;

import javafx.scene.layout.BorderPane;

import javafx.stage.Stage;

import java.io.IOException;

public class MainApp extends Application {

private Stage primaryStage;

private BorderPane rootLayout;

public Stage getPrimaryStage() {

return primaryStage;

}

public BorderPane getRootLayout() {

return rootLayout;

}

@Override

public void start(Stage primaryStage) throws Exception {

this.primaryStage = primaryStage;

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

primaryStage.getIcons().add(new Image("file:resources/image/icon.png"));

//Вызываем метод для отображения меню

initRoot_Menu();

//Вызываем метод для отображения основного окна

initRootLayout();

//Устанавливаем название программы

primaryStage.setTitle("Queue");

}

public void initRoot_Menu() {

try {

FXMLLoader loader = new FXMLLoader();

//Указываем путь до FXML файла

loader.setLocation(MainApp.class.getClassLoader().getResource("view/Root_menu.fxml"));

//Загружаем в основной фрейм FXML файл

rootLayout = loader.load();

//Создаем новую сцену в которую добавляем корневой фрейм

Scene scene = new Scene(rootLayout);

//Устанавливаем сцену

primaryStage.setScene(scene);

primaryStage.show();

} catch (IOException e) {

e.printStackTrace();

}

}

public void initRootLayout() {

try {

FXMLLoader loader = new FXMLLoader();

// //Указываем путь до FXML файла

loader.setLocation(MainApp.class.getClassLoader().getResource("view/Root_Layout.fxml"));

//Загружаем FXML файл в фрейм

AnchorPane pane = loader.load();

//Устанавливаем этот фрейм по центру корневого окна

rootLayout.setCenter(pane);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

launch(args);

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Разработка класса "очередь с приоритетами" на языке С++ с использованием объектно-ориентированного проектирования. Построение алгоритмов обработки очереди, методов вставки, удаления, вывода на экран элементов. Анализ вариантов реализации очередей.

    курсовая работа [398,6 K], добавлен 28.05.2016

  • Порядок проектирования программы, демонстрирующей принцип заполнения очереди и стека и принцип удаления элементов из очереди и стека. Определение класса и всех необходимых функций. Программа на языке С, описание возможностей, используемых для алгоритма.

    курсовая работа [254,3 K], добавлен 20.05.2013

  • Общее понятие и специфика применения очереди в программировании. Способы реализации очереди, их сущностная характеристика. Основные проблемы в использовании списков. Представление очереди в виде массива и двух целочисленных переменных start и end.

    презентация [895,9 K], добавлен 14.10.2013

  • Понимание принципа работы очереди. Возможности обращения к первому и последнему элементов очереди. Создание очереди с помощью массива. Рассмотрение примеров использования очереди с приоритетом в программе. Формирование односвязного и двусвязного списков.

    контрольная работа [345,6 K], добавлен 26.11.2020

  • Обзор и комплексный анализ операционной системы Windows Vista, оценка ее преимуществ и недостатков. Разработка программы, которая реализует алгоритм очереди на 20 элементов. Построение блок-схемы и листинг алгоритма, контрольный пример его работы.

    курсовая работа [4,2 M], добавлен 20.11.2013

  • Очередь в циклическом массиве. Извлечение элемента из очереди. Анализ сложности алгоритма. Класс входных данных, для которых применим алгоритм или структура. Выбор средств разработки. Определение отображаемых элементов, проектирование интерфейса.

    курсовая работа [299,9 K], добавлен 07.06.2014

  • Основные понятия объектно-ориентированного программирования, особенности описания функций и классов. Разработка программы для работы с универсальной очередью установленного типа, добавления и удаления ее элементов и вывода содержимого очереди на экран.

    курсовая работа [187,2 K], добавлен 27.08.2012

  • Разработка алгоритмов на динамических структурах данных. Описание структуры данных "стек". Процедуры добавления и удаления элемента, очистки памяти. Код распечатки содержимого всего стека. Инструкция пользователя, код программы, контрольный пример.

    курсовая работа [22,9 K], добавлен 19.10.2010

  • Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.

    курсовая работа [597,4 K], добавлен 31.01.2016

  • Визуальное проектирование и событийное программирование. Повышение производительности программиста при использовании RAD-систем. Составление алгоритмов, разработка приложения для решения прикладных задач на примере консольных приложений C++ Builder 6.

    курсовая работа [258,7 K], добавлен 30.10.2013

  • Разработка программы для сбора и анализа информации об автобусах на парковке. Назначение и область применения. Алгоритм в словесной форме. Состав технических и программных средств. Разработка приложения в среде визуального программирования C++Builder 6.

    курсовая работа [1,5 M], добавлен 06.09.2014

  • Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.

    дипломная работа [1,5 M], добавлен 22.03.2018

  • Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Описание использованных структур данных и разработка программы, обеспечивающей сжатие данных по алгоритму LZ77 с пошаговой визуализацией. Описание процедур, функций, структуры приложения и интерфейса пользователя. Тест и анализ работы алгоритма LZ77.

    курсовая работа [537,9 K], добавлен 28.06.2011

  • Краткое описание языка программирования С++. Алгоритм линейного выбора элемента, методов минимального (максимального) элемента и челночной сортировки. Анализ и разработка приложения, организующего сортировку массива данных пятью методами сортировки.

    реферат [614,8 K], добавлен 12.04.2014

  • Характеристика программных продуктов: MySQL, MSSQL, MSAccess. Разработка базы данных в среде C++Builder. Описание таблиц и установление связей между ними. Реализация функций просмотра, добавления, редактирования БД с применением языка запросов SQL.

    курсовая работа [393,0 K], добавлен 13.06.2015

  • PHP – скриптовый язык, применяемый для разработки веб-приложений; поддерживается большинством хостинг-провайдеров и является лидером среди языков. Разработка веб-приложение для вывода краткой сводки новостей и возможностью добавления комментариев.

    курсовая работа [736,8 K], добавлен 16.06.2019

  • Разработка информационной базы данных "Поликлиника" с возможностью просмотра, редактирования, добавления сведений и получения результатов запросов. Создание механизмов управления данными при помощи триггеров. Проектирование пользовательского приложения.

    курсовая работа [2,0 M], добавлен 21.06.2011

  • Разработка принципов организации информационного обеспечения, структуры входных и выходных сообщений, классификаторов и кодов. Уточнение состава аппаратной платформы. Функциональное назначение проекта, руководство пользователя и описание программы.

    курсовая работа [623,3 K], добавлен 18.09.2015

  • Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.

    курсовая работа [399,1 K], добавлен 26.08.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.