diff --git a/doc/anyreport.puml b/doc/anyreport.puml new file mode 100644 index 0000000..304a90b --- /dev/null +++ b/doc/anyreport.puml @@ -0,0 +1,139 @@ +@startuml anyreport +!theme cerulean-outline +package moodle-anyreport{ + ' сборка приложения + class App{ + - accessPane : AccessPane + - tagPane : TagPane + - reportPane : ReportPane + } + 'панель подключения к базе данных + class AccessPane{} + AccessPane --> App + 'панель управления тегами для формирования выборки пользователей + class TagPane{} + TagPane --> App + 'панель отображения отчета по выборке + class ReportPane{} + ReportPane -->App + + /'методы обработки действий пользователя + клики мыши, нажатия клавишь, итд. + '/ + class TagControls{ + + enterPressed() : void + + addTag() : void + + removeTag() : void + + clearTags() : void + } + TagControls --> TagPane + + class AccessControls{ + + connect(Base base, JPanel pane) : void + + disconnect(Base base, JPanel pane) : void + } + AccessControls --> AccessPane + 'Пользователь попросил сохранить отчет в файл + 'Указывает путь куда сохранить + class ReportControls{ + - path : String + + getTableReport() : void + + getXLSXReport() : void + + getTextReport() : void + } + ReportControls --> ReportPane + + 'модель данных для текстового отчета + class ReportTextModel{ + 'количество пройденных тестов + 'список пройденных тестов + 'количество пользователей в выборке + 'количество уникальных пользователей + } + ReportTextModel --> ReportControls + 'модель данных для отчета xlsx + class ReportXLSXModel{ + - path : String + + ReportXLSXModel(Data data) : void + + setPath() : void + + getPath() : String + + CreateXLSXReport() : void + } + ReportXLSXModel --> ReportControls + 'модель данных для отображения в gui + class ReportTableModel{} + ReportTableModel --> ReportControls + + /' + получение данных из базы данных + доступ к базе данных + '/ + class Base{ + - connection : Connection + - login : String + - password : Array + - url : String + + setConnection(Connection connaction) : void + + getConnaction() : Connaction + + connect() : bolean + + disconnect() : void + } + Base --> Data + Base --> AccessControls + + ' хранение и представление данных + class Data{ + - userlist : UserListModel + - results : ArrayList + - quizes : ArrayList + } + Data --> ReportTextModel + Data --> ReportXLSXModel + Data --> ReportTableModel + + /'формирование перечня пользователей + - на основании тегов + - на основании исходных перечней (из файла) + '/ + class UserListModel{ + - userlist : ArrayList + + getUsers() : ArrayList + + setUsersByTag(TagModel tags) : void + + setUsersFromFile(File file) : void + } + UserListModel --> Data + + class User{ + - id : int + - login : String + - mail : String + } + User --> UserListModel + + class Result{ + - id : int + - quizid : int + - userid : int + - grade : double + - time : Long + } + Result --> Data + + class Quiz{ + - id : int + - name : String + } + Quiz --> Data + + class TagModel{ + - tags : ArrayList + + setTags(ArrayList tags) : void + + getTags() : ArrayList + + addTag(String tag) : void + + removeTag(String tag) : void + } + TagModel --> TagControls + TagModel --> UserListModel +} + +@enduml \ No newline at end of file diff --git a/src/App.java b/src/App.java index 57a5708..46a8aea 100644 --- a/src/App.java +++ b/src/App.java @@ -1,3 +1,7 @@ public class App { + public static void main( String[] args ) + { + System.out.println( "Работает подготовщик отчетов по результатам тестирования пользователей ..." ); + } }