The name of this project is "Examination Creation System."
The program enables the user to create and save multiple-choice exams that are automatically graded once taken. The scores are saved and shown in a list along with exam names and descriptions. Additionally, the user can shuffle the answer choices for the questions to make cheating more difficult and can easily edit exams after they are already created.
ArrayList<Question>
to store all the questions in the examString name
to store the exam's nameString description
to store the exam's descriptionint score
to store the latest score achieved on the exam
public Exam(String name, String description)
public Exam(String name)
public String toString()
to return exam name and descriptionpublic void addQuestion(Question question)
to add a question to the exampublic void take()
to take the exam and get a scorepublic int getScore()
to return the score on the exampublic int getNumQuestions()
to get the number of questions on the exampublic void shuffleExam()
to shuffle the answer choices on each of the questionspublic void printAllQuestions()
to print all the questionspublic void printAllQuestionsAndAnswers()
to print all the questions and the answerspublic Question getQuestion(int num)
to get the corresponding question to the question number
String question
to store the question's textArrayList<String> options
to store the question's possible answersString answer
to store the answer to the questionString[] letters
to store the possible answer choice letters
public Question(String question)
public void setQuestion(String text)
to set the question textpublic void addChoice(String choice, boolean answer)
to add a choice to the questionpublic void clearChoices()
to delete the question's answer choicespublic String getChoice(String letter)
to get the answer choice corresponding to the letterpublic String toString()
to return the question and prompt for an answerpublic String getAnswer()
to return the question's answerpublic boolean hasAnswer()
to return whether a question has an answer or notpublic void shuffleQuestion()
to shuffle the answer choices of an individual questionpublic void printQuestion()
to print the question with formatting
ArrayList<Exam> examList
to store the created exams
- None because this is the main runner file
public static void printMenu()
to print out the program's main menupublic static void createExam()
to create an exam to add to the exam listpublic static void viewExams()
to show all created examspublic static void editExam(int num)
to allow the user to edit the examspublic static int getInput()
to get the user input with error handling
- Many
Question
variables andExam
variables to create some demo tests
- None because this simply creates sample/demo exams for the user to test out and run
- None
-
What was the goal of your project: What is the general problem addressed by your project? Are you trying something new? Are you designing a game for a particular niche?
The goal of my project was to create a simple interface for creating exams and taking them. It can be used as a helpful study aid to review difficult questions and track improvement over previous scores. Also, quizzes can be easily shared through files similar to the Demo.java file included in the program. Although online examination systems exist online, most of these systems have paid features or require an internet connection while this program can be run entirely offline for free.
-
Besides grades, what was your motivation: Will your program be useful to you or others? Did you just want to make something fun?
I was motivated to make this as a possible study aid to prepare for some of my exams. When I come across difficult multiple choice questions that I get wrong on practice exams, I can copy them into the program and separate them by subject. Then, I can retake them while reviewing to ensure that I have understood the concepts thoroughly.
-
What was your design and architecture: Describe how the parts of your system fit together. What classes are you implementing and why?
I had to create a separate Question and Exam class, with each exam being composed of a list of questions. I also had to separate the answer choices and the question text of each question to create a sort of "modularity" that allowed for rearranging objects and only changing parts of the question rather than the entire thing. I also created a main runner file where the user adds and edits exams as well as takes them. The Demo class is used as an example of the capabilities of the program and a starting point for the user to understand how to use the program effectively.
-
What were some implementation challenges: What were the tricky problems you had to overcome, and how did you solve them?
Editing the exam was the trickiest part of my program. The ability to rearrange questions' options as well as only change specific parts of the question required me to separate the Question class's answer choices and question text. I also had to force the user to have an answer for each question (or else the questions would be unanswerable), so I had to continuously monitor whether the question already had an answer through a boolean value.
-
Your conclusion or final paragraph: How well did you achieve your goals? Were you on task for the majority of the allotted time? Are you proud of your final product?
I achieved most of the goals I had initially set for this project. I was able to create an exam system that could store various tests and answers as well as automatically grade exams. I had initially hoped to create a method to save all the exam data in a file so that the data would be stored even after the program ended, but I was unable to implement it due to time constraints and lack of knowledge on save objects in a file. I was on task for almost all of the allotted time, and I am proud of my final project.