Разработка веб-приложения, работающего в режиме реального времени, с использованием средств объектно-ориентированного программирования языка Javascript
Использование средств объектно-ориентированного программирования языка Javascript для разработки веб-приложения, работающего в режиме реального времени. Структура данных и элементы программы. Тестирование веб-приложения. Основные системные требования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.06.2015 |
Размер файла | 588,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российский государственный социальный университет
Филиал в г. Анапа Краснодарского края
Курсовой проект
на тему: «Разработка веб-приложения, работающего в режиме реального времени, с использованием средств объектно-ориентированного программирования языка Javascript»
ЗАДАНИЕ КУРСОВОГО ПРОЕКТА
В данном курсовом проекте необходимо разработать веб-приложение, которое передает данные пользователям в режиме реального времени. Обмен данными происходит в режиме игры между пользователями, которые, подключаясь к серверу и внося различные значения, передают их друг другу без перезагрузки страницы.
СОДЕРЖАНИЕ
Введение
1. Основная часть
1.1 Структура данных
1.2 Выбор языка программирования
1.3 Элементы программы
1.4 Тестирование
1.5 Системные требования
Заключение
Литература
Приложения
ВВЕДЕНИЕ
Целью данной курсовой работы, посвященной изучению и разработке средств массового интернет-обмена данными, является:
- углубление навыков программирования на языках высокого уровня;
- систематизация теоретических и практических знаний по специальности «Объектно-ориентированное программирование »;
- обобщение опыта применения процедурного подхода к технологии программирования;
- применение полученных знаний при создании программного продукта.
Так как целью курсовой является разработка веб-приложения на основе сервера Node.js, стоит рассказать о том, что это такое. Node.js позволяет запускать JavaScript-код вне браузера. Чтобы Javascript код выполнился на вычислительной машине вне браузера, он должен быть интерпретирован и, конечно же, выполнен. Именно это и делает Node.js. Для этого он использует движок V8 VM от Google -- ту же самую среду исполнения для JavaScript, которую использует браузер Google Chrome. Кроме того, Node.js поставляется со множеством полезных модулей, так что не придется писать всё с нуля, как, например, вывод строки в консоль. Таким образом, Node.js состоит из 2 вещей: среды исполнения и полезных библиотек. Основной упор в Node.js делается на создании высокопроизводительных, хорошо масштабируемых клиентских и серверных приложений для веб-приложений, которые работают в режиме реального времени. Также в разработке был использован паттерн MVVM. Knockout - это популярная JavaScript библиотека, позволяющая реализовать Model-View-View-Model (MVVM) паттерн на клиенте, то есть в самом браузере.
программирование javascript объектный приложение
1. ОСНОВНАЯ ЧАСТЬ
1.1 Структура данных
Работа веб-приложения построена на обмене информации пользователя с сервером. Все файлы функционала расположены на сервере. Файлы, отвечающие за работоспособность приложения, и их основные функции указаны в таблице 1.
Таблица 1
Название |
Предназначение |
|
server.js |
Самый главный файл, отвечающий за корректный запуск сервера с подключением всяческих настроек. |
|
layout.html |
Шаблон сайта, включающий в себя блоки, которые остаются неизменны. Статическая часть сайта. |
|
index.html |
Главная страница, в которой находится "мозг" клиентской части. Динамическая часть сайта. |
|
config.js |
Конфигурационный файл. |
|
package.json |
Текстовый документ в формате json, который отвечает за установление зависимостей приложения от других подключаемых модулей. Также включает в себя дополнительную информацию о приложении |
|
race.js |
Файл в котором содержатся многочисленные функции, которые вызываются как реакция на происходящие события в браузере |
|
routes/index.js |
Файл в котором указаны ссылки, по которым доступен сайт. |
На сервере так же находятся файлы настроек css-оформления. Они не являются жизненно необходимыми для работы приложения, лишь улучшают его внешний вид.
1.2 Выбор языка и среды программирования
Выбор Javascript в данном случае как языка программирования обусловлен тем, что я очень к нему привык за последние несколько лет. Javascript - скриптовый язык, предназначенный для создания интерактивных веб-страниц. Что умеет Javascript: изменять страницу, писать на ней текст, добавлять и удалять теги, менять стили элементов. Реагировать на события: скрипт может ждать, когда что-нибудь случится (клик мыши, окончание загрузки страницы) и реагировать на это выполнением функции. Выполнять запросы к серверу и загружать данные без перезагрузки страницы. Это иногда называют "AJAX". Устанавливать и считывать cookie, валидировать данные, выводить сообщения и многое другое.
1.3 Принцип работы веб-приложения
При посещении главной страницы сайта, появляется текстовое поле, в которое нужно ввести свой никнейм ( показано на рисунке А1) . Также стоит отметить, что при корректном интернет соединении, в левом верхнем углу появляется значок, символизирующий о подключении к веб-серверу. После ввода никнейма пользователю отрендеривается шаблон главной части сайта, в котором он решает простое математическое выражение и записывает ответ в соответствующую ячейку ( показано на рисунке А2). Игра длится 60 секунд, после ее окончания, подводятся итоги и результаты записываются в переменные, которые отображаются на странице( показано на рисунке А3).
В момент отправки запроса на сервер срабатывает множество событий, которые обрабатывает сервер и передает каждому участнику игры. Соединение между браузером и сервером находится в постоянном контроле со стороны сервера. Если пользователь не производит никаких действий на сайте, то сервер отправляет ему, так называемый heartbeat - проверка связи. Если браузер корректно отвечает на heartbeat, то сервер продолжает отправлять ему новые запросы. Если же сервер не получает ответа от клиента, то связь прерывается.
1.4 Элементы программы
Переменные на сначало генерируются на сервере, а затем отправляются клиенту. При обновлении каких-либо значений на сервере, происходит и обновление на клиенте, о чем пользователь сразу же узнает, так как данные передаются без его усилий по обновлению страницы.
Переменные программы
В Таблице 2 содержится описание переменных для данного веб-приложения.
Таблица 2
Название |
Предназначение |
|
clients |
Массив со значениями клиентов |
|
sessions |
Массив для создания отдельной сессии для каждого клиента |
|
scores |
Результаты, приходящие от клиентов |
|
history |
Массив с историей прошедших игр |
|
hall_of_fame |
Массив с именами игроков-рекордсменов |
|
self.quest |
Переменная в которой хранится правильный ответ на решение мат. выражения |
|
game_started |
Переменная в которой хранится время начало игры |
|
elapsed |
Переменная в которой хранится время, которое прошло с начала игры |
|
remaining |
Переменная, содержащая время, оставшееся до конца игры |
|
operation |
Переменная в которой генерируется знак сложения и вычитания |
1.5 Тестирование
Список компьютеров на которых проводилось тестирование:
- Компьютер 1: Intel Core i5 M 480 @ 2.67ГГц 2.67ГГц. 3Гб ОЗУ. 300Гб Жёсткий диск. Nvidia GeForce 520M. OC Windows 7,
- Компьютер 2: Intel Core T4300 2.10ГГц, 4096 Mб ОЗУ, 500 Гб Жёсткий диск, Nvidia GeForce 220M, OC Windows 7.
- Компьютер 3: Intel Celeron 700 700Гц, 512, Mб ОЗУ, 120 Гб Жёсткий диск, Nvidia GeForce GT6600, OC Windows XP.
- Компьютер 4: . Intel Pentium 4 3GHz, 1024 Mb RAM, 320 Gb HDD, Nvidia GeForce GT7600, OC Windows XP.
Ошибок не обнаружено, веб-форум функционирует корректно.
1.6 Системные требования
Минимальные требования:
Программные:
- операционные системы: 2000\XP\Vista\Seven;
- веб-браузер;
Аппаратные:
- Устройство ввода: клавиатура, мышь;
- Подключение к сети Интернет.
ЗАКЛЮЧЕНИЕ
Во время выполнения курсовой работы было разработано программное средство, представляющее собой элементарное взаимодействие между многими пользователями в режиме реального времени. При желании это приложение можно расширить, добавив систему аутентификации, модерирования, работы с медиа-файлами.
Все пункты постановки задачи были выполнены, разработанное программное средство выполняет поставленную перед ним задачу.
ЛИТЕРАТУРА
1. Дж. Харт. Node.js для начинающих. -- М.: Питер, 2012. -- 558 с. -- ISBN 0-2589-1256-8 - 2012
2. Что такое node.js, [Электронный ресурс] / Wikipedia Foundation. - Электронные текстовые данные (1 html - страница, 821 Кб ). - URL: http://ru.wikipedia.org/wiki/Nodejs режим доступа: свободный. - Дата последнего доступа: 17.12.2013.
ПРИЛОЖЕНИЯ
СКРИНШОТЫ ПРОГРАММЫ
ЛИСТИНГ ПРОГРАММЫ
Index.html:
<script>
//util
function sort (arr, property, desc){
function sorter(aa,bb){
var a = !desc ? aa : bb;
var b = !desc ? bb : aa;
if (typeof a[property] == "number") {
return (a[property] - b[property]);
} else {
return ((a[property] < b[property]) ? -1 : ((a[property] > b[property]) ? 1 : 0));
}
}
return arr.sort(sorter);
};
//util, печать сообщений --
function print_msg (msg, style, time){
$('#msg').html('<div class="msg msg-'+ style +'">' + msg + '</div>');
$('#msg').fadeIn();
setTimeout(function(){$('#msg').fadeOut()},time || 500);
}
function show_error(msg){ print_msg(msg, 'error'); }
function show_ok(msg){ print_msg(msg, 'ok'); }
//конец
$(document).ready(function() {
//socket.io -------------------------
var server='http://' + real_time_server.host + ':' + real_time_server.port;
var socket = io.connect(server);
socket.on('connect',function() {
$('#socketio').html('<span class="label label-success">Подключен!</label>');
socket.emit('join', { id: user_id });
});
socket.on('disconnect',function() {
$('#socketio').html('<span class="label label-important">Соединение разорвано!</label>');
});
socket.on('time',function(time) {
race.time(time);
});
socket.on('new_operation',function(operation) {
$('#operations').html(operation);
$('input.input_player').val('').select(); //обнуление и выбор заного.
});
socket.on('history',function(history) {
for (var i = 0, l = history.length; i < l ; i++) { //Сортировка кажждого по очкам
sort(history[i].scores, 'score', true)
}
race.history(sort(history, 'timestamp', true)); //биндим очки истории и сортируем по дате
});
socket.on('scores',function(scores) {
race.scores(sort(scores,'score', true));
if (scores.length){ //effect
$('.scores').addClass('selected');
setTimeout(function (){
$('.scores').removeClass('selected')
}, 200);
}
});
socket.on('hall_of_fame',function(hall_of_fame) {
race.hall_of_fame(sort(hall_of_fame,'score', true));
});
socket.on('new_game',function(result) {
print_msg ('Новая игра, обнуление результатов, Удачи!!', 'new', 2000);
});
socket.on('result_operation',function(result) {
if (result==1)
print_msg ('Отлично!!', 'success');
else if (result==2)
print_msg ('Другой игрок ответил быстрее чем ты!', 'warning', 1000);
else
print_msg ('Неееееееет!', 'error');
});
//конец socket.io -------------------------
//knockout модель и биндинг приложения
function Race () {
var self=this;
self.name = ko.observable();
self.input_player1 = ko.observable();
self.scores = ko.observableArray();
self.history = ko.observableArray();
self.hall_of_fame = ko.observableArray();
self.time = ko.observableArray();
self.valid_name = ko.computed(function() {
return (self.name() && self.name().length>2);
}, self);
self.sendOperationResult = function() {
var data = {operation: self.input_player1(), name : self.name()};
socket.emit('solve_operation', data);
}
}
var race = new Race();
ko.applyBindings(race);
//конец биндинга
//jQuery биндинг
$('input.input_player').click(function(e){
this.select();
});
$('#name').focus();
$('input.input_player').keydown(function(e){
if (e.keyCode=='13'){ //нажатие клавиши
race.sendOperationResult();
$('input.input_player').select();
}
});
});
</script>
<div class="alert alert-warning" data-bind="visible: (!valid_name())">
<h2>Кто быстрее вычислит элементарные мат. выражения, например: 12 + 14 = ??</h2>
<h3>Игра идет в режиме реального времени</h3>
<p> Введите свое имя и игра начнется!</p>
</div>
<p>Введите никнейм: <input maxlength="10" type="text" id="name" name="name" value="" data-bind="value: name, valueUpdate: 'afterkeydown'" /></p>
<div style="display:none" data-bind="visible: valid_name">
<div class="row-fluid">
<div class="span12 main">
<span id="operations"></span>
<span class="equal">=</span>
<input class="input_player" maxlength="4" type="text" name="player1" value="" data-bind="value: input_player1, valueUpdate: 'afterkeydown'" />
<div id="msg"></div>
</div>
</div>
<div class="row-fluid results">
<div class="span4 current_game">
<h3>Текущая игра
<small>(закончится через <span id="time" data-bind="text: time, css: { red: time() < 10 }"></span> сек.)</small>
</h3>
<div class="scores alert alert-warning">
<ol data-bind="foreach: scores">
<li><span data-bind="text: player"></span>:
<span class="score" data-bind="text: score"></span>
</li>
</ol>
<p data-bind="visible: (scores().length==0)">Реши мат. выражение и введи ответ быстрее других. Стань первым в списке лидеров!</p>
</div>
</div>
<div class="span4">
<h3>История игр</h3>
<div data-bind="visible: history().length">
<div data-bind="foreach: history">
<div class="game_history alert alert-warning">
<h4><small>игра сыграна: </small> <span data-bind="text: name"> </span></h4>
<ol data-bind="foreach: scores">
<li><span data-bind="text: player"></span>: <span class="score" data-bind="text: score"></span></li>
</ol>
</div>
</div>
</div>
</div>
<div class="span4 hall_of_fame">
<h3>Рейтинг игроков (ТОП-10)</h3>
<ol data-bind="foreach: hall_of_fame">
<li>
<strong>
<span data-bind="text: player"></span> <span class="score" data-bind="text: score"></span>
</strong>
<span class="timestamp">
(<span data-bind="text: timestamp"></span>)
</span>
</li>
</ol>
</div>
</div>
</div>
Размещено на Allbest.ru
Подобные документы
Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015Сравнительная характеристика, возможности и функции языков программирования JavaScript и PHP. Основные области их использования. Разработка интерактивного Web-приложения с применением JavaScript на примере теста по теме "Программирование на языке Delphi".
курсовая работа [19,3 K], добавлен 01.07.2014Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".
курсовая работа [966,9 K], добавлен 11.02.2016Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.
учебное пособие [1,6 M], добавлен 28.12.2013