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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
trb4
1 / 1 / 0
Регистрация: 15.12.2015
Сообщений: 15
#1

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

04.07.2016, 09:23. Просмотров 443. Ответов 13
Метки нет (Все метки)

Доброго времени суток. Имеется вопрос по созданию базы данных на языке С++. Задача - разработать базу данных "школьное расписание".

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

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

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

Основной вопрос - с чего лучше всего начать разработку данного проекта? Я так понимаю, поскольку работать придётся непосредственно с таблицами, может потребоваться использование дополнительных программных средств. Какие знания и софт могут потребоваться для создании данной БД?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2016, 09:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработка БД "Расписание для школы" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Найти исходники для книги "UNIX. Разработка сетевых приложений" - C++
Привет. В книжке "UNIX. Разработка сетевых приложений" Стивенс написано, что исходники лежат на этом сайте. Не могу разобраться, что...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные...

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; - C++
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. Дано натуральное число N (N<20),...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

С чего начать курсовой проект "Штатное расписание"? - C++
Как сделать штатное расписание на c++

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

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

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

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

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

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

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

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

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

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

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

Ладно, допустим я определился с исходными данными. Какой будет дальнейший алгоритм разработки? Я так понимаю, мне нужно будет создать таблицу, в которую будут вноситься значения согласно исходным данным? В какой среде лучше всего будет разработать эту таблицу? Это важно, т.к. основная программа для управления этой БД будет написана на языке С++. Сама же программа, в свою очередь, должна будет иметь как возможность работать с уже готовой БД и вносить туда правки (обращая внимание на все логические связи), так и создавать БД с нуля.
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
05.07.2016, 22:22 #14
Цитата Сообщение от trb4 Посмотреть сообщение
можно ещё ввести максимальное кол-во часов в день для каждого конкретного класса
Не понял. Так-то все классы в каждой параллели у нас равноправны.

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

Вся база данных - это множество, состоящее из объектов-уроков.
Действия с базой данных - это работа с уроками, типа
- создать урок
- изменить урок
- удалить урок
- просмотреть все уроки
- просмотреть уроки, удовлетворяющие какому-то условию и т.д.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2016, 22:22
Привет! Вот еще темы с ответами:

Программа "структуры". Расписание поездов. - C++
Друзья, помогите пожалуйста с написанием вот этой программы. В расписании поездов указано: номер поезда, пункт отправления,...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
05.07.2016, 22:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru