Мобильное приложение для курсовой работы: создание тестовых заданий, их прохождение, просмотр результатов. Поддерживаются роли администратора (преподаватель) и обычного пользователя. Приложение общается с серверным API.
- Регистрация и вход/выход.
- Просмотр списка заданий.
- Прохождение тестов с вариантами ответов.
- Просмотр собственных результатов.
- Роль администратора:
- Создание заданий (название, короткое/полное описание, список вопросов с вариантами).
- Назначение задания пользователям.
- Удаление заданий.
- Обычный пользователь:
- Авторизация, прохождение тестов, просмотр результатов.
- Администратор:
- Всё выше + создание/удаление заданий, выбор пользователей для назначения.
- Незалогиненный:
- Просмотр доступных заданий (без возможности прохождения), регистрация/вход.
- Android (Java), AndroidX, Material Components.
- RecyclerView, ConstraintLayout/FlexboxLayout/GridLayout.
- Gson (
@SerializedName
) для сериализации. - Хранение токена/состояний:
SharedPreferences
. - Асинхронность:
Executor
/Handler
.
- Главная: список доступных тестов.
- Решения: обзор решённых заданий и/или результатов.
- Аккаунт: профиль, статистика, выход.
- Админ: конструктор задания и выбор пользователей.
Нижняя панель (BottomNavigationView
) с динамическим меню:
- Незалогиненный:
Главная
,Аккаунт
. - Залогиненный:
Главная
,Решения
,Аккаунт
.
- Экран входа/регистрации:
app/src/main/java/dev/stranik/coursework/LoginFragment.java
,RegistrationFragment.java
- Профиль/выход:
app/src/main/java/dev/stranik/coursework/AccountFragment.java
- Список заданий:
app/src/main/java/dev/stranik/coursework/TaskListFragment.java
- Просмотр задания:
app/src/main/java/dev/stranik/coursework/ViewTaskFragment.java
- Прохождение теста:
app/src/main/java/dev/stranik/coursework/TaskPassingFragment.java
- Создание задания (админ):
app/src/main/java/dev/stranik/coursework/CreateTaskFragment.java
,ChooseUserFragment.java
- Решения/результаты:
app/src/main/java/dev/stranik/coursework/ListTaskSolutions.java
- Адаптеры списков:
app/src/main/java/dev/stranik/coursework/utils/*.java
- Макеты экранов:
app/src/main/res/layout/*.xml
- Нижнее меню:
app/src/main/res/menu/register_user_menu.xml
,app/src/main/res/menu/unregister_user_menu.xml
- Точка входа:
app/src/main/java/dev/stranik/coursework/MainActivity.java
Сетевая логика инкапсулирована в StaticWorkData
:
- Аутентификация:
loginUser(...)
,registerUser(...)
,saveToken()
,loadToken()
. - Данные пользователя:
getUserInfo()
,getUsers()
. - Задания (списки/создание/удаление):
getTasks(...)
,createTask(...)
,deleteTask(...)
. - Прохождение:
getTaskItems(...)
,submitAnswers(...)
. - Состояние:
isAdmin()
,getId()
,setAdmin(...)
,setId(...)
,reset()
.
Настройте базовый URL и заголовки авторизации в StaticWorkData
(обычно в константах/методах этого класса).
- Android Studio Narwhal 3 Feature Drop | 2025.1.3.
- Android SDK (целевой/минимальный уровни настраиваются в Gradle).
- Встроенный JDK (Android Studio, рекомендуется 17).
- Доступный сервер API и корректный
BASE_URL
вStaticWorkData
.
- Клонировать репозиторий и открыть в Android Studio.
- Дождаться Sync Gradle.
- Указать URL бэкенда в
StaticWorkData
(файл:app/src/main/java/dev/stranik/coursework/utils/data/StaticWorkData.java
). - Запустить конфигурацию
app
на эмуляторе/устройстве.
Альтернатива (Windows, терминал из Android Studio):
.\gradlew clean assembleDebug
- APK:
app/build/outputs/apk/debug/
- Авторизация:
- Успех → сохранение токена (
SharedPreferences
), обновление меню, переход в профиль.
- Успех → сохранение токена (
- Создание задания (админ):
- Заполнение названия/описаний → конструктор вопросов/ответов → выбор пользователей → отправка на сервер.
- Прохождение теста:
- Пошаговые вопросы (RadioGroup), выбор ответа → отправка результатов → экран решений.
- Карточки списков с закруглённым фоном (
'app/src/main/res/drawable/card_background.xml'
). - Цветовая палитра с белым текстом на синих фонах.
- FAB для добавления задания доступен только админу.
- Токен хранится в
SharedPreferences
. - Проверьте обработку истечения токена и ошибки сети в
StaticWorkData
.
MIT License. См. файл LICENSE
в корне репозитория.