Курсы программирования с нуля

Формула программиста
основатель — Волосатов Евгений Витольдович
Вебинар «Мастер-класс. Как стать высокооплачиваемым программистом.» начнётся через 3 дня 4 час. 06 мин.

Базы данных - Управление отелем

Практическое знакомство с базами данных на примере создания программы «Hotel - управление комнатами и клиентами» - планирование и проектирование базы данных, проектирование интерфейса и создание полноценного программного продукта, с использованием базы данных MySQL и MS-SQL.



5,000 руб.


Для подписки на пакет необходимо авторизоваться.

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:08:49 54 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 30 мин. [Показать отчёт]
Научился: Вспоминаю теорию проектирования БД. 
Сложности: Понять как будет выглядеть будущая БД. 
Комментарии: Все хорошо 
2 Таблицы клиентов и заказов 00:25:03 52 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 30 мин. [Показать отчёт]
Научился: Обдумывать содержимое БД. 
Сложности: Находить и исправлять ошибки. 
Комментарии: В client добавила бы тип клиента ( заказчик, ребенок, инвалид) и доп. услуги, которые он будет использовать. В book тип бронируемого номера и статус оплаты. 
3 Таблицы комнат и дней 00:22:47 50 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Посмотрела на существующие конвертеры dia to sql. Поняла, что дефолтное значение now() может быть только типа datetime, никакие date curdate() не проходят. 
Сложности: Переименовать сущности, скачать parsediasql и sed, создать bat файл, чтоб все работало. 
Комментарии: Что добавить и убрать посмотрю когда готовый проект будет. Пока будем считать что у нас 1 здание в одной стране, клиенту нужен только сон и он не за что не платит. Не поняла почему нельзя паспортные данные записывать, в отеле всегда паспорт спрашивают. Сжатое фото паспортов в базе хранить? Мой файл diaToSql.bat: parsediasql --file d3.dia --db mysql-innodb>1.sql sed s/latin1/utf8/ 1.sql>2.sql del 1.sql rename 2.sql 1.sql 
4 Создание базы в MS Access 00:26:28 46 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 3 час. 00 мин. [Показать отчёт]
Научился: Переносить таблицы из dia в mssql. Враждебный access так и не освоила, верю что дизайнер там не плохой. :-) 
Сложности: Выполнить sql запрос в access. 
Комментарии: Не поняла поле day будет date или datetime? И еще текста - 4 вида. Какой из них длинный, а какой короткий? Чем varchar(255) отличается от tinytext? 
5 Установка сервера MySQL 00:08:39 27 чел. ★ 4.9 Demo
6 SQL запросы для создания Базы 00:24:00 45 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 30 мин. [Показать отчёт]
Научился: Что вместо tinyint можно написать bool. Что primary key можно объявить в самом поле. Вспомнила команду для добавления внешнего ключа. explain и show create table изучала очень давно, с HeidiSQL забыла за ненадобностью. 
Сложности: Ничего 
Комментарии: Все хорошо. 
7 Модель. Планирование. 00:04:53 45 чел. ★ 4.8 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 20 мин. [Показать отчёт]
Научился: Думать. 
Сложности: Сформулировать задачи бд и полностью их раскрыть. 
Комментарии: Регистрация нового клиента. Поиск и редактирование данных клиента. Добавление новой записи брони. Редактирование записи брони. Изменение статуса заявки. Добавление данных о комнатах. Редактирование данных о комнате. Распределение комнат по заявкам клиентов по дням. Выборка числа свободных комнат на определенную дату. Поиск другой информации о свободных комнатах. Изменение статуса в map или удаление записи. Создать календарь. Заполнить праздничные дни. Узнать рабочий день или выходной. 
8 Модель. Список задач. 00:23:02 43 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Повторила SQL запросы. Правда только самые простые. Группировку, агрегатные функции, объединение и пересечение еще бы повторить. 
Сложности: Научиться пользоваться хранимыми процедурами. 
Комментарии: Идем дальше. 
9 Модель. SQL запросы для Client 00:20:17 42 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Вспомнила, что вместо звездочки нужно писать все поля, но не помню что такое страшное может произойти, если оставить * - инъекция сработает или переполнение массива при изменении бд будет... 
Сложности: Понять как перемещать вверх/вниз, если поле со значением step+1/-1 вдруг окажется пустым. 
Комментарии: Идем дальше. 
10 Модель. SQL запросы для Room 00:12:04 42 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Потренировалась с хранимыми процедурами. 
Сложности: Правильно реализовать перемещение вниз. 
Комментарии: Идем дальше. 
11 Модель. SQL запросы для Book и Map 00:26:03 42 чел. ★ 4.8 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Повторила составление запросов на выборку, удаление и изменение записей в бд. Узнала о модификаторе /G, правда не поняла где его будет удобно использовать, ну да ладно. :-) 
Сложности: Понять для чего нужен LEFT JOIN. В моей базе NULL запрещено использовать и не связанную запись так просто не добавить. 
Комментарии: Хороший вступительный урок по SQL получился, все просто и элегантно, не то что эти кораблики. http://www.sql-ex.ru/help/select13.php#db_1 Способа проектирования другого не знаю, разве что потереть бд, когда программа уже готова и попытаться ее восстановить по памяти... было такое. Внешние связи так в программе и не восстановила. Научиться бы еще по тех заданию понимать какие конкретно запросы будут нужны. Все равно все запросы с первого захода прописать не реально. SQL мне нравится, правда не всегда понимаю какую конкретно выборку требуется произвести и как не упустить какую-нибудь мелочь типа пол таблицы с null значениями.  
12 Модель. Имена методов. 00:26:12 41 чел. ★ 4.9 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Уметь правильно называть функции очень важно. 
Сложности: Писать и слушать одновременно. 
Комментарии: Обратила внимание на то, что в SQL запросах сохранен регистр, несмотря на то что MySql (в отличии от MS SQL) к регистру не чувствителен. 
13 Класс MySQL. Драйвер и конструктор. 00:28:30 41 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Устанавливать MySQL коннектор, подключаться с помощью него к базе данных. 
Сложности: Разобраться с экзекьютами. 
Комментарии: Идем дальше. 
14 Класс MySQL. Получение таблицы. 00:23:55 41 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Познала магию заполнения таблицы. Научилась использовать ExecuteNonQuery. 
Сложности: Разобраться с dataGrid. 
Комментарии: Все хорошо. 
15 Класс MySQL. Обработка ошибок. 00:13:22 40 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 30 мин. [Показать отчёт]
Научился: Отлавливать ошибки обращения к БД и обрабатывать их. 
Сложности: Ничего. 
Комментарии: Все хорошо. 
16 Модульный тест 00:16:02 39 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Разбирать примеры на сайте microsoft. 
Сложности: Понять что за account.Balance имеется ввиду. Подставила m_balance. Дошла до задания лимита времени, дальше сломалась. Пугающая строчка [DataSource( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Projects\MyBank\TestData\AccountsTest.accdb", "AddIntegerHelperData" )] 
Комментарии: Модульные тесты уже разбирали в подарке от Деда Мороза. 
17 Отображение таблицы 00:06:18 39 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 10 мин. [Показать отчёт]
Научился: Менять заголовки таблицы разными способами. 
Сложности: Ничего. 
Комментарии: Сама разобралась как загрузить данные в таблицу. Удалила лишний код. Добавила dataGridView1.RowHeadersVisible = false; 
18 Модель. Класс Клиента 00:24:57 38 чел. ★ 5 Done
  Отчёт отправил: 1232. Фомичева Наталья Решено за 1 час. 30 мин. [Показать отчёт]
Научился: Писать MySql инъекции. Ну и насчет /// было познавательно. 
Сложности: Подобрать значение клиента. Но у меня таки получилось удалить запись. :-) 
Комментарии: client = "\\',\u0022 инъекция :-)\u0022,\u0022\u0022,\u0022\u0022,\u0022\u0022);DELETE FROM map WHERE room_id = 1 AND book_id = 1;-- "; А так еще проще: mClient.SetInfo("\\');DELETE FROM map WHERE room_id = 1 AND book_id = 1;-- "); Вот только id выдает равным 0. Как бы это исправить. :-) 
19 Модель. Всё про Клиента 00:35:00 37 чел. ★ 5 $
20 Модель - Календарный год 00:29:48 33 чел. ★ 5 $
21 Модель - Календарные праздники 00:20:00 31 чел. ★ 5 $
22 Модель. Класс комнаты 00:16:39 31 чел. ★ 5 $
23 Модель. Удаление комнат. 00:14:41 29 чел. ★ 4.8 $
24 Модель. Тестирование комнат. 00:30:31 26 чел. ★ 5 $
25 Модель. Бронирование. 00:29:40 25 чел. ★ 5 $
26 Модель. Статусы заказов. 00:14:52 24 чел. ★ 5 $
27 Модель. Список заказов. 00:13:17 23 чел. ★ 5 $
28 Модель. Карта отеля 1 00:22:41 22 чел. ★ 5 $
29 Модель. Карта отеля 2 00:18:56 22 чел. ★ 5 $
30 Модель. Карта отеля 3 00:16:56 22 чел. ★ 5 $
31 Вид. Список форм. 00:12:00 12 чел. ★ 4.8 $
  Итого:   31 видеоурок общей продолжительностью 10 час. 16 мин. 10 чел. ★ 4.96  
  Финалисты:   Денис,   Иван,   Николай (nick27m),   Валентин,   Кирилл Шмойлов,   Frank,   Rita,   Ludmila,   Станислав,   Сергей Зулкарнаев .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Делать тесты без unit test
Трудности: Как обычно, самое интересное - вылавливать ошибки и их исправлять.
Продолжаю работать в студии 2008. Т.к. там юнит тестов нет, но очень хотелось что-то попробовать, решил сделать тесты прямо в самой программе. Это все же лучше, чем совсем без тестов. Как раз эти тесты позволили отловить две ошибки, чему я очень рад. Спасибо за урок! Двигаемся дальше!
Ладно, мне это сразу не понравилось, но раз уж на уроке возникла дискуссия, вставлю и свои пять копеек. Учитель слегка неправ, на мой взгляд. Свойства (они же геттеры и сеттеры) для того и существуют, что бы выполнять различные проверки и не давать доступ напрямую. А функции SetRoom, SetFloor, SetBeds, SetStep это никакие не свойства, и уж тем более не поля. Это просто функции. Я бы даже сказал просто ЛИШНИЕ функции. Лишний код. У нас уже есть для этого настоящее СВОЙСТВО выше { get; private set} , в котором мы непонятно зачем сделали private set (в вышеупомянутых функциях мы точно так же напрямую без обработки просто присваиваем значения. Правильней было бы вообще обойтись без SetRoom, SetFloor, SetBeds, SetStep, а свойства set отставить публичным. И никакой принцип инкапсуляции это бы не нарушило, ибо для того и существуют свойства! И тут же бы делали защиту от sql-инъекций. Прям написать вот так { get; set{ room = sql.addslashes(value);} }