Реферат: Автоматизація процесу обліку

Анотація

У даній курсовій роботірозроблена база даних, яка призначена для автоматизації процесу облікупрограмного забезпечення.

Робота виконана на 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).

/>

/> <td/> />  

Інформацію про потоки даних заносимов таблицю  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

   

                                          ПЗ

/> <td/> />  

               

                                                                                 Дистрибутив

         

Назва      S        AK    IK1

Версія     S        AK    IK1

ftp-адреса вихідних файлів  S

№дистрибутива   N  IK  PK

  /> <td/> /> />

                                                                                                    

/> <td/> />  

Рисунок 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

<?php include («header.inc.html»); echomyheader(); ?>

<?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;

}

?>

<table align=center border=0 cellpadding=10 cellspacing=10class=«text» style=«border: 1px solid black»>

<tr class=h1 bgcolor="#c0c0c0">

          <td align=«center» colspan=2>=[ Репозиторій ]=</td>

</tr>

<tr class=«h2» bgcolor="#c0c0c0">

          <td align=«center»>Пошук</td>

          <td align=«center»>Адміністрування</td>

</tr>

<tronmouseover=«this.style.backgroundcolor=lightgreen»;>

          <td align=«center» <?php echomyhref("./scripts/sDate.php")        ?> >ПЗ по даті</td>

          <td align=«center» <?php echomyhref("./scripts/pz.php")             ?> >ПЗ</td>

</tr>

<tr>

          <td align=«center» <?php echomyhref("./scripts/sAuthor.php")     ?> >ПЗ по автору</td>

          <td align=«center» <?php echomyhref("./scripts/distr.php")          ?> >Дістр</td>

</tr>

<tr>

          <td align=«center» <?php echomyhref("./scripts/sName.php")      ?> >ПЗ по назві</td>

          <td align=«center» <?php echomyhref("./scripts/afftar.php")        ?> >Автор</td>

</tr>

<tr>

          <td align=«center» <?php echomyhref("./scripts/sAName.php")    ?> >Автора по імені</td>

          <td> </td>

</tr>

<tr>

          <td align=«center» <?php echomyhref("./scripts/sAll.php")          ?> >Все!</td>

          <td align=center class=foo> <divstyle=«cursor:pointer»onclick=«location.href='lic.php'»>license</a></td>

</tr>

</table>

<?php $printLink=1; include(«footer.inc.html»);?>

 

header.inc.html

<?php

function myheader( $title=«Репозиторій» ) {

                    $header = "<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";

                    $header = $header."<html>\n<head>\n<title>".$title."</title>\n";

                    $header = $header. "<linkrel=\«stylesheet\» type=\«text/css\» href=\"/styles.css\">\n";

                    $header = $header."</head>\n\n<body bgcolor=\"#d3d3d3\"\n>";

          return $header;

}

?>

footer.inc.html

<table cellpadding=«10»cellspacing=«10» border=0 class=foo align=«center»>

<tr valign=«middle»>

          <td align=«center»>

          <?php

                    if ( !$printLink == 1 ) echo "<ahref=/index.php>=  Повернутися на головнусторінку =</a><br><br><br>";

          ?>

                   

                    [ June, 03..04, 2007 (c) ]

                    </td>

</tr>

</table>

</body>

</html>

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

<?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

<form action="../scripts/afftar.php">

<tableclass=text>

<tr>

       <td colspan=2 align=«center» class=h1>Додати/видалитиавтора<br><br></td>

</tr>

<tr>

       <td>Ім'я</td>

       <td><input type=«text» name=«fname»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td>По-батькові:</td>

        <td><inputtype=«text» name=«lname» size=«15»maxlength=«30»></td>

</tr>

<tr>

       <td>Прізвище:</td>

       <td><input type=«text» name=«sname»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td>email:</td>

       <td><input type=«text» name=«address»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td align=«center» colspan=«2»><inputtype=«submit» name=«add» value=«Додатиавтора»></td>

</tr>

</table>

</form>

scripts/afftar.php

<?phpinclude("../header.inc.html"); echo myheader(«Автор») ?>

<divalign=center>

<?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 „);

}

}

?>

<divclass=h2>Зареєстровані автори</div>

<formaction=<?php print $PHP_SELF; ?> >

<tablestyle=“border: 1px solid black; » cellpadding=3 cellspacing=1class=text>

<trbgcolor="#c0c0c0">

          <td> </td>

          <tdalign=«center»>Ім'я</td>

          <tdalign=«center»>По-батькові</td>

          <tdalign=«center»>Прізвище</td>

          <tdalign=«center»>email</td>

</tr>

<?php

$db->query(«SELECTid, first_name,last_name,surname,addr FROM dev»);

while($arr=$db->fetch_array()){

          echo"<tr>";

                    foreach($arras $key=>$val){

                             if($key=='id')$val = "<input type=checkbox name=delarr[] value=$val>";

                             if($key=='addr') $val = "<ahref=\«mailto:$val\»>$val</a>";

                             echo"<td bgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

                    }

          echo"</tr>";

}

?>

<tr><tdcolspan=«5» align=«center»><inputtype=«submit» name=«del» value=«Видалитиавтора»></td></tr>

</table>

</form>

</div>

<?phpinclude("../footer.inc.html"); ?>

forms/distr.html

<form action="../scripts/distr.php">

<table class=text>

<tr>

<td colspan=2 align=«center»class=h1>Add/Del distr<br><br></td>

</tr>

<tr>

<td>Ім'я</td>

<td><input type=«text»name=«name» size=«15»maxlength=«30»></td>

</tr>

<tr>

<td>Версія:</td>

<td><input type=«text»name=«version» size=«15»maxlength=«30»></td>

</tr>

<tr>

<td>Адрес:</td>

<td><input type=«text»name=«address» size=«15»maxlength=«30»></td>

</tr>

<tr>

<td><input type=«submit»name=«add» value=«Додати distr»></td>

<td><input type=«submit»name=«del» value=«Видалити distr»></td>

</tr>

</table>

</form>

scripts/distr.php

<?phpinclude("../header.inc.html"); echo myheader(«Дістр») ?>

<divalign=center>

<?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 „);

}

}

?>

<divclass=h2>Наявні дистрибутиви</div>

<formaction=<?php print $PHP_SELF; ?> >

<tablestyle=“border: 1px solid black; » cellpadding=3 cellspacing=1class=text>

<trbgcolor="#c0c0c0">

          <tdalign=«center»> </td>

          <tdalign=«center»>Назва</td>

          <tdalign=«center»>Версія</td>

          <tdalign=«center»>ftp-адреса</td>

</tr>

<?php

$db->query(«SELECTid,name,version,addr FROM distr»);

while($arr=$db->fetch_array()){

          echo"<tr>";

                    foreach($arras $key=>$val) {

                             if($key=='id') $val = "<input type=checkbox name=delarr[]value=$val>";

                             if($key=='addr') $val = "<ahref=\«ftp://$val\»>$val</a>";

                             echo"<td bgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>\n";

                    }

          echo"</tr>";

}

?>

<tr><tdalign=«center» colspan=4><input type=«submit»name=«del» value=«Видалитивідмічені»></td></tr>

</table>

</form>

</div>

<?phpinclude("../footer.inc.html"); ?>

 

forms/pz.html

<<form action="../scripts/pz.php">

<tableclass=text>

<tr>

       <td colspan=2 align=«center» class=h1>Додати/ВидалитиПЗ<br><br></td>

</tr>

<tr>

       <td>Назва</td>

       <td><input type=«text» name=«name»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td>Версія:</td>

        <td><input type=«text»name=«version» size=«15»maxlength=«30»></td>

</tr>

<tr>

       <td>Дата:</td>

       <td><input type=«text» name=«date»size=«15» maxlength=«30»></td>

</tr>

<tr>

 <td>Дистрибутив:</td>

 <td>

       <select name=distr>

                <?php

                       $db->query(«SELECT id,name,version FROM distr»);

                       while ( $arr = $db->fetch_array() ) {

                               $tmp = $arr['id'];

                               $tmpname = $arr['name']." — ".$arr['version'];

                               echo "<option value=$tmp>$tmpname";

                       }

               ?>

</select>

</td>

</tr>

<tr>

       <td>Автор:</td>

       <td>

       <select name=author>

               <?php

               $db->query(«SELECT id,first_name,surname FROM dev»);

               while($arr=$db->fetch_array()) {

                               $tmp = $arr['id'];

                               $tmpname = $arr['first_name']." ".$arr['surname'];

                               echo "<option value=$tmp>$tmpname";

               }

               ?>

</select>

       </td>

</tr>

<tr>

       <td>Ліцензія:</td>

       <td><input type=«text» name=«licence»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td>ftp-адреса:</td>

       <td><input type=«text» name=«address»size=«15» maxlength=«30»></td>

</tr>

<tr>

       <td colspan=2 align=«center»><input type=«submit»name=«add» value=«Додати ПЗ»></td>

       

</tr>

</table>

</form>

scripts/pz.php

<?phpinclude("../header.inc.html"); echo myheader(«ПЗ») ?>

<?php

require("../db.php");

$db= new db();

?>

<divalign=«center»>

<?php

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]' „);

}

}

?>

<divclass=h2>Наявне ПЗ</div>

<formaction=<?php print $PHP_SELF; ?> >

<tablestyle=“border: 1px solid black» cellpadding=3 cellspacing=1class=text>

<trbgcolor="#c0c0c0" class=>

          <td> </td>

          <tdalign=«center»>Назва</td>

          <tdalign=«center»>Версія</td>

          <tdalign=«center»>Датa</td>

          <tdalign=«center»>Ліцензія</td>

          <tdalign=«center»>ftp-адреса</td>

          <tdalign=«center» colspan=2>Розробник</td>

          <tdalign=«center»>Дистрибутив</td>

          <tdalign=«center»>ftp-aдреса дистрибутива</td>

</tr>

<?php

$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"<tr>";

                    $tmp=$arr['name'].":".$arr['version'];

                    $val= "<input type=checkbox name=delarr[]value=\"$tmp\">";

                    echo"<td bgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>\n";

                    foreach($arras $key=>$val){

                             if(($key=='addr') || ($key=='address')) $val = "<ahref=\«ftp://$val\»>$val</a>";

                             echo"<td bgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>\n";

                    }

          echo"</tr>";

}

?>

<tr><tdcolspan=10 align=center><input type=«submit»name=«del» value=«Видалити ПЗ»></td></tr>

</table>

</form>

</div>

<?phpinclude("../footer.inc.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(«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' „);

}

?>

</div>

<?php include(“../footer.inc.html»); ?>

forms/sAName.html

<form action="../scripts/sAName.php">

<table class=text>

<tr>

<td colspan=2 align=«center» class=h1>Пошукавторa<br><br></td>

</tr>

<tr>

<td>Прізвище автора:</td>

<td><input type=«text»name=«surname» maxlength=«60»></td>

</tr>

<tr>

<td colspan=2 align=center>

<input type=«submit» name=«search»value=«Пошук!»>

</td>

</tr>

</table>

</form>

scritps/sAName.php

<?php include("../header.inc.html"); echomyheader(«Пошук по автору») ?>

<div align=«center»>

<?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\"");

?>

<table style=«border: 1px solid black; „cellpadding=3 cellspacing=1 class=text>

<tr bgcolor=“#c0c0c0»>

          <td align=«center»>Ім'я</td>

          <tdalign=«center»>По-батькові</td>

          <tdalign=«center»>Прізвище</td>

          <tdalign=«center»>Адреса</td>

</tr>

<?php

while($arr=$db->fetch_array()){

          echo "<tr>";

                    foreach($arr as $key=>$val)

                             echo "<tdbgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

          echo "</tr>";

}

?>

</table>

</div>

<?php include("../footer.inc.html"); ?>

forms/sAuthor.html

<form action="../scripts/sAuthor.php">

<table class=text>

<tr>

<td colspan=2 align=«center» class=h1>Пошукпо автору<br><br></td>

</tr>

<tr>

<td>Ім'я:</td>

<td><input type=«text»name=«first_name» maxlength=«60»></td>

</tr>

<tr>

<td>Прізвище:</td>

<td><input type=«text»name=«surname» maxlength=«60»></td>

</tr>

<tr>

<td colspan=2 align=center>

<input type=«submit» name=«add»value=«Пошук!»>

</td>

</tr>

</table>

</form>

scritps/sAuthor.php

<?php include("../header.inc.html"); echomyheader(«Пошук по автору») ?>

<div align=«center»>

<?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\") ");

?>

<table style=«border: 1px solid black; „cellpadding=3 cellspacing=1 class=text>

<tr bgcolor=“#c0c0c0»>

          <td align=«center»>Ім'я</td>

          <tdalign=«center»>Версія</td>

          <td align=«center»>Датa</td>

          <td align=«center»>Ліцензія</td>

          <tdalign=«center»>ftp-адреса</td>

          <td align=«center»colspan=2>Розробник</td>

          <td align=«center»>Адресарозробника</td>

</tr>

<?php

while($arr=$db->fetch_array()){

          echo "<tr>";

                    foreach($arr as $key=>$val)

                             echo "<tdbgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

          echo "</tr>";

}

?>

</table>

</div>

<?php include("../footer.inc.html"); ?>

forms/sDate.html

<form action="../scripts/sDate.php">

<table class=text>

<tr>

<td colspan=2 align=«center» class=h1>Пошукпо даті<br><br></td>

</tr>

<tr>

<td>Дата:</td>

<td>

    з

<select name=from_day>

          <?php

                    echo "<option selectedvalue=01>01\n";

                    for ($i=2; $i<=31; $i++) {

                             echo "<optionvalue=";

                             if ($i<10)

                                      echo«0».$i.">".«0».$i;

                             else

                                      echo$i.">".$i;

                             echo "\n";

                    }

           ?>             

</select>

<select name=from_month>

          <option selected value=01>січень

          <option value=02>лютий

          <option value=03>березень

          <option value=04>квітень

          <option value=05>травень

          <option value=06>червень

          <option value=07>липень

          <option value=08>серпень

          <option value=09>вересень

          <option value=10>жовтень

          <option value=11>листопад

          <option value=12>грудень

</select>

<select name=from_year>

          <?php

                    echo "<option selectedvalue=1970>1970\n";

                    for ($i=1971; $i<=2010; $i++) {

                             echo "<optionvalue=".$i.">".$i."\n";

                    }

           ?>             

</select>

   

    по

          <select name=to_day>

          <?php

                    echo "<option selectedvalue=01>01\n";

                    for ($i=2; $i<=31; $i++) {

                             echo "<optionvalue=";

                             if ($i<10)

                                      echo«0».$i.">".«0».$i;

                             else

                                      echo$i.">".$i;

                             echo "\n";

                    }

           ?>             

</select>

<select name=to_month>

          <option selected value=01>січень

          <option value=02>лютий

          <option value=03>березень

          <option value=04>квітень

          <option value=05>травень

          <option value=06>червень

          <option value=07>липень

          <option value=08>серпень

          <option value=09>вересень

          <option value=10>жовтень

          <option value=11>листопад

          <option value=12>грудень

</select>

<select name=to_year>

          <?php

                    echo "<option selectedvalue=1970>1970\n";

                    for ($i=1971; $i<=2010; $i++) {

                             echo "<optionvalue=".$i.">".$i."\n";

                    }

           ?>             

</select>

   

<input type=«submit» name=«add»value=«Пошук!»>

</td>

</table>

</form>

scritps/sDate.php

<?php include("../header.inc.html"); echomyheader(«Пошук по даті») ?>

<div align=«center»>

<?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 < DATE\"$toDate\") ");

?>

<div class=h2>Звіт ПЗ  з <?php echo$_GET['from_day'].'.'.$_GET['from_month'].'.'.$_GET['from_year'].'р.';  ?>

          по <?php echo$_GET['to_day'].'.'.$_GET['to_month'].'.'.$_GET['to_year'].'р.'; ?>:</div>

<table style=«border: 1px solid black; „cellpadding=3 cellspacing=1 class=text>

<tr bgcolor=“#c0c0c0»>

          <td align=«center»>Ім'я</td>

          <tdalign=«center»>Версія</td>

          <td align=«center»>Датa</td>

          <tdalign=«center»>Ліцензія</td>

          <tdalign=«center»>ftp-адреса</td>

          <td align=«center»colspan=2>Розробник</td>

          <td align=«center»>Дістрібутив</td>

</tr>

<?php

while($arr=$db->fetch_array()){

          echo "<tr>";

                    foreach($arr as $key=>$val)

                             echo "<tdbgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

          echo "</tr>";

}

?>

</table>

</div>

<?php include("../footer.inc.html"); ?>

forms/sName.html

<form action="../scripts/sName.php">

<table class=«text»>

<tr>

<td colspan=2 align=«center» class=h1>Пошукпо автору<br><br></td>

</tr>

<tr>

<td>Назва ПЗ:</td>

<td><input type=«text»name=«name» maxlength=«60»></td>

</tr>

<tr>

<td colspan=2 align=center>

<input type=«submit» name=«search»value=«Пошук!»>

</td>

</tr>

</table>

</form>

scripts/sName.php

<?php include("../header.inc.html"); echomyheader(«Пошук по назві») ?>

<div align=«center»>

<?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\") ");

?>

<table style=«border: 1px solid black»cellpadding=3 cellspacing=1 class=text>

<tr bgcolor="#c0c0c0" class=>

          <td align=«center»>Ім'я</td>

          <tdalign=«center»>Версія</td>

          <td align=«center»>Датa</td>

          <tdalign=«center»>Ліцензія</td>

          <tdalign=«center»>ftp-адреса</td>

          <td align=«center»colspan=2>Розробник</td>

          <tdalign=«center»>Дистрибутив</td>

          <td align=«center»>ftp-aдреса дистрибутива</td>

</tr>

<?php

while($arr=$db->fetch_array()){

          echo "<tr>";

                    foreach($arr as $key=>$val)

                             echo "<tdbgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

          echo "</tr>";

}

?>

</table>

</div>

<?php include("../footer.inc.html"); ?>

scripts/sAll.php

<?php include("../header.inc.html"); echomyheader(«Все!») ?>

<div align=«center»>

<?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 „);

?>

<div class=h1>Звіт по базіданих</div><br><br>

<table style=“border: 1px solid black; „cellpadding=3 cellspacing=1 class=text>

<tr bgcolor=“#c0c0c0»>

          <td align=«center»>Назвапрограми</td>

          <tdalign=«center»>Версія</td>

          <td align=«center»>Датa</td>

          <tdalign=«center»>Ліцензія</td>

          <tdalign=«center»>ftp-адреса</td>

          <td align=«center»colspan=3>Розробник</td>

          <td align=«center»>Адресарозробника</td>

          <tdalign=«center»>Дістрібутив</td>

          <td align=«center»>Версіялистрибутиву</td>

          <td align=«center»>ftp-aдресадистрибутиву</td>

</tr>

<?php

while($arr=$db->fetch_array()){

          echo "<tr>";

                    foreach($arr as $key=>$val)

                             echo "<tdbgcolor=\"#dcdcdc\"align=\«center\»>".$val."</td>";

          echo "</tr>";

}

?>

</table>

</div>

<?phpinclude("../footer.inc.html"); ?>


Додаток Б – Інструкція для користувача

Базу даних “Репозиторій ПЗ” реалізовано в виглядіweb-додатку.Відкрити базу даних можна скориставшись посиланням 217.77.222.218.Після відкриття бази даних з’явиться меню(рис. 5):

/>

Рисунок 5 – Головна формабази даних «Репозиторій ПЗ»

За допомогою меню можнаобирати необхідні операції: “Додати/видалити ПЗ”,  “Додати/видалитидистрибутив”, “Додати/видалити автора”, “Пошук ПЗ за датою”, “Пошук ПЗ заавтором”, “Пошук ПЗ за назвою”, “Пошук автора”, “Звіт”

  Якщо потрібно додати добази інформаціюпро новий дистрибутив потрібно  натиснути в меню кнопку “Додати/видалитидистрибутив”, після цього зявиться вікно вказане на

рисунку 6:

/>

Рисунок 6 –форма«Додати/видалити дистрибутив»

У вище приведеному вікніпотрібно заповнити  поля  “Назва ”, “Версія”, “ftp-адреса”. Танатиснути кнопку “Додати дистрибутив” для додавання. Або вибрати мишкоюдистрибутив з таблиці “Наявні дистрибутиви” та натиснути кнопку “Видалитивідмічені” для видалення.

/>Якщо потрібно додати добази інформаціюпро нове програмне забезпечення потрібно  натиснути в меню кнопку“Додати/видалити ПЗ”, після цього зявиться вікно вказане на рисунку 7:

Рисунок 7 – форма«Додати/видалити ПЗ»


У вище приведеному вікніпотрібно заповнити  поля  “Назва ”, “Версія”, “ftp-адреса”,“Дата”,”Ліцензія” та обрати значення з випадаючих списків “Дистрибутив” та“Автор”. Та натиснути кнопку “Додати ПЗ” для додавання. Або вибрати мишкою ПЗ зтаблиці “Наявне ПЗ” та натиснути кнопку “Видалити відмічені” для видалення.

/>Для отримання загальної інформаціїпо базі даних треба натиснути кнопку “Звіт” в головному меню (рис. 8)

Рисунок 8– форма «Звіт»

Для пошукупрограмного забезпечення за назвою потрібно натиснути кнопку «Пошук ПЗ поназві» в головному меню. Виведеній формі (рис. 9) ввести назву ПЗ та натиснутикнопку «Пошук!» Результати пошуку отримуємо тут же.


/>

Рисунок 9– форма «ПошукПЗ по назві»

Для пошукупрограмного забезпечення за датою потрібно натиснути кнопку «Пошук ПЗ по даті»в головному меню. Виведеній формі (рис. 10) вибрати початкову та кінцеву датунаписання ПЗ, та натиснути кнопку «Пошук!» Результати пошуку отримуємо тут же.

/>

Рисунок 10– форма «ПошукПЗ по даті»

Для пошукупрограмного забезпечення за автором потрібно натиснути кнопку «Пошук ПЗ поавтору» в головному меню. Виведеній формі (рис. 11) ввести ім»я  та прізвищеавтора ПЗ та натиснути кнопку «Пошук!» Результати пошуку отримуємо тут же.

/>

Рисунок 11– форма «ПошукПЗ по автору»

/>

Рисунок12– форма «Пошукавтора»

Для отримання даних про автора потрібно натиснутикнопку «Пошук  автора» в головному меню. Виведеній формі (рис. 12) ввести прізвище автора ПЗ та натиснути кнопку «Пошук!» Результати пошуку отримуємо тутже.

еще рефераты
Еще работы по информатике, программированию