Рисунок 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 MbVideocardабо більше.
Вимоги до програмної сумісності :
– 100 Mb вільного місця.
– WindowsXP, 2000;
– Offise 2000, 2003 ;
– 64 Mb ОЗП.
Створена база даних максимально полегшує роботу ведення записів про фільми та диски, за рахунок використання зручних екранних форм і можливості швидкого пошуку в базі даних тієї чи іншої інформації, наприклад, пошук потрібного фільму за назвою, за прізвищем акторів, що у ньому грають або за прізвищем режисерів . Для реалізації даної програми була використана СКБД Microsoft Access 2000.
Впровадження розробленої системи дозволить підвищити кількість орендаторів, а також надає механізм для реагування на зміни, що відбуваються.
У ході розробки роботи ми вирішили наступні задачі:
- аналіз предметної області
- розроблення концептуальної, логічної і фізичної моделі
- виконання запитів, форми, звіти та інше.
1. Базы данных: учебный курс.– М.: ООО «Издательство АСТ», 2001.–504 с.
2. Конспект лекцій.
3. MICROSOFTACCESS 2000 учебный курс.– C.-П.: «ПИТЕР», 2002.–512 с.
Схема БД
Програмний код :
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)
IfIsNull(Назв_Фильма) ThenMsgBox ("Незаполненое поле")
End Sub
Код запитів :
Актёр имя Запрос
SELECT Актёр.Фам_Актёра, Актёр.Имя_Актёра, Фильм.Назв_Фильма, Жанр.Назв_Жанра
FROM (Жанр INNER JOIN Фильм ON Жанр.Код_Жанра = Фильм.Код_Жанра) INNER JOIN (Актёр INNER JOIN [Фильмы _Актёры] ON Актёр.[Код_ Актёра] = [Фильмы _Актёры].Код_Актёра) ON Фильм.[Код_ Фильма] = [Фильмы _Актёры].Код_Фильма
WHERE (((Актёр.Имя_Актёра)=[Имя актёра]));
Актёр фам Запрос
SELECT Актёр.Фам_Актёра, Актёр.Имя_Актёра, Фильм.Назв_Фильма, Жанр.Назв_Жанра