Разработка мобильного приложения расчета и учета оплаты коммунальных услуг
Разработка программы, позволяющей вести учет платежей. Виды и особенности операционных систем для смартфонов. Проектирование интерфейса программы и порядок её взаимодействия с пользователем. Основные компоненты и средства разработки мобильных приложений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.05.2016 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
android:id="@+id/linearLayout"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Сохранить"
android:id="@+id/btnUserSave"
android:onClick="btnUserSave_OnClick"/>
</LinearLayout>
</RelativeLayout>
Все элементы имеют атрибуты, позволяющие управлять их размерами или расположением. Рассмотрим атрибуты, представленные в примере.
Поскольку RelativeLayout является корнем в макете, он должна заполнить всю область экрана, которая доступна в приложении, установив ширину (layout_width) и высоту (layout_height) "match_parent". Это значение указывает, что вид должен расширить свою ширину или высоту, чтобы соответствовать ширине или высоте родительского вида. Атрибут android:layout_margin определяет отступ элемента от соседних элементов(или от родительского). В нашем примере значение этого элемента 15dp. Dp - абстрактная единица, основанная на плотности экрана. Атрибут tools:context позволяет определить связь между макетом и классом активности, в которой данный макет будет реализован.
Теперь рассмотри атрибуты ScrollView. Атрибута определяющий ширину имеет размер такой же, как и родительский элемент (fill_parent), а атрибут определяющий длину - по своему содержимому (wrap_content). Следующий атрибут обозначает то, что элемент располагается выше элемента, указанного в значении, т.е. выше LinearLayout, содержащего кнопки. И последний атрибут обозначает, что верхняя граница нашего элемента, располагается на верхней границу RelativeLayout.
Следующий элемент LinerLayout имеет такие же значения атрибутов, описывающих высоту и ширину. У этого элемента следует указывать ориентацию, в примере значение этого атрибута "vertical".
Дальше представлены элементы TextView и EditText (по одному элементу в качестве примера). Здесь появляются новые атрибуты. В TextView - это размер текста и строка отображаемая в этом элементе. В EditText добавляется значение идентификатора, для дальнейшего использования этого элемента.
У элемента Button инициализируется событие on_Click (нажатие кнопки), которому присваивается имя. Это событие описывается в соответствующем Java-классе.
3.3 Реализация базы данных
Для создания таблиц базы данных, структура которой представлена на рис. 21 в программе использовались следующие запросы:
CREATE TABLE tariffs (
tariff_id integer primary key autoincrement,
tariff_name text,
tariff_tariff real);
CREATE TABLE info_user (
info_id integer primary key autoincrement,
info_full_name text,
info_address text,
info_home_phone text,
info_mobile_phone text);
CREATE TABLE history (
history_id integer primary key autoincrement,
history_name text,
history_date text,
history_previous_value integer,
history_present_value integer,
history_tariff real,
history_total real,
history_info_user text);
CREATE TABLE reminders (
reminder_id integer primary key autoincrement,
reminder_title text,
reminder_text text,
reminder_date text);
CREATE TABLE selected_user (
id integer primary key autoincrement,
user_id integer);
// создаём объект db класса SQLiteDatabase для изменения нашей базы данных
SQLiteDatabase db = new DBCourseWork.getWritableDatabase();
//открываем транзакцию db.beginTransaction();
try {
// удаление строки, в качестве параметров передается название таблицы и оператор WHERE db.delete("reminders", "reminder_id = " + id, null);
// транзакция прошла успешно db.setTransactionSuccessful(); }
// гарантированное закрытие транзакции finally {
db.endTransaction();
3.4 Реализация напоминаний
Первым делом следует построить уведомление, т.е. описать как оно будет выглядеть, что будет происходить при взаимодействии пользователя с ним. Ниже представлена часть кода из файла "ReminderNotification".
// Создаём переменную типа NotificationManager
NotificationManager manager;
public void onReceive(Context context, Intent intent) {
// Получаем id напоминания
String id = intent.getAction();
// Проверяем является ли полученный id числом
if (TextUtils.isDigitsOnly(id)) {
// Извлекаем заголовок напоминания и текст
String title = intent.getStringExtra("title");
String text = intent.getStringExtra("text");
// Создаём объект NotificationManager
manager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
// Указываем какое Activity будет открываться при нажатии на уведомление
Intent i = new Intent(context, Main.class);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, i, 0);
// Строим уведомление
Notification notification = new Notification.Builder(context)
.setContentTitle(title)// Заголовок
.setContentText(text)// Текст
.setSmallIcon(android.R.mipmap.sym_def_app_icon)// Иконка
.setContentIntent(pIntent)// Activity при нажатии
.setPriority(Notification.PRIORITY_DEFAULT)// Приоритет уведомления по умолчанию
// Все настройки уведомления по умолчанию (вибрация, звук и т.д.)
.setDefaults(Notification.DEFAULT_ALL)
.build();// Строим уведомление
//Указываем, что при нажатии на уведомление оно должно удалиться из строки состояния
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// Вызываем уведомление
manager.notify(Integer.parseInt(id), notification);}
После того, как уведомление построено, необходимо реализовать вызов этого уведомление в нужное время. Ниже представлена часть кода из файла "BootLoad".
public void onReceive(Context context, Intent intent) {
// Получаем нашу БД для чтения
SQLiteDatabase db = new DBCourseWork(context).getReadableDatabase();
// Через запрос получаем все уведомления
Cursor c = db.query("reminders", null, null, null, null, null, null);
// Создаём объект AlarmManager, который по истечению указанного времени вызовет уведомление
AlarmManager alarmManager = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);
if (c != null) {
if (c.moveToFirst()) {
do {
String id = c.getString(c.getColumnIndex("reminder_id"));
String title = c.getString(c.getColumnIndex("reminder_title"));
String text = c.getString(c.getColumnIndex("reminder_text"));
// Создаём BroadcastReceiver, который сработает при истечении времени (в данном случае это будет уведомление), и заносим в него данные (id, title и text)
Intent i = new Intent(context, ReminderNotification.class);
i.setAction(id);
i.putExtra("title", title);
i.putExtra("text", text);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
// Создаем наше напоминание, которое сработает независимо от того, находится ли телефон в спящем режиме или нет, в указанную дату и что должно будет вызвано по истечению времени
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getLong(c.getColumnIndex("reminder_date")), pendingIntent);
} while (c.moveToNext()); }}}
3.5 Резервное копирование данных
public void btnBackup_OnClick(View view) throws IOException {
// Получаем путь к нашей БД (/data/data/course.utilities/databases/)
final String source = getDatabasePath("CourseWorkDB").getPath();
InputStream is = null;
OutputStream os = null;
try {
// Создаём объект FileInputStream с указанием пути к нашей БД
is = new FileInputStream(source);
// Получаем путь к внешней памяти телефона
File sdPath = Environment.getExternalStorageDirectory();
// Создаем папку
sdPath = new File(sdPath.getAbsolutePath() + "/CourseWork");
sdPath.mkdirs();
// Создаем файл
File file = new File(sdPath, "CourseWorkDB_backup");
os = new FileOutputStream(file);
// Пачками по length байт считываем из is в os
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);}
// Сообщаем об успешности
Toast.makeText(getBaseContext(), "Backup прошел успешно", Toast.LENGTH_SHORT).show();}
catch (Exception ex) {
// Или об ошибке
Toast.makeText(getBaseContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();}
finally {
// Закрываем потоки
os.close();
is.close();}}
3.6 Тестирование разработанного приложения
Тестирование производилось на встроенном в Android Studio эмуляторе Nexus One версии API 19. Для тестирования разработанного приложения были проведены следующие тесты (скриншоты экранов во время тестирования, приведены в приложении):
Добавление показаний счетчиков электроснабжения и водоснабжения;
Создание учетной записи
Выбор учетной записи
Добавление показаний счетчиков электроснабжения и водоснабжения
Просмотр истории
Фильтрация истории
Удаление записей в истории
Добавление напоминания
Удаление напоминания
Скриншоты экранов во время тестирования представлены в приложении. В связи с тем, что эмулятор не поддерживает русскую раскладку клавиатуры, все данные записываются на английском языке. На всех проведенных тестах результаты совпали с ожидаемыми.
Заключение
смартфон интерфейс мобильный приложение
В результате проведенной работы были рассмотрены существующие мобильные ОС и изучены особенности и архитектура платформы Android, так же были проанализированы аналоги разработанного приложения, которые позволили разработать требования к функциональности программы расчета и учета оплаты коммунальных услуг. Так же были рассмотрены основные компоненты и средства разработки мобильных приложений.
В данной работе были рассмотрены рекомендации к проектированию, на основе которого был спроектирован пользовательский интерфейс приложения. Была проведена разработка схемы базы данных. Так же была подробно изложена структура разработанного проекта, приведен и прокомментирован код реализации основных компонентов и методов, и изложены результаты тестирования разработанного приложения.
Актуальность данной работы подтверждается возможностью дальнейшего развития приложения. Это развитие может идти в разных направлениях. Одним из них является усовершенствование и расширение функциональных возможностей, например, отправка показаний через СМС или электронную почту, расширенные настройки тарифов, визуальное представление данных.
Список использованных источников
1. Рейтинги и рекорды: http://topmira.com/
2. Intel Developer zone: https//software.intel.com
3. Блог "Программирование под Android": http://pr0andr0id.blogspot.ru/
4. Национальный Открытый Университет "ИНТУИТ": http://www.intuit.ru/
5. Магазин мобильных приложений GooglePlayMarket: https://play.google.com/
6. http://android-shark.ru/
7. Дейтел П., Дейтел Х., Дейтел Э.А Android для разработчиков. - СПб.: Питер, 2015. - 384 с.: ил. - (Серия "Библиотека программиста").
8. http://androidfanclub.ru/
9. Баканов А.С., Обознов А.А. Проектирование пользовательского интерфейса: эргономический подход - М.: Изд-во "Институт психологии РАН", 2009.
Размещено на Allbest.ru
Подобные документы
Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.
дипломная работа [2,2 M], добавлен 08.06.2017Мобильные операционные системы. Основные характеристики систем iOS и Android, их достоинства, недостатки и индивидуальные возможности. Анализ преимуществ лидирующих мобильных платформ для разработки приложения. Основные различия в механизмах безопасности.
дипломная работа [806,5 K], добавлен 01.01.2018Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Характеристика информационных систем учета медицинских услуг, представленных на современном рынке. Разработка приложения "Учет услуг в спортивном клубе "Т-Фитнес": средства управления графического интерфейса пользователя, создание меню и основные формы.
дипломная работа [1,8 M], добавлен 14.10.2010Проведение исследования опыта взаимодействия в сети. Методы улучшения согласования с пользователем web-сервиса. Особенность проектирования онлайн-приложения. Изучение разработки контроллеров и моделей. Характеристика создания интерфейса программы.
дипломная работа [1,3 M], добавлен 11.08.2017Теоретические основы разработки приложения, реализующего подсвечивание ключевых слов. Описание используемых процедур и функций, структуры программы, интерфейса пользователя. Системные требования для работы приложения, анализ результаты его тестирования.
курсовая работа [1,2 M], добавлен 07.07.2012Обзор подходов к разработке музейных приложений с элементами дополненной реальности, формирование требований к ним. Выбор методов разработки приложения, разработка пользовательского интерфейса. Принципы тестирования. Реализация раздела "Распознавание".
дипломная работа [2,8 M], добавлен 03.07.2017Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.
курсовая работа [540,8 K], добавлен 18.07.2012Анализ российского рынка мобильных приложений. Мобильное приложение как новый канал коммуникации с целевой аудиторией. Этапы создания мобильного приложения. План продвижения мобильного приложения в сети Интернет. Бесплатные инструменты продвижения.
дипломная работа [1,6 M], добавлен 23.06.2016