Разработка веб-сервиса ‘Записная книжка’

Курсовая работа

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

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

1 Характеристики предметной области

1.1 Основные понятия предметной области

Онлайн записная книжка — интернет-сервис, представляющий собой программный продукт, работающий прямо через интернет, позволяющий вести заметки и работать из любой точки мира.сервис — (от англ. web-service, синоним — онлайновая служба).

Под веб-сервисами понимают услуги, которые предоставляются в Интернете с помощью специальных программ.

Например, распространены такие сервисы, как: поисковая система, хостинг, электронная почта, хранение в Интернете различной информации (файлы, закладки), календарь и т.д. Важное свойство веб-сервиса состоит в том, что он не зависит от вашего провайдера, компьютера или браузера — вы можете работать со своими данными в любой точке мира, где у вас есть доступ в интернет.

1.1.2 Описание предметной области

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

1.2 Цели и задачи системы

2.1 Цели системы

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

онлайн записной книжка файл

1.2.2 Задачи системы

К основным задачам системы можно отнести:

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

3 Требования к системе

3.1 Функциональные требования

К функциональным относятся:

21 стр., 10097 слов

Проектирование системы Интернет-магазина

... «Добрыня»., их систематизация и разработка спецификаций; разработка моделей деятельности “как есть”; разработка моделей деятельности “как должно быть”; разработка информационной модели данных; разработка технического задания на разработку Интернет магазина. Разрабатываемая информационная система позволит: автоматизировать процесс регистрации, учета, ...

  • создание заметок;
  • прикрепление к определённой дате и определённому времени;
  • прикрепление файлов к заметкам;
  • напоминание о заметке через push-уведомление;
  • список заметок и напоминаний;
  • хранение прикреплённых файлов.

1.3.2 Нефункциональные требования

К нефункциональным требованиям относятся:

  • дружелюбный интерфейс;
  • обеспечение безопасности данных;
  • минимизация времени операций.

1.4 Характеристика пользователей

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

Система предусматривает наличие одного вида пользователей:

  • Пользователь

o зарегистрировавшись в сервисе, получает доступ ко всем функциям программного продукта в пределах своей учетной записи

1.5 Диаграмма вариантов использования

Диаграмма вариантов использования представлена на рисунке 1.

 диаграмма вариантов использования 1

Рисунок 1. Диаграмма вариантов использования

1.6 Функции системы

Система представляет из себя одностраничный web-сайт с несколькими вкладками. Каждая из вкладок предоставляет пользователю определенный функционал: Вкладка «Заметки»:

  • o Отображение ранее созданных пользователем заметок и их заголовков;
  • o Создание заметок внутри специальной формы, позволяющей создать саму заметку и ее заголовок;
  • o Возможность редактирование и удаления уже созданных заметок.
  • Вкладка «Напоминания»:
  • o Отображение созданных ранее напоминаний и сроков выполнения; Создание напоминаний.
  • Вкладка «Теги»:
  • o Отображение ранее созданных тегов;
  • o Добавление тегов;
  • o Удаление тегов.
  • Вкладка «Мои файлы»:
  • o Отображение ранее загруженных файлов пользователя;
  • o Загрузка новых файлов на сервер;
  • o Удаление ранее загруженных файлов.

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

После регистрации пользователь получает возможность использовать все функции системы.

1 Проектная команда

Проектная команда состоит из 3 человек:

  • Абдумуминов У.А.
  • Закурнаев А.В.
  • Логунов Н.М.

Каждый из членов команды имеет свою роль:

40 стр., 19882 слов

Проект производства работ на строительство жилого дома

... и специализированных подрядных организаций, их производственной базе и принятых методах организации и производства работ. Календарный план строительства объекта разрабатывается в такой последовательности: делается анализ объемно ... м3 Vподч=(a+b)Ч2Чc 7,15 5 Монтаж фундаментных подушек шт по проекту 55 6 Монтаж фундаментных блоков шт по проекту 108 7 Устройство гидроизоляции м2 S=(a+b)Ч2Чh 134,1 8 ...

  • Абдумуминов У.А. — ведущий разработчик/лидер проекта. Разработка;
  • Закурнаев А.В.

— разработчик /аналитик. Аналитик;

  • Логунов Н.М. — разработчик

2.2 Система управления проектом

2.1 Краткие теоретические сведения

Redmine -открытое серверное веб-приложение для управления проектами и задачами (в том числе для отслеживания ошибок).

Redmine написан на Ruby и представляет собой приложение на основе широко известного веб-фреймворка Rubyon Rails. Распространяется согласно GNU General Public License.

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

  • ведение нескольких проектов;
  • гибкая система доступа, основанная на ролях;
  • система отслеживания ошибок;
  • диаграммы Ганта и календарь;
  • ведение новостей проекта, документов и управление файлами;
  • оповещение об изменениях с помощью RSS-потоков и электронной почты;
  • вики для каждого проекта;
  • настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
  • лёгкая интеграция с системами управления версиями(SVN,CVS, Git, Mercurial, Bazaarи Darcs);
  • поддержка множественной аутентификации LDAP;
  • возможность самостоятельной регистрации новых пользователей;
  • многоязычный интерфейс (в том числе русский);
  • поддержка СУБД MySQL, Microsoft SQL Server, PostgreSQL, SQLite, Oracle.

2.2.2 Redmine

Адрес веб-сервера Redmine: <#»867932.files/image002.jpg»>

  • Рисунок 2. Домашняя страница проекта

На рисунке 3 представлен список задач разрабатываемого проекта.

 система управления проектом 1

Рисунок 3. Список задач разрабатываемого проекта

2.3 Планирование проекта

2.3.1 Методология разработки

В процессе разработки используется методология SCRUM. Планируется 4 спринта длиной 2-3 недели. По ходу спринта будут выполнятся все поставленные задачи.

2.3.2 Первый спринт

Основной задачей первого спринта является разработка технического задания для проекта. Этот этап включает в себя следующие подзадачи:

  • изучение предметной области;
  • определение функционала разрабатываемого приложения;
  • проектирование интерфейса;

2.3.3 Второй спринт

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

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

2.3.4 Третий спринт

К задачам третьего спринта относится реализация дополнительного функционала приложения:

  • реализация функций, связанный с вкладкой «Напоминания»:
  • o Отображение созданных ранее напоминаний и сроков выполнения;
  • o Создание напоминаний.
  • Напоминание о заметке через push-уведомление
  • Вкладка «Теги»:
  • o Отображение ранее созданных тегов;
  • o Добавление тегов;
  • o Удаление тегов.

2.3.5 Четвертый спринт

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

40 стр., 19712 слов

Разработка проекта по созданию веб-сайта и оценка его эффективности

... работы системы и приложений. На данный момент организация РИВЦ «Уфа», являясь представителем услуг в области наладки компьютерного оборудования, не распространена среди потенциальных клиентов. Цели курсового проекта ... исследования разработки проекта по созданию сайта вошли методы критического пути, анализа и оценки программ, сетевого планирования, метод оценки эффективности проекта. Теоретическую ...

Суммируя вышесказанное, четвертый спринт включает в себя:

  • реализация функций, связанный с вкладкой «Мои файлы»:
  • o Отображение ранее загруженных файлов пользователя;
  • o Загрузка новых файлов на сервер;
  • o Удаление ранее загруженных файлов.
  • отладка окончательной версии приложения, устранение недостатков;
  • тестирование полученного приложения.

3.1 Платформа разработки

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

  • Visual Studio 2013 Update 5;
  • Atom;

Отладка производилась в следующих браузерах:

  • Google Chrome 47;
  • Yandex.Browser;
  • Mozilla Firefox;

Были использованы следующие библиотеки:

  • Jquery 1.9;
  • KnockoutJS;
  • Bootstrap 3.

3.2 Карта сайта

Карта сайта имеет следующую структуру:

  • Главная страница (рисунок 3).

 платформа разработки 1

Рисунок 3. Главная страница сайта

2. API.

  • Регистрация
  • Авторизация
  • Приложение:. Заметки (рисунок 4).

 платформа разработки 2

Рисунок 4. Заметки

  • Напоминания (рисунок 5).

 платформа разработки 3

Рисунок 5. Напоминания

  • Теги (рисунок 6).

 платформа разработки 4

Рисунок 6. Теги.

  • Файлы (рисунок 7).

 платформа разработки 5

Рисунок 7. Файлы

4.1 Использование web-сервисов

Логика работы системы реализовано с использованием библиотеки KnockoutJS, взаимодействие с REST-сервисом посредством AJAX запросов с использованием библиотеки jQuery.

Исходный код представлен в приложении.

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

В рамках индивидуального задания был разработан front-end web-сервиса «Записная книжка».

Были приобретены практические навыки разработки web-систем.

1. Электронная энциклопедия Википедия [Электронный ресурс]: RedmineURL: https://ru.wikipedia.org/wiki/Redmine (дата обращения 06.01.2016).

  • Современный учебник JavaScript [Электронный ресурс]: URL: https://learn.javascript.ru (дата обращения 07.01.2016).

  • Фрайн Б.

Разработка сайтов для любых браузеров и устройств. Пер. с англ. — СПб.: Питер, 2013. — 304 с.

2 стр., 947 слов

Технологии анализа данных (Text Mining, Data Mining)

... А.А. Барсегян, М.С. Куприянов, В.В. Степаненко, И.И. Холод: Технологии анализа данных. Data Mining, Visual Mining, Text Mining, OLAP: БХВ-Петербург, 2007 3. <http://megaputer.ru/data_mining.php> 4. & ... на основании имеющихся значений числовой последовательности. Учитываются тренды. анализ text data mining Задача кластеризации - деление множества объектов на группы (кластеры) с ...

  • Джереми К. HTML5 для веб-дизайнеров. Пер. с англ. — М.:Манн, Иванов и Фербер, 2013. — 450 с.
  • Сидерхолм Д.

CSS3 для веб-дизайнеров. Пер. с англ. — М.:Манн, Иванов и Фербер, 2013. — 324 с.

<!DOCTYPEhtml>

  • <htmllang=»ru»>
  • <head>
  • <meta http-equiv=»Content-Type» content=»text/html;
  • charset=utf-8″ />
  • <meta charset=»utf-8″ />
  • <title>Application — приложение ASP.NET</title>
  • <link href=»/favicon.ico» rel=»shortcut icon» type=»image/x-icon» />
  • <meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
  • <link href=»/Content/bootstrap.min.css» rel=»stylesheet» />
  • <link href=»/Content/jasny-bootstrap.min.css» rel=»stylesheet» />
  • <link href=»/Content/Site.css» rel=»stylesheet» />
  • <script src=»/Scripts/modernizr-2.6.2.js»></script>
  • <script src=»/Scripts/jquery-1.10.2.js»></script>
  • <script src=»/Scripts/bootstrap.js»></script>
  • <script src=»/Scripts/jasny-bootstrap.min.js»></script>
  • <script src=»/Scripts/respond.js»></script>
  • </head>
  • <body>
  • <div>
  • <div>
  • <div>
  • <button type=»button»>
  • <span>
  • <span>
  • <span>
  • </button>
  • <a>
  • </div>
  • <div>
  • <ul>
  • <li><ahref=»/»>Домашняя страница</a></li>
  • <li><a href=»/Help»>API</a></li>
  • </ul>
  • <form action=»/Account/LogOff»>
  • <input name=»__RequestVerificationToken» type=»hidden» value=»UopJ_zxl_Ash_BEr3Uv55FXPxd4aFcYTS0eBG9f_GEMhnNnRTG7zYr5joaJbugNKLxbS1aqBJNv3mTvw-jBPPFwqN8RFmErRS7aPx77bS7LdYHp6dMC88GuHyufuXq7RnwNqTNalvUNxtOOmH6pq5Q2″ /><ul>
  • <li>
  • <a href=»/Manage» title=»Manage»>Здравствуйте, umed48@gmail.com!</a>
  • </li>
  • <li><a href=»javascript:sessionStorage.removeItem(‘accessToken’);$(‘#logoutForm’).submit();»>Выйти</a></li>
  • </ul>
  • </form>
  • </div>
  • </div>
  • </div>
  • <div>
  • <div>
  • <div>
  • <a>
  • <ul>
  • <li>
  • <a data-toggle=»pill» href=»#notes»>
  • <span>
  • <span>
  • </a>
  • </li>
  • <li>
  • <a data-toggle=»pill» href=»#notifications»>
  • <span>
  • <span>
  • </a>
  • </li>
  • <li>
  • <a data-toggle=»pill» href=»#tags»>
  • <span>
  • <span>
  • </a>
  • </li>
  • <li>
  • <a data-toggle=»pill» href=»#files»>
  • <span>
  • <span>
  • </a>
  • </li>
  • </ul>
  • </div>
  • </div>
  • <div>
  • <div>
  • <div id=»notes»>
  • <div>
  • <div>
  • <button>
  • <button>
  • <button>
  • </div>
  • <div>
  • <form>
  • <label>Фильтрпотегу: </label>
  • <select data-bind=»options: $root.tagViewModel.tags, optionsCaption: ‘Все’, optionsText: ‘name’, optionsValue: ‘id’, value: $root.noteViewModel.filter»>
  • </form>
  • </div>
  • <hr />
  • <div data-bind=»foreach: noteViewModel.filterNotes»>
  • <section data-bind=»click: $root.noteViewModel.show»>
  • <div>
  • <div>
  • <button>
  • <button>
  • <button>
  • <button>
  • </div>
  • <h3>
  • <span data-bind=»text: title»></span><br />
  • <small><span data-bind=»text: created»></span></small>
  • </h3>
  • <div data-bind=»foreach: tags»>
  • <span>
  • </div>
  • </div>
  • <hr />
  • </section>
  • </div>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • </div>
  • <div>
  • <p data-bind=»html: content»></p>
  • </div>
  • <div>
  • <button>
  • </div>
  • </div>
  • </div>
  • </div>
  • <link href=»/Content/font-awesome.min.css» rel=»stylesheet» />
  • <link href=»/Scripts/summernote/summernote.css» rel=»stylesheet» />
  • <script src=»/Scripts/summernote/summernote.min.js»></script>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • <button>
  • </div>
  • <div>
  • <form data-bind=»with: $root.noteViewModel.added»>
  • <div>
  • <label for=»noteTitle»>Заголовок</label>
  • <input>
  • </div>
  • <div>
  • <label for=»noteContent»>Содержимое</label>
  • <div>
  • </div>
  • </form>
  • </div>
  • <div>
  • <button>
  • <button>
  • </div>
  • </div>
  • </div>
  • </div>
  • <script>
  • $(document).ready(function () { $(‘#noteContent’).summernote({ height: 300 });
  • });
  • </script>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • </div>
  • <div>
  • <label>Фильтр по тегу: </label>
  • <select data-bind=»: $root.tagViewModel.tags,: ‘Все’,: ‘name’,: ‘id’,: $root.noteViewModel.choosenTag»>
  • </div>
  • <div>
  • <button>
  • <button>
  • </div>
  • </div>
  • </div>
  • <script src=»/Scripts/moment.min.js»></script>
  • <script src=»/Scripts/bootstrap-datetimepicker.min.js»></script>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • </div>
  • <div>
  • <label>Напоминание: </label>
  • <div>
  • <div>
  • <input type=»text»>
  • <span>
  • <span>
  • </span>
  • </div>
  • </div>
  • </div>
  • <div>
  • <button>
  • <button>
  • </div>
  • </div>
  • </div>
  • </div>
  • <link href=»/Content/font-awesome.min.css» rel=»stylesheet» />
  • <link href=»/Scripts/summernote/summernote.css» rel=»stylesheet» />
  • <script src=»/Scripts/summernote/summernote.min.js»></script>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • <button>
  • </div>
  • <div>
  • <form data-bind=»with: $root.noteViewModel.edited»>
  • <div>
  • <label for=»noteTitleEdit»>Заголовок</label>
  • <input>
  • </div>
  • <div>
  • <label for=»noteContentEdit»>Содержимое</label>
  • <div>
  • </div>
  • </form>
  • </div>
  • <div>
  • <button>
  • <button>
  • </div>
  • </div>
  • </div>
  • </div>
  • <script>
  • $(document).ready(function () {

$(‘#noteContentEdit’).summernote(

18 стр., 8885 слов

Проектирование и разработка web-сервиса

... другой страны, в которую он прибыл. Главной целью моей выпускной квалификационной работы является разработка web-сервиса, который принимает данные вводимые пользователем (станции отправления и прибытия, дата и ... идет о «построении табуретки» все равно вначале очень полезно ее спроектировать. Разработку данного web-сервиса я ввел в Microsoft Visual Studio. Эта программа поддерживает технологию ASP.NET ...

10 стр., 4656 слов

Разработка web-приложения

... версию - может препятствовать корректной работе приложения. Но использование активных серверных страниц ASP позволило в большей степени избежать данных проблем. Цель работы: Спроектировать и разработать Web-приложение для упрощенного доступа пользователя к ...

14 стр., 6581 слов

Разработка веб-приложения (2)

... страницы (в случае, когда какой-либо сенсор неактуален). 2. Описание средств разработки приложения, .1 Язык программирования Java Создание языка Java - это действительно один ... приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML.высвобождает мощь объектно-ориентированной разработки приложений, ...

16 стр., 7909 слов

Открытые информационные системы

POST ,PUT и DELETE запросы, предназначенные для изменения данных пользователя, они будут приводить к изменению данных пользователя, в том случае, если будут успешными [5]. Запросы REST API не отслеживаются (не существует механизмов авторизации пользователя, сделавшего запрос). REST API предоставляет доступ к таким типам данных как Bookmarks, Notes, Speed Dial. Другие типы данных и дополнительные ...

{: 300

});

});

  • </script>
  • </div>
  • <div id=»notifications»>
  • <table>
  • <thead>
  • <tr>
  • <th>Название</th>
  • <th>Время напоминания</th>
  • </tr>
  • </thead>
  • <tbody data-bind=»foreach: $root.noteViewModel.notifications»>
  • <tr>
  • <td data-bind=»text: title»></td>
  • <td data-bind=»text: created»></td>
  • </tr>
  • </tbody>
  • </table>
  • </div>
  • <div id=»calendar»>
  • </div>
  • <div id=»tags»>
  • <div>
  • <div>
  • <button>
  • <span>
  • </button>
  • <button>
  • <button>
  • <span>
  • </button>
  • </div>
  • </div>
  • <hr />
  • <div data-bind=»foreach: tagViewModel.tags»>
  • <section>
  • <div>
  • <button>
  • <h3 data-bind=»text: name, style: {‘backgoundColor’: color}»></h3>
  • </section>
  • </div>
  • <link href=»/Content/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css» rel=»stylesheet» />
  • <script src=»/Scripts/bootstrap-colorpicker.min.js»></script>
  • <div>
  • <div>
  • <div>
  • <div>
  • <h4>
  • <button>
  • </div>
  • <div>
  • <form data-bind=»with: $root.tagViewModel.added»>
  • <div>
  • <label for=»myTagName»>Название</label>
  • <input id=»myTagName»>
  • </div>
  • <div>
  • <label for=»myTagColorPicker»>Цвет</label>
  • <div id=»myTagColorPicker»>
  • <span>
  • <input id=»myTagColor» type=»color»>
  • </div>
  • </div>
  • </form>
  • </div>
  • <div>
  • <button>
  • <button>
  • </div>
  • </div>
  • </div>
  • </div>
  • </div>
  • <div id=»files»>
  • <div>
  • <div>
  • <i>
  • <span>
  • </div>
  • <span>
  • <span>
  • <span>
  • <input id=»fileUpload» type=»file» name=»…» />
  • </span>
  • <a href=»#»>
  • </div>
  • <table>
  • <thead>
  • <tr>
  • <th>Id</th>
  • <th>Название</th>
  • <th>Тип</th>
  • <th>URL</th>
  • </tr>
  • </thead>
  • <tbody data-bind=»foreach: $root.fileViewModel.files»>
  • <tr>
  • <td data-bind=»text: id»></td>
  • <td data-bind=»text: name»></td>
  • <td data-bind=»text: type»></td>
  • <td>
  • <input>
  • </td>
  • <td>
  • <button>
  • </td>
  • </tr>
  • </tbody>
  • </table>
  • </div>
  • </div>
  • </div>
  • <script src=»/Scripts/knockout-2.3.0.debug.js»></script>
  • <script src=»/Scripts/knockout.validation.debug.js»></script>
  • <script src=»/Scripts/knockout.mapping-latest.debug.js»></script>
  • <script src=»/Scripts/myapp/FileViewModel.js»></script>
  • <script src=»/Scripts/myapp/NoteViewModel.js»></script>
  • <script src=»/Scripts/myapp/TagViewModel.js»></script>
  • <script src=»/Scripts/myapp/AppModel.js»></script>
  • <div>
  • </div>
  • <hr />
  • </div>
  • <!— Visual Studio Browser Link —>
  • <script type=»application/json» id=»__browserLink_initializationData»>

{«appName»:»Chrome»,»requestId»:»34afcd51b8cb4591ab29be8c9b09149e»}

</script>

  • <script type=»text/javascript» src=»http://localhost:63854/0a4f85abd86844158d4ae925531ab235/browserLink» async=»async»></script>
  • <!— End Browser Link —>
  • </body>
  • </html>