Multi-platform application to practice quizzes from the course Operations Research M.

Overview

Downloads Domande Validazione Domande Stargazers Contributors MIT License Issues
java dart flutter

ROQuiz

Applicazione multipiattaforma per esercitarsi con i quiz del corso Ricerca Operativa M.


Versioni Disponibili

  • Desktop (Windows, Linux e MacOS)
  • Mobile (Android)

Funzionalità

  • L'app simula un quiz d'esame, pescando in modo casuale delle domande a risposta multipla a cui l'utente deve rispondere entro il tempo limite definito da un timer.
  • Pool di 87 domande differenti, divise per argomento (elenco aggiornato al 25 gennaio 2022).
  • Possibilità di scelta di argomenti specifici per le domande da includere nel quiz.
  • Possibilità di personalizzare le impostazioni dell'app in modo persistente:
    • Scelta di un numero specifico di domande (default: 16, selezionate casualmente).
    • Modifica del tempo a disposizione per il quiz (default: 18 minuti).
    • Controllo all'avvio dell'app se nella repository sono presenti nuove domande.
  • Possibilità di inserimento di domande personalizzate (modificando il file Domande.txt).

Demo

Desktop

EndQuizGIF TimeoutGIF
Terminazione quiz Tempo scaduto

Mobile

InstallMobileGIF MobileUsageGIF
Installazione versione mobile Terminazione quiz

Esecuzione

Versione Desktop (Windows e Linux)

  1. Scaricare l'ultima release (Windows, Linux o MacOS) ed estrarre il contenuto.
  2. Eseguire Launcher con doppioclick.

Versione Mobile (Android)

  1. Scaricare l'apk.
  2. Selezionare INSTALLA e INSTALLA COMUNQUE.

Formattazione domande

Le domande sono caricate da un file "Domande.txt" che ha il seguente formato:

  • (opzionale) Argomenti:
    • la riga di un argomento inizia col carattere speciale '@', seguito dal nome dell'argomento. Ogni riga di argomento è seguita dalle domande relative a quell'argomento, fino all'argomento successivo. Alla fine della riga dell'argomento possono essere usati caratteri non alfabetici (ad esempio '=') per separare visivamente le domande di argomenti differenti (tali caratteri verranno ignorati).
  • Domande:
    • una riga per la domanda;
    • 5 righe per le risposte (la riga inizia con una lettera maiuscola, seguita da un punto e dalla risposta);
    • una riga per la risposta corretta (una lettera da A a E);
    • una riga vuota se non è l'ultima domanda (questa riga separa la domanda da quella successiva, o dall'argomento successivo).

NB: non è importante la lettera con cui iniziano le risposte, basta che siano in ordine, altrimenti la risposta giusta e la lettera non corrispondono.

esempio (tre domande di due argomenti diversi nel file Domande.txt):

@Programmazione Matematica =============================================================================
Dato un insieme F, un intorno è
A. L'insieme di tutti i sottoinsiemi di F
B. L'insieme dei punti di F a distanza minore di epsilon da un punto x di F
C. Una funzione N: F -> 2^F
D. Una combinazione convessa di due punti x e y di F
E. Nessuna di queste
C

@Dualità ===============================================================================================
Se un problema di programmazione lineare (primale) ha soluzione ottima finita, allora:
A. Il suo duale non è detto che abbia soluzione ottima finita.
B. Anche il suo duale ha soluzione ottima finita e i valori delle soluzioni coincidono.
C. Anche il duale ha soluzione ottima finita, ma non è detto che i valori delle soluzioni coincidano.
D. Anche il duale ha soluzione ottima finita, ma i valori delle due soluzioni non coincidono.
E. Nessuna di queste
B

Quale tra queste affermazioni è falsa rispetto ad una corrispondenza primale-duale?
A. Ai costi corrispondono condizioni su variabili e viceversa.
B. I vincoli sono dati dalle righe di A per il primale, dalle colonne di A per il duale.
C. Ai costi corrispondono i termini noti e viceversa.
D. Ad un vincolo corrisponde una condizione su una variabile e viceversa.
E. Nessuna di queste.
A

Contribuire

Aggiunta domande o feature al progetto:

  1. Fare una fork della repository.
  2. Clonare la repository in locale.
  3. (Opzionale) Creare un nuovo branch.
  4. Aggiungere le modifiche:
  • Per aggiungere nuove domande: modificare il file 'Domande.txt', inserendo le nuove domande sotto gli argomenti relativi. NB: in caso non si sappia sotto quale argomento inserire una somanda, scriverlo successivamente in un commento nella pull request.
  • Per aggiungere delle feature, basta implementarle e integrarle col resto dell'applicazione (in caso di dubbi o domande sul funzionamento di alcune parti di codice, basta aprire un issue e cercherò di rispondere il prima possibile).
  1. Fare commit e push.
  2. Creare una pull request aggiungendo informazioni se necessario.

Proposta feature:

  1. Aprire un issue spiegando in cosa consiste la feature da aggiungere.
  2. Possibilmente aggiungervi la label "enhancement".

Roadmap

Features da aggiungere e sviluppi futuri:

  • aggiungere la scelta degli argomenti
  • impostazioni persistenti
  • download domande aggiornate
  • impostazione per abilitare/disabilitare il controllo delle domande aggiornate
  • deploy su MacOS
  • aggiornamento automatico del Readme quando vengono aggiunte nuove domande (GitHub actions)
  • aggiungere bottone per visualizzare l'elenco delle domande, dagli argomenti
  • fare il porting su mobile
  • aggiungere test domande duplicate
  • verifica aggiornamenti app
  • creare tool per inserire domande nuove (che sfrutta il test per le domande duplicate)
  • desktop: aggiungere impostazione dark mode (riferimento utile)
  • mobile: fare refactor e sistemare le classi (usare classe Quiz)
  • mobile: aggiungere scelta argomenti
  • mobile: aggiungere possibilità di caricare un file domande personalizzato
  • cambiare il controllo per le domande nuove e farlo in base alla data di modifica o ad un numero di versione

Built With

Desktop

Per l'implementazione dell'app desktop ho utilizzato Java 11 e JavaFX 11, come IDE Eclipse (versione 2020-03 (4.15.0)), e SceneBuilder per la creazione della grafica (file FXML). Vedere i passi seguiti per il setup del progetto.

versione Java: JavaSE-11 (jdk-11.0.11)
versione JavaFX: JavaFX 11 (javafx-sdk-11.0.2)

Mobile

Per l'implementazione dell'app mobile ho utilizzato Flutter, come IDE Visual Studio Code (versione 1.64.2).

versione Flutter: 2.8.1
versione Dart: 2.15.1

Disclaimer

L'obiettivo dell'applicazione è esercitarsi coi quiz dopo aver studiato la teoria (molto meglio se dal libro, in quanto è completo ed esaustivo). Non mi assumo responsabilità di alcun tipo nel caso di errori nelle domande o nelle risposte, né tantomento nel caso di bocciature potenti. Fatene un buon uso e buona fortuna con l'esame <3

Riferimenti

LinkedIn GitHub followers

You might also like...

Dart library for some Turkish language specific operations.

turkish This library provides these functions for Turkish language for Dart: Converting strings to lower, upper and title case. Regular and ignore cas

Dec 27, 2022

Implementing simple storage operations, CRUD (Create, Read, Update, Delete), using Firebase Firestore

Implementing simple storage operations, CRUD (Create, Read, Update, Delete), using Firebase Firestore

CRUD Firebase Implementing simple storage operations, CRUD (Create, Read, Update

Oct 29, 2022

A shopper Flutter app that use BloC pattern and CRUD operations with different ways(memory/sqlite/http)

A shopper Flutter app that use BloC pattern and CRUD operations with different ways(memory/sqlite/http)

The project is maintained by a non-profit organisation, along with an amazing collections of Flutter samples. We're trying to make continuous commits

Nov 10, 2022

Boolean operations on polygons (union, intersection, difference, xor)

poly_bool_dart Boolean operations on polygons (union, intersection, difference, xor) (this library is a port for flutter of polybooljs Features Clips

Jan 6, 2023

Flutter plugin that leverages Storage Access Framework (SAF) API to get access and perform the operations on files and folders.

Flutter plugin that leverages Storage Access Framework (SAF) API to get access and perform the operations on files and folders.

Flutter plugin that leverages Storage Access Framework (SAF) API to get access and perform the operations on files and folders.

Nov 26, 2022

A Flutter Task App with Parse (Back4app) as the backend demonstrating CRUD operations.

A Flutter Task App with Parse (Back4app) as the backend demonstrating CRUD operations.

Siro's Task App Description A Flutter Task App with Parse (Back4app) as the backend demonstrating CRUD operations. Getx State Management Objective Thi

Aug 27, 2022

Application to practice creating different types of screen in flutter

Application to practice creating different types of screen in flutter

Diseño de paginas en flutter. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

Nov 29, 2021

Flutter_news - News application developed for practice, learning and testing the potential of this powerful Framework Flutter

Flutter_news - News application developed for practice, learning and testing the potential of this powerful Framework Flutter

flutter_news News application developed for practice, learning and testing the potential of this powerful Google's UI toolkit. Resources Packages pub

Dec 17, 2022

A simple flutter application from an Udemy course to exchange the following currencies: real, dollar and euro using HG Brasil API.

cambiador Conversor de moedas como Dollar, Euro e Real. Getting Started This project is a starting point for a Flutter application. A few resources to

Mar 17, 2022
Comments
  • [Mobile] Eccezione

    [Mobile] Eccezione "setState() or markNeedsBuild() called during build"

    Quando provo a utilizzare QuestionWidget in ViewQuiz, ottengo questo errore:

    Il problema sembra essere legato al fatto che la callback assegnata a onTap chiami setState(), aggiornando lo stato del widget padre ViewQuiz. Tuttavia, provando a sostituire la callback (che in realtà è una closure: (int index) => _setUserAnswer(index)), succede questo:

    Che fa pensare il problema sia relativo al timer.

    Soluzione provvisoria: costruire il widget interamente all'interno di ViewQuiz.

    StackOverflow thread

    minor 
    opened by mikyll 1
  • [Desktop] Jlink Error - Automatic Modules

    [Desktop] Jlink Error - Automatic Modules

    opened by mikyll 1
  • [Desktop] NullPointerException in Informazioni

    [Desktop] NullPointerException in Informazioni

    NullPointerException quando si prova a cliccare i link nella sezione Informazioni dell'app desktop, se si è arrivati al Menu dopo aver terminato un quiz. Non causa crash a runtime.

    Molto semplice da sistemare

    bug minor 
    opened by mikyll 0
  • New features

    New features

    Aggiunto il menu principale: -scelta argomenti (se presenti); -modifica delle impostazioni; -visualizzazione informazioni.

    NB: file Domande.txt contiene le domande divise per argomenti

    opened by mikyll 0
Releases(v1.5)
  • v1.5(Jul 16, 2022)

    Downloads v1.5

    Installazione ed Esecuzione

    Desktop

    1. Scaricare la versione di ROQuiz per il proprio Sistema Operativo: Windows x64, Linux x64, o macOS ARMx64.
    2. Estrarre il contenuto dell'archivio.
    3. Eseguire Launcher con doppioclick.

    Mobile

    1. Scaricare roquiz-mobile.apk.
    2. Selezionare INSTALLA ed INSTALLA COMUNQUE.

    Features

    Versione 1.5 Desktop Mobile
    Simulazione quiz ✔️ ✔️
    Correzione risposte ✔️ ✔️
    Scelta argomenti ✔️ ✔️
    Lista domande per argomento ✔️ ✔️
    Scelta numero domande del quiz ✔️ ✔️
    Scelta timer ✔️ ✔️
    Scelta per mescolare le risposte ✔️ ✔️
    Scelta del tema (chiaro/scuro) ✔️ ✔️
    Controllo domande aggiornate ✔️
    Controllo aggiornamenti app ✔️
    Impostazioni persistenti ✔️ ✔️
    Possibilità di personalizzare le domande ✔️
    Numero domande 87 87
    Usa JavaFX Sì 💀 No 🧠

    Change Log

    • Risolto Issue #4;
    • Risolto Issue #6;
    • Risolto Issue #7;
    • Aggiunto il tema scuro;
    • Aggiunta la possibilità di mescolare le risposte (così da evitare di memorizzarne la posizione);
    • Aggiunta la possibilità di visualizzare la lista completa delle domande di un certo argomento;
    • Rimosso il focus dal numero e dal testo della domanda;
    • Aggiunta la possibilità di controllare se sono disponibili nuove versioni dell'app;
    • Refactor dei controlli degli aggiornamenti (sia file domande che versioni dell'app);
    • Aggiunto un pdf con la spiegazione delle domande del quiz;
    • Aggiunta una copia della licenza nell'archivio;
    Source code(tar.gz)
    Source code(zip)
    roquiz-mobile.apk(5.96 MB)
    ROQuizDeployLinux_x64.tar.gz(37.01 MB)
    ROQuizDeployMac_ARMx64.zip(35.73 MB)
    ROQuizDeployWindows_x64.zip(34.82 MB)
  • v1.4(Jan 20, 2022)

    Downloads v1.4

    Feature

    Versione 1.4 Desktop Mobile
    Simulazione quiz ✔️ ✔️
    Correzione risposte ✔️ ✔️
    Scelta argomenti ✔️ ✔️
    Scelta numero domande ✔️ ✔️
    Scelta timer ✔️ ✔️
    Impostazioni persistenti ✔️
    Controllo domande aggiornate ✔️
    Calcolo range voto ✔️
    Domande presenti 87 87
    Usa JavaFX Sì 💀 No 🧠

    Installazione ed Esecuzione

    Desktop

    1. Scaricare ROQuizDeployWindows.zip, ROQuizDeployLinux.tar.gz o ROQuizDeployMac.tar.gz, a seconda del sistema operativo, ed estrarne il contenuto.
    2. Eseguire Launcher con doppioclick.

    Mobile

    1. Scaricare roquiz-mobile.apk.
    2. Selezionare INSTALLA ed INSTALLA COMUNQUE.

    Change Log

    Cambiamenti rispetto alla versione precedente:

    1. Aggiunte impostazioni persistenti, mediante un file JSON.
    2. Aggiunta la possibilità di scaricare le domande aggiornate dalla repo di GitHub.
    Source code(tar.gz)
    Source code(zip)
    roquiz-mobile.apk(5.20 MB)
    ROQuizDeployLinux.tar.gz(34.26 MB)
    ROQuizDeployMac.tar.gz(30.81 MB)
    ROQuizDeployWindows.zip(32.48 MB)
  • v1.3(Jan 15, 2022)

    Downloads v1.3

    Esecuzione

    Desktop

    1. Scaricare ROQuizDeployWindows.zip o ROQuizDeployLinux.tar.gz, a seconda del sistema operativo, ed estrarne il contenuto.
    2. Eseguire Launcher con doppioclick.

    Mobile (Beta)

    1. Scaricare roquiz_v1.3-mobile_beta.apk.
    2. Selezionare INSTALLA ed INSTALLA COMUNQUE.

    Change Log

    Cambiamenti rispetto alla versione precedente:

    1. Aggiunto un bottone per tornare al menu principale.
    2. Qualche piccola correzione.
    3. Ridotte le dimensioni del JRE per Linux.
    Source code(tar.gz)
    Source code(zip)
    ROQuizDeployLinux.tar.gz(33.73 MB)
    ROQuizDeployWindows.zip(32.01 MB)
  • v1.3-mobile_beta(Jan 2, 2022)

    Downloads v1.3-mobile_beta

    ROQuiz per Android. Questa è una prima versione (beta) per mobile, con le funzionalità base: l'utente può avviare il quiz in cui sono presenti 16 quesiti casualmente pescati dai 85 presenti in Domande.txt, e verrà avviato un timer di 18 minuti. Allo scadere del tempo l'utente non può più selezionare le risposte, vengono visualizzate quelle corrette, e viene mostrato il range di voto che dipende dall'esito dello scritto.

    Esecuzione

    1. Scaricare roquiz_v1.3-mobile_beta.apk.
    2. Selezionare INSTALLA ed INSTALLA COMUNQUE.

    Prossime Versioni

    Nelle prossime versioni verranno aggiunte le funzionalità di scelta degli argomenti da includere nel quiz, le possibilità di modificare le impostazioni (tramite cui scegliere il numero di quesiti per quiz ed il tempo del timer), e la possibilità di controllare se sono presenti nuove domande. Inoltre, verranno realizzate le build per MacOS e iOS.

    Source code(tar.gz)
    Source code(zip)
    roquiz_v1.3-mobile_beta.apk(5.16 MB)
  • v1.2(Jul 21, 2021)

    Downloads v1.2

    Esecuzione

    1. Scaricare ROQuizDeployWindows.zip o ROQuizDeployLinux.tar.gz, a seconda del sistema operativo, ed estrarne il contenuto.
    2. Eseguire Launcher con doppioclick.

    Nuove feature (#1)

    Cambiamenti rispetto alla versione precedente:

    1. Aggiunto un menu navigabile che consente di: -scegliere gli argomenti delle domande del quiz (viene controllato se il numero di domande scelte è sufficiente rispetto a quelle del quiz); -modificare le impostazioni (scegliendo quindi il numero di domande per quiz ed il tempo, in minuti, del timer); -visualizzare le informazioni sull'applicazione.
    2. Aggiunte nuove domande (10 in totale).
    3. Aggiunti i controlli sulla formattazione del documento (con segnalazione dell'eventuale riga errata).

    Inoltre: 4. Il file contenente le domande è stato rinominato da Quiz.txt a Domande.txt, ed è stato formattato per inserirvi i vari argomenti (dunque le domande sono state riorganizzate). 5. È stata aggiunta la versione per Linux. 6. Le dimensioni dell'applicazione sono state ridotte.

    Source code(tar.gz)
    Source code(zip)
    ROQuizDeployLinux.tar.gz(34.80 MB)
    ROQuizDeployWindows.zip(32.01 MB)
  • v1.1(Jul 10, 2021)

  • v1.0(Jul 10, 2021)

    Downloads v1.0

    • caricamento domande da file;
    • selezione risposte tramite radio button;
    • conferma prima di terminare;
    • timer che conta quanto tempo rimane, partendo da 18 minuti e allo scadere fa terminare il quiz;
    • visualizzazione dei risultati;
    • correzione delle risposte (con colori differenti).
    Source code(tar.gz)
    Source code(zip)
Owner
Michele Righi
Bachelor's Degree in Software Engineering. University of Bologna
Michele Righi
A flutter application that allows users to test their knowledge through quizzes made for specific topics.

Quiz_App A flutter application that allows users to test their knowledge through quizzes made for specific topics. Setup The application consists of a

null 0 Dec 29, 2021
Flutter-course - Projects of the course to learn Flutter!

?? Flutter Course Projects of the course to learn Flutter! ?? What is it? Repo with all projects made during the Flutter Course provided by Daniel Cio

Alícia Foureaux 1 Jan 3, 2022
Flutter course chatapp - A Flutter Course Chat App Starter

flutter_course_chat_app_starter Getting Started Firebase installations 1- Open F

Dhari 0 Jan 5, 2022
Stroke order animations and quizzes for Chinese characters for use in Flutter apps

Stroke order animator This package implements stroke order animations and quizzes of Chinese characters based on the Make me a Hanzi data. That data i

Felipe Peter 54 Dec 27, 2022
Sneakers Catalogue Application (Multi-Platform)

Spatu ??‍?? Tentang Pengembang Probo Krishnacahya ?? Tentang Aplikasi Deskripsi Proyek: Spatu adalah aplikasi lintas platform berbasis Android OS dan

Probo Krishnacahya 1 Sep 19, 2022
A Flutter application that demonstrate simple CRUD operations with Firebase cloud database.

Cricket Team A Flutter application that demonstrate simple CRUD operations with Firebase cloud database. Preview Home Empty Swipe Add Player Update Pl

Bhavik Makwana 45 Jun 19, 2021
A Mobile application developed with Flutter and Dart to do math operations with binary numbers.

Math operations with Binary Numbers Readme PT About this Project Mobile application developed with Flutter and Dart to do math operations as sum, subt

Manoel Ribeiro 3 Nov 3, 2020
Flutter Multi-platform allows developers to unleash their app to run on the wide variety of different platforms with little or no change.

Flutter Multi-platform sample Flutter Multi-platform allows developers to unleash their app to run on the wide variety of different platforms with lit

MindInventory 22 Dec 31, 2022
An EMI calculator multi-platform app using Flutter

emi_calc_app An EMI calculator multi-platform app using Flutter. How to run the App Fork or download the project and extract it. Open Terminal / CMD a

SAHIL PAL 1 Nov 8, 2022
Free and open source multi-platform novel reader.

Nacht Free and open source multi-platform novel reader.

Nacht 4 Dec 29, 2022