Skip to main content

This package helps you manage taking quizzes

Project description

Quizzer App

BuildStamp

Build Status

The Quizzer App is a software package designed to conduct quizzes. It comprises two sub-packages:

Sub-package #1: User Interface/Quiz Manager (Folder Name: quizuiflowcontrol)

This is the front end of the app where users interact with the system and manage quizzes:

Module1: User interface

  • Handles main menu
  • Greets the user
  • Displays the menu

File: main_menu.py

class QuizApp: is used to manage the Quiz Application user interface and flow.

Functions

  1. __init__: Initializes the QuizApp.
  2. run: Starts the main application loop.
  3. display_welcome_message: Displays a welcome message.
  4. ask_user_name: Asks the user to input their name.
  5. main_menu: Displays the main menu and processes user input.
  6. show_menu_options: Shows the available menu options.
  7. display_error_message: Displays an error message for invalid selections.
  8. exit_app: Exits the application.
  9. list_quizzes: Lists all available quizzes.
  10. take_quiz: Handles the logic of taking a quiz.

Module2: Flow control

  • Displays a list of available quizzes
  • Handles the selection process
  • Starts the quiz
  • Manages the flow of questions and answers during a quiz session
  • Displays and save the results at the end of a quiz

File: quizmanager.py:

class QuizManager: is used to manages the quizzes, including listing, taking, and saving results of quizzes

Functions

  1. __init__: Initializes the QuizManager.
  2. _build_quiz_list: Builds a list of quizzes from JSON files.
  3. list_quizzes: Lists all available quizzes.
  4. take_quiz: Facilitates taking a quiz.
  5. print_results: Prints the results of the quiz.
  6. save_results: Saves the quiz results to a file.

Sub-package #2: Creates quiz objects from databases gathered from free online sources and communicates with the sub-package #1. (Folder name: quizutils)

Module1: Parsing questions from databases to quiz objects

  • Retrieve questions from databases such as JSON
  • Parses quizzes

File: quizparser.py

class JSONQuizParser: is used for importing quiz data from JSON file.

Functions:

  1. import_data: The function takes the JSON file path and then opens/loads the data into a dictionary, which is the output of the function.
  2. create_question_obj: The function takes the quiz data dictionary (output of the function import_data), and returns the question objects that contain information for use during the quiz session.
  3. parse_quiz: The main function that calls others for extracting the quiz data from the JSON file and creates a quiz object.

Module2: Creates quiz objects

  • Defines quiz properties such as questions, answers
  • Enables to take the quiz
  • Keeps track of the participant’s score
  • Times the quiz duration for each participant

File: quiz.py

class Quiz: contains all information for the quiz session, including questions, answers, and points.

Functions:

  1. print_header: The function takes idx, which is the number of the question, and prints the header of each question.
  2. print_results: The function takes a quiz to visualize the user's name for printing the user results.
  3. take_quiz: The function runs the quiz session after the user selects the quiz to take.
  4. cal_score: The function calculates the score of the quiz session. Calculating the score is divided into two parts: calculating the question's score and extra score, which is related to the user's time spending on each question. For the extra score, if the user answers correctly, they will get an extra 5 points for answering within 1 second. Otherwise, they will get the ratio of 5 over the time spent (in seconds). If they answer incorrectly, they will not get the extra score.

class Question: stores all the question information for running the quiz session.

class QuestionTF: stores the True or False question type. This object is used when the program is waiting for the user's answer.
Functions:

  1. ask: The function prints the True/False question information to the users and gets a response from them.

class QuestionMC: stores the Multiple Choice question type. This object is used when the program is waiting for the user's answer.
Functions:

  1. ask: The function prints the Multiple Choice question information to the users and gets a response from them.

class Answer: stores the answers of each question.

Overall, the package is a cohesive system for conducting quizzes efficiently, tracking performance, and managing quiz content.

Getting Started

To start using the Quiz App, follow these steps:

Prerequisites

  • Ensure you have Python installed on your system. The application has been tested with Python 3.9 and higher.

Quiz App Installation and Usage Guide

There are two methods to install the Quiz App:

Method 1: Using pip

You can install the Quiz App directly using pip by running the following command:

pip install quizzerapp

Running the App

After installing through pip, you can run the application as a Python module from any location in your terminal or command prompt:

python -m Quizzer

Method 2: Cloning or Downloading the Repository

  1. Clone or download the Quiz App repository to your local machine.
  2. Navigate to the app directory in your terminal or command prompt.

Running the App

  • Execute the application by running the following command:
python main.py

Using the Quiz App

Once the app is running, you will be greeted with a welcome message and prompted to enter your name.

Main Menu

The main menu offers the following options:

  • List Quizzes (L): Displays a list of available quizzes.
  • Take a Quiz (T): Allows you to select and take a quiz.
  • Exit the App (E): Exits the application.

Taking a Quiz

  1. Select the option to take a quiz.
  2. Enter the quiz number you wish to attempt.
  3. Answer the questions as they appear.
  4. Upon completion, your results will be displayed.

Viewing Quiz Results

  • After completing a quiz, your results are displayed on the screen, showing your score and the number of correct answers.

Troubleshooting

To test the Quizzer app, you can run the following code:

python3 unittest_main.py

This test conducts unit tests each of the four modules.

If you encounter any issues:

  • Check that you are using a compatible Python version.
  • Ensure the JSON files for quizzes are correctly formatted and located in the 'Quizzes' folder.
  • Ensure the JSON files for quizzes are correctly formatted and located in the 'db_quizzes' folder.
  • Review any error messages in the console for guidance.

Contributing

Contributions to the Quiz App are welcome. Please feel free to fork the repository, make changes, and submit pull requests.

License

Student names:

    1. Kulaphong Jitareerat, 67761544
    1. Nijiati Abulizi, 59764100

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

QuizzerApp-0.0.3.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

QuizzerApp-0.0.3-py3-none-any.whl (25.2 kB view details)

Uploaded Python 3

File details

Details for the file QuizzerApp-0.0.3.tar.gz.

File metadata

  • Download URL: QuizzerApp-0.0.3.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for QuizzerApp-0.0.3.tar.gz
Algorithm Hash digest
SHA256 9412a969a7c41f9e42d00ff311b856a8c1c4cd24de2450864db2a6fb1adde35d
MD5 b5f46eb42ee9708593110494f0f4cfb0
BLAKE2b-256 3b56c1313e9fa661c822ab81414f38891c541972cd67f918271e45b51a7da185

See more details on using hashes here.

File details

Details for the file QuizzerApp-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: QuizzerApp-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 25.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for QuizzerApp-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 530dd1854388ea71d1bdf871a0befbc05295607324bf5c45b0c8620b8b154191
MD5 58b46e2dc982338d09d543eb2b078e58
BLAKE2b-256 8288f00cf121f5c19bf92608e3a3480df6f2d1f42907a5507373a9a8904f8fe0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page