State management, configuration and installation of web application
Version B
The knowledge test
Investor requirements:
"The knowledge test participants have to register, giving their first and second name, e-mail address, age and gender. They use a login and password for the access."
"Several different tests are available."
"Each test consists of a number of questions."
"The questions are presented to the user one after another. Each question is accompanied by a number of answers, only one of them is correct."
"The time for answering the question is limited. The user is redirected automatically to the next question, when the time elapses. He can also move to the next question by pressing the button. The user cannot go back to the previous question."
"The use of browser Back and Forward Buttons should be forbidden while running the test, and all the attempts of using them should be treated as errors, and handled appropriately."
"After all the questions are answered, the result becomes available, with the detailed description of all mistakes."
"Each user can perform each test only once."
"In case of any exceptional situation during the test (e.g. the browser is closed), the user should have the possibility of continuing the test, but not to answer the already answered questions again."
"The project should contain (for each test): the best scores rank, questions difficulty statistics (the ratio: good answers / all answers for each question), and some statistics for age and gender."
"Administrator access: the administrator has the access to the list containing the IPs, from which the users performed the tests, and the numbers of test performances by IP."
"The administrator can disable/enable particular IP; after this, there is no possibility of performing the test from the workstaton with the particular IP."
System administrator remarks:
"User data should be stored in an XML file in the userdata subdirectory."
"The way of storing the questions and answers is not specified. However these should be stored in the questions subdirectory."
"Administrator login and password should be stored in Web.config, all other users cannot access the administrator pages."
"Number of logins from each of the IPs should be obtained by counting the number of sessions started at particular IP. Session expire time should be set to 5 minutes."
Marking remarks:
The entire project should be published over the internet - provide the URL with the solution.
The project should be user-friendly - avoid situations in which the user finds himself lost.
Writing code, which is already implemented in .NET can result in lower marks.
The investor is always right, independently on how precisely does he utter his ideas.