Курсовая работа: Проектирование и создание приложения Формирование приказа

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

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

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

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

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

ИНМВ.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 - Файл на печать

Заключение

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

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

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

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

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

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

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