Форум программистов, компьютерный форум CyberForum.ru

Разработка БД "Расписание для школы" - C++

Восстановить пароль Регистрация
 
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
04.07.2016, 09:23     Разработка БД "Расписание для школы" #1
Доброго времени суток. Имеется вопрос по созданию базы данных на языке С++. Задача - разработать базу данных "школьное расписание".

Имеются следующие исходные данные:
1) наименования предметов.
2) кол-во часов каждого предмета в неделю.
3) кол-во параллелей.
4) кол-во классов в каждой параллели.
5) список кабинетов (а также список предметов, которые привязаны к определённым кабинетам).

Необходимо реализовать следующие возможности:
1) формирование расписания, возможность хранения расписания в файле на диске; чтение/редактирование существующего расписания.
2) просмотр расписания по дням/классам/кабинетам.
3) анализ корректности расписание. Корректность расписания подразумевает под собой соответствие следующим пунктам:
3.1) наличие стандартной логики (т.е. в одной аудитории в одно время не могут проходить 2 или более урока, кол-во предмета в неделю должно соответствовать уч. плану и т.д.).
3.2) Не допустить появление "окон" в расписании.

Собственно, это основная "база", которую необходимо сделать в любом случае. Второй же этап (который не является основным) заключается в создании интерфейса для данной программы. Но даже наличие хотя бы самого примитивного интерфейса - уже плюс.

Основной вопрос - с чего лучше всего начать разработку данного проекта? Я так понимаю, поскольку работать придётся непосредственно с таблицами, может потребоваться использование дополнительных программных средств. Какие знания и софт могут потребоваться для создании данной БД?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
04.07.2016, 09:48     Разработка БД "Расписание для школы" #2
Знания написания простых SQL запросов, какая-нить простенькая СУБД, например, MySQL или SQL Lite (лучше 1)
Ну и умение разработки самой базы, естественно, знание уровней нормализации таблиц, их связи ну и вообще о БД знания нужны
Megavolt78
10 / 10 / 3
Регистрация: 30.06.2016
Сообщений: 42
04.07.2016, 10:19     Разработка БД "Расписание для школы" #3
С чего лучше начать - с продумывания и разработки структуры БД. Взять любой редактор диаграмм, тот же Visio, и нарисовать в нем предполагаемую структуру БД: прямоугольники таблиц и отношения между ними.
Изначально хорошо продуманная структура БД - залог успеха.
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
04.07.2016, 12:20  [ТС]     Разработка БД "Расписание для школы" #4
Ну саму структуру, допустим, я смогу разработать (до этого работал в Access'е и кое-какое представление о БД имеется). А как дальше делать?

Просто с такими средствами, как SQL запросы я не знаком. Да и как вообще будет осуществляться взаимодействие С++ и SQL?

P.S. По возможности хотелось бы получить ссылки на соответствующую литературу, чтобы получше разобраться в этом.
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
04.07.2016, 12:24     Разработка БД "Расписание для школы" #5
Это не тайна мировая какая-то, Google->"С++ SQL запросы MySQL" и все, что нужно, выведет
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
04.07.2016, 19:21     Разработка БД "Расписание для школы" #6
Задание не очень корректное.
Цитата Сообщение от trb4 Посмотреть сообщение
3) кол-во параллелей.
Нужно было бы список наименований параллелей школы, например:
1, 2, 10, 11.
Цитата Сообщение от trb4 Посмотреть сообщение
1) наименования предметов.
Непонятно что здесь подразумевается. Так-то математика, 1-й класс и математика, 2-й класс - это как бы разные предметы.
Но если так определять, то это противоречит пункту
Цитата Сообщение от trb4 Посмотреть сообщение
5) список кабинетов (а также список предметов, которые привязаны к определённым кабинетам).
Т.е. не просто кабинет математики, а кабинет математики для первых и вторых классов?

Добавлено через 3 часа 18 минут
Цитата Сообщение от trb4 Посмотреть сообщение
Необходимо реализовать следующие возможности:
1) формирование расписания
Да, и непонятно под формированием что подразумевается, - автоматическое или интерактивное?
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
04.07.2016, 21:13  [ТС]     Разработка БД "Расписание для школы" #7
Цитата Сообщение от Mr.X Посмотреть сообщение
Непонятно что здесь подразумевается. Так-то математика, 1-й класс и математика, 2-й класс - это как бы разные предметы.
Но если так определять, то это противоречит пункту....
Т.е. не просто кабинет математики, а кабинет математики для первых и вторых классов?
Предполагается, что в качестве исходных данных будут активны все возможные предметы, которые изучают в школе за 11 лет. В данном случае не вижу смысла создавать разные предметы, такие как "математика 1 класс", "математика 2 класс" и т.д. По поводу привязки к аудиториям: будет сделана возможность привязать предмет к нескольким аудиториям. А уже после этого делать привязку аудиторий к классам (если требуется).

Цитата Сообщение от Mr.X Посмотреть сообщение
Да, и непонятно под формированием что подразумевается, - автоматическое или интерактивное?
Расписание составляется вручную. При попытке ввода некорректных значений или при появлении логических ошибок - выводить соответствующее предупреждение.

p.s. В этом как раз я и вижу сложность. Ведь всю логики необходимо будет сохранить после формирования расписания и записи его в отдельный файл. И если повторно обратиться к данному файлу и попытаться сделать какие-либо изменения, то все предупреждения и уведомления об ошибках также должны срабатывать.
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.07.2016, 05:51     Разработка БД "Расписание для школы" #8
Цитата Сообщение от trb4 Посмотреть сообщение
В данном случае не вижу смысла создавать разные предметы, такие как "математика 1 класс", "математика 2 класс" и т.д.
А это учебная или прикладная задача? Если учебная, то это задано должно быть, а если прикладная, то чувствуется, что вы пока в нее не въехали.
Цитата Сообщение от trb4 Посмотреть сообщение
2) кол-во часов каждого предмета в неделю.
Здесь явно имеется в виду, что, например, математика для 1-го класса - столько-то часов в неделю, математика для 2-го - столько-то, а не вообще математика. Ну и в расписании в таком-то кабинете в такое-то время будет не просто математика проходить, а для конкретного класса.

Добавлено через 6 часов 51 минуту
Цитата Сообщение от trb4 Посмотреть сообщение
Цитата Сообщение от Mr.X Посмотреть сообщение
Да, и непонятно под формированием что подразумевается, - автоматическое или интерактивное?
Расписание составляется вручную.
Мне кажется, автоматическое составление расписания в данной задаче необходимо, так как при каких-то исходных данных составить расписание вообще невозможно, и машина это мгновенно может определить, а вот пользователь может до опупения перебирать варианты, и так и не поймет, возможно ли создать расписание или нет.
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
05.07.2016, 12:36  [ТС]     Разработка БД "Расписание для школы" #9
Цитата Сообщение от Mr.X Посмотреть сообщение
Здесь явно имеется в виду, что, например, математика для 1-го класса - столько-то часов в неделю, математика для 2-го - столько-то, а не вообще математика. Ну и в расписании в таком-то кабинете в такое-то время будет не просто математика проходить, а для конкретного класса.
Я планировал так сделать: для каждого класса прописывается кол-во часов для каждого предмета. Например:

7 класс:
математика - 2 часа
физика - 2 часа
история - 1 час
и т.д.

9 класс:
математика - 3 часа
физика - 2 часа
биология - 1 час
.....

В таком случае если я поставлю, к примеру, математику в 7 классе, то счётчик часов "математика" для 7 класса уменьшится на единицу.

Цитата Сообщение от Mr.X Посмотреть сообщение
Мне кажется, автоматическое составление расписания в данной задаче необходимо, так как при каких-то исходных данных составить расписание вообще невозможно, и машина это мгновенно может определить, а вот пользователь может до опупения перебирать варианты, и так и не поймет, возможно ли создать расписание или нет.
Прежде всего планируется подавать разумные исходные данные, чтобы расписание можно было составить в любом случае. Хотя и не исключена подача некорректных данных. Ну тут я согласен - можно сделать какую-нибудь проверку (она может являться и одновременной генерацией расписания), согласно которой и удастся определить - возможно ли составить расписание или нет.
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.07.2016, 14:53     Разработка БД "Расписание для школы" #10
trb4, вы так на мой вопрос и не ответили:
Цитата Сообщение от Mr.X Посмотреть сообщение
это учебная или прикладная задача?
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
05.07.2016, 19:37  [ТС]     Разработка БД "Расписание для школы" #11
Цитата Сообщение от Mr.X Посмотреть сообщение
это учебная или прикладная задача?
Учебная. Всё, что дано и требуется реализовать - я написал (даже чуть больше и точнее). Никаких дополнительных требований и уточнений нет.
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.07.2016, 21:04     Разработка БД "Расписание для школы" #12
trb4, не хватает еще одной важной информации. Для каждой параллели должно быть задано максимальное общее количество часов занятий в день. Иначе можно все уроки недели на понедельник запланировать.
trb4
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
05.07.2016, 21:36  [ТС]     Разработка БД "Расписание для школы" #13
Цитата Сообщение от Mr.X Посмотреть сообщение
Для каждой параллели должно быть задано максимальное общее количество часов занятий в день. Иначе можно все уроки недели на понедельник запланировать.
Согласен, но помимо этого, думаю, можно ещё ввести максимальное кол-во часов в день для каждого конкретного класса, для большей точности.

Ладно, допустим я определился с исходными данными. Какой будет дальнейший алгоритм разработки? Я так понимаю, мне нужно будет создать таблицу, в которую будут вноситься значения согласно исходным данным? В какой среде лучше всего будет разработать эту таблицу? Это важно, т.к. основная программа для управления этой БД будет написана на языке С++. Сама же программа, в свою очередь, должна будет иметь как возможность работать с уже готовой БД и вносить туда правки (обращая внимание на все логические связи), так и создавать БД с нуля.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2016, 22:22     Разработка БД "Расписание для школы"
Еще ссылки по теме:

C++ Курсовая работа "Разработка конвертации мер массы и веса"
Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" C++
C++ Для класса "Футболист" создать производный класс "Нападающий"

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
05.07.2016, 22:22     Разработка БД "Расписание для школы" #14
Цитата Сообщение от trb4 Посмотреть сообщение
можно ещё ввести максимальное кол-во часов в день для каждого конкретного класса
Не понял. Так-то все классы в каждой параллели у нас равноправны.

Добавлено через 12 минут
Цитата Сообщение от trb4 Посмотреть сообщение
Какой будет дальнейший алгоритм разработки? Я так понимаю, мне нужно будет создать таблицу, в которую будут вноситься значения согласно исходным данным?
Мне кажется, основным элементом данных нужно сделать структуру Урок, которая имеет следующие члены-данные:
{
- кабинет
- номер для недели
- номер часа занятий
- предмет
- параллель
- номер класса параллели
}

Вся база данных - это множество, состоящее из объектов-уроков.
Действия с базой данных - это работа с уроками, типа
- создать урок
- изменить урок
- удалить урок
- просмотреть все уроки
- просмотреть уроки, удовлетворяющие какому-то условию и т.д.
Yandex
Объявления
05.07.2016, 22:22     Разработка БД "Расписание для школы"
Ответ Создать тему
Опции темы

Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru