С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/116: Рейтинг темы: голосов - 116, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16

Составление расписания

18.09.2010, 20:15. Показов 21814. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Передо мной стоит задача, написать программу для составления расписания ВУЗа. Писать хочу в C#, так как немного с ним знаком. Представляю это себе так, сначала пользователь должен в первом режиме программы, ввести данные о группах, кабинетах, специальных кабинетах их вместимости и так далее. Затем на основе этой информации программа составляет расписание, которое можно просматривать и редактировать уже в другом режиме программы. Вопрос в том как лучше хранить данные в каком формате, просто в текстовом виде мне кажется как-то неправильно ,а с базами данных на C# еще не сталкивался. Прошу подсказать как лучше хранить данные, как потом к ним обращаться если есть примеры буду рад. И конечно любые советы по основному алгоритму и программе вообщем. Пожалуйста подробнее так как я начинающий.
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2010, 20:15
Ответы с готовыми решениями:

Алгоритм создания расписания
Здравствуйте. Делаю программу, которая должна делать расписание по входным данным. Подскажите, пожалуйста, примерный алгоритм, если можно -...

Создание таблицы для расписания
Добрый день уважаемые форумчане. Необходимо создать таблицу для составления расписания предметов. Все вроде бы просто. По оси x...

Создание расписания запуска службы по дням недели
Добрый день. Хочу сделать GUI для службы, в котором можно задать периодичность выполнения службой определенной задачи. Например с...

39
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
19.09.2010, 00:46
Цитата Сообщение от Great_Beaver Посмотреть сообщение
Вопрос в том как лучше хранить данные в каком формате, просто в текстовом виде мне кажется как-то неправильно ,а с базами данных на C# еще не сталкивался.
База или xml
0
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16
19.09.2010, 09:41  [ТС]
Цитата Сообщение от kirill29 Посмотреть сообщение
База или xml
Я вот как раз и прошу совета как лучше сделать, потому что сам не знаю. Просто как я понимаю xml это размеченный текстовый файл а в базе данных будут типизированные данные.
0
7 / 7 / 0
Регистрация: 23.08.2010
Сообщений: 24
20.09.2010, 12:19
в C# целая библиотека System.data, System.data.sql;
позволяет соеденеяться практически к любой базе данных с помощью Datascore щас под рукой нет исходника вечером скину пример.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
20.09.2010, 17:26
Алгоритм.. Алгоритм тут будет довольно сложен, по-умному, надо делать, я так полагаю, через генетический алгоритм - страшная вещь. Ну или перебор, надо еще организовывать кучу различных правил и приоритетов, чтобы, например, физ-ра, какая-нибудь, не стояла первой или в середине дня, чтобы в субботу были менее важные пары и прочее.
0
61 / 61 / 9
Регистрация: 17.02.2010
Сообщений: 101
20.09.2010, 17:31
Цитата Сообщение от r0fL Посмотреть сообщение
Алгоритм.. Алгоритм тут будет довольно сложен, по-умному, надо делать, я так полагаю, через генетический алгоритм - страшная вещь. Ну или перебор, надо еще организовывать кучу различных правил и приоритетов, чтобы, например, физ-ра, какая-нибудь, не стояла первой или в середине дня, чтобы в субботу были менее важные пары и прочее.
Ты прав, это очень сложная задача, я ее еще не разу не видел, хорошой реализации!
0
 Аватар для AnTro.Net
131 / 127 / 50
Регистрация: 28.04.2010
Сообщений: 928
20.09.2010, 17:32
Цитата Сообщение от r0fL Посмотреть сообщение
надо еще организовывать кучу различных правил и приоритетов, чтобы, например, физ-ра, какая-нибудь, не стояла первой или в середине дня, чтобы в субботу были менее важные пары и прочее.
ты в универе когда то учился?))) не знаю кто там составляет расписания, но как раз так и выходит: физра либо первая, либо гдето в средине, а важные пары как раз последние))
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
20.09.2010, 17:40
AnTro.Net,

Не по теме:

учусь сейчас, физра стоит последними парами, в субботу у меня, как у программиста, нет ни профильных предметов, ни математических дисциплин.


Да и, думаю, с этой целью и делается программа - чтобы облегчить составление хороших расписаний. Ибо как попало может составить любой, потратив вечер на состыковки - чтобы не было занятий без перерыва в разных корпусах на двух противоположных концах города.
0
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16
20.09.2010, 21:23  [ТС]
Рад что тема вызвала обсуждение Прошу больше рассуждайте это сильно поможет, любые идеи.
И все таки подскажите как поступить с хранением данных. Не будет ли слишком криво если я буду сохранять данные просто в текстовом файле? Мне так кажется проще,но не уверен что это правильно.
А в базы лезть боюсь ) но чую что придется. Если все же выбор падет на базы, то какие именно? создавать ле через Access или что то другое? Если другое то что? И ткните носом что почитать полезного, статьи,книги.
1
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
20.09.2010, 21:40
Great_Beaver, информации не так много для баз, думаю, хмл хватит
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
20.09.2010, 21:42
Цитата Сообщение от Great_Beaver Посмотреть сообщение
А в базы лезть боюсь ) но чую что придется. Если все же выбор падет на базы, то какие именно? создавать ле через Access или что то другое? Если другое то что? И ткните носом что почитать полезного, статьи,книги.
Использовать базы. Бесплатная СУБД (например): PostgreSQL - одна из лучших среди бесплатных.
Книга: PostgreSQL для профессионалов - Дж. Уорсли, Дж. Дрейк
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
21.09.2010, 13:35
Просто как я понимаю xml это размеченный текстовый файл а в базе данных будут типизированные данные.
В xml тоже можно хранить типизированные данные. Я бы рекомендовал использовать xml. Сохранять расписание в базе - все-равно, что стрелять из базуки по воробьям. С xml ваша программа будет легкой и элегантной, работать на любом компьютере без сторонних приложений. В идеале вообще состоять из одного исполняемого файла. А базы все же лучше использовать в несколько других приложениях - там где нужны сортировки и выборки по определенным критериям. Ведь ваша задача какая? Просто обработать информацию в памяти и сохранить на диск. Так что не усложняйте - для этого подойдет и простой текстовый файл, хотя все же используйте xml - с ним намного проще обеспечивать совместимость со всеми версиями вашей программы.
0
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16
21.09.2010, 17:13  [ТС]
Вот пара ссылок по теме алгоритма:
http://www.tusur.ru/filearchiv... 21-225.pdf
http://www.mnogosmenka.ru/drugoe/telematika.htm
Пугают что еще никому не удалось написать стоящую программу.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
21.09.2010, 21:15
Great_Beaver, думаю, хорошую программу написать можно, но надо приложиться хорошенько, как можно больше использовать параметров, а дальше грамотно оформленный перебор по этим самым параметрам и должно получиться хорошо, без генетического страшного алгоритма можно будет обойтись. Но, к сожалению, чем больше будет параметров, тем дольше надо будет реализовывать возможность гибкой настройки - ведь программой будет пользоваться отдел "старых бабушек", формирующих расписание, думаю, им все должно быть понятно.
0
7 / 7 / 0
Регистрация: 06.02.2010
Сообщений: 31
22.09.2010, 06:58
Цитата Сообщение от r0fL Посмотреть сообщение
Алгоритм.. Алгоритм тут будет довольно сложен, по-умному, надо делать, я так полагаю, через генетический алгоритм - страшная вещь. Ну или перебор, надо еще организовывать кучу различных правил и приоритетов, чтобы, например, физ-ра, какая-нибудь, не стояла первой или в середине дня, чтобы в субботу были менее важные пары и прочее.
Я думаю надо отталкиваться от топологичекской сортировки графа...

Добавлено через 8 минут
Цитата Сообщение от Great_Beaver Посмотреть сообщение
Рад что тема вызвала обсуждение Прошу больше рассуждайте это сильно поможет, любые идеи.
И все таки подскажите как поступить с хранением данных. Не будет ли слишком криво если я буду сохранять данные просто в текстовом файле? Мне так кажется проще,но не уверен что это правильно.
А в базы лезть боюсь ) но чую что придется. Если все же выбор падет на базы, то какие именно? создавать ле через Access или что то другое? Если другое то что? И ткните носом что почитать полезного, статьи,книги.
На данном этапе разработки, я бы на Вашем месте меньше всего бы задумывался о способе хранения информации, т.к. у вас нет даже прикидок об алгоритме генерации расписания (я так понял).
Лично мое мнение такое: xml в данном случае не самое лучшее решение, т.к. данных будет много, и формат оптяь же надо выбирать хз как. Лучшее решение (ИМХО) это SQL - сэкономите дисковое пространство, увеличите скорость работы с данными, опять же использование внешних ключей это плюс к целостности!
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
22.09.2010, 20:11
В основном тут всех интересует алгоритм составления расписания, а как вы его будете хранить никому не интересно
0
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16
24.09.2010, 22:34  [ТС]
Вот что я думаю на счет исходных данных:
Сначала даем ввести предметы:
Данные о предметах:
Имя: Физика лабораторная
Сложность: 7
Деление группы на подгруппы: 1 (Скажем если английский или еще что ставим на сколько подгрупп делить)
Преподаватели: (Список Преподавателей которые могут вести физику)
1)
2)
N)

Тип спец кабинета: 0 (Скажем если нужен компьютерный класс то тип например 1 и так каждому спец. кабинету присваивается тип )

Желательные кабинеты: (Если есть предпочтительные кабинеты)
1)
2)
N)

Данные о кабинетах:
Имя/номер: 0620
Корпус: 1 (или например Главный)
Специальность:1 (Тип оборудования например компьютеры или станки)
Специальных мест:15 (Количество станков)
Простых мест:20 (Мест за партами если есть)
Вместимость групп:1 (Например в спорт зале можно несколько групп)

Данные о группах:
Имя/номер: 303
Численность: 20
Желательный кабинет: 0620 (если у предмета нет предпочтений и ненужно спец оборудования то можно садить группу в родной кабинет)
Пар в неделю: 13 (Для распределения между днями)
Рабочие дни: Пн Вт Ср Чт Пт
Предметы: (Из данных о предметах формируем список из которого выбираем)

Вот на мой взгляд минимальные исходные данные, еще думаю надо добавлять данные о преподавателях или хватит информацию указанной в предметах. Насчет алгоритма есть некоторые идеи, скорее всего завтра напишу, а пока скажите что думаете об исходных данных.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
25.09.2010, 02:03
Great_Beaver, лучше разделить на подгруппы, например:
  1. Группа
    • Название
    • Численность
    • Специальность
    • Курс
  2. Преподаватели
    • Предметы
    • Максимум проведенных пар за неделю
    • Минимум проведенных пар за неделю
    • Рабочий корпус на каждый день недели
  3. Корпуса
    • Наличия специализированных аудиторий (разные, по численности, по оборудованию)
    • Количество аудиторий в общем
  4. Пары
    • Предмет
    • Приоритет
    • Корпус
    • Тип пары
    • Необходимость специализированной аудитории
    • Разделение группы на подгруппы

Вот, что-то вроде того, что-то, думаю, еще нужно добавить, что-то удалить, это я так, с ходу набросал, и, в общем, алгоритм берет первую пару, например, а дальше потом откидывает то, что не подходит для следующей пары и выкидывает их, далее выбор идет из оставшегося.
0
 Аватар для aregaz
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 42
26.09.2010, 17:10
Думаю, также нужно будет отталкиваться от ограничивающего фактора. У нас в универе, например, таковым являются аудитории. Больших аудиторий, способных вместить весь курс, естественно меньше всего. По ним стоит забить расписание в первую очередь.

Можно также каждому предмету расставить приоритет: число от 0 до, скажем, 5 (если максимальное число пар в день именно пять) - и тогда ставить той же самой физкультуре приоритет 5, т.е. что предпочтительней ей быть на пятой паре. Наиболее важным предметам, думаю, лучше присвоить приоритет 2, чтоб они чаще всего были на вторых парах (хотя тут конечно стоит посоветоваться с деканатом). Категорию 0 можно дать тем предметам, для которых непринципиально на какой паре проходить. Ну и т.д.

Также стоит учесть, что бывают мигалки (пары проходят раз в неделю) или полупары (расписание составлять не для пар, а для полупар. Ну а на вывод соответственно давать пары=две полупары)
0
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 16
27.09.2010, 19:43  [ТС]
Спасибо за подсказку о больших аудиториях, приоритетах и полу парах, у нас в универе вообще не пары а занятия.Надо еще подумать как правильно сделать подгруппы данных и какие еще данные включить.

А по алгоритму я дума. вот что:

Для каждой группы нам известны какие пары и сколько должно быть.
Для простоты обращения каждой группе,преподавателю и предмету присваивается номер, создаются массивы с номерами. Перед пользователем таблица, каждая ячейка которой представляет собой аудиторию то есть мы как бы видим первую пару первого рабочего дня, сверху располагаем таблицу с днями недели каждый день поделен на максимальное количество пар.

Начинаем распределять группы в аудитории по приоритетам. Так как у нас таблица представляет одну пару одного дня то если в ней уже задействована конкретная группа или конкретный преподаватель то как нибудь отмечаем их и больше к ним не обращаемся, также отмечаем предметы которые вставили в таблицу в цикле заполняем максимальное количество аудиторий. Далее переходим к следующей паре этого дня и тут у нас все преподаватели и группы опять свободны, продолжаем процесс. По мере выполнения сохраняем данные в XML файле обновляя его после заполнения каждой таблицы. Если не смогли распределить все предметы то предоставляем это пользователю. Вот примерно так, простите за изложения информации. Трудно объяснить идею.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2010, 19:43
Помогаю со студенческими работами здесь

Организация онлайн расписания
Здравствуйте! У меня вопрос как лучше организовать расписание с заранее не известным количеством учеников, т.е. в до или после...

Создание расписания приема специалистов
Пытаюсь сделать прогу для салона красоты. Не знаю с помощью каких элементов лучше всего сделать расписание как на картинке, поэтому...

База даных ACCES для школьного расписания
Пожалуйста подскажите, как должна выглядеть база данных для генератора расписаний школы колледжа или вуза. Моя идея состоит в том...

Как перекинуть в таблицу расписания рандомно любые 6 предметов
Добрый день подскажите пожалуйста у меня есть 3 таблицы в базе ацес, предметы. классы и расписание. В таблице классов у каждого свой...

есть проект на С#(программа для помощи создания школьного расписания), к нему нужно подключить БД
Здравствуйте. У меня такая проблема: есть проект на С#(программа для помощи создания школьного расписания), к нему нужно подключить БД. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru