Что касается базы данных, вы бы хотели что-то вроде:
Table Exams (ExamID, ExamName) //to hold all exams
Table Users(UserID, Username, Login, Password) //to hold all users
Table OpenExams(Exam_ID, User_ID) //to hold open exams
Table ExamSections(SectionID, Exam_ID, SectionName) //to hold sections of exams
Table Questions(QuestionID, Section_ID, QuestionName, Question, Answer) //to hold questions
Это, конечно, самый базовый и только один из многих подходов.Вам нужно будет добавить поля, где это необходимо.
Что касается пункта 2, я бы, вероятно, сделал это на прикладном уровне (или в VS).У меня нет большого опыта в веб-разработке, но я думаю, что ASP справится с этим.Для пункта 3 вы можете выполнить простую инструкцию SQl, чтобы получить информацию, если пользователь, пытающийся получить доступ к экзамену, в настоящее время сдает экзамен.