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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 25.10.2012
Размер файла 891,7 K

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

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

Імена таблиць і полів (стовпців) полягають в одиночні чи подвійні апострофи, наприклад, "First Name". Якщо ім'я не містить пробілів і інших спеціальних символів, то апострофи можна не вказувати.

У SQL-запиті допускаються коментарі, що пояснюють текст програми. Коментар обмежується символами /* і */.

Функції мови SQL

Мова SQL, як і інші мови, надає для використання ряд функцій, з яких найбільш уживані наступні:

Агрегатні чи статистичні функції:

AVG () - середнє значення;

МАХ () - максимальне значення;

MIN () - мінімальне значення;

SUM () - сума;

COUNT () - кількість значень;

COUNT (*) - кількість ненульових значень.

Функції роботи з рядками:

UPPER (Str) - перетворення символів рядка Str до верхнього регістра;

LOWER (Str) - перетворення символів рядка Str до нижнього регістра;

TRIM (Str) - видалення пробілів на початку і наприкінці рядка Str;

SUBSTRING (Str FROM n1 to n2) - виділення з рядка str підрядка, що містить у собі символи, починаючи з номера (позиції) n1 і закінчуючи номером n2;

CAST (<Expression> AS <Type>) - приведення виразу Expression до типу Type;

|| - конкатенація (зчеплення) двох рядків.

Функції декодування дати і часу:

EXTRACT (<Елемент> FROM <вираз>) - з вираження, що містить значення чи дати часу, витягається значення, що відповідає зазначеному елементу. Як елемент дати чи часу можна вказувати значення: YEAR, MONTH, DAY, HOUR, MINUTE чи SECOND.

Відбір даних з таблиць

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

Оператор SELECT - найважливіший оператор мови SQL. Він використовується для добору записів, що задовольняють складним критеріям пошуку, і має наступний формат:

SELECT [DISTINCT] {* I <Список полів>)

FROM <Список таблиць>

[WHERE <Умови добору >]

[ORDER BY <Список полів для сортування >]

[GROUP BY <Список полів для групування >]

[HAVING <Умови групування>]

[UNION <Вкладений оператор SELECT>]

Результат виконання SQL-запиту, заданого оператором SELECT, являє собою вибірку записів, що відповідають заданим у ньому умовам. При розгляді оператора SELECT будемо припускати, що SQL-запит набраний і виконаний за допомогою компонента Query. У цьому випадку результатом виконання запиту є відповідний цьому компонент набору даних.

У такому результуючому наборі даних можуть бути дозволені чи заборонені повторювані записи (тобто однакові значення, що мають, усіх полів). Цим режимом керує DISTINCT. Якщо він відсутній, то в наборі даних дозволяються повторювання записів.

В оператор SELECT обов'язково включається список полів і операнд FROM. інші операнди можуть бути відсутніми. У списку операнда FROM перелічуються імена таблиць, для яких відбираються записи. Список повинний містити як мінімум одну таблицю.

Список полів визначає склад полів результуючого набору даних, ці поля можуть належати різним таблицям. У списку повинне бути задане хоча б одне поле. Якщо в набір даних потрібно уключити всі поля таблиці (таблиць), то замість перерахування імен полів можна вказати символ "*". Якщо список містить поля декількох таблиць, то для вказівки приналежності полів до тієї чи іншої таблиці використовують складене ім'я, що включає в себе ім'я таблиці й ім'я полючи, розділені крапкою: <Ім'я таблиці>. <Ім'я поля>

Операнд WHERE задає умови (критерії) добору, яким повинні задовольняти запису в результуючому наборі даних. Вираження, що описує умови добору, є логічним. Його елементами можуть бути імена полів, операції порівняння, арифметичні і логічні операції, дужки, спеціальні функції LIKE, NULL, IN і інші.

Операнд GROUP BY дозволяє виділяти групи записів у результуючому наборі даних. Групою є записи з однаковими значеннями в полях, перерахованих за операндом GROUP BY. Виділення груп потрібно для виконання групових операцій над записами, наприклад, для визначення кількості якого-небудь товару на складі.

Операнд HAVING діє разом з операндом GROUP BY і використовується для добору записів усередині груп. Правила запису умов групування аналогічні правилам формування умов вибору в WHERE. Операнд ORDER BY містить список полів, що визначають порядок сортування записів результуючого набору даних. За замовчуванням сортування по кожному полю виконується в порядку зростання значень; якщо необхідно задати для полів сортування по зменшенню, то після імені цього поля вказується описувач DESC.

Оператори SELECT можуть мати складну структуру і бути вкладеними друг у друга. Для об'єднання операторів використовується операнд UNION, у якому розташовується вкладений оператор SELECT, названий також підзапитом. Результуючий набір даних представляють записи, відібрані в результаті виконання умов добору, заданих операндами WHERE обох операторів.

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

Статичний і динамічний запити

Як уже відзначалося, у залежності від способу формування SQL-запит може бути:

· статичним;

· динамічним.

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

Динамічний SQL-запит формується чи змінюється при виконанні додатка.

3.2.3 Таблиці

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

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

Структура таблиці включає наступну інформацію:

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

Стовпці таблиці - Категорії інформації, збереженої в таблиці. Кожен стовпець має ім'я і тип даних. Табличні і стовпцеві обмеження - Обмеження цілісності, визначені на рівні таблиці чи на рівні стовпця.

Кожен вертикальний стовпець таблиці STUDENTS представляє один елемент даних для кожного зі студентів. Наприклад, у стовпці GROUP містяться номери груп, у яких розташовані студенти. У стовпці DATE містяться дати народження кожного студента.

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

На перетинанні кожного рядка з кожним стовпцем таблиці міститься одне значення даних. Наприклад, у другому рядку в стовпці FAMILY міститься значення "ІВАНОВ". У стовпці PODGRP того ж рядка міститься значення 1, що є номером підгрупи, у якій знаходиться даний студент.

Усі значення, що містяться в тому самому стовпці, є даними одного типу. Наприклад, у стовпці FAMILY містяться тільки слова, у стовпці DATE містяться дати, а в стовпці NUMBER містяться цілі числа, що представляють ідентифікатори студентів. Безліч значень, що можуть міститися в стовпці, називається доменом цього стовпця. Доменом стовпця FAMILY є безліч прізвищ студентів. Доменом стовпця DATE є будь-як дата.

У кожного стовпця в таблиці є своє ім'я, що звичайно служить заголовком стовпця. Усі стовпці в одній таблиці повинні мати унікальні імена, однак дозволяється привласнювати однакові імена стовпцям, розташованим у різних таблицях. На практиці такі імена стовпців, як NUMBER, FAMILY, NAME, GROUP, DATE, PODGRP, часто зустрічаються в різних таблицях однієї бази даних.

Стовпці таблиці упорядковані ліворуч праворуч, і їхній порядок визначається при створенні таблиці. У будь-якій таблиці завжди є як мінімум один стовпець. У стандарті ANSI/ISO не вказується максимально припустиме число стовпців у таблиці, однак майже у всіх комерційних СУБД ця межа існує і звичайно складає приблизно 255 стовпців.

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

У таблиці може міститися будь-яка кількість рядків. Цілком припустиме існування таблиці з нульовою кількістю рядків. Така таблиця називається порожньою. Порожня таблиця зберігає структуру, визначену її стовпцями, просто в ній не містяться дані. Стандарт ANSI/ISO не накладає обмежень на кількість рядків у таблиці, і в багатьох СУБД розмір таблиць обмежений лише вільним дисковим простором комп'ютера. В інших СУБД мається максимальна межа, однак він дуже високий - біля двох мільярдів рядків, а іноді і більше.

3.2.4 Ключові поля

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

Оскільки рядки в реляційній таблиці не упорядковані, не можна вибрати рядок по його номеру в таблиці. У таблиці немає "першого", "останнього" чи "тринадцятого" рядка. Тоді яким чином можна вказати в таблиці конкретний рядок, наприклад рядок для студента з прізвищем Іванов?

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

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

На перший погляд, первинним ключем таблиці STUDENTS можуть служити і стовпець FAMILY. Однак у житті досить часто зустрічаються однофамільці, отже, стовпець FAMILY більш не може виконувати роль ключа. На практиці як первинні ключі таблиць звичайно варто вибирати ідентифікатори, такі як ідентифікатор студента NUMBER у таблиці STUDENTS.

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

Він застосовується у випадках, коли неможливо гарантувати унікальність значень кожного окремого поля. Стовпець NSTUD містить ідентифікатори студентів, перерахованих у таблиці, а стовпець NORDER містить номера, наказам. Може показатися, що стовпець NORDER міг би й один виконувати роль первинного ключа, однак ніщо не заважає одному студенту кілька разів потрапити під відрахування і потім відновитися на факультеті. Таким чином, як первинний ключ таблиці ORDERS необхідно використовувати комбінацію стовпців NSTUD і NORDER. Для кожного зі студентів, що містяться в таблиці, комбінація значень у цих стовпцях буде унікальною.

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

Хоча первинні ключі є важливою частиною реляційної моделі даних, у перших реляційних СУБД (System/R, DB2, Oracle і інших) не була забезпечена явно їхня підтримка. Як правило, проектувальники бази даних самі стежили за тим, щоб у всіх таблиць були первинні ключі, однак у самих СУБД не було можливості визначити для таблиці первинний ключ. І тільки в СУБД DB2 Version 2, що з'явилася в квітні 1988 року, компанія IBM реалізувала підтримку первинних ключів. Після цього подібна підтримка була додана в стандарт ANSI/ISO.

3.2.5 Індекси

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

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

Створити індекси, як і ключі, можна по одному чи декільком полям. Складені індекси дозволяють при доборі даних групувати записи, у яких перші поля можуть мати однакові значення. Індексувати поля потрібно для виконання частих пошуків, сортувань чи об'єднань з полями з інших таблиць у запитах. Ключові поля таблиці індексуються автоматично. Не можна індексувати поля з типом даних поле МЕМО, чи об'єкту OLE. Для інших полів індексування використовується, якщо поле має текстовий, числовий, грошовий тип чи тип дати/часу і потрібно здійснювати пошук і сортування значень у полі. Якщо передбачається, що буде часто виконуватися сортування чи пошук одночасно по двох і більш полях, можна створити складений індекс. Наприклад, якщо для того самого запиту часто встановлюється критерій для полів Ім'я і Прізвище, то для цих двох полів має сенс створити складений індекс. При сортуванні таблиці по складеному індексі спочатку здійснюється сортування по першому полю, визначеному для даного індексу. Якщо в першому полі містяться записи з повторюваними значеннями, то сортування здійснюється по другому полю і т.д.

3.2.6 Зовнішні ключі

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

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

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

Зовнішні ключі є невід'ємною частиною реляційної моделі, оскільки реалізують відносини між таблицями бази даних. До нещастя, підтримка зовнішніх ключів була відсутня в перших реляційних СУБД. Вона була введена в системі DB2 Version 2 і тепер мається у всіх комерційних СУБД.

4. Опис функціональних можливостей і програмної реалізації системи

4.1 Предметна область і задачі, покладені на гнучку систему автоматизації

Проектована система призначена для автоматизації процесу впорядковування інформації про файли, що зберігаються на компакт-дисках або інших знімних носіях. Система була реалізована в середовищі Microsoft Visual Studio 2005. База даних представлена у вигляді 2-х таблиць у форматі SQL-light. Використані при розробці програмні продукти є безкоштовними і тому впровадження розробленого програмного продукту є економічно ефективним.

4.2 Апаратні вимоги, та вимоги до системного програмного забезпечення

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

1. Оптимальний склад технічних засобів, при яких працює програма:

· ПК типу IBM PC або сумісний з ним, продуктивністю не менше 166 МГц;

· Оперативна пам'ять не менше 32 МГбайт;

· Монітор із SVGA адаптером;

· НЖМД не менше 4,3 Гбайт;

· Компакт-дисковий носій (CD);

· Монітор, клавіатура, маніпулятор типу "миша".

2. Система не повинна мати прив'язки до апаратної частини для можливого переносу її на нову платформу через моральне старіння комп'ютерної техніки;

3. Програмна оболонка повинна мати інтуїтивно зрозумілий інтерфейс;

Система повинна функціонувати під керуванням операційних систем Windows 98, Windows 2000, або Windows ХР.

4.3 Розробка логіко-функціональної схеми системи

Логіко-функціональна схема системи наведена на рис.4.1.

Рис. 4.1 Логіко-функціональна схема системи

4.4 Опис інтерфейсу користувача

При старті програми на екрані з'являється|появляється| робоче вікно програми (рис.4.2).

Рис. 4.2 Робоче вікно програми

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

* додати диск в базу;

* видалити інформацію про диск з бази;

* перейменувати диск;

* додати або відредагувати коментар.

Рис. 4.3 Контекстне меню блоку дисків

При виборі пункту меню "Добавить" з'являється форма додавання дисків до бази, яка представлена на рис.4.4

Рис.4.4 форма додавання дисків до бази

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

Рис. 4.5 Попередження відсутності імені

При виборі пункту меню "Удалить" з'являється вікно з питанням підтвердження видалення запису з бази даних (рис.4.6):

Рис. 4.6 Вікно з питанням підтвердження видалення запису

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

При виборі пункту меню "Переименовать" вибраний запис переходе у режим редагування (рис. 4.7):

Рис. 4.7 Редагування

Якщо ім'я диску залишити пустим, то у базі нічого не зміниться і ім'я залишиться попереднім, а якщо змінити ім'я у той час, коли проглядається вміст вибраного диску вибраного для редагування імені диску, то структура папок автоматично оновиться (рис. 4.8, 4.9).

Рис. 4.8 До редагування

Рис. 4.9 Після редагування

При виборі пункту меню "Комментарий" з'являється форма додавання або редагування коментарів (рис.4.10):

Рис. 4.10 Форма додавання або редагування коментарів

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

Рис. 4.11 Вміст диска

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

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

Додавання коментарів на файл відбувається за допомогою контекстного меню (мал. 4.12)

Рис. 4.12 Контекстне меню додавання коментаря до файлів

При натисненні на єдину дорогу меню "Коментар" з'являється форма додавання/редагування коментарів (рис 4.8).

Рис 4.13 Форма додавання коментарів

За допомогою форми добавления/редактирования коментарів можна не лише додати новий або відредагувати вже існуючий коментар, але і видалити залишивши поле порожнім і натискує на кнопку "ОК"

У верхній частині інтерфейсу користувача, над списком дисків, знаходиться поле пошуку (рис 4.14)

Рис. 4.14 Пошук

Після введення тексту для пошуку і натиснення на кнопку відкривається форма з результатами пошуку (рис 4.15)

Рис 4.15 Форма результатів пошуку

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

4.5 Функціональна частина

База даних програми включає дві таблиці catalog і files структура яких вказана на малюнках 4.16 і 4.17.\

Рис. 4.16 Структура таблиці catalog

Рис. 4.17 Структура таблиці files

Таблиця catalog, містить інформацію про диски і теки.

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

Поле name - містить імена папок

Поле path - містить повні первинні дороги до тек.

Поле size - містить розмір дисків, і запис робиться лише на диски, а не на теки, а не на теки, які містяться в дисках.

Поле files - містить загальну кількість файлів на диску і запис робиться на диск а не на теки, які містяться в дисках.

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

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

Поле comment - містить в собі коментарі користувача, які були задані на диски, запис робиться лише на диски, а не на теки, які містяться на дисках.

Поле deleted - булеве поле що показує видалений диск чи ні.

Таблиця files містить інформацію про файли.

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

Поле path - містить повні первинні дороги до файлів.

Поле name - текстове поле, що містить імена файлів без дороги.

Поле comment - текстове поле, що містить коментарі користувача на файли.

Поле size - містить розмір файлів.

Поле catalog_id - поле, що зв'язує таблиці files і catalog, вказує на приналежність файлів до тек або дисків.

Поле disc_name - текстове поле, що містить призначені для користувача імена дисків до яких належать файли.

Нижче на малюнках 4.18 і 4.19 показані індекси таблиць files і catalog

Рис. 4.18 Індексів таблиці catalog

Рис. 4.19 Індексів таблиці files

При запуску програми відразу після ініціалізації компонентів інтерфейсів запускається функція load () представлена на лістингу 4.1

private void load ()

{

List<Dictionary<string, string>> discs = cat. GetRootFolders ();

listView2. Items. Clear ();

treeView1. Nodes. Clear ();

listView1. Items. Clear ();

for (int i = 0; i < discs. Count; i++)

{

listView2. Items. Add (discs [i] ["name"]). Tag = discs [i] ["id"];

listView2. Items [i]. ImageIndex = 0;

listView2. Items [i]. SubItems. Add ( (Math. Round ( (float) (Convert. ToInt32 (discs [i] ["size"])) /1024,2)). ToString () + " Mb");

listView2. Items [i]. SubItems. Add (discs [i] ["files"]);

listView2. Items [i]. SubItems. Add (discs [i] ["folders"]);

listView2. Items [i]. SubItems. Add (discs [i] ["comment"]);

}

}

Лістинг 4.1

Функція load () використовуючи метод класу catalog, який знаходиться в бібліотеці програми catalog. dll, GetRootFolders, представленою на листинге 4.2, отримує список дисків заздалегідь доданих в базу користувачем у вигляді List<Dictionary<string, string>>. Після чого форматує отримані дані по стовпцях елементу інтерфейсу listView2, і виводить їх на екран.

public List<Dictionary<string, string>> GetRootFolders ()

{

List<Dictionary<string, string>> root_folder_list = new List<Dictionary<string, string>> ();

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "SELECT * from catalog where parrent_id='0' and deleted='0'";

cmd.commandType = CommandType. Text;

cn. Open ();

SQLiteDataReader dr = (SQLiteDataReader) cmd. ExecuteReader ();

while (dr. Read ())

{

Dictionary<string, string> folder = new Dictionary<string, string> ();

folder. Add ("id", dr ["id"]. ToString ());

folder. Add ("name", dr ["name"]. ToString ());

folder. Add ("path", dr ["path"]. ToString ());

folder. Add ("folders", dr ["folders"]. ToString ());

folder. Add ("files", dr ["files"]. ToString ());

folder. Add ("size", dr ["size"]. ToString ());

folder. Add ("comment", dr ["comment"]. ToString ());

root_folder_list. Add (folder);

}

cn. Close ();

}

}

return root_folder_list;

}

Лістинг 4.2

Само ж додавання дисків відбувається при виникненні події button1_Click форми додавання дисків (лістинг 4.3)

private void button1_Click (object sender, EventArgs e)

{

if (textBox2. Text! = "")

{

catalog. catalog cat = new catalog. catalog ();

cat. scan_disc (comboBox1. Text, textBox2. Text, textBox3. Text);

Close ();

}

else

{

MessageBox. Show ("Недопустимое имя!");

}

}

Лістинг 4.3

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

public void scan_disc (string path,string name, string comment)

{

// инсерт в базу текущего

_disc_name = name;

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "INSERT INTO catalog (name, path, size, folders, files,parrent_id,comment) VALUES ('" + name + "', '" + path + "', '0', '0', '0','0',\""+comment+"\")";

cmd.commandType = CommandType. Text;

cn. Open ();

cmd. ExecuteNonQuery ();

cn. Close ();

}

}

// получаем с базы новый parent_id

int cur_id = get_last_cat_id ();

root_id = cur_id;

getDiscDir (path, cur_id);

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "UPDATE catalog SET folders='" + folders_count + "', files='"+files_count+"', size='"+size+"' WHERE id='"+root_id+"'";

cmd.commandType = CommandType. Text;

cn. Open ();

cmd. ExecuteNonQuery ();

cn. Close ();

}

}

}

Лістинг 4.4

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

private void getDiscDir (string path, int parrent_id)

{

try

{

string [] childs_dirs = Directory. GetDirectories (path);

// получаем список файлов для текущего фолдера

folders_count += childs_dirs. Length;

string [] files = Directory. GetFiles (path);

files_count += files. Length;

for (int i = 0; i < files. Length; i++)

{

System. IO. FileInfo fi = new FileInfo (files [i]);

int f_size = (int) fi. Length;

size += (f_size / 1024);

string f_name = Path. GetFileName (files [i]);

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

string new_path = files [i]. Substring (1, (files [i]. Length - 1));

cmd.commandText = "INSERT INTO files (path, name, size, catalog_id, disc_name) VALUES ('" + new_path + "', '" + f_name + "', '" + f_size + "', '" + parrent_id + "', '"+_disc_name+"')";

cmd.commandType = CommandType. Text;

cn. Open ();

cmd. ExecuteNonQuery ();

cn. Close ();

}

}

}

for (int i = 0; i < childs_dirs. Length; i++)

{

// инсерт в базу чилда с новым парент айди (cur_id)

string ch_name = Path. GetFileName (childs_dirs [i]);

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "INSERT INTO catalog (name, path, size, folders, files, parrent_id) VALUES ('" + ch_name + "', '" + childs_dirs [i] + "', '0', '0', '0','" + parrent_id + "')";

cmd.commandType = CommandType. Text;

cn. Open ();

cmd. ExecuteNonQuery ();

cn. Close ();

}

}

// получаем чилдовский айди

// запускаем процедуру для этого чилда

int ch_id = get_last_cat_id ();

getDiscDir (childs_dirs [i], ch_id);

}

}

catch (Exception x)

{

}

}

Лістинг 4.5

Каталог є структурою яка приведена на лістингу 4.6

public struct Folders

{

public string name;

public int id;

public List<Folders> Childs;

}

Лістинг 4.6

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

private List<Folders> _getFoldersStruct (int id)

{

List<Folders> folder_struct = new List<Folders> ();

// получаем список из базы

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "SELECT * from catalog where parrent_id='" + id + "'";

cmd.commandType = CommandType. Text;

cn. Open ();

SQLiteDataReader dr = (SQLiteDataReader) cmd. ExecuteReader ();

while (dr. Read ())

{

Folders folder = new Folders ();

folder. name = dr ["name"]. ToString ();

int new_id = Convert. ToInt32 (dr ["id"]. ToString ());

folder. id = new_id;

folder. Childs = _getFoldersStruct (new_id);

folder_struct. Add (folder);

}

cn. Close ();

}

}

return folder_struct;

}

public Folders getFoldersStruct (int disc_id)

{

Folders folder_struct = new Folders ();

// получаем список из базы

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = "SELECT * from catalog where id='"+disc_id+"'";

cmd.commandType = CommandType. Text;

cn. Open ();

SQLiteDataReader dr = (SQLiteDataReader) cmd. ExecuteReader ();

while (dr. Read ())

{

folder_struct. name = dr ["name"]. ToString ();

int new_id = Convert. ToInt32 (dr ["id"]. ToString ());

folder_struct. id = new_id;

folder_struct. Childs = _getFoldersStruct (new_id);

}

cn. Close ();

}

}

return folder_struct;

}

Лістинг 4.7

По отриманій структурі folder використовуючи методи CreateTreeView і _CreateTreeView формується дерево каталогів

Лістинг 4.8

private void CreateTreeView ()

{

TreeNode node = new TreeNode ();

node. Text = folders. name;

node. Tag = folders. id. ToString ();

_CreateTreeView (folders. Childs, node);

treeView1. Nodes. Add (node);

}

private void _CreateTreeView (List<Folders> f, TreeNode node)

{

foreach (Folders el in f)

{

TreeNode new_node = new TreeNode ();

new_node. Text = el. name;

new_node. Tag = el. id. ToString ();

_CreateTreeView (el. Childs, new_node);

node. Nodes. Add (new_node);

}

}

Листинг 4.8

Ще однією основною функцією програми є функція пошуку, після виникнення події toolStripButton1_Click головної форми програми, яка після перевірки на наявність тексту пошуку викликається форма Результатів пошуку, в якій відразу ж відбувається виклик методу do_search (лістинг 4.9), який у свою чергу викликає метод класу catalog do_search (лістинг 4.10) передаючи параметром шуканий текст.

private void do_search (string search_text)

{

catalog. catalog cat = new catalog. catalog ();

List<Dictionary<string, string>> search_result = cat. do_search (search_text);

if (search_result. Count > 0)

{

for (int i = 0; i < search_result. Count; i++)

{

listView1. Items. Add (search_result [i] ["name"]);

listView1. Items [i]. SubItems. Add ( (Math. Round ( (float) (Convert. ToInt32 (search_result [i] ["size"])) / 1024,2)). ToString () + " Kb");

string path = search_result [i] ["disc_name"] + search_result [i] ["path"];

listView1. Items [i]. SubItems. Add (path);

listView1. Items [i]. SubItems. Add (search_result [i] ["comment"]);

}

}

}

Лістинг 4.9

public List<Dictionary<string, string>> do_search (string search_str)

{

List<Dictionary<string, string>> result= new List<Dictionary<string, string>> ();

search_str = clean_words (search_str);

string [] search_text;

string [] separator = { " " };

string tag = search_str;

search_text = tag. Split (separator, StringSplitOptions. RemoveEmptyEntries);

string select = "SELECT * FROM files WHERE ";

string added_q = "";

for (int i = 0; i < search_text. Length; i++)

{

if (search_text [i]. Length > 2)

{

if (added_q. Length == 0)

{

added_q += " (name like '%" + search_text [i] + "%' OR comment like '%" + search_text [i] + "%')";

}

else

{

added_q += " OR (name like '%" + search_text [i] + "%' OR comment like '%" + search_text [i] + "%')";

}

}

}

select += added_q + " ORDER by id ASC; ";

using (SQLiteConnection cn = new SQLiteConnection (connectionString))

{

using (SQLiteCommand cmd = cn. CreateCommand ())

{

cmd.commandText = select;

cmd.commandType = CommandType. Text;

cn. Open ();

SQLiteDataReader dr = (SQLiteDataReader) cmd. ExecuteReader ();

while (dr. Read ())

{

Dictionary<string, string> file = new Dictionary<string, string> ();

file. Add ("name", dr ["name"]. ToString ());

file. Add ("id", dr ["id"]. ToString ());

file. Add ("catalog_id", dr ["catalog_id"]. ToString ());

file. Add ("path", dr ["path"]. ToString ());

file. Add ("comment", dr ["comment"]. ToString ());

file. Add ("size", dr ["size"]. ToString ());

file. Add ("disc_name", dr ["disc_name"]. ToString ());

result. Add (file);

}

}

}

return result;

}

Листинг 4.10

Відразу після виклику методу do_search класу catalog відбувається очищення тексту від службових спецсимволів, розділового і деяких слів знаків за допомогою приватного методу класу search clean_words який приведений на лістингу 4.11

private string clean_words (string value)

{

string [] drop_char = { "^", "$", "&", " (", ")", "<", ">", "`", "\\", "\"", "|", ",", "@", "_", "?", "%", "-", "~", "+",".", " [", "]", "{", "}", ":", "\\", "/", "=", "#", "\"", ";", "!" };

string [] drop_words = { "a", "the", "of", "and", "or", "for", "this" };

for (int i = 0; i < drop_char. Length; i++)

{

value = value. Replace (drop_char [i], "");

}

return value;

}

5. Економічне обґрунтування доцільності розробки програмного продукту

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

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

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

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

В розробці користуємося середою програмування Microsoft Visual Studio 2005. База даних реалізована в форматі SQLitе. Використані при розробці інструментальні засоби є безкоштовними.

Необхідні для розробки програмного продукту засоби обчислювальної техніки: персональна ЕОМ на базі процесора Pentium IV с тактовою частотою 2,1 Мгц, 512 Мб оперативної пам'яті, HDD 40 Гб, дисковод для компакт-дисків 4-х швидкісний.

Мінімальні апаратні вимоги для роботи додатків необхідно:

· ПК типу IBM PC або сумісний з ним, продуктивністю не менше 166 МГц;

· Оперативна пам'ять не менше 32 МГбайт;

· Монітор із SVGA адаптером;

· НЖМД не менше 4,3 Гбайт;

· НГМД 3,5 дюйми;

· Компакт-дисковий носій (CD);

· Монітор, клавіатура, маніпулятор типу "миша".

5.1 Визначення витрат на створення програмного продукту

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

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

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

витрати на оплату машинного часу, затраченого при розробці програми.

Витрати на оплату праці розроблювачів програми

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

, де

Зрозр - середньо-годинна оплата програміста,

t розр. - трудомісткість створення програми, що містить у собі витрати праці на наступні дії:

· Знайомство з проблемою й визначення шляхів її вирішення;

· Розробка структури інформаційної системи;

· Розробка моделі бази даних "Деканат";

· Розробка програмного продукту "Деканат";

· Налагодження програми на ПК;

· Підготовка документації по задачі.

Витрачений час на вирішення поставленої задачі розрахуємо за календарним планом виконання робіт (табл.5.1)

Таблиця 5.1

Календарний план виконання робіт по створенню програми

Найменування етапів виконання робіт

Кількість затрачених годин

Знайомство з проблемою і визначення шляхів її вирішення

35

Розробка структури інформаційної системи

50

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

25

Розробка програмного продукту

75

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

3

Підготовка документації по програмному забезпеченню

25

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

tрозр. = tпробл. + tстр. + tмод. + tпрогр. + tнал. + ttдок, де

tпробл. - час на знайомство з проблемою й визначення шляхів її вирішення,

tстр. - час на розробку структури інформаційної системи,

tмод. - час на розробку моделі бази даних "Деканат";

tпрогр. - час на розробку програмного продукту "Деканат",

tнал. - час на налагодження програми на ПК,

ttдок. - час на підготовку документації по задачі,

tрозр. = 35+50+25+75+5+25 = 213 [люд. /годин]

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

Таким чином, річний фонд грошового забезпечення програміста складає 19 800 гривень.

Нарахування на ФОП:

1. Безробіття 1,3%

2. Пенсійний фонд 33,2%

3. Соцзабезпечення тимчасової непрацездатності 1,5%

4. Соцзабезпечення від нещасних випадків 1,16%

Підсумок: 37,16%

Далі визначимо число робочих годин у році, за формулою:

n (p) = (N - N (п) - N (в)) * 8 - N (н/д), де

N - загальне число днів у році,

N (п) - число святкових днів у році,

N (в) - число вихідних днів у році,

N (н/д) - кількість призначених днів, у котрих тривалість робочого дня (зміни) при 40-годинній неділі зменшується на одну годину.

Число святкових днів у році - 10, вихідних - 104, зменшених на годину - 6. Отже, число робочих годин у році дорівнює:

n (p) = (365 - 10 - 104) * 8 - 6 = 2002 [години]

Середньо годинна оплата програміста визначається співвідношенням:

Срозр. = ФЗПсн / n (p), де

ФЗПсн - річний фонд грошового забезпечення,

Срозр. = 19800/2002 = 9,89 [гривень]

Отже, витрати на оплату праці (Зрозр.) розроблювачів програми складають:

Зрозр. = 213 * 9,89 = 2106,57 [гривень]

Зрозр. нарах. = 2106,57 + 2106,57 * 37,16% = 2889,37 [гривень]

5.2 Витрати, пов'язані з розробкою програми на ПК

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

СПК = ЗгПК / ТгПК

Розрахунок річного фонду тривалості робочого часу ПК (у годинах)

Визначивши дійсний річний фонд тривалості робочого часу ЕОМ у годинах, маємо можливість оцінити собівартість машинного часу. Дійсний річний фонд тривалості робочого часу ЕОМ дорівнює числу робочих годин у році для оператора, за винятком часу затраченого на профілактику й ремонт ЕОМ. Час профілактики: щомісячно - 5 годин; щорічно - 6 діб.

ТгПК = n (p) - (6 * 8 + 5 * 12),

ТгПК = 2002 - (6 * 8 + 5 * 12) = 1894 [години]

Річні поточні витрати на експлуатацію визначаються за формулою:

ЗгПК = ЗгАМ + ЗгЭЛ + ЗгРЕМ + ЗгМАТ + ЗгДР, де

ЗгАМ - річні відрахування на амортизацію,

ЗгЭЛ - річні витрати на електроенергію для ПК,

ЗгРЕМ - річні витрати на ремонт ПК,

ЗгМАТ - річні витрати на додаткові комплектуючі ПК,

ЗгДР - інші витрати.

Амортизаційні відрахування

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

Заключний етап в нарахуванні податкової амортизації - це щоквартальний розрахунок суми амортизації. Норми амортизації встановлені у відсотках до балансової вартості 4 групи основних фондів складає 60% на рік, так як нарахування амортизації відбувається щоквартально, то норма амортизаційних відрахувань у квартал складає (60% / 4) = 15%.

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

ЗгАМ = ЦПК * НА, де

ЦПК - балансова вартість ПК,

НА - норма амортизаційних відрахувань, що дорівнює 15% (у квартал).

Балансова вартість ПК:

Цпк = Цр * (1+ Кун), де

Цр - ринкова вартість ПК,

Кун - коефіцієнт, що враховує витрати на установку й налагодження, рівний 12%.

Ринковою вартістю ПК, будемо вважати ту вартість до якої входить повна комплектація ПК, вона становитиме 5000 грн.

Цпк = 5000 * (1 + 0.12) = 5500 [гривень], 1кв. = 5500 * 0,15 = 825 [гривень], 2кв. = (5500 - 825) * 0.15 = 701,25 [гривень],

3кв. = (5500 - 825 - 701,25) * 0.15 = 596,06 [гривень],

4кв. = (5500 - 825 - 701,25 - 596,06) * 0,15 = 506,65 [гривень],

ЗгАМ = 825 + 701,25 + 596,06 + 506,65 = 2628,96 [гривень]

Витрати на електроенергію, споживану ПК

Витрати на електроенергію, затрачену ПК, визначаються за формулою:

ЗгЭЛ = РчПК * ТгПК * ЦЭЛ * А, де

PчПК - потужність ПК (PчПК = 0.3 [кВт.]),

ТгПК - річний фонд корисного часу роботи машини,

ЦЭЛ - вартість 1 квт/годину електроенергії (ЦЭЛ = 0,24 [грн.]),

А - коефіцієнт інтенсивного використання ПК (0.9 - 1).

Таким чином, кількість витрат на електроенергію, споживану ПК, складає:

ЗгЭЛ = 0.3 * 1894 * 0,24 * 1.0 = 136,37 [гривень]

Витрати на поточний і профілактичний ремонт

Витрати на поточний і профілактичний ремонт приймаються рівними 6% від вартості ПК:

ЗгРЕМ = ЦПК * 0.06,ЗгРЕМ = 5500* 0.06 = 330 [гривень]

Витрати на матеріали

Витрати на матеріали - витрати, необхідні для забезпечення експлуатації ПК, приймаються рівними 2% від вартості ПК.

ЗгМАТ = ЦПК * 2%,

ЗгМАТ = 5500 * 0.02 = 110 [гривень]

Непрямі витрати.

Непрямі витрати, пов'язані з експлуатацією ПК, приймаються рівними 5 - 10% вартості ПК.

ЗгДР = ЦПК * 5%,

ЗгДР = 5500 * 0.05 = 275 [гривень]

Повні витрати на експлуатацію ПК

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

ЗгПК= 2628,96 + 136,37 + 330 + 110 + 275 = 3480,33 [гривень]

Собівартість однієї години роботи машини (CПК) складає:

СПК = 3459,45/1894 =1,83 [гривень]

Витрати машинного часу.

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

· написання програми за готовою схемою алгоритму;

· налагодження програми на ПК;

· підготовки документації по задачі.

Таким чином, витрати машинного часу склали (tмаш):

tмаш = tпрог. + tотл. + tдок,

tмаш = 75 + 3 + 25 = 103 [чол. /часів]

Витрати на оплату машинного часу можна розрахувати за формулою:

Змаш = tмаш * СПК,

Змаш = 103* 1,83 = 188,49 [гривень]

Загальні витрати на створення програмного комплексу

Зразом = З розр. + З маш,

Зразом = 2889,37 + 188,49 = 3077,86 [гривень]

5.3 Визначення планованої економії від упровадження програмного продукту

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

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

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

Таблиця 5.2

Річний фонд заробітної плати двох штатних одиниць

З/П до автоматизації

Кількість чоловік

Місячна З/П, грн.

Премія 40% та рай. Коєф.15%, грн.

Всього З/П за рік, грн.

Працівник 1

1

1000

610

(1000*12+610*12) = 19320

Працівник 2

1

1000

610

(1000*12+610*12) = 19320

Відрахування на ФОП

2

19320 + 19320 = 38640

37,16%

14358,624

ВСЬОГО:

52998,62

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

Е = Зразом_прац - Зразом - ЗгПК, де

Зразом_прац - річний фонд заробітної плати 1-го працівника,

Зразом - загальні витрати на створення програмного комплексу,

ЗгПК - повні витрати на експлуатацію ПК протягом року.

Е = 26499,31 - 3077,86 - 3480,33 = 19941,12 [гривень]

6. Охорона праці

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

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

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

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

6.1 Аналіз небезпечних і шкідливих факторів автоматизованого робочого місця

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

Робоче місце, устатковане відео-терміналом, забезпечується:

1. належними умовами освітлення приміщення й робочого місця, відсутністю відблисків;

2. відповідністю оптимальних параметрів мікроклімату;

3. належними ергономічними характеристиками основних елементів робочого місця.

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

Відповідно діючим нормативним документам площа приміщення 13,0 мІ; об'єм - 20 мі. Стіна, стеля, підлога приміщення виготовляються з матеріалів, дозволених для оформлення приміщень санітарно-епідеміологічним наглядом. Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну міцність.

Висота робочої поверхні столу для відео-терміналу - 690 мм, ширина повинна забезпечувати можливість виконання операцій в зоні досягнення моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні витягнутої ноги 650 мм.

Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут нахилу поверхні від 15є вперед до 5є назад. Поверхня сидіння плоска, передній край закруглений.

Заземлення конструкцій, які знаходяться в приміщенні надійно захищені діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе прибирання.

В доступних місцях знаходяться аптечки першої медичної допомоги.

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

6.1.1 Електромагнітне випромінювання

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

Джерелами випромінювання електромагнітних полів (ЕМП) в ПЕОМ є система відхилення випромінювання монітору, а також елементи блоків живлення системного модуля, монітору, принтера.


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

  • Android, iOS та Windows як основні платформи для розробки додатків для мобільних пристроїв. Перелік вимог до програмної системи. Основні вимоги, які є критичними для працездатності мобільного додатку. Аналіз основних напрямків розвитку системи.

    курсовая работа [1,1 M], добавлен 19.08.2016

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

    реферат [20,7 K], добавлен 24.11.2010

  • Принципи організації баз даних (БД) при проектуванні клієнт-серверних додатків. Інструментальні засоби створення системи. Різновиди архітектур БД. Функції та програмна реалізація. Економічне обґрунтування доцільності розробки програмного продукту.

    дипломная работа [2,1 M], добавлен 22.10.2012

  • Порядок розробки автоматизованої системи електронних міжбанківських переказів Національного банку України, її призначення та мета створення, загальний опис вхідної та вихідної інформації, основні функції. Вимоги до апаратної системи та архітектура СЕП-2.

    контрольная работа [644,5 K], добавлен 26.07.2009

  • Характеристики вузлів системи автоматичного закривання жалюзі. Розробка схеми електричної функціональної. Блок-схема алгоритму роботи пристрою. Середовище розробки програмної частини пристрою. Основні компоненти розробки програмної частини системи.

    курсовая работа [1,0 M], добавлен 06.12.2014

  • Реалізація гнучкої спеціалізованої системи підприємництва в середовищі Delphi 6.0 за допомогою технології доступу до баз даних ADO. Розробка елементів системи, її призначення для накопичення і обробки інформації про обіг товарів приватного підприємства.

    дипломная работа [1,3 M], добавлен 26.10.2012

  • Delphi як візуальне середовище розробки програмного забезпечення. Створення автоматизованої системи відстеження дзвінків з мобільних телефонів працівниками правоохоронних органів. Основи технології ACTIVEX DATA OBJECTS. Функціональні можливості системи.

    дипломная работа [5,0 M], добавлен 26.10.2012

  • Особливості програмної реалізації алгоритму пошуку файлів з заданими атрибутами. Опис програмного комплексу на мові Turbo С. Розробка інструкції користувача. Тестування програмного продукту на операційних системах MS DOS 5.0/6.0/6.2 і Windows 95/98/Me/Xp.

    курсовая работа [27,0 K], добавлен 21.07.2011

  • Розробка гнучкої інтегрованої автоматизованої системи доступу до каталогу навчальних відеофільмів в мультимедійних класах металургійного факультету Національної металургійної академії. Теоретичні аспекти проектування додатків на базі платформи dotNET.

    дипломная работа [4,0 M], добавлен 26.10.2012

  • Визначення принципів розробки додатків для Windows 8 засобами об'єктно-орієнтованого програмування. Розробка програмного застосування для перегляду графічних файлів з функціями здобуття інформації про слайд-шоу. Інтерфейс користувача та лістинг програми.

    курсовая работа [2,8 M], добавлен 23.10.2014

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