Фильм Код_ Фильма N PK Назв_Фильма S |
Фильмы и Режиссеры Код_Режиссера N PK FK1 Код_Фильма N PK FK2 |
Фильмы и Актёры Код_Актёра N PK FK1 Код_Фильма N PK FK2 |
Диск_Фильм Код_Диска N PK FK1 Код_ФильмаN PK FK2 |
Арендатор Код_Арендатора N PK Фам_Арендатора S Имя_Арендатора S Тел_Арендатора S |
Аренда диска Дата_Аренды D PK Код_ Диска N PK FK1 Код_Арендатора N PK FK2 Дата_Возврата D |
Диск Код_ Диска N PK Назв_ Диска S |
Рисунок 6 –Логічна модель бази даних функціонування фільмотеки.
2.4 Розробка алгоритмів і графічних інтерфейсів програми Головна форма «Меню» складається з таких форм :
a) форма «Аренда диска» оформляє оренду диску. Має поля : «Фамилия арендатора», «Имя арендатора», «Дата аренды», «Дата возврата». А також кнопку виходу з форми.
b) форма «Фильм» - адмініструє фільм. Має поля: «Название», «Жанр». А також підпорядковані форми: «Режиссер» та «Актёр». Має кнопки «Новый жанр», «Добавить режиссера», «Добавить актёра»та кнопка виходу з форми, котрі відкривають форми «Жанр», «Режиссер», «Актёр»
відповідно.
c) форма «Диск» - адмініструє диск. Має поле «Название», підпорядковану таблицю «Фильм». Має кнопки виходу з форми та «Новый фильм», що відкриває форму «Фильм».
d) форма «Актёр» - адмініструє нового актора. Має поля: «Фамилия», «Имя» та кнопка виходу з форми.
e) форма «Режиссер» - адмініструє нового режисера. Має поля: «Фамилия», «Имя» та кнопка виходу з форми.
f) форма «Арендатор» - адмініструє нового орендатора. Має поля: «Фамилия», «Имя», «Телефон» та кнопка виходу з форми.
g) форма «Запросы» - включає в себе кнопки «по названию фильма», «по жанру», «по имени актёра», «по фамилии актёра», «по имени режиссера», «по фамилии Режиссера» та кнопку виходу з форми.
2.5 Розробка фізичної моделі Згідно розробленого у проектній частині логічної моделі розробимо фізичну модель. Для цього замінимо абстрактні назви полів на ті, що будуть в базі даних та вкажемо розмірність полів там, де це необхідно. Так як база даних розробляється у
Microsoft Access 2000, імена у фізичній і логічній базах будуть однакові. Фізична модель бази даних представлена на
таблицях 2.
Таблиця 2- Фізична модель таблиць
Имя поля | Тип | Формат поля | Ключ в ЛМ | Ключ в ФМ | Индек-сация | Обяз. поле | Примечание |
Режиссер | | | | | | | |
Код_Режиссера | счетчик | длинное целое | PK | да | | да | |
Фам_Режиссера | текстовый | | | нет | IK | да | |
Имя_Режиссера | текстовый | | | нет | IK | да | |
Фильм | | | | | | | |
Код_ Фильма | счетчик | длинное целое | PK | да | | да | |
Код_Жанра | числовой | длинное целое | FK | да | | да | |
Назв_Фильма | текстовый | | | нет | IK | да | |
Актёр | | | | | | | |
Код_ Актёра | счетчик | длинное целое | PK | да | | да | |
Фам_Актёра | текстовый | | | нет | IK | да | |
Имя_Актёра | текстовый | | | нет | IK | да | |
Диск | | | | | | | |
Код_ Диска | счетчик | длинное целое | PK | да | | да | |
Назв_ Диска | текстовый | | | нет | | да | |
Жанр | | | | | | | |
Код_Жанра | счетчик | длинное целое | PK | да | | да | |
Назв_Жанра | числовой | длинное целое | | нет | | да | |
Арендатор | | | | | | | |
Код_Арендатора | счетчик | длинное целое | PK | да | | да | |
Фам_Арендатора | текстовый | | | нет | IK | да | |
Имя_Арендатора | текстовый | | | нет | IK | да | |
Тел_Арендатора | числовой | целое | | нет | | да | |
Фильмы_Режиссеры | | | | | | | |
Код_Режиссера | числовой | длинное целое | PK, FK1 | да | | да | |
Код_Фильма | числовой | длинное целое | PK, FK2 | да | | да | |
Фильмы _Актёры | | | | | | | |
Код_Актёра | числовой | длинное целое | PK, FK1 | да | | да | |
Код_Фильма | числовой | длинное целое | PK, FK2 | да | | да | |
Диск_Фильм | | | | | | | |
Код_Диска | числовой | длинное целое | PK, FK1 | да | | да | |
Код_Фильма | числовой | длинное целое | PK, FK2 | да | | да | |
Аренда диска | | | | | | | |
Дата_Аренды | дата/время | | PK | да | | да | |
Код_ Диска | числовой | длинное целое | PK, FK1 | да | | да | |
Код_Арендатора | числовой | длинное целое | PK, FK2 | да | | да | |
Дата_Возврата | дата/время | | | нет | | нет | |
Після складення фізичної моделі даних можна зробити такі висновки:
· Відсутні відмінності в схемах між фізичною та логічною моделями
· В
процесі роботи була досягнута третя нормальна форма
· При оцінці якості структури бази даних аномалії не були виявлені.
2 .6 Кодування і тестування Тексти програмного коду наведені у додатку А.
Згідно розробленій в проектній частині логічної моделі була створена і закодована база даних фільмотеки. Інструкція користувача знаходиться у додатку Б.
При тестуванні роботи БД були виконані такі дії:
a) Запущена база даних шляхом відкриття головного вікна «Меню».
b) Адміністровано декілька фільмів, шляхом натиснення кнопки «Регистрация фильма» та заповнення полів «Название», «Жанр» (був вибраний зі списку). Режисер та актори були вибрані зі списку. Всі дані були успішно додані до таблиць.
c) Було введено до бази даних нових акторів та режисерів, шляхом натиснення кнопок «Добавить актёра», «Добавить режиссера» та заповнення полів «Имя» та «Фамилия». Всі дані були успішно додані до таблиць «Актёр» та «Режиссер».
d) Адміністровано декілька дисків, шляхом заповнення поля «Название» та доданням фільмів зі списку.
e) Був виконаний запит по жанру, шляхом натиснення кнопки «Запрос по жанру» з вікна «Выбор запросов». Результатами запиту була виведена таблиця з назвами фільмів на диску заданого жанру. Всі виведені дані
відповідають даним з таблиці.
Під час тестування аномалій виявлено не було.
3 Результат розроблення бази даних фільмотеки У результаті розробки була створена база даних із програмним дотатком для фільмотеки. Інструкція користувача знаходиться у додатку Б.
Вимоги до апаратної частини :
– процесор Pentium 1000 MHz або більше;
– 32 Mb Videocard або більше.
Вимоги до програмної сумісності :
– 100 Mb вільного місця.
–
Windows XP, 2000;
– Offise 2000, 2003 ;
– 64 Mb ОЗП.
Додаток А
Схема БД
Програмний код :
Form_Диск Option Compare Database
Private Sub Form_Load()
End Sub
Private Sub New_film_Click()
On Error GoTo Err_New_film_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1060) & ChrW(1080) & ChrW(1083) & ChrW(1100) & ChrW(1084)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_New_film_Click:
Exit Sub
Err_New_film_Click:
MsgBox Err.Description
Resume Exit_New_film_Click
End Sub
Private Sub Диск_Фильм_Enter()
End Sub
Private Sub Кнопка16_Click()
On Error GoTo Err_Кнопка16_Click
DoCmd.Close
Exit_Кнопка16_Click:
Exit Sub
Err_Кнопка16_Click:
MsgBox Err.Description
Resume Exit_Êíîïêà16_Click
End Sub
Private Sub Код_Диска_BeforeUpdate(Cancel As Integer)
End Sub
Form_Фильм Option Compare Database
Private Sub Form_Load()
End Sub
Private Sub New_Producer_Click()
On Error GoTo Err_New_Producer_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1056) & ChrW(1077) & ChrW(1078) & ChrW(1080) & ChrW(1089) & ChrW(1089) & ChrW(1077) & ChrW(1088)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_New_Producer_Click:
Exit Sub
Err_New_Producer_Click:
MsgBox Err.Description
Resume Exit_New_Producer_Click
End Sub
Private Sub New_Actor_Click()
On Error GoTo Err_New_Actor_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1040) & ChrW(1082) & ChrW(1090) & ChrW(1105) & ChrW(1088)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_New_Actor_Click:
Exit Sub
Err_New_Actor_Click:
MsgBox Err.Description
Resume Exit_New_Actor_Click
End Sub
Private Sub Êíîïêà23_Click()
On Error GoTo Err_Êíîïêà23_Click
DoCmd.Close
Exit_Êíîïêà23_Click:
Exit Sub
Err_Êíîïêà23_Click:
MsgBox Err.Description
Resume Exit_Êíîïêà23_Click
End Sub
Private Sub Êíîïêà25_Click()
On Error GoTo Err_Êíîïêà25_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1046) & ChrW(1072) & ChrW(1085) & ChrW(1088)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Êíîïêà25_Click:
Exit Sub
Err_Êíîïêà25_Click:
MsgBox Err.Description
Resume Exit_Êíîïêà25_Click
End Sub
Private Sub Назв_Фильма_Exit(Cancel As Integer)
If IsNull(Назв_Фильма) Then MsgBox ("Незаполненое поле")
End Sub
Код запитів : Актёр имя Запрос SELECT Актёр.Фам_Актёра,
Актёр.Имя_Актёра, Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра) INNER JOIN (Актёр INNER JOIN [Фильмы _Актёры] ON Актёр.[Код_ Актёра] = [Фильмы _Актёры].Код_Актёра) ON Фильм.[Код_ Фильма] = [Фильмы _Актёры].Код_Фильма
WHERE (((Актёр.Имя_Актёра)=[Имя актёра]));
Актёр фам Запрос SELECT Актёр.Фам_Актёра, Актёр.Имя_Актёра, Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра) INNER JOIN (Актёр INNER JOIN [Фильмы _Актёры] ON Актёр.[Код_ Актёра] = [Фильмы _Актёры].Код_Актёра) ON Фильм.[Код_ Фильма] = [Фильмы _Актёры].Код_Фильма
WHERE (((Актёр.Фам_Актёра)=[Фамилия актёра]));
Запрос по жанру SELECT Фильм.Назв_Фильма, Жанр.Назв_Жанра, Диск.[Назв_ Диска]
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра=Фильм.Код_Жанра) INNER JOIN (Диск INNER JOIN Диск_Фильм ON Диск.[Код_ Диска]=Диск_Фильм.Код_Диска) ON Фильм.[Код_ Фильма]=Диск_Фильм.Код_Фильма
WHERE (((Жанр.Назв_Жанра)=[Название жанра]));
Режиссер имя Запрос SELECT Режиссер.Фам_Режиссера, Режиссер.Имя_Режиссера, Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра) INNER JOIN (Режиссер INNER JOIN Фильмы_Режиссеры ON Режиссер.Код_Режиссера = Фильмы_Режиссеры.Код_Режиссера) ON Фильм.[Код_ Фильма] = Фильмы_Режиссеры.Код_Фильма
WHERE (((Режиссер.Имя_Режиссера)=[Имя режиссера]));
Режиссер фам Запрос SELECT Режиссер.Фам_Режиссера, Режиссер.Имя_Режиссера, Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра) INNER JOIN (Режиссер INNER JOIN Фильмы_Режиссеры ON Режиссер.Код_Режиссера = Фильмы_Режиссеры.Код_Режиссера) ON Фильм.[Код_ Фильма] = Фильмы_Режиссеры.Код_Фильма
WHERE (((Режиссер.Фам_Режиссера)=[Фамилия режиссера]));
Фильм Запрос SELECT Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра
WHERE (((Фильм.Назв_Фильма)=[Название фильма]));
Додаток В
Інструкція користувача. При запуску даного програмного продукту автоматично з’являється «Меню» (рисунок 1).
Рисунок 1 – вікно «Меню»
Кнопка «Регистрация диска» дозволяє адмініструвати диск (рис 2), шляхом заповненя поля «Название» та вибору фільму чи фільмів на диск зі списку, якщо в списку не має необхідного фільму, його можна добавити до списку шляхом натиснення кнопки «Новый фильм» - відкриється вікно «Фильм» (рис 3). Заповнюємо поля «Название», «Жанр» вибираємо зі списку чи додаємо новий жанр за допомогою натиснення кнопки «Новый жанр». Вибираємо режисерів та акторів зі списку, якщо потрібного режисера чи актора не було в списку, додаємо його за допомогою натиснення кнопок «Добавить режиссера» (рис 5), «Добавить актёра» (рис 4) відповідно.
За допомогою натискання кнопок «Запросы», «Простмотр отчёта», «Регистрация арендатора» и «Оформить аренду» здійснити пошук за заданими параметрами (рис 6), адмініструвати нового орендатора (рис 7), отримати звіт про ті диски, котрі має або мав орендатор (рис 8), та оформити оренду диску або дисків орендатором (рис 9).