27 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Практическая работа Expense Tracker
В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для контроля личных финансов.
Советуем сначала скачать шаблон-заготовку проекта и открыть проект в Android Studio или IntelliJ IDEA.
Измените код существующих классов и интерфейсов, дополните разметку, ресурсы и манифест, чтобы приложение отвечало следущим требованиям:
1. При запуске приложения (*MainActivity* стартовая активность) показывается:<br/>
пустой список *RecyclerView* (`@id/ef_expenses_rv`),<br/>
кнопка с возможностью добавить новую операцию (`@id/add_fab`)<br/>
текстовое `поле @id/ef_current_balance_text`. В `@id/ef_current_balance_text` отображается текущее значение баланса пользователя (сумма всех операций: доходы−расходы) с точностью до одного знака после точки. Это значение может быть отрицательным.
2. При нажатии на элемент `@id/add_fab` появляется диалоговое окно с `@id/type_spinner`, `@id/expense_amount_edit_text` и `@id/add_button`.
3. Элемент `@id/type_spinner` позволяет выбрать одну из двух альтернатив (доход или расход), первый пункт выпадающего списка содержит строку «`Income`» (без кавычек), второй пункт «`Expenses`».
4. Пользователь вводит натуральное число в `@id/expense_amount_edit_text`. Гарантируется, что введённое пользователем число не превышает $10^{4}$.
5. После нажатия на `@id/add_button` диалоговое окно закрывается, при этом очередная операция (доход или расход) добавляется в конец списка. В `@id/ef_current_balance_text` обновляется текущее значение баланса пользователя.
6. Каждый элемент списка содержит в себе информацию о типе операции («Income»/«Expenses»), дате добавления информации о ней в приложение (в формате «`dd.MM.yyyy`») и её сумму, это отображается в текстовых полях с идентификаторами `@id/expense_type_text`, `@id/expense_date_text` и `@id/expense_amount_text` соответственно.
7. При длительном нажатии на любой элемент списка появляется контекстное меню, позволяющее удалить этот элемент (Delete) или дублировать его (Duplicate). При выборе опции с текстом «Duplicate» в конец списка помещается элемент с совпадающими значениями полей.
8. При повороте экрана устройства данные должны сохраняться.
Рекомендуется использовать Android Studio Dolphin 2021.3.1. В проекте gradle version 7.5, gradle plugin version 7.3.0.
Сдать в систему тестирования необходимо zip архив, в корневом каталоге которого располагается дополненный проект Android Studio/IntelliJ IDEA. После загрузки zip архива приложение будет запущено в системе автоматического тестирования для проверки на соответствие техническому заданию.
Допускается использовать язык Java и/или Kotlin. При сборке проекта вcе изменения в файле build.gradle будут проигнорированы будут использованы зависимости только из шаблона-заготовки; не изменяйте пакет приложения.
Тестирование одной посылки может длиться до 5 минут, после завершения тестирования будет доступна информация об общем числе тестов и числе пройденных тестов. Количество посылок в систему не ограничено. Штраф за повторные попытки не начисляется.