Органайзер: настольная и мобильная версии
Разработка программного обеспечения для органайзера, позволяющего переносить данные пользователя с настольной версии в мобильную. Описание формата хранения данных. Назначение программы, руководство пользователя. Расчет экономических показателей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.10.2017 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
8 - количество рабочих часов в день;
Так как стоимость интернета 529 рублей в месяц, то рассчитаем стоимость одного часа работы в Интернете по формуле.
руб., (6.8)
Рассчитаем стоимость одного часа машинного времени. Для этого рассчитаем затраты на эксплуатацию персонального компьютера за год по формуле:
, (6.9)
Где Cмаш ? стоимость одного часа машинного времени;
Зэл ? затраты на электроэнергию за год работы;
За - амортизационные отчисления;
Зкомпл - затраты на комплектующие материалы;
Зпр ? прочие расходы;
Тобщ ? общее время работы компьютера за год.
Приведем формулы для расчета вышеперечисленных видов затрат.
Общее время работы компьютера за год:
Тобщ = 21 * 12 * 8 = 2016 часов.
Затраты на электроэнергию зависят от тарифа на электроэнергию и потребляемой мощности персонального компьютера, а также от времени работы персонального компьютера. Формула (6.10) для расчета затрат на электроэнергию приведена ниже:
, (6.10)
Где Зэл ? затраты на электроэнергию за год работы;
Тобщ ? общее время работы компьютера за год;
Сэл ? тариф электроэнергии за 1кВт.
Р ? потребляемая персональным компьютером мощность по паспортным данным.
Примем потребляемую мощность персонального компьютера и тариф электроэнергии соответственно:
Р = 0,35 кВт/час;
Сэл = 1,86 руб. /кВт.
По формуле (7.10) находим затраты на электроэнергию в год:
Зэл = 2016 * 1896 * 0,35 = 1312,42 руб.;
Прочие расходы составляют 5% от общей суммы затрат. Они рассчитываются по формуле (6.11):
руб., (6.11)
Где Зпр ? прочие расходы.
Затраты на амортизационные отчисления не рассчитываются, т.к. стоимость компьютера менее 40 тыс. рублей. Также затрат на комплектующие материалы тоже нет.
Зная все данные, подсчитаем стоимость одного часа машинного времени по формуле (6.9):
Рассчитаем себестоимость программного продукта по формуле (6.7):
руб.
Цена программного продукта с учетом НДС рассчитывается по формуле (6.12):
, (6.12)
Где Цндс - цена программного продукта с НДС;
Ц - цена программного продукта;
Кндс - коэффициент, учитывающий ставку налога на добавленную стоимость (НДС) (Кндс = 0,18).
По формуле (6.12) вычисляется цена программного продукта с учетом НДС:
руб.
6.2 Эффект от использования программного продукта
Эффект характеризуется экономией рабочего времени при использовании программного продукта. При использовании данной программы автоматизируются стандартные и повседневные операции, что позволяет экономить денежные средства и сокращать время для решения повседневных задач. Экономию трудозатрат можно рассчитать по формуле:
Экономия трудозатрат рассчитывается по формуле (6.13):
, (6.13)
Где - экономия трудозатрат k-ой выполняемой операции;
- трудоемкость выполнения операций без программы;
- трудоемкость выполнения операций с программой.
, (6.14)
Где - степень автоматизации.
Для пользователей эффектом будет экономия времени. Затраты времени, приходящиеся на выполнение работ и экономия затрат времени приводятся в форме таблицы 3.3 Для расчета единицу измерения времени, затрачиваемую на решение одной операции, принимается час. Степень автоматизации оценивается в 80%.
Таблица 3.3 - Затраты времени, приходящиеся на выполнение работ и экономия затрат времени
Задача |
Затраты времени tруч к, часы |
Затраты времени tавт к, часы |
Экономия трудозатрат Дtк, часы |
Частота выполнения операции в месяц, S |
Общая экономия с учетом частоты выполнения операции |
|
Занесение записи в ежедневник |
0,017 |
0,007 |
0,010 |
60,000 |
0,612 |
|
Редактирование записи в ежедневнике |
0,033 |
0,013 |
0,020 |
30,000 |
0,594 |
|
Составление списка дел |
0,160 |
0,064 |
0,096 |
30,000 |
2,88 |
|
Добавление дела в список |
0,017 |
0,007 |
0,010 |
40,000 |
0,408 |
|
Редактирование дела в списке |
0,033 |
0,013 |
0,020 |
20,000 |
0,396 |
|
Просмотр списка контактов |
0,025 |
0,010 |
0,015 |
15,000 |
0,225 |
|
Добавление нового контакта |
0,033 |
0,013 |
0,020 |
15,000 |
0,297 |
|
Редактирование контакта |
0,050 |
0,02 |
0,03 |
15 |
0,45 |
|
Итого |
5,862 |
В результате внедрения программы высвобождается дополнительное рабочее время в месяц.
Необходимо вычислить условную экономию численности, она характеризует уменьшение потребности в трудовых ресурсах и рассчитывается по формуле:
, ед., (3.15)
Где ? экономия трудозатрат;
? коэффициент отпусков (1,08);
? Фонд рабочего времени, равный 1970 часов в год.
ед.
Зная условную экономию численности, рассчитаем экономию по оплате труда в сфере потребления с учетом отчислений во внебюджетные фонды по формуле:
, (6.16)
Где
? условная экономия по оплате труда;
? условная экономия численности;
? среднемесячная заработная плата программиста с учетом районного коэффициента (З = 21000 руб.);
- коэффициент, учитывающий отчисления во внебюджетные фонды (1,302).
- районный коэффициент, = 1,2.
руб.
Срок окупаемости затрат на приобретение программного продукта пользователем вычисляется по формуле:
, (6.17)
Где ? себестоимость разработанного продукта;
? условная экономия по оплате труда.
года.
Таким образом, после внедрения данного продукта срок окупаемости 1,12 года.
7. Безопасность жизнедеятельности
7.1 Характеристика вредных и опасных факторов при работе с ПК
Работа за персональным компьютером влечет за собой возникновение опасных и вредных факторов, наиболее значимые из которых следующие:
1. Повышенная величина напряжения тока в электрических цепях питания ПК;
2. Излучения от экрана монитора;
3. Не соответствующие нормам параметры микроклимата;
4. Не соответствующие санитарным нормам визуальные параметры дисплея: неоптимальные параметры схем развертки ЭЛТ, несовместимость параметров монитора и графического адаптера, недостаточно высокое разрешение монитора, расфокусировка, избыточная или недостаточная яркость изображения, наличия бликов на лицевой панели экрана и несоблюдения расстояния от глаз оператора до экрана.
5. Пониженный или повышенный уровень освещенности в помещении;
6. Повышенный уровень шума в системном блоке от: вентилятора процессора, вентилятора видеокарты, вентилятора блока питания, жесткого диска и оптических приводов.
7. Психофизиологическая напряженность труда, включающая:
- монотонность труда;
- повышенное умственное напряжение из-за большого объема перерабатываемой и усваиваемой информации;
- повышенное нервно-эмоциональное;
- длительные статические нагрузки;
Продолжительная работа за компьютером, не обеспеченная организационно-техническими защитными мерами отрицательно сказывается на здоровье пользователей. Однако риск повреждения здоровья можно снизить, руководствуясь санитарно-эпидологическими нормативами и правилами, такими как: "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы. СанПиН 2.2.2/2.4.1340-03", "Гигиенические требования к микроклимату производственных помещений. СанПиН 2.2.4.548-96", "Гигиенические требования к естественному, искусственному и совмещенному освещению жилых и общественных зданий. СанПиН 2.2.1/2.1.1.1278-03", "Электромагнитные поля в производственных условиях. СанПиН 2.2.4.1191-03", "Шум на рабочих местах, в помещениях жилых, общественных зданий и на территории жилой застройки. СН 2.2.4/2.1.8.562-96".
7.2 Организация рабочего места при работе с ПК
Площадь на одно рабочее место пользователя ПК составляет 6 м2 и 4,5 м2, с монитором на базе электронно-лучевой трубке и ЖК монитором соответственно. По отношению к световым проемам, ПК должны располагаться так, чтобы естественный свет падал сбоку, преимущественно слева. Свет, падающий сзади, ухудшает видимость, создает блики на экране.
Конструкция рабочего стола должна обеспечивать оптимальное размещение всех элементов оборудования с учетом их конструктивных особенностей.
Конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПК позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления. Тип рабочего стула (кресла) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПК.
Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм. Рабочее место пользователя ПК следует оборудовать подставкой для ног. Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.
Экран монитора должен находиться от глаз пользователя на оптимальном расстоянии - 600-700 мм, но не ближе 500 мм.
7.3 Санитарно-гигиенические параметры рабочего места
Требования к уровням шума
В производственных помещениях при выполнении основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих местах не должны превышать предельно допустимых значений, установленных для данных видов работ в соответствии с действующими санитарно-эпидемиологическими нормативами.
Печатающее оборудование, являющееся источником шума, следует устанавливать на звукопоглощающей поверхности автономного рабочего места пользователя. Если уровни шума от печатающего оборудования превышают нормируемые, оно должно быть расположено вне помещения с ПК. Помещения для выполнения основной работы с ПК не должны быть расположены рядом (смежно) с производственными помещениями с повышенным уровнем шума (мастерские, производственные цеха и т.п.).
При выполнении основной работы на ПК, где работают инженерно-технические работники, уровень шума не должен превышать 60 дБА, в помещениях операторов ЭВМ (без дисплеев) - 65 дБА, на рабочих местах в помещениях, где размещаются шумные агрегаты вычислительных машин - 75 дБА.
Требования к микроклимату рабочих мест
На рабочем месте пользователей должны обеспечиваться оптимальные параметры микроклимата. На работах, производимых сидя и не требующих физического напряжения (категория работ - 1а), температура воздуха должна быть в холодный период года от 22 до 24 С0, теплый период года - от 23 до 25 С0. Относительная влажность воздуха на постоянных рабочих местах должна составлять 40-60%, скорость движения воздуха должна быть 0,1 м/с. Для повышения влажности воздуха в помещениях следует применять увлажнители воздуха.
Требования к освещению рабочих мест
Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300-500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк.
Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПК при этом соотношение яркости между рабочими поверхностями не должно превышать 3: 1-5: 1, а между рабочими поверхностями и поверхностями стен и оборудования - 10: 1.
Коэффициент пульсации не должен превышать 5%.
Для исключения бликов отражений в экране светильников общего освещения рабочий стол с ПК следует размещать между рядами светильников. При этом светильники должны быть расположены параллельно горизонтальной линии взгляда работающего.
При рядном размещении рабочих столов не допускается расположение экранов дисплеев навстречу друг другу из-за их взаимного отражения, в противном случае между столами следует устанавливать перегородки.
Требования к уровням электромагнитных полей на рабочих местах
Одной из опасностей при работе с ПК является электромагнитное излучение. Большая часть излучения приходится на мониторы и источники бесперебойного питания.
Временные допустимые уровни электромагнитных полей представлены в таблице 4.1.
Таблица 4.1 - Временные допустимые уровни ЭМП, создаваемых ПК
Наименование параметров |
ВДУ ЭМП |
||
Напряженность электрического поля |
в диапазоне частот 5 Гц - 2 кГц |
25 В/м |
|
в диапазоне частот 2 кГц - 400 кГц |
2,5 В/м |
||
Плотность магнитного потока |
в диапазоне частот 5 Гц - 2 кГц |
250 нТл |
|
в диапазоне частот 2 кГц - 400 кГц |
25 нТл |
||
Электростатический потенциал экрана видеомонитора |
500 В |
Как показали многочисленные исследования, кроме источников ЭМП дисплея (элементы питания, высоковольтные элементы, блоки кадровой и строчной развертки) существует еще один источник переменного электрического поля в дисплеях на электронно-лучевых трубках - непосредственно экран дисплея. При изменении характера изображения на экране дисплеев уровни их электромагнитных полей могут меняться, в том числе и в сторону увеличения по отношению к величинам, зафиксированным при тестовых испытаниях. До сих пор испытываются мониторы лишь при текстовой картинке, и в этом режиме работы уровень ЭМП от включенного компьютера остается в норме. В частности, резкое увеличение напряженности поля происходит во время работы с графической информацией, особенно при повышении четкости изображения на экране монитора.
Для защиты работающих на соседних рабочих местах рекомендуется устанавливать между рабочими столами специальные защитные экраны, имеющие покрытие, поглощающее низкочастотное электромагнитное излучение.
Самым надежным способом устранения эффектов повышения магнитных полей в зоне расположения пользователя ПК является использование мебели и расположенного рядом оборудования, в которых отсутствуют замкнутые по контуру металлические конструкции.
7.4 Электробезопасность
При установке ПК на рабочем месте он должен быть правильно подключен к электропитанию и должно быть надежно обеспечено заземление (зануление) системного блока и источника питания ПК, а также заземление защитного фильтра и локальной сети. Проведение периодического контроля сопротивления заземления (зануления) обязательно.
Необходимо обеспечить наибольшее удаление пользователя от сетевых розеток и проводов электропитания. Не рекомендуется использование двухпроводных удлинителей, переносок и сетевых фильтров, а также подобных устройств с трехконтактными розетками и вилками питания, но с незадействованным контактом зануления. Использование таких устройств можно допустить при наличии отдельно выполненного заземления (зануления) системного блока ПК.
7.5 Пожарная безопасность
Пожарная безопасность обеспечивается системой предотвращения пожара и системой пожарной защиты. Во всех служебных помещениях обязательно должен быть "План эвакуации людей при пожаре", регламентирующий действия персонала в случае возникновения очага возгорания и указывающий места расположения пожарной техники.
Как известно, пожар может возникнуть при взаимодействии горючих веществ, окислителя и источников зажигания. В помещениях с ПК присутствуют все три основные фактора, необходимые для возникновения пожара.
Горючими компонентами являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, изоляция кабелей и др.
Источниками зажигания в ПК могут быть электрические схемы от ПК, приборы, применяемые для технического обслуживания, устройства электропитания, кондиционирования воздуха, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать загорания горючих материалов.
В современных ПК очень высокая плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно оплавление изоляции. Для отвода избыточной теплоты от ПК служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность.
В помещениях с ПК наиболее вероятны пожары классов А и Е, т.е. горение твердых веществ, сопровождаемое тлением (А) или самовозгоранием электроустановок (Е).
Рекомендуемые нормы оснащения огнетушителями (на 200 м2 помещения): для класса А - 2 воздушно-пенных ОВП-10 или 2 порошковых ОВ-5, для класса Е - 2 порошковых ОП-5, для класса А и Е - 2 воздушно-пенных ОВП-Ю.
В замкнутых помещениях объемом до 50 м2 вместо переносных огнетушителей (или в дополнение к ним) можно использовать подвесные самосрабатывающие порошковые огнетушители ОСП.
Применение воды и пенных огнетушителей для тушения находящегося под напряжением электрооборудования недопустимо. Для этих целей используются углекислотные или порошковые огнетушители.
Для обнаружения начальной стадии загорания и оповещения службы пожарной охраны используют системы автоматической пожарной сигнализации (АПС) или охранно-пожарной сигнализации (ОПС). ОПС - основной элемент системы безопасности охраняемого объекта. Это интегрированный комплекс систем пожарной и охранной сигнализации. Она объединяет функцию защиты от несанкционированного проникновения в помещение и функцию обнаружения возгорания и возможно автоматического пожаротушения. Обычно в этот комплекс входят все системы безопасности помещения, что обеспечивает максимальную точность и быстроту обнаружения нарушения безопасности здания: несанкционированного проникновения, возгорания и т.д.
При возникновении пожара, в соответствии с документом "Правила пожарной безопасности в Российской Федерации (ППБ 01-03)", необходимо:
1) немедленно вызвать пожарную охрану;
2) сообщить руководству;
3) по возможности отключить электропитание;
4) также по возможности принять меры по эвакуации людей, тушению пожара и сохранности материальных ценностей.
Заключение
В данном дипломном проекте был разработан программный продукт, состоящий из настольного и мобильного органайзера. Настольная версия под операционную систему Widows XP/Vista/7, мобильная версия под Android 2.3.3 и выше.
В процессе разработки были получены навыки работы с платформами Qt Creator и Eclipse, с языком программирования Java и C++, с библиотекой для создания графического интерфейса для программ на языке С++ - Qt GUI, и пакетом для разработки программного обеспечения на языке Java под Android - Android SDK. Реализована возможность переносимости данных с одной версии на другую.
Библиография
1. Android для программистов: создаём приложения. / П. Дейтел, Х. Дейтел, Э. Дейтел, М. Моргано, - СПб.: Питер, 2013. - 560 с.: ил.
2. Wikipedia, the free encyclopedia [Электронный ресурс]: Cвободная общедоступная многоязычная универсальная энциклопедия. - Режим доступа: http://ru. wikipedia.org/wiki/Main_Page. - Загл. с экрана. - яз. русс.
3. Бланшет Ж., Qt 4: Программирование GUI на С++. Пер с англ.2-е изд., доп. / Ж. Бланшет, М. Саммерфилд - М.: КУДИЦ-ПРЕСС, 2008. - 736 с.
4. Дэрси Л., Andoird за 24 часа. Программирование приложений под операционную систему Google / Л. Дэрси, Ш. Кодер - М.: Рид Групп, 2011. - 464 с. - (Профессиональные компьютерные книги).
5. Страуструп, Б. Язык программирования С++. Специальное издание. Пер. с англ. - М.: Издательство Бином, 2012 г. - 1136 с.: ил.
6. Шлее, М. Qt 4.8 Профессиональное программирование на C++. - СПб.: БХВ-Петербург; 2012. - 912 с.: ил. - (В подлиннике)
Приложение
Исходный код настольной версии
YourOrg:: YourOrg (QWidget *parent): QMainWindow (parent)
{
setupUi (this);
int check = 1;
if (check > 0) {
createMenu ();
startLoad ();
} else {
this->close ();
}
}
void YourOrg:: createMenu ()
{
QMenu* pmnu = new QMenu ("&Menu");
pmnu->addAction ("&Synchronize", this,
SLOT (startSync ()), Qt:: CTRL + Qt:: Key_S);
pmnu->addAction ("&Exit", this, SLOT (close ()),
Qt:: CTRL + Qt:: Key_Q);
QMenu* setMenu = new QMenu ("&Settings");
setMenu->addAction ("&Synchronization.", this,
SLOT (syncSettings ()));
menubar->addMenu (pmnu);
menubar->addMenu (setMenu);
}
void YourOrg:: startSync ()
{
fileFound = 0;
xmlOrg = "planner. xml todolist. xml";
QString tmpPath;
tmpPath. clear ();
startFind (dirForSyncPath);
if (fileFound < 2) {
qDebug () << "Files didn't find";
} else {
qDebug () << "Ok: " << dirForSyncPath;
for (int i = 0; i < dirForSyncPath. length () - 12; i++) {
tmpPath += dirForSyncPath [i];
}
qDebug () << tmpPath;
dirForSyncPath = tmpPath;
}
syncFiles ();
}
void YourOrg:: syncSettings ()
{
dirForSyncPath = QDir:: current (). absolutePath ();
qDebug () << dirForSyncPath;
QString str = QFileDialog:: getExistingDirectory (0, "Select a directory.", dirForSyncPath);
if (! str. isEmpty ()) {
dirForSyncPath = str;
qDebug () << str;
}
}
void YourOrg:: startLoad ()
{
todayDate = QDate:: currentDate ();
currentDate = todayDate;
QDate dateTomorrow = currentDate. addDays (1);
QString stringToday = currentDate. toString ("dd. MM. yyyy");
QString stringTomorrow = dateTomorrow. toString ("dd. MM. yyyy");
labelTodayData->setText (stringToday);
labelTomorrowData->setText (stringTomorrow);
fillPlanner ();
fillContactsList ();
fillToDoList ();
loadSyncPath ();
connect (pbAddToDo, SIGNAL (clicked ()), this,
SLOT (callAddToDoItem ()));
connect (calendarWidget, SIGNAL (selectionChanged ()),
this, SLOT (saveSelectDate ()));
connect (pbRefreshToday, SIGNAL (clicked ()), this,
SLOT (refreshToday ()));
connect (pbRefreshTomorrow, SIGNAL (clicked ()), this,
SLOT (refreshTomorrow ()));
connect (pushButtonAddNewContact, SIGNAL (clicked ()), this,
SLOT (callAddContactForm ()));
connect (listWidgetContacts,
SIGNAL (itemClicked (QListWidgetItem*)), this, SLOT (fillContactInfoGroupBox ()));
connect (pbRefreshContact, SIGNAL (clicked ()), this,
SLOT (refreshContact ()));
connect (pbDeleteContact, SIGNAL (clicked ()), this,
SLOT (deleteContact ()));
connect (listWidgetToDo, SIGNAL (itemClicked (QListWidgetItem*)),
this, SLOT (editToDoItem ()));
}
void YourOrg:: fillContactInfoGroupBox ()
{
qDebug () << "item: " << listWidgetContacts->currentItem () - >text () << "\tindex: " << listWidgetContacts->currentRow ();
int idC = - 1;
idC = findIdContact (listWidgetContacts->currentItem () - >text ());
if (idC > - 1) {
leInfoSurname->setText (data. vContacts [idC]. cSurname);
leInfoName->setText (data. vContacts [idC]. cName);
leInfoMobile->setText (data. vContacts [idC]. cMobilePhone);
leInfoOrg->setText (data. vContacts [idC]. cOrganization);
leInfoPost->setText (data. vContacts [idC]. cPost);
leInfoEmail->setText (data. vContacts [idC]. cEmail);
leInfoSkype->setText (data. vContacts [idC]. cSkype);
leInfoPhone->setText (data. vContacts [idC]. cPhone);
}
}
void YourOrg:: callAddToDoItem ()
{
AddToDoForm addToDoF (this);
QString strText;
if (addToDoF. exec ()) {
strText = addToDoF. lineEdit->text ();
data. AddToDoItem (strText);
fillToDoList ();
}
}
void YourOrg:: contactsSave ()
{
QDomDocument doc ("contacts");
QDomElement domElement = doc. createElement ("contacts");
QString cName, cSurname, cOrg, cPost, cMPhone, cPhone, cEmail, cSkype, IDtoS;
int cID;
doc. appendChild (domElement);
for (int i = 0; i < data. vContacts. size (); i++) {
cID = data. vContacts [i]. cID;
IDtoS. clear ();
IDtoS. append (QString ("%1"). arg (cID));
cName = data. vContacts [i]. cName;
cSurname = data. vContacts [i]. cSurname;
cOrg = data. vContacts [i]. cOrganization;
cPost = data. vContacts [i]. cPost;
cMPhone = data. vContacts [i]. cMobilePhone;
cPhone = data. vContacts [i]. cPhone;
cEmail = data. vContacts [i]. cEmail;
cSkype = data. vContacts [i]. cSkype;
QDomElement dayElement = contactsXmlMaker (doc, IDtoS, cName, cSurname, cOrg, cPost, cMPhone, cPhone, cEmail, cSkype);
domElement. appendChild (dayElement);
}
QFile file ("contacts. xml");
if (file. open (QIODevice:: WriteOnly)) {
QTextStream (&file) << doc. toString ();
file. close ();
}
}
void YourOrg:: todoListSave ()
{
QDomDocument doc ("todolist");
QDomElement domElement = doc. createElement ("todolist");
QString tdTextToDo, IDtoStr, CheckToStr;
int tdID, tdCheck;
doc. appendChild (domElement);
for (int i = 0; i < data. vToDoData. size (); i++) {
tdID = data. vToDoData [i]. idToDo;
IDtoStr. clear ();
IDtoStr. append (QString ("%1"). arg (tdID));
tdCheck = data. vToDoData [i]. check;
CheckToStr. clear ();
CheckToStr. append (QString ("%1"). arg (tdCheck));
tdTextToDo = data. vToDoData [i]. textToDo;
QDomElement todoListElement = todoListXmlMaker (doc, IDtoStr, tdTextToDo, CheckToStr);
domElement. appendChild (todoListElement);
}
QFile file ("todolist. xml");
if (file. open (QIODevice:: WriteOnly)) {
QTextStream (&file) << doc. toString ();
file. close ();
}
}
QDomElement YourOrg:: todoListXmlMaker (QDomDocument& domDoc, const QString sID, const QString sTextToDo, const QString sCheck)
{
QDomElement domElement = todoListElement (domDoc, "id", sID);
domElement. appendChild (todoListElement (domDoc, "text", "", sTextToDo));
domElement. appendChild (todoListElement (domDoc, "check", "", sCheck));
return domElement;
}
QDomElement YourOrg:: todoListElement (QDomDocument& domDoc, const QString& strName, const QString& strAttr, const QString& strText)
{
QDomElement domElement = domDoc. createElement (strName);
if (! strAttr. isEmpty ()) {
QDomAttr domAttr = domDoc. createAttribute ("number");
domAttr. setValue (strAttr);
domElement. setAttributeNode (domAttr);
}
if (! strText. isEmpty ()) {
QDomText domText = domDoc. createTextNode (strText);
domElement. appendChild (domText);
}
return domElement;
}
void YourOrg:: todoListsSync () {
vector<int> addD;
int index, allEqual = 0;
QString str1, str2;
for (int i = 0; i < syncData. vToDoData. size (); i++) {
str2 = syncData. vToDoData [i]. textToDo;
allEqual = 0;
for (int j = 0; j < data. vToDoData. size (); j++) {
str1 = data. vToDoData [j]. textToDo;
if (str1.compare (str2)) {
allEqual++;
}
}
if (allEqual > (data. vToDoData. size () - 1)) {
addD. push_back (i);
}
}
for (int i = 0; i < addD. size (); i++) {
index = addD [i];
QString str = syncData. vToDoData [index]. textToDo;
data. AddToDoItem (str);
}
fillToDoList ();
}
void YourOrg:: closeEvent (QCloseEvent* pe)
{
int ret = plannerSave ();
contactsSave ();
todoListSave ();
saveSyncPath ();
qDebug () << "close app";
}
Приложение В исходный код мобильной версии
public class MainActivity extends Activity implements OnClickListener {
Button buttonPlanner;
Button buttonToDo;
Button buttonTel;
Button buttonExit;
@Override
protected void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (R. layout. main);
buttonPlanner = (Button) findViewById (R. id. buttonPlanner);
buttonToDo = (Button) findViewById (R. id. buttonToDo);
buttonTel = (Button) findViewById (R. id. buttonTel);
buttonExit = (Button) findViewById (R. id. buttonExit);
buttonTel. setOnClickListener (this);
buttonPlanner. setOnClickListener (this);
buttonToDo. setOnClickListener (this);
buttonExit. setOnClickListener (this);
}
@Override
public void onClick (View v) {
switch (v. getId ()) {
case R. id. buttonPlanner:
Intent intent = new Intent (this, ActivityPlanner. class);
startActivity (intent);
break;
case R. id. buttonToDo:
Intent intentToDo = new Intent (this, ToDoActivity. class);
startActivity (intentToDo);
break;
case R. id. buttonTel:
Intent intentTel = new Intent (this, TelActivity. class);
startActivity (intentTel);
break;
case R. id. buttonExit:
moveTaskToBack (true);
finish ();
System runFinalizerOnExit (true);
System. exit (0);
break;
default:
break;
}
}
@Override
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater (). inflate (R. menu. main, menu);
return true;
}
}
public class FullContactFormActivity extends Activity implements OnClickListener
{
final String LOG_TAG = "myLogs";
Button buttonOk;
Button buttonCancel;
Intent intentData;
StringfindId;
String tmpName;
String tmpText;
StringtmpAttr;
protected void onCreate (Bundle savedInstanceState)
{
super. onCreate (savedInstanceState);
setContentView (R. layout. full_contact_form);
buttonOk = (Button) findViewById (R. id. buttonOkFC);
buttonCancel = (Button) findViewById (R. id. buttonCancelFC);
buttonCancel. setOnClickListener (this);
buttonOk. setOnClickListener (this);
findId = "";
intentData = getIntent ();
String scid = intentData. getStringExtra ("cid");
Log. d (LOG_TAG, "get cid: " + scid);
if (! scid. equals ("0")) {
findId = scid;
fillContact ();
}
}
@Override
public void onClick (View v)
{
Intent intent = new Intent (this, TelActivity. class);
switch (v. getId ()) {
case R. id. buttonOkFC:
startActivity (intent);
break;
case R. id. buttonCancelFC:
startActivity (intent);
break;
default:
break;
}
}
void fillContact ()
{
String tmp = "";
String tmpAttrName = "";
int count = 0;
try {
XmlPullParser xpp = prepareXpp ();
while (xpp. getEventType ()! = XmlPullParser. END_DOCUMENT) {
switch (xpp. getEventType ()) {
case XmlPullParser. START_DOCUMENT:
Log. d (LOG_TAG, "START_DOCUMENT");
break;
case XmlPullParser. START_TAG:
tmp = "";
tmpAttrName = "";
tmpName = xpp. getName (). toString ();
for (int i = 0; i < xpp. getAttributeCount (); i++) {
tmpAttr = xpp. getAttributeValue (i);
tmpAttrName = xpp. getAttributeName (i);
tmp = tmp + tmpAttrName + " = " + tmpAttr +", ";
}
break;
case XmlPullParser. END_TAG:
break;
case XmlPullParser. TEXT:
tmpText = xpp. getText (). toString ();
if (tmpAttr. equals (findId)) {
if (tmpName. equals ("name")) ed1. setText (tmpText);
if (tmpName. equals ("surname")) ed2. setText (tmpText);
if (tmpName. equals ("organization")) ed3. setText (tmpText);
if (tmpName. equals ("post")) ed4. setText (tmpText);
if (tmpName. equals ("mobile")) ed5. setText (tmpText);
if (tmpName. equals ("phone")) ed6. setText (tmpText);
if (tmpName. equals ("email")) ed7. setText (tmpText);
if (tmpName. equals ("skype")) ed8. setText (tmpText);
}
break;
default:
break;
}
xpp. next ();
}
Log. d (LOG_TAG, "END_DOCUMENT");
} catch (XmlPullParserException e) {
e. printStackTrace ();
} catch (IOException e) {
e. printStackTrace ();
}
}
XmlPullParser prepareXpp ()
{
return getResources (). getXml (R. xml. contacts);
}
}
public class ToDoActivity extends Activity implements OnClickListener
{
public static final int IDM_DEL = 101;
final String LOG_TAG = "myLogs";
Button buttonBack;
ListView lv;
ArrayAdapter<String> adapter;
int posItemForDel;
String tmpName;
@Override
protected void onCreate (Bundle savedInstanceState)
{
super. onCreate (savedInstanceState);
setContentView (R. layout. todo);
buttonBack = (Button) findViewById (R. id. buttonBack);
buttonBack. setOnClickListener (this);
lv = (ListView) findViewById (R. id. listView_list);
final EditText editText = (EditText) findViewById (R. id. editTextSurname);
registerForContextMenu (lv);
final ArrayList<String> list = new ArrayList<String> ();
adapter = new ArrayAdapter<String> (this, android. R. layout. simple_list_item_1, list);
lv. setAdapter (adapter);
String tmp = "";
@Override
public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super. onCreateContextMenu (menu, v, menuInfo);
menu. add (menu. NONE, IDM_DEL, menu. NONE, "Удалить");
}
@Override
public boolean onContextItemSelected (MenuItem item)
{
CharSequence message;
switch (item. getItemId ())
{
case IDM_DEL:
lv. setOnItemClickListener (new AdapterView. OnItemClickListener () {
@Override
public void onItemClick (AdapterView<? > parent,
View itemClicked, int position, long id) {
posItemForDel = position;
}
});
String strText = lv. getItemAtPosition (posItemForDel). toString ();
adapter. remove (strText);
adapter. notifyDataSetChanged ();
message = "Удалено: " + strText;
break;
default:
return super. onContextItemSelected (item);
}
Toast toast = Toast. makeText (this, message, Toast. LENGTH_SHORT);
toast. setGravity (Gravity. CENTER, 0, 0);
toast. show ();
return true;
}
@Override
public void onClick (View v) {
switch (v. getId ()) {
case R. id. buttonBack:
Intent intent = new Intent (this, MainActivity. class);
startActivity (intent);
break;
default:
break;
}
}
}
Размещено на Allbest.ru
Подобные документы
Практическая обработка навыков работы с платформами Qt Creator, Eclipse и с языками программирования Java и C++. Разработка программного продукта, состоящего из настольного и мобильного органайзера под операционные системы Windows XP, Vista и Android 2.3.
дипломная работа [2,1 M], добавлен 16.06.2013Создание генератора статичной версии системы стратегического планирования в виде сайта. Разработка способа перевода динамических веб-страниц в статичные и Flash-объектов в изображения. Реализация веб-интерфейса взаимодействия пользователя с генератором.
отчет по практике [1,5 M], добавлен 06.04.2013Разработка программного модуля "органайзер", позволяющего вести телефонную книгу, книгу записей, а так же работать с фильтрами и отчетами по данным. Характеристика используемой ЭВМ, ОС и языка программирования. Описание переменных, процедур и функций.
курсовая работа [1,5 M], добавлен 25.12.2012Структура программного комплекса и UML–представление программного обеспечения. Анализ статических нагрузок на пользователя при работе за компьютером. Руководство пользователя, программиста и системного администратора. Ошибки фискальных регистраторов.
дипломная работа [3,4 M], добавлен 02.09.2013Выбор языка программирования. Требования к информационному и техническому обеспечению. Реализация базы данных. Разработка алгоритма работы программного обеспечения. Форма идентификации пользователя. Руководство пользователя. Типы элементов диалога.
дипломная работа [1,3 M], добавлен 05.07.2013Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.
курсовая работа [421,6 K], добавлен 27.06.2015Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.
курсовая работа [700,0 K], добавлен 14.01.2015Проектирование программного обеспечения для создания баз данных о работах студентов университета при помощи языка Visual Basic. Разработка интерфейса пользователя. Руководство для системного программиста. Краткое описание алгоритма работы с программой.
курсовая работа [2,6 M], добавлен 19.03.2010Анализ предметной области АИС "Подписка". Проектирование базы данных методом "Сущность-Связь" для разработанной функциональной модели. Описание таблиц базы данных. Выбор программного обеспечения, требования к нему. Краткое руководство пользователя.
курсовая работа [719,6 K], добавлен 15.09.2012Разработка базы данных учета и хранения заявок пользователя. Создание программного средства на основе клиент/серверной технологии. Описание возможностей платформы Tandem Framework. Апробация программы автоматизации процессов подачи и обработки заявок.
дипломная работа [3,6 M], добавлен 08.03.2013