Дипломная работа: Разработка модулей информационных автоматизированных систем по управлению стадом крупного рогатого скота на малых формах

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

{

"old_pass":"1234",

"new_pass":"password123"

}

Сформированный JSON-файл приложение через раздел Http_connection передаёт в удалённый метод «/rpc/reset_password». Если пользователь ввёл корректные данные, сервер вернёт статус 200, что означает отсутствие ошибок.

Раздел «История смена статуса животного»

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

1) дата изменения статуса;

2) статус животного.

Раздел «Выбор группы животного»

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

Раздел «События»

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

Раздел «Список работников»

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

Раздел «Групповой ввод удоя животных»

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

Раздел «Ввод удоя животного»

Данный раздел предназначен для графического отображения информации об удоях определённого животного, отсортированной по дням (рис. 19). Раздел отображается как календарь по три месяца. Ячейка календаря содержит информацию о дне, расположенной слева вверху, и об удое, расположенной в центре ячейки. Под календарём расположена следующая информация:

1) среднесуточный удой;

2) общий надой за месяц;

3) общий надой за лактацию.

Раздел «Журнал ввода удоя животного»

Данный раздел предназначен для подробного описания введённых значений удоя определённого животного. Раздел разделён на два блока:

1) текущие введённые значения за утро, день, вечер и дополнительное;

2) журнал изменений.

Первый блок представлен в виде списка и содержит четыре элемента:

1) показания за утро;

2) показания за день;

3) показания за вечер;

4) дополнительные показания.

Каждый элемент разделён на три столбца:

1) дата изменения - текстовое поле;

2) тип изменения - соответствующая картинка;

3) объём удоя - числовое поле.

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

1) дату изменения;

2) автора изменения;

3) типа изменения;

4) показатели до;

5) показатели после.

Раздел «Авторизация пользователя»

Данный раздел является первоначальным, который видит пользователь. Интерфейс изображён на рис. 21. Задачей данного раздела является идентификация пользователя по связке логина и пароля. После того, как пользователь заполнит поля логина и пароля и нажмёт кнопку «Войти» приложение сформирует следующий JSON-файл и вызовет удалённый метод «/rpc/login»:

{

"email":"login@mail.ru",

"pass":"password"

}

Раздел «Список ферм пользователя»

Данный раздел загружает с удалённого сервера доступные авторизованному пользователю фермы. Пользователь должен выбрать одну из предложенных, чтобы в последующих разделах пользователь мог просматривать информацию в рамках определённой фермы. Раздел выполнен в виде списка с возможностью просмотреть детали каждой фермы

Раздел «Убытки фермы»

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

Раздел «Главное меню приложения»

С помощью данного раздела пользователю предоставляются следующие функциональные возможности:

1) смена пароля;

2) смена текущей фермы;

3) просмотр информации о приложении.

Раздел отображает список, в котором и отображается вышеперечисленная информация.

Раздел «Сообщения пользователя»

Данный раздел отображает пользователю список назначенных задач. Приложение получает данные с удалённого сервера, парсит их и отображает в виде списка. Каждый элементы списка содержит информацию о:

1) номер события;

2) имя животного;

3) назначенное время;

4) фамилия, имя и отчество исполнителя;

5) статус события (закрыто, открыто).

Раздел «Создание и редактирование информации о ферме»

Данный раздел служит для создания и редактирования информации о ферме. Доступные поля для редактирования:

1) название организации;

2) часовой пояс, в котором находится создаваемая или редактируемая ферма.

Раздел «Восстановление пароля»

Данный раздел предназначен для восстановления пароля пользователя. Если пользователь забыл пароль или его данные были скомпрометированы, приложение может послать запрос на удалённый сервер с заранее сформированным JSON-файлом:

{

"email":login@mail.ru

}

Раздел «Справка приложения»

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

Раздел «Регистрация нового пользователя»

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

Раздел «Сводка по ферме»

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

1) информация о поголовье животных на ферме;

2) информация об удое за последние сутки;

3) информация о репродуктивности животных.

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

1) телка;

2) нетель;

3) первотелка;

4) стельная, дойная;

5) стельная, сухостойная;

6) дойная.

Второй блок отображает количество удоя за текущие сутки и предыдущие. Если удоя за текущие сутки больше, чем за предыдущие, то разница будет отображена зелёным цветом, если меньше - красным.

Последний, третий блок отображает информацию о репродуктивности фермы.

Раздел «Надой животных фермы»

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

1) о среднесуточном удое на голову;

2) о среднесуточном удое по ферме;

3) об общем надое за месяц;

4) об общем надое за год.

Раздел «Список типовых угроз»

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

Раздел «Пользовательское соглашение»

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

Раздел «Просмотр информации о событии»

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

1) статус события;

2) имя животного;

3) номер бирки;

4) время наступления события;

5) время исполнения;

6) назначенный ответственный исполнитель;

7) время закрытия события;

8) комментарий.

Раздел «Константы»

Для корректной работы приложения необходимы константы (табл. 2). Было принято решение выделить под них отдельный класс, чтобы не перегружать остальные элементы приложения [23].

Таблица 2

Список констант

Константа

Значение

DIALOG_TITLE_REGISTRATION_SUCCESS

Успешно. Теперь проверьте почту

DIALOG_TITLE_SOMETHING_GOES_WRONG

Произошла неизвестная ошибка. Повторите попытку позже.

REGISTER_EMAIL_EXISTS

Данный email уже зарегистрирован в системе.

REGISTER_EMAIL_OK

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

Нажмите "Отправить повторно" для отправки повторного письма.

REGISTER_EMAIL_NOT_VALIDATED

Указанный Вами адрес электронной почты уже зарегестрирован, но не подтверждён. Пожалуйства, проверьте почту и перейдите по полученной ссылке.

Нажмите "Отправить повторно" для отправки повторного письма.

REGISTER_EMAIL_SMTH_WRONG

Упс..что-то пошло не так. Повторите попытку через некоторое время либо напишите нам письмо об ошибке.

MLK_MORNING

mlk_morning

MLK_DAY

mlk_day

MLK_EVENING

mlk_evening

MLK_ADDITIONAL

mlk_other

cow_not_in_org

cow_not_in_org

email_already_validated

email_already_validated

email_exists

email_exists

email_not_exists

email_not_exists

email_not_validated

email_not_validated

email_not_verified

email_not_verified

group_exists

group_exists

invalid_old_password

invalid_old_password

lact_number_exists

lact_number_exists

mark_exists

mark_exists

new_password_equal_to_old

new_password_equal_to_old

no_cow_id

no_cow_id

not_your_org

not_your_org

org_name_exists

org_name_exists

user_banned

user_banned

user_doesnt_exist

user_doesnt_exist

zero_states

zero_states

invalid_password

invalid_password

SERVER_ANSWER_REGISTER_OK

email_ok

SERVER_ANSWER_TIME_OUT

time_out

SERVER_ANSWER_UNKNOWN_ERROR

unknown_error

LOGIN_TAG_S

loginTag

RECOVER_PASSWORD_TAG_S

recoverPasswordTag

REGISTER_TAG_S

registerTag

ORGANIZATION_LIST_TAG_S

organization_list

CHOOSE_ORGANIZATION_TAG_S

chooseOrganization

MODIFY_ORGANIZATION_TAG_S

modifyOrganization

ADD_ORGANIZATION_TAG_S

addOrganization

SHOW_USER_AGREEMENT_TAG_S

showUserAgreement

DEF_INTERVAL

1000

NUMBER_OF_SECONDS

60

mInterval

DEF_INTERVAL * NUMBER_OF_SECONDS

TAG_1

TRIO_DATA_FRAGMENT

TAG_2

Type_DATA_FRAGMENT

TAG_3

LOSSES_DATA_FRAGMENT

TAG_4

MESSAGE_DATA_FRAGMENT

TAG_5

EMPLOYEE_DATA_FRAGMENT

TAG_6

VIEW_EVENT_DATA_FRAGMENT

TAG_7

INPUT_MILK_DATA_FRAGMENT

TAG_8

ANIMAL_CARD_FRAGMENT

TAG_9

INPUT_MULTIPLE_MILK_DATA_FRAGMENT

TAG_10

INPUT_MULTIPLE_MILK_JOURNAL_DATA_FRAGMENT

TAG_11

CHANGE_PASSWORD

TAG_12

CHOICE_ORGANIZATION

TAG_13

MODIFY_COW

TAG_14

MODIFY_OTEL

TAG_15

MODIFY_HUNT

TAG_16

USER_MENU

TAG_17

ORGANIZATION_DETAIL

TAG_18

ORGANIZATION_MODIFY

TAG_19

ORGANIZATION_ADD

TAG_20

ARCHIVED_COWS_FRAGMENT

TAG_21

INPUT_GROUPED_MILK_FRAGMENT

TAG_22

COW_STATUS_HISTORY_FRAGMENT

TAG_23

CHOOSE_COW_GROUP

TAG_24

ADD_MODE_COW_GROUP

ATAG_1

CIRCLE_DATA

ATAG_2

TOTAL_YIELD_DATA

ATAG_3

ANIMAL_DATA

ATAG_4

MESSAGE_TIME_DATA

ATAG_5

MESSAGE_FIO_DATA

ATAG_6

MESSAGE_STATUS_DATA

DICTIONARY_RACE

cow_race

DICTIONARY_MESSAGE_TYPE

message_type

DICTIONARY_MESSAGE_STATUS

message_status

DICTIONARY_COW_STATE

cow_state

DICTIONARY_MESSAGE_CATEGORY

message_category

DICTIONARY_TIMEZONE

timezone

DICTIONARY_MILK_TP

milk_tp

DICTIONARY_MILK_ACT_TP

milk_act_tp

DECIMAL_DELIMITER

.

APP_PREFERENCES

login_password

APP_PREFERENCES_LOGIN

login

APP_PREFERENCES_PASSWORD

password

APP_PREFERENCES_ORGANIZATION_ID

organization

APP_PREFERENCES_ORGANIZATION_NAME

organization_name

APP_PREFERENCES_ORGANIZATION_TIMEZONE

organization_timezone

Раздел «База данных словарей»

Когда пользователь авторизовался в приложении в разделе «логин», автоматически с помощью раздела «Http_connection» скачиваются восемь словарей, которые впоследствии используются в некоторых разделах:

1) порода животного;

2) тип сообщения;

3) статус сообщения;

4) статус коровы;

5) категория сообщения;

6) часовой пояс;

7) тип удоя;

8) тип действия удоя.

ER-диаграмма изображена на рис. 8.

Рис. 8 ER-диаграмма базы данных

3. Практическая часть

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

Основными критериями оценки эффективности работы android-приложения являются:

1) скорость выполнения задач пользователя;

2) общее быстродействие приложения;

3) способность приложения правильно обрабатывать ошибки, полученные в результате работы;

4) занимаемое место в оперативной памяти;

5) занимаемое место в постоянной памяти;

6) нагрузка на сеть интернет.

Тестирование проводилось на android-смартфоне OnePlus 6 с использованием 4G соединения на скорости 54,5 Мбит/сек.

3.1 Разработанные разделы приложения

«Создание и редактировании информации о группе животного» (AddModCowGroupFragment)

Макет данного раздела (рис. 9) содержит:

1) текстовое поле ввода «название группы животного»;

2) список доступных цветов группы животного в виде сетки из квадратов соответствующего цвета;

3) кнопка «отмена», которая возвращает пользователя в предыдущий открытый раздел;

4) кнопка «сохранить», которая посылает введённые пользователем данные на сервер.

Рис. 9 Интерфейс раздела «Создание и редактирование группы»

«Создание и редактировании информации о животном» (AddModifyCowFragment)

Элементами макета данного раздела (приложение 1 рис. 1) являются:

1) текстовое поле ввода «имя животного» (обязательное поле);

2) текстовое поле ввода «номер бирки животного» (обязательное поле);

3) текстовое поле ввода «дата рождения животного» (обязательное поле);

4) выпадающий список выбора «порода животного» (обязательное поле);

5) выпадающий список выбора «статус животного» (обязательное поле);

6) поле ввода «группа животного»;