Список использованной литературы
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"));