Розробка програмного забезпечення: Система електронної черги для Державної Податкової Інспекції

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

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

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

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

Небезпека ураження електричним струмом.

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

Експериментальні дослідження показали, що людина відчуває подразнюючу дію змінного струму промислової частоти силою 0,6-1,5 мА і постійного струму 5-7 мА. Ці струми не становлять серйозної небезпеки для діяльності організму людини, оскільки при такій силі струму можливо самостійне звільнення осіб від контакту з струмоведучими частинами. Для змінного струму промислової частоти сила не відпускає струму знаходиться в межах 6-20 мА. Постійний струм не викликає не відпускає ефекту, але призводить до сильних больових відчуттів, сила такого струму 15-80 мА і більше. (ГОСТ 12.1.038-82)

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

Рекомендована освітленість для роботи для роботи з екраном дисплея становить 400-750 лк. Рекомендовані яскравості в полі зору операторів повинні лежати в межах 1:5-1:10.

Можливість виникнення пожежі.

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

4.2 Розрахунок системи штучного освітлення приміщення відділу

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

До систем освітлення висувають такі вимоги:

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

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

- постійність освітленості за часом;

- оптимальна спрямованість випромінюваного освітлювальними приладами світлового потоку;

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

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

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

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

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

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

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

Вхідні дані: довжина А = 4 м, ширина В = 5 м, висота Н = 3 м. Висота робочої поверхні hp = 1 м. Мінімальна освітленість лампи розжарювання за нормами Еmin = 100 лк. Коефіцієнт відображення стелі Sn = 70%, стін Sc = 50%, робочої поверхні Sp = 10%. Напруга в мережі 220 В. Кз = 1,3 і Z = 1,15.

Розрахунок:

Відстань від стелі до робочої поверхні

Але = Н - hp = 3-1 = 2 м;

Відстань від стелі до світильника

hc = 0,2 * Але = 0,4 м;

Висота підвісу світильника над поверхнею, яка висвітлюється

h = Але - hc = 2-0,4 = 1,6 м;

Висота підвісу світильника над підлогою

Нп = h + hp = 1,6 +1 = 2,6 м;

Для досягнення рівномірності освітлення приймаємо ставлення

L / h = 1,5.

Тоді відстань між центром світильників

L = 1,5 * h = 2,4 м;

Необхідна кількість світильників

N = S/L2 = 20/5, 76 = 3,47 світло.;

Приймаються 4 світло. (2 ряди по 2 світло.)

Індекс приміщення

i = (А * В) / (h * (А + В)) = (20) / 1,6 (4 +5) = 1,59 ? 2;

За таблицею коефіцієнтів використання світлового потоку при i = 0.6, Sn = 30%, Sc = 10%, Sp = 10% для світильника коефіцієнт використання світлового потоку з = 0,7.

Світловий потік однієї лампи

Фр = (Еmin * S * Кз * Z) / (N * з) = (100 * 20 * 1,3 * 1,15) / (4 * 0,7) = 1067,9 лм

З таблиці "Параметри ламп розжарювання загального призначення з розрахунковими напругами 130 і 220" вибираємо лампу Б215-255-100 потужністю 100 Вт, що має світловий потік 1100 лм, найбільш близький до розрахункового.

Таким чином фактична освітленість Еф буде рівняти

Еф = Еmin * (Фл / Фр) = 100 * (1100 / 1067,9) = 103,0 лк;

Загальна потужність

Рзаг = Рл * N = 100 * 4 = 400 Вт = 0,4 кВт.

4.3 Розробка заходів по зменшенню дії небезпечних і шкідливих факторів

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

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

Вимоги до мікроклімату в робочому приміщенні.

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

Вимоги до електробезпеки.

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

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

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

Вимоги до освітленості.

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

Для штучного освітлення приміщень слід використовувати люмінес-процентні лампи, оскільки в них висока світлова віддача (до 75 лм / Вт і більше), тривалий термін служби (до 10000 годин), мала яскравість поверхні, яка світиться, близький до природного спектральний склад випромінюваного світла , який забезпечує хороше перенесення кольорів. Найбільш прийнятними для дисплейних приміщень є люмінесцентні лампи ЛБ (білого світла) і ЛТБ (білого-тепло-білого світла) потужністю 40, 80 Вт

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

Вимоги до пожежної безпеки.

Для запобігання виникнення пожежі необхідно передбачити заходи пожежної профілактики: дотримання протипожежних вимог під час проектування і експлуатації систем вентиляції згідно зі СНиП 1.01.02-84; дотримання умов пожежної безпеки електроустановок згідно вимог; наявність засобів сповіщення:

- Пожежні сповіщувачі (ЛІП-1, ІП-105 2/1 і т.д.);

- Установки пожежогасінні (АУП);

- Інструкції по заходам протипожежної безпеки, план евакуації людей і технічних засобів.

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

Загальні вимоги з техніки безпеки.

Кожен користувач ЕОМ зобов'язаний:

- Дотримуватися правил внутрішнього трудового розпорядку;

- Не вносити на територію підприємства і не розпивати спиртні на-напої, палити лише у відведеному для цієї мети місці.

На території підприємства необхідно виконувати наступні вимоги:

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

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

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

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

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

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

Вимоги до безпеки перед початком роботи.

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

- Отримати завдання у керівника роботи, а також інструктаж з техніки безпеки.

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

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

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

- Перевірити наявність, справність і відповідність по струму запобіжників в блоках ремонтованої ЕОМ або пристроїв.

Вимоги до безпеки під час роботи:

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

- Не дозволяється замінювати знімні елементи і проводити переміщення і перемонтування на включеній ЕОМ.

- Не дозволяється користуватися несправною апаратурою та інструментами.

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

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

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

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

- Не дозволяється користуватися паяльником з незаземленим корпусом.

- При ремонті знімних блоків системи електроживлення їх корпус необхідно заземлити.

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

- При ремонті системи електроживлення необхідно вивішувати плакати, НЕ ВКЛЮЧАТИ! ПРАЦЮЮТЬ ЛЮДИ або НЕ ВКЛЮЧАТИ! РОБОТА НА ЛІНІЇ

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

Вимоги до безпеки по закінченню робіт:

- Вимкніть електроживлення від ЕОМ і обладнання, яке забезпечує роботу ЕОМ.

- Приведіть у порядок робоче місце.

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

- Зробіть запис в "Журналі зауважень про роботу ЕОМ".

ВИСНОВКИ

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

– Досліджена предметна галузь програмного забезпечення на платформі Android;

– Сформульовані вимоги до програмного забезпечення;

– Виконано ескізне проектування;

– Виконано технічне проектування;

– Виконано робоче проектування;

– Розроблено відповідну документацію.

Для реалізації програмного забезпечення використовувалось середовище візуального програмування Intellij IDEA.

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

– Введення, перегляд, збереження, редагування документів;

– Керування опціями (атрибутами) документів.

Слід зазначити , що розроблений проект Системи електронної черги для Державної податкової інспекції отримав сертифікат за 1 місце в категорії «Соціальне значуще застосування ППІ веб- пошуків ЄДР» на ДержХак 2014.

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

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

Розроблена документація до системи включає наступні документи: Додаток А - Технічне завдання, Додаток Б - Керівництво користувача, Додаток В - Програмний код.

СПИСОК ЛІТЕРАТУРНИХ ДЖЕРЕЛ

1. Приходько С.Б., Суслов С.В. Методичні вказівки до виконання кваліфікаційної роботи за напрямом підготовки 6.050103 - «Програмна інженерія» [Текст]. Латанська Л.О., Устенко І. В., Пономаренко Т. В.: Миколаїв: НУК, 2012. - 49 с.

ДОДАТОК А

Технічне завдання.

Тема дипломної роботи - «Розробка програмного забезпечення: Система електронної черги для Державної Податкової Інспекції». Програма призначена для роботи з електронною чергою документів віддалено, без використання ПК зі спеціалізованим ПЗ. Програмний продукт буде використовуватися звичайними користувачами на ОС Android (для мобільних пристроїв), а також студентами в навчальних або дослідницьких цілях.

Підстави для розробки.

Документом, на підставі якого ведеться розробка програмного продукту, є завдання на дипломну роботу «Розробка програмного забезпечення: Система електронної черги для Державної Податкової Інспекції».

Призначення розробки.

Функціональне призначення.

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

Експлуатаційне призначення.

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

Вимоги до програмного продукту.

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

Вимоги до складу виконуваних функцій.

За темою дипломної роботи: «Розробка програмного забезпечення: Система електронної черги для Державної Податкової Інспекції», додаток має реалізувати наступні функції:

1) Відображення списку документів з БД.

Вхідні дані:

- Текст документу.

2) Завантаження документів.

Вхідні дані:

- Текст документу;

- Завантаження документу (вибір: так/ні).

3) Заповнення документу.

Вхідні дані:

- Текст документу;

- Заповнення документу (вибір: так/ні).

4) Збереження змін.

Вхідні дані:

- Текст документу;

- Завантаження документу (так/ні);

- Заповнення документу (так/ні);

- Віднести документи за місцем проживання (так/ні).

5) Авторизація (як ступінь захисту).

Вхідні дані:

- Код паспорту;

- Серія паспорту.

Вимоги до організації вхідних і вихідних даних

Вимоги до організації вхідних даних

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

Вимоги до організації вихідних даних

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

Вимоги до надійності

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

- Організацією безперебійного живлення мобільного пристрою (не можна виймати батарею);

- Регулярна перевірка на наявність вірусів.

Час відновлення після відмови

Час відновлення після відмови, викликаної проблемами з електроживленням або проблемами з «зависанням» ОС Android, не фатальним збоєм (не крахом) операційної системи, не перевищує 3-х хвилин, які необхідні для перезавантаження пристрою.

Умови експлуатації.

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

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

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

- Процессор з архітектурою ARM V6 та тактовою частотою не менше 600 МГц;

- Не менше 150 Мб оперативної пам'яті;

- Роздільна здатність екрана не менша за 320х480 (VGA і вище);

- 5 Мб вільного простору.

Вимоги до програмної сумісності: ОС Google Android версії 2.3 та вище.

Вимоги до інформаційної та програмної сумісності.

Для функціонування програми не потрібно жодного стороннього програмного забезпечення (на ОС Android).

Вимоги до захисту інформації та програм.

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

Вимоги до маркування та пакування.

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

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

Передбачається зберігання та поширення програми на ресурсі 4pda.ru. Допускається транспортування та зберігання копій програми на будь-яких носіях інформації.

Вимоги до програмної документації.

Склад програмної документації:

- Технічне завдання;

- Опис програми;

- Програма та методика випробувань;

- Інструкція користувача;

- Текст програми.

Техніко - економічні показники.

Економічна ефективність не розраховується.

Стадії та етапи розробки

Стадії та етапи розробки ПЗ для роботи з електронною чергою в ДПІ зазначені в таблиці А.1.

Таблиця А.1 - Стадії та етапи розробки програмного забезпечення

Стадії розробки

Етапи робіт

Термін виконання робіт

початок етапу

кінець етапу

1 Технічне завдання

1.1 Обгрунтування необхідності розробки програми

02.09.14

09.09.14

1.2 Розробка технічного завдання

10.09.14

17.09.14

1.3 Затвердження технічного завдання

18.09.14

24. 09.14

2 Ескізний проект

2.1 Розробка ескізного проекту

25.09.14

23.10.14

2.2 Затвердження ескізного проекту

24.10.14

29.10.14

3 Технічний проект

3.1 Розробка технічного проекту

30.10.14

27.11.14

3.2 Затвердження технічного проекту

28.11.14

04.12.14

4 Робочий проект

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

05.12.14

16.12.14

4.2 Розробка програмної документації

17.12.14

29.12.14

4.3 Випробування програми

30.12.14

10.01.15

Порядок контролю та приймання.

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

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

Хід проведення приймально-здавальних випробувань документують за допомогою протоколу проведення випробувань.

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

ДОДАТОК Б

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

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

Для запуску програмного забезпечення необхідно запустити на виконання вже інстальований в систему додаток «Burokrat.apk». Після запуску, з'явиться діалогове вікно на екрані з проханням авторизації. Дане вікно зображено на рисунку Б.1.

Рисунок Б.1 - Діалогове вікно додатку (авторизація)

В даному вікні можна виконувати поля вводу:

- Серія паспорта;

- Код паспорта.

При натисканні на кнопку «Login» відбудеться вхід до системи (за умови правильно введених даних). З'явиться вікно зі списком документів для користувача. Дане вікно зображено на рисунку Б.2.

Рисунок Б.2 - Вікно зі списком документів користувача

З метою демонстрації роботи програми, документи біли названі як «Документ 1», «Документ 2» і т.д. Опис представлено випадковим текстом. В даному вікні можна виконувати наступні дії:

- Вибір документу для перегляду його вмісту та атрибутів.

Після вибору документа, можна обрати його атрибути (або змінити їх). Також їх може змінити працівник ДПІ. Вікно представлено на рис.Б.3.

Рисунок Б.3 - Опції документу №4

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

ДОДАТОК В

Програмний код

Клас ResClient.java

package com.smokiyenko.burokrat.app;

import android.util.Log;

import com.google.common.util.concurrent.FutureCallback;

import com.google.common.util.concurrent.Futures;

import com.google.common.util.concurrent.ListenableFuture;

import com.google.common.util.concurrent.ListeningExecutorService;

import com.google.common.util.concurrent.MoreExecutors;

import com.google.gson.Gson;

import de.greenrobot.event.EventBus;

import java.io.BufferedReader;

import java.io.Closeable;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.concurrent.Executors;

/**

* Created by s.mokiyenko on 9/6/14.

*/

public class ResClient implements Closeable {

private final EventBus eventBus;

private final ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));

public enum RequestUrl {

LOGIN("getUser"),

SEARCH("getDocks"),

QUEUE("");

private final String requestUrl;

//TODO add Server url

private final static String SERVER_URL = "http://gs-rest-service2.cfapps.io/";

RequestUrl(final String requestUrl) {

this.requestUrl = requestUrl;

}

public URL getRequestURL(final String body) throws MalformedURLException {

return new URL(SERVER_URL.concat(requestUrl).concat(body));

}

}

public ResClient(final EventBus eventBus) {

this.eventBus = eventBus;

}

private abstract class InternalHttpCall implements Runnable {

private final RESTRequest request;

private final RequestUrl requestUrl;

private InternalHttpCall(final RESTRequest restRequest, final RequestUrl requestUrl) {

this.request = restRequest;

this.requestUrl = requestUrl;

}

@Override

public void run() {

final HttpURLConnection urlConnection;

try {

urlConnection = (HttpURLConnection) requestUrl.getRequestURL(request.getBody()).openConnection();

urlConnection.setRequestProperty("Content-Type", "application/json");

urlConnection.setRequestProperty("Accept", "application/json");

urlConnection.setRequestMethod(request.getRequestType().toString());

final int responseCode = HttpUrlConnectionSupport.retrieveResponseCode(urlConnection);

final String result;

switch (responseCode) {

case HttpURLConnection.HTTP_OK:

result = urlConnectionToString(urlConnection);

break;

default:

throw new IOException("Unexpected response received: " + responseCode);

}

parseResponse(result);

} catch (final Exception ex) {

Log.e("ResClient", "InternalHttpCall exception", ex);

throw new RuntimeException(ex);

}

}

protected String urlConnectionToString(final HttpURLConnection connection) throws IOException {

return urlConnectionToString(connection, false);

}

protected String urlConnectionToString(final HttpURLConnection connection, boolean error) throws IOException {

BufferedReader in = null;

try {

in = new BufferedReader(new InputStreamReader(

error ? connection.getErrorStream() : connection.getInputStream(), "UTF-8"));

final StringBuilder jsonStringBuilder = new StringBuilder();

String inputLine;

while ((inputLine = in.readLine()) != null) {

jsonStringBuilder.append(inputLine);

}

return jsonStringBuilder.toString();

} finally {

if (in != null) {

in.close();

}

}

}

abstract void parseResponse(final String json);

}

public void login(final String passportSeries, final String passportId) {

final String body = String.format("?passportSeries=%s&passportId=%s", passportSeries, passportId);

final RESTRequest request = new RESTRequest.Builder().setBody(body).setType(RESTRequest.RequestType.GET).build();

final InternalHttpCall httpCall = new InternalHttpCall(request, RequestUrl.LOGIN) {

@Override

void parseResponse(String json) {

Gson gson = new Gson();

final SessionResponse session = gson.fromJson(json, SessionResponse.class);

eventBus.postSticky(session);

}

};

addCall(httpCall);

}

public void getDocksList(final SessionResponse sessionResponse) {

final String body = String.format("?jsessionid=%s", sessionResponse.getJsessionid());

final RESTRequest request = new RESTRequest.Builder().setBody(body).setType(RESTRequest.RequestType.GET).build();

final InternalHttpCall httpCall = new InternalHttpCall(request, RequestUrl.LOGIN) {

@Override

void parseResponse(String json) {

Gson gson = new Gson();

final DocumentsListResponse documentsListResponse = gson.fromJson(json, DocumentsListResponse.class);

eventBus.post(documentsListResponse);

}

};

addCall(httpCall);

}

private void addCall(final InternalHttpCall call){

final ListenableFuture future = service.submit(call);

Futures.addCallback(future, new FutureCallback() {

@Override

public void onSuccess(final Object result) {

Log.d("RestClient", "onSuccess");

//We have allredy posted result to event bus

}

@Override

public void onFailure(final Throwable t) {

Log.e("RestClient", "onFailure", t);

eventBus.post(new RestError(t.getMessage()));

}

});

}

@Override

public void close() throws IOException {

service.shutdownNow();

}

}

Клас MainActivity.java

package com.smokiyenko.burokrat.app;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import java.util.ArrayList;

import java.util.Arrays;

public class MainActivity extends Activity implements DocumentFragment.OnFragmentInteractionListener {

private SessionResponse session;

@Override

protected void onCreate(final Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_search);

session = BurokratApplication.getEventBus().getStickyEvent(SessionResponse.class);

getActionBar().setDisplayHomeAsUpEnabled(true);

if (savedInstanceState == null){

DocumentFragment fragment = DocumentFragment.newInstance();

final ArrayList<String> documents = new ArrayList<String>();

documents.addAll(Arrays.asList(documentNames));

fragment.setDocuments(documents);

getFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,"doc").commit();

}

}

@SuppressWarnings("Unused")

public void onEventMainThread(final DocumentsListResponse documentsListResponse){

getFragmentManager().getFragment(null,"doc");

}

@Override

public boolean onCreateOptionsMenu(final Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.search, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(final MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

@Override

public boolean onNavigateUp() {

if (getFragmentManager().getBackStackEntryCount() > 0){

getFragmentManager().popBackStack();

getActionBar().setTitle(R.string.title_activity_search);

} else {

onBackPressed();

}

return true;

}

@Override

public void onFragmentInteraction(final String name) {

getActionBar().setTitle(name);

DocumentChecklistFragment fragment = DocumentChecklistFragment.newInstance(name);

getFragmentManager().beginTransaction().replace(R.id.fragment_container,fragment).addToBackStack("doc").commit();

}

}

Клас DocumentChecklistFragment.java

package com.smokiyenko.burokrat.app;

import android.os.Bundle;

import android.app.Fragment;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class DocumentChecklistFragment extends Fragment {

private static final String DOCUMENT_NAME = "documentName";

private String documentName;

private String mParam2;

private String[] steps = {"Скачайте анкеты", "Заполните анкеты", "Отнисете анкеты по месту регистрации", "Профит"};

private ListView stepsListView;

/**

* Use this factory method to create a new instance of

* this fragment using the provided parameters.

*

* @param documentName Parameter 1.

* @return A new instance of fragment DocumentChecklistFragment.

*/

// TODO: Rename and change types and number of parameters

public static DocumentChecklistFragment newInstance(final String documentName) {

DocumentChecklistFragment fragment = new DocumentChecklistFragment();

Bundle args = new Bundle();

args.putString(DOCUMENT_NAME, documentName);

fragment.setArguments(args);

return fragment;

}

public DocumentChecklistFragment() {

// Required empty public constructor

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (getArguments() != null) {

documentName = getArguments().getString(DOCUMENT_NAME);

}

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// Inflate the layout for this fragment

final View view = inflater.inflate(R.layout.fragment_document_checklist, container, false);

stepsListView = (ListView) view.findViewById(R.id.steps_list);

stepsListView.setAdapter(new DocumentsCheckBoxAdapter(getActivity(), Arrays.asList(this.steps)));

return view;

}

}

Клас LoginActivity.java

package com.smokiyenko.burokrat.app;

import android.content.Intent;

import android.os.Bundle;

import android.view.MenuItem;

import android.view.View;

import android.widget.TextView;

import de.greenrobot.event.EventBus;

public class LoginActivity extends BaseBurokratActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

@SuppressWarnings("Unused")

public void onEventMainThread(final SessionResponse session){

BurokratApplication.getEventBus().unregister(this);

BurokratApplication.getEventBus().postSticky(session);

startActivity(new Intent(this, MainActivity.class));

overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

}

public void onLoginPressed(final View view) {

// startActivity(new Intent(this, MainActivity.class));

// overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

TextView tvPassportId = (TextView) findViewById(R.id.login_passport_id);

TextView tvPassportSeries = (TextView) findViewById(R.id.login_passport_series);

BurokratApplication.getClient().login(tvPassportSeries.getText().toString() , tvPassportId.getText().toString());

}

}

ДОДАТОК Г

Сертифікат на розробку концепції ПЗ

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


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

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

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

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

    курсовая работа [343,9 K], добавлен 24.08.2012

  • Розгляд основ діяльності Державної податкової інспекції м. Болград. Аналіз апаратного та програмного забезпечення комп'ютерних систем і мереж. Принципи використання механізму неіменованих каналів для організації локального міжзадачного обміну даними.

    отчет по практике [33,1 K], добавлен 14.05.2015

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

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

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

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

  • Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.

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

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

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

  • Аналіз методів емпіричної інженерії програмного забезпечення. Призначення та властивості програмного забезпечення та метрик проектів Openproj-1.4-src, TalendOpen Studio 3.2.1 та Рlazma-source 0.1.8, їх статистичний, кореляційний та регресійний аналіз.

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

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

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

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

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

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