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

Проблема розробки інтелектуального агента. Вибір і обґрунтування аналогу. Реалізація програмної системи збору та аналізу статистичних даних про контакти користувача. Створення файлів, встановлення додатків Android (APK) з файлів скриптів на мові Python.

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

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

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

for i in self.messanges:

words = string.split(i, " ")

for j in words:

if not self.stat.has_key(j):

self.stat[j] = 1

else:

self.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)

self.data = contacts.get_contacts()

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

3.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 формує запит до сервісу http://charts.googleapi.com, відсилає його та показує на екрані результат.

Код який ілюструє ці дії наведений в лістингу 3.4.1.

Лістинг 3.4.1

droid = android.Android()

contacts = contact_reiting.contacts_managment(droid)

contacts_all = contacts.get_contacts()

chrt = chart(contacts_all)

url = 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()

droid.dialogCreateAlert("Contacts reiting")

contacts = contacts_managment(droid)

contacts.sort_contacts()

menu = contacts.get_contacts_names()

droid.dialogSetItems(menu)

droid.dialogShow()

response = 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()

droid.dialogCreateAlert("contacts_stat")

items = ["Contact reiting",

"Socio matrix",

"Activity chart",

"Word statistic",

"About"]

droid.dialogSetItems(items)

droid.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()

droid.dialogCreateAlert("Socio matrix")

socio_table = socio(droid)

items = socio_table.contacts_to_list()

droid.dialogSetItems(items)

droid.dialogShow()

response = 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")

keys = self.stat.keys()

if keys == []:

self.droid.dialogCreateAlert("Error:",

"Sorry, but you have not any messanges yet.")

self.droid.dialogShow()

response = self.droid.dialogGetResponse()

self.droid.dialogDismiss()

sys.exit(1)

else:

#convert to list

keys = self.stat.keys()

data = []

for i in range(len(keys)):

for j in range(len(keys)):

if (self.stat[keys[i]] < self.stat[keys[j]]):

keys[i], keys[j] = keys[j], keys[i]

socio = socio_matrix.socio(self.droid)

for i in keys:

data += [i, self.stat[i]]

socio.data = data

items = socio.contacts_to_list()

self.droid.dialogSetItems(items)

self.droid.dialogShow()

response = 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")

items = ["Name: contacts_stat",

"Author: Yuriy Volokh",

"E-mail: yuriyvolokh@gmail.com",

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

droid.dialogSetItems(items)

droid.dialogShow()

response = droid.dialogGetResponse()

droid.dialogDismiss()

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

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

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

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

При розробці проекту була розроблена система тестів. На кожен модуль по одному тесту. Тест представлений однією функцією, котра передає вхідні дані у класс, а після цього звіряє отриманий результат з очікуваним. Якщо вони не співпадаєть то программа падає через 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]

self.contacts_name = data

url_return =

"http://chart.googleapis.com/chart?cht=lc&chd=t:2,5,3&chs=250x100&Janukovych|Yuschenko|Clinton"

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

contacts_input = [["Victor Janukovych", 2],

["Victor Yuschenko", 5],

["Bill Clinton", 3]]

contacts_result = [["Victor Yuschenko", 5],

["Bill Clinton", 3],

["Victor Janukovych", 2]]

self.contacts_name = contacts_input

self.sort_contacts()

returned_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"""

data = ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3]

data_result = ["Victor Janukovych 2",

"Victor Yuschenko 5",

"Bill Clinton 3"]

self.data = data

returned_data = contacts_to_list()

assert returned_data == data_result

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

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

def test_wordstat(self):

"""Test for statistic"""

test_messange1 = "today we have a race You with us"

test_messange2 = "Race today at 04:00 am"

self.messanges = [test_messange1, test_messange2]

stat = {"today": 2, "race":2, "we":1, "have":1,

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

"04:00":1, "am":1}

self.get_stat()

returned_stat = self.stat

assert stat == self.stat

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

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

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

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

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

К = K1+K2, (4.1)

де K1 - витрати на розробку програмних засобів, грн.;

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

Витрати на розробку програмних засобів (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

Керівник проекту

1

10

114,54

1145,4

2

студент-розробник

1

60

32,72

1963,2

3

Консультант з економічних питань

1

1

93,49

93,49

4

Консультант з питань охорони праці

1

1

114,54

114,54

Всього

3316,63

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

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

грн

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

грн

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

грн

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

грн

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

грн

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

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

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

№ з/п

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

Марка, тип

К-сть на розробку, шт.

Ціна за одиницю, грн.

Сума витрат, грн.

Сума витрат з урахуванням трансп.-загот. витрат, грн.

1

Диски

CD-R

1

2,50

2,50

3

2

Папір(пачок)

Формат А4

1

30

30

33

Всього

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,63

3

Витрати на експлуатацію ПЕОМ

14,81

4

Витрати на куповані вироби

36

2

Збори у спеціальні державні фонди

1200,6

5

Накладні витрати

994,98

6

Інші витрати

331,663

Всього

5894.68

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблиця 4.4

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

Назва показника

Одини-ця виміру

Числове значення показника

Диференційна оцінка розроблюваного ПЗ

Проектне рішення

Аналог

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

1.1. Час проектування

год

3

3,5

Перевищує

1.2. Об'єм дискового простору

Мб

2

3

Перевищує

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

2.1. Стійкість програми до некоректних дій користувача

%

80

85

Не відповідає

3. Ергономічні показники:

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

Бали

10

10

Відповідає

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

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

Бали

8

8

Відповідає

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

Бали

6

8

Не відповідає

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

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

%

100

100

Відповідає

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

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

Ря = Уqя x ai (4.6)

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

Уаі = 1

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

qі = Рі2 / Рі1 (4.7)

або

qі = Рі1 / Рі2 (4.8)

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

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

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

Назва показника

Одиниця виміру

Числове значення показника

Частковий показник рівня якості

Коефіцієнт вагомості показника

qi*ai

Проектне рішення

Аналог

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

1.1. Час проектування

год.

3

3,5

1,17

0,2

0,234

1.2. Об'єм дискового простору

Мб

2

3

1,5

0,2

0,3

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

2.1. Стійкість програми до некоректних дій користувача

%

80

85

1,06

0,2

0,212

3. Ергономічні показники:

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

Бали

10

10

1

0,15

0,15

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

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

Бали

8

8

1

0,05

0,05

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

Бали

6

8

1,3

0,1

0,13

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

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

%

100

100

1

0,1

0,1

Підсумок

1,18

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

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

, (4.9)

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

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

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

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

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

, (4.10)

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

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

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

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

Е1П(а) = (4.11)

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

nі - чисельність співробітників і-ої категорії, осіб;

ti - трудомісткість роботи співробітників і-ої категорії з підготовки даних, год.

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

Основна місячна заробітна плата оператора ЕОМ складає 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 Розрахунок витрат на підготовку даних для роботи на ЕОМ

Категорія персоналу

Чисельність співробітників і-тої Категорії, чол.

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

Середньогодина „H„P „ѓ„Ѓ?„r„‚„Ђ„q?„„„~„y„{„p ?-„„„Ђ? „{„p„„„u„s„Ђ„‚??, грн.

Витрати на підготовку даних, грн.

Проектне рішення Адміністратора

1

1

9,29

9,29

Всього:

9,29

Аналог Оператор

1

1,5

9,29

13,93

Всього:

13,93

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

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

де t - витрати машинного часу для реалізації проектного рішення

Sm - вартість однієї машинної години роботи ЕОМ, грн./год.

Е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,62

2

Ціна придбання

грн.

0

4437,70

3

Річні експлуатаційні витрати

грн.

4101,76

2185,44

4

Ціна споживання

грн.

10582,540

9052,055

5

Економічний ефект в сфері проектування

грн.

-

-

6

Додатковий ефект в сфері проектування

грн.

-

-

7

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

грн.

-

1916,32

8

Додатковий ефект в сфері експлуатації

грн.

-

8893,641

9

Коефіцієнт конкурентноздатності

-

1,38

Висновок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вплив надвисоких частот (НВЧ) - випромінювання інтенсивністю більше 100 Вт/м2 може призвести до помутніння кришталика ока та втрати зору. При тривалому опроміненні помірної інтенсивності (10 Вт/м2) можливі порушення з боку ендокринної системи, зміна вуглеводного і жирового обміну, що супроводжується схудненням, підвищення збудливості, зміна ритму серцевої діяльності, зміни в крові.

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

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

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

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

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

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

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

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

Підсумки до розділу

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

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

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

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

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

Висновки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

17. Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя = The Unified Modeling Language user guide. -- 2-е изд. -- М., СПб.: ДМК Пресс, Питер, 2004. -- 432 с.

18. Калбертсон Р., Браун К., Кобб Г., Быстрое тестирование. -- М.: «Вильямс», 2002. -- 374 с.

19. Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. М.: БИНОМ, 2008. -- 368 с.

Додаток

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

#activity_chart.py

"""

@description: Module that show chart about contacts

@author: Yuriy Volokh, 2011

"""

import android

import contact_reiting

import string

class chart:

"""Class that used for creating chart"""

def __init__(self, contacts_name):

"""Default constructor"""

self.chart_type = "cht=lc"

self.base_url = "http://chart.googleapis.com/chart?"

self.chart_data = "chd=t:"

self.chart_size = "chs=250x100"

self.chart_labels = "chl="

self.contacts_name = contacts_name

def get_chart_url(self):

"""generate url for http://chart.googleapis.com/ service"""

#generate labels

for i in range(0,len(self.contacts_name),2):

if (i != len(self.contacts_name) - 1):

self.chart_labels += string.split(self.contacts_name[i], " ")[0] + "|"

else:

self.chart_labels += string.split(self.contacts_name[i], " ")[0]

#generate data

for i in range(1,len(self.contacts_name),2):

if (i != len(self.contacts_name) - 1):

self.chart_data += str(self.contacts_name[i]) + ","

else:

self.chart_data += str(self.contacts_name[i])

url = self.base_url + self.chart_type + "&" + self.chart_data + "&"

url += self.chart_size + "&" + self.chart_labels

return url

def test_chart_url(self):

"""Test for chart class"""

data = ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3]

self.contacts_name = data

url_return = "http://chart.googleapis.com/chart?cht=lc&chd=t:2,5,3&chs=250x100&Janukovych|Yuschenko|Clinton"

returned_url = self.get_chart_url()

assert url == returned_url

def main():

"""Default main function for module activity_chart.py"""

droid = android.Android()

contacts = contact_reiting.contacts_managment(droid)

contacts_all = contacts.get_contacts()

chrt = chart(contacts_all)

url = chrt.get_chart_url()

droid.webViewShow(url)

if __name__=="__main__":

main()

#wordstat.py

"""

@description: Module that collect info about words in messages

@author: Yuriy Volokh, 2011

"""

import android

import string

import sys

import socio_matrix

class statistic:

"""Class that used for collecting info"""

def __init__(self):

"""Default constructor"""

self.droid = android.Android()

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

def get_stat(self):

"""Function that collect statistic"""

words = []

self.stat = {}

if self.messanges != None:

for i in self.messanges:

words = string.split(i, " ")

for j in words:

if not self.stat.has_key(j):

self.stat[j] = 1

else:

self.stat[j] = self.stat[j] + 1

def show(self):

"""Function that display statistic"""

self.droid.dialogCreateAlert("Word statistic")

keys = self.stat.keys()

if keys == []:

self.droid.dialogCreateAlert("Error:",

"Sorry, but you have not any messanges yet.")

self.droid.dialogShow()

response = self.droid.dialogGetResponse()

self.droid.dialogDismiss()

sys.exit(1)

else:

#convert to list

keys = self.stat.keys()

data = []

for i in range(len(keys)):

for j in range(len(keys)):

if (self.stat[keys[i]] < self.stat[keys[j]]):

keys[i], keys[j] = keys[j], keys[i]

socio = socio_matrix.socio(self.droid)

for i in keys:

data += [i, self.stat[i]]

socio.data = data

items = socio.contacts_to_list()

self.droid.dialogSetItems(items)

self.droid.dialogShow()

response = self.droid.dialogGetResponse()

self.droid.dialogDismiss()

def test_wordstat(self):

"""Test for statistic"""

test_messange1 = "today we have a race You with us"

test_messange2 = "Race today at 04:00 am"

self.messanges = [test_messange1, test_messange2]

stat = {"today": 2, "race":2, "we":1, "have":1,

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

"04:00":1, "am":1}

self.get_stat()

returned_stat = self.stat

assert stat == self.stat

def main():

"""Default main function for wordstat.py module"""

a = statistic()

a.get_stat()

a.show()

if __name__=="__main__":

main()

#socio_matrix.py

"""

@description: Module for view socio matrix from contacts

@author: Yuriy Volokh, 2011

"""

import android

import contact_reiting

class socio:

"""class used to create socio matrix"""

def __init__(self, droid):

contacts = contact_reiting.contacts_managment(droid)

self.data = contacts.get_contacts()

def contacts_to_list(self):

"""

Create list of one lenght string

Example: self.data = ['Yushchenko', 5, 'Yanukovych', 6]

result: ['Yushchenko 5',

'Yanukovych 6']

"""

#find line length

maxlenght = 0

for i in range(len(self.data) / 2):

if (len(self.data[i * 2]) + len(self.data[i * 2 + 1]) > maxlenght):

maxlenght = len(self.data[i * 2]) + len(self.data[i * 2 + 1])

items = []

item = ""

for i in range(len(self.data) / 2):

item = self.data[i * 2]

while(maxlenght != len(item) + len(str(self.data[i * 2 + 1]))):

item += " "

item += self.data[i * 2 + 1]

items += [item]

return items

def test_socio_matrix(self):

"""Test for socio matrix class"""

data = ["Victor Janukovych", 2,

"Victor Yuschenko", 5,

"Bill Clinton", 3]

data_result = ["Victor Janukovych 2",

"Victor Yuschenko 5",

"Bill Clinton 3"]

self.data = data

returned_data = contacts_to_list()

assert returned_data == data_result

def main():

"""Default main function in module"""

droid = android.Android()

droid.dialogCreateAlert("Socio matrix")

socio_table = socio(droid)

items = socio_table.contacts_to_list()

droid.dialogSetItems(items)

droid.dialogShow()

response = droid.dialogGetResponse()

droid.dialogDismiss()

if __name__=="__main__":

main()

#contacts_stat.py

"""

@description: GUI for statistic utilyties for Android

@author: Yuriy Volokh, 2011

"""

import android

class gui:

def main(self):

"""Default main function in module"""

droid = android.Android()

droid.dialogCreateAlert("contacts_stat")

items = ["Contact reiting",

"Socio matrix",

"Activity chart",

"Word statistic",

"About"]

droid.dialogSetItems(items)

droid.dialogShow()

response = droid.dialogGetResponse()

if (response.result['item'] == 0):

import contact_reiting

contact_reiting.main()

elif (response.result['item'] == 1):

import socio_matrix

socio_matrix.main()

elif (response.result['item'] == 2):

import activity_chart

activity_chart.main()

elif (response.result['item'] == 3):

import wordstat

wordstat.main()

elif (response.result['item'] == 4):

import about

about.main()

droid.dialogDismiss()

if __name__=="__main__":

a = gui()

a.main()

#contact_reiting.py

"""

@description: Module for view most called contacts

@author: Yuriy Volokh, 2011

"""

import android

class contacts_managment:

"""class that used for manupulations with contacts"""

def __init__(self, droid):

"""default constructor"""

self.contacts_name = []

self.droid = droid

self.collect_contacts()

#self.sort_contacts()

def collect_contacts(self):

"""collect usefull information about contacts from Android"""

contacts_length = self.droid.contactsGetCount().result

if contacts_length == 0:

print "Error: You have not contacts yet"

sys.exit(1)

contacts = self.droid.contactsGet(['name','times_contacted'])

for i in range(len(contacts.result)):

self.contacts_name = self.contacts_name + [[contacts.result[i]['name'],

contacts.result[i]['times_contacted']]]

return self.contacts_name

def sort_contacts(self):

"""sort contacts by times_colled"""

for i in range(len(self.contacts_name)):

tmp = []

for j in xrange(1, len(self.contacts_name)):

tmp = self.contacts_name[j]

if self.contacts_name[j][1] > self.contacts_name[j-1][1]:

self.contacts_name[j] = self.contacts_name[j-1]

self.contacts_name[j-1] = tmp

return self.contacts_name

def get_contacts_names(self):

"""return all contacts names (only names)"""

names = []

for i in range(len(self.contacts_name)):

names = names + [self.contacts_name[i][0]]

return names

def get_contacts(self):

"""return all contacts"""

items = []

for i in range(len(self.contacts_name)):

items = items + [self.contacts_name[i][0], self.contacts_name[i][1]]

return items

def test_contact_managment(self):

"""test for contact managment class"""

contacts_input = [["Victor Janukovych", 2],

["Victor Yuschenko", 5],

["Bill Clinton", 3]]

contacts_result = [["Victor Yuschenko", 5],

["Bill Clinton", 3],

["Victor Janukovych", 2]]

self.contacts_name = contacts_input

self.sort_contacts()

returned_result = self.get_contacts()

assert contacts_result == returned_result

def main():

"""main method for this module"""

droid = android.Android()

droid.dialogCreateAlert("Contacts reiting")

contacts = contacts_managment(droid)

contacts.sort_contacts()

menu = contacts.get_contacts_names()

droid.dialogSetItems(menu)

droid.dialogShow()

response = droid.dialogGetResponse()

droid.dialogDismiss()

if __name__=="__main__":

main()

#about.py

import android

class gui:

def main(self):

"""Default main function in module"""

droid = android.Android()

droid.dialogCreateAlert("About")

items = ["Name: contacts_stat",

"Author: Yuriy Volokh",

"E-mail: yuriyvolokh@gmail.com",

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

droid.dialogSetItems(items)

droid.dialogShow()

response = droid.dialogGetResponse()

droid.dialogDismiss()

def main():

a = gui()

a.main()

if __name__=="__main__":

main()

Размещено на Allbest.ru


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

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