I am interested in creating a practice test simulator specifically designed for the Dental Admissions Test (DAT). This test is taken for admission into dental school and is analogous to the Medical College Admissions Test (MCAT). The DAT is however a computer based exam, and contains 4 main sections.
The software would be designed to simulate the Survey of Natural Sciences section of the test. This section includes 40 Biology, 30 General Chemistry and 30 Organic Chemistry (100--multiple choice) questions to be completed in 90 minutes. Here is a link that gives examples of the tests format:
http://www.ada.org/prof/ed/testing/dat/demo/sample/dat_fs_question.htmThe program would include ~10 "mock" exams designed to give test takers practice, let them identify subjects they are weak in and provide application of knowledge, among other things.
It would include such options as controlling whether or not the test would be timed, and if so, the option to choose the time allotted (i.e. the ability to increase or decrease the standard 90 minute time limit).
Furthermore, the program would allow an option where "random" tests could be configured. This would allow the user to experience tests that have different compositions than the standard 10 (i.e. mixing up the questions randomly to create new tests--leaving the user with the ability to use the software many times and still take new tests). This option is critical since taking the same test more than a couple times would lead to memorization of sequence etc, whereas the randomization option would keep usability high.
In addition to questions, the program would obviously provide answers along with clear, detailed explanations. These could be accessed after taking the a certain test and would provide the user information about the concept(s) being tested, why he or she got the answer right or wrong and why.
All tests would include a scaled score along with a brief statistical breakdown afterwards.
The program would be downloaded, and users would be provided with a key code. The key code has one time usability. Furthermore, the program would only operate on the original computer it was downloaded on.
The program would also have the option for the editing of questions, answers and explanation. Addition information should also be able to be added, along with other modifications.

For an application like this then your going to need a database, and the information stored in the database and how that database is structured is the key point to getting this working. I guess you can say the same thing about other software.
In the database you need to have information on the questions that can be asked, the type of question (single answer multiple choice, multiple answer multiple choice), the possible answers, the correct answer, the score, and so on. The database would also need to store exams taken by the user, the questions that were asked, the answers the user selected, the ones they got right, the ones they got wrong, score, and so on. That also means the database needs to store information on the users themselves, like their logon credentials.
You can see it's all about what you store in your database. So I think before thinking about the user interface you get the database designed.
There are two ways to go with the user interface but without a doubt you need to do some autogeneration of controls. A form per question isn't going to work so either a single form per question type or a single form for all questions. Whatever approach you take you will need to auto populate the forms controls based on infomation about the question.
For example if there are three choices of an answer the form needs three radio buttons. If there were five choices you need five radio buttons. Then if the user could select more than one answer you need check boxes. Because you really want one form per question type or for all questions then that form needs to be able to deal with an unknown about of controls.
I wanted to create a survey application that kind of follows the same idea but it was on my own time and something else came along and long story short it never got developed. However I remember how I was going to develop it, and that what you just read. It's all about the database, how you decribe the questions, the exams, the users. Once you got that worked out the application follows on from it.