Федеральное агентство железнодорожного транспорта
Омский государственный университет путей сообщения
Кафедра «Автоматика и системы управления»
Пояснительная записка к курсовой работе
по дисциплине «Объективно-ориентированное программирование»
ИНМВ.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 - Файл на печать
Заключение
В процессе выполнения курсовой работы было созданоприложение «Формирование приказа» оно реализует окно ввода данных студент-тема-фамилия.
В созданной программе реализованы следующие возможности:
- выбор имени студента, темы и имени руководителя из выпадающего списка;
- добавление студентов, тем и кураторов в соответствующие списки;
- сохранение созданного списка студент-тема-куратор;
- загрузка данного списка;
- печать данного списка.