Розробка автоматизованого робочого місця науково-технічної бібліотеки університету

Мета, задачі та принципи створення інформаційних систем. Бібліотечні системи на Україні. Перелік вхідних та вихідних даних, вибір СУБД, структура програмного забезпечення АРМ. Визначення трудомісткості, тривалості та витрат на розробку програми.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.11.2010
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

­ Книга - Автор (1..* - 1..*).

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

Те ж відноситься і до операцій класів. Для класів - суті основними операціями будуть стандартні операції редагування:

­ додавання

­ зміна

­ видалення

­ пов'язання з іншими класами.

Класи проектованої системи і відношення між ними приведені на рис. 1.7.

Рисунок 1.7 - Детальна діаграма класів системи

1.1.3 Постановка задачі

1.1.3.1 Компоненти проекту

Наша систем буде складатися з кількох окремих компонентів (див. рис. 1.8).

Рисунок 1.8 - Діаграма компонентів системи

База даних буде встановлена на файл-сервері організації. Сайт з ASP-страницами буде встановлений на Інтернет-сервері організації. Фізично це буде може бути й один комп'ютер - сервер організації. Програма редагування буде встановлена на декількох комп'ютерах в локальній мережі організації. Доступ до сайту для пошуку здійснюватиметься через web-браузери з будь-якого комп'ютера, підключеного до Інтернету.

1.1.3.2 Програма редагування

Програма редагування буде MDI - додаток Windows. Головне меню включатиме наступні меню:

­ Дані;

­ Перегляд;

­ Довідка.

­ Меню Дані включатиме наступні пункти:

­ Теми (книг);

­ Книги;

­ Картки (екземпляри книг);

­ Типи (клієнтів);

­ Факультети;

­ Клієнти;

­ Рухи (видача, повернення книг);

­ Надходження;

­ Списання;

­ Вихід.

По команді Клієнти буде Відкрито наступне вікно в якому можна дізнатися:

­ П.І.Б.;

­ Факультет;

­ Групу;

­ Адреса;

­ Телефон;

­ Дату народження;

­ Місце роботи або навчання

­ Дата реєстрації

­ Посада.

У цьому вікні реалізовані стандартні команди редагування (додавання, видалення, зміна) даних цього вікна. Таким чином здійснюватиметься редагування всіх даних, пов'язаних з клієнтом.

Аналогічно, через команду Книги здійснюватиметься редагування всіх даних, пов'язаних з Книгами:

­ Книга;

­ Тема книги;

­ Автори

­ Дата видання.

Команди меню Перегляд дають доступ до тих же даних в іншому вигляді, зручнішому для пошуку даних. Наприклад, команда Книги виводить список книг не з розбиттям по групах класифікатора, а в алфавітному порядку.

Класифікатор книг організований за ієрархічним принципом і дозволяє користувачеві бібліотеки вводити додаткові групи і підгрупи будь-якого рівня.

Меню Довідка містить стандартну для цього меню команду Про програму.

Для доступу до програми редагування користувач повинен буде вказати своє ім'я і пароль, заведені адміністратором бази даних.

1.1.3.3 Сайт для пошуку

Сайт для пошуку міститиме ряд ASP-страниц, організованих за ієрархічним принципом:

­ Головна сторінка електронної бібліотеки;

­ Довідник книг по бібліотеках;

­ Довідник книг.

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

1.2 Рішення з інформаційного забезпечення

1.2.1 Перелік вхідних даних

У даному проекті вхідними даними для програми редагування є дані бібліотеки:

­ Бібліотечна картка;

­ Журнал списання;

­ Журнал надходження;

­ Журнал реєстрації.

У бібліотечній картці відображається наступна інформація:

­ Назва книги;

­ Автори;

­ Видавництво і рік видання;

­ Тема;

­ Реєстраційний номер;

­ Історія видачі і повернення книги.

У журналі списання відображається наступна інформація:

­ Назва книги;

­ Автори;

­ Видавництво і рік видання;

­ Тема;

­ Реєстраційний номер;

­ Дата списання;

­ Підстава для списання.

У журналі надходження відображається наступна інформація:

­ Назва книги;

­ Автори;

­ Видавництво і рік видання;

­ Тема;

­ Реєстраційний номер;

­ Дата реєстрації;

­ Дата надходження.

У журналі реєстрації відображається наступна інформація:

­ П.І.Б.;

­ Домашня адреса;

­ Номер телефону;

­ Місце роботи або навчання.

Вхідними даними для програми пошуку є:

­ Дані для запиту.

Даними для запиту по книзі є назва або тема.

1.2.2 Перелік вихідних даних

Вихідними даними програми пошуку є база даних бібліотеки.

Формат списку наступний:

­ Назва книги;

­ Автори;

­ Видавництво і рік видання;

­ Тема;

­ Реєстраційний номер;

­ Історія видачі і повернення книги.

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

1.2.3 Вибір СУБД

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

До них відносяться:

­ відношення вартість/продуктивність;

­ надійність і відмовостійкість;

­ масштабованість;

­ сумісність і мобільність програмного забезпечення.

СУБД із розряду архітектури "клієнт-сервер" можна відразу прибрати, - в нашому завданні не потрібна дуже велика продуктивність і обробка складних запитів, і властива цим СУБД складність адміністрування.

Вибиратимемо із настільних СУБД типа Microsoft Access, Visual FoxPro або Paradox.

Розглянемо можливості Access і типи задач, які можна вирішувати за допомогою цієї СУБД. Зокрема: Access - це, перш за все, система управління базами даних (СУБД). Як і інші продукти цієї категорії, вона призначена для зберігання і пошуку даних, представлення інформації в зручному вигляді і автоматизації операцій, що часто повторюються (таких, як ведення рахунків, облік, планування і т.і.). За допомогою Access можна розробляти прості і зручні форми введення даних, а також здійснювати обробку даних і видачу складних звітів.

При всьому цьому Access - не просто СУБД. Як реляційна СУБД Access забезпечує доступ до всіх типів даних і дозволяє використовувати одночасно декілька таблиць бази даних. При цьому можна істотно спростити структуру даних, полегшуючи тим самим виконання поставлених завдань. Таблицю Access можна пов'язати з даними, що зберігаються на великій ЕОМ або на сервері. З іншого боку, можна використовувати таблиці, створені в середовищі Paradox або dBASE. Отримані результати можна швидко і легко зв'язати і об'єднати з даними з електронних таблиць Excel

У Access повною мірою реалізовано управління реляційними базами даних. Система підтримує первинні і зовнішні ключі і забезпечує цілісність даних на рівні ядра (що запобігає несумісним операціям оновлення або видалення даних). Крім того, таблиці в Access забезпечені засобами перевірки допустимості даних, що запобігають некоректному введенню незалежно від того, як він здійснюється, а кожне поле таблиці має свій формат і стандартні описи, що істотно полегшує введення даних. Access підтримує всі необхідні типи полий, зокрема текстовий, числовий, лічильник, грошовий, дата/час, MEMO, логічний, гіперпосилання і поля об'єктів OLE. Якщо в процесі спеціальної обробки в полях не опиняються ніякі значення, система забезпечує повну підтримку пустих значень.

Реляційна обробка даних в Access за рахунок гнучкої архітектури системи здатна задовольнити будь-які потреби. При цьому Access може використовуватися як автономна СУБД в режимі файл-сервера або клієнтського компоненту таких продуктів, як SQL Server. Крім того. Access підтримує протокол ODBC (Open Database Connectivity), що дозволяє підключатися до баз даних безлічі різних форматів, таких як SQL Server, Oracle, Sybase і навіть DB/2 для великих ЕОМ фірми IBM.

Система Access підтримує обробку транзакцій з гарантією їх цілісності. Крім того, передбачений захист на рівні користувача, що дозволяє контролювати доступ даним окремих користувачів і цілих груп.

І, нарешті, MS Access, на сьогоднішній день найбільш популярна настільна СУБД, по ній можна легко знайти будь-яку необхідну довідкову інформацію

Виходячи зі всього цього, вибираємо для розробки системи MS Access 2003

1.2.4 Розробка моделі даних

Логічна структура бази даних практично розроблена раніш (див. рис. 1.7. - Докладна діаграма класів системи і пункт 1.2.1 - Перелік вхідних даних). Далі слід уточнити список фізичних таблиць БД і їх структуру, спроектувати ключі таблиць і зв'язку між ними. Після виконання цієї роботи отримаємо наступну схему БД системи (див. рис. 1.9).

Рисунок 1.9 - Схема бази даних системи

База даних складається з наступних основних таблиць:

­ Book - Список книг;

­ BookSubj - Список тем;

­ Card - Список карт клієнтів;

­ CardCome - Список дат видання;

­ CardRem - Список дат повернення;

­ Client - Список клієнтів;

­ ClientStudy - Список факультетів;

­ ClientType - Список типів клієнтів;

­ Move - Список руху книг у бібліотеці.

Розглянемо структуру таблиць.

Таблиця 1.1 - Структура даних бібліотеки

Таблиця

Поле

Тип даних

Обов'язкове

Індексування

Book

Book

Integer

Так

Ключове

Title

String, 50

Так

З повтореннями

Auth

String, 50

Так

З повтореннями

Auth2

String, 50

Ні

З повтореннями

Auth3

String, 50

Ні

З повтореннями

PubDate

Date

Так

Ні

Subj

Integer

Так

З повтореннями

BookSubj

Subj

Integer

Так

Ключове

Title

String, 50

Так

Без повторень

Card

Card

Integer

Так

Ключове

Book

Integer

Так

З повтореннями

Enabled

Bool

Так

Ні

CardCome

Card

Integer

Так

Ключове

Date

Date

Так

З повтореннями

CardRem

Card

Integer

Так

Ключове

Date

Date

Так

З повтореннями

Client

Client

Integer

Так

Ключове

Name

String, 50

Так

З повтореннями

Addr

String, 50

Ні

Ні

Phone

String, 10

Ні

Ні

BirthDate

Date

Ні

Ні

RegDate

Date

Ні

Ні

Type

Integer

Так

З повтореннями

Study

Integer

Так

З повтореннями

Year

Integer

Ні

З повтореннями

Group

String, 50

Ні

З повтореннями

Work

String, 50

Ні

Ні

Post

String, 50

Ні

Ні

ClientStudy

Study

Integer

Так

Ключевое

Name

String, 50

Так

Без повторень

ClientType

Type

Integer

Так

Ключевое

Name

String, 50

Так

Без повторень

Move

Client

Integer

Так

З повтореннями

Card

Integer

Так

З повтореннями

DateOut

Date

Так

З повтореннями

DateRet

Date

Ні

Ні

1.3 Рішення з технічного забезпечення

Як платформа розробки проекту була вибрана платформа Microsoft.

Ідея Microsoft в тому, щоб перемістити центр уваги обчислювального співтовариства зі світу, що складається з різних пристроїв і Web-узлов, зв'язаних між собою через інтернет, в світ, де висока якість рішень для користувачів забезпечується спільною роботою пристроїв, служб і комп'ютерів. Основу Microsoft складають чотири базові компоненти [11]:

Building Block Services - засоби програмного доступу до таких служб, як сховище файлів (file storage), календар (calendar), служба аутентифікації "Passport ";

ПО для пристроїв, яке виконуватиметься на нових пристроях Інтернету;

засоби для роботи з користувачами, що включають природний інтерфейс (natural interface), інформаційні агенти (information agents) і інтелектуальні теги (smart tags) - технологію, яка автоматизує перехід по гіперпосиланнях до інформації, пов'язаної із словами і фразами в документах користувачів;

інфраструктура .NET, що складається з .NET Framework, Microsoft Visual Studio, Enterprise Servers і Microsoft Windows.

Framework складається з Common Language Runtime (CLR) і набору бібліотек класів .NET Framework, який іноді називають Base Class Library (BCL). CLR - це по суті віртуальна машина, в якій функціонують застосування .NET. Всі мови .NET мають в своєму розпорядженні бібліотеки класів Framework. Якщо ви знайомі з Microsoft Foundation Classes (MFC) або Object Windows Library (OWL) компанії Borland, то вам не треба пояснювати, що це таке. Бібліотеки класів Framework включають підтримку практично всіх технологій від файлового введення-виводу і обміну з БД до XML і SOAP. Взагалі бібліотеки класів Framework такі обширні, що навіть поверхневий огляд всіх підтримуваних класів зажадає окремої книги.

Common Language Runtime (CLR) - це серце технології Microsoft. Як випливає з назви, це середовище часу виконання коду, в якій забезпечується ефективна взаємодія додатків, що перетинає межі різних мов програмування (cross-language interoperability). Як досягається ця взаємодія? Common Language Specification (CLS) - це набір правив, яких повинен дотримуватися компілятор мови при створенні .NET-приложений, CLR, що запускаються в середовищі. Будь-який, хто захоче написати компілятор .NET, повинен слідувати цим правилам і - будь ласка! - додатки, що згенерували цим компілятором, працюватимуть разом з іншими .NET-прило-жениями і матимуть таку ж можливість взаємодії.

У середовищі Windows є декілька глобальних правил поведінки додатків, що відносяться до їх взаємодії один з одним, розподілу пам'яті, а також до залучення засобів самою ОС для роботи від їх імені. Навпаки, в середовищі керованого коду є набір правив, що забезпечують одноманітну в глобальному сенсі поведінку всіх застосувань незалежно від того, на якій мові вони написані. Одноманітна поведінка .NET-приложений - характерна межа технології .NET, і його не можна ігнорувати. На щастя, ці глобальні правила розповсюджуються головним чином тільки на творців компіляторів.

Бібліотеки класів .NET Framework грають надзвичайно важливу роль в забезпеченні міжмовної взаємодії додатків, оскільки вони дозволяють розробникам використовувати єдиний програмний інтерфейс до всіх функціональних засобів CLR. Якщо вам доводилося писати програми для Windows на декількох мовах, то вам сподобається це нововведення. Бібліотеки класів .NET Framework роблять фактично революційний прорив в розробці компіляторів. До .NET майже кожен автор компілятора розробляв мову, що володіє здатністю робити велику частину своєї власної роботи. Навіть C++, розроблений як набір функціональних можливостей, що працюють спільно з бібліотекою класів, має деякі засоби для власних потреб. Тоді як роль мов в оточенні .NET не вичерпується наданням синтаксичних інтерфейсів до бібліотек класів .NET Framework.

Найважливіший аспект будь-якого середовища розробки розподілених застосувань - спосіб забезпечення безпеки. Завдяки тим з нас, хто довго скаржився, що ніхто серйозно не розглядатиме Microsoft відносно серверних рішень для підприємств, поки вона повністю не відновить підхід до безпеки, в .NET з'явилося відразу декілька нових концепцій. Робота системи безпеки починається з того моменту, коли CLR завантажує клас, оскільки завантажувач класів є частиною системи безпеки .NET. Так, при завантаженні класу в .NET під час виконання перевіряються правила доступу і його внутрішня цілісність. Крім того, в ході такої перевірки з'ясовується, яка частина коду має належні дозволи на доступ до певних ресурсів. Система безпеки гарантує перевірку наказаних ролей і ідентифікаційних даних. Щоб не піддавати ризику найбільш відповідальні дані в розподілених обчислювальних середовищах, ці перевірки безпеки не обмежуються рамками окремих процесів і машин.

Розгортання - найбільш неприємна процедура розробки крупних розподілених систем. Будь-який розробник Windows-программ може сказати, що, зіткнувшись з масою різноманітних двійкових файлів, проблемами реєстру Windows, компонентами СОМ, установкою бібліотек підтримки таких продуктів, як Open Database Connectivity (ODBC) і Data Access Objects (DAO), ви міцно задумаєтеся, а чи правильно ви вибрали рід занять. Слава богу, розгортання - це та частина .NET, над якою проектувальники добре потрудилися.

Ключ до розгортання .NET-приложений - концепція складок (assemblies). Збіркою називають пакет з семантично близьких об'єктів, що складається з одного або декількох файлів. Особливості розгортання залежать від того, що ви розробляєте: Web-серверное застосування або персональне застосування для Windows. Проте з введенням збірки як повністю інкапсульованого набору функціональних можливостей розгортання зводиться до простого копіювання потрібних складок в місце призначення.

Маса проблем, що мучили програмістів до появи .NET Framework, тепер усунено. Тепер, наприклад, не треба реєструвати компоненти (як це вимагають СОМ і елементи управління ACTIVEX), оскільки завдяки метаданим і віддзеркаленню всі компоненти містять в собі власний опис. Під час виконання .NET відстежує також роботу з файлами і версії файлів, пов'язаних з додатком. Тому будь-яке встановлюване застосування, автоматично зв'язується з файлами, що є частиною його збірки. Якщо програма установки спробує перезаписати файл, необхідний іншому застосуванню .NET поступить достатньо розумно, дозволивши встановити потрібні файли, не видаливши при цьому попередні версії файлу, оскільки вони ще потрібні іншому застосуванню.

Для роботи .NET - застосування на комп'ютері має бути встановлене середовище .NET Framework.

Мінімальні характеристики комп'ютера необхідного для комфортної роботи програми в операційній системі Windows XP:

­ процесор Intel Pentium/amd Athlon 2000 Гц;

­ ОЗУ 512 Мб;

­ Вінчестер 100 Гб.

Але оскільки нам потрібна нормальна робота Інтернет-сервера і Microsoft SQL Server на нашому комп'ютері, то конфігурація має бути значно посилена:

­ процесор не менше 3000 Гц;

­ ОЗУ не менше 1 Гб;

­ вінчестер не менше 200 Гб.

1.4 Рішення з математичного забезпечення

1.4.1 Пошук у тексті

У нашому проекті для повноцінного пошуку використовуються засоби текстового пошуку. В даний час такі засоби посилено розвиваються. До складу Microsoft SQL Server 2005 навіть включений новий для СУБД спеціальний компонент Full-text Search (повнотекстовий пошук).

Одним з наймогутніших інструментів пошуку в текстах є регулярні вирази.

Регулярні вирази підтримуються багатьма програмами (редакторами, системними утилітами, ядрами баз даних і так далі), але їх можливості повною мірою виявляються в мовах програмування, зокрема Java, Jscript, Visual Basic, Vbscript, Javascript, C, C++, C#, elisp, Perl, Python, Ruby, PHP, awk і тому подібне Регулярні вирази займають центральне місце в багатьох програмах, написаних на цих мовах.

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

За допомогою регулярних виразів ви можете проводити пошук, заміну підрядків, використовуючи шаблони. Вони складаються із звичайних символів і так званих метасимволів (metacharacters) - символів, що управляють. Список метасимволів достатньо обширний. Нижче приведені найбільш часто використовувані символи:

­ * - сооветствуєт виразу, що знаходиться до знаку "*", узятому нуль або більше разів. Наприклад, шаблон "[0-9]*" визначає рядок, що містить нуль або більш за цифри;

­ - призначений для визначення символу, що є метасимволом. Наприклад, шаблон "." відповідає будь-якому символу, а шаблон "\." відповідатиме крапці;

­ ^ - визначає початок вхідного рядка;

­ $ - визначає кінець вхідного рядка;

­ + - відповідає виразу, що знаходиться до знаку "+", узятому один або більше разів. Наприклад, шаблон "[0-9]+" визначає рядок, що містить одну або більш за цифри;

­ . - визначає будь-який символ окрім символу перекладу рядка;

­ | - розділяє два вирази. Наприклад, шаблону "a|b" відповідатимуть рядки "a" і "b";

­ [a-z] - визначає діапазон символів. Наприклад, шаблон "[0-9]" визначає цифру;

­ [^.] - визначає будь-який символ, не відповідний заданому набору. Наприклад, шаблон "[^0-9]" визначає будь-який символ, окрім цифри;

­ w - слово. Те ж, що і [a-za-z_0-9];

­ W - все, окрім слів. Те ж, що і [^a-zA-Z_0-9];

­ s - будь-яке порожнє місце. Те ж, що і [ \f\n\r\t\v];

­ |S - будь-яке непорожнє місце. Те ж, що і [^ \f\n\r\t\v];

­ d - десяткова цифра. Те ж, що і [0-9];

­ D - не цифра. Те ж, що і [^0-9].

Ось простий приклад регулярного виразу - шаблон номера телефону.

^(\(\d+\)){0,1}d{3}-\d{2}-\d{2}$

Цей вираз може показатися складним, хоча насправді все досить просто:

­ ^ - цей символ указує, що тут починається шуканий рядок;

­ (- код міста розташовується усередині дужок;

­ ( - відкриваюча дужка;

­ d+ - після дужки повинні розташовуватися код міста - одна або декілька цифр;

­ ) - Закриваюча дужка;

­ ) - Закриваюча дужка - метасимвол, вказуючий, що тут закінчується групований вираз (в даному випадку, код міста);

­ 0,1} - Цей метасимвол указує, що вираз в дужках (код міста) може повторюватися від нуля до одного разу, тобто код міста можна не указувати;

­ d{3}-\d{2}-\d{2} - Три групи цифр - одна група по три і дві по дві цифри. Цифри розділені дефісами;

­ $ - Цей знак показує, що тут закінчується підрядок.

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

Розглянемо деякі алгоритми пошуку заданого слова (підрядки) в рядку.

Відмітимо, що дане завдання не зводиться тільки до обробки текстів. Це, наприклад, і пошук даного ланцюжка нуклеотідов в молекулі ДНК, і пошук заданої послідовності дій в реалізації алгоритму. У загальному випадку, кажучи формально, завдання пошуку підрядків (string-matching problem) полягає в наступному [12].

Хай дані «текст» - масив T[1..n] довжини n і «зразок» - масив P[1..m] довжини m. Ми вважаємо, що елементи масивів P і T - символи деякого кінцевого алфавіту Ќ (наприклад Ќ = {0,1} або Ќ = {а, b ., z}). Масиви, що складаються з символів алфавіту Ќ, часто називають рядками символів, або словами в цьому алфавіті.

Говоритимемо, що зразок P входить із зрушенням s, або, еквівалентно, входить з позиції s + 1 в текст T, якщо 0 <= s <= n - m і T[s + 1..s + m]= P[1..m] (іншими словами, якщо T[s + j]= P[j] при 1 <= j <= m). Якщо P входить із зрушенням s в текст T, то говорять, що s - допустиме зрушення, інакше s - неприпустиме зрушення. Завдання пошуку підрядків полягає в знаходженні всіх допустимих зрушень для даних тексту T і зразка P.

1.4.2 Обозначення та терміни

Через Ќ* позначається множина всіх кінцевих рядків над алфавітом Ќ, включаючи порожню рядок, що має нульову довжину і е, що позначається. Довжина рядка x позначається |x| . З'єднання, або конкатенація рядків x і у виходить, якщо виписати рядок x, а за нею - рядок у. Конкатенація рядків x і у позначається xy; очевидно |xy| = |x|+|y|.

Говоритимемо, що рядок w - префікс, або початок рядка x, якщо x = wy для деякого у € Ќ*. Говоритимемо, що рядок w - суфікс, або кінець рядка x, якщо x = yw для деякого у € Ќ*. Писатимемо w [ x, якщо w - префікс x, і w ] x, якщо w - суфікс x. Наприклад, ab [ abcca і cca ] abcca.

Порожній рядок є префіксом і суфіксом будь-якого рядка; якщо w - префікс або суфікс x, то |w| <= |x|. Для будь-яких рядків x і у і для будь-якого символу а співвідношення x ] у і ха ] уа рівносильні; стосунки ] і [ транзитивні.

Хай x, у і z - рядки, для яких x ] z і x [ z. Тоді x ] у, якщо |x| <= |y|; у ] x, якщо |x| >= |y|, і x = у, якщо |x| = |y|.

Якщо S[1..r] - рядок довжини r, то його префікс довжини до <= r позначатиметься Sk = S[1..k] (зокрема, S0 = е і Sr = S). У цих позначеннях завдання про знаходження зразка P довжини m в тексті T довжини n полягає в знаходженні всіх таких s з проміжку 0 <= s <= n - m, що P ] Ts+m.

1.4.3 Аналіз алгоритму текстового пошуку

Найпростіший алгоритм пошуку зразка P в тексті T послідовно перевіряє рівність P[1..m]= T[s + 1..s + m] для всіх n - m + 1 можливих значень s:

for s = 0 to n - m

if P[1..m]= T[s+1..s+m]

then print «рядок входить із зрушенням» s

Можна сказати, що ми рухаємо зразок уздовж тексту і перевіряємо всі його положення. Відзначимо, що перевірка рівності рядків (P[1..m]= T[s+1..s+m]) є ще одним внутрішнім циклом.

Час роботи приведеної процедури пошуку у гіршому разі є І((n - m + 1)m). Насправді, хай T = an (буква а, повторена n разів), а P = am. Тоді для кожної з n - m + 1 перевірок буде виконано m порівнянь символів, всього (n - m + 1)m, що є І(n2) (при m = n / 2).

Простий алгоритм - не кращий. Неефективність пов'язана з тим, що інформація про текст T, що отримується при перевірці даного зрушення s, ніяк не використовується при перевірці подальших зрушень. Тим часом, така інформація може дуже допомогти. Хай, наприклад, P = aaab і ми з'ясували, що зрушення s = 0 допустимий. Тоді зрушення 1, 2 і 3 свідомо недопустимі, оскільки T[4]= b.

1.4.4 Швидкий алгоритм текстового пошуку

Цей алгоритм, запропонований Кнутом, Морісом і Праттом, працює за час І(n + m). Таке прискорення досягається за рахунок того, що при подальшому пошуку заздалегідь обчислюється спеціальна «префікс-функція» на основі вже відомої інформації.

Префікс-функція, асоційована із зразком P, несе інформацію про те, де в рядку P повторно зустрічаються різні префікси цього рядка. Використання цієї інформації дозволяє уникнути перевірки свідомо неприпустимих зрушень.

Хай простий алгоритм шукає входження підрядка P = ababaca в текст T. Припустимо, що для деякого зрушення s виявилось, що q перших символів зразків збігаються з символами тексту, а в наступному символі є розбіжність, де q = 5). Отже, ми знаємо q символів тексту, від T[s+1] до T[s+q], і з цієї інформації можна укласти, що деякі подальші зрушення будуть свідомо недопустимі.

У загальному випадку префікс-функція повинна відповісти на таке питання:

Хай P[1..q]= T[s + 1..s + q]; яке найменше значення зрушення s` > s, для якого

P[1..k]= T[s` + 1..s` + до](1.1)

де s` + до = s + q.

Число s` - це найменше значення зрушення, більше s, яке не можна відкинути. Щоб знайти s`, нам не потрібно нічого знати про текст T, достатньо знання зразка P і числа q. Саме, T[s` + 1..s` + до] - суфікс рядка Pq. Тому число до у формулі (1.1) - це найбільше число до < q, для якого Pk є суфіксом Pq. Само значення s` обчислюється за формулою s` = s + (q - до).

Префікс-функцией, що асоціюється з рядком P[1..m], називається функція f:{1,2., m} Ќ {0,1., m - 1}, визначена таким чином:

f[q]= max{k:k < q Pk ] Pq}.(1.2)

Іншими словами, f[q] - довжина найбільшого префікса P, що є (власним) суфіксом Pq. Приведемо псевдокод алгоритму Кнута - Моріса - Пратта.

n = length(T)

m = length(P)

q = 0

for i = 1 to n

while q > 0 and P[q+1]< > T[i]

q = pf[q]

if P[q+1]=T[i]

then q = q+1

if q=m

then print «рядок входить із зрушенням» i-m

q = pf(q)

m = length[P]

pi[1]= 0

до = 0

for q = 2 to m

while до > 0 and P[k+1]< > P[q]

до = pi[k]

if P[k+1]=P[q]

then до = k+1

pi[q]= до

return pi

Час виконання префікс - функції пропорційно довжині рядка m і, отже, є O(m). Аналогічно, час виконання операторів процедури пошуку пропорційно довжині підрядка і є O(n). Отже, загальний час виконання приведеного алгоритму є O(m+n), що дає значний виграш в порівнянні з простий процедурою пошуку.

Проаналізувавши два методи пошуку були виявлені як позитивні так і негативні сторони. Для даної роботи необхідний пошукач який працює з невеликим часом і частковим текстом (див. рис. 1.10)

Рисунок 1.10 - Схема роботи програми пошука

1.4.5 Регулярні вирази у VB.NET

Для роботи з регулярними виразами в VB.NET використовується клас Regex, що знаходиться в просторі імен System.Text.RegularExpressions. За допомогою цього класу ви можете проводити наступні дії:

­ пошук підрядків за шаблоном;

­ заміна підрядків за шаблоном;

­ порівняння рядка з шаблоном;

­ розділення рядка на підрядки з використанням шаблонів.

Для твору дій з регулярними виразами необхідно створити екземпляр класу Regex. Для цього використовується стандартний конструктор New. Він переобтяжений і має дві комбінації параметрів. Ви можете задати тільки шаблон (змінна типу String), який використовуватиметься надалі, або шаблон і параметри об'єкту. Параметри задаються константами з перерахування Regexoptions.

Пошук підрядків, відповідних шаблону проводиться за допомогою переобтяженого методу Matches. Він може приймати 4 комбінації параметрів. Перший параметр - рядок, в якому проводитиметься пошук. Як другий параметр можна встановити позицію, з якою буде початий пошук. Також другим параметром можна вказати шаблон (якщо він не збігається з шаблоном, вказаним в конструкторі при створенні об'єкту). І остання комбінація параметрів - рядок для пошуку, шаблон і параметри пошуку, задані комбінацією констант перерахування Regexoptions.

Метод повертає об'єкт Matchcollection. Це колекція, яка містить об'єкти Match. Отримати об'єкт Match можна за допомогою індексованої властивості Item колекції. Нумерація елементів починається з нуля. Щоб отримати знайдений підрядок, слід використовувати властивість Value об'єкту Macth.

Нижче приведений невеликий приклад пошуку тегів в HTML коді.

Dim regexp As New Regex("<(.*?) >")

Dim html As String

Dim i As Integer

Dim m As Matchcollection

html = "<p>ето <а href='http://vbnet.ru'>пример</a> <b>поїська</b></p>"

m = regexp.Matches(html)

For i = 0 To m.Count - 1

Msgbox(m.Item(i).Value)

Next

Інша часто використовувана дія, вироблювана за допомогою класу Regex, - заміна підрядків з використанням шаблонів. Для заміни використовується метод Replace. Він, як і метод Matches, переобтяжений. Replace може приймати 10 комбінацій параметрів. Метод може приймати комбінації з наступних параметрів:

­ input - початковий рядок;

­ replacement - рядок, на який будуть замінені знайдені підрядки;

­ count - максимальна кількість замін;

­ startat - позиція в рядку input, з якою проводитиметься заміна;

­ pattern - замінюваний шаблон;

­ options - опції. Може приймати константи з перерахування Regexoptions;

­ evaluator - об'єкт Matchevaluator.

Метод повертає змінну типу String - рядок, в якому були вироблені заміни.

Dim regexp As New System.Text.RegularExpressions.Regex("<(.*?) >")

Dim Inputstring As String

Inputstring = "p>ето <а href='http://vbnet.ru'>пример</a> <b>pfvtys</b></p>"

txttext.Text = regexp.Replace(txttext.Text, "[вирізаний]", Regexoptions.Multiline)

Порівняння рядка з шаблоном - найпростіша операція, яку можна провести за допомогою класу Regex. Порівняння здійснюється методом Ismatch. Він переобтяжений і може приймати такі ж параметри, як і метод Matches. Значення, що повертається, має тип Boolean. Метод повертає True, якщо тестований рядок збігається з шаблоном і False інакше.Нижче приведений приклад порівняння рядка з шаблоном.

Dim regexp As New System.Text.RegularExpressions.RegEx ("[0-9]+")

Dim str As String

str = "1234567890"

Msgbox (regexp.IsMatch(str).ToString)

str = "abc"

Msgbox (regexp.IsMatch(str).ToString)

Розділення рядка використовується рідше за решту операцій. Розділення рядка з використанням регулярних виразів дуже схоже із звичайним розділенням рядка функцією Split. Але якщо в Split як роздільник використовувався рядок, то тут роздільником є регулярний вираз.

Для розділення рядка використовується переобтяжений метод Split класу Regex. Він може приймати такі ж комбінації параметрів, як і методи Matches і Ismatch. Split повертає масив типу String, який містить рядки, отримані з початкового рядка. Масив індексується з нуля.

Допустимо, потрібно розбити рядок по декількох роздільниках (скажімо, "-", "." і ","). Можна використовувати для цього функцію Split, але при цьому буде багато метушні з масивами, код буде сильно захаращений і знизиться швидкодія. А зараз подивимося, як легко ця операція буде проведена з використанням регулярних виразів. Роздільником буде наступний вираз: "[-\.,]". Наступний код розбиває рядок на підрядки з використанням цього шаблону.

Dim regexp As New Regex("[-\.,]")

Dim i As Integer

Dim s() As String

Dim str As String

str = "раз-два,трі.четире,пять"

s = regexp.Split(str)

For i = 0 To s.GetUpperBound(0)

Console.WriteLine(s(i))

Next

За умовчанням Regex компілює регулярні вирази в послідовність внутрішніх байт-кодов регулярних виразів (це високорівневий код). При виконанні регулярних виразів відбувається інтерпретація байт-кода.

Якщо при створенні об'єкту Regex в конструкторі New була встановлена константа Compiled, то Regex буде скомпільований в MSIL (Microsoft intermediate language). Це дозволить JIT-компилятору перетворити вираз в машинний код, що значно підвищує продуктивність.

Проте у виразах, що компілюють, є і погана сторона - їх не можна вивантажити з пам'яті. Регулярні вирази, що компілюють, вивантажуються тільки при завершенні роботи всього застосування. Regex залишається в пам'яті, навіть коли сам об'єкт звільнений і знищений складальником сміття.

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

Регулярні вирази - могутня технологія для роботи з текстом. Розробники Microsoft все-таки вбудували підтримку цієї технології в .NET Framework. Можливо, вони зробили це тому що .NET Framework використовується в Web-застосуваннях (ASP .NET), де регулярні вирази більше всього необхідні.

1.5 Опис програмного забезпечення

1.5.1 Структура програмного забезпечення АРМ

Програмна частина нашого проекту достатньо проста. Проте, вона складається з двох частин:

­ настільне застосування для редагування бази даних електронної бібліотеки;

­ WEB - сайт - для здійснення пошуку книг.

Ці дві частини складають собою одне рішення (solution). Склад рішення приведений на рис. 1.11.

Додаток для редагування БД складається з наступних модулів:

­ frmMain.vb - головна форма MDI - застосування;

­ frmBook- форма зберігає інформацію про книги;

­ frmBookSub - форма з кодами всіх тим;

­ frmClient - форма з інформацією про клієнта;

­ frmClientStudy - форма з кодами всіх факультетів;

­ frmClientType - форма з кодами типів клієнтів;

­ frmAbout.vb - форма Про програму.

Рисунок 1.11 - Структура VB-проекта

WEB - сайт пошуку телефонних номерів складається з наступних модулів:

­ Default.aspx - стартова сторінка сайту;

­ BookHome.aspx - сторінка пошуку книг;

­ BookBibl.aspx - сторінка пошуку книги по бібліотеках.

1.5.2 Опис модулів і класів системи редагування

Mainform.vb - MDI - форма додатку, стартова форма. При її запуску з'являється форма входу в систему. Якщо користувач не ввів правильне ім'я і пароль, головна форма не завантажується.

Форма містить меню і панель інструментів. По командах меню завантажуються дочірні форми, в яких ведеться редагування окремих таблиць бази даних. По натисненню кнопок на панелі інструментів здійснюються команди редагування даних. Методи головної форми приведені на рис. 1.12.

Рисунок 1.12 - Методы головної форми

Методи Mainform включають:

­ frmMainLoad - обробка завантаження програми;

­ LoadSubForm(Of frmtype) - процедура завантаження вказаної дочірньої форми;

­ btnAdd_Click - виклик процедури почала додавання даних в активній дочірній формі;

­ btnDelete_Click - виклик процедури видалення даних в активній дочірній формі;

­ btnEdit_Click - виклик процедури редагування даних;

­ btnOk_Click - виклик процедури завершення додавання або редагування даних в активній дочірній формі;

­ btnCancel_Click - виклик процедури відміни додавання або редагування даних в активній дочірній формі;

­ Головний модуль Mainmodule.vb містить глобальні дані програми, використовувані у всіх модулях дочірніх вікон:

­ ConnString - рядок з'єднання з БД;

­ frmMain - посилання на головну форму.

Всі модулі дочірніх форм мають однакове призначення - редагування даних відповідних таблиць БД. Тому вони мають однакову структуру і практично однаковий набір елементів.

На рис. 1.13 приведена структура модуля форми Книги (frmbook)

Рисунок 1.13 - Поля, методы и типи форми книг

Змінні рівня модуля: тексти запитів, стан форми.

Змінна стану форми може приймати одне з трьох значень:

-stateView - перегляд;

-stateEdit - редагування;

-stateAdd - додавання запису.

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

-видалення запису;

-перехід в режим редагування;

-перехід в режим додавання.

При видаленні запису програма вимагає підтвердження особи: логін і пароль. Якщо логін і пароль введений вірно програма вимагає підтвердження видалення. Якщо користувач підтверджує видалення, виконується SQL - запит видалення вказаного запису в БД, запис також віддаляється із списку і курсор переходить на наступний запис.

При переході в режим редагування змінна стану форми встановлюється в значення Редагування. При переході в режим додавання змінна стану встановлюється в значення Додавання.

Після введення або зміни даних користувач може натиснути на одну з кнопок на панелі інструментів (OK або Відміна) і тим самим занести нові дані в базу даних або відмінити всі зміни на формі. У разі додавання або зміни виконується відповідний SQL - запит (INSERT або UPDATE) і зміни відображаються в списку. У будь-якому випадку курсор повертається на список і стан форми встановлюється в значення Перегляд.

Далі форма чекає подальших дій користувача - натиснення відповідної кнопки на панелі інструментів.

Оброблювані події форми Strform:

-StrForm_Load - завантаження форми. Завантажується список всіх книг, ініціалізувалися змінні;

-Lvw_ItemSelectionChanged - переміщення курсора в списку. У полях форми виводяться значення полів нового поточного запису;

-Lvw_MouseDoubleClick - подвійне клацання на назві книги. Завантажується форма книги із списком.

-Методи форми Strform:

-InitData - заповнення списку книги, ініціалізація змінних форми. Викликається при завантаженні форми;

-FillItem - заповнення полів форми даними з БД. Викликається при завантаженні форми і при переміщенні курсора в списку;

-ClearItem - очищення полів форми для додавання новому запису. Викликається при переході в режим додавання запису;

-BeginAddEdit - переклад форми в режим додавання або редагування. Метод викликається головною MDI - формою при натисненні на кнопки Додати або Редагувати на панелі інструментів, коли дочірня форма книги активна;

-DeleteItem - видалення запису. Метод викликається головною MDI - формою при натисненні на кнопку Видалити на панелі інструментів, коли дочірня форма Вулиці активна;

-CompleteEdit - завершення редагування. Залежно від стану форми виконується метод Updateitem або Additem. Метод викликається головною MDI - формою при натисненні на кнопку OK на панелі інструментів, коли дочірня форма книги активна;

-CancelEdit - відміна редагування. Курсор повертається на список, значення полів форми відновлюються на підставі запиту поточного запису БД. Метод викликається головною MDI - формою при натисненні на кнопку Відміна на панелі інструментів, коли дочірня форма Вулиці активна;

-AddItem - додавання новому запису. Виконується SQL - запит вставки запису (INSERT) із значеннями полів, введеними в полях форми. Додається рядок в списку вулиць, цей рядок стає поточним, форма переходить в режим перегляду;

-UpdateItem - зміна запису. Виконується SQL - запит оновлення запису (UPDATE) із значеннями полів, введеними в полях форми. Змінюється рядок в списку книги, цей рядок стає поточним, форма переходить в режим перегляду;

-EnableItem - переклад форми в режим додавання або редагування;

-ViewList - переклад форми в режим перегляду.

Структура модулів інших дочірніх форм аналогічна структурі описаної вище форми Strform. З форми Історія видачі і повернення книг викликається форма журнал реєстрації даної людини який останній брав книгу.

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

1.5.3 Модулі програми пошуку

Стартова сторінка є ASP - сторінкою, на якій просто розташовано посилання на сторінку пошуку книг по назві.

На сторінці пошуку книги по назві розташовано поле для введення назви книги і кнопку Знайти. Після введення даних і натиснення на кнопку програма аналізує введені дані після чого знайдені дані виводяться на сторінці в списку книги.

Змінні сторінки:

-SqlFullName - текст запиту по повній назві книги.

Оброблювані події сторінки:

-завантаження форми;

-натиснення на кнопку Знайти;

-перезавантаження даних на сторінці.

Методи сторінки:

-Page_Load - обробка завантаження сторінки. Ініціалізація змінних і елементів управління;

-btnRun_Click - обробка натиснення на кнопку Знайти. Аналіз введених даних, формування і виконання запиту;

grvphonehome_databound - перевірка даних, вибраних за запитом. Формування повідомлення «Не знайдене!» у разі порожньої вибірки.

2 ТЕХНОЛОГІЧНИЙ РОЗДІЛ

2.1 Керівництво користувача

2.1.1 Головна форма програми введення та редагування

Головна форма програми електронної бібліотеки Bookapp.exe приведена на рис. 2.1

Рисунок 2.1 - Головна форма програми електронної бібліотеки

Головна форма є MDI - форму з меню.

Перед завантаженням головної форми з'являється форма входу в програму (див. рис. 2.2).

У цій формі користувач повинен ввести своє ім'я і пароль входу в програму. Якщо користувач три рази вводить невірне ім'я або пароль, головна форма програми не завантажується.

Рисунок 2.2 - Форма входу в програму редагування

По командах меню головної форми виконуються наступні дії:

-Видача - завантажується дочірня форма Клієнти, з якої можна вибрати клієнта і всі його дані ;

-Книги - завантажується дочірня форма Книги в якій описана назва книги, автори, дата видання;

-Теми книг - завантажується дочірня форма Теми книг в якій оброблюється тема книг і код цієї теми;

-Клієнти - завантажується дочірня форма Клієнти в яку заносяться всі дані клієнта, Ф.І.О., Адреса, Телефон, Тип, Дата народження, Дата реєстрації, Місце роботи і посада або якщо Студент те Групу Факультет, Курс;

-Факультети - завантажується дочірня форма Факультетів в якій Найменування факультету і його код;

-Тип клієнтів - завантажується дочірня форма Типу клієнтів в якій Найменування клієнтів і код

-Вихід - програма завершує свою роботу;

-Про програму - завантажується стандартний діалог Про програму.

2.1.2 Форма Клієнти

Дочірня форма для перегляду і редагування списку клієнтів приведена на рис. 2.3.

Рисунок 2.3 - Форма для редагування даних про клієнтів

Форма дозволяє додавати нових клієнтів, видаляти із списку,та редагувати.

Для додавання нового клієнта потрібно зробити форму активною (клацнувши на формі Клієнт) і потім натиснути кнопку Додати на панелі інструментів головної форми. При цьому поля форми очищаються і курсор переміщається на полі П.І.Б.

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

Для видалення клієнта із списку потрібно зробити форму активною і потім натиснути кнопку Видалити на панелі інструментів головної форми. При цьому програма просить підтвердити видалення.

2.1.3 Форма Книги

Дочірня форма для перегляду і редагування списку книг приведена на рис. 2.4.

Форма дозволяє додавати нові книги, видаляти ті, що існують, із списку, редагувати дані про книги. Виконання цих операцій аналогічно описаному в 2.1.2.

Рисунок 2.4 - Форма для редагування даних про книги

2.1.4 Інші форма програми редагування

Дочірня форма для проглядання тем і їх створення приведена на рис. 2.5.

Рисунок 2.5 - Форма для редагування даних про теми книг

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

Дочірня форма для перегляду і редагуванню клієнта приведена на рис. 2.6.

Рисунок 2.6 - Форма для редагування даних про клієнтів

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

Дочірня форма для перегляду і створення списку Факультетів приведена на рис. 2.7.

Рисунок 2.7 - Форма для редагування даних про факультети

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

2.1.5 Програма пошука

Стартова сторінка сайта пошуку інформаціїї в бібліотеці приведена на рис. 2.8

На стартовій сторінці розташовані посилання на сторінки пошуку книг різними способами.

.

Рисунок 2.8 - Стартова сторінка сайта пошуку

Сторінка пошуку книг приведена на рис. 2.9.

Рисунок 2.9 - Сторінка пошуку книг за назвою

У поля введення потрібно ввести назву книги (можна тільки початок). Після натиснення на кнопку Знайти виводиться список знайдених книг з авторами і роком видання або виводиться повідомлення «Не знайдено!»

Сторінка пошуку книг по бібліотеках приведена на рис. 2.10.

У поля введення потрібно ввести назву книги (можна тільки початок. Після натиснення на кнопку Знайти виводиться список знайдених книг в бібліотеках або виводиться повідомлення «Не знайдено!»

Рисунок 2.10 - Сторінка пошуку книг за бібліотеками

Проект складається з двох частин: бази даних яка зберігається на сервері бібліотеки і сайт для пошуку засобами Internet (або Intranet). Розробка показала, що інструменти Microsoft Visual Studio дуже зручні для розробки обох класів застосувань. Особливо зручні ці інструменти для розробки Інтернет-застосувань. Така розробка в середовищі Microsoft Visual Studio .NET абсолютно аналогічна розробці настільних застосувань, тому, програмісти, що мають досвід розробки на Visual Basic 6, можуть легко перейти до нових для себе завдань.

3 ТЕХНІКО-ЕКОНОМІЧНИЙ РОЗДІЛ

3.1 Загальні положення

В результаті застосування нового ПС користувач може понести значні капітальні витрати на придбання і освоєння ПС, доукомплектованія ЕОМ новими технічними засобами і поповнення оборотних коштів. Проте, якщо придбане ПС буде достатньою мірою ефективніший базового, то додаткові капітальні витрати швидко окупляться. Ефект може бути досягнутий за рахунок скорочення об'єму ПС (зменшення кількості машинних команд, кількості рядків і так далі), зниження трудомісткості підготовки даних, обробки інформації, аналізу результатів, зменшення витрат машинного часу і матеріалів.

Для визначення економічного ефекту від використання нового ПС у споживача необхідно порівняти витрати по всіх основних статтях кошторису витрат на експлуатацію нового ПС (витрати на заробітну плату з нарахуваннями, матеріали, машинний час) з витратами по відповідних статтях базового варіанту. При порівнянні базового і нового варіантів як економічний ефект виступатиме загальна економія всіх видів ресурсів щодо базового варіанту. При цьому створення нового ПС виявиться економічно доцільним лише в тому випадку, якщо всі капітальні витрати окупляться за рахунок отримуваної економії в найближчих 1-2 року.

Абсолютна величина економічного ефекту без співставлення з витратами на його отримання не дозволяє однозначно оцінити, наскільки вдалим виявився відповідний іноваційний проект. Таку оцінку дають показники економічної ефективності (прибутковості) проекту.

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

Зміст техніко-економічного обгрунтування розробки програмного продукту полягає в наступному:

­ розрахунок трудомісткості та тривалості розробки;

­ визначення величини капітальних витрат розробника та максимальної ціни продажу програмного продукту;

­ розрахунок поточних витрат реалізації та мінімальної ціни продажу;

­ розрахунок річної економії споживача програмного продукту та остаточне встановлення ціни продажу програмного продукту;

­ визначення показників економічної ефективності проекту.

В даному проекті розроблено програмний продукт, що має наступні переваги перед аналогами:

­ зменшується час рішення одної задачі в середньому з 10 до 3 год/од.

3.2 Вихідні дані для розрахунку

Вихідні дані для розрахунку економічної ефективності проекту наведено в таблиці 3.1.

Таблиця 3.1 - Вихідні дані для розрахунку ефективності

Позначення

Найменування показника

Значення

Вм

Вартість ПЕОМ, грн

6000

Тсл

Плановий строк служби ПЕОМ, років

4

Nп

Кількість розроблюваних проектів, од./рік

4

Зо

Посадовий оклад інженера-програміста, грн/міс

1700

Кд

Коефіціент додаткової заробітної плати

0,3

Кс

Коефіціент відрахувань до страхових фондів

0,369

Кн

Коефіціент накладних витрат організації

0,4

Рн

Норматив рентабельності організації-розробника

0,35

Ппдв

Ставка податку на додану вартість, %

20

Пп

Потенційна ємність ринку для нової програми, од.

100

На

Норма амортизації, %

25

Вт

Витрати на тиражування програми, грн/од.

25

Ка

Коефіціент витрат на адаптацію програми, грн/од.

0,08

П1

Плановий обсяг продажу програми в 1-му році, од.

15

П2

Плановий обсяг продажу в 2-му році, од.

30

П3

Плановий обсяг продажу в 3-му році, од.

15

Пс

Середній плановий річний обсяг продажу, од.

20

Цб

Ціна продажу базової програми-аналога, грн

1000

Кількість задач, що вирішуються протягом року, од.

30

tзб

Витрати машинного часу на вирішення задачі базовою програмою, годин/од.

12

tзн

Витрати машинного часу на вирішення задачі новою програмою, годин/од.

3

Ен

Нормативний коефіціент ефективності

0,2

Де

Доля ефекту споживача - добавка до ціни

0,25

Тпр

Термін реалізації проекту, років

2

3.3 Визначення трудомісткості та тривалості розробки програми

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

,(3.1)

де Т - суммарні трудовитрати;

Nр - кількість виконавців.

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

Трудозатрати по окремих етапах всіх видів визначені за допомогою експертої оцінки. Розрахунок трудозатрат зведено до таблиці 3.2.

Таблиця 3.2 - Розрахунок трудових затрат

Етапи робіт

Позначення

Трудо-витрати (чол-дн)

Вивчення предметної області та формулювання постановки задачі

Тпз

5

Розробка алгоритму рішення задачі

Та

3

Складання схеми програми

Тс

4

Розробка програми

Тп

15

Налагодження програми

Те

5

Оформлення документації

Тд

3

РАЗОМ

30

Розробку програми виконує один інженер-програміст. Отже, тривалість розробки складає 30 робочих днів. З урахуванням середньої кількості робочих днів у місяці ( 22 дні ) тривалість розробки складе:

Тр = 30 / 22 = 1,37 (міс)

3.4 Розрахунок витрат на розробку програми

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

Таблиця 3.3 - Кошторис витрат на проектування

Найменування статей витрат

Сума, грн.

Обгрунтування

Спеціальне обладнання

513,75

з розрахунку

Розходні матеріали

154,13

30% ст.1


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.