Анотація
У даній курсовій роботірозроблена база даних, яка призначена для автоматизації процесу облікупрограмного забезпечення.
Робота виконана на 32 сторінках друкованоготексту, містить 12 рисунків, 4 таблиці. Робота має доданок.
Робота виконанаукраїнською мовою.
Аннотация
В данной курсовой работеразработана база данных, которая предназначена для автоматизации процесса ведение учета програмного обеспечения.
Работа выполнена на 32 страницах печатноготекста, содержит 12 рисунков, 4 таблиц. Работа имеет приложение.
Работа выполнена на украинском языке.
Зміст
Вступ
1 Обстеження і аналіз репозиторія програмного забезпечення. Постановказадачі
1.1 Обстеження предметної області
1.2 Аналіз репозиторія ПЗ. Розробка функціональної моделі базиданих „Репозиторій ПЗ” (DF-Діаграма)
1.3 Постановка задачі
2. Розробка проекту Бази Даних „Репозиторій ПЗ”
2.1 Розробка концептуальної моделі бази даних „ Репозиторій ПЗ”
2.2 Розробка специфікації програмних модулів
2.3 Розробка логічної моделі бази даних «Репозиторій ПЗ»
2.4 Розробка алгоритмів і графічних інтерфейсів програмних модулів
2.5 Розробка фізичної моделі бази даних «Репозиторій ПЗ»
2.6 Кодування і тестування програмного забезпечення
Висновки
Список використаних джерел
Додаток А – Текст програми
Додаток Б – Інструкція для користувача
Вступ
В даній роботірозглядається функціонування репозиторія програмного забезпечення. А саме,розглядається спосіб зберігання і обробки інформації, пов'язаної з збереженнямвідтворенням програмного забезпечення.
Метою роботи є створення ефективної системиобліку програмного забезпечення, шляхом розробки програмного засобу, якийдозволяв би швидко і ефективно фіксувати та надавати дані про програмнезабезпечення.
Проблемою предметної області є відсутність цілісності.Інформація зберігається в великій кількості директорій, що сприяє їїпошкодженню. База даних гарантує захист та однозначність інформації.
Тому найкращою альтернативою дляреалізації репозиторія являється створення программного засобу, який дозволивби швидко і ефективно отримувати ПЗ декільком користувачам одночасно, а такожзабезпечив однозначність зберігаємих даних. Таким програмним засоб є база даних.
Ціль даної работи – створення ефективного репозиторіяПЗ шляхом розробки бази даних і программного забезпечення, котре повинне матислідуючі можливості:
а) вводити, видаляти, редагувати информацію про новіпроекти
б) вводити, видаляти, редагувати информацію продистрибутиви
в) створювати звіти про наявні пакети та дистрибутиви
г) надавати вихідні файли окремих пакетівта дистрибутивів
Для досягнення даної цілі використаносервер баз даних MySQL та клієнтський інтерфейс до нього, реалізований на php.
1 Обстеження і аналіз репозиторія. Постановка задачі
1.1 Обстеженнярепозиторія
В даній роботі розглянуто функціонування репозиторіяпрограммного забезпечення. Репозиторій – місце де зберігаються і підтримуютьсябудь-які дані. Найчастіше данні в репозиторії зберігаються в вигляді файлів,доступних для поширення через мережу.
Прикладом репозиторію може бути репозиторій вільногопрограммного забезпечення SisyphusALT Linux.
Репозиторій повинен задовольняти основну вимогу: встабільну версію проекта не повинні потрапити дестабілізуючі зміни.
Проект – сукупність вихідних файлів розприділених попідкаталогам проекта.
Розглянемо структуру репозиторія.
/
/trunk
/tags/
/0.0.1
/0.0.2
...
/branches/
/0.0.1
/0.0.2
...
Директорія /trunk — основна гілка розробки проекта. Внеї вносяться всі зміни та виправлення помилок.
Директорія /tags містить релізи проекта. Саме зпіддерикторій дерикторії /tags
вихідний код виставляється на робочі сервери.
Директорія /branches необхідна для внесення великихзмін в код проекта. В зберігаються гілки розробки. Якщо розробник створює нову функцію, то він повиненстворити проект доповненя і синхронізувати його з основною версію ПЗ. Післязакінчення розробки функції доповнення зливається з основним проектом.
Розглянемо події, які можуть відбутися в репозиторії:
a) Надходять нові пакети
Пакети реєструються в trunk. Реєстрація проводиться шляхом занесення врепозиторій таких даних: назва проекта, розробники, ліцензія, підпроекти,залежності проекта, версія, вихідні файли проекта.
б) Надходять зміни до проекта
Після того, як проект був зареєстрований, в директорію/branches надходять зміни та виправлення до проекта. Заносяться такі дані:назва проекта, розробники, ліцензія, підпроекти, залежності проекта, версіязмін, вихідні файли проекта. Зміни мають відрізнятися номером версії відосновного проекта та інших змін.
в) Користувач створює запит наотримання программного забезпечення
Користувач створює запит який складається з назви таверсії проекта. Користувач отримує список залежностей відповідного проекта.Відповідні вихідні файли або їх ftp aдресу.
г) Реєстрація розробника
Розробник надає дані про себе. Отримує логін тапароль, який дозволяє створювати власні проекти та надсилати зміни до інших.
д) Надавати звіт
Здійснюється пошук ПЗ за датою створення, тематикою.
е) Надавати дистрибутив користувачу
Користувач створює запит на отримання дистрибутиву, ане окремого пакету. Отримує ftp-адресу архіва дистрибутиву.
Основна функція репозиторія – збереження тарозповсюдження однозначного дистрибутива ПЗ.
Проблемою предметної області є відсутність цілісності.Інформація зберігається в великій кількості директорій, що сприяє їїпошкодженню. База даних гарантує захист та однозначність інформації.
Тому найкращою альтернативою дляреалізації репозиторія являється створення программного засобу, який дозволивби швидко і ефективно отримувати ПЗ декільком користувачам одночасно, а такожзабезпечив однозначність зберігаємих даних. Таким програмним засоб є база даних.
1.2Аналіз процесуфункціонування репозиторія . Розробка функціональної моделі Бази даних„Репозиторій програмного забезпечення”
Для побудови функціональної моделівикористовуємо нотація Йордана:
— вся інформація по предметнійобласті представляється в вигляді ієрарархії діаграм.
— на нульовій діаграміпредставляється головна функція предметної області і зовнішні сущності.
— інформаційні потоки зображуються ввигляді стрілок, вздовж яких пишеться ім*я потока .
— всі рівні діаграм супроводжуютьсятаблицями потоків даних.
— остання таблиця є те що требазберігати в базі даних.
Використовуючи дану методологіювизначаємо основну функцію репозиторія, а також зовнішні сутності та потокиданих на основі дослідження предметної області (Рисунок 1).
/>
Визначаємо функції на діаграміпотоків даних 1 рівня (Рисунок 2).
/>/> />
Інформацію про потоки даних заносимов таблицю 1.
Таблица 1 – потоки даних і їхатрибутиПотоки даних 0 рівня Потоки даних 1 рівня Атрибути Інформація від користувача Запит ПЗ Назва ПЗ, версія Запит дистрибутива Назва дистрибутиву, версія Параметри виборки Дата створення проекта, версія сумісного дистрибутива, назва Інформація для користувача Інформація про програмне забезпечення Назва, версія, розробник, ліцензія, ftp-адреса вихідних файлів ПЗ, версія сумісного дистрибутиву. Інформація про дистрибутив ftp-адреса архіву вихідних файлів дистрибутиву Список проектів Список назв та версій потрібних проектів Інформація від розробника Розробник Імя розробника, адреса електронної пошти Ідентифікаційний код Унікальний логін та пароль розробника, дає право на зміну проектів Інформація про проект Назва, версія, тема, ftp-адреса архіву вихідних файлів Інформація для розробника Ідентифікаційний код Унікальний код розробника( дає право на зміну проектів) Звіт ftp-адреса вихідних файлів ПЗ, статус проекта( прийнято/не прийнято)
1.3 Постановка задачі
Мета даноїкурсової роботи — збільшення ефективності роботи репозиторія шляхом розробкибази даних і програмного забезпечення, для якого висуватимуться наступнівимоги:
1) Наявність простогоменю програми, зручного для користувача.
2) Реалізація можливості пошукупрограмного забезпечення:
· за автором
· назвою
· датою створення
3) Можливість реєстраціїдистрибутива, а саме фіксування таких даних, як:
· назвадистрибутива
· версія
· ftp-адресавихідних файлів
4) Можливість реєстраціїпрограмного забезпечення, а саме занесення до бази даних такої інформації:
· назва програмногозабезпечення
· версія
· дата створення
· дистрибутив
· автор
· ліцензія
· ftp-адресавихідних файлів
5) Можливість реєстраціїавтора, а саме занесення до бази даних такої інформації:
· ім”я
· по-батькові
· прізвище
· email-адреса
6) Можливістьредагування інформації про вже зареєстроване програмне забезпечення;
7) Можливість звіт по базі даних в цілому.
8) Мати інструкцію длякористувача.
База даних, якавідповідатиме всім перерахованим вимогам значно спростить та пришвидшить задачунадання програмного забезпечення, оскільки людині потрібно буде головним чиномлише вводити свої запити з клавіатури (або використовуючи мишу), програмаавтоматично оброблятиме їх і видаватиме всю необхідну інформацію.
2 Розробка проекту БазиДаних „Репозиторій програмного забезпечення”
2.1 Розробкаконцептуальної моделі Бази Даних „ Репозиторій програмного забезпечення” (ER-Діаграма).
Виходячи з наведеноїфункціональної моделі бази даних репозиторія програмного забезпечення,розробимо концептуальну модель, представлену ER-діаграмою (Рисунок 3).
/>
2.2 Розробка специфікаціїпрограмних модулів
Програмні модулі будутьрозроблені в середовищі MySQL та наведені у додатках (Див. Додаток 1) у виглядіSQL-кодів, а також конструкторів форм, запитів, звітів, таблиць реалізованих, увигляді html-сторінок, мовою php .
Специфікація програмнихмодулів має наступну структуру (Таблиця 2):
Таблиця 2 – Специфікаціяпрограмних модулівРівень модуля Назва модуля Опис модуля Головна форма Меню програми, пункти якого є окремими кнопками та показують основні можливості програми. Вхідними даними є операція, яку необхідно здійснити. 1 Додати/видалити дистрибутив Дає можливість зареєструвати новий дистрибутив/видалити існуючий, шляхом введення даних. Вхідні дані: назва дистрибутива, версія, ftp-адреса вихідних файлів 1 Додати/видалити автора Дає можливість зареєструвати/видалити автора шляхом введення наступних даних: ім”я автора, по-батькові, прізвище, email-адреса автора 1 Додати/видалити ПЗ Дає можливість зареєструвати/видалити програмне забезпечення шляхом введення наступних даних: назва, версія, дата створення, дистрибутив, автор, ліцензія,ftp-адреса вихідних файлів 1 Пошук ПЗ за датою Виводить усе програмне забезпечення створене в період між початковою і кінцевою датою. Вхідні дані: початкова і кінцева дати. Вихідні дані: назва ПЗ, версія, дата, ліцензія, ftp-адреса, автор, дистрибутив 1 Пошук ПЗ за автором Виводить усе програмне забезпечення створене заданим автором. Вхідні дані: імя та прізвише автора. Вихідні дані: назва ПЗ, версія, дата, ліцензія, ftp-адреса, автор, email-адреса автора 1 Пошук ПЗ за назвою Виводить усе програмне забезпечення з заданою назвою. Вхідні дані: назва ПЗ. Вихідні дані: назва ПЗ, версія, дата, ліцензія, ftp-адреса, автор, дистрибутив, ftp-адреса дистрибутива 1 Пошук автора Виводить усе програмне забезпечення створене заданим автором. Вхідні дані: прізвише автора. Вихідні дані: ім”я автора, по-батькові, прізвище, email-адреса автора
2.3 Розробка логічноїмоделі бази даних “Репозиторый ПЗ”
На основі концептуальноїмоделі розробимо логічну модель даних.
В окремі таблицівіднесемо такі сутності як Автор, Дистрибутив, ПЗ. (Модель даних подана нарисунку 6.) У кожній таблиці слід вписати атрибути, які будуть характерні дляданої сутності. Кожен атрибут має свій тип, який визначається типом даних,який зберігатиметься у базі даних.Також вкажемо, яким ключем є кожен атрибут.Атрибути, які організують зв”язок між таблицями, є зовнішніми ключами (FK).Кожна сутність повинна мати ключ, який використовується для пошуку – PK –первинний ключ, якщо атрибут є альтернативою для пошуку, то він єальтернативним ключом (AK). Якщо за даним атрибутом можна впорядкуватиінформацію, то цей атрибут є індексним ключом.
ПЗ
Назва ПЗ S PK IK1
Версія ПЗ S PK IK1
№розробника N IK FK
№дистрибутива N IK FK
Дата випуску D Null
Ліцензія S
ftp-адреса вихідних
файлів ПЗ S AK Розробник
Ф S AK IK1
И S AK IK1
О S AK IK1
Адреса S Null
№розробника N IK PK
ПЗ/> />
Дистрибутив
Назва S AK IK1
Версія S AK IK1
ftp-адреса вихідних файлів S
№дистрибутива N IK PK /> /> />
/> />
Рисунок 4 – Логічнамодель бази даних«Репозиторій ПЗ».
2.4 Розробка алгоритмів іграфічних інтерфейсів програмних модулів
Алгоритм програми являєсобою блок вибору дії та виклик відповідної підпрограми. Нижче наведено блок-схемуалгоритма програми.
/>
Рисунок 5 – Блок-схемаосновного алгоритма програми ( головна форма)
/>
Рисунок 6 – Алгоритм підпрограмиДодати/видалити дистрибутив
/>
Рисунок 7 – Алгоритм підпрограмиДодати/видалити автора
/>
Рисунок 8 – Алгоритм підпрограмиДодати/видалити ПЗ
/>/>
Рисунок 9 – Алгоритм підпрограми Пошук ПЗз а датою
/>
Рисунок 10 – Алгоритм підпрограми Пошук ПЗза назвою
/>/>
Рисунок 11 – Алгоритм підпрограми Пошук ПЗза автором
Програма складається здвох частин:
бази даних, яку обслуговуєсервер MySQL;
клієнтської частини, яканадає графічний інтерфейс, реалізованої в вигляді html форм, щообробляються php.
Клієнту надаютьсяпривілегії на пошук та модифікацію даних але не схем бази даних.
Кожному запиту відповідаєокрема форма, яка складається з таблиць, полів введення та кнопок. Післянатискання кнопки дані з полів ведення передаються php-обробнику. Який, в своючергу, реалізує запит до бази даних та виводить результати.
Після відкриття маєз’являтися меню. За допомогою нього можна буде обрати необхідну операцію, асаме, Додати/видалити дистрибутив, Додати/видалити автора, Додати/видалити ПЗ,Пошук ПЗ за датою, Пошук ПЗ за автором, Пошук ПЗ за назвою, Пошук автора, Звіт.Вище перелічені операції можна обрати за допомогою натискання відповіднихкнопок в меню.
Якщо натиснути кнопку “Додати/видалити дистрибутив”, відкриється форма, в якій необхідно буде заповнити наступні поля: Назва, Версія, ftp-адреса. Можна переглянути наявнідистрибутиви та видалити необхідні, вибравши їх та натиснувши кнопку “Видалитидистрибутив”. З кожної підпорядкованої форми перехід до головного менюздійснюється натисканням на посилання “Повернутися на головнусторінку”Аналогічно можна додавати інформацію про нового автора, натиснувшикнопку “Додати/видалити автора” в головному меню. З’явиться форма реєстраціїнового автора, до якої треба буде занести ім”я, по-батькові, та прізвишеавтора, його email-адресу. Також можна переглянути наявних авторів та видалитинеобхідні, вибравши їх та натиснувши кнопку “Видалити автора”. Для реєстраціїпрограмного забезпечення потрібно буде натиснути на кнопку «Додати/видалити ПЗ»в головному меню, відкриється форма «Додати/видалити ПЗ», до якої необхіднобуде занести назву, версію, дату створення, ліцензію та ftp-адресу вихіднихфайлів програми. Також потрібно обрати автора та дистрибутив із вже наявних убазі даних. Також можна переглянути наявне програмне забезпечення та видалитинеобхідне, вибравши його та натиснувши кнопку “Видалити ПЗ”.
Ряд форм, які реалізуютьпошук даних побудовані у вигляді полів введення параметрів пошуку та кнопки“Пошук”. Результати пошуку повертаються у вигляді таблиці.
2.5 Розробка фізичної моделі бази даних «Репозиторій ПЗ»
На основі логічної моделі створюємофізичну модель. Назви таблиць, полів таблиць, а також зв’язки між таблицями вфізичній і логічній моделі повністю співпадають. В таблиці 3 реалізованафізична модель. Пректна частина реалізована в середовищі MySQL.
Таблиця 3 – фізична модель БДрепозиторію програмного забезпечення Ім’я фізичної моделі Тип Формат поля Ключ в ЛМ Індек-сація Обов. поле
Розробник Номер розробника Лічильник Довге ціле PK IK1 Так Прізвище Текстовий 20 AК IK2 Так Ім’я Текстовий 20 AК IK2 Так Побатькові Текстовий 20 AК IK2 Так Адреса елктронної пошти Текстовий 50 Ні
ПЗ Назва ПЗ Текстовий 20 PK IK1 Так Версія ПЗ Текстовий 10 PK IK1 Так Номер розробника Числовий Довге ціле FK1 Так Номер дистрибутива Числовий Довге ціле FK2 Ні Дата випуску Дата/час Короткий формат дати Ні Ліцензія Текстовий 20 Так ftp-адреса вихідних файлів ПЗ Текстовий 50 AK Так
Дистрибутив Назва Текстовий 20 AK1 IK2 Так Версія Текстовый 20 AК1 IK2 Так Номер дистрибутиву Лічилькик Довге ціле PK IK1 Так ftp-адреса вихідних файлів Текстовий 50 AK2 Так
На основі побудованоїлогічної моделі даних репозиторію побудуємо фізичну модель в середовищі MySQL.Створимо таблиці “ПЗ”, “Дистрибутив”, “Розробник” .
Визначення таблиці “Розробник”:
CREATETABLE rozrobnuk (
first_name varchar(30) NOT NULL default '',
last_name varchar(30) NOT NULL default '',
surname varchar(30) NOT NULL default '',
id int(11) NOT NULL auto_increment,
addr varchar(30) default NULL,
PRIMARY KEY (id),
UNIQUE KEY (first_name,last_name,surname)
) ;
Визначення таблиці “Дистрибутив”:
CREATETABLE distr (
name varchar(30) NOT NULL default '',
version varchar(30) NOT NULL default '',
id int(11) NOT NULL auto_increment,
addr varchar(30) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY (name,version)
) ;
Визначення таблиці “ПЗ”:
CREATETABLE PZ (
name varchar(30) NOT NULL default '',
version varchar(10) NOT NULL default '',
dev_id int(11) default 0,
distr_id int(11) default 0,
date date default NULL,
licence varchar(30) default NULL,
addr varchar(30) NOT NULL default '' UNIQUE,
PRIMARY KEY (name,version),
FOREIGN KEY (dev_id) REFERENCES dev(id)
ONDELETE SET NULL
ONUPDATE CASCADE,
FOREIGN KEY (distr_id) REFERENCES distr(id)
ONDELETE SET NULL
ONUPDATE CASCADE
);
Додаємо індекси:
CREATE INDEX pib ONdev(first_name,last_name,surname);
CREATE INDEX pzindex1 ON PZ(name,version);
CREATE INDEX distrindex1 ON distr(name,version);
Усі таблиці, які наведеніу схемі фізичної моделі, належать до третьої нормальної форми, оскільки всі полямістять не більше одного значення, жодне з ключових полів не пусте, всі поля,що не входять до первинного ключа, пов’язані повною функціональною залежністю зпервинним ключем.
Після створення фізичноїмоделі даних можна зробити наступні висновки:
· схема зв’язку фізичної та логічної моделі ідентичні;
· в ході роботи була досягнута третя нормальна форма;
· підчас оцінки якості структури бази даних аномалій не виявлено.
2.6 Кодування ітестування програмного забезпечення
База даних “РепозиторійПЗ” була розроблена у середовищі MySQL + php. Вона реалізована за допомогоютаблиць, форм, запитів та звітів. Також для нормального функціонування базиданих було написано програмний код, який представлено у Додатку А.
При тестуванні базиданих “Репозиторій ПЗ ” не було виявлено помилок в роботі. Для запуску базиданих, використовуючи браузер mozilla, заходимо на адресу 217.77.222.218. Призапуску бази даних відкрилася форма “Репозиторій ПЗ”, в якій було натиснутокнопку “Додати/видалити автора”, потім відкрилася форма “Додати/видалитиавтора”, в якій було заповнено поля ім”я, по-батькові, та прізвише автора, йогоemail-адресу значеннями (імя1, побатькові1, прізвище1,name1@mail.ru). Післянатискання кнопки “Додати автора” внесені дані з’являються в таблиці нижче.Відповідне звернення фіксується в журналі бази даних. Повторюємо дану операцію4 рази для різних авторів. Далі вибираємо будь-якого автора з таблиці нижче танатискаємо кнопку “Видалити автора”. Вибраний автор зникає з таблиці. Дляповернення до форми “Репозиторій ПЗ” натискаємо кнопку “Повернутися на головнусторінку”.
Також у формі“Репозиторій ПЗ” було натиснуто кнопку “Додати/видалити дистрибутив”, після цього відкрилася форма “Додати/видалити дистрибутив”, де було заповнено поляНазва, Версія, ftp-адреса. Після натискання кнопки “Додати дистрибутив” даніпро внесений до бази даних дистрибутив з’являються в таблиці нижче “Наявнідистрибутиви”. Повторюємо вищевказані операції 3 рази. Введені дистрибутивиз’являються в таблиці “Наявні дистрибутиви”. Вибираємо рядок таблиці танатискаємо кнопку “Видалити дистрибутив”. Вибраний рядок (а отже і дистрибутив)зникає з таблиці. Для повернення до форми “Репозиторій ПЗ” натискаємо кнопку“Повернутися на головну сторінку”. Відкривається форма “Репозиторій ПЗ”.
Натиснувши в формі “Репозиторій ПЗ ” кнопку “Додати/видалити ПЗ”, відкрилася форма «Додати/видалитиПЗ», в якій було заповнено поля назву, версію, дату створення, ліцензію таftp-адресу вихідних файлів програми. Також обрано автора та дистрибутив із вженаявних у базі даних. Дані про внесене ПЗ з’являються у таблиці “Наявне ПЗ”.Повторюємо операцію 5 разів. Інформація про все ПЗ введене в базу з’являється втаблиці “Наявне ПЗ”. З таблиці вибираємо 2 рядка, які, відповідно, описують дваекземпляра ПЗ. Після натискання кнопки “Видалити ПЗ” вибрані рядки зникають зтаблиці “Наявне ПЗ”. Для повернення до форми “Репозиторій ПЗ” натискаємо кнопку“Повернутися на головну сторінку”.
Натиснувши в формі “Репозиторій ПЗ ” кнопки “Пошук ПЗ за датою”, “Пошук ПЗ за автором”, “Пошук ПЗза назвою”, “Пошук автора”, “Звіт” було виведено запит за відповіднимкритерієм. Після введення необхідного критерію з’являвся звіт, у якому булопредставлено кортежі бази даних, які задовольняють заданий критерій.
Для пошуку програмногозабезпечення за приблизною датою створення натискаємо в формі “Репозиторій ПЗ”кнопку “Пошук ПЗ за датою”. З’являється форма “Пошук ПЗ за датою” в якій звипадаючих списків вибираємо початкову та кінцеву дату. Після натискання кнопки“Пошук” в таблиці “Звіт ПЗ” нижче з’являється інформація про програмнезабезпечення, яке сворене пізніше початкової та раніше кінцевої дати. Дляотримання вихідних файлів ПЗ натискаємо на посилання в колонці ftp-адреса тапереходимо за відповідною адресою.Для повернення до форми “Репозиторій ПЗ”натискаємо кнопку “Повернутися на головну сторінку”.
Висновки
Підчас розробки проектубази даних „Репозиторій ПЗ” були проведені обстеження та детальний аналізпредметної області, були створені функціональна, концептуальна, логічна тафізична моделі бази даних. Також були детально проаналізовані усі елементи, зяких складається даний програмний продукт та залежності між ними. Для розробкиданого програмного продукту було використано MySQL та php – відкриті, прозорі,безкоштовні та переносимі рішення.
Створена електронна база даних значно підвищує ефективність праціу процесі обліку програмного забезпечення, оскільки дозволяє швидко реалізуватиможливості пошуку ПЗ: за автором, назвою, датою створення; можливістьреєстрації дистрибутива, а саме фіксування таких даних, як: назва, версія,ftp-адреса дистрибутива; можливість реєстрації автора, а саме занесення до базиданих такої інформації: ім”я, по-батькові, та прізвише автора, йогоemail-адресу; можливість реєстрації програмного забезпечення, а саме занесеннядо бази даних такої інформації: назву, версію, дату створення, ліцензію таftp-адресу вихідних файлів програми, автора та дистрибутив із вже наявних убазі даних.; можливість редагування інформації про вже зареєстроване програмнезабезпечення; можливість переглядати статистичні дані про все наявне програмнезабезпечення.
Програма має зручнийінтерфейс та меню користувача, проста у використанні, враховує найважливішіпотреби користувача, який працює з великою базою даних, має інструкцію длякористувача. Програма максимально переносима оскільки потребує тількипідключення до мережі інтернет та браузер. Програма підтримує використаннябагатьма користувачами в реальному часі.
Отже, розроблене програмне забезпечення повністюзадовольняє поставлені до нього вимоги. Може бути використане за призначеннямяк примітивний репозиторій та як приклад для інших проектів.
Списоквикористаних джерел
1. Гарсиа-Молина,Гектор, Ульман, Джеффи, Д., Уидом, Джениффер. Системы баз данных. Полний курс.: Пер. с англ. – М.:Издательский дом «Вильямс», 2004. -1088 с.
2. Кирилов В.В. Основи проектирования реляционних баз даних. Учебноепособие. –СПб.: ИТМО, 1994. – 90 с.
Додаток А – Текст програми
index.php
function myhref($href) {
$style = " style=\«border: 1px solidblack; cursor:pointer\»";
$href = "onclick=\«location.href='$href'\»";
$rollover = "onmouseover=\«this.style.background='#c0c0c0'\»onmouseout=\«this.style.background='#d3d3d3'\»";
return $style.$rollover.$href;
}
?>
=[ Репозиторій ]=
Пошук
Адміністрування
>ПЗ по даті
>ПЗ
>ПЗ по автору
>Дістр
>ПЗ по назві
>Автор
>Автора по імені
>Все!
license
header.inc.html
function myheader( $title=«Репозиторій» ) {
$header = "\n";
$header = $header."\n\n".$title."\n";
$header = $header. "\n";
$header = $header."\n\n";
return $header;
}
?>
footer.inc.html
if ( !$printLink == 1 ) echo "= Повернутися на головнусторінку =";
?>
[ June, 03..04, 2007 (c) ]
styles.css
a {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
color: Navy;
font-size: 9pt;
text-decoration: none;
}
a:hover { color: #ff0000; }
.h1 {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 16pt;
font-weight: bold;
vertical-align: middle;
}
.h2 {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 12pt;
font-weight: bold;
vertical-align: middle;
}
.text {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 10pt;
}
.foo {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 8pt;
color: #A9A9A9;
}
db.php
class db {
var $dbl;
var $res;
functiondb($host=«localhost»,$user=«lus»,$pass=«1»)
{
$this->dbl = mysql_pconnect($host,$user,$pass);
mysql_select_db(«lus», $this->dbl);
}
function query($q)
{
$this->res = mysql_query($q, $this->dbl);
return $this->res;
}
function num_rows()
{
return mysql_num_rows($this->res);
}
function fetch_row()
{
return mysql_fetch_row($this->res);
}
function fetch_array()
{
return mysql_fetch_array($this->res,MYSQL_ASSOC);
}
function fetch_object()
{
return mysql_fetch_object($this->res);
}
function insert_id()
{
return mysql_insert_id($this->dbl);
}
function is_result()
{
return $this->res? 1: 0;
}
}
?>
forms/afftar.html
Додати/видалитиавтора
Ім'я
По-батькові:
Прізвище:
email:
scripts/afftar.php
require"../db.php";
include"../forms/afftar.html";
$db= new db();
if(isset($_GET['add'])){
$fn= $_GET['fname'];
$ln= $_GET['lname'];
$sn= $_GET['sname'];
$a = $_GET['address'];
$db->query(«INSERTINTO dev(first_name, last_name, surname, addr)
VALUES ('$fn','$ln','$sn','$a') „);
}elseif(isset($_GET['del'])) {
foreach($_GET['delarr']as $arr){
$db->query(“DELETEFROM dev
WHEREid = $arr „);
}
}
?>
Зареєстровані автори
>
 
Ім'я
По-батькові
Прізвище
email
$db->query(«SELECTid, first_name,last_name,surname,addr FROM dev»);
while($arr=$db->fetch_array()){
echo"";
foreach($arras $key=>$val){
if($key=='id')$val = "";
if($key=='addr') $val = "$val";
echo"".$val."";
}
echo"";
}
?>
forms/distr.html
Add/Del distr
Ім'я
Версія:
Адрес:
scripts/distr.php
include"../forms/distr.html";
require("../db.php");
$db= new db();
if(isset($_GET['add'])){
$n= $_GET['name'];
$v= $_GET['version'];
$a= $_GET['address'];
$db->query(«INSERTINTO distr(name, version, addr)
VALUES ('$n','$v','$a') „);
}elseif(isset($_GET['del'])) {
foreach($_GET['delarr']as $arr){
$db->query(“DELETEFROM distr
WHEREid = $arr „);
}
}
?>
Наявні дистрибутиви
>
Назва
Версія
ftp-адреса
$db->query(«SELECTid,name,version,addr FROM distr»);
while($arr=$db->fetch_array()){
echo"";
foreach($arras $key=>$val) {
if($key=='id') $val = "";
if($key=='addr') $val = "$val";
echo"".$val."\n";
}
echo"";
}
?>
forms/pz.html
Додати/ВидалитиПЗ
Назва
Версія:
Дата:
Дистрибутив:
$db->query(«SELECT id,name,version FROM distr»);
while ( $arr = $db->fetch_array() ) {
$tmp = $arr['id'];
$tmpname = $arr['name']." — ".$arr['version'];
echo "$tmpname";
}
?>
Автор:
$db->query(«SELECT id,first_name,surname FROM dev»);
while($arr=$db->fetch_array()) {
$tmp = $arr['id'];
$tmpname = $arr['first_name']." ".$arr['surname'];
echo "$tmpname";
}
?>
Ліцензія:
ftp-адреса:
scripts/pz.php
require("../db.php");
$db= new db();
?>
include"../forms/pz.html";
if(isset($_GET['add'])){
$n= $_GET['name'];
$v= $_GET['version'];
$d= $_GET['date'];
$l= $_GET['licence'];
$n_d=$_GET['distr'];
$n_a=$_GET['author'];
$a= $_GET['address'];
$db->query(«INSERTINTO pz(name, version, dev_id, distr_id, date, licence, addr)
VALUES ('$n','$v', '$n_a', '$n_d', DATE '$d', '$l', '$a') „);
}elseif(isset($_GET['del'])) {
foreach($_GET['delarr']as $arr){
$tmp= explode (“:»,$arr);
$db->query(«DELETEFROM pz
WHEREname = '$tmp[0]'
ANDversion = '$tmp[1]' „);
}
}
?>
Наявне ПЗ
>
Назва
Версія
Датa
Ліцензія
ftp-адреса
Розробник
Дистрибутив
ftp-aдреса дистрибутива
$db->query(«SELECTpz.name, pz.version,pz.date,pz.licence,pz.addr, dev.first_name,
dev.surname,distr.name AS name1, distr.addr AS address
FROMpz,dev, distr
WHERE(pz.dev_id=dev.id AND pz.distr_id=distr.id )»);
while($arr=$db->fetch_array()){
echo"";
$tmp=$arr['name'].":".$arr['version'];
$val= "";
echo"".$val."\n";
foreach($arras $key=>$val){
if(($key=='addr') || ($key=='address')) $val = "$val";
echo"".$val."\n";
}
echo"";
}
?>
if(isset($_GET['add'])) {
$n = $_GET['name'];
$v = $_GET['version'];
$d = $_GET['date'];
$l = $_GET['licence'];
$n_d=$_GET['distr'];
$n_a=$_GET['author'];
$a = $_GET['address'];
$db->query(«INSERT INTO pz(name, version, dev_id,distr_id, date, licence, addr)
VALUES ('$n','$v', '$n_a', '$n_d',DATE '$d', '$l', '$a') „);
} elseif(isset($_GET['del'])) {
$db->query(“DELETE FROM distr
WHERE name = '$n'
AND version = '$v' „);
}
?>
forms/sAName.html
Пошукавторa
Прізвище автора:
scritps/sAName.php
include "../forms/sAName.html";
$name = $_GET['surname'];
require ("../db.php");
$db =new db();
##########
$db->query(«SELECT dev.first_name, dev.last_name,dev.surname,dev.addr
FROM dev
WHERE dev.surname = \»$name\"");
?>
Ім'я
По-батькові
Прізвище
Адреса
while($arr=$db->fetch_array()){
echo "";
foreach($arr as $key=>$val)
echo "".$val."";
echo "";
}
?>
forms/sAuthor.html
Пошукпо автору
Ім'я:
Прізвище:
scritps/sAuthor.php
include "../forms/sAuthor.html";
$firstname = $_GET['first_name'];
$surname = $_GET['surname'];
require ("../db.php");
$db =new db();
##########
$db->query(«SELECT pz.name,pz.version,pz.date,pz.licence,pz.addr, dev.first_name, dev.surname,dev.addr ASaddress
FROM pz,dev
WHERE (pz.dev_id=dev.id )
AND (dev.first_name =\»$firstname\")
AND (dev.surname =\"$surname\") ");
?>
Ім'я
Версія
Датa
Ліцензія
ftp-адреса
Розробник
Адресарозробника
while($arr=$db->fetch_array()){
echo "";
foreach($arr as $key=>$val)
echo "".$val."";
echo "";
}
?>
forms/sDate.html
Пошукпо даті
Дата:
з
echo "01\n";
for ($i=2; $i
echo "
if ($i
echo«0».$i.">".«0».$i;
else
echo$i.">".$i;
echo "\n";
}
?>
січень
лютий
березень
квітень
травень
червень
липень
серпень
вересень
жовтень
листопад
грудень
echo "1970\n";
for ($i=1971; $i
echo "".$i."\n";
}
?>
по
echo "01\n";
for ($i=2; $i
echo "
if ($i
echo«0».$i.">".«0».$i;
else
echo$i.">".$i;
echo "\n";
}
?>
січень
лютий
березень
квітень
травень
червень
липень
серпень
вересень
жовтень
листопад
грудень
echo "1970\n";
for ($i=1971; $i
echo "".$i."\n";
}
?>
scritps/sDate.php
include "../forms/sDate.html";
require ("../db.php");
$db =new db();
$fromDate =$_GET['from_year'].'-'.$_GET['from_month'].'-'.$_GET['from_day'];
$toDate =$_GET['to_year'].'-'.$_GET['to_month'].'-'.$_GET['to_day'];
$db->query(«SELECT pz.name,pz.version,pz.date,pz.licence,pz.addr, dev.first_name, dev.surname,distr.nameAS distr
FROM pz,dev,distr
WHERE (pz.dev_id=dev.id ANDpz.distr_id=distr.id)
AND (pz.date > DATE\»$fromDate\")
AND (pz.date
?>
Звіт ПЗ з
по :
Ім'я
Версія
Датa
Ліцензія
ftp-адреса
Розробник
Дістрібутив
while($arr=$db->fetch_array()){
echo "";
foreach($arr as $key=>$val)
echo "".$val."";
echo "";
}
?>
forms/sName.html
Пошукпо автору
Назва ПЗ:
scripts/sName.php
include "../forms/sName.html";
$name = $_GET['name'];
require ("../db.php");
$db =new db();
##########
$db->query(«SELECT pz.name,pz.version,pz.date,pz.licence,pz.addr, dev.first_name,
dev.surname,distr.name AS name1,distr.addr AS address
FROM pz,dev, distr
WHERE (pz.dev_id=dev.id ANDpz.distr_id=distr.id )
AND (pz.name =\»$name\") ");
?>
Ім'я
Версія
Датa
Ліцензія
ftp-адреса
Розробник
Дистрибутив
ftp-aдреса дистрибутива
while($arr=$db->fetch_array()){
echo "";
foreach($arr as $key=>$val)
echo "".$val."";
echo "";
}
?>
scripts/sAll.php
require ("../db.php");
$db =new db();
$db->query(«SELECT pz.name,pz.version,pz.date,pz.licence,pz.addr, dev.first_name,
dev.last_name, dev.surname,dev.addrAS address, distr.name AS distr,
distr.version AS vers,distr.addr AS distr_addr
FROM pz,dev,distr
WHERE pz.dev_id=dev.id ANDpz.distr_id=distr.id „);
?>
Звіт по базіданих
Назвапрограми
Версія
Датa
Ліцензія
ftp-адреса
Розробник
Адресарозробника
Дістрібутив
Версіялистрибутиву
ftp-aдресадистрибутиву
while($arr=$db->fetch_array()){
echo "";
foreach($arr as $key=>$val)
echo "".$val."";
echo "";
}
?>
Додаток Б – Інструкція для користувача
Базу даних “Репозиторій ПЗ” реалізовано в виглядіweb-додатку.Відкрити базу даних можна скориставшись посиланням 217.77.222.218.Після відкриття бази даних з’явиться меню(рис. 5):
/>
Рисунок 5 – Головна формабази даних «Репозиторій ПЗ»
За допомогою меню можнаобирати необхідні операції: “Додати/видалити ПЗ”, “Додати/видалитидистрибутив”, “Додати/видалити автора”, “Пошук ПЗ за датою”, “Пошук ПЗ заавтором”, “Пошук ПЗ за назвою”, “Пошук автора”, “Звіт”
Якщо потрібно додати добази інформаціюпро новий дистрибутив потрібно натиснути в меню кнопку “Додати/видалитидистрибутив”, після цього зявиться вікно вказане на
рисунку 6:
/>
Рисунок 6 –форма«Додати/видалити дистрибутив»
У вище приведеному вікніпотрібно заповнити поля “Назва ”, “Версія”, “ftp-адреса”. Танатиснути кнопку “Додати дистрибутив” для додавання. Або вибрати мишкоюдистрибутив з таблиці “Наявні дистрибутиви” та натиснути кнопку “Видалитивідмічені” для видалення.
/>Якщо потрібно додати добази інформаціюпро нове програмне забезпечення потрібно натиснути в меню кнопку“Додати/видалити ПЗ”, після цього зявиться вікно вказане на рисунку 7:
Рисунок 7 – форма«Додати/видалити ПЗ»
У вище приведеному вікніпотрібно заповнити поля “Назва ”, “Версія”, “ftp-адреса”,“Дата”,”Ліцензія” та обрати значення з випадаючих списків “Дистрибутив” та“Автор”. Та натиснути кнопку “Додати ПЗ” для додавання. Або вибрати мишкою ПЗ зтаблиці “Наявне ПЗ” та натиснути кнопку “Видалити відмічені” для видалення.
/>Для отримання загальної інформаціїпо базі даних треба натиснути кнопку “Звіт” в головному меню (рис. 8)
Рисунок 8– форма «Звіт»
Для пошукупрограмного забезпечення за назвою потрібно натиснути кнопку «Пошук ПЗ поназві» в головному меню. Виведеній формі (рис. 9) ввести назву ПЗ та натиснутикнопку «Пошук!» Результати пошуку отримуємо тут же.
/>
Рисунок 9– форма «ПошукПЗ по назві»
Для пошукупрограмного забезпечення за датою потрібно натиснути кнопку «Пошук ПЗ по даті»в головному меню. Виведеній формі (рис. 10) вибрати початкову та кінцеву датунаписання ПЗ, та натиснути кнопку «Пошук!» Результати пошуку отримуємо тут же.
/>
Рисунок 10– форма «ПошукПЗ по даті»
Для пошукупрограмного забезпечення за автором потрібно натиснути кнопку «Пошук ПЗ поавтору» в головному меню. Виведеній формі (рис. 11) ввести ім»я та прізвищеавтора ПЗ та натиснути кнопку «Пошук!» Результати пошуку отримуємо тут же.
/>
Рисунок 11– форма «ПошукПЗ по автору»
/>
Рисунок12– форма «Пошукавтора»
Для отримання даних про автора потрібно натиснутикнопку «Пошук автора» в головному меню. Виведеній формі (рис. 12) ввести прізвище автора ПЗ та натиснути кнопку «Пошук!» Результати пошуку отримуємо тутже.