Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Готовое_КР_Заметки

.pdf
Скачиваний:
0
Добавлен:
07.06.2025
Размер:
461.84 Кб
Скачать

Рисунок 3.7 – Главный экран при 13 сохраненных заметках

Также пользователь может удалить ненужную заметку с возможностью отмены удаления (Рисунок 3.8)

24

Рисунок 3.8– Работа удаления заметки

Также приложение ориентировано под смену темы на устройстве. (Рисунок 3.9)

25

Рисунок 3.9– Смена темы на устройстве

3.3 Входные данные (организация и предварительная подготовка входных данных)

Приложение "Заметки" принимает и обрабатывает следующие виды входных данных: любые символы.

26

ЗАКЛЮЧЕНИЕ

Впроцессе выполнения данной курсовой работы был успешно реализован мобильное приложение “Заметки” для операционной системы Aurora, использующее язык программирования C++ и среду разработки AuroraIDE. Поставленная цель, заключающаяся в приобретении практических навыков разработки мобильных приложений, была достигнута в полной мере.

Входе работы над проектом были изучены основы разработки под Aurora, включая особенности работы с UI-элементами, жизненным циклом приложения и механизмом взаимодействия с пользователем. Был освоен язык C++ и принципы объектно-ориентированного программирования, необходимые для структурирования кода и разработки функциональных модулей. С помощью AuroraIDE были созданы элементы пользовательского интерфейса, обеспечивающие интуитивно понятный и удобный способ взаимодействия с приложением.

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

Результатом работы является полноценное мобильное приложение “Заметки”, готовое к использованию на устройствах под управлением Aurora. Приложение демонстрирует практическое применение полученных знаний и навыков, а также служит основой для дальнейшего развития и улучшения.

Впроцессе работы над курсовой были выявлены и преодолены ряд трудностей, что способствовало более глубокому пониманию процесса разработки мобильных приложений. Были получены ценные навыки в области отладки и тестирования, что является неотъемлемой частью процесса разработки качественного программного продукта. [5]

27

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.Лучшие приложения-конвертеры [Электронный ресурс]. – URL: https://www.makeuseof.com (дата обращения 15.05.2025).

2.Best Base Converter Apps for Android [Электронный ресурс] // XDA Developers. – 2023. – URL: https://www.xda-developers.com/best-base- converterapps-android (дата обращения: 15.05.2025).

3.Документация Aurora OS [Электронный ресурс]. – ООО «Открытая мобильная платформа», 2024. – URL: https://auroraos.ru/doc (дата обращения: 20.05.2025).

4.Qt Documentation [Электронный ресурс]. – The Qt Company, 2024. – URL: https://doc.qt.io/ (дата обращения: 20.05.2025).

5.Курс лекций по дисциплине «Разработка приложений на С++» [Электронный ресурс]. – Доступ через LMS MIREA. – URL: https://onlineedu.mirea.ru (дата обращения: 20.05.2025).

28

ПРИЛОЖЕНИЯ

Приложение А – Код программы MainPage.qml Приложение Б – Код программы EmptyPage.qml Приложение В – Код программы DatabaseHandler.js

29

Приложение А

Листинг 1 – MainPage.qml

import QtQuick 2.0

import Sailfish.Silica 1.0

import "DatabaseHandler.js" as DatabaseHandler

Page {

id: mainPage

property var db: DatabaseHandler.initializeDatabase() property var noteList: DatabaseHandler.getAllTitles(db) || []

function refreshNotes() {

noteList = DatabaseHandler.getAllTitles(db);

}

Rectangle{

width: parent.width height: parent.height

color:Theme.rgba(Theme.highlightBackgroundColor,Theme.highlightBackgroundOpacit

y)

Column {

width: parent.width spacing: Theme.paddingLarge anchors.fill: parent

anchors.margins: Theme.horizontalPageMargin Rectangle{

width:parent.width

color: Theme.backgroundGlowColor height:80

Text{ text:"Заметки"

color:Theme.primaryColor anchors.centerIn: parent font.pixelSize: Theme.fontSizeLarge

}

}

// Кнопка создания новой заметки

Button { color:Theme.highlightColor Text{

anchors.centerIn: parent font.pixelSize: 30

color: Theme.primaryColor text: "Создать новую заметку"

}

width: parent.width

onClicked: pageStack.push(Qt.resolvedUrl("EmptyPage.qml"), {db: db}) anchors.horizontalCenter: parent.horizontalCenter

30

Продолжение листинга 1

}

// Заголовок списка заметок

Item {

width: parent.width

height: Theme.itemSizeSmall

Label { id:mylabel

text: "Мои заметки" font.pixelSize:50

color: Theme.primaryColor anchors {

left: parent.left leftMargin: 10

verticalCenter: parent.verticalCenter

}

}

Label {

text: "(" + noteList.length + ")" font.pixelSize: 40

color: Theme.primaryColor anchors {

left: mylabel.right leftMargin: 10

verticalCenter: parent.verticalCenter

}

}

}

// Список существующих заметок

SilicaListView {

id: notesListView width: parent.width

height: parent.height - y - Theme.paddingLarge model: noteList

delegate: ListItem { id: listItem

width: parent.width

contentHeight: Theme.itemSizeMedium

//Фон элемента списка

Rectangle { anchors.fill: parent

opacity: listItem.highlighted ? 0.5 : 0.1

}

//Текст заметки

Label {

anchors.verticalCenter: parent.verticalCenter

31

Продолжение листинга 1

text: modelData anchors.left:parent.left anchors.leftMargin: 40 color: Theme.primaryColor

truncationMode: TruncationMode.Fade font.pixelSize: 45

}

// Разделитель между элементами

Separator { anchors {

left: parent.left right: parent.right bottom: parent.bottom

}

color: Theme.primaryColor horizontalAlignment: Qt.AlignHCenter

}

onClicked: { pageStack.push(Qt.resolvedUrl("EmptyPage.qml"), {

noteTitle: modelData, db: db

});

}

}

VerticalScrollDecorator {}

ViewPlaceholder {

enabled: noteList.length === 0 text: "Нет сохраненных заметок"

hintText: "Нажмите 'Создать новую заметку'"

}

}

}

}

Component.onCompleted: refreshNotes()

onStatusChanged: {

if (status === PageStatus.Active) { refreshNotes();

}

}

}

32

Приложение Б

Листинг 2 – EmptyPage.qml

import QtQuick 2.0

import Sailfish.Silica 1.0

import "DatabaseHandler.js" as DatabaseHandler

Page {

id: notePage

property string noteTitle: "" property var db

property bool isNewNote: noteTitle === ""

function saveNote() {

DatabaseHandler.saveNote(db, noteTitle, contentArea.text); pageStack.pop();

}

Rectangle{

width: parent.width height:parent.height color:"#FFE4C4"

Column {

width: parent.width spacing: Theme.paddingLarge anchors.fill: parent

anchors.margins: Theme.paddingLarge

TextField {

id: titleField width: parent.width color:"black"

placeholderText: "Введите название заметки" placeholderColor: "black"

text: noteTitle

visible: isNewNote || editMode

}

// Текст заметки

TextArea {

id: contentArea width: parent.width

height: parent.height - buttonRow.height - (titleField.visible ? titleField.height : 0) - Theme.paddingLarge*3

placeholderText: "Введите текст заметки..." placeholderColor: "black"

text: isNewNote ? "" : DatabaseHandler.getNote(db, noteTitle) || "" color:"black"

}

// Ряд кнопок

Row {

id: buttonRow width: parent.width

spacing: Theme.paddingMedium

33