I like the web app approach because you can so easily have a source file that you use to begin each new screen/pag/form that you will be showing to the user. That's not the only approach by any means, and there could very well be reasons to go with a straight Windows Application (which is a technical term, not a characterization) instead.
There is no problem having multiple users accessing the program at the same time; You do need to write what you write with that in mind as context. You need to ensure you don't have database collisions (for instance) and you need to plan how you will handle the types of issues that multiple simultaneous users can raise.
Timed is much easier than timed out. Timed out necessitates the program initiating action, whereas timed only requires storing the beginning time, then comparing it to the ending time.
One thing you can do with a database (DB) for this type of undertaking is to store the questions, the title across the top of a given question page, possible answers (if multiple choice) and the correct answer and so forth. This way, the program contains only the knowledge of how to present the data and how to interact with the user, and all of the
content that is thus displayed is carried in the DB.
When you need to change part of the text (a typo, some unclear question body, etc.) you only need modify the data in the DB, rather than having to modify, recompile, and redistribute the .EXE.
The DB can also cary just which questions will be asked, based upon who it is taking the test, as well as caryying the question order. There's a lot you can do with a DB, and
VB can interact with Access, SQL Server, MyDB, Oracle, et al. very easily. Data access is a very important programming need, and Microsoft has put in a lot of work to aid programmers in this undertaking.
It will help you to write down some "stories" describing how the students will interact with the program, what the overview use of the program is to be, how the grader will interact with the program, what kinds of physical output the program will have (paper reports, updating central administration's database of grades/progress), and other aspects of the appearance/character of this program's integration into the lives of those whose lives it integrates with. Each of these would be a separate story, and a story connecting these separate "tales" would be helpful, too. These could be a sequence of hand-drawn screen shots, or a narrative (both have their uses; no reason to eschew the one for having done the other). This will help you get clear in your mind what the thing will look like. This dramatically improves the end result, and makes the overall project development timeâ
including the time taken to create the storiesâshorter than the development time by itself without. (Reduces mistakes/wrong turns and improves the consistency of look/feel as well {ie, improves quality}.)
Interview possible users for input on what they need for their part in interacting with this program.
Though it is true that a networked DB (Oracle, SQL Server) has more security, and has better control of issues of concurrency, it does not sound like you are writing something large enough to make that a show-stopperâat least not to me.