Guidelines for Final Project

Deadlines: Initial Design (2%): Due 7/23, Final Project (6%): Due 7/30

This is a group project (maximum 3 member teams)


Objective:

Design, develop and implement a working software system in Java. All code must be maintained on GitHub


Problem Statement Quiz Management System

Congrats you’re hired to create an adaptive quiz project that lets users give mock exams for any three genres of their choice. You can find more details about each perspective below:

1. Users Perspective:

● All users must Sign Up first.

● If the user signs in without signing up, prompt an error message.

● Users should be able to register by specifying username and password. Usernames (Email ID) (Validate email ID - should have “@” and “.com” or “.edu”) should be unique and passwords must have a minimum of 8 characters including an uppercase, lowercase, symbols, and a digit. Validate the same.

● On signing up: it is necessary that the student selects any one of the three subscription plans.

● In order to buy a subscription plan, the student must put in

○ 16-digit card number

○ expiry of the card (MM/YY)

○ CVV number

● Users should be able to log in to the app with his/her own credentials.

● Once logged in, the user is asked to select any one of the three subjects. By clicking the keys 1,2 or 3, the user decides the genre.

● After selecting the genre, the user must press the ENTER key in order to start the quiz.

● Once the quiz starts, the user is expected to select the correct option out of the four options given using keys a, b, c, d with a time period of 30 secs.

● The student must confirm the answer using key 1. After confirming, the system shall switch to the next question.

● If the student is not able to answer the question within 30 secs, the system shall move onto the next question.

● On completion of the quiz, the user can view the scores 

2. System’s Perspective:

● If any user logins without signing up, the system must throw an error message.

● The system must validate the user. If a user is authenticated by the system, it will be directed to the particular Home Page (or View or Menu) and if not authenticated by the system the message “Either username or password is incorrect” must be displayed to the user.

● After the users successfully login to the system, the system must display “WELCOME (name of the user)”

● Once the user selects the choice of genre of the quiz and presses the ENTER key to start the test, the system must display the question along with its 4 options having id’s a, b, c, d.

● Make the quiz as adaptive as possible for example

○ There shall be two sets: easy and medium, each having 20questions.

○ The first 10 questions must be from a list of easy questions selected at random.

○ If a user gets five questions correct from the first set of 10 easy questions, the next 10 questions to be displayed at random must be from the list of medium level questions.

○ If a user does not get five questions correct from the first set of 10 easy questions, the next 10 questions to be displayed at random must be from the list of easy level questions.

● The example above has only easy and medium, but you should consider easy, medium and hard.

● It would have many cases, consider each as a level, if the user crosses easy level, display medium and if the user crosses medium level, the system would display hard level questions. If the user fails to cross a level, the next set of questions would be from the level lower than the current.

● Each question is of 5 marks each. For every wrong answer, 2 marks shall be deducted from the total marks.

● For each question, the user is given 30 secs. The user must answer each question within the stipulated time, failing which, the system moves onto the next question.

● The system should store the result of the quiz to the corresponding user.

● The system should ask if the user wants to continue, or sign out, and then ask some other user to sign in or sign up or quit to end the application.

● Store all results, when the user signs in again, he/she should be able to see his/her results.

● Print a report card of the quiz along with the correct answers.

● Be as creative as you can. Think of the workflow like from the time you sign up or sign in on canvas and open your quiz and take the same.


System Features:

The System that you are designing offers a variety of design choices. You are encouraged to design the software system that provides the most realistic user experience. Here are some of the required functionalities:

• Users should be able to register and login to their accounts using their unique credentials.

• Make your system user friendly by providing enough guidelines and help to use the system (For example: if your system is expecting any input in a specific format, be sure to specify that in the instructions as well as the Testing part of your report)

• Note: Your application must have state persistence by saving the necessary data to files. State persistence allows your system to outlive the process that created it.

You have tremendous amount of freedom in designing this application. You are welcome to add any additional functionality to your system. Just imagine that you are an actual developer of the application.

Note: The design of a Graphical User Interface (GUI) is optional. You can also develop a command-line based system.


System Design & Development:

The final project includes two major components: Project Design and Implementation.

Design (2%): The design component will consist of the software design for the project and will include the list of all classes (member variables and functions) to be used, their relationships & collaboration, as well as databases/files. The initial design must precede any implementation. You will start by analyzing the requirements of the project and by identifying the classes required along with attributes and functionalities. A doc/docx document listing the design along with UML diagrams (Class diagrams, activity diagrams, etc.) must be submitted by the deadline on Canvas. Please include the following:

• Skeleton Code with all classes (with member attributes and member functions)

• What are class hierarchies and relationships? (in your report)

• All other data structures or files to be used (in your report)

• Group Peer evaluations are REQUIRED and it counts towards final grade. Each member is ideally required to put in equal amount of effort.

• Also setup a private repository for your source code on github and add all instructors as collaborators (See instructions on Canvas).

It would be beneficial for you to analyze your system thoroughly and provide detailed UML diagrams. Here are some of the questions, answering those will help you put on the good path:

• How many classes will you have and how will they interact?

• How will you store userID, passwords, menu options?

• How will you represent the user options?

• How will you deal with uniqueness of questions?

• How will you link quiz results to the user?

Implementation (6%): Once you complete the initial design, setup a private GitHub repository and start implementing the Quiz system, and user functionalities separately. Test these separately with individual drivers. Be sure to add the appropriate user-friendly menu options that would allow the user to select various actions easily. Ensure that the menu options only work when correct input is provided by the user. Test each option individually to ensure that all available functionality is properly implemented. All source code must be shared amongst team members and instructors via github. Now imagine yourself as the user or the system and observe the behavior of the system (and see how it changes). Reflect on the efficiency of your choices. Review your initial design and make the necessary changes to remove any unnecessary attributes and functions. You may have to add some more functionality that you might have missed in your initial design. Implement the updated design and report the updates to the initial design along with a discussion regarding the efficiency of your choices. A doc/docx document listing the final design including UML diagrams must be submitted along with working Source Code and video demo by the deadline. See the checklist given below.

Testing: Develop and build unit tests for each operation. Create different drivers for testing each component of the system as a user/airline separately and then integrate the entire system and test with a separate main driver. Please ensure that the complete system is properly tested before submission.


Deliverables:

The following items must be submitted:

All source and header files related to the system implementation (on Canvas as well as GitHub). Source code must be properly organized, readable, and must use proper best coding practices.

● All drivers that are part of the testing from all perspectives separated in different folders.

● A README file with any information regarding compilation and testing I need to know in order to successfully compile and run your system. Include any other files needed to compile or test

● The report file with the final design with discussion, and details of testing activities. Feel free to show additional testing you performed in the report

● Video Demo (10 minutes long max) showing all features of your working system

● Group Peer evaluations are REQUIRED and it counts towards final grade. Each member is ideally required to put in equal amount of effort.


Project Checklist:

You can use the following checklist to ensure that you have submitted everything required for the project:

• Did you submit evidence of successful compilation or testing (screen captures)?

• Did you submit the instructions required to compile your code?

• Did you add all instructors as collaborators to your private GitHub repository?

• Did you submit all files including any new header files used for compilation on Canvas (compressed as one file)?

• Did you implement user’s features: password, unique ID, Order Entry, etc.?

• Did you submit a report with your designs (and UML diagrams), evidence of successful testing of all features?