raspis

所属分类:Pascal/Delphi编程
开发工具:Delphi
文件大小:176KB
下载次数:1
上传日期:2015-07-25 18:42:36
上 传 者SaSb
说明:  [Delphi 5] The source of the unfinished project of automation of scheduling in institutes of higher education.

文件列表:
raspis (0, 2006-09-18)
raspis\source (0, 2006-09-18)
raspis\source\Auditory.dcu (9944, 2003-08-31)
raspis\source\Auditory.dfm (4308, 2003-07-20)
raspis\source\Auditory.pas (5298, 2003-08-26)
raspis\source\Files.dcu (299, 2003-07-16)
raspis\source\Files.pas (75, 2003-07-16)
raspis\source\Groups.dcu (9939, 2003-09-05)
raspis\source\Groups.dfm (6623, 2003-09-05)
raspis\source\Groups.pas (5737, 2003-09-05)
raspis\source\Kernel.dcu (3839, 2003-09-04)
raspis\source\Kernel.pas (4736, 2003-08-31)
raspis\source\Main.dcu (7780, 2003-09-05)
raspis\source\Main.dfm (2114, 2003-09-05)
raspis\source\Main.pas (4490, 2003-09-05)
raspis\source\Napravlen.dcu (8538, 2003-08-31)
raspis\source\Napravlen.dfm (3267, 2003-07-17)
raspis\source\Napravlen.pas (3834, 2003-07-17)
raspis\source\Predmets.dcu (11797, 2003-08-31)
raspis\source\Predmets.dfm (7202, 2003-08-31)
raspis\source\Predmets.pas (6944, 2003-08-26)
raspis\source\Prepods.dcu (12407, 2003-08-31)
raspis\source\Prepods.dfm (6710, 2003-08-23)
raspis\source\Prepods.pas (6946, 2003-08-26)
raspis\source\Raspis.cfg (384, 2003-08-31)
raspis\source\Raspis.dof (1041, 2003-08-31)
raspis\source\Raspis.dpr (964, 2003-08-15)
raspis\source\Raspis.res (876, 2003-07-08)
raspis\source\Types.dcu (1910, 2003-08-31)
raspis\source\Types.pas (2167, 2003-08-30)
raspis\source\TypesZan.dcu (9000, 2003-08-31)
raspis\source\TypesZan.dfm (3978, 2003-07-17)
raspis\source\TypesZan.pas (4227, 2003-08-31)
raspis\source\UchPlan.dcu (10490, 2003-08-31)
raspis\source\UchPlan.dfm (11125, 2003-08-31)
raspis\source\UchPlan.pas (7743, 2003-08-31)
raspis\source\Variants.dcu (8517, 2003-08-31)
raspis\source\Variants.dfm (2908, 2003-07-17)
raspis\source\Variants.pas (3939, 2003-07-17)
raspis\source\WorkProced.dcu (1582, 2003-09-05)
... ...

Программа "Расписание" ------------------------------------------------------------------------------------------- 1. Общее описание Когда я как и все учился в университете, ко мне обратились за помощью в автоматизации составления расписания. Бегло изучив имеющиеся программы, я решил писать свою :) Второй курс, куча энергии, желание сделать свое и т.д. Энергии было столько, что я даже решил базировать данные не в БД, а писать свой формат, считая что это даст мне больше скорости и удобства (молодость часто вводит в заблуждения :) В итоге работа была проделана где то наполовину, потом это дело затихло, потом сказали что это не надо... а потом я окончил университет и совсем на это забил :) Что представляет собой программа сейчас? По существу - ничего, кроме готового движка для ввода данных об аудиторих, предметах преподователях и т.д. То есть, в приницпе то - что нужно для любой программы составления расписания. Сам алгоритм составления расписания был начат (даже дает кое-какие результаты) но не окончен. И вообще программа - сырец, ни интерфейса ни до конца завершенных частей. Но так сказать ядро, ввод/вывод данных и их сохранение - работает вполне. То есть - если вы пишете программу расписания, то можете использовать этот проект - как базу для работы с данными и прикручивать к ней свою логику составления расписания. Проект имеет некоторые детали, которые скорее всего вам не понадобятся и воодились они под спец. требования ВУЗа в котором я учился. Выкидывайте их к черту и используйте то что нужно :) Я выкладываю исходник, потому что понимаю что к работе над ним никогда уже не вернусь. Возможно, кому то пригодиттся проделанная мной работа и кто то использует исходник как базу для своей программы. Если это произойдет - я буду только рад. Если при этом мое имя и ссылка на сайт будут указаны в копирайте, как автор движка (ядра, engine и т.д. :) это будет лучшей благодарностью от вас, за использование кода. 2. Описание Проект состоит из 13 pas-модулей. Назначение каждого модуля - ясно из его имени файла. Весь код снабжен комментариями, поэтому я думаю разобраться в коде будет не так сложно. Программа состоит из простых справочников (типы занятий, направления обучения, варианты обучения) и связанных. Простые справочники - просто список, элемент которого ссылается на динамическую структуру содержащую расширенную информацию о пункте. Все типы данных динамических структур, описаны в модуле Types.pas Связанные справочники (дисциплины, преподователи, аудитории, группы) - помимо данных о своих пунктах, связанн с набором из других справочников (простых или составных). Например, каждый пункт предмета - связан с одним или несколькими пунктами из списка преподавателей. То есть, можно назначать какие преподаватели ведут этот предмет. Список динамический, каждый предмет - может ссылаться на любое число преподавателей. Точно также, обратно связан и список преподователем - со списком дисциплин (какие дисциплины ведет этот преподователь). Такие избыточные связи, введены чтобы не ограничивать алгоритм конечного генератора: можно строить расписания опираясь на дисциплины или на свободный график преподователей и т.д. Программа заполненна изначально тестовыми данными, поэтому вы можете просмотреть идею списков на примере. В модуле Kernel.pas - собраны функции для работы со списками, создание идентификаторов, копирования списков и т.д. Как я уже говорил, большая часть по работе с данными - сделана. С извлечением данных думаю проблем не возникнет. Для каждого списка изпользуется своя структура, в качестве первого поля - используется структура MHeader с системной инфой. Связь с другой структурой - происходит с помощью указателя. Вся работа с указателями - ведется через тип LongInt :) Когда писалась программа - я был не силен в указателях, и использовать готовый тип Pointer ума не хватило :) В списках - указатели на структуру пунтка списка, хранятся в массиве: List.Objects[x] Последний, будучи типом TObject - приводится к LongInt. Работа с данными - везде идет с привлечением указателей и TList (списком указателей). То есть, для модернизации полей данных - достаточно поменять структуру ее использующую. Также, все структуры имеет в структуре MHeader структуру Reserv - содержащую зарезервированные поля. В Reserv - есть строковое поле, поле логическое и два поля LongInt - то есть, при необходимости - можно привязать еще два указателя на любую другую структуру. В общем, если у кого есть желание - используйте. Буду признателен если не забудете в готовом продукте указать мой копирайт. Не забудьте также сообщить мне если продукт на базе моего проекта выйдет в свет. Если будут проблемы с разбором кода или отдельными функциями - обращайтесь, если буду распологать временем - помогу обязательно. P.S. Недавно нашел в дебрях винта более позднюю версию проекта. В папке source2 - лежит именно поздняя (но я не помню насколько положительные там изменения, поэтому стабильную версию оставил в папке source) 4. Обратная связь Мой сайт: www.azlab.org Форум по этому сырцу: http://forum.azlab.org/viewtopic.php?p=82#82 E-mail: info@azlab.org IRC: irc.chatnet.ru, канал #delphimaster, мой ник: Cardinal (это такой тип данных, а не мания величия :)

近期下载者

相关文件


收藏者