Проектирование и создание приложения "Формирование приказа"
Освоение современного фреймворка, закрепление навыков программирования в объектно-ориентированном стиле, ознакомление и взаимодействие с языком разметки 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Проектирование и реализация мобильной версии приложения учета и движения товаров на базе платформы Android и языка программирования Java. Создание таблиц базы данных. Взаимодействие объектов и экранные формы. Способы идентификации классов анализа.
дипломная работа [1,8 M], добавлен 01.09.2016Обзор существующих систем управления базами данных. Концептуальное, логическое и физическое проектирование и создание базы данных. Обзор языков программирования. Создание и реализация клиентского приложения с помощью выбранного языка программирования.
дипломная работа [2,4 M], добавлен 02.06.2013