Научная статья на тему 'РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ ДЛЯ УЧЁТА ПРОДУКЦИИ МАГАЗИНА'

РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ ДЛЯ УЧЁТА ПРОДУКЦИИ МАГАЗИНА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
579
55
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
JAVA / UML / АРХИТЕКТУРА ИНФОРМАЦИОННЫХ СИСТЕМ / MYSQL / БАЗА ДАННЫХ / ИНФОРМАЦИОННАЯ СИСТЕМА / INFORMATION SYSTEMS ARCHITECTURE / DATABASE / INFORMATION SYSTEM

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Васильев В.И.

Статья посвящена моделированию информационной системы предприятия. А также работе с языком UML. Кроме того, в данной работе рассказывается создание базы данных. А также в статья рассматривается пример создания приложения на языке программирования Java.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF A CUSTOMER-SERVER APPLICATION FOR ACCOUNTING STORE PRODUCTS

The article is devoted to modeling the enterprise information system. As well as working with the UML language. In addition, this paper describes the creation of a database. Also, the article discusses an example of creating an application in the Java programming language.

Текст научной работы на тему «РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ ДЛЯ УЧЁТА ПРОДУКЦИИ МАГАЗИНА»

УДК 004

Васильев В.И. студент 2 курса

факультет «Информационные системы и технологии» Северный Арктический федеральный университет Высшая школа информационных технологий и

автоматизированных систем Россия, г. Архангельск

РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ ДЛЯ УЧЁТА

ПРОДУКЦИИ МАГАЗИНА

Аннотация: Статья посвящена моделированию информационной системы предприятия. А также работе с языком UML. Кроме того, в данной работе рассказывается создание базы данных. А также в статья рассматривается пример создания приложения на языке программирования Java.

Ключевые слова: Java, UML, архитектура информационных систем, MySQL, база данных, информационная система.

Vasilyev V.I.

student, 2year, faculty "Information Systems and Technology" Northern Arctic Federal University, Graduate School of Information

Technology and Automated Systems Russia, Arkhangelsk

DEVELOPMENT OF A CUSTOMER-SERVER APPLICATION FOR ACCOUNTING STORE PRODUCTS

Annotation: The article is devoted to modeling the enterprise information system. As well as working with the UML language. In addition, this paper describes the creation of a database. Also, the article discusses an example of creating an application in the Java programming language.

Keywords: Java, UML, information systems architecture, MySQL, database, information system.

Введение

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

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

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

Так же увеличенный ритм жизни людей с частыми разъездами все больше ставит задачи резервного архивирования и синхронизации данных между устройствами.

1 Анализ предметной области

Рассмотрим работу магазина покупатель совершает, покупки в магазине, выбирая различные товары.

Товары, поступающие в магазин, подлежат учёту и записываются в список прибывших товаров. Эти товары разделяются на различные категории. Товар имеет определённую цену, а также обладает свойствами, указанными в его описании. Кассир работает на кассе и при покупке клиентом магазина товара заносит его покупку в книгу покупок для учета купленной продукции.

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

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

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

Основными составляющими предметной области являются:

- исполнители;

- действия;

- объекты.

Исполнители - это лица, оперирующие с предметной областью.

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

Объекты - это то, на что направлены действия и с чем работают исполнители предметной области. Впоследствии объекты станут таблицами баз данных.

Были определены следующие группы исполнителей:

- оператор;

- кассир;

- незарегистрированный клиент;

- зарегистрированный клиент.

Действия, происходящие в предметной области, были определены следующие:

- регистрация клиента;

- авторизация клиента;

- работа с кассовым аппаратом;

- управление базой данных.

Объекты, с которыми взаимодействуют исполнители предметной области:

- товар;

- карта лояльности.

В качестве выводов на основании проделанного анализа предметной области был сформирован перечень первичных требований к проекту:

- наличие базы данных карт лояльности клиентов, продавцов, заказов и продуктов компании;

- возможность заполнения личных данных карт лояльности клиентов;

- возможность редактирования личных данных карт лояльности клиентов;

- возможность удаления личных данных карт лояльности клиентов

- возможность заполнения данных о продавцах;

- возможность редактирования данных о продавцах;

- возможность удаления данных о продавцах;

- возможность заполнения данных о заказах;

- возможность редактирования данных о заказах;

- возможность удаления данных о заказах;

- возможность заполнения данных о продуктах;

- возможность редактирования данных о продуктах;

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

2 Проектирование архитектуры

2.1 Определение архитектуры

Архитектура приложения — совокупность важнейших решений об организации программной системы. В основе работы приложения лежит так называемая модель взаимодействия клиент-сервер, которая позволяет разделять функционал и вычислительную нагрузку между клиентскими приложениями и серверными приложениями. Ниже на рисунке 1, представлена схема клиент-серверной архитектуры

Рисунок 1 Модель архитектуры приложения Клиент и сервер взаимодействую друг с другом в сети Интернет или в любой другой компьютерной сети при помощи различных сетевых протоколов, например, IP протокол, HTTP протокол, FTP и другие. Протоколов на самом деле очень много и каждый протокол позволяет оказывать ту или иную услугу. Также стоит заметить, что в основе взаимодействия клиент-сервер лежит принцип того, что такое взаимодействие начинает клиент, сервер лишь отвечает клиенту и сообщает о том, может ли он предоставить услугу клиенту и если может, то на каких условиях. 2.2 Проектирование диаграммы вариантов использования Вариант использования представляет собой последовательность действий (транзакций), выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (действующим лицом).

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

Для системы лояльности магазина была разработана диаграмма вариантов использования, представленная на рисунке 2.

Рисунок 2 - Модель вариантов использования

2.3 Разработка потока событий

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

Система имеет несколько вариантов использования:

- регистрация пользователя;

- авторизация пользователя;

- ввод штрих кода;

- просмотр клиента;

- изменение клиента.

Основной поток включает в себя:

- вариант использования начинается, когда пользователь регистрируется в системе;

- пользователь при завершении регистрации добавляет себя в базу данных;

- затем при совершении покупок пользователь показывает свой идентификатор (штрих код) продавцу;

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

Альтернативный поток А1 включает в себя:

- пользователь не имеет мобильного приложения;

- оператор вносит данные пользователя в базу данных;

- оператор выдает пользователю физическую карту;

- затем при совершении покупок пользователь показывает свой идентификатор (штрих код) продавцу;

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

Альтернативный поток А2 включает в себя:

- пользователь регистрировал аккаунт;

- пользователь запрашивает пароль на адрес электронной почты;

- пользователь восстанавливает учётную запись.

Альтернативный поток А3 включает в себя:

- пользователь неправильно ввёл данные;

- оператор редактирует данные пользователя.

2.4 Выводы

На этапе проектирования следующие задачи требовали реализации:

- определение архитектуры проекта;

- проектирование диаграммы вариантов использования;

- разработку потока событий.

Все поставленные задачи по проектированию были выполнены в полной мере, что позволяет перейти к этапу разработки информационной системы

3 Установка и администрирование. Развертывание удалённого сервера и настройка прав пользователей

Для развёртывания удалённого сервера был приобретён хост на сайте REG.RU после приобретения хостинга на посту пришли логины и пароли от доступа в панель управления хостингом, доступа к ftp и доступа к Mysql.

Перед началом работы с базой данных был выполнен вход в панель управления хостингом и разрешён удалённый доступ как показано на рисунке 3.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рисунок 3- Модель вариантов использования Для проверки работы базы данных была использована программа MySQLWorkbench. В программе было создано новое подключение, где был указан ip-адресс и порт сервера, а также название пользователя и пароль. Процесс настройки подключения показан на рисунке 4.

Рисунок 4 - Окно нового подключения в MySQLWorkBench После успешного подключения для проверки корректности работы была создана таблица, как показано на рисунке 5.

Apply SQL Script to Database

Review the SQL Script to be Applied on the Database

Online DDL

Algorithm: Default v Lock Type: Default v

1 {--;• CREATE TABLE ' u0693 09 l_defauIt V n ew_ta Ы e' (

2 "idnew_table" INT NOT NULL,

3 PRIMARY KEY Г ¡dnew_table%));

4

Review SQL Script

Apply SQL Script

Apply | Cancel

Рисунок 5- Окно запросов в MySQLWorkBench 4 Создание базы данных 4.1 Создание ER-диаграммы

Для создания базы данных была использована программа MySQLWorkbench, так как в этой программе имеется возможность создавать ER-диаграммы, с возможностью импорта в SQL.

Созданная SQL диаграмма показана на рисунке 6.

Рисунок 6 - ER-диаграмма После этого ER диаграмма была преобразована в SQL файл. 4.2 Импорт базы данных на сервер

Для импорта базы данных был выполнен вход в PhpMyAdmin и после этого были импортированы готовые таблицы на основе ER-диаграммы из

MySQLWorkBench, для этого в PhpMyAdmin был выбран пункт Импорт, как показано на рисунке 7.

Рисунок 7 - Окно импорта в phpMy Admin После этого был выбран предварительно созданный файл в MySQLWorkBench, SQL файл. После импортирования файла все таблицы были созданы в базе данных автоматически, как показано на рисунке 8.

uG693091_default __0 Новая

+ _ ft Card

+_> Discount Syze I "

+ Order > _ft Order-Product

Product + _ Sefler

-_..<■ User_Managemant

Рисунок 8 - Импортируемые таблицы

4.3 Выводы

В качестве выводов на основании созданной базы данных были реализована ER-модель базы данных, а также успешно был выполнен импорт созданной ER-модели на удалённый сервер.

5 Проектирование приложения

5.1 Дизайн приложения

Проектирование дизайна приложения происходило в программе SceneBuilder, так как эта программа позволяет сразу же использовать интерфейс с функциональностью приложения.

JavaFX Scene Builder - это инструмент визуального макета, который позволяет пользователям быстро создавать пользовательские интерфейсы

приложений JavaFX без программирования. Пользователи могут перетаскивать компоненты пользовательского интерфейса в рабочую область, изменять их свойства, применять таблицы стилей, а код FXML для создаваемого ими макета автоматически создается в фоновом режиме. В результате получается файл FXML, который затем можно объединить с проектом Java, связав пользовательский интерфейс с логикой приложения. [1] JavaFX - платформа на основе Java для создания приложений с насыщенным графическим интерфейсом. Может использоваться как для создания настольных приложений, запускаемых непосредственно из-под операционных систем, так и для интернет-приложений, работающих в браузерах, и для приложений на мобильных устройствах. [2]

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

Вход

Рисунок 9 - Окно авторизации пользователя

Ошибка

Рисунок 10 - Окно ошибки авторизации На рисунке 11 изображено окно с выбором редактирования таблиц базы данных, где пользователь может выбрать любую базу данных для изменения, путем нажатия на кнопки с названиями таблиц базы данных.

Администрирование

Card 1 Order I Seller

Product | Order - Product

CashBox

Рисунок 11 - Окно с выбором редактирования таблиц базы данных Окна с редактированием таблиц баз данных функционально и визуально похожи друг на друга, поэтому для демонстрации дизайна и функциональности, рассмотрим окно редактирования карт клиентов. На рисунке 12 показано окно для изменения параметров карт у клиентов магазина. В левой части окна располагается таблица с содержимым таблицы базы данных «Card», в правой части окна располагаются текстовые поля для изменения записей таблицы базы данных «Card», с кнопками для выбора действий.

Рисунок 12 - Окна с редактированием таблиц баз данных 5.2 Описание методов

Вся система состоит из множества классов и контроллеров, управляющих активными окнами, а также из главного класса «Main» и класса «Database», отвечающего за взаимодействие с базой данных. Все файлы проекта представлены на рисунке 13.

ts Package Explorer

v g 5labj ~ src

v [0 application

.¿j Data base,java [jj Main.java

application, ess U Cashbox.fxml dark-theme,ess v application.Classes .Jj Card.java [Jj Cash box .java jT) Client,java [X] Order,java ¡¿J QrderProduct.java [¿| Pro duct,java m Seller,java v iB application.Classes,Other [jj idOrder,java [¿| idProduct,java v application.Controllers

[jj AdministaitionControllerjava [jj AuthController,java [¿J Card Controller,java [Jj ChooseC ontroHer,java [jj OrderController.java ;Jj OrderProductControHer,java [¿| ProductC ontro Her,java [Jj RegistrationControHer,java .Jj Sa m pi eC ontro Her,java ;JJ SellerController.java ffi application.FXMLs ft. Persisted container [org.eclipse.ft(.ide.jdtcore.JAVAFX_CONTAINERfor project [5lab]] ft Referenced Libraries Ik JRE System Library [Ji el 1 ] 1 build.fx build

Рисунок 13 - Все классы в программе Рассмотрим контроллер на примере окна с редактирования карт клиентов - «OrderController». Контроллер содержит метод «initialize», показанный на рисунке 14.

}

I0FXHL

private void initialize() ■[

tcIdOrder,setCellValueFactory(neu PropertyValueFaeztoryiOrder, Integer>("IdOrder")); tcSeller_idSeller . 5etCellValueFactory(re« PropertyValueFactoryiOrder, Integer>("5elIe~_idSelIe~"))j tcCard_idCard.setCellValueFaetoryfnew PropertyValueFactory<Ordert Integer>("Ca~d_idCard"))j teDate.setCellValueFactoryfnew PropertyValueFactory<Ordert Date>("Date"))j tcTime.setCellValueFactory(new PropertyValueFactoryciOrder, Time>("Time"))j tvOrder,setIterns(FXCollections.observabLeArrayList^db. getAllOrderQ)};

showOrderDetails(nijll) j

tvOrder. getSelectionModelQ,selectedItemProperty()

, addListener((observablej oldValue, newValue) -> showOrderDetails(newValue})j

Рисунок 14 - Метод «initialize»

Метод «initialize», необходим для запуска других функций, а также записи начальных значений из базы данных в программу. В контроллере «OrderController» в методе «initialize» реализовано заполнение таблицы данными и базы данных, привязка текстовых полей к переменным и заполнения их начальными значениями, а также методом «showOrderDetails», который берёт данные из таблицы.

Контроллер содержит метод «showOrderDetails», показанный на рисунке 15.

tfldOrder . setText(Integer. tf?5trirrg(cl .getldOrderf))) j tfSeller_idSelle-.setText(Integer.toString(d.getSeller_idSeller()))j tfCard_idCard,setText(Integer,to5trtrrg(cl.getldOrderQ))j

Рисунок 15- Метод «showOrderDetails» Методом «showOrderDetails» необходим для отображения данных в текстовых полях при нажатии на строку в таблице, для их дальнейшего редактирования. В метод реализовано заполнение полей значениями из таблицы, которая берёт свои значения из базы данных, если же этого не происходит, то записываются нулевые значения.

Так же контроллер обладает кнопками, для функциональности которых, прописаны отдельные методы. Для кнопок «new», «edit», «delete» прописаны собственные методы, которые показаны на рисунке 16.

private void handleNew() throws SQLException NumberFonnatException, ParseException {

db.neivOrder(Integer.pcir5errri'(tfIdOrder.getText())j Integer.pcir5errrt(tfSeller_idSeller.getText())j

Integer.par5elnt(tfCard_idCard.getText())jnew Date(df.parse(tfDate.getText()). getTiine()),tfTime.getText()) tvOrder . setItems(FXCollections .ob5erirnbLe4rrnji.i5t(db.getA110rder()))

}

private void handleEdit() throws SQI-Exception., NumberFormatException, ParseException {

db.editOrder(Integer,porseInt(tfIdOrder, getTextQ), Integer,pcirseInt(tfSeller_idSeller, getText()),

Integer .pcrrseJnt(tfCard_idCard,getText() )jnew Date(df, parse (tf Date ,getText()) .getTime()) jtfTime ,getText()) tvOrder, setItems(FXCollection5 ,observabte/lrrayList(db,getAllOrder())) j

}

(ffiFXML

private void handleDeleteQ throws SQLExceptionj NumberForinatException, ParseException { db.deleteOrder(Integer,porseJnt(tfIdOrder,getText())); tvOrder. setItems(FX'Collections -oi?servai?te/lrrayList(db.getAllOrder())) j

Рисунок 16 - Методы «handleNew», «handleEdit», «handleDelete» Метод «handleNew» отвечает за создание новой записи в базе данных, который берёт изменённые значения из текстовых полей.

Метод «handleEdit» отвечает за изменение записи в базе данных, который берёт изменённые значения из текстовых полей.

Метод «handleDelete» отвечает за удаление записи в базе данных по идентификатору, который берёт изменённые значения из текстовых полей.

Ещё контроллер «OrderController» обладает методом для кнопки «Back», который продемонстрирован на рисунке 17

@FXML

void BackButtonf) {

Stage stage0 = (Stage) bBack.getScene(). getWindow().; stageQ.с lose()j

FXMLLoader loader = new FXMLLoaderQ;

loader.setLocation(getClass().getResource("/application/FXMLs/Administration.fxml")) try{

loader. loadOj } catch(Exception e) {

e.printStackTrace(); }

Parent root = loader.getRoot(); Stage stage - new StageOj stage.setScenefnew Scene(root));

stage.show()j }

Рисунок 17- Метод «BackButton» Этот метод находит текущую сцену у кнопки «Back», после чего закрывает её и открывает новую заранее указанную сцену

Рассмотрим методы класса, на примере класса «Order». Класс «Order» имеет метод установки начальных значений, который показан на рисунке 18

this.Datel = new SimpleQbjectProperty<Date>(Date.vaiueOf("201S-01-01"))j this.Timel = new SimpleObjectProperty<Time>(Time.vaLueOf("22:00:00й))jj

Рисунок 18 - Метод «Order» В этом методе указываются значения, которые не были указаны в сеттерах.

Так же класс «Order» имеет сеттеры и геттеры, которые показаны на рисунке 19.

public Ord^r(Integer [¿Order, Integer Sellei idiiller, Integer- Cai^d_i-dCa I, ilate DateL, Tijiie iul) { this. J liO-rtl^r1 - new SiKf. lelnteger-Propsrtyf klui ..;:>■ ); ihii.is] J p- ^ ntn SimplelntegerProperty ('. Lh _jdS^lli;r);

till*r-Cajfij_idi]artl - ricn- SimpleIntegerPrnpertyJi a thli.Usf^] - new iimij]-f»LJii;[ertiirnppi"tjKQAre:>(li:,Ti L) ■ thii.lLff^J - new Si mpl rtJbj^r ti'r-tvpe rty<T i : im?L);

>

public Iritejif getidCrdeft) {

r»tum thii.idorder.grtOi

}

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

public Integer gctScllcr_i(iSlIlcrO { return tJiit. Sr 11 f r_ idSel Iir. get ();

}

jjublit Integer gett3rd_idC-ar(fO \ return this.Lard_idCard.get()j

>

liUbilt Date jetOateO {

return this.[fate 1. get0;

>

public 1im? {

return tftii. 1 , eetQ;

)

Рисунок 19 - Геттеры и сеттеры класса «Order» Так же программа имеет класс Databae, который служит для связи с базой данных. Для подключения к базе данных был использован JDBC driver, который был предварительно скачан и подключён как показано на рисунке

В классе «Database» есть метод отвечающий за подключение к базе данных при помощи JDBC driver, как показано на рисунке 20.

private boolean openConnectionQ { try {

Class .forName("com.mysql.jdbc,Driver")-newlnstance();

this - conn = DriverManager.gefConnection("jdbc:mysql://37.148.192.114:3306?user=u0693091_default&password=xH3cI91_"). } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) {

// TTODO Auto-generated catch block e,printStackTrace(); return false;

}

return true;

Рисунок 20 - Метод «openConnection» Этот метод создает подключение к указанному ip-адресу используя заранее прописанный логин и пароль, если же подключение не удается то он выводит сообщение об ошибке в консоль.

В классе «Database» есть метод отвечающий за закрытие соединения как показано на рисунке 21.

public void closeConnection() { try {

if (this.conn != null) this.conn.close(); }■ catch (SQLException e) { e,printStackTrace()j

} _

this.,conn = null;

Рисунок 21 - Метод «closeConnection» В классе «Database» есть метод отвечающий за авторизацию продавца в системе, как показано на рисунке 22.

Этот метод принимает логин и пароль из окна авторизации, а за тем при активном подключении делает выборку в таблице «Seller» и при нахождении совпадающих результатов он прибавляет к счётчику единицу и отправляет этот результат вызванному методу из класса «AuthController»

В классе «Database» есть типовые методы отвечающий за получение данных из таблиц В качестве примера рассмотрим метод связанный с таблицей базы данных «Order».

t/Bxaft p cncref.y rjt.p.ïi^rftv.c si •. îî.h-îî ^¿hi-hjx nptreeps«* ^nn,"!! public irvt tririg ir „ String :■■■ I) {

Statament st - null; ReiullSet. rs - null; iot -Gunter = 0;

List-!Sel 1er? ÎStlltfs - Ari-eyLiit-iiielltriO; if (opsntonnectioni}) {

try {

it = tonn, crestEStatementO;

i s - .eneiute(Juer)r("select ' from liefatflT ,SeLLen WERt 3ogin '" + ki£'.:i +■

AMD password = + password+"1 f;"')-uhili (rs.nextQ) i

couriter,+*;

}

} catch (SQL Exception e) {

■Siriffm.injt.prinTln<"S[jl ewception* * e.gititeiiaeeO);

. printStackTraceQ ; rtturn } finally { try {

if-(it 1= HOI)

tleseCcnncction( ) catch Except ion e) { e. printîtoclîTrjtr(

>

it » nulli

>

}

r»tmn counter;

Рисунок 22- Метод «getSellers» Метод «getAllOrder» получает данные из таблицы базы данных «Order» и предаёт их в «OrderController». Метод «getAllOrder» представлен на рисунке 23.

pjllilL Lt St^ÛTlr' > S±cil]0-dsrjj I

1|Л[«ПП1 iE - Mill I:

Пи-jttîiT П - null ;

LlbtrO-der* lo-der * -4h "I- LstiiMf 1 ; i I if I ч lui ) ) f

tnf \

ir ■ [Gnn,cr«Ti5!Hr.:"cit: H

■ ■i ■ . l. ciœlultçiiiry( ~ ■ г :-т ïm1_i!e г Juli. j-'!;

„hll. lri.n.irtOi i

■ H- s^lnf, ,Vii.- frtlnl ■ ■ I. f.prtbïtl "Selb- LJStilt Siting1 eCariTl ■ ciTDnce-i^»-'' ■ e^'i'i "J" ■■:.

I

; rill h [ЯЦ^ирИ* ■ 1 ; t.pr5nt5ibckr rice(|;

rrlurir nul 1 J

) Hn.llT [ trv С

¡F («С !- null) -■■ .[IphÎîj ctaiECfmi ciltni ] j } L#L.II j mpfciu {

-. print',b„7tTr.r. I) i

}

lt - lull;

]

)

I Ét-jri I jr Jï r

I_

Рисунок 23-- Метод «getAllOrder»

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

Метод «newOrder» отвечает за создание новой записи в таблице базы данных «Order». Метод «newOrder» представлен на рисунке 24.

public void newOrder(int idOrder, int Seller_idSeller, int Card_idCard, Date Date, String Time) { if (openConnectionQ) { Statement st = null; try {

st = conn.createStatement()j

st.executeUpdate("insert into u9693991_default.Order (idOrder, Selier_idSeller, idCard, Date, Time) values("' + idOrder + " + Se lie r_id Seller + + Card_idCard + n'J'n + Date + " '+ Time +"');");

} catch (SQLException e) {

System,out.println("SQl exception" + e.getMessageQ); e.printStackTrace()j } finally { try {

if (st E= null) st-close(); closeConnection(); } catch (SQLException e) { e.printStackTrace();

}

st = null;

}

}_

Рисунок 24-- Метод «newOrder» В этом методе реализован запрос на вставку полученных данных в таблицу базы данных «Order».

Метод «editOrder» отвечает за редактирование записи в таблице базы данных «Order». Метод «editOrder» представлен на рисунке 25.

public void editOrder(int idOrder, int Seller_idSeller, int Card_idCard, Date Date, String Time) { if (openConnectionQ) { Statement st = null; try {

st = conn.createStatement();

st.executeUpdate("update u0693991_default,Card set Selier_idSeller = " +

Selier_idSeller + idCard = + Card_idCard + "', Date = + Date + "', Time = "" + Time +"') ;"); } catch (SQLException e) {

System.out.printlnC'SQl exception" + e.getMessageQ); e.printStackTrace()j } finally { try {

if (st S= null) st«close(); clos eCon n e ct ion()j } catch (SQLException e) { e. printStackTraceQ j

}

st = null;

}

}

Рисунок 25-- Метод «editOrder» В этом методе реализован запрос на обновление данных в таблице базы данных «Order».

Метод «deleteOrder» отвечает за удаление записи в таблице базы данных «Order». Метод «deleteOrder» представлен на рисунке 26.

public void deleïeOrder(int idOrder) throws SQLException { if (openConnection( ) ) { Statement st - null; try {

st - (Statement) conn.createStatement();

st.eKecuteUpdate("delete from u0693091_default.Order WHERE idOrde-} catch (SQLException e) {

System.out. println("SQl exception" -I- e .getMessageQ }j e . p r in t St a c kTr a c e( ) ; } finally { try {

if (st != null) st.close(); clo s e Con n e c t ion(); }■ catch (5QL Except ion e) { e.p r i n t St a c kTr a c e() ;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

}

st ~ null;

" + idOrder);

}

}

Рисунок 26-- Метод «deleteOrder»

В этом методе реализован запрос на удаление данных в таблице базы данных «Order».

5.3 Выводы

В ходе проектирования приложения был разработан удобный и интуитивно понятный интерфейс приложения в программе SceneBuilder. А также добавлен функционал приложение путём написания программного кода на языке программирования Java в среде разработке Eclipse.

6 Тестирование приложения

Проверка на неправильный вход, представлена на рисунке 27. Вводим неправильный логин и пароль. А результате появляется окно с ошибкой. Проверка выполнена.

Рисунок 27 - Проверка на неправильный вход Проверка на правильный вход, представлена на рисунке 28. Вводим неправильный логин и пароль. А результате появляется окно с выбором таблиц. Проверка выполнена.

Рисунок 28- Проверка на правильный вход Проверка на создание записей с одинаковым первичным ключом, представлена на рисунке 29. Вводим в поле с первичным ключом идентификатор, существующий в таблице базы данных, запись не создаётся. Проверка выполнена.

Рисунок 29 - Проверка на создание записей с одинаковым первичным

ключом

Проверка на удаление взаимосвязанных элементов, представлена на рисунке 30. Пытаемся удалить элемент, который взаимосвязан с другими элементами, удаление не удается. Проверка выполнена.

Рисунок 30 - Проверка на удаление взаимосвязанных элементов

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

Заключение

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

Так же система имеет ряд защит от введения некорректных данных пользователем системы.

В ходе разработки были учтены все поставленные требования, а информационная система включила в себя все необходимые функции.

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

Информационная система интуитивно понятна и не вызывает сложности в работе.

Все поставленные задачи были выполнены.

Использованные источники:

1. Страница загрузки JavaFX Scene Builder [Электронный ресурс]. Режим доступа: https: //www.oracle.com/technetwork/j ava/j avase/downloads/j avafXscene builder-info-2157684.html (дата обращения 24.06.2019).;

2. Википедия [Электронный ресурс]. Режим доступа https://ru.wikipedia.org/wiki/JavaFX (дата обращения 24.06.2019).;

i Надоели баннеры? Вы всегда можете отключить рекламу.