Наконец-то сподобился написать о своём проекте. (многа букаф, непрограммистам не интересно.)проекте.
Недалее как полтора месяца назад мне декан подогнала работу, которая может стать моим курсовым проектом, чтобы никуда не устраиваться на работу.
Суть работы: здешний психолог получает педагогическое образование (получила уже) и ей треба для диплома сделать туеву хучу опросов-тестов для сбора статистики. И тему она выбрала "Социально-психологическая адаптация студентов-инвалидов". Все эдо дело сводится всего лишь к одному тесту, который вручную собрать и уж тем более обработать очень сложно. Сам тест простой, он содержит 101 вопрос, на которые требуется отвечать циферками от 1 до 7. В принципе не сложно. Все сложности начинаются тогда, когда данные надо обработать. Все вопросы делятся на 15 нормальных и 6 интегральных показателей, причем один вопрос может учавствовать во всех или ни одном показателе. Нормальные показатели посчитать относительно просто, если не считать, что их 101 и проверять надо каждую из категорий последовательно. А вот с интегральными небольшие проблемы - их хоть и мало, но для их подсчета используются заумные формулы. Чего стоит только перевод массива ответов [1..7] в [-1..1] и учет показателей по конкретным вопросам (то есть, для показателя считаются только отдельные вопросы, причем только тогда, когда ответ равен конкретно (-1) или (1) для каждого вопроса.). Плюс, интегральные показатели имеют множетели и представляются в процентах. Раньше психолог считала одну группу (15-18 человек) примерно два месяца непрерывных подсчетов, что несколько долго.
Моё задание состоит в том, чтобы как можно быстрее и проще при помощи компов собрать данные о студентах (это самая простая часть, всего лишь дать студентам формочку с семью кнопками и вопросом), после чего их в требуемом виде (то есть, во всех возможных, считая цифровые, графические и текстовые показатели, на выбор психолога) по всем студентам, всем группам, конкретному тесту и др.
Проект почти сразу было решено разделить на три части: часть для администратора, который заполняет списки пользователей программы (администраторов и психологов) и студентов; часть для студента, который просто отвечает на вопросы; часть для психолога, который смотрит результаты в нужном ему виде и составляет/распечатывает отчетность, если ему таковая требуется.
Изначально все это было решено организовать используя хранения данных в виде строки ответов через запятую, а файл с ответами обзывать группой_фамилией_годомрождения студента, после чего брать данные о студенте и из названия файла и из его содержимого. Это дело быстрее чем за неделю превратилось в базу данных, сделанную в MS Access и содержащую в себе три таблицы, две из которых (студенты и результаты) связаны по номеру группы и номеру студента в группе.
Еще через неделю усердного тупления на интерфейс и формулы подсчета в связи с тем, что мы начали проходить MS SQL, база перекочевала в него, так как все равно программа будет использоваться на колледжских компах и базу тянуть с сервера. Я даже попытался для доставания и запихивания в базу данных собственно данных использовать встроенные процедуры, но немного прогрорел на их использовании, ибо вбивать 101 параметр немного долго, а в программе собрать запрос в цикле намного проще. И да, я знаю, что MS SQL поддерживает ЯП TSQL (вроде так), но мне лень его учить, хотя там вроде бы тоже есть циклы. Вообще я решил не особо заморачиваться и делать запросы в программе.
Сегодня, через месяц разработки, я наконец-то полностью закончил часть для собирания информации (часть для студента), которая будет висеть на учебных компах и тянуть базу, которую я уже скинул админу сервера, по сети. Оказалось, что все это даже работает и я могу забыть про эту часть программы как про завершенную. Осталось забабахать часть для админа (она вторая по сложности) и психолога(ужоснах, так как психолог еще даже не определилась, какие ей нужны отчеты, зато мы разобрались с формулами).
Часть для админа думаю сделать в виде двух вкладок "Пользователи" и "Студенты", на которых будут представления таблиц из базы. В принципе, абсолютно не сложно, но там есть несколько загонов с тем, чтобы пользователь нечаянно не насоздавал лишних записей, которые база будет просто не в состоянии обработать. Вообще-то, декан (она мой куратор по программе. У меня вообще три начальника: интерфейсная часть и данные - психолог, серверная часть - администратор сети, работоспособность - декан) предлажила сделать все намного проще (с точки зрения пользователя): три формы "Добавить", "Удалить", "Обновить", на которых собраны требующиеся поля и кнопки, при помощи которых за один раз будет заполняться/изменяться только одно поле. Но я такой вариант люто ненавижу, ибо считаю, что администратор должен уметь работать с таблицами и вообще умный. Собственно, местный админ со мной полностью согласился и сказал, что ему вообще однофигственно, где обновлять таблицу, хоть прямо в среде SQLServer'а.
Надо будет забабахать админскую чать за эту неделю, тем более, что там где-то должны быть три выходных...
И да, я вот думаю, пойдет ли эта программа в распространение? А если и пойдет, то какую лицензию использовать? Я думаю использовать одну из свободных типа GNU/GPL или какая там более свободная, с копилефтом? Не помню. В принципе, мне даже исходников не жалко, но если программа удасться хорошо и ее будут использовать, то почему бы еще и выгоды с нее не получить? Типа "Понравился наш продукт? Вы можете проспонсировать автора на совершение новых подвигов, переведя ему на счет стоимость N пачек пельменей и M пачек печения". Как-то так.