|  | +7 (495) 229-0436 |  | shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 |  |  | 
|  | 
 | 
| 
 
 
 
 
 
 
 
 
 | 
 Программа по составлению расписания занятий в ВУЗе24.07.2012 12:31 bya Решил выложить описание и свою программу по составлению расписаний от 2001 года. В моём ВУЗе, на сегодняшний день, ей пользуются практически все крупные факультеты. Вкратце: она может быть и редактором и составлять расписание полностью автоматически или частично для выбранных элементов, сохраняет свои данные в формате Microsoft Access 2000, экспорт расписания групп, преподавателей и аудиторий в виде таблиц Microsoft Excel 2000 и сама написана с использованием MFC 4.2. Немножко историиДо 2001 года писал только программы связанные с научными вычислениями. Программирование графического интерфейса пользователя только смотрел, но не было реальных задач. Аналогично не учил, я по образованию механик, специализировался в аэрогидродинамике, и не знал ничего о СУБД, как построить с ними соединение или как сделать экспорт в Microsoft Excel. Не буду описывать все возникающие на работе пертурбации, но в их результате в совершенно инициативном порядке решил написать программу по составлению расписаний. Я понимал, что те программисты, которые есть в моей организации, ее никогда не сделают реально работающей, из-за ее довольно сложной логики. Для меня же был риск в программировании интерфейса пользователя, работа с СУБД и т.д. Поскольку испытываю просто патологическое неприятие продуктов фирмы Borland (опыт 3-х летний работы), решил ориентироваться на Microsoft. Linux-ом пользовался уже до этого 3-4 года, но там в тот момент времени не было стандартного GUI и нужно было бы ставить его на рабочие места, что еще большая проблема. Разработка заняла реального времени примерно 2 месяца. При написании, из-за сложной логики, очень активно использовались Тройки Хоара. Ниже описание самой программы и мои предложения. Начальные сведенияПрограмма предназначена для автоматизации процесса составления расписаний занятий в ВУЗах. Она обладает во-первых, возможностью редактирования расписания, а во-вторых его автоматической достройки. Интерфейс программы копирует стандартный проводник Windows. Это, кроме удобства представления информации на экране компьютера, позволяет пользоваться программой без специальной подготовки.  Основные возможности:
 
 
 
 
 
 Выдержанная идеология программы позволяет реализовать гораздо больше возможностей. Условия приобретенияДанная программа условно бесплатна. Платным является занесение в базу данных программы аудиторий (я в конце расскажу как обойти мою защиту). Это позволяет организовать эффективную защиту программы и не ограничивает её использование внутри учебного заведения. Организационная структураТипы окон и переходы между нимиПрограмма состоит из четырех базовых окон: 
 Переход между окнами может быть осуществлен с помощью меню.  Или с помощью панели инструментов, выбирая иконку нужного окна кликом левой кнопки мыши.  Панель инструментов можно включить с помощью меню.  Окно предметовОкно предметов состоит из 5 областей. Первая область представляет собой собственно предметы, объединенные с помощью папок в иерархическую структуру.  С каждым предметом связаны проводимые по нему занятия. Они представлены окном занятий.  Ниже расположены связанные с выделенным занятием три окна, в которых находятся группы, преподаватели и аудитории.  Окно группОкно групп состоит из 2 областей. Первая область представляет собой собственно группы, объединенные с помощью папок в иерархическую структуру и ссылок на группы, также представленные с помощью папок в виде иерархии.  Справа от окна групп находится расписание занятий связанное с выделенной группой.  Окно преподавателейОкно преподавателей также состоит из 2 областей. Первая область представляет собой собственно преподавателей, объединенные с помощью папок в иерархическую структуру и ссылок на преподавателей, также представленные с помощью папок в виде иерархии.  Справа от окна преподавателей находится расписание занятий связанное с выделенным преподавателем.  Окно аудиторийОкно аудиторий состоит из 2 областей. Первая область представляет собой собственно аудитории, объединенные с помощью папок в иерархическую структуру и ссылок на аудитории, также представленные с помощью папок в виде иерархии.  Справа от окна аудиторий находится расписание занятий связанное с выделенной аудиторией.  Ввод данныхВвод предметовПредметы группируются в папки, например по курсам:  Создание и редактирование папок и предметов проводится с использованием контекстного меню. Для этого необходимо нажать правую кнопку мыши на выделенном элементе. Для копирования, перемещения и создания ссылок можно использовать контекстное меню или перетаскивая выбранный элемент мышкой. Если при перетаскивание нажать Ctrl, то если возможно будет создана копия элемента. В любой папке элементы упорядочиваются по алфавиту. Два разных элемента в папке не могут иметь одинаковое название. Если печатное название отсутствует, то выбирается в качестве печатного само название. Ввод занятийСоздание занятий возможно с помощью контекстного меню. Выделенный предмет в соседнем окне задает название занятия.  После создания занятия (или занятий) с ним можно связать группу, преподавателя и аудитории (папку аудиторий) закрепленных за занятием. Связь устанавливается с помощью перетаскивания из расположенных ниже окон групп, преподавателей и аудиторий.  При этом принимаются следующие правила. При перетаскивании папок проведение занятие устанавливается для для всех групп и преподавателей входящих в перетаскиваемые папки. Папка же аудиторий задает закрепленные за занятием предметы. При составлении расписания будет выбрана одна из аудиторий в папке. Двойной клик мыши, нажатие клавиш Enter или пробел приведут к выделению в нижних окнах связанных с занятием групп, преподавателей и аудиторий. Аналогичные изменения происходят также в связанных с ними окнами групп, преподавателей и аудиторий. Замечание С занятием необязательно связывать группы, преподавателей и аудитории. Любой из этих элементов может отсутствовать. Например неизвестно имя преподавателя, который будет проводит занятие. Ввод группГруппы можно условно разделить на два больших множества:  
 Рекомендуется организовать первую папку дублируя фактически организацию групп и подгрупп на факультете. При таком подходе достигается однозначность информации, а также имеется возможность легко поиска нужной группы. Например:  В отличии от аудиторий и преподавателей, папки окрашенные в синий цвет означают разбиение на подгруппы. Папка с названием "Группы по предметам" содержит элементы четырех типов:  
 Ссылки позволяют группировать группы согласно их занятиям. Создание и редактирование папок и групп проводится с использованием контекстного меню. Для этого необходимо нажать правую кнопку мыши на выделенном элементе. Для копирования, перемещения и создания ссылок можно использовать контекстное меню или перетаскивая выбранный элемент мышкой. Если при перетаскивание нажать Ctrl, то если возможно будет создана копия элемента. В любой папке элементы упорядочиваются по алфавиту. Два разных элемента в папке не могут иметь одинаковое название. Если печатное название отсутствует, то выбирается в качестве печатного само название. Печатное название папки добавляется к имени группы. Ввод преподавателейПреподавателей можно разделить на две большие группы:  
 Рекомендуется организовать первую папку дублируя фактически организацию преподавателей в подразделения (кафедра, факультет). При таком подходе достигается однозначность информации, а также имеется возможность легко поиска нужного преподавателя. Например:  Папка с названием "Преподаватели по предметам" содержит элементы трех типов:  
 Ссылки позволяют группировать преподавателей согласно их назначению или если они проводят вместе одно занятие. Например можно объединить заведующих кафедр в одну папку и назначить для них занятие "заседание ученого совета". Создание и редактирование папок и преподавателей проводится с использованием контекстного меню. Для этого необходимо нажать правую кнопку мыши на выделенном элементе. Для копирования, перемещения и создания ссылок можно использовать контекстное меню или перетаскивая выбранный элемент мышкой. Если при перетаскивание нажать Ctrl, то если возможно будет создана копия элемента. В любой папке элементы упорядочиваются по алфавиту. Два разных элемента в папке не могут иметь одинаковое название. Если печатное название отсутствует, то выбирается в качестве печатного само название. Печатное название папки добавляется к имени преподавателя. Ввод аудиторийАудитории также можно условно разделить на две большие группы:  
 Рекомендуется организовать первую папку дублируя фактически физическое расположение аудиторий. При таком подходе достигается однозначность информации, а также имеется возможность легко поиска нужной аудитории. Например:  Данная возможность отсутствует в программе в связи с защитой от несанкционированного использования(я в конце расскажу как обойти мою защиту). Папка с названием "Аудитории по предметам" содержит элементы трех типов:  
 Ссылки позволяют группировать аудитории согласно их назначению. Например аудитория имея ссылку в папке "Практические" может использоваться для проведения практических занятий и имея ссылку в папке "Лекционные" может использоваться для чтения спецкурсов. В результате можно создавая папки с нужным названием с имитировать любые свойства находящихся в ней аудиторий. Создание и редактирование аудиторий и объединение их в папки запрещено в программе в связи с защитой от несанкционированного использования(я в конце расскажу как обойти мою защиту). Имеется возможность лишь внесения изменений в комментарий. Аудитории, переходы между которыми можно выполнить за перемену можно консолидировать. По умолчанию все аудитории консолидированы. Создание и редактирование папок проводится с использованием контекстного меню. Для этого необходимо нажать правую кнопку мыши на выделенном элементе. Для копирования, перемещения и создания ссылок можно использовать контекстное меню или перетаскивая выбранный элемент мышкой. Если при перетаскивание нажать Ctrl, то если возможно будет создана копия элемента. В любой папке элементы упорядочиваются по алфавиту. Два разных элемента в папке не могут иметь одинаковое название. Если печатное название отсутствует, то выбирается в качестве печатного само название. Печатное название папки добавляется к имени аудитории. Например печатное название "9 к. " добавится ко всем печатным именам аудиторий в "9 корпусе". Структура данныхСтруктура данных представлены в виде SQL совместимого с Microsoft Access. Это был мой первый опыт создания реляционной БД. Составление расписанияНастройка параметровНастройка параметров влияющих на составление расписания осуществляется в главном меню.  Данные параметры можно динамически изменять. Например если не удается составить расписание без окон у преподавателей, можно их разрешить. Выбор команды составить приведет к автоматическому составлению расписания для всех непоставленных занятий. Просмотр не поставленных занятий осуществляется аналогичным пунктом меню. Удалить все автоматически поставленные занятия командой очистить. Занятия поставленные в ручную должны очищаться в ручную. Варианты составленияВыбор команды составить приведет к автоматическому составлению расписания для всех не поставленных занятий. Просмотр не поставленных занятий осуществляется аналогичным пунктом меню. Удалить все автоматически поставленные занятия командой очистить. Занятия поставленные в ручную должны очищаться в ручную. Рекомендуется следующая тактика составления расписания. Сначала расставляются вручную занятия, постановка которых в расписание наиболее проблематична. Как правило это связанно с загруженностью аудиторного фонда, но возможно и с конкретным преподавателем или группой. Например занятия, которые связанны с потоковыми лекциями или занятиями в компьютерном классе. Затем происходит автоматическая достройка расписания при максимально выстроенных параметрах. Если не все занятия были поставлены, то просмотрев не поставленные и ослабив параметры составления можно попробовать достроить расписание. Если и это не помогает, можно выборочно очистить некоторые поставленные занятия, сделав возможным постановку не поставленных, а затем попробовать поставить удаленные из расписания занятия. Красными кружками отмечены запреты на определенные пары. Они могут быть по аудиториям, группам и преподавателям. Составление расписания для предметовРасписание для предметов можно составлять автоматически. Все операция вызываются контекстным меню, вызываемым правой кнопкой мыши.  При данном на примере вызове будет сгенерированно расписание для 1 курса. Составление расписания для занятийРасписание для конкретного занятия можно составлять в ручную. Все операция вызываются контекстным меню, вызываемым правой кнопкой мыши.  Составление расписания для группРасписание для групп можно составлять в ручную или автоматически. Для каждой группы можно задать запреты. Все операция вызываются контекстным меню, вызываемым правой кнопкой мыши.  Следующее меню составляет расписание автоматически для всех групп и подгрупп входящих выделенную папку.  Сохранение расписания в таблицах ExcelЭкспорт расписания осуществляется для выделенного элемента, например кафедры или папки 1 курса, через главное меню. Расписание соответственно сохраняется по группам преподавателям и аудиториям. Их названия присваиваются соответствующим листам Excel.  Как обойти защитуЗащита основана на шифровании аудиторий поэтому программа содержит два exe-шника. Одним, как следует из его названия, нужно занести все аудитории, а затем пользоваться вторым. Мои предложенияВ 2002 исходники были потеряны, проблема с компьютером, но нисколько не жалею об этом. Я стараюсь жить по принципу: обращай вред в пользу. Меня давно просят усовершенствовать программу, но я страшно загружен по науке. Поскольку я бедный ученый, то должен эпизодически подрабатывать на стороне. Научные гранты это копейки и я их трачу только на командировки, на зарплату просто бессмысленно. На этой задаче толком не заработаешь, а время она отнимет много. Поэтому предлагаю следующие решение (набросок). 
 Ссылки по теме | 
 
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| О нас | 
| Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО. На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям. 
 | 
| 119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru | 
 | © ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |