Програмна система збору та аналізу статистичних даних про контакти користувача на основі ОС Android

 

Міністерство освіти, науки, спорту та молоді України

Національний університет «Львівська політехніка»











Бакалаврська кваліфікаційна робота


На тему

Програмна система збору та аналізу статистичних даних про контакти користувача на основі ОС Android



Виконав: студент гр. КІ-44

Волох Ю.А

Керівник: Кремінь В.Т







Львів 2011р.

Завдання


Створити програмну систему збору та аналізу статистичних даних про контакти користувача на основі ОС Android 2.2.

Вимоги:

використання телефонної книжки, з кількістю записів до 300.

Швидкість роботи: не більше 2 сек.


Анотація


В бакалаврьскій квалійікаційній роботі розглянуто проблему розробки програмної системи збору та аналізу статистичних даних про контакти користувача мобільного обчислювального пристрою під управлінням ОС Android. В роботі спроектовано та розроблено програмну систему збору та аналізу статистичних даних про контакти користувача з можливістю її подальшого розвитку до рівня персонального інтелектуального програмного агента. Програмна система розроблена на мові Python на основі програмної платформи SL4A.


Вступ


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

Людські потреби росли паралельно з нарощуваними потужностями виробників, ресурси неохідні для Java-машини вдалось вмістити в кишенькових компютерах, смартфонах.

Сьогодні смартфон є практично у кожного. Це мікро ЕОМ яка завжди з тобою. Ні для кого не буде новиною розміщення у смартфоні Будильника, органайзера та ін. Тобто програм які допомагають людині справлятись з завданнями які виникають перед нею щодня. Деякі аналітики стверджують, що в найближчі 5-10 років персональні компютери і ноутбуки відійдуть в минуле. А компютер буде виглядати як великий монітор, що стоїть на слолі, клавіатура, маніпулятор. Люди будуть приходити в офіс, підключати свій смартфон, і працювати на звичній великій клавіатурі, з великим екраном, а всі операції буде обробляти смартфон.

До речі, в минулому 2010 році кількість проданих смартфонів у США, більша аніж кількість проданих персональних компютерів.

В майбутньому смартфони будуть як засобом звязку, так і пристроями обробки інформації.

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

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

І наступним кроком буде створення Електронного помічника, тобто програми котра буде робити що небуть заміть власника. Ці програми будуть обладнані системами штучного інтелекту, тому власника навіть не обовязково про це повідомляти. У людини зявиться більше вільного часу. А час це найдорогоцінніший ресурс в сучасному світі. Программа Inteligent Personal Assistant - це спроба створити щось подібне.

Інтелектуальний програмний помічник - це програмний агент, який виконує завдання з мінімально специфічними напрямами від користувачів. Він розвивається з концепції "віртуальний особистий помічник", це когнітивний помічник, який вчиться і само організовується. Інтелектуальний програмний помічник поєднує в собі традиційні ізольовані підходи до штучного інтелекту <#"justify">Розглядаючи інтелектуальні агенти як сутності в контексті комп'ютерної науки йдуть від старої парадигми використання комп'ютера як інструменту до нової парадигми, в рамках якої комп'ютер розглядається як середовище в якій живуть і розвиваються деякі програмні сутності.

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

. Мету.

. Базу знань.

. Характер - метазнання.

. Активність - властивість, що дозволяє агенту взаємодіяти з іншими агентами і навколишнім середовищем.

. Реактивність - реакція на вхідні впливи.

. Ресурс для досягнення поставленої мети.

Журнал MIT Technology Review <#"justify">1.Аналіз задачі розробки програмної системи збору та аналізу статистичних даних про контакти користувача


1.1.Проблема розробки інтелектуального агента


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

Найважливішими проблемами для створення інтелектуальних агентів є:

·розробка стандартної мови спілкування агентів;

·розробка методів ефективної обробки знань, класифікації та розпізнавання;

·розробка живого користувацького інтерфейсу (природна мова).

Головною серед цих проблем є розробка стандартів обміну знаннями в процесі спілкування агентів. Зараз існує щонайменше два подібні стандарти в цій галузі: Knowledge Query Manipulation Language та Knowledge Interchange Format, які до цього часу мають масу недоробок. Те саме можна сказати і відносно другої проблеми. Дійсно ефективних методів, що здатні стати базою побудови промислової технології світового масштабу, на сьогодні немає. Відносно останньої проблеми варто підкреслити, що саме проблема створення інтерфейсу, близького до природної мови, зруйнувала проект ESPRIT, який передбачав створення компютера пятого покоління до 90-тих років. Проте зрушення в цьому напрямку є.

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

1.2.Програми аналоги


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

Особистий помічник для iOS - Siri

Siri є особистим помічником <#"justify">Сірі може планувати і здійснювати завдання оптимізовані для обробки вашого запиту. Live дані переносяться прямо з сайтів. Наприклад, у завдання вибору ресторану, Сірі інтегрує інформацію з багатьох джерел (місцеві каталоги бізнесу, геопросторових баз даних, джерел огляду ресторанів, онлайн-послуги з бронювання), щоб показати результати, які відповідають користувачеві.

Проект CALO

CALO була програмою штучного інтелекту <#"justify">1.Організація та встановлення приорітету інформації: Коли користувач працює з електронною поштою, веб-сторінками, файлами CALO використовує машину для навчання алгоритмів щоб побудувати таблицю запитів моделі хто працює з яким проетом, яку роль вони відіграють, наскільки вони є важливими, як документи і результати мають відношення до цього.

2.Підготовка структури інформації: CALO може допомагати користувачу зберігати разом нові документи, такі як PowerPoint презентації, вивчаючи структуру і вміст з попередніх документів, до яких відбувався доступ в минулому.

.Бути посередником між людьми: CALO аналізує кореспонденцію користувача (електронні листи) вивчає взаємовідносини між людьми та може допомагати у спілкуванні, (наприклад відправити листа, «Зараз я не вдома. Сьогодні в мене важлива зустріч») meeting progresses.

4.Керування завданнями: CALO може автоматизувати ваші рутинні завданні, а може навчитись новим процедурам і завданням, спостерігаючи і взаємодіючи з користувачем.

5.Планування часу користувача: CALO може навчитись ваших уподобань, і допомагати Вам у вашому щільному графіку.

6.Розподіл ресурсів: У рамках функції «Керування завданнями», CALO може навчитись здобувати нові ресурси (електронні сервіси і реальні люди) щоб допомогти отримати роботу.

Проект сприяв активній появі наукових дискусії і публікацій, а основною його метою було зібрати поточні та ініціювати появунових ідей і технологій у галузі створення штучного інтелекту для потреб військових. У рамках програми дослідники з провідних ВНЗ і підрозділів комерційних компаній США висували ідеї і представляли прототипи сервісів, здатних вчитися і розуміти завдання, підлаштовуватися під звички і переваги конкретної людини, планувати за нього розклад, систематизувати інформацію, розставляти пріоритети при зборі даних, самостійно шукати нові джерела інформації.

Офіційно про завершення робіт над проектом CALO булоповідомлено в 2009 році. За даними журналістів, у нього буловкладено $ 150 000 000, і в результаті було отримановіртуальний цифровий помічник для армії США, що вмієрозбирати пошту, складати звіти за змістом електронних листів іформувати графіки зустрічей і засідань.

Реальним результатом програми стала поява комерційної розробки Siri, створеної учасниками проекту CALO.

Веб сервіс Rearden Personal Assistant

Rearden Personal Assistant - веб-сервіс для ПК і мобільних платформ від компанії Rearden Commerce, запущений в 2008 році для корпоративних клієнтів в США і Великобританії. Віртуальний помічник дозволяє співробітникам компаній-клієнтів організувати ділову поїздку і замовити всі супутні послуги. Він об'єднує розрізнену інформацію з сервісів туристичних компаній, аеропортів, орендодавців машин, ресторанів, допомагає розпланувати графік поїздки і власні витрати.

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

Геолокаційний сервіс ePythia

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

Прикладом використання сервісу є завдання «Купити молока». У поточній версії нагадування встановлюється на точку, в якій розташований потрібний продуктовий магазин, і вибирається радіус видалення (від 100 до 1000 метрів), на якому спрацює оповіщення про завдання.

З червня 2010 знаходиться в стадії відкритого бета-тестування. Веб-сервіс, тісно інтегрований з продуктами Google, доступний для мобільних пристроїв на платформах Android, BlackBerry, iPhone, Symbian і Windows Mobile. Проект домігся резонансу в Росії, ставши переможцем стартап-турніру Harvest @ GreenfieldProject, і на Заході, увійшовши в топ-16 конкурсу університетських проектів Global Business Plan 2010 від Draper Fisher Jurvetson і Cisco.

.3 Частотний аналіз слів у текстових повідомленнях


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

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

Навіть просте спостереження над текстом показує, що слова щодо їх частоти вживаються не однаково: одні повторюються мало не в кожному абзаці, інші - рідше, деякі - надзвичайно рідко. Для відображення цієї закономірності мовознавці користуються такими поняттями, як «поширене», «малопоширене», «маловживане», «непоширене», «рідковживане» тощо. Проте ці поняття не можуть дати уявлення про науково _бґрунтовану міру вживаності слів, про сфери їх переважного використання, про істотні відмінності у вживанні слів чи груп слів у стильових різновидах текстів. Розкрити всі ці закономірності функціонування лексики (чи інших одиниць мови) можна лише за допомогою статистичних методів. Саме тому вони набули такого широкого застосування у мовознавчих дослідженнях за останні десятиліття.

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

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


1.4.Використання концепцій соціальної психології для розробки програмної системи


Для розробки програми доцільно спиратись на існуючі концепції соціальної психології, зокрема: теорія поля Курта Левіна та соціометрія Якоба Морено.

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

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

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

У теорії поля Левін намагався застосувати топологію для створення геометрії психологічного опису поведінки людини - годологіі.

Згідно Якоба Морено соціометрія - теорія <#"justify">При запуску програми (рис.1.5.1) виводиться головне меню програми де перераховані основні функції програми: рейтинг контактів, статистика слів, графік дзвінків, соціоматриця, де користувачу пропонується зробити вибір. Головне меню предствлене окремим модулем та окремим _рограм. Для кожної з функцій реалізовиний окремий модуль та _рогр. Кожен модуль є окремою _рограммою, що може виконуватись незалежно. Це досягається шляхом створення для кожного модуля своєї власної головної функції. Модуль contacts_stat.py є надбудовою для всіх інших модулів. Він приймає вибір користувача та відповідно імпортує потрібний модуль та запускає головну функцію модуля. Програма contacts_stat є обєктна орієнтованою програмою, де класи використовуються повторно. Звязок між всіма класами представлений у вигляді агрегації, тобто створення екземпляра класу всередині деякого класу.

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

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

Якщо користувач обрав графік дзвінків то програма спочатку отримує контакти з телефонної книги Android через Python API, а потім створюється запит до #"justify">Якщо користувач обрав соціоматрицю то програма спочатку отримує контакти з телефонної книги Android через Python API, а потім впорядковує його певним чином. Після цього викликається графічний інтерфейс модуля якому на вхід передаються отримані дані.


Рис. 1.5.1 Алгоритм роботи програми збору та аналізу статистичних даних про контакти користувача

2.Вибір інструментів розробки програмної системи збору та аналізу статистичних даних про контакти


2.1.Вибір мови програмування та середовища


Розробники Android надали можливість створювати додатки для їхньої ОС, через використання Android SDK (Software Development Kit). Як і Android, SDK написаний на мові Java, тому розробка під Android відбувається виключно на мові Java[3]. Проте існує проект, який дозволяє програмувати на багальтьох інших мовах, таких як Python, PHP, Lua, Perl тощо. Він називається SL4A.

У двох словах, SL4A[15] є інфраструктурою для включення взаємодії сценаріїв мов двигунів, які були перенесені на платформу Android з Android API за допомогою віддаленого викликупроцедур (RPC) до сервера, що реалізований у вигляді стандартного додатка Android Java.

Як і Android, SL4A є open source і розповсюджується під Apache License Version 2.0, як і більшість програм Android.

Система SL4A підходить для наступних видів завдань:

1.RAD програмування: З SL4A можна використовувати швидку розробку застосувань (RAD). Ви можете швидко створити прототип додатка для того аби перерити правильність ідеї. Якщо ідея правильна Ви можете створити повноцінну програму під Android

2.Написання тестових скриптів. SL4A, може бути використана для створення тестових сценаріїв для інших програм

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

SL4A дозволяє взаємодіяти між сценаріями мов двигунів Android і Android API. Як ви побачите пізніше,вона не обмежена лише скриптовими мовами. Будь-яка програма, яка реалізує сумісні на основі JSON RPC8 модулі або набір процедур може потенційно викликати Server SL4A RPC.

Всередині, SL4A використовує JavaScript Object Notation (JSON) формат даних для обміну повідомленнями та даними між SL4A RPC Server та його клієнтами. Цей формат є основою для роботи тому нижче подамо короткий огляд JSON.

Акронім JSON спочатку використав Дуглас Крокфорд. Формат даних JSON описаний в RFC 4627,9

Цитата з специфікації про JSON:

«JavaScript Object Notation (JSON) являє собою легкий, текстовий, незалежний від мови формат обміну даними. Вона булла взята з ECMAScript стандарту мови програмування. JSON визначає малі набір правил форматування для представлення структурованих даних в портативних пристроях. JSON може представляти чотири примітивні типи (рядки, числа, логічні,змінні і нуль) і два структуровані типи (об'єкти та масиви).»

Щоб дати уявлення про цей формат даних навдем приклад JSON обєкта. (лістинг 2.4.1)


Лістинг 2.4.1 Приклад JSON обєкта

{

"Image":

{

"Width":

,

"Height":

,

"Title":

"View

from

th

Floor",

"Thumbnail":

{

"Url":

"#"justify">"Height":

,

"Width":

"100"

},

"IDs":

[116,

,

,

]CHAPTER 5: Introducing SL4A: The Scripting 210 Layer for Android

}

}


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

Мови сценаріїв портуються, через крос-компіляцію, або інакше, для Android платформи в їх чистому вигляді уникаючи будь-яких змін вихідного коду. Це означає, що скриптова мова не має відомостей про платформу Android. Він отримує доступ до Android API за допомогою спеціального модуля зазвичай реалізується на мові сценаріїв, та має доступ до Android API на віддаленому сервері SL4A RPC.(рис.2.1.1).


Рис.2.1.1 Архітектура SL4A


Серед усіх мов які підтримуються SL4A, було обрано Python, через:

-кросплатформовість[6]

Python працює практично на усіх сучасних платформах. Існує досить багато модифікацій[12]. Найбільш популярні - це CPython (під x86), Jython (під Java), IronPython (під .NET), PyS60 (під Symbian)[14].

код написаний на Python в рази менший за еквівалент на Java[7]

§Python не використовує окремих лексем для виділення блоку.[9]

§Python використовує динаміну типізацію.[10]

§Python використовує спрощений, інтуїтивно зрозумілий, синтаксис.[11]

-гнучкість і швидкість розробки[8]

Швидкість розробки програми на мові Python значно вища аніж на Java[13].

2.2.Встановлення Android SDK


Android SDK - це набір програм необхідних для розробки програм для Android[4]. Містить емулятор, утиліти передачі файлів між емулятором та компютером.

Завантажити Android sdk можна з зображеного на рис. 2.2.1.


Рис.2.2.1 Сайт


Процес завантаження зображений на рис.2.2.2.


Рис.2.2.2 Завантаження Android sdk


.Стартуєм програму AVD Manager з пакету Android SDK. Як це зробити зображено на рис.2.2.3.


Рис.2.2.3 Запуск AVD Manager


.Тепер потрібно встановити сам пакет під конкретну платформу. В списку Avaliable Package вибираєм SDK Platform 2.2. (рис.2.2.4)


Рис.2.2.4. AVD Manager: Avaliable Packages


3.Створюєм віртуальний пристрій з ОС Android 2.2 (рис.2.2.5)


Рис.2.2.5 Створення віртуального пристрою

.Стартуєм віртуальний пристрій. (рис.2.2.6)


Рис.2.2.6 Запуск віртуального пристрою


.3 Встановлення SL4A


Для запуску програми (рис.2.3.1) наобхідно написнути на посилання в головному меню ОС Android.


Рис. 2.3.1 Запуск SL4A


Після запуску зявиться вікно (рис.2.3.2) зі списком файлів скритів та діями над ними.


Рис.2.3.2 Головне вікно програми


Для перегляду всіх встановлених інтерпретаторів необхідно натиснути кнопку View і вибрати пункт Interpretators (рис.2.3.3)


Рис.2.3.3 SL4A перегляд інтерпретаторів


Перед нами зявився список всіх інтерпретарів встановлених в середовищі(рис.2.3.4). Як бачимо середовище містить лише інтерпретатор командного рядка Linux - Shell.


Рис. 2.3.4 SL4A інтерпретатори: Shell

Інтерпретатор можна запустити клікнувши на ньому (рис.2.3.5.) Як видно з рисунку в інтерпретаторі була введені команди

$echo $PATH

та

$top


Рис.2.3.5 Команди Shell


Це означає що середовище SL4A було успішно встановлене. Проте для написання програм на мові Python необхідно встановити інтерпретатор Python.

З вікна Інтерпретатори (рис.2.3.4) натискаєм кнопку Add. У списку, що зявився вибираєм пункт Python.(рис.2.3.6)


Рис.2.3.6 Додавання Інтерпретатора


Після цього запуститься завантаження APK файлу інтерпретатора Python з сайту SL4A (рис.2.3.7).

Рис.2.3.7 SL4A Додавання інтерпретатора: Python завантажений

Вибираєм файл python_for_android.apk. Після чого зявиться вікно встановлення Python (рис.2.3.8).


Рис.2.3.8 SL4A Додавання інтерпретатора: встановлення Python


Необхідно натиснути на кнопку Install.

Процес встановлення може зайняти певний час. Протягом встановлення буде відображатись вікно встановлення Python for Android (рис.2.3.9).


Рис.2.3.9 SL4A Додавання інтерпретатора: встановлення Python

Якщо інсталяція завершиться успішно то на екрані зявиться вікно з повідомленням Application Installed(рис.2.3.10).

Рис.2.3.10 SL4A Додавання інтерпретатора: Python встановлений


Отже середовище SL4A встановлено, інтерпретатор мови Python встановлено. Що ще? Ще можна встановити файли підтримки до інтерпретатора Python. Для цього необхідно натиснути кнопку Open (рис.2.3.11). Інакше натиснути Done, щоб вийти.


Рис.2.3.11 Додавання інтерпретатора: Встановлення файлів підтримки


Встановлення файлів підтримки проводиться через інтернет тому спочатку буде проводитись завантаження файлів підтримки(рис.2.3.12), а потім встановлення.


Рис.2.3.12 Додавання інтерпретатора: Процес встановлення файлів підтримки

Якщо встановлення пройшло успішно то на екрані повинне зявитись вікно Python for Android (рис.2.3.12). Не наскати кнопку Uninstall.


Рис. 2.3.13 Додавання інтерпретатора: Встановлення файлів підтримки завершене

Повертаємось назад до SL4A список інтерпретаторів. Тепер у списку інтерпретаторів має зявитись ще один пунк - Python -<version> (рис.2.3.14).


Рис.2.3.14 Додавання інтерпретатора: Встановлення інтерпретатора завершене


Встановлення SL4A та Python успішно завершене. Тепер можна запустити Python у відлагоджувальному режимі.


Рис.2.3.15 SL4A. Python діалоговий режим

Для демонстрації взаємодії з Android API наберіть лістинг програми 2.3.1.


Лістинг.2.3.1

import android=android.Android().makeToast('Hello Practical Android Projects!')


На екрані повинно зявитись повідомлення (рис.2.3.16).


Рис.2.3.16 Результат лістингу 2.3.1


.4 Створення файлів, встановлення додатків Android (APK) з файлів скриптів на мові Python (*.py)


Середовище SL4A надає доступ до інтерпретора Python. Програми на мові Python представлені у вигляді *.py файлів що містять код програми. Це дуже зручно при розробці та відлагодженню програми, так як це дозволяє зекономити багато часу. Проте рано чи пізно виникає необхідність переносу програми на інший пристрій. Якщо в наявності є лише файл *.py то для переносу на інший пристрій необхідно на нбому, пристрої, встановлювати SL4A та Python, що є дуже незручно. Тому зявляється необхідність в конвертуванні *.py файлу в готовий додаток Android (*.apk)[5].

Для того, щоб це зробити необхідно виконати наступні кроки.

Перш за все необхідно завантажити та встановити Java Development Kit (JDK) з сайту Oracle,

Наступним кроком є завантаження та встановлення Eclipse Helios.

Далі нам необхідно завантажити та встановити Android Software Development Kit (SDK).

При запуску Eclipse створити робочу директорію та встановити ADT Plugin.

В Eclipse Window/Preferenses/Android вказати директорію з Android SDK.

Завантажити та встановити Mercurial

Створити робочу директорію sl4a командою: hg clone

Імпортувати в Eclipse проект директорію sl4a через File/Import/General/Existing Project

Включити ANDROID_SDK в списку Classpath Variable що знаходиться вWindows/Preferences/Java/BuildPathVariables/New.

Натиснути Project/Build Automatically, потім Project/Clean/Clean all Projects/OK.

Далі необхідно додати скрипт в директорію з проектом. Виділіть правою кнопкою миші файл build.xml /Run As/Ant Build. Перейменувати проект на свій смак через Refactor/Rename та /Refresh/Clean/Build the project.

Підєднати телефон до PC Натисніть settings/Connect to PC/Default connection type/Charge only/Done/Home

На телефоні слід натиснути /Applications/Development/USB debugging/OK/

З Eclipse встановити клон SL4A на телефон натисканням ScriptingLayerForAndroid щоб підсвітити, а потім Run/Run/AndroidApplication/OK.

Після встановлення SL4A клікнути на проекті, а потім Run/Run/AndroidApplication/OK.

Подвійний клік на пректі /res/drawable. Замінити Script_logo_48.png на зображення 48x48 що буде логотипом програми.

В файлі strings.xml. змінити Dummy Script на імя програми. Правий клік на екрані, щоб зберегти зміни.

Через Refactor/Rename змінити script.py на your_script_name.py тоді подвійний клік src/com.dummy.fooforandroid/Script.java щоб змінити R.raw.script на R.raw.your_script_name та зберегти зміни.

Подвійний клік src і перейменовуєм Refactor/Rename імя пакету com.dummy.fooforandroid на your.package.name

Через Project/Properties/Android вибрати версію Андроїда та натиснути OK

Подвійний клік на AndroidManifest.xml. Змінюємімя пакету в маніфесті з com.dummy.fooforandroid на your.package.name. Змінюєм minSdkVersion з "8".

Правий клік на your_script_name для відкиття його в текстовому редакторі. Виділяєм скрипт по замовчуванню, замінюєм його своїм власним і зберігаєм. Тоді Clean/Build/Refresh у проекті та запускаєм його. Якщо все пройшло успішно натискаєм File/Export для експорту в apk. Копіюєм apk на телефон та встановлюєм його.


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


.1 Загальна структура програми


Загальна структура структура програми представлена на схемі (рис.3.1.1).


Рис.3.1.1 Структура програми


Програма розділена на 5 незалежних модулів. Кожен модуль, окрім contacts_stat, виконує збір та аналіз статистичних даних про контакти або повідомлення виконує специфічних аналіз та відображає результати. Програма є високорівнева. Першим рівнем є Android API на мові Java, що надається через Android SDK. Наступним рівнем є середовище SL4A, що є написане на Java, яка надає API для Python. Саме з цього інтерфейсу отримується функції для роботи з контактами та повідомленнями.

3.2. Діаграма класів


При розробці програми мною також було створено діаграму класів (Рис.3.2.1). Діаграма класів це статичне представлення структури моделі[16]. Вона відображає статичні (декларативні) елементи, такі як: класи, типи даних, їх зміст та відношення. Також, діаграма класів може містити позначення деяких елементів поведінки, однак, їх динаміку розкрито в діаграмах інших типів[17].


Рис. 3.2.1 Діаграма класів


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

Як видно з рисунку всього програма налічує 5 класів. Кожен клас має певну тематику. Кожен модуль представляє власний графічний інтерфейс, тому у кожному модулю є екземпляр класу android.Android. Кожен клас має зміннну contacts_name так як усі вони працюють з списком контактів. Усі поля є публічними (доступними), так як в мові Python усі поля є доступними.

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


3.3.Опис збору та аналізу даних


Модуль contacts_reiting.py виконує збір даних про контакти, так як показана в лістингу 3.3.1.


Лістинг 3.3.1 Збір даних про контакти в contacts_reiting.py

def collect_contacts(self):

"""collect usefull information about contacts from Android"""_length = self.droid.contactsGetCount().resultcontacts_length == 0:"Error: You have not contacts yet".exit(1)= self.droid.contactsGet(['name','times_contacted'])i in range(len(contacts.result)):.contacts_name = self.contacts_name + [[contacts.result[i]['name'],.result[i]['times_contacted']]]self.contacts_name


Після чого аналізує їх (сортує за кількістю дзвінків) так, як показано в лістингу 3.3.2.


Лістинг 3.3.2 Аналіз контактів в contacts_reiting.py

def sort_contacts(self):

"""sort contacts by times_colled"""i in range(len(self.contacts_name)):= []j in xrange(1, len(self.contacts_name)):= self.contacts_name[j]self.contacts_name[j][1] > self.contacts_name[j-1][1]:.contacts_name[j] = self.contacts_name[j-1].contacts_name[j-1] = tmpself.contacts_name


Модуль activity_chart.py виконує збір даних про контакти, так як показана в лістингу 3.3.3. Тут використовується клас contact_managment з contact_reiting.py, оскільки збір відбувається аналогічно.


Лістинг 3.3.3 Збір даних про контакти в wordstat.py

contacts = contact_reiting.contacts_managment(droid)_all = contacts.get_contacts()

Після чого створює запит до #"justify">Лістинг 3.3.4 Створення запиту activity_chart.pyget_chart_url(self):

"""generate url for #"justify">#generate labelsi in range(0,len(self.contacts_name),2):(i != len(self.contacts_name) - 1):.chart_labels += self.contacts_name[i] + "|":.chart_labels += self.contacts_name[i]

#generate datai in range(1,len(self.contacts_name),2):(i != len(self.contacts_name) - 1):.chart_data += str(self.contacts_name[i]) + ",":.chart_data += str(self.contacts_name[i])= self.base_url + self.chart_type + "&" + self.chart_data + "&"+= self.chart_size + "&" + self.chart_labels

Модуль wordstat.py виконує збір даних про повідомлення, так як показана в лістингу 3.3.5.


Лістинг 3.3.5 Збір даних про повідомлення в wordstat.py

self.droid = android.Android().messanges = self.droid.smsGetMessanges(False).result

Після чого аналізує дані так, як показано в лістингу 3.3.6.


Лістинг 3.3.6 Аналіз повідомлень в wordstat.py= [].stat = {}self.messanges != None:i in self.messanges:= string.split(i, " ")j in words:not self.stat.has_key(j):.stat[j] = 1:.stat[j] = self.stat[j] + 1

Модуль socio_matrix.py виконує збір даних про контакти, так як показана в лістингу 3.3.7. Тут використовується клас contact_managment з contact_reiting.py, оскільки збір відбувається аналогічно.


Лістинг 3.3.7 Збір даних про дзвінки в socio_matrix.py

contacts = contact_reiting.contacts_managment(droid).data = contacts.get_contacts()

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


.4 Розробка графічного інтерфейсу користувача


Програма contacts_stat повинна працювати на Android смартфонах. Тому основною вимогою при розробці була простота інтерфейсу програми.

Програма складається з 5 модулів: activity_chart.py, contact_reiting.py, contacts_stat.py, socio_matrix.py, wordstat.py, about.py. Кожен з яких містить власний графічний інтерфейс, власний головний метод модуля та може використовуватись окремо. Головний модуль contacts_stat.py - це лише оболонка над усіма модулями.

Модуль activity_chart.py виводить графік дзвінків на екран (рис.3.4.1).


Рис.3.4.1 Графік дзвінків


Насправді contacts_stat не малює графік. Модуль activity_chart.py формує запит до сервісу #"justify">droid = android.Android()

contacts = contact_reiting.contacts_managment(droid)

contacts_all = contacts.get_contacts()= chart(contacts_all)= chrt.get_chart_url()

droid.webViewShow(url)


Модуль contact_reiting.py виводить на екран список всіх контактів в порядку зменшення кількості дзвінків до них. (рис.3.4.2)


Рис.3.4.2 Рейтинг контактів


Графічний інтерфейс представлений вікном з вбудованим списком. Лістинг інтерфейсу представлений лістингом 3.4.2.


Лістинг 3.4.2 Графічний інтерфейс contact_reiting.py

droid = android.Android().dialogCreateAlert("Contacts reiting")= contacts_managment(droid).sort_contacts()= contacts.get_contacts_names().dialogSetItems(menu).dialogShow()= droid.dialogGetResponse()

droid.dialogDismiss()


Модуль contacts_stat.py виводить на екран список усіх функцій проекту. (рис.3.4.3)

Рис.3.4.3 Головне вікно програми contacts_stat


Графічний інтерфейс представлений вікном з вбудованим списком. Лістинг інтерфейсу представлений лістингом 3.4.3.


Лістинг 3.4.3 Графічний інтерфейс contact_stat.py

droid = android.Android().dialogCreateAlert("contacts_stat")= ["Contact reiting",

"Socio matrix",

"Activity chart",

"Word statistic",

"About"].dialogSetItems(items).dialogShow()

response = droid.dialogGetResponse()


Модуль socio_matrix.py виводить на екран список всіх контактів.

Згідно Дж.Як. Морено цей список можна використати як соціоматрицю, що в свою чергу використовується для побудови соціограми. (рис.3.4.4).


Рис.3.4.4 Соціо матриця


Графічний інтерфейс представлений вікном з вбудованим списком. Лістинг інтерфейсу представлений лістингом 3.4.4.


Лістинг 3.4.4 Графічний інтерфейс contact_stat.py

droid = android.Android().dialogCreateAlert("Socio matrix")_table = socio(droid)= socio_table.contacts_to_list().dialogSetItems(items).dialogShow()= droid.dialogGetResponse()

droid.dialogDismiss()


Модуль wordstat.py виводить на екран список слів за частоту вживання у повідомленні. (рис.3.4.5) Нажаль, цей модуль працює виключно на реальному пристрої з Android 2.2.


Рис.3.4.5 Статистика вживання слів у повідомленнях


Графічний інтерфейс представлений вікном з вбудованим списком. Лістинг інтерфейсу представлений лістингом 3.4.5.


Лістинг 3.4.5 Графічний інтерфейс wordstat.py

self.droid.dialogCreateAlert("Word statistic")= self.stat.keys()keys == []:.droid.dialogCreateAlert("Error:",

"Sorry, but you have not any messanges yet.").droid.dialogShow()= self.droid.dialogGetResponse().droid.dialogDismiss().exit(1):

#convert to list= self.stat.keys()= []i in range(len(keys)):j in range(len(keys)):(self.stat[keys[i]] < self.stat[keys[j]]):[i], keys[j] = keys[j], keys[i]= socio_matrix.socio(self.droid)i in keys:+= [i, self.stat[i]].data = data= socio.contacts_to_list().droid.dialogSetItems(items).droid.dialogShow()= self.droid.dialogGetResponse()

self.droid.dialogDismiss()


Модуль about.py виводить на екран список слів за частоту вживання у повідомленні. (рис.3.4.6) Нажаль, цей модуль працює виключно на реальному пристрої з Android 2.2.


Рис.3.4.6 Вікно Про


Графічний інтерфейс представлений вікном з вбудованим списком. Лістинг інтерфейсу представлений лістингом 3.3.6.


Лістинг 3.4.6 Графічний інтерфейс about.py

droid = android.Android()

droid.dialogCreateAlert("About")= ["Name: contacts_stat",

"Author: Yuriy Volokh",

"E-mail: [email protected]",

"Web site: www.yuriyvolokh.co.cc"].dialogSetItems(items).dialogShow()= droid.dialogGetResponse()

droid.dialogDismiss()

інтелектуальний агент android статистичний

3.5 Розробка тестів


Тестування програмного забезпечення це процес, що використовується для виміру якості розроблюваного програмного забезпечення <#"justify">При розробці проекту була розроблена система тестів. На кожен модуль по одному тесту. Тест представлений однією функцією, котра передає вхідні дані у класс, а після цього звіряє отриманий результат з очікуваним. Якщо вони не співпадаєть то программа падає через AssertionError.


Тест №1 для модуля activity_chart.py

Модулю activity_chart.py на вхід подається список контактів та кількість їх викликів. З цих даних він повинен сформувати запит (url - адресу) на сервіс Google Chart.

def test_chart_url(self):

"""Test for chart class"""

data = ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3].contacts_name = data_return =

"#"justify">returned_url = self.get_chart_url()

assert url == returned_url


Тест №2 для модуля contact_reiting.py

Модулю contact_reiting.py на вхід подається список контактів та кількість їх викликів. Він повинен посортувати ці дані за спаданням.

def test_contact_managment(self):

"""test for contact managment class"""_input = [["Victor Janukovych", 2],

["Victor Yuschenko", 5],

["Bill Clinton", 3]]_result = [["Victor Yuschenko", 5],

["Bill Clinton", 3],

["Victor Janukovych", 2]].contacts_name = contacts_input.sort_contacts()_result = self.get_contacts()

assert contacts_result == returned_result


Тест №3 для модуля socio_matrix.py

Модулю socio_matrix.py на вхід подається список контактів та кількість їх викликів. Він повинен вирівняти їх за довжиною.

def test_socio_matrix(self):

"""Test for socio matrix class"""= ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3]_result = ["Victor Janukovych 2",

"Victor Yuschenko 5",

"Bill Clinton 3"].data = data_data = contacts_to_list()

assert returned_data == data_result


Тест №4 для модуля wordstat.py

Модулю wordstat.py на вхід подається список повідомлень. З цих даних він повинен сформувати словник найчастіше уживаних слів.

def test_wordstat(self):

"""Test for statistic"""_messange1 = "today we have a race You with us"_messange2 = "Race today at 04:00 am".messanges = [test_messange1, test_messange2]= {"today": 2, "race":2, "we":1, "have":1,

"a":1, "You":1, "with":1, "us":1, "at":1,

"04:00":1, "am":1}.get_stat()_stat = self.stat

assert stat == self.stat


4. Економічна частина


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

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


.1 Розрахунок витрат на розробку та впровадження проектного рішення


Витрати на розробку і впровадження програмних засобів (К) включають:


К = K1+K2,(4.1)


де K1 - витрати на розробку програмних засобів, грн.;- витрати на відлагодження і дослідну експлуатацію програмного засобу на ЕОМ, грн.

Витрати на розробку програмних засобів (K1)включають:

·витрати на оплату праці розробників (3);

·витрати на спеціалізовані засоби розробки програмного забезпечення;

·витрати на збори у спеціальні державні фонди (Вф);

·витрати на покупні вироби (Пв);

·витрати на придбання спец-обладнання для проведення експериментальних робіт та тестування (Об);

·накладні витрати (Нв);

·інші витрати (Ів).

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

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

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

·керівник проекту (К);

·студент-дипломник (СД);

·консультант з економічної частини (КЕ);

·консультант з охорони праці (КО);

Згідно зі штатним розписом НУ Львівська політехніка місячний оклад (стипендія) розробника припустимо в середньому становить:

·Керівник проекту, доцент - 2100 грн;

·студент-дипломник - 600 грн;

·Консультант із економічної частини - 1714 грн;

·Консультант із охорони праці - 2100 грн;

Денна ЗП кожного розробника (Сі) обчислюється за формулою:


(4.2)


де - основна місячна ЗП розробника і-ї спеціальності, грн.;

h - коефіцієнт, що визначає розмір додаткової ЗП (приймемо h рівним 0.2); p - середня кількість робочих днів у місяці (22 дні).

Значення денної ЗП розробників:

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


(4.3)


де ni - чисельність розробників проекту і-ої спеціальності, чол.; ti, - час, витрачений на розробку проекту працівником і-ої спеціальності, дні.; Сi , - денна ЗП розробника і-ої спеціальності, грн.

Витрати на оплату праці розробників складають:

грн

грн

грн

грн

Розрахунок витрат на оплату праці розробників проекту зводимо у таблиці 4.1. Сумарні витрати на оплату праці розробників складають:

грн


Таблиця 4.1 Розрахунок витрат на оплату праці

П/пСпеціальність розробникаКількість Розробників чол. (ni)Час роботи, днів (ti)Денна ЗП розробника, грн. (Сi)Витрати на оплату праці, грн. (Зi)1Керівник проекту110114,541145,42студент-розробник16032,721963,23Консультант з економічних питань1193,4993,494Консультант з питань охорони праці11114,54114,54Всього3316,63

Величину зборів у спеціальні державні фонди визначають у процентному співвідношенні від суми фонду оплати праці, в тому числі:

  • збори в обов'язкові фонди соціального страхування - 2,1%

грн

  • збори в обов'язкові фонди по безробіттю - 1.9%

грн

  • збори в обов'язковий державний пенсійний фонд - 32%

грн

  • збори у фонд страхування від нещасних випадків - 0,2%

грн

Сумарні витрати на збори у спеціальні державні фонди складають:

грн

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

Вихідні дані та результати розрахунків оформлені у вигляді таблиці 4.2. Транспортно-заготівельні витрати складають 10 - 15 % від суми витрат на куповані вироби.


Таблиця 4.2 Розрахунок витрат на куповані вироби

№ з/пНайменування купованих виробівМарка, типК-сть на розробку, шт.Ціна за одиницю, грн.Сума витрат, грн.Сума витрат з урахуванням трансп.-загот. витрат, грн.1ДискиCD-R12,502,5032Папір(пачок)Формат А41303033Всього36

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

Нв = 0,3 х 3316,63 = 994,98(грн.).

Інші витрати відображають видатки, які не враховані в попередніх статтях витрат. Вони розраховуються за встановленими процентами (10%) до витрат на оплату праці і складають:

Ів = 0,1 х 3316,63 =331,663(грн.)

Витрати на розробку проектного рішення обчислюємо за формулою:


К1 = З + Вф +Пф+ Нв + Ів (4.4)


Підставивши результати розрахунків, отримаємо:

К1 = 3316,63+1200,6+1061,32+994,98+331,663= 5704,59 (грн.)

Витрати на відлагодження і дослідну експлуатацію програми визначаємо з формули:


(4.5)

Вартість оренди однієї машино-години роботи ПК у домашніх умовах складає вартість спожитої електричної енергії. Системний блок 250 Ват + монітор 60 Ват = 310 Ват, отже за годину буде спожито 0,56 КВат. На відлагодження і дослідну експлуатацію інформаційної системи затрачено 115 год. Отже, спожито 0,56 * 115 = 64,4 Кват/Год. З розрахунку діючого тарифу (0,23 Грн/Кват) витрати за годину становили 0,56*0,23=0,1288 (грн), а сумарні витрати становили: 64,4 * 0,23 = 14,81 грн.

Таким чином видатки на відлагодження і дослідну експлуатацію становлять:


Таблиця 4.3 Кошторис витрат на розробку проектного рішення

№ ппНайменування елемента витратСума витрат, грн1Витрати на оплату праці3316,633Витрати на експлуатацію ПЕОМ14,814Витрати на куповані вироби362Збори у спеціальні державні фонди1200,65Накладні витрати994,986Інші витрати331,663Всього5894.68

4.2.Вибір і обґрунтування аналогу


Для вирішення проектної задачі можуть бути використаний аналог YeaYe. Це програма з використанням бібліотек браузера доповненої реальності Wikitude. З іншого боку в дипломній роботі розробляється подібна програма, але у спрощеному вигляді.

1.Показники призначення;

.1.Стійкість до некоректних дій користувача;

.2.Вартість від лагодження;

.Показники надійності;

.1.Стійкість до некоректних дій користувача;

2.2.Стійкість до зовнішніх впливів;

3.Ергономічність інтерфейсу;

.1.Зручність експлуатації;

3.2.Зручність інтерфейсу;

4.Естетичні показники;

.1.Раціональність форми;

4.2.Товарний вигляд;

5.Показники технологічності;

5.1.Застосування сучасних технологій;


Таблиця 4.4

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

Назва показникаОдини-ця виміруЧислове значення показникаДиференційна оцінка розроблюваного ПЗПроектне рішенняАналог1. Показники призначення:1.1. Час проектуваннягод33,5Перевищує1.2. Обєм дискового просторуМб23Перевищує2. Показники надійності:2.1. Стійкість програми до некоректних дій користувача%8085Не відповідає3. Ергономічні показники:3.1. Зручність інтерфейсуБали1010Відповідає4. Естетичні показники:4.1. Раціональність формиБали88Відповідає4.2. Товарний виглядБали68Не відповідає5. Показник технологічності:5.1. Застосування сучасних технологій%100100Відповідає

4.3.Визначення комплексного показника якості розробки


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

?я = ?qя x ai(4.6)


Де ai - коефіцієнт вагомості і-го показника якості, що визначає відносну значущість у формуванні сукупної якості, визначається експертними методами з умови:

?аі = 1і - показник рівня якості, визначений на основі одного часткового показника за формулами:

і = ?і2 / ?і1(4.7)

абоі = ?і1 / ?і2(4.8)


де ?і1 і ?і2 числові значення і-го часткового показника якості відповідно аналога і розроблюваного програмного забезпечення.

Розрахунок за формулою (6.7) використовується, якщо збільшення числового значення показника відповідає покращення якості. Розрахунок за формулою (6.8) виконується, якщо покращення якості відповідає зменшенням числового значення показників.


Таблиця 4.5 Визначення комплексного показника рівня якості проектного рішення за параметрами

Назва показникаОдиниця виміруЧислове значення показникаЧастковий показник рівня якостіКоефіцієнт вагомості показникаqi*aiПроектне рішенняАналог1. Показники призначення:1.1. Час проектуваннягод.33,51,170,20,2341.2. Обєм дискового просторуМб231,50,20,32. Показники надійності:2.1. Стійкість програми до некоректних дій користувача%80851,060,20,2123. Ергономічні показники:3.1. Зручність інтерфейсуБали101010,150,154. Естетичні показники:4.1. Раціональність формиБали8810,050,054.2. Товарний виглядБали681,30,10,135. Показник технологічності5.1. Застосування сучасних технологій%10010010,10,1Підсумок1,18

4.4.Визначення експлуатаційних витрат


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


,(4.9)


де N - періодичність експлуатації проектного рішення (аналогу), разів/рік;

ЕП(а) - одноразові експлуатаційні витрати на проектне рішення (аналог), грн.

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

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

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


,(4.10)

де ЕП(а) - одноразові експлуатаційні витрати на проектне рішення (аналог), грн.;

Е1П(а) - вартість підготовки даних для експлуатації проектного рішення (аналогу), грн.;

Е2П(а) - вартість машино-годин роботи ЕОМ для виконання проектного рішення (аналогу), грн..

Вартість підготовки даних для роботи на ЕОМ визначаємо з формули:


Е1П(а) = (4.11)


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

Сі - годинна ставка співробітника і-ої категорії, грн./год.

Основна місячна заробітна плата оператора ЕОМ складає 1200 грн./міс.

Величину зборів у спеціальні державні фонди визначають у процентному співвідношенні від суми фонду оплати праці, в тому числі:

  • збори в обов'язкові фонди соціального страхування - 2,1%
  • CC = 1200 х 0,021 = 25,2 (грн.)
  • збори в обов'язкові фонди по безробіттю - 1.9%

ФБ = 1200 х 0,019 = 22,8 (грн.)

·збори у обов'язковий державний пенсійний фонд - 32 %

ПФ = 1200 х 0,32 = 384 (грн.)

  • збори у фонд страхування від нещасних випадків - 0,2%

ФС=1200 х 0,002=2,4 (грн.)

Сумарні витрати на збори у спеціальні державні фонди становлять

ВФ = 25,2 + 22,8 + 384 + 2,4 = 434,4 (грн.)

Тоді основна місячна заробітна плата оператора ЕОМ з врахуванням виплат у державні фонди буде становити 1200 + 434,4 = 1634,4 (грн.).

Кількість робочих годин у місяці - 176 (22 дні по 8 год.). Тоді середньогодинна ставка оператора дорівнює: С = 1634,4 / 176 = 9,29 (грн.)

Вихідні дані та результати розрахунків витрат на підготовку даних для експлуатації на ЕОМ зводимо у таблицю 6.6.


Таблиця 4.6 Розрахунок витрат на підготовку даних для роботи на ЕОМ

Категорія персоналуЧисельність співробітників і-тої Категорії, чол.Час роботи співробітників і-тої категорії, год.Середньогодина ЗП співробітника і-тої категорії, грн.Витрати на підготовку даних, грн.Проектне рішення Адміністратора119,299,29Всього:9,29Аналог Оператор11,59,2913,93Всього:13,93

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


Е2П(а) = Sm * t, (4.12)


де t - витрати машинного часу для реалізації проектного рішення- вартість однієї машинної години роботи ЕОМ, грн./год.

Е2П = 0,1288 x 1= 0,1288 грн.

Е2A = 2,5 x 1,5= 3,75 грн.

Таким чином, одноразові експлуатаційні витрати по проектному рішенню складають:

0,1288 + 9,29 = 9,42 грн.

3,75 + 13,93 = 17,68 грн.

Тоді річні експлуатаційні витрати складають:

В(е)П = 9,42 x 232 = 2185,44 грн.

В(е)A = 17,68 x 232 = 4101,76 грн.


4.5.Розрахунок ціни споживання проектного рішення


Ціна споживання (Цс) - це витрати на придбання і експлуатацію проектного рішення за весь строк його служби:


ЦС(П) = ЦП + В(е)П pv,(4.13)


де ЦП - ціна придбання проектного рішення, грн.:


ЦП = K* (1+Пр/100)+Ко +Кк,(4.14)


де Пр - норматив рентабельності (30%);

Ко - витрати на прив'язку та освоєння проектного рішення на конкретному об'єкті (дорівнює нулю);

Кк - витрати на доукомплектування .технічних засобів на об'єкті (дорівнює нулю).

Таким чином, ціна придбання проектного рішення дорівнює:

ЦП = 5894,68 х (1+0,3) = 7663,08 (грн.)

В(е)П pv - теперішня вартість витрат на експлуатацію проектного рішення (за весь час його експлуатації), грн.:


В(е)П pv = ,(4.15)


де В(е)П_t - річні експлуатаційні витрати в t-ому році, грн.;

Т - строк служби проектного рішення, років; R - річна ставка проценту банків (приймається рівним 0,08).

Якщо впродовж всього строку експлуатації В(е)П_t = const, то :


В(е)П pv = В(е)П * = pv * В(е)П,(4.16)


де pv - коефіцієнт дисконту на період Т, який визначається залежно від процентної ставки R і періоду експлуатації Т (для нашого випадку Т = 4 роки).

Для даних R і Т отримаємо наступне значення коефіцієнта дисконту: pv=2,58.

Тоді ціна споживання проектного рішення дорівнюватиме:

Цс(П) = 3413,62 + 2185,44 х 2,58 = 9052,055 (грн.).

Аналогічно визначається ціна споживання для аналогу:

Цс(а) = 4101,76 х 2,58 = 10582,540(грн.)


4.6.Визначення показників економічної ефективності


Коефіцієнт конкурентноздатності проектного рішення за ціновими параметрами:


Ккз = Кяк x Цс(а) / Цс(П) ;(4.17)


Ккз = 1,18 x 10582,540 / 9052,055.

Економічний ефект в сфері експлуатації:


Еекс = В(е)а - В(е)П ;(4.18)


Еекс =4101,76 - 2185,44 = 1916,32 (грн.)

Розраховуємо строк окупності витрат на проектування рішення:

Ток = К / Еекс ; (4.19)


Ток = 3413,62 / 1916,32 = 1,78

Оскільки Еекс>0, то розраховується додатковий економічний ефект в сфері експлуатації:


Еекс = Еекс x (1+R)Т , (4.20)


де в нашому випадку Т=4;

Еекс = 1916,32 * (1+0,1)4 = 2805,684 (грн.) .

і додатковий економічний ефект в сфері експлуатації:


;(4.21)


=8893,641


Таблиця 4.8 Показники економічної ефективності проектного рішення

№ з/пНайменування показниківОдиниця вимірю-ванняЗначення показниківБазовий варіантНовий варіант1Капітальні вкладеннягрн.-3413,622Ціна придбаннягрн.04437,703Річні експлуатаційні витратигрн.4101,762185,444Ціна споживаннягрн.10582,5409052,0555Економічний ефект в сфері проектуваннягрн.--6Додатковий ефект в сфері проектуваннягрн.--7Економічний ефект в сфері експлуатаціїгрн.-1916,328Додатковий ефект в сфері експлуатаціїгрн.-8893,6419Коефіцієнт конкурентноздатності-1,38

Висновок


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


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


.1 Характеристика обєкту дослідження


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

-Погіршення зору

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

-Вплив електромагнітних хвиль

Мобільні пристрої завдають шкоди організму через те що вони знаходяться в постійному пошуку точки доступу - найблищої «вишки». Цей процес супроводжується постійним прийомом та передачею електромагнітних хвиль. Єдиним способом боротьби з цим є використання більш сучасних мобільних пристроїв.


5.2 Вплив електростатичних та електромагнітних полів на оргнанізм людини


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

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

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

Так без природного електромагнітного випромінювання людина жити не може, а штучне надає неоднозначний вплив на його організм. Тому метою вивчення електромагнітних випромінювань є правильний захист від електромагнітних випромінювань щоб уникнути змін в організмі людини.
Всі промислові і побутові електро-і радіозв'язку є джерелами штучних полів і випромінювань, але різної інтенсивності. В промисловості для проведення контролю на робочих місцях для електричних полів промислової частоти використовується ГОСТ 12.1.002-84, а також для електромагнітних полів радіочастот - в ГОСТ 12.1.006-84.
Перший встановлює гранично допустимі рівні напруги електричного поля частотою 50 Гц для персоналу, що обслуговує електрообладнання і знаходиться в зні впливу створюваного ним електричного поля, в залежності від часу перебування в електричному полі, а також вимоги до проведення контролю рівнів напруги в електричний полях на робочих місцях.

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

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

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

Їх рівень регулюється ГОСТ 12.1.045-84 « Електростатичні поля».

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

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

Джерелами електростатичного поля та електромагнітних випромінювань в широкому діапазоні частот є персональні електронно-обчислювальні машини (ПЕОМ), відео дисплейні термінали (ВДТ) на електронно-променевих трубках, які використовуються як у промисловості, наукових дослідженнях, так і в побуті. Головну небезпеку для користувачів представляє електромагнітне випромінювання монітора і статичний електричний заряд на екрані.

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

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

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

При підвищенні частоти зовнішнього електромагнітного поля електростатичні властивості живих тканин змінюється.

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

Органи і тканини людини, що володіють слабко вираженою терморегуляцією, більш чутливі до опромінення (мозок, очі, нирки <#"justify">Висновки


1.В бакалаврьскій квалійікаційній роботі розглянуто проблему розробки програмної системи збору та аналізу статистичних даних про контакти користувача мобільного обчислювального пристрою під управлінням ОС Android. В роботі спроектовано та розроблено програмну систему збору та аналізу статистичних даних про контакти користувача з можливістю її подальшого розвитку до рівня персонального інтелектуального програмного агента. Програмна система розроблена на мові Python на основі програмної платформи SL4A.

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

3.Поведено вибір інструметів розробки пограмної системи збору та аналізу статистичних даних про контакти користувача. Проведено: вибір мови програмування та середовища, встановлення Android SDK, створення файлів встановлення додатків Android з файлів скриптів на мові Python (*.py).

4.Розроблено пограмну систему збору та аналізу статистичних даних про контакти користувача. Розроблено: загальну структуру програми, діаграму класів, інтерфейс користувача та тести.

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

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


1. Левин К. Теория поля в социальных науках / [Пер. Е. Сурпина]. - СПб.: Речь, 2000.

. Морено, Я. Л. Социометрия: Экспериментальный метод и наука об обществе / Пер. с англ. А. Боковикова. - Москва: Академический Проект, 2001.

3. Голощапов А. Google Android: программирование для мобильных устройств. - CПб.: БХВ-Петербург, 2010. - С. 448.

. Роджерс Р., Ломбардо Д. Android. Разработка приложений. - Москва: ЭКОМ Паблишерз, 2010. - С. 400. - ISBN 978-5-9790-0113-5

. Коматинэни С., Маклин Д., Хэшими С. Google Android: программирование для мобильных устройств = Pro Android 2. - 1-е изд.. - CПб.: Питер, 2011. С. 736.

6. Бизли, Дэвид М. Python. Подробный справочник, 4-е издание. - Перевод с английского. - СПб.: Символ-Плюс, 2010. - 864 с.

. Бизли, Дэвид М. Язык программирования Python. Справочник. - К.: ДиаСофт, 2000. - 336 с.

. Лейнингем ван Иван. Освой самостоятельно Python за 24 часа = Teach Yourself Python in 24 Hours. - М.: Вильямс, 2001. - С. 448.

. Лутц, Марк. Программирование на Python: Перевод с английского (+CD). СПб.: Символ-Плюс, 2002. - 1136 с.

. Пилгрим М. Вглубь языка Python

. Россум ван Г., Дрейк Ф. Л. Дж., Откидач Д. С. и др. Язык программирования Python. - СПб.: АНО «Институт логики». Невский Диалект, 2001. - 189 с.

12. Саммерфилд, Марк. Программирование на Python 3. Подробное руководство. - Перевод с английского. - СПб.: Символ-Плюс, 2009. - 608

. Сузи, Р. А. Python. Наиболее полное руководство (+CD). - СПб.: БХВ-Петербург, 2002. - 768 с.

. Сузи Р. А. Язык программирования Python: Учебное пособие. - М.: ИНТУИТ, БИНОМ. Лаборатория знаний, 2006. - 328 с.

. Jordan L., Greyling P. Practical Android Project: après, 2011. - 424 с.

6. Джозеф Шмуллер. Освой самостоятельно UML 2 за 24 часа. Практическое руководство = Sams Teach Yourself UML in 24 Hours, Complete Starter Kit. - М.: Вильямс <#"justify">Додаток


Лістинг програми


#activity_chart.py

"""

@description: Module that show chart about contacts

@author: Yuriy Volokh, 2011

"""

androidcontact_reitingstring

chart:

"""Class that used for creating chart"""__init__(self, contacts_name):

"""Default constructor""".chart_type = "cht=lc".base_url = "#"justify">get_chart_url(self):

"""generate url for #"justify">#generate labelsi in range(0,len(self.contacts_name),2):(i != len(self.contacts_name) - 1):.chart_labels += string.split(self.contacts_name[i], " ")[0] + "|":.chart_labels += string.split(self.contacts_name[i], " ")[0]

#generate datai in range(1,len(self.contacts_name),2):(i != len(self.contacts_name) - 1):.chart_data += str(self.contacts_name[i]) + ",":.chart_data += str(self.contacts_name[i])= self.base_url + self.chart_type + "&" + self.chart_data + "&"+= self.chart_size + "&" + self.chart_labelsurltest_chart_url(self):

"""Test for chart class"""= ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3].contacts_name = data_return = "#"justify">main():

"""Default main function for module activity_chart.py"""= android.Android()= contact_reiting.contacts_managment(droid)_all = contacts.get_contacts()= chart(contacts_all)= chrt.get_chart_url().webViewShow(url)

__name__=="__main__":()

#wordstat.py

"""

@description: Module that collect info about words in messages

@author: Yuriy Volokh, 2011

"""

androidstringsyssocio_matrix

statistic:

"""Class that used for collecting info"""__init__(self):

"""Default constructor""".droid = android.Android().messanges = self.droid.smsGetMessanges(False).result

get_stat(self):

"""Function that collect statistic"""= [].stat = {}self.messanges != None:i in self.messanges:= string.split(i, " ")j in words:not self.stat.has_key(j):.stat[j] = 1:.stat[j] = self.stat[j] + 1show(self):

"""Function that display statistic""".droid.dialogCreateAlert("Word statistic")= self.stat.keys()keys == []:.droid.dialogCreateAlert("Error:",

"Sorry, but you have not any messanges yet.").droid.dialogShow()= self.droid.dialogGetResponse().droid.dialogDismiss().exit(1)

:

#convert to list= self.stat.keys()= []i in range(len(keys)):j in range(len(keys)):(self.stat[keys[i]] < self.stat[keys[j]]):[i], keys[j] = keys[j], keys[i]= socio_matrix.socio(self.droid)i in keys:+= [i, self.stat[i]].data = data= socio.contacts_to_list().droid.dialogSetItems(items).droid.dialogShow()= self.droid.dialogGetResponse().droid.dialogDismiss()test_wordstat(self):

"""Test for statistic"""_messange1 = "today we have a race You with us"_messange2 = "Race today at 04:00 am".messanges = [test_messange1, test_messange2]= {"today": 2, "race":2, "we":1, "have":1,

"a":1, "You":1, "with":1, "us":1, "at":1,

"04:00":1, "am":1}.get_stat()_stat = self.statstat == self.statmain():

"""Default main function for wordstat.py module"""= statistic().get_stat().show()

__name__=="__main__":()

#socio_matrix.py

"""

@description: Module for view socio matrix from contacts

@author: Yuriy Volokh, 2011

"""

androidcontact_reiting

socio:

"""class used to create socio matrix"""__init__(self, droid):= contact_reiting.contacts_managment(droid).data = contacts.get_contacts()contacts_to_list(self):

"""list of one lenght string: self.data = ['Yushchenko', 5, 'Yanukovych', 6]: ['Yushchenko 5',

'Yanukovych 6']

"""

#find line length= 0i in range(len(self.data) / 2):(len(self.data[i * 2]) + len(self.data[i * 2 + 1]) > maxlenght):= len(self.data[i * 2]) + len(self.data[i * 2 + 1])= []= ""i in range(len(self.data) / 2):= self.data[i * 2](maxlenght != len(item) + len(str(self.data[i * 2 + 1]))):+= " "+= self.data[i * 2 + 1]+= [item]itemstest_socio_matrix(self):

"""Test for socio matrix class"""= ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3]_result = ["Victor Janukovych 2",

"Victor Yuschenko 5",

"Bill Clinton 3"].data = data_data = contacts_to_list()returned_data == data_result

main():

"""Default main function in module"""= android.Android().dialogCreateAlert("Socio matrix")_table = socio(droid)= socio_table.contacts_to_list().dialogSetItems(items).dialogShow()= droid.dialogGetResponse()

.dialogDismiss()

__name__=="__main__":()


#contacts_stat.py

"""

@description: GUI for statistic utilyties for Android

@author: Yuriy Volokh, 2011

"""androidgui:main(self):

"""Default main function in module"""= android.Android().dialogCreateAlert("contacts_stat")= ["Contact reiting",

"Socio matrix",

"Activity chart",

"Word statistic",

"About"]

.dialogSetItems(items).dialogShow()= droid.dialogGetResponse()(response.result['item'] == 0):contact_reiting_reiting.main()(response.result['item'] == 1):socio_matrix_matrix.main()(response.result['item'] == 2):activity_chart_chart.main()(response.result['item'] == 3):wordstat.main()(response.result['item'] == 4):about.main().dialogDismiss()

__name__=="__main__":= gui().main()

#contact_reiting.py

"""

@description: Module for view most called contacts

@author: Yuriy Volokh, 2011

"""

android

contacts_managment:

"""class that used for manupulations with contacts"""__init__(self, droid):

"""default constructor""".contacts_name = [].droid = droid.collect_contacts()

#self.sort_contacts()

collect_contacts(self):

"""collect usefull information about contacts from Android"""_length = self.droid.contactsGetCount().resultcontacts_length == 0:"Error: You have not contacts yet".exit(1)= self.droid.contactsGet(['name','times_contacted'])i in range(len(contacts.result)):.contacts_name = self.contacts_name + [[contacts.result[i]['name'],.result[i]['times_contacted']]]

self.contacts_name

sort_contacts(self):

"""sort contacts by times_colled"""i in range(len(self.contacts_name)):= []j in xrange(1, len(self.contacts_name)):= self.contacts_name[j]self.contacts_name[j][1] > self.contacts_name[j-1][1]:.contacts_name[j] = self.contacts_name[j-1].contacts_name[j-1] = tmp

self.contacts_nameget_contacts_names(self):

"""return all contacts names (only names)"""= []i in range(len(self.contacts_name)):= names + [self.contacts_name[i][0]]namesget_contacts(self):

"""return all contacts"""= []i in range(len(self.contacts_name)):= items + [self.contacts_name[i][0], self.contacts_name[i][1]]itemstest_contact_managment(self):

"""test for contact managment class"""_input = [["Victor Janukovych", 2],

["Victor Yuschenko", 5],

["Bill Clinton", 3]]_result = [["Victor Yuschenko", 5],

["Bill Clinton", 3],

["Victor Janukovych", 2]].contacts_name = contacts_input.sort_contacts()_result = self.get_contacts()contacts_result == returned_result

main():

"""main method for this module"""= android.Android().dialogCreateAlert("Contacts reiting")= contacts_managment(droid).sort_contacts()= contacts.get_contacts_names().dialogSetItems(menu).dialogShow()= droid.dialogGetResponse()

.dialogDismiss()

__name__=="__main__":()

#about.pyandroidgui:main(self):

"""Default main function in module"""= android.Android().dialogCreateAlert("About")= ["Name: contacts_stat",

"Author: Yuriy Volokh",

"E-mail: [email protected]",

"Web site: www.yuriyvolokh.co.cc"]

.dialogSetItems(items).dialogShow()= droid.dialogGetResponse().dialogDismiss()main():= gui().main()__name__=="__main__":()


Міністерство освіти, науки, спорту та молоді України Національний університет «Львівська політехніка» Ба

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ