База даних фільмотеки розробка проекту

Анотація

Даний курсовий проект присвячений розробці бази даних фільмотеки. Розглянуті оптимальні шляхи її функціонування, з допомогою розробленої бази даних.

Робота виконана на українській мові на 22 листах, містить 6 рисунків, 2 таблиці та 2 додатка.


ЗМІСТ




Вступ

На сьогоднішній день добре розвинута кіноіндустрія і якщо порівняти з минулими роками то отримати будь-який фільм чи мультфільм, котрий сподобався не становить проблеми. І тому в домашній бібліотеці може заходитися велика кількість дисків з фільмами, мультфільмами.

Тому потрібно вести облік фільмів та іншу додаткову про них інформацію. У силу великої кількості фільмів якщо вести цей облік у паперовому виді, то ця робота зводиться у досить рутинну і трудомістку процедуру. Таким чином з’являється необхідність якимось чином автоматизувати цей процес. Метою цієї курсової роботи є полегшення введення обліку інформації про фільм для домашнього користування. Шляхом розробки буде створена база даних і програмний додаток, що автоматизую процес пошуку за введеними параметрами, допоможе полегшити введення, корекцію і видалення інформації про фільми (диски), і допоможе створювати звіти.


Для реалізації поставленої задачі буде використана СКБД Microsoft Access 2000.


  1. Обстеження і аналіз фільмотеки. Постановка задачі

    1. 1.1 Обстеження функціонування фільмотеки


У багатьох з нас є своя бібліотека фільмів, я кою можуть користуватися як ми так і наші знайомі. Фільми можуть складатися з декількох частин, зберігатися як на одному так і на декількох дисках чи навіть на одному диску може зберігатися декілька фільмів. Тип носія – CD.

Інформація про фільми міститься на вкладишу до диску, де зазначено

  1. Назва фільму.

  2. Імя (імена) режисера (ів).

  3. Прізвище (прізвища) режисера (ів).

  4. Ім’я (імена) актора (ів).

  5. Прізвище (прізвища) актора (ів).

  6. Жанр .


Інформація про диск:

  1. Назва диску.

  2. Зміст диску.


Вашому знайомому (орендатор) потрібен фільм заданим вище атрибутом. Якщо фільм чи фільми знайдені, спочатку надається йому інформація про наявність, а потім орендатор, виходячи з наданої інформації орендує або не орендує диск/диски.


Інформація про орендатора:

  1. Прізвище.

  2. Імя.

  3. Телефон.

Якщо диск орендовано, тоді записується дата оренди в блокнот чи в електронний редактор.

Інформація про оренду:

  1. Дата аренди.

  2. Назва диску.

Коли диск повертає орендатор, записується дата повернення в блокнот чи в електронний редактор.

Господаря може цікавити: які фільми орендатор має та мав в користуванні.

Отже, з вище сказаного випливають такі проблеми:

  1. Незручність ведення записів о фільмах.

  2. Знайти потрібний фільм займає багато часу.


    1. 1.2 Аналіз фільмотеки

На підставі обстеження функціонування фільмотеки проведемо аналіз за методологією нотації Йордана у вигляді ієрархій діаграм. Представимо всю інформацію у графічному виді за допомогою діаграм DFD. Спочатку розробимо діаграму 0 рівня (рис. 1). Тут представлено взаємодію зовнішніх сутностей для вирішення поставленої задачі..

0

Оренда диску


Орендатор

Власник


Інформація від орендатора Інформація про фільм від власника

Інформація про диск

Запит за атрибутом


Інформація про фільм оренда дисків


Звіт про орендовані диски

Рисунок 1 – DFD нульового рівня функціонування фільмотеки.


Деталізуємо основні процеси DFD 0 рівня, що представлені на рисунку 2. На DFD першого рівня з‘являться наступні процеси:

Адміністрування диску

Адміністрування фільму

Реєстрування орендатора

Реєстрування оренди

Формування запиту

Формування звіту






Адміністру-

вання диску


Адміністру-

вання

фільму


Реєстру-

вання орендатора


Реєстру-

вання

оренди


Формування запиту


Формування звіту


Зміст диску

Запит за атрибутом

Відповідь на запит

Інформація про оренду диска

Інформація про повернення

Інформація про орендатора

Звіт про оренд. диски

Звіт

Назва

Жанр

Інформація про акторів

Інформація про режисерів

Інформація про орендатора

Каталог


Рисунок 2 – DFD першого рівня функціонування фільмотеки.


Далі розробимо таблицю відповідності потоків даних з 0 по 1 рівні (дивись таблицю 1).

0-й рівень

1-й рівень

Атрибути

Запит за атрибутом

Запит за атрибутом

Назва

Жанр

Імена акторів

Імена режисерів

Фамілії акторів

Фамілії режисерів

Інформація від орендатора

Інформація про орендатора

Фамілія

Імя

Телефон


Інформація про фільм

Назва

Назва

Жанр

Жанр

Інформація про акторів

Імена акторів

Фамілії акторів

Інформація про режисерів

Імена режисерів

Фамілії режисерів


Інформація про фільм від власника

Назва

Назва

Жанр

Жанр

Інформація про акторів

Імена акторів

Фамілії акторів

Інформація про режисерів

Імена режисерів

Фамілії режисерів

Інформація про диск

Назва диску

Назва диску

Зміст диску

Зміст диску

Звіт про орендовані диски

Звіт про орендовані диски

Назва фільму

Фамілія орендатора

Імя орендатора

Телефон орендатора

Дата оренди

Оренда дисків

Інформація про оренду диска

Дата оренди

Інформація про повернення

Дата повернення

Інформація про орендатора

Фамілія

Імя

Телефон

Таблиця 1 – Атрибути потоків 0 - 1 рівнів

    1. 1.3 Постановка задачі

Ціллю даної роботи є ефективне зберігання інформації о фільмах та дисках. Для цього буде розроблена база даних і програмне забезпечення, яке повинне забезпечити наявність сильної пошукової системи, за допомогою якої у короткі строки можна найти потрібну нам інформацію.

Ця база даних і програмне забезпечення повинні забезпечити користувача такими можливостями : ·

  • пошук фільму по введених параметрах :

  • по назві фільму

  • по прізвищу актора

  • по імені актора

  • по прізвищу режисера

  • по імені режисера

  • по жанру ; ·

  • формувати звіт про видані диски (кому виданий диск, коли виданий диск);

  • формувати звіт по статистиці оренди;

реєструвати клієнта;

реєструвати диск;

реєструвати оренду диска.

Для реалізації поставленої задачі необхідно використати СКБД Microsoft Access 2000.

Вимоги до апаратної частини :

процесор Pentium 1000 MHz або більше;

32 Mb Videocard або більше.

Вимоги до програмної сумісності :

100 Mb вільного місця.

Windows XP, 2000;

Offise 2003 ;

64 Mb ОЗП.

Вимоги до програмної документації :

інструкція користувача.




  1. Розроблення проекту бази даних фільмотеки

    1. 2.1 Розробка концептуальної моделі

Враховуючи аналіз функціонування фільмотеки будуємо діаграму потоків даних ERD (дивись рисунок 5).

орендатор

фамілія

код

телефон

імя

орендує

Дата оренди

Дата повернення

диск

назва

код

код

код

має

фільм

жанр

актор

режисер

фамілія

фамілія

імя

код

імя

код

назва

назва

має

має

має

зміст


Рисунок 5 - ERD функціонування фільмотеки


2.2 Розроблення специфікації програмних модулів

Після аналізу і з’ясування всіх процесів і функцій, можна визначити програмний склад.

Форма «Меню» відкривається при першому запуску бази даних і є основою, з неї можна викликати будь-яку підлеглу форму за допомогою спеціальних клавіш. З цієї форми ми можемо перейти на форми «Диск», «Фильм», «Актёр» і «Режиссер», «Запросы», «Арендатор », «Аренда диска ».

У формі «Диск» ми можемо ввести: назву фільму(ів), назву диску, автоматично згенерується код диска.

У формі «Фильм» ми можемо ввести: назву фільму, назву жанру, прізвища та ім’я акторів, прізвища та ім’я режисерів та автоматично згенерується код фільму.

У формі «Актёр» ми можемо ввести прізвище та ім’я актора(ів), автоматично згенерується код актора.

У формі «Режиссер» ми можемо ввести прізвище та ім’я режисера(ів), автоматично згенерується код режисера.

Форма «Запросы» має можливість оброблювати такі запити:

  • запит про пошук фільму по його назві

  • запит про пошук фільму по прізвищу актора

  • запит про пошук фільму по імені актора

  • запит про пошук фільму по прізвищу режисера

  • запит про пошук фільму по імені режисера

  • запит про пошук фільму по жанру.

Відповідно, на ці запити у відповідь ми отримуємо звіти по питанню, що зацікавило.

У формі «Арендатор» вхідними даними буде прізвище і ім’я орендатора та телефон, автоматично згенерується код орендатора.

У формі «Аренда диска» вхідними даними буде прізвище і ім’я орендатора, назва диску та ми можемо ввести дату оренди та дату повернення.


2.3 Розроблення логічної моделі бази даних фільмотеки

Перейдемо до розробки логічної моделі бази даних, враховуючи представлену вище ERD. Кожній з сутностей на ERD відповідатиме таблиця бази даних. Структура цих таблиць з в казанням зв‘язку між ними представлена на рисунку 6.

Режиссер

Код_Режиссера N PK

Фам_Режиссера S

Имя_Режиссера S


Актёр

Код_ Актёра N PK

Фам_Актёра S

Имя_Актёра S


Жанр

Код_Жанра N PK

Назв_Жанра S

Код_Фильма O FK1


Фильм

Код_ Фильма 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 Розробка алгоритмів і графічних інтерфейсів програми

Головна форма «Меню» складається з таких форм :

    1. форма «Аренда диска» оформляє оренду диску. Має поля : «Фамилия арендатора», «Имя арендатора», «Дата аренды», «Дата возврата». А також кнопку виходу з форми.

    2. форма «Фильм» - адмініструє фільм. Має поля: «Название», «Жанр». А також підпорядковані форми: «Режиссер» та «Актёр». Має кнопки «Новый жанр», «Добавить режиссера», «Добавить актёра»та кнопка виходу з форми, котрі відкривають форми «Жанр», «Режиссер», «Актёр» відповідно.

    3. форма «Диск» - адмініструє диск. Має поле «Название», підпорядковану таблицю «Фильм». Має кнопки виходу з форми та «Новый фильм», що відкриває форму «Фильм».

    4. форма «Актёр» - адмініструє нового актора. Має поля: «Фамилия», «Имя» та кнопка виходу з форми.

    5. форма «Режиссер» - адмініструє нового режисера. Має поля: «Фамилия», «Имя» та кнопка виходу з форми.

    6. форма «Арендатор» - адмініструє нового орендатора. Має поля: «Фамилия», «Имя», «Телефон» та кнопка виходу з форми.

    7. форма «Запросы» - включає в себе кнопки «по названию фильма», «по жанру», «по имени актёра», «по фамилии актёра», «по имени режиссера», «по фамилии Режиссера» та кнопку виходу з форми.


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 Кодування і тестування

Тексти програмного коду наведені у додатку А.

Згідно розробленій в проектній частині логічної моделі була створена і закодована база даних фільмотеки. Інструкція користувача знаходиться у додатку Б.

При тестуванні роботи БД були виконані такі дії:

  1. Запущена база даних шляхом відкриття головного вікна «Меню».

  2. Адміністровано декілька фільмів, шляхом натиснення кнопки «Регистрация фильма» та заповнення полів «Название», «Жанр» (був вибраний зі списку). Режисер та актори були вибрані зі списку. Всі дані були успішно додані до таблиць.

  3. Було введено до бази даних нових акторів та режисерів, шляхом натиснення кнопок «Добавить актёра», «Добавить режиссера» та заповнення полів «Имя» та «Фамилия». Всі дані були успішно додані до таблиць «Актёр» та «Режиссер».

  4. Адміністровано декілька дисків, шляхом заповнення поля «Название» та доданням фільмів зі списку.

  5. Був виконаний запит по жанру, шляхом натиснення кнопки «Запрос по жанру» з вікна «Выбор запросов». Результатами запиту була виведена таблиця з назвами фільмів на диску заданого жанру. Всі виведені дані відповідають даним з таблиці.

Під час тестування аномалій виявлено не було.

  1. Результат розроблення бази даних фільмотеки

У результаті розробки була створена база даних із програмним дотатком для фільмотеки. Інструкція користувача знаходиться у додатку Б.

Вимоги до апаратної частини :

процесор Pentium 1000 MHz або більше;

32 Mb Videocard або більше.

Вимоги до програмної сумісності :

100 Mb вільного місця.

Windows XP, 2000;

Offise 2000, 2003 ;

64 Mb ОЗП.


Висновки

Створена база даних максимально полегшує роботу ведення записів про фільми та диски, за рахунок використання зручних екранних форм і можливості швидкого пошуку в базі даних тієї чи іншої інформації, наприклад, пошук потрібного фільму за назвою, за прізвищем акторів, що у ньому грають або за прізвищем режисерів . Для реалізації даної програми була використана СКБД Microsoft Access 2000.

Впровадження розробленої системи дозволить підвищити кількість орендаторів, а також надає механізм для реагування на зміни, що відбуваються.

У ході розробки роботи ми вирішили наступні задачі:

- аналіз предметної області

- розроблення концептуальної, логічної і фізичної моделі

- виконання запитів, форми, звіти та інше.


Список використаних джерел

1. Базы данных: учебный курс.– М.: ООО «Издательство АСТ», 2001.–504 с.

2. Конспект лекцій.

3. MICROSOFT ACCESS 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)

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).




































6.080401 3141 05.КР

Лист







7

Изм

Лист

докум

Подпись

Дата



Нравится материал? Поддержи автора!

Ещё документы из категории информатика:

X Код для использования на сайте:
Ширина блока px

Скопируйте этот код и вставьте себе на сайт

X

Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.

После чего кнопка «СКАЧАТЬ» станет доступной!

Кнопочки находятся чуть ниже. Спасибо!

Кнопки:

Скачать документ