Разработка настольной и мобильной версии приложения "Органайзер"

Практическая обработка навыков работы с платформами Qt Creator, Eclipse и с языками программирования Java и C++. Разработка программного продукта, состоящего из настольного и мобильного органайзера под операционные системы Windows XP, Vista и Android 2.3.

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

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

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

Размещено на http://www.allbest.ru/

55

Дипломная работа

Разработка настольной и мобильной версии приложения "Органайзер"

Содержание

  • ВВЕДЕНИЕ
  • 1. ПОСТАНОВКА ЗАДАЧИ
  • 2. ОПИСАНИЕ ВЫБРАННЫХ СРЕДСТВ РАЗРАБОТКИ
  • 2.1 C++ (язык программирования)
  • 2.2 Фреймворк Qt
  • 2.3 Qt Creator - интегрированная среда разработки
  • 2.4 Java (язык программирования)
  • 2.5 Android SDK
  • 2.6 Eclipse IDE
  • 2.7 XML - язык гипертекстовой разметки
  • 3. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
  • 3.1 Описание предметной области
  • 3.2 Обзор существующих программных продуктов
  • 3.3 Выбор и обоснование варианта реализации задач
  • 4. ОПИСАНИЕ РАЗРАБОТКИ
  • 4.1 Описание разработки настольной версии приложения
  • 4.2 Описание разработки мобильной версии приложения
  • 4.3 Описание формата хранения данных
  • 5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
  • 5.1 Назначение программы
  • 5.2 Условия применения
  • 5.3 Установка программы
  • 5.4 Описание применения
  • 5.5 Входные и выходные данные
  • 6 РАСЧЕТ ЭКОНОМИЧЕСКИХ ПОКАЗАТЕЛЕЙ
  • 6.1 Расчет себестоимости программного продукта
  • 6.2 Эффект от использования программного продукта
  • 7 БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ
  • 6.1 Характеристика вредных и опасных факторов при работе с ПК
  • 6.2 Организация рабочего места при работе с ПК
  • 6.3 Санитарно-гигиенические параметры рабочего места
  • 6.4 Электробезопасность
  • 6.5 Пожарная безопасность
  • ЗАКЛЮЧЕНИЕ
  • ПРИЛОЖЕНИЕ А БИБЛИОГРАФИЯ
  • ПРИЛОЖЕНИЕ Б ИСХОДНЫЙ КОД НАСТОЛЬНОЙ ВЕРСИИ
  • ПРИЛОЖЕНИЕ В ИСХОДНЫЙ КОД МОБИЛЬНОЙ ВЕРСИИ
  • ВВЕДЕНИЕ
  • Персональные компьютеры почти окончательно вошли в ряд обязательных атрибутов современной жизни. В настоящее время автоматизировано множество процессов: от мелких бытовых до крупных промышленных.
  • Наличие персонального компьютера дома заменяет целый ряд устройств, таких как: телевизор, проигрыватель (DVD, Blu-ray и т.п.), акустическая система, фотолабораторию, инструменты для редактирования и создания музыки, разнообразные художественные предметы и т.п. В домах все чаще появляется более одного компьютера. Очень часто чуть ли ни у каждого члена семьи есть свой компьютер: привычный стационарный, ноутбук, нетбук, ультрабук, планшет или смартфон.
  • Нельзя недооценивать рынок мобильных устройств. Ведь в апреле текущего года, впервые с 1994 г. упал процент продаже персональных компьютеров. Яркое подтверждение увеличения рынка мобильных устройств. Так же часто у человека среднего класса имеется связка устройств: стационарный компьютер или ноутбук и смартфон или планшет. Естественно ожидать, что рынок приложений для портативных устройств развивается быстрыми темпами.
  • Беря в расчет темп роста рынка мобильных устройств, нельзя не заметить, что так же растет и развиваются возможности синхронизации данных, их переносимости с одной платформы на другую. Чаще всего переносятся какие-то личные данные. Таким образом, мы подходим к идее органайзера, места, где собраны основные необходимые за день вещи: ежедневник, список дел и список контактов людей. Немного простой информации, но зачастую она важна.
  • Приложения формата органайзера помогают избавиться от поиска ручки, ровной поверхности, чтобы сделать какую-либо запись, а так же пролистывания страниц в поисках нужной даты. Однако у бумажных органайзеров остается одно преимущество, перед их программной версией, - они всегда под рукой. Этот момент можно решить путем создания нескольких версий приложения: для мобильного и для стационарного устройств, и организовать переносимость данных между этими приложениями.
  • Целью дипломного проекта является разработка программной версии органайзера под операционные системы Windows XP/Vista/7 и Android 2.3.3 и выше. Приложение создается с целью минимизировать время на внесение записей, редактирование и навигации по ним, и обеспечивать сохранение актуальности информации, путем синхронизации.
  • 1. ПОСТАНОВКА ЗАДАЧИ
  • В жизненном цикле программного продукта постановка задачи играет главную роль, если целью разработки является полноценно функционирующий продукт. Максимально подробно и четко проработанные задачи позволят получить стоящие программы.
  • Задачей данной работы является проектирование и создание программного средства под операционные системы Widows XP/Vista/7 и Android 2.3.3 и выше. Необходимо разработать программное обеспечение, позволяющее:

· Формировать и редактировать список дел;

· Заносить и изменять задания в ежедневник;

· Заносить и изменять запись в списке контактов;

· Переносимость данных с настольной версии на мобильную и обратно.

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

1) Анализ требований к программным продуктам;

2) Выбор средств разработки;

3) Проектирование интерфейса;

4) Проектирование формата хранения данных;

5) Разработка ПО;

6) Тестирование и отладка ПО.

Дадим краткую характеристику каждому этапу.

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

На этапе выбора средств разработки подбираются среды и технологии разработки, максимально удовлетворяющие потребностям. Более средства разработки будут освещены позже.

При проектировании интерфейса учитывается его простота.

На этапе проектирования мы создаем модель представления данных для каждого типа задач. Определим архитектуру приложения и систему взаимодействия между пользователем и программой.

Реализация спроектированных подсистем будет осуществлена с использованием наиболее подходящих технологий.

Тестирование целесообразно проводить как на этапе разработки приложений, так и после.

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

2. ОПИСАНИЕ ВЫБРАННЫХ СРЕДСТВ РАЗРАБОТКИ

2.1 C++ (язык программирования)

Для разработки настольной версии приложения был использован язык С++. Данный язык поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщенное программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником -- языком C, -- наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.

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

2.2 Фреймворк Qt

Фреймворк (framework) -- программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Qt является кроссплатформенным (переносимым) фреймворком. В большей степени используется для разработки приложений на С++, на так же может работать с такими языками, как Python, Ruby, Java, PHP и другими.

Отличительная особенность Qt от других библиотек -- использование Meta Object Compiler (MOC) -- предварительной системы обработки исходного кода (в общем-то, Qt -- это библиотека не для чистого C++, а для его особого наречия, с которого и «переводит» MOC для последующей компиляции любым стандартным C++ компилятором). MOC позволяет во много раз увеличить мощь библиотек, вводя такие понятия, как слоты и сигналы. Кроме того, это позволяет сделать код более лаконичным. Утилита MOC ищет в заголовочных файлах на C++ описания классов, содержащие макрос Q_OBJECT, и создаёт дополнительный исходный файл на C++, содержащий метаобъектный код.

Механизм сигналов и слотов полностью замещает модель функций обратного вызова, он очень гибок и полностью объектно-ориентирован.

Сигналы и слоты могут быть соединены друг с другом, причем сигнал может быть соединен с большим количеством слотов. Слот, в свою очередь, тоже может быть соединен со многими сигналами. В случае когда слот не делает ничего, кроме отправки полученного сигнала дальше, то можно вообще обойтись без него, а просто соединить сигналы друг с другом. Методы сигналов должны быть обозначены в определении классы специальным словом signals, а слоты - slots. При этом слоты являются обыкновенными методами языка С++ и в их определении могут присутствовать модификаторы public, protected, private. Реализацию кода для сигналов берет на себя МОС. Отправка сигнала производится при помощи ключевого слова emit. Класс, содержащий сигналы и слоты, должен быть унаследован от класса QObject или от класса, унаследованного от этого класса. Сигнально-слотовые соединения всегда можно удалить (отсоединить), воспользовавшись методом disconnect(), но это нужно крайне редко, т.к. при удалении объекта автоматически уничтожаются все его соединения.

QObject - класс, по сути являющийся основным классом при программировании с использованием Qt. Конструктор класса QObject имеет два параметра: первый используется для создания объектных иерархий, а второй - для присвоения объекту имени.

Свойства объектов важны, т.к. позволяют получать информацию о классе и об объекте в процессе исполнения программы. Все объекты класса QObject или унаследованные от него классы должны создаваться динамически оператором new, а об освобождении памяти созданной объектной иерархии программист может не беспокоиться.

2.3 Qt Creator - интегрированная среда разработки

Кроссплатформенная свободная IDE для разработки на С, С++ и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML.

Qt Creator поддерживает проекты систем qmake и cmake, начиная с версии 2.5 поддерживатеся autotools. Для проектов, созданных под другими системами, может использоваться в качестве редактора исходных кодов. Есть возможность редактирования этапов сборки проекта. Также IDE нативно поддерживает системы контроля версии, такие как Subversion, Mercurial, Git, CVS, Bazaar, Perforce. Начиная с версии 2.5, в поле комментария к правке поддерживается автодополнение.

Реализован ряд возможностей при работе с сигнатурами методов, а именно:

· автогенерация пустого тела метода после его обновления;

· возможность автоматически изменить сигнатуру метода в определении, если она была изменена в объявлении и наоборот;

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

Среда разработки имеет графический интерфейс для следующих отладчиков: GDB, CDB и QML/JavaScript. В качестве отдельной опции реализовано отображение содержимого контейнеров, таких как QString, std::map и прочих. Поддерживаются следующие режимы отладки:

· простой для отладки локально запущенных приложений, таких как GUI приложения на Qt;

· терминал для отладки локально запущенных процессов, которым требуется консоль, обычно это приложения без GUI;

· подключённый для отладки локальных процессов, запущенных вне Qt Creator;

· удалённый для отладки запущенных на другой машине процессов (используя gdbserver);

· ядро для отладки завершившихся аварийно процессов на Unix;

· Post-mortem для отладки завершившихся аварийно процессов на Windows;

· TRK для отладки процессов, запущенных на устройстве Symbian.

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

2.4 Java (язык программирования)

Для разработки мобильной версии приложения. Объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры.

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) -- программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

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

· применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

· широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

· аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бомльшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

2.5 Android SDK

Android - это портативная (сетевая) операционная система для коммуникаторов, планшетных компьютеров, электронных книжек, цифровых проигрывателей, наручных часов, нетбуков и смартбуков, основанная на ядре Linux. Изначально разрабатывалась компанией Android Inc., которую затем купила Google. Впоследствии Google инициировала создание альянса Open Handset Alliance, который сейчас и занимается поддержкой и дальнейшим развитием платформы. Android позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки. Android Native Development Kit создаёт приложения, написанные на Си и других языках.

Для написание программного обеспечения для этой платформы необходимо использовать SDK (software development kit). SDK является комплектом средств разработки, который позволяет специалистам создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. В данном случае определенной платформой является Android, а ей соответствует Android SDK, которая и используется.

2.6 Eclipse IDE

Свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse Foundation.

Eclipse служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.

Eclipse JDT (Java Development Tools) -- наиболее известный модуль, нацеленный на групповую разработку: среда интегрирована с системами управления версиями -- CVS, GIT в основной поставке, для других систем (например, Subversion, MS SourceSafe) существуют плагины. Также предлагает поддержку связи между IDE и системой управления задачами (ошибками). В основной поставке включена поддержка трекера ошибок Bugzilla, также имеется множество расширений для поддержки других трекеров (Trac, Jira и др.). В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений.

Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ (см. ниже). Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.

2.7 XML - язык гипертекстовой разметки

XML (eXtensible Markup Language) -- расширяемый язык разметки. Рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML -- текстовый формат, предназначенный для представления и хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML. Стандартом определены два уровня правильности документа XML: Правильно построенный. Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу. Документ, который неправильно построен, не может считаться документом XML; XML-процессор (парсер) не должен обрабатывать его обычным образом и обязан классифицировать ситуацию как фатальная ошибка.

Действительный. Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов.

3. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

3.1 Описание предметной области

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

Органайзер является средством управления временем. Предварительное планирование дел помогает повысить плодотворность любой деятельности, как личной, так и профессиональной. Поэтому и человека, который консультирует организации и частных лиц в сфере повышения эффективности управления временем, тоже иногда называют «органайзер». В США даже существует Национальная Ассоциация Профессиональных Органайзеров (NAPO).

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

Однако при использовании программной версии органайзера возникает проблема в лице реальной приближенности к пользователю, сопровождение его везде и всюду, при этом сохраняя актуальность данных. Таким образом всплывает необходимость синхронизации данных, либо нахождения их в таком месте, откуда их всегда можно получить. Второй метод используется в онлайн-органайзерах. Первый способ используется на порядок реже. В большинстве случаев, если синхронизация между органайзерами на разных платформах и есть, то через интернет.

Используемыми платформами для персонального компьютера являются Windows, Mac OS и Linux. В свою очередь для мобильных устройств: iOS, Android и Windows Phone.

3.2 Обзор существующих программных продуктов

На данных момент существует несчетное множество органайзеров, как мобильных так и настольных. Все органайзеры имеют разнообразные возможности. Из этого числа программ, лишь часть может поддерживать актуальность информации. В эту часть входят как онлайн-приложения, так и настольные и мобильные. Количество органайзеров, у которых синхронизация происходит без использования подключения к интернету, гораздо и гораздо сложнее найти. Проведя некоторое время за поисками был найден только один органайзер такого типа - LeaderTask.

3.3 Выбор и обоснование варианта реализации задач

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

Для реализации кроссплатформенности настольной версии приложения был выбран фреймфорк Qt.

Платформа Android является самой молодой из всех распространенных мобильных операционных систем. Не смотря на свою «юность», Android уже занимает львиную долю рынка, потому для мобильной версии приложения была выбрана именно эта система.

4. ОПИСАНИЕ РАЗРАБОТКИ

4.1 Описание разработки настольной версии приложения

Главным аспектом разработки любого программного продукта является декомпозиция, т.е. разбиение на максимально возможные функциональные подсистемы.

Логически области деятельности программы и взаимодействия с пользователем разделены на три, по возможностям органайзера. Все они расположены на главном окне приложения, которое оформлено отдельной формой. Так же в программе имеются три формы для диалоговых окон для реализация следующий задач: добавления нового контакта, добавление нового задания в список дел и для редактирования задания. Для каждого файла с формой имеются файлы пары *.h и *.cpp для обеспечения работы формы, с таким же названием, что и файл формы. Ежедневник и справочник реализованы вкладками с помощью QTabWidget, виджета из фреймворка Qt, обеспечивающего создание области приложения с вкладками и управления ими. Ежедневник позволяет распланировать рабочий день на определенную дату, вносить и изменять записи. Данная часть реализована на первой вкладке виджета. Записи выводятся сразу на два дня: текущий выбранный и следующий. При запуске программы данные показываются на текущий день. Смена даты происходит по средствам выбора дня из календаря, расположенного в левом нижнем углу приложения. При смене даты срабатывает сигнал saveSelectDate(), который фиксирует выбранную дату, после чего срабатывает еще два сигнала, которые вызывают функции refreshToday() и refreshTomorrow() для обновления данных в области текущего дня и последующего, соответственно. При внесении новой записи в ежедневник, необходимо произвести обновления путем нажатие на кнопки обновления, от нажатия на которые срабатывает сигнал изменения данных в поле ввода и вызывают уже упомянутые функции refreshToday() и refreshTomorrow(), которые находят и вносят изменения в память программы. Каждое поле для каждого дня имеет свой формат названия, по которому к нему можно обращаться: teXZ, где X - время события, а Z - имеет значение today для текущего дня и tomorrow для следующего дня.

Справочник находится на второй вкладке виджета. Фамилия и имя человека выводятся в левой части вкладки, с помощью QListWidget, который так же является виджетом фреймворка Qt. При выборе контакта в левой части отображается его информация по пунктам. Для каждого пункта своё поле: фамилия - leSurname, имя - leName, организация - leOrg, должность - lePost, мобильный номер телефона - leMobile, дополнительный номер телефона - lePhone, электронная почта - leEmail и аккаунт в Skype - .leSkype. При добавлении нового контакта появляется диалоговое окно. Все обращения (обновление, удаление, вывод полной информации) к контакту происходят по его порядковому номеру. Список дел и заданий отображается с помощью QListWidget, как и список контактов. Обращение к каждой записи так же происходит по её номеру. При отмечании галочки «Выполнено» в окне редактировании записи, поле отвечающее за отслеживанию выполнения задания выставляется в единицу и задание удаляется. Календарь отображается с помощью еще одного виджета Qt - .QCalendarWidget. Таким образом, структурную схему программы можно показать на рисунке 4.1.

Рисунок 4.1 - Структурная схема программы

Переносимость данных с мобильной версии происходит следующих путем: в меню настройках синхронизации указывается путь до мобильного устройства. При выборе пункта «Синхронизировать» программа ищет в указанном пути, включая подпапки, файлы с заданным именем файла. После нахождения файлов, они читаются и сравниваются записи на наличие различий. Если таковые имеются, то старые замещаются новыми данными.

4.2 Описание разработки мобильной версии приложения

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

Layout-файл является разметкой размещения элементов. Для каждой из основной частей имеются свои layout-файлы в формате xml и файлы с java-классами, которые обеспечивают работу layout-файла.

Activity (активность) читает layout-файл и отображает то, что в нем сконфигурировано. Каждому Activity сопоставляется одноименный java-класс (наследник класса android.app.Activity). При запуске приложения, когда система должна показать Activity и в дальнейшем работать с ним, она будет вызывать методы этого класса. И от того, что находится в этих методах зависит поведение Activity.

AndroidManifest.xml - Каждое android-приложение имеет файл AndroidManifest.xml. Данный файл содержит различные настройки для работы приложения. В нем хранится имя java-пакета приложения, описываются разрешения (например на использование интернета или данных пользователя), службы (с помощью служб можно, к примеру, отловить момент загрузки приложения) и прочее. При разработке данный файл часто меняется и редактируется. В случае разработки органайзера данный файл изменялся путем добавления новых activity.

R.java - хранит указатели на все ресурсы, определённые в данном проекте. В нём объявлен класс R, который можно использовать для того, чтобы обращаться ко всем ресурсам проекта. Это очень удобно, учитывая что в таких IDE-сред как Eclipse есть функция авто-завершения кода (code completition), благодаря которой можно быстро и интерактивно найти нужное объявление. При добавлении новых ресурсов в проект файл R.java автоматически обновляется и содержит все последние изменения.

Ежедневник представляет собой поле с выводом даты, расположенной справа от него кнопки для выбора дата и расположенным под ним прокручивающейся областью с парами «дата - текстовое поле» для каждого часа в промежутке с 9 до 19 на день, который отображается в поле. Первоначально отображается текущая дата. При выборе новой даты текстовые поля обновляются. Каждое поле имеет название вида - textEditВРЕМЯ.

Справочник организован списком, отображающем в одну строку фамилию и имя. При выборе одного из пунктов происходит переключения на другое activity, где уже полностью отображаются все данные. Это activity, так же вызывается при добавлении нового контакта. Контроль того, в каком режиме работает данный файл происходит с помощью переданного параметра при вызове этого activity. Так как нумерация контактов идёт с единицы, то при выборе контакта из списка, в вызове activity передается его номер. Если же необходимо создать новый контакт, то при вызове передается нуль.

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

Отображение списком происходит с помощью элемента ListView. Особенностью отображения списка в приложениях под android является то, что не сразу данные вносятся в этот список. При создании ListView создавать пункты за нас будет адаптер. Адаптеру нужны от нас данные и layout-ресурс пункта списка. Далее мы присваиваем адаптер списку ListView. Список при построении запрашивает у адаптера пункты, адаптер их создает (используя данные и layout) и возвращает списку. В итоге мы видим готовый список.

Переносимость данных осуществляется тем же путем, что в настольной версии. Так же в обеих версия можно просто подменить xml файлы с данными.

Взаимодействие с пользователем осуществляется посредством экранных элементов, показанных на рисунке 4.2.

Рисунок 4.2 - Схема перехода между экранными формами

4.3 Описание формата хранения данных

Главной особенность программного продукта является переносимость данных из настольной версии органайзера на мобильную и обратно, то необходимо проработать способ хранения этих данных. Так как количество записей не будет исчисляться тысячами, то можно обойтись без баз данных и использовать XML-файлы, которые так же позволят обеспечить быстрый доступ к записям, в том числе и произвольно.

В ПО (программном обеспечении) в XML-файлах хранится три типа данных: записи ежедневника, список контактов и список дел. Каждому типу данных соответствует свой XML-файл. Файлы одинаково называются и в настольной и в мобильной версии приложения. Зная формат хранения данных, можно переносить их с одной версии приложения на другую.

Записи ежедневника хранятся в файле planner.xml, в следующем формате, где тэг <planner> обрамляет все записи целиком и закрывается лишь в конце файла:

<planner>

<day data="11.05.2013">

<time>10</time>

<text>Позвонить Сергею Михайловичу</text>

</day>

</planner>

На каждое время каждой даты формируется своя запись. Таким образом, обеспечивается простота поиска и быстрый доступ к данным. В данном формате записи, следующие тэги означают следующее:

· <day> - содержит в значении атрибута «data» день в календаре в формате «dd.mm.yyyy» и обрамляет задание на определенное время на определенный день целиком;

· <time> - время в ежедневнике, на которое записано событие или дело;

· <text> - собственно, само события или дело.

Записи списка дел хранятся в файле todolist.xml и имеют следующий формат, где тэг <todolist> обрамляет все записи целиком и закрывается лишь в конце файла:

<todolist>

<id number="1">

<text>Погулять с кошкой</text>

<check>0</check>

</id>

</todolist>

В данном формате записи, следующие тэги означают следующее:

· <id> - содержит в значении атрибута «number» порядковый номер записи и обрамляет его целиком;

· <text> - текст дела или задания;

· <check> - отметка о том, выполнено ли дело. 0 - не выполнено, 1 - выполнено.

Записи списка контактов хранятся в файле contacts.xml и имеют следующий вид, где тэг <contacts> обрамляет все записи целиком и закрывается лишь в конце файла:

<contacts>

<id number="1">

<name>Маша</name>

<surname>Петрова</surname>

<organization/>

<post/>

<mobile/>

<phone/>

<email/>

<skype>masha_petrova87</skype>

</id>

</contacts>

В данном формате записи, следующие тэги означают следующее:

· <id> - содержит в значении атрибута «number» порядковый номер контакта и обрамляет его целиком;

· <name> - имя;

· <surname> - фамилия;

· <organization> - место работы;

· <post> - занимаемая должность;

· <mobile> - мобильный номер телефона;

· <phone> - другой номер телефона;

· <email> - электронная почта;

· <skype> - имя пользователя в Skype.

Представление и обращение к данным в настольной версии происходит через класс UploadData. Записи ежедневника хранятся в веткторе vPlanner, состоящего из структур PlannerDay. В свою очередь структура PlannerDay хранит записи о делах на всё время за день и имеет вид:

struct PlannerDay{

QDate dayPlanner;

vector<struct PlannerOneItem> vPlannerDay;

};

В данной структуре dayPlanner - дата дня, а структура PlannerOneItem имеет вид

struct PlannerOneItem{

QDate dayPlanner;

int timePlanner;

QString textPlanner;

};

Данные берутся из файла planner.xml, либо добавляются новые, если ранее таковых не существовало, а так же обновляются. Дата dayPlanner берется из атрибута data, у тэга <day>, timePlanner из тега <time>, а textPlanner из тэга <text>.

Следующим элементом класса является вектор vToDoData, состоящий из структур ToDoData, и имеющая вид:

struct ToDoData{

int idToDo;

QString textToDo;

int check;

};

Поля структуры заполняются из файла todolist.xml, добавляются новые или обновляются. Поле idToDo берется из атрибута number тэга <id>, textToDo из тэга <text>, а значение check из одноименного тэга.

Последним элементом для хранения данных в классе является вектор vContacts, состоящий из структур Contacts, которые имеют вид:

struct Contact{

int cID;

QString cName;

QString cSurname;

QString cOrganization;

QString cPost;

QString cMobilePhone;

QString cPhone;

QString cEmail;

QString cSkype;

};

Так же, как и в предыдущих случаях структура заполняется из xml файла с данными, а именно из contacts.xml, и так же могут добавляться новые данные или обновляться старые. Значение cID берется из атрибута number тэга <id>, cName из <name>, cSurname из <surname>, cOrganization из <organization>, cPost из <post>, cMobilePhone из <mobile>, cPhone из <phone>, cEmail из <cEmail> и cSkype из <skype>.

Способ хранения в мобильной версии приложения отличается от настольной версии, из-за того, что портативные устройства всё равно имеют более слабые технические параметры, чем персональные компьютеры. Хранение данных ограничено классом, который работает со своим Activity. Список заданий хранится в простом ArrayList<String>. Справочник имеет тот же принцип организации данных, храня значение каждого тэга в отдельном массиве. Немного сложнее хранятся записи ежедневника, где в массиве хранятся данные в порядке дата, время и запись.

5. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

5.1 Назначение программы

Программа предназначена для планирования дня, составления и редактирования списка дел, непривязанного к дате и времени и ведения списка контактов, а так же его редактирование.

5.2Условия применения

Настольная версия

· Операционная система Windows XP/Vista/ 7;

· 20 МБ ОЗУ;

· 10 МБ свободного дискового пространства;

· манипуляторы: клавиатура и мышь;

Мобильная версия

Минимальные необходимые требования для нормального функционирования системы:

· устройство под контролем ОС Android 2.3.3;

· 210 Кб свободного пространства.

5.3Установка программы

Настольная версия установки не требует.

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

5.4 Описание применения

Настольная версия

После запуска программы на экране появится диалоговое окно.

Рисунок 5.1 - Главное окно программы

Навигация между ежедневником и контактами происходит путем переключения вкладок.

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

Если необходимо поменять дату и при этом в дне «Завтра» или «Сегодня» происходило редактирование, то необходимо нажать кнопку рядом с соответствующим днём со значком .

При переходе на вкладку «Контакты» приложения принимает следующий вид

Рисунок 5.2 - Приложение с активной вкладкой «Контакты»

При выборе контакта из списка его полная информация отображается в правой части вкладки.

Рисунок 5.3 - Отображение полной информации о контакте

Для добавления нового контакта необходимо нажать на кнопку «Добавить», которая расположена в верхней части вкладки справа от списка контактов. После нажатия кнопки появляется диалоговой окно добавления нового контакта.

Рисунок 5.4 - Диалоговое окно добавление нового контакта

Список дел расположен в левой части приложения и всегда доступен. Для добавления нового задания необходимо нажать на кнопку «+», расположенную в правом верхнем углу области со списком задач. После нажатия появиться диалоговое окно.

Рисунок 5.5 - Диалоговое окно добавление нового задания

При нажатии на задание в списке появиться диалоговое окно, которое позволит или отредактировать задание или пометить его, как выполненное. Если задание помечается как выполненное, то оно удаляется и исчезает из списка.

Рисунок 5.6 - Диалоговое окно редактирования задания

Для перенесения данных с мобильного устройства на мобильную версию программным путем необходимо первоначально подключить устройство как usb-накопитель. В меню программы «Настройки» выбрать пункт «Синхронизация…». В появившимся диалоговом окне указать путь к устройству. Для синхронизации выбрать «Меню» -> «Синхронизировать», или использовать сочетания клавиш Ctrl + S. Так же перенести данные можно вручную, путем копирования файлов planner.xml, todolist.xml и contacts.xml с мобильного устройства в папку с приложением на персональном компьютере. Для этого способа первоначально необходимо закрыть приложение. Стоит учитывать, что при этом способе данные будут полностью заменены. Для завершения работы с приложением можно тремя путями: закрытие диалогового окна, выбор пункта «Выход» в меню и сочетание клавиш Ctrl + X.

Мобильная версия.

После запуска приложение выглядит следующим образом

Рисунок 5.7 - Главный экран приложения

Перенос данных с настольной версии происходит автоматически при запуске приложения, если в этот момент устройство подключено к ПК не как usb-носитель. При нажатии на кнопку «Ежедневник», происходит переход на экран с ежедневником

Рисунок 5.8 - Экран ежедневника

Первоначально отображает дата текущего дня и соответствующие ей данные. Для изменения даты необходимо нажать на кнопку «Сменить дату», тогда появляется всплывающие окно для выбора даты. Для возвращения на главный экран приложения необходимо нажать на кнопку «<<», расположенную в левом нижнем углу экрана. При переходе по пункту «Список дел», происходит переход на экран следующего вида

Рисунок 5.10 - Экран списка дел

Для добавления нового дела необходимо его ввести в поле, расположенное в верху экрана и нажать кнопку ввода. Для удаления дела необходимо удерживать выделение на необходимом задании дольше двух секунд и во всплывшем контекстном меню выбрать «Удалить». Редактирование дела в данной версии не является возможным.

Для возвращения на главный экран приложения необходимо нажать на кнопку «<<», расположенную в левом нижнем углу экрана.

При переходе по кнопке «Контакты» появляется экран следующего вида

Рисунок 5.11 - Экран списка контактов

По выбору контакта происходит переход на экран, где отображается его полная информация.

Для добавления нового контакта необходимо нажать кнопку «+», что повлечет за собой переход на новый экран с формой для заполнения добавления нового контакта.

Рисунок 5.12 - Экран добавление нового контакта

Для удаления дела необходимо удерживать выделение на необходимом контакте дольше двух секунд и во всплывшем контекстном меню выбрать «Удалить». Для возвращения на главный экран приложения необходимо нажать на кнопку «<<», расположенную в левом нижнем углу экрана.

Для завершения работы приложения необходимо вернуться на главный экран и выбрать пункт «Выход».

5.5 Входные и выходные данные

Входными данными являются:

· ввод данных в поля ежедневника;

· ввод данных в список дел;

· ввод данных в поля контакта;

· xml файлы: planner, todolist и contacts;

Выходными данными являются перезаписанные xml файлы: planner, todolist и contacts.

6. РАСЧЕТ ЭКОНОМИЧЕСКИХ ПОКАЗАТЕЛЕЙ

6.1Расчет себестоимости программного продукта

Себестоимость программного продукта - это все виды затрат, понесенные при разработке продукта. Себестоимость включает в себя: затраты на материалы, трудовые затраты, амортизацию основных средств, накладные расходы, а также затраты сторонних организаций. Чтобы определить себестоимость разработки программного продукта использован метод экспертных оценок. Данный метод заключается в следующем: оценка затрат производится несколькими экспертами на основании собственного опыта и знаний. В данном случае в качестве экспертов выступают автор проекта и руководитель. Процесс разработки программного продукта разбит на несколько этапов: анализ поставленной задачи; разработка интерфейса; программирование; тестирование и отладка.

Первый этап включает в себя анализ поставленной задачи и требований, предъявляемых к программе, поиск необходимой информации в Интернете и в других источниках.

Второй этап - моделирование визуальной части программы так, чтобы пользователям легко и доступно давалась предоставленная информация.

Третий этап - реализация разработанной программы на языке программирования.

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

Далее определены для каждого из этапов три величины:

- наименее возможная величина затрат, ai;

- наиболее вероятная величина затрат, mi;

- наиболее возможная величина затрат, bi;

На основании экспертных оценок средняя величина для ai, mi и bi определяется по формуле:

где - среднее время, полученное на основании экспертных оценок;

- оценка затрат времени, данная руководителем;

- оценка затрат времени, данная автором проекта.

Результаты расчета средней оценки затрат времени на разработку программного продукта приведены в таблице 6.1 (оценка производится в днях).

Таблица 6.1 - Время, затраченное на разработку программного продукта

Этапы разработки программы

Наименее возможная величина затрат ai, дни

Наиболее возможная величина затрат bi, дни

Наиболее вероятная величина затрат mi, дни

1 Анализ поставленной задачи

2,0

3,0

2,6

4,0

5,0

4,6

3,0

4,0

3,6

2 Проектирование, разработка интерфейса

6,0

8,0

7,2

8,0

10,0

9,2

7,0

9,0

8,2

3 Программирование

32,0

35,0

33,8

44,0

47,0

45,8

38,0

40,0

39,2

4 Тестирование и отладка

7,0

9,0

8,2

12,0

14,0

13,2

10,0

12,0

11,2

На основе средних оценок рассчитываю математическое ожидание и отклонение по каждому этапу разработки программного продукта. Формула расчета математического ожидания для i-гo этапа:

, (6.2)

где - математическое ожидание для i-гo этапа;

- средние значения.

Стандартное отклонение для каждого этапа разработки программного продукта определяю по формуле:

, (6.3)

где Gi - стандартное отклонение по i-му этапу.

Зная математическое ожидание по каждому этапу, рассчитываю общую величину математического ожидания в целом по программному средству:

, (6.4)

где МО - общая величина математического ожидания.

Стандартное отклонение G в целом по программному средству рассчитываю по следующей формуле:

, (6.5)

где G -стандартное отклонение;

Gi - стандартное отклонение по i-му этапу.

На основе расчетов математического ожидания (6.4) и стандартного отклонения (6.5) рассчитываю коэффициент вариации - коэффициент согласованности мнения экспертов. Коэффициент вариации рассчитываю по формуле:

, (6.6)

где yi - коэффициент вариации i-му этапу.

Теперь могу произвести расчеты на основе таблицы 6.1 и формул (6.1 - 6.6) и свести эти расчеты в таблицу 6.2.

Таблица 6.2 - Затраты на разработку программного продукта

Этапы

разработки

программного

продукта

Средняя величина затрат по этапам,

дни

Матем. ожидание (МОi, дни)

Станд. отклонение(Gi, дни)

Коэффициент вариации (vi)

Наименее

возможная

величина

затрат

(ai, дни)

Наиболее

вероятная

величина

затрат

(mi, дни)

Наиболее

возможная

величина

затрат

(bi, дни)

1Постановка задачи

2,60

3,60

4,60

3,60

0,33

0,09

2 Проектирование, разработка интерфейса

7,20

8,20

9,20

8,20

0,33

0,04

3 Программирование

33,80

39,20

45,80

39,40

2,00

0,05

4 Тестирование и отладка

8,20

11,20

13,20

11,03

0,83

0,08

Итого

51,80

62,20

72,80

62,23

2,28

0,26

Полученный после расчетов коэффициент вариации равен 0,26, то есть не превосходит 0,3. Поэтому мнения экспертов считаются согласованными.

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

Себестоимость программного продукта определяется по формуле (6.7):

гдеЗ ? среднемесячная заработная плата программиста с учетом районного коэффициента. Примем З = 21000 рублей;

М ? количество рабочих дней в месяце (примем М = 21 дня);

k - коэффициент, учитывающий отчисления в виде страховых взносов (k = 1,302)

МО? трудозатраты (62,2 дней);

Кн - коэффициент, учитывающий накладные расходы, Кн =0.5;

Tинт - время работы в сети интернет. Складывается из времени на реализацию всех этапов ( Tинт = 62,2 дней);

Tмаш - время работы машины (компьютера).Складывается из времени на реализацию 2,3,4 этапов, т.е. Tмаш = 58,6 дня;

Cмаш ? стоимость одного часа машинного времени;

Cинт ? стоимость одного часа работы в Интернете. =0,73 руб.;

8 - количество рабочих часов в день;

Так как стоимость интернета 529 рублей в месяц, то рассчитаем стоимость одного часа работы в Интернете по формуле.

Рассчитаем стоимость одного часа машинного времени. Для этого рассчитаем затраты на эксплуатацию персонального компьютера за год по формуле:

гдеCмаш ? стоимость одного часа машинного времени;

Зэл ? затраты на электроэнергию за год работы;

За - амортизационные отчисления;

Зкомпл - затраты на комплектующие материалы;

Зпр ? прочие расходы;

Тобщ ? общее время работы компьютера за год.

Приведем формулы для расчета вышеперечисленных видов затрат.

Общее время работы компьютера за год:

Тобщ = 21 * 12 * 8 = 2016 часов.

Затраты на электроэнергию зависят от тарифа на электроэнергию и потребляемой мощности персонального компьютера, а также от времени работы персонального компьютера. Формула (6.10) для расчета затрат на электроэнергию приведена ниже:

гдеЗэл ? затраты на электроэнергию за год работы;

Тобщ ? общее время работы компьютера за год;

Сэл ? тариф электроэнергии за 1кВт.

Р ? потребляемая персональным компьютером мощность по паспортным данным.

Примем потребляемую мощность персонального компьютера и тариф электроэнергии соответственно:

Р = 0,35 кВт/час;

Сэл = 1,86 руб./кВт.

По формуле (7.10) находим затраты на электроэнергию в год:


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

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