CLI application for exam evaluation.
This application was developed as an presentation for the Platinum itinerary of Maths from Colégio Madre Carmen Salles
The advantage of this program is the hability to calculate how much does a person knows for a specific subject. For example, you can give how much knowledge of an subject is required to make a specific question, and then based on that the program will grab that information and give how much the answers know for that subject.
You can see how much the answers know of each subject in a nice table and later export it for viewing
git clone https://github.com/abUwUser/Examer
- Install the dependencies
npm install --save-dev
- Run the pos-install script
npm run pos-install
examer <command> [options]
First, you need to create a JSON file in a desired folder that should be your exam file. It should look something simmilar to this
// exam.json (do not copy this line)
[
{
"statement": "Write the expression of log₂32 = 5 in exponential form",
"influence": {
"Logarithm": 0.4,
"Exponential": 0.4,
"Basic Math": 0.2
},
"answer": ["2^5=32", "2⁵=32", "2^5 = 32", "2⁵ = 32"]
},
{
"statement": "Find the square root of 5929",
"influence": {
"Square Root": 0.9,
"Basic Math": 0.1
},
"answer": "77"
},
{
"identifier": "3.a",
"statement": "Calculate the volume of the cylinder with radius 5 and height 6 while considering π = 3.1. Do not put the units in the answer.",
"influence": {
"Cylinder": 0.7,
"Basic Math": 0.3
},
"score": 0.5,
"answer": "465"
},
{
"identifier": "3.b",
"statement": "Calculate the side area of a cone with radius 7 and generatrix 3 while considering π = 3. Do not put the units in the answer.",
"influence": {
"Cylinder": 0.1,
"Cone": 0.4,
"Basic Math": 0.3
},
"score": 0.5,
"answer": "63"
}
]
The influence
property is gaven to give the answer the required subjects to answer that question and how much they influence in the making of the question. Check here for more information
You can give a score to that question. By default it is gaven an score of 1
},
"score": 0.5,
"answer": "63"
And an identifier to it
{
"identifier": "3.b",
"statement": "Calculate the side area of a cone with radius 7 and generatrix 3 while considering π = 3. Do not put the units in the answer.",
For the answers, it is recommended to create a folder next to the exam file
The structure of an question look simmilar to this
// answers/Pedro Cartaxo.json (do not copy this line)
[
"2^5=32",
null,
"465",
"63"
]
Each element represents the answer gaven by the user relative to the exam. So for example, "2^5=32"
is relative to the first question, while "465"
for the third
You can expand it by giving an individual score and influences if needed
// answers/Pedro Cartaxo.json (do not copy this line)
[
"2^5=32",
null,
"465",
{
"value": "59",
"override": {
"influence": {
"Cylinder": 0.1,
"Cone": 0.4,
"Basic Math": 0.1
},
"score": 0.3
}
}
]
It is a file that should contain the exam structure to then compare with the answers. It is an array of the Question
type. Click here for an example
It is a file that contains an array of Answers and UserAnswers. Click here for an example
Object that gives the question's information
answer
(Answer | Array<Answer> | null): The correct answer. If it is gave an array, it will check for multiple answersstatement
? (string): The statement of the question.influences
? (Influence): How much does an subject it is required to make that question.identifier
? (string): How this question should be numbered. Example:4.c.
Object that gives how much does the answer needs to know about an subject to make that question. Check here for more information
[subject]
(number): A number that says how much is the influence of that object
Object that gives more clarity to the answer, and can override some values given by the exam.
value
(Answer): The answeroverride
? (object): Prefers values from this class than from the exam. Check an exampleinfluence
? (Influence): How much does an subject it is required to make that question.score
? (number): The score that should be considered instead
Type that gives an answer. Possible values:
- string
- boolean