Хело ту ол! Вообщем я узнал что я могу выбрать один из экзаменов на слейдущий год, в том числе я могу выбирать и информатику, что я и сделаю. И примут у меня экзамен в виде проекта, после того как я ещё защишу. Защитить проект это не проблема, сложнее придумать тему, ну и соответственно написать. Вообщем мы с информатичкой долго думали и пришли к общему мнению. Нужна программа для обучение детей (1-5 класс) работы на компьютере, обучение их арифметики, грамматики итп... Посколько всё для маленьких детей, всё должно быть красочно, удобно, легко и очень понятно. Последние время такое люди не пишут, поэтому школа пользуется для обучения детей очень старый досовские, программы. Вот мне и задание написать хорошую программу для обучения. Мне конечно дали те старые досовкие проги как примеры, в них есть недостаток, это графика, и мало заданий, малые немогут сами выбирать себе уроки, так как там надо прочитать что написанно на конопке, а в первом классе у некоторых с этим бывают проблемы. Чтоб больше разнобразить понаходили очень много таких программ досовский, в которых от 3 до 5 уроков, на разные темы, всё в картинках, красиво (ну для доса), и понятно. Но надо что-то более новее, красивее, удобнее. Итак, примеры есть, чему и как учить впринципе понятно, техническое задание элементарное, нет никаких сложностей. Но я хочу чтобы программа была как бы ну... незнаю как сформулировать... Короче надо чтоб уроки и задания были в отдельном файле от программы, чтоб их можно было придумывать всё новые и новые не переписуя программу. Вот как скины, меняется вид программы, но код программы не изменяется, а тут надо изменить/добавить урок или определённое задание, не касаясь кода программы, вот надо такое спрограммировать. Вот например задания: Там дана картинка разрезанная на четыре части, детям её надо собрать. Просто щас в ВБ это я за мин 15, но как мне сделать так чтоб вот это задание поместить в отдельный файл, а программа прочитала и соответственно запустила это задание. А задания самы различные, что-то подобрать, посчитать, прочитать, там разукрасить итп... итд, ну первый класс короче. Есть какие-то мысли, идеи, делитесь... времени много... впереди целый 11 класс, но всётаки надо уже задуматься.
Мысль такая: программа у тебя одна, тебе нужен свой формат файла. Один файл - одна задача. Если это приблизить к идее WinAmp - там скин - это zip-файл с другим расширением (не знал?, внутри которого есть несколько xml-файлов (один главный), описывающих структуру, и графика (много картинок - это будут твои ресурсы). Твоя главная задача (я думаю, без XML ты обойтись сможешь, а если сделаешь на xml-супер) придумать свой формат. В начале файла как обычно название и версия программы, потом, например тип задачи, а дальше всё прочее - данные и относительные ссылки на графику. Вспомни, напимер, как легко понять HTML: head(title,style,script), body(text)
Я тоже проект делал, на сессии защитил на 10 баллов из 10-ти.
Но на ту чушь, которую предлагала информатичка, я не согласился, а
сделал ASP.Net-версию сайта vbnet.ru Совместил приятное с полезным.
Так что советую выбрать более приятную тему для проекта.
В поддержку предложения Павла вношу тему, она, кстати, очень хорошо дополняет уже выбранную тему: "Обучение учеников 11-го класса основам русского языка"...
HAKER, ты не обижайся, но это:
"...Нужна программа для обучение детей (1-5 класс) работы на компьютере, обучение их арифметики, грамматики итп... Посколько всё для маленьких детей..."
и это:
"...Последние время такое люди не пишут, поэтому школа пользуется для обучения детей очень старый досовские, программы..."
и не только это меня просто пугает!
Теперь ближе к делу.
Скин это только сменная оболочка, не имеющая никакого отношения к функциональности, о деваемая ВСЕГДА на один и тот-же каркас.
А у тебя каждое задание имеет очень часто совершенно другую функциональность. Это же касается и каркаса.
Моё видение проблемы.
Все задания можно разбить на главные категории. Например: раскрасить, посчитать, прочесть, написать, что-то собрать вместе, положить нужную детальку на нужное место и т.д...
Возможно, главную категорию можно разделить на подкатегории.
Категория определяет функциональность. Функциональностей может быть две:
1. С точки зрения школьника, выполняющего задание
2. С точки зрения программиста, пишущего программу
Тебе всё нужно рассматривать с точки зрения программиста. Два задания могут быть очень похоже спрограммированы, хотя выглядят ДЛЯ ПОЛЬЗОВАТЕЛЯ по-разному.
В общем, у тебя появится, "иерархия функциональностей". Каждый пункт этой иерархии будет описывать отдельное задание. Вот каждый из этих пунктов может иметь свои скины. Под скином я понимаю комбинацию задание + оформление. Если ты знаком с объектно-ориентированным программированием, то тебе это поможет.
Итак, каждый пункт иерархии состоит из:
1. Один исполняЮЩИЙ модуль. (Тот, кто будет думать).
2. Огромное количество модулей заданий (и правильных ответов) для конкретного этого пункта иерархии. Описание заданий хранится отдельно (в базе данных).
3. Огромное количество модулей интерфейса. Здесь описываются свойства контролов (размеры, расположение). Эти свойства применяются динамически при загрузке формы. Картинки лежат отдельными файлами в отдельной папке, и загружаются динамически во время загрузки формы. Описание что куда грузить и куда ставить хранится отдельно (в базе данных).
Одна и та же форма будет выглядеть по-разному в зависимости от того, что ты прочтёшь из базы. Для детей задание 2+2=?, полученное от Тигра и от Кролика - обычно два разных задания, тем более, если они сидели в разных углах формы... Но для тебя - это ОДНА И ТА ЖЕ ФОРМА с одним и тем же кодом!!! Просто описание интерфейса ты прочел из разных записей базы данных.
Теперь твоя программа будет просто оболочкой, вызывающей исполняющие модули твоей "иерархии функциональностей" (пунктики 1). Каждый модуль вызывается с двумя параметрами: ID модуля заданияб + ID модуля интерфейса.
Твоё приложение может быть MDI-приложением, загружающим отдельные формы (пунктики 1). Функциональность этого пунктика программируешь в коде соответствующей формы.
Пунктики 2 и 3, а так-же связи 1-2 и 1-3 лежат в базе данных. Access хорошо подойдёт для этой цели.
На первый взгляд может показаться, что всё усложнено. Но это только на первый взгляд.
Тут можно попробовать еще больше извратиться, но это будет во второй версии программы...
Так ну по поводу грамматики учеников 11-ого класса, говорю сразу, я самую лучшую оценку когда либо получившую за диктант - 8, и то списывая... Так что учить руссокму языку у меня неполучится . Кстати ещё следует помнить о опечатках при быстром наборе, и ещё если учесть что из-за нехватки времени некогда перечитывать то что написал, думаю нечего особо страшного нет в том что я где-то не так написал слово.
К делу. Ты считаешь что у ожно разбить по категориям, тогда что если мне захочется добавить новую категорию? Ну да ладно, это и буду версии программы Так, тогда давайте определим что нам надо из категорий. Моя предложения:
1) Собрать картинку. Форма на которая по базе данных выбирает картинку, читает с базы где эта картинка, на сколько частей её разбить итп...
2) Посчитать. Форма которая генерирует лёгкий пример, и подставляет всё в картинках, например сгененировала 2+2, случайно выбрала рисунок, на котором, например пчёлка и показала эту пчёлку, знак "+" ещё пчёлку, знак "=" и "?" детям легче будет считать пчёлки чем цифры. Можно ещё организовать варианты ответа итп...
3) Орфография. Форма которая берёт из базы данных слово, в базе данных берёт несколько неправильно написанных слов, и варианты ответа. Нужно выбрать правельно написанное слово.
4) Разукраска. тут нужно типа что-то графического редактора с возможностью закрашивать область.
5) Что-то собрать, положить на правельное место. Ну тут форма которая берёт из базы данных изобажение, дополнительные изображения (объекты которыебудем перетаскивать) И например даётся машина без колёс, фар итп... нужно приципить все эти детали к машине.
6) Математически игры... Это я думаю лучше делать как отдельные программы, и потом просто запускать поверх основной формы программы. Так как игры могут быть самые разные...
Да не парься ты с форматами и т. д., сделай папочку, туда будешь кидать новые EXE-шники-задания, а в главной проге они должны появляться как новые задания.