Дополнительные условия
Для того чтобы программа была полезной, она должна работать в условиях реального мира. В данном случае заказчик поставил следующие требования:
- программа должна работать на любых компьютерах, на которых запускается Windows, в том числе без CD и сети;
- программа должна работать без инсталляции какого-либо ПО, системы управления базами данных, сети, интернета и так далее. Единственная предпосылка - наличие на компьютере Windows и Word. Это довольно строгое ограничение - но, тем не менее, жизненное: инсталляция (или проверка наличия) того же BDE или MS Access на 100-200 компьютерах может значительно откорректировать бюджет любого начинания;
- вопросы должны изменяться самым простым и непосредственным образом, для этой операции не нужно проходить никакого инструктажа или обучения;
- подготовленные "конверты" с вопросами должны иметь минимальную степень защиты от модификации, так чтобы экзаменуемый в присутствии экзаменатора не мог нечаянно или с минимальными усилиями изменить результаты в свою пользу. Безусловно, это не касается "людей от компьютера", которые в комфортных условиях и при наличии времени могут сломать и видоизменить все что угодно - подразумевается, что экзаменуемый находится в системе тестирования и не занимается хаком нашей программы.
Итак, отталкиваясь от всего перечисленного, начнем строить нашу тестовую систему. Первое, что приходится сделать, это выбрать Word как в качестве источника данных, так и в качестве среды выполнения. Такое решение - самое естественное, поскольку ни на какой другой рантайм мы не можем рассчитывать. Первой идеей было использовать текстовый режим и gcc+couses. Но редактирование текстовых файлов в dos-кодировке - это задача, с которой справится не каждый современный пользователь, и, как говорят, "текстовый режим выглядит не современно".
Первое последствие из выбора Word в качестве инструмента: наша база данных будет представлена обычным Word-документом определенного формата. В силу некоторых исторических причин формат текста был следующим: