diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..2b4f8cd
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.configuration.updateBuildConfiguration": "automatic"
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..aaedb37
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,115 @@
+
+
+
+ 4.0.0
+
+ ru.egspt.moodle
+ anyreport
+ 0.1
+
+ anyreport
+
+ http://www.example.com
+
+
+ UTF-8
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.poi
+ poi
+ 5.2.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 5.2.2
+
+
+ org.apache.poi
+ poi-ooxml-schemas
+ 4.1.2
+
+
+ org.apache.poi
+ poi-scratchpad
+ 5.2.2
+
+
+ org.apache.poi
+ ooxml-schemas
+ 1.1
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+ 2.8.2
+
+
+ org.apache.cassandra
+ cassandra-all
+ 4.0.3
+
+
+ junit
+ junit
+ 4.11
+ test
+
+
+ mysql
+ mysql-connector-java
+ 8.0.28
+
+
+
+
+
+
+
+
+ maven-clean-plugin
+ 3.1.0
+
+
+
+ maven-resources-plugin
+ 3.0.2
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+
+ maven-surefire-plugin
+ 2.22.1
+
+
+ maven-jar-plugin
+ 3.0.2
+
+
+ maven-install-plugin
+ 2.5.2
+
+
+ maven-deploy-plugin
+ 2.8.2
+
+
+
+ maven-site-plugin
+ 3.7.1
+
+
+ maven-project-info-reports-plugin
+ 3.0.0
+
+
+
+
+
diff --git a/report.xlsx b/report.xlsx
new file mode 100644
index 0000000..e49b82c
Binary files /dev/null and b/report.xlsx differ
diff --git a/src/main/java/ru/egspt/moodle/Access.java b/src/main/java/ru/egspt/moodle/Access.java
new file mode 100644
index 0000000..df912ce
--- /dev/null
+++ b/src/main/java/ru/egspt/moodle/Access.java
@@ -0,0 +1,19 @@
+package ru.egspt.moodle;
+
+public class Access {
+ private static String userName = "esoe";
+ private static String password = "psalm6912";
+ private static String url = "jdbc:MySQL://45.128.206.87:3306/moodle";
+
+ //если значение userName отсутствует, запросить его у пользователя
+ public static String getUserName(){
+ return userName;
+ }
+ public static String getPassword(){
+ return password;
+ }
+ public static String getURL(){
+ return url;
+ }
+
+}
diff --git a/src/main/java/ru/egspt/moodle/App.java b/src/main/java/ru/egspt/moodle/App.java
new file mode 100644
index 0000000..0594680
--- /dev/null
+++ b/src/main/java/ru/egspt/moodle/App.java
@@ -0,0 +1,14 @@
+package ru.egspt.moodle;
+
+/**
+ * графический интерфейс для
+ * moodle.anyreport
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Работает подготовщик отчетов по результатам тестирования пользователей ..." );
+ }
+}
diff --git a/src/main/java/ru/egspt/moodle/Base.java b/src/main/java/ru/egspt/moodle/Base.java
new file mode 100644
index 0000000..95d737c
--- /dev/null
+++ b/src/main/java/ru/egspt/moodle/Base.java
@@ -0,0 +1,503 @@
+package ru.egspt.moodle;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/**
+ * Класс предоставляет методы работы с базой данных
+ * передает данные классам-пользователям
+ * Включает:
+ * - подключение к серверу баз данных
+ * - подключение к базе данных
+ * - подключение к таблице базы данных
+ * - запрос данных из таблицы
+ * -
+ */
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.time.LocalTime;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import java.util.ArrayList;
+
+import javax.swing.JOptionPane;
+
+public class Base {
+ private ArrayList users;
+ private ArrayList results;
+ private ArrayList quizes;
+
+ /**
+ * @return the quizes
+ */
+ public ArrayList getQuizes() {
+ return quizes;
+ }
+ /**
+ * @param quizes the quizes to set
+ */
+ public void setQuizes(Connection conn, Base base) {
+ ArrayList quizList = new ArrayList<>();
+ try{
+ Statement stmt = conn.createStatement();
+ //берем данные о результатах тестирования на сервере
+ ResultSet rs = stmt.executeQuery("SELECT id, name, timelimit FROM mdl_quiz");
+ while(rs.next()){
+ int id = rs.getInt("id");
+ String name = rs.getString("name");
+ //перебираем результаты тестирований, пишем в класс.
+ int i = 0;//
+ while (i < base.getResults().size()){
+ if (base.getResults().get(i).getQuizid() == id){
+ Quiz q = new Quiz();
+ q.setId(id);
+ q.setName(name);
+ int j = 0;
+ boolean b = false;
+ while (j < quizList.size()){
+ if (q.getId() == quizList.get(j).getId()){
+ b = true;
+ }
+ j++;
+ }
+ if (b != true){
+ quizList.add(q);
+ }
+ }
+ i++;
+ }
+ }
+ }
+ catch (Exception ex){
+ System.err.println ("Подключение к серверу баз данных не установлено ... ");
+ ex.printStackTrace();
+ System.out.println (ex);
+ }
+ this.quizes = quizList;
+ }
+ /**
+ * @return the users
+ */
+ public ArrayList getUsers() {
+ return users;
+ }
+ /**
+ * @param users the users to set
+ */
+ public void setUsers(ArrayList users) {
+ this.users = users;
+ }
+ /**
+ * @return the results
+ */
+ public ArrayList getResults() {
+ return results;
+ }
+ /**
+ * @param results the results to set
+ * @throws IOException
+ */
+
+ public void createExcellReport(Connection conn, Base base) throws IOException{
+ System.out.println("Формирование report.xlsx ...");
+ // создание самого excel файла в памяти
+ XSSFWorkbook book = new XSSFWorkbook();
+ // создание листа
+ XSSFSheet sheet = book.createSheet("Report");
+
+
+ //формируем заголовки
+ System.out.println("Формируем заголовки таблицы ...");
+ ArrayList