Проектирование и создание приложения "Формирование приказа"

Освоение современного фреймворка, закрепление навыков программирования в объектно-ориентированном стиле, ознакомление и взаимодействие с языком разметки XML. Создание макета приложения. Методы сохранения, загрузки, печати. Редактирование, хранение данных.

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

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

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

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

Федеральное агентство железнодорожного транспорта

Омский государственный университет путей сообщения

Кафедра «Автоматика и системы управления»

Пояснительная записка к курсовой работе

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

ИНМВ.404000.000 ПЗ

Проектирование и создание приложения «Формирование приказа»

Студент гр. 25З

В.А. Калмагорова

Руководитель - Доцент кафедры «АиСУ»

Е.А. Альтман

Омск 2017

Задание

Необходимо создать приложение для секретаря при защите выпускной квалификационной работы. Выпускная квалификационная работа начинается с приказа для утверждения тем и руководителей. Клиентское приложение на платформе JavaFX, реализующее следующие функции.

- выбор имени студента, темы и имени руководителя из выпадающего списка;

- добавление студентов, тем и кураторов в соответствующие списки;

- сохранение созданного списка студент-тема-куратор;

- загрузка данного списка;

- печать данного списка.

Реферат

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

Цель курсовой работы - предоставить удобный и быстрый доступ формирования списка для приказа утверждения тем и руководителей.

Результатом курсовой работы является приложение «Формирование приказа».

Пояснительная записка выполнена в текстовом редакторе Microsoft Word 2015.

Введение

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

Платформа JavaFX позволяет создавать приложения под основные операционные системы для персональных компьютеров, для мобильных устройств и веб приложения. JavaFX стала частью виртуальной машины языка Java, начиная с выпущенной в 2014 году 8-ой версии, что позволяет рассчитывать на ее широкое распространение. Платформа JavaFX содержит много элементов, каждый из которых обладает большим числом свойств.

В курсовом проекте рассматривается приложение для формирования списка на приказ. Пользователь может выбирать из выпадающих списков ФИО студента, тему и ФИО куратора.

Для выполнения курсового проекта используется бесплатно распространяемая среда разработки IntelliJIdea (communityedition) [1]. Дополнительно потребуется установить визуальный редактор Scene Builder [2].

Целью данного проекта является освоение современного фреймворка, закрепление навыков программирования в объектно-ориентированном стиле, ознакомление и взаимодействие с языком разметки XML.

1. Теоретическая часть

1.1 JavaFXфреймворк

данные загрузка редактирование хранение

JavaFX -- платформа на основе Java для создания приложений с насыщенным графическим интерфейсом. Может использоваться как для создания настольных приложений, запускаемых непосредственно из-под операционных систем, так и для интернет-приложений (RIA), работающих в браузерах, и для приложений на мобильных устройствах. JavaFXпризвана заменить использовавшуюся ранее библиотеку Swing. Платформа JavaFX конкурирует с MicrosoftSilverlight, AdobeFlash и аналогичными системами.

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

Разработчики могут использовать существующие библиотеки Java, получать доступ ко встроенным возможностям систем или эффективно подключаться к серверным связующим приложениям на базе JavaPlatform, EnterpriseEdition (Java EE) из приложений JavaFX. Существующие приложения JavaSwing могут быть легко модернизированы с помощью новых функций JavaFX, таких как полнофункциональный графический программный интерфейс, воспроизведение мультимедиа и встроенный веб-контент.

1.2 POJO объекты

Данные, с которыми работают пользователи, обычно отображают некоторые объекты реального мира. Примером такого объекта является объект, содержащий информацию о человеке, позволяющий установить его имя, должность, зарплату и т. п. Одним из подходов к работе с такими данными является использование POJO объектов (PlainOldJavaObject - простой Java-объект в старом стиле). Такие объекты содержат поля свойств объекта реального мира и методы доступа к полям. При этом объекты не содержат поля и методы для служебных целей - выполнения транзакций, обеспечение безопасности доступа и т. п.

Для работы с POJO объектами существуют библиотеки и фреймворки. При выполнении определенных требований такой объект может, без дополнительного кодирования, сохранен в базе данных, файл «xml», передан по сети или представлен пользователю в структурированном виде. В «JavFX» имеется компонент «TableView», который позволяет выводить коллекцию POJO объектов в виде таблицы.

1.3 Редактирование данных

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

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

Ячейка таблицы отображается и обрабатывает события отдельным классом. Это параметризованный класс с двумя параметрами. Первый параметр имеет тип, соответствующий объекту, выводимому в строке таблицы. Второй параметр имеет тип, соответствующий текущей колонке. Универсальным способом настройки работы ячейки является создание класса наследника «TableCell», в котором переопределяется необходимое поведение ячейки.

1.4 Хранение данных в XML

Один из наиболее распространённых способов хранения данных, это использование баз данных. В то времякак данные, которые мы должны хранить, являются объектами, базы данных содержат их в виде реляционных данных (например, таблиц). Это называется объектно-реляционное рассогласование импендансов. Для того чтобы привести наши объектные данные в соответствие с реляционными таблицами, требуется выполнить дополнительную работу. Существуют фреймворки, которые помогают приводить объектные данные в соответствие с реляционной базой данных, но чтобы начать их использовать, также необходимо проделать дополнительную работу и настройку.

Для простой модели данных намного легче хранить данные в виде XML. Для этого можно использовать библиотеку JAXB (JavaArchitechturefor XML Binding). Написав всего несколько строк кода, JAXB позволит нам сгенерировать XML-файл.

Библиотека JAXB уже включена в JDK. Это значит, что никаких дополнительных библиотек подключать не придётся. JAXB предоставляет две основные функции: способность к маршаллированию объектов Java в XML и обратную демаршализацию из xml-файла в объекты Java.

JAXB требует, чтобы внешний класс данных был отмечен аннотацией @XmlRootElement - определяет имя корневого элемента. @XmlElement- это необязательное имя, которое мы можем задать для элемента.

1.5 CSS

CSS - формальный язык описания внешнего вида документа, написанного с использованием языка разметки.

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

Правила CSS пишутся на формальном языке CSS и располагаются в таблицах стилей, то есть таблицы стилей содержат в себе правила CSS. Эти таблицы стилей могут располагаться как в самом веб-документе, внешний вид которого они описывают, так и в отдельных файлах, имеющих формат CSS.

2. Создание приложения

2.1 Описание структуры программы

Данная программа состоит из 18классов.

Класс Mainсодержит код, инициализирующий фреймворкJavaFX и подключающий к нему остальные файлы.

Класс MainWinControllerсодержит код, обрабатывающий действия с графическими элементами окна pro.

Класс ChangeWinControllerсодержит код, обрабатывающий действия с графическими элементамиоконkuratorWinи ChangeWin.

Класс temWinControllerсодержит код, обрабатывающий действия с графическими элементами окна temWin.

В классеpro хранится разметка главного окна и графические элементы приложения.

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

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

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

Ячейка таблицы отображается и обрабатывает события классов temaCell, kuratorCellи studCell. Это параметризованные классы с двумя параметрами. Первый параметр имеет тип, соответствующий объекту, выводимому в строке таблицы. Второй параметр имеет тип, соответствующий текущей колонке. В этих классах переопределяется необходимое поведение ячейки.

В классе metod реализуются методы сохранения и загрузки.

КлассData содержитспискиpersonList, TEMA, kuratorList, List.

КлассыSpisok, PersonиTemaопределяют свои типы элементов списка.

Класс SpisokXML - это класс-обертка, который используется исключительно для хранения списка List.

Класс styleсодержит стиль приложения, который применяется в fxml-файлах.

2.2 Создание макета приложения

Для создания макета приложения использовалась программа SceneBuilder, позволяющая редактировать XMLфайлы, описывающие интерфейс приложения в наглядном для пользователя виде. Для управления данными в приложении был выбран элемент контроля TableView. В строках этой таблицы элементы ComboBox.Макет изображен на рисунке 1. Код fxml файлаMainWinControllerнаходится в приложении А.

Рисунок 1 - Макет приложения

Для добавления новых элементов в выпадающие списки, были созданы диалоговые окна. Для двух других списков код схож, поэтому приведено только окно добавления имени студента. Пример окна изображен на рисунке 2. Код fxml файла и controllerнаходится в приложении B.

Рисунок 2 - Пример ввода данных

Так же реализовано окно ошибки, которое появляется, когда не все данные введены. Макет представлен на рисунке 3.

Рисунок 3 - Окно ошибки

2.2 Стиль

В JavaFX с помощью каскадных таблиц стилей (CSS) можно стилизировать интерфейс пользователя.Стиль, который используется в JavaFX, по умолчанию хранится в файле modena.css. Его можно найти в файле jfxrt.jar, который, в свою очередь, располагается в директории Java. Для создания своего стиля добавила файл style.css в пакет view. Код этого файла представлен в приложении C.

2.3 Методы сохранения, загрузки и печати

Методы сохранения и загрузки были реализованы в отдельном классе metod и применены в основном классе MainWinController.

Наши данные удобно хранить в виде XML. Для этого будем использовать библиотеку JAXB(JavaArchitectureforXMLBinding). Наши данные сгенерируются в XML-файл data. Вид данного файла представлен на рисунке 4.

Рисунок 4 - Файл data

Библиотека JABX уже включена в JDK. Это значит, что никаких дополнительных библиотек подключать не придется.

JAXB предоставляет две основные функции: способность к маршаллированию объектов Javaв XMLи обратную демаршаллизацию из xml-файла в объекты Java.

Данные, которые мы хотим сохранять, находятся в переменной List класса Data. JAXB требует, чтобы внешний класс наших данных был отмечен аннотацией @XmlRootElement (только класс, поле этой аннотацией пометить нельзя). Типом переменной List является ObservableList, а его мы не можем аннотировать. Для того чтобы разрешить эту ситуацию, необходимо создать класс-обёртку, который будет использоваться исключительно для хранения списка адресатов, и который мы сможем аннотировать как @XmlRootElement.

Для этого создаем в пакете model новый класс SpisokXML.

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

Метод печати формирует новый файл с расширением xps. Параметры данного файла можно изменять в самом методе. Пример списка оформленного в файле для печати представлен на рисунке 5.

Рисунок 5 - Файл на печать

Заключение

В процессе выполнения курсовой работы было созданоприложение «Формирование приказа» оно реализует окно ввода данных студент-тема-фамилия.

В созданной программе реализованы следующие возможности:

- выбор имени студента, темы и имени руководителя из выпадающего списка;

- добавление студентов, тем и кураторов в соответствующие списки;

- сохранение созданного списка студент-тема-куратор;

- загрузка данного списка;

- печать данного списка.

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

1. П.В. Бураков, В.Ю. Петров. Введение в системы баз данных - Петербург, 2014. - 323 с.

Приложение A

<?xml version="1.0" encoding="UTF-8"?>

<?importjavafx.geometry.Insets?>

<?importjavafx.scene.control.Button?>

<?importjavafx.scene.control.TableColumn?>

<?importjavafx.scene.control.TableView?>

<?importjavafx.scene.layout.BorderPane?>

<?importjavafx.scene.layout.HBox?>

<BorderPaneprefHeight="350.0" style="-fx-background-color: #1d1d1d;" stylesheets="@style.css" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.MainWinController">

<center>

<TableViewfx:id="table" editable="true" prefHeight="200.0" prefWidth="300.0" BorderPane.alignment="CENTER">

<columns>

<TableColumnfx:id="studColumn" minWidth="-Infinity" prefWidth="237.0" text="Студент" />

<TableColumnfx:id="temaColumn" prefWidth="226.0" text="Тема" />

<TableColumnfx:id="kuratorColumn" minWidth="115.0" prefWidth="236.0" text="Куратор" />

</columns>

</TableView>

</center>

<bottom>

<HBoxprefHeight="23.0" prefWidth="500.0" BorderPane.alignment="CENTER">

<children>

<Button mnemonicParsing="false" onAction="#handleAdd" prefHeight="33.0" prefWidth="68.0" text="+" />

<Button mnemonicParsing="false" onAction="#handleDel" prefHeight="33.0" prefWidth="64.0" text="-" />

</children>

</HBox>

</bottom>

<top>

<HBoxprefHeight="27.0" prefWidth="700.0" BorderPane.alignment="CENTER">

<children>

<Button mnemonicParsing="false" onAction="#handleChange" text="Добавитьстудента" />

<Button mnemonicParsing="false" onAction="#handleChangeT" text="Добавитьтему" />

<Button mnemonicParsing="false" onAction="#handleChangeK" text="ДобавитьКуратора" />

<Button alignment="TOP_RIGHT" mnemonicParsing="false" onAction="#Save" text="Сохранить">

<HBox.margin>

<Insets left="160.0" />

</HBox.margin></Button>

<Button alignment="TOP_RIGHT" mnemonicParsing="false" onAction="#Load" text="Загрузить" />

<Button alignment="TOP_RIGHT" mnemonicParsing="false" onAction="#Print" text="Печать" />

</children>

</HBox>

</top>

</BorderPane>

Приложение Б

Верстка главного окна

package view;

import javafx.fxml.FXML;

import javafx.fxml.FXMLLoader;

import javafx.print.PageLayout;

import javafx.print.PageOrientation;

import javafx.print.Printer;

import javafx.print.PrinterJob;

import javafx.scene.Scene;

import javafx.scene.control.ComboBox;

import javafx.scene.control.Label;

import javafx.scene.control.TableColumn;

import javafx.scene.control.TableView;

import javafx.scene.image.Image;

import javafx.scene.layout.Pane;

import javafx.scene.layout.VBox;

import javafx.stage.Modality;

import javafx.stage.Stage;

import model.Person;

import model.Spisok;

import model.Tema;

import java.io.IOException;

public class MainWinController {

Stage primaryStage;

@FXML

TableView<Spisok>table;

@FXML

TableColumn<Spisok,String>studColumn;

@FXML

TableColumn<Spisok,String>temaColumn;

@FXML

TableColumn<Spisok,String>kuratorColumn;

ComboBox<Person>stud;

ComboBox<Tema>tem;

ComboBox<Person>kurator;

public void init(Stage primaryStage){

this.primaryStage= primaryStage;this.primaryStage.getIcons().add(newImage("file:attendance_mark1600.png"));

table.setItems(Data.List);

studColumn.setCellValueFactory(cellData ->cellData.getValue().studProperty());

temaColumn.setCellValueFactory(cellData ->cellData.getValue().temaProperty());

kuratorColumn.setCellValueFactory(cellData ->cellData.getValue().kuratorProperty());

studColumn.setCellFactory(cellData ->new studCell( Data.personList, Data.List));

temaColumn.setCellFactory(cellData ->new temaCell( Data.TEMA, Data.List));

kuratorColumn.setCellFactory(cellData ->new kuratorCell( Data.kuratorList, Data.List));}

@FXML

private void handleAdd(){Data.List.add(new Spisok("???","???","???"));}

@FXML

private void handleDel(){

intindex = table.getSelectionModel().getSelectedIndex();

Data.List.remove(Data.List.get(index));}

ПриложениеA - КлассMainWinController

ПриложениеB

(обязательное)

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>

<?import javafx.scene.control.Label?>

<?import javafx.scene.control.TextField?>

<?import javafx.scene.layout.ColumnConstraints?>

<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.layout.RowConstraints?>

<GridPaneprefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #1d1d1d;" stylesheets="@style.css" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.ChangeWinController">

<columnConstraints>

<ColumnConstraintshalignment="LEFT" hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

<ColumnConstraintshgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

</columnConstraints>

<rowConstraints>

<RowConstraints />

<RowConstraintsmaxHeight="40.0" minHeight="10.0" vgrow="SOMETIMES" />

<RowConstraintsmaxHeight="40.0" minHeight="10.0" vgrow="SOMETIMES" />

<RowConstraintsmaxHeight="40.0" minHeight="10.0" vgrow="SOMETIMES" />

</rowConstraints>

<children>

<Label text="Фамилия" />

<Label text="Имя" GridPane.rowIndex="1" />

<Label text="Отчество" GridPane.rowIndex="2" />

<TextFieldfx:id="surname" maxWidth="90.0" GridPane.columnIndex="1" />

<TextFieldfx:id="name" maxWidth="90.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />

<TextFieldfx:id="ot" maxWidth="90.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />

<Button mnemonicParsing="false" onAction="#End" text="Отмена" GridPane.rowIndex="3" />

<Button mnemonicParsing="false" onAction="#ADD" text="Добавить" GridPane.columnIndex="1" GridPane.rowIndex="3" />

</children>

</GridPane>

Приложение B - Верстка главного окна

packageview;

import javafx.collections.ObservableList;

import javafx.fxml.FXML;

import javafx.scene.control.ComboBox;

import javafx.scene.control.TextField;

import model.Person;

import javax.swing.*;

public class ChangeWinController {

inteditingIndex;

@FXML

TextFieldname;

@FXML

TextFieldsurname;

@FXML

TextFieldot;

ПриложениеB -КлассChangeWinController, лист 1

ComboBox<Person>stud;

ComboBox<Person>kurator;

private MainWinControllerv;

@FXML

public void init(ObservableList<Person>personList , ComboBox<Person> stud, MainWinController c){

v = c;

this.stud= stud;

}

@FXML

public void ini(ObservableList<Person>kuratorList , ComboBox<Person>kurator, MainWinController c){

v = c;

this.kurator= kurator;

}

@FXML

private void ADD(){

Person fam = new Person(surname.getText(),name.getText(),ot.getText());

if(surname.getText().equals("") || name.getText().equals("") || ot.getText().equals("")){

JOptionPane.showMessageDialog(null, "Введитевседанные");

}

else{

Data.personList.add(fam);

v.close();}

}

@FXML

private void Add(){

Person fam = new Person(surname.getText(),name.getText(),ot.getText());

if(surname.getText().isEmpty() || name.getText().isEmpty() || ot.getText().isEmpty()){

JOptionPane.showMessageDialog(null, "Введитевседанные");

}

else{

Data.kuratorList.add(fam);

v.close();}

}

@FXML

private void End(){

v.close();

}

}

Приложение В

Класс ChangeWinController

.label {

-fx-font-size: 11pt;

-fx-font-family: "Segoe UI Semibold";

-fx-text-fill: white;

-fx-opacity: 0.6;

}

.label-bright {

-fx-font-size: 11pt;

-fx-font-family: "Segoe UI Semibold";

-fx-text-fill: white;

-fx-opacity: 1;

}

.label-header {

-fx-font-size: 32pt;

-fx-font-family: "Segoe UI Light";

-fx-text-fill: white;

-fx-opacity: 1;

}

.table-view {

-fx-base: #1d1d1d;

-fx-control-inner-background: #1d1d1d;

-fx-background-color: #1d1d1d;

-fx-table-cell-border-color: transparent;

-fx-table-header-border-color: transparent;

-fx-padding: 5;

}

.table-view .column-header-background {

-fx-background-color: transparent;

}

.table-view .column-header, .table-view .filler {

-fx-size: 35;

-fx-border-width: 0 0 1 0;

-fx-background-color: transparent;

-fx-border-color:

transparent

transparent

derive(-fx-base, 80%)

transparent;

-fx-border-insets: 0 10 1 0;

}

.table-view .column-header .label {

-fx-font-size: 20pt;

-fx-font-family: "Segoe UI Light";

-fx-text-fill: white;

-fx-alignment: center-left;

-fx-opacity: 1;

}

.table-view:focused .table-row-cell:filled:focused:selected {

-fx-background-color: -fx-focus-color;

}

Приложение Г

Стилизация приложения

.button {

-fx-padding: 5 10 5 10;

-fx-border-color: #e2e2e2;

-fx-border-width: 2;

-fx-background-radius: 0;

-fx-background-color: #1d1d1d;

-fx-font-family: "Segoe UI", Helvetica, Arial, sans-serif;

-fx-font-size: 8pt;

-fx-text-fill: #d8d8d8;

-fx-background-insets: 0 0 0 0, 0, 1, 2;

}

.button:hover {

-fx-background-color: #3a3a3a;

}

.button:pressed, .button:default:hover:pressed {

-fx-background-color: white;

-fx-text-fill: #1d1d1d;

}

.button:focused {

-fx-border-color: white, white;

-fx-border-width: 1, 1;

-fx-border-style: solid, segments(1, 1);

-fx-border-radius: 0, 0;

-fx-border-insets: 1 1 1 1, 0;

}

.button:disabled, .button:default:disabled {

-fx-opacity: 0.4;

-fx-background-color: #1d1d1d;

-fx-text-fill: white;

}

.button:default {

-fx-background-color: -fx-focus-color;

-fx-text-fill: #ffffff;

}

.button:default:hover {

-fx-background-color: derive(-fx-focus-color,30%);

packagemodel;

importjavax.xml.bind.annotation.XmlElement;

importjavax.xml.bind.annotation.XmlRootElement;

importjava.util.List;

@XmlRootElement(name = "Список")

publicclassSpisokXML {

privateList<Spisok>list;

publicSpisokXML() {}

publicSpisokXML(List<Spisok>list) {

this.list= list;}

@XmlElement(name = "Студент")

publicList<Spisok>getList() {

returnlist;}

publicvoidsetList(List<Spisok>list) {

this.list= list;}

}

Приложение Д

Класс SpisokXML

packageview;

importmodel.SpisokXML;

importjavax.xml.bind.JAXBContext;

importjavax.xml.bind.Marshaller;

importjavax.xml.bind.Unmarshaller;

importjava.io.File;

publicclassmetod {

publicvoidhandleSave(){

SpisokXMLxml = newSpisokXML(Data.List);

try{

JAXBContextcontext = JAXBContext.newInstance(SpisokXML.class);

Marshallerm = context.createMarshaller();

m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

m.marshal(xml, newFile("data.xml"));

} catch(Exceptione) { e.printStackTrace(); }

}

publicvoidhandleLoad(){

try{

JAXBContextcontext = JAXBContext.newInstance(SpisokXML.class);

Unmarshallerum = context.createUnmarshaller();

SpisokXMLxml = (SpisokXML) um.unmarshal(newFile("data.xml"));

Data.List.clear();

Data.List.addAll(xml.getList());

} catch(Exceptione) { e.printStackTrace(); }

}

}

Приложение D - Методы сохранения и загрузки в классе metod

@FXML

public void Print(){

PrinterJob job = PrinterJob.createPrinterJob();

Printer printer = job.getPrinter();

PageLayoutpageLayout = printer.getDefaultPageLayout();

PageLayoutnewpageLayout = printer.createPageLayout(pageLayout.getPaper(), PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);

TableView g = new TableView();

g.setItems(Data.List);

g.getColumns().addAll(studColumn, temaColumn, kuratorColumn);

VBox t = new VBox();

Label cat = new Label("Списокстудентов");

t.getChildren().addAll(cat,g);

if (job != null)

if (job.printPage(newpageLayout,t))

job.endJob();

}

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


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

  • Анализ создания виртуального окружения для разработки. Установка фреймворка Flask. Особенность настройки аутентификации и привилегий. Создание Python-файла и написание в нем простого веб-приложения. Запуск и проверка работоспособности приложения.

    лабораторная работа [2,1 M], добавлен 28.11.2021

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Компоненты приложения и технологии, используемые для связи между ними. Обзор программных средств и технологий, используемых в ходе работы. Трансляция кода JSP страницы в код сервлета. Создание структуры базы данных c применением фреймворка Hibernate.

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

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

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

  • Создание базы данных с помощью приложения Microsoft Access. Вспомогательные таблицы Город, Стадион, Матч, Клуб, Контакты. Связывание ключевых полей таблиц. Ввод, просмотр и редактирование записей. Технологии, реализующие объектно-ориентированный подход.

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

  • Методы проектирования базы данных по заданной предметной области с использованием CASE-средств ER/Studio и СУБД MS Access. Формирование и связывание таблиц, ввод данных. Создание экранных форм, запросов, отчетов, меню приложения. Генерация приложения.

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

  • Создание приложения и освоение начала технологии графического программирования. Использование CASE-структур в создаваемых приложениях и применение циклов типа For-Do. Создание программы, которая будет подсчитывать время выполнения определенного цикла.

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

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

    дипломная работа [2,6 M], добавлен 13.09.2017

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

    дипломная работа [2,4 M], добавлен 02.06.2013

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

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

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