Разработка приложений клиент-сервер для сетей TCP/IP с использованием CGI-интерфейса
Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.05.2013 |
Размер файла | 35,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Пояснительная записка к курсовому проекту по теме:
«Разработка приложений клиент-сервер для сетей TCP/IP с использованием CGI-интерфейса»
Введение
Компьютерные сети - это средство для удобного обмена информацией между пользователями, так же они реализуют обработку данных, которая распределена между двумя объектами: клиентом и сервером. В связи с этим специалист в области компьютерных сетей обязан обладать знанием технологий клиент-сервер, обеспечивающих взаимодействие между пользователями сети, а также знанием языка гипертекстовой разметки документов, необходимого для создания собственных Web-страниц. Одним из наиболее мощных и популярных инструментов, позволяющих реализовать данную технологию, является CGI-интерфейс. CGI - Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web-сервер. Он обозначает набор соглашений, которые должны соблюдаться Web-серверами, при выполнении ими различных Web-приложений.
Поэтому цель данного курсового проекта разработка приложения архитектуры клиент-сервер, для сетей TCP/IP с использованием CGI-интерфейса, языка разметки гипертекстовых документов HTML и языка PHP.
В качестве языков программирования для реализации цели проекта выбраны языки HTML и PHP. Данный выбор обусловлен массовым применением языка HTML и CGI-интерфейса для создания веб-страниц в сети Internet и широким использованием языка сценариев общего назначения PHP с открытым исходным кодом.
PHP - это скрипт-язык (scripting language), встраиваемый в HTML, который интерпретируется и выполняется на сервере. В PHP включена поддержка многих баз данных. MySQL - компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании.
Актуальность данной темы обусловлена:
- бурным развитием Internet-технологий и широким внедрением их в производство;
- широким распространением сетей на базе протоколов TCP/IP.
1. Постановка задачи
Целью проекта является разработка приложения клиент-сервер, предназначенного для обслуживания базы данных событий, представляющей собой ежедневник пользователя. Перед началом разработки приложения были определены основные требования, которым оно должно соответствовать.
Программа администрирования раздела событий должна состоять из двух частей: клиентской и серверной.
Должна быть создана база данных, содержащая сведения о событиях, а точнее, время и дату, заголовок и описание события.
Клиентская часть программы представляет собой набор интерфейсных HTML-страниц предназначенных для:
- просмотра событий за заданный интервал времени;
- редактирования, удаления и добавления событий в базу данных;
- аутентификация пользователя ежедневника;
- изменение пароля пользователя ежедневника.
Серверная часть представляет собой CGI-приложение, предназначенное для формирования клиентских HTML-страниц на основе информации из базы данных событий, и внесения изменений в базу данных, в соответствии с информацией, полученной от клиентской части.
Запись в базе данных в обязательном порядке должна содержать следующие поля:
- дата события;
- заголовок события;
- описание события.
Также была отмечена необходимость задания параметров соединения с базой данных и её выбора для удобства установки приложения. Соответствующие РНР-сценарии должны создавать необходимые таблицы, считывать необходимые данные из строк таблицы (которые соответствуют каким-либо событиям) в базе данных, а также удалять строки и редактировать соответственно. Для чего должны быть реализованы функции создания, удаления, редактирования и считывания строк из базы данных, для создания, удаления, редактирования и просмотра соответствующих этим строкам событий.
2. Функциональное назначение разрабатываемого ПО
Разрабатываемое программное обеспечение предназначено для выполнения следующих функций:
- просмотр ежедневника пользователя, содержащего сведения о событиях;
- его редактирование (добавление, изменение, удаление отдельных записей);
- администрирование базы данных.
Главным назначением разрабатываемого программного обеспечения является удобный способ ведения учета важных событий. Поэтому данное программное обеспечение должно быть удобным для пользователя в смысле наглядности, компактности, гибкости и скорости доступа к информации.
3. Разработка и описание интерфейса
3.1 Интерфейс клиентской части
Интерфейс пользователя является важной составляющей успешного проекта. Пользователь осуществляет управление работой приложения путём заполнения HTML-форм.
Главная страница, с которой пользователь начинает свою работу, содержит заголовок и два поля для ввода имени пользователя и пароля, а так же кнопку «Вход».
При правильном заполнении данных полей осуществляется переход на страницу, содержащую таблицу, состоящую из строк, каждая из которых соответствует какому-либо событию, и столбцов: с датой создания события, заголовком и описанием события. Непосредственно под таблицей список возможных действий, например, просмотр списка событий за день, за неделю, просмотр конкретного события или добавление записи. В форме любое событие, которое интересует пользователя, может быть выбрано путем установления галочки напротив него, затем также выбирается действие удаление по отношению к нему.
Напротив каждого события в поле «Удаления» существует возможность установить метку и при нажатии кнопки «Удалить» из таблицы будет удалена определенная запись.
Для редактирования какой-либо записи необходимо активизировать гиперссылку ее заголовка, в результате чего появится форма для изменения значений полей, эта же форма предназначена для создания новой записи в случае активизации гиперссылки «Добавить запись». Вид ее приведен на рисунке 3.
Для изменения существующего пароля необходимо щелкнуть гиперссылку «Сменить пароль», что повлечет за собой появления на экране формы, в которой предусмотрено поле для ввода нового пароля и кнопка «Сменить». После установления нового пароля осуществляется возврат на первую страничку регистрации.
Исходный код РНР главной страницы, формы для входа на сайт, формы для добавления записи, формы для изменения пароля в файлах «index.php», «login.php», «addrecord.php», «password.php» приведён в приложении А.
3.2 Интерфейс серверной части
программный интерфейс алгоритм серверный
Приложение клиент - сервер работает по следующему принципу. Клиент формирует запросы серверу на использование его ресурсов (база данных). Сервер, определенный заранее, выполняет запросы, поступающие от клиентов. Результат выполнения запроса передается клиенту. Клиент обрабатывает полученные данные и представляет результаты обработки в виде, удобном для пользователя.
После выбора действия происходит передача параметров из клиентской в серверную часть посредствам гиперссылок. После чего серверная часть анализирует полученные параметры и выполняет необходимые операции. При активизации ссылки «Добавить запись» формируется страничка с формами подлежащая заполнению. Результат заполнения анализируется одним из файлов серверной части «addrecord.php». В зависимости от результата анализа осуществляется либо добавление записи в базу данных, либо выдача сообщения о некорректном заполнении форм. При активизации других ссылок обработка данных в серверной части производится другими файлами по аналогичному алгоритму.
4. Описание алгоритма и программной реализации приложения
Алгоритм работы приложения начинается с проверки соответствия пароля и имени пользователя. В случае нахождения такого соответствия производиться доступ пользователя к ежедневнику. То есть осуществляется поочередный вывод строк Ak таблицы, где k - это порядковый номер строки, содержащей сведения о событии A. Вывод осуществляется в цикле, для реализации которого был инициализирован счетчик переменной k, изначально обнуленной. В данном алгоритме i - общее количество записей в таблице.
Далее следует проверка наличия выбора какого-либо действия. В зависимости от этого выбора осуществляются процедуры следующих действий:
- вывода события или списка событий за определенный интервал времени;
- удаления выбранного события или нескольких событий из базы данных;
- редактирования выбранного события;
- добавления события в базу данных.
Алгоритм работы приложения приведен в приложении А на рисунке А.1.
Каждая из процедур реализована в отдельных алгоритмах.
Вывод списка событий осуществляется в цикле, где проверяется условие того, входит ли дата события TAk в заданный интервал времени T. Если да, то выводится событие Ak и k увеличивается на единицу. Алгоритм процедуры просмотра информации из базы данных приведен в приложении А на рисунке А.2.
Алгоритм удаления событий осуществляется аналогично, разница состоит в том, что проверяется условие, выбрана ли в таблице запись Ak, и если оно верно, то эта запись подлежит удалению. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.3.
Для алгоритма процедуры редактирования выбранного события, так же организован цикл проверки наличия выбранной записи, а затем действия ввода новых значений для полей Ak и их сохранение. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.4.
Алгоритм добавления записи состоит из действий ввода значений полей новой записи и сохранения ее в базе данных. Он приведен в приложении А на рисунке А.5.
В соответствии с представленными алгоритмами была разработана их программная реализация на языках HTML и PHP. Текст программы приведен в приложении Б.
5. Описание схемы базы данных
Для работы приложения было создано две таблицы. Первая содержит строки, каждая из которых соответствует одному событию ежедневника. Для каждого события определены поля: порядковый номер, время и дата заголовок, описание. В таблице 1 приведено соответствие заголовков полей и содержащихся в этих полях данных.
Таблица 1 - Типы полей базы данных событий
id |
datetime |
title |
description |
unique |
|
Порядковый номер |
Дата и время записи события |
Заголовок события |
Описание события |
Метка |
Вторая таблица содержит список пользователей, где для каждого из них существуют поля: порядковый номер, имя пользователя и пароль. В таблице 2 приведено соответствие заголовков полей базы данных пользователей и содержащихся в этих полях данных.
Таблица 2 - Типы полей базы данных пользователей
nickname |
password |
id |
|
Имя пользователя |
Пароль |
Порядковый номер |
Создание таблиц программно реализовано в файле createDB.php, листинг которого приведен в приложении Б.
Заключение
В ходе выполнения задания на курсовое проектирование было создано программное обеспечение на языке РНР, предназначенное для обслуживания базы данных событий, а именно разработано приложение клиент-сервер, предназначенное для обслуживания базы данных событий, соответствующее всем изложенным в задании требованиям.
В результате выполнения работы освоены навыки создания приложений типа клиент-сервер на языках программирования PHP, HTML с использованием СУБД MySQL.
Задание на курсовое проектирование выполнено в полном объёме.
Список использованных источников
1. Котеров Д.В. Самоучитель PHP4. - СПб.: БХВ-Петербург, 2001. - 576 с.
Приложение
Текст программы
«createDB.php»
<! doctype html public «- //W3C //DTD HTML 4.0 //EN»>
<html>
<head>
<title>Untitled web-page</title>
</head>
<body>
<? php
mysql_connect («172.16.253.34», «it», «it»);
mysql_select_db («it»);
$query = «create table events (
id int(11) not null auto_increment,
datetime datetime not null default '0000-00-00 00:00:00',
title varchar(255) not null,
description varchar(255) not null,
unique id (id))»;
mysql_query($query);
$query_indetif = «create table user (
nickname varchar(10) not null,
password varchar(10) not null,
primary key (id))»;
mysql_query ($query_indetif);
$query_ins = «insert into user values ('root', 'admin', '1', 'description', 1, 'none@none.ru', «, «, «)»;
mysql_query ($query_ins);
?>
</body>
</html>
«index.php»
<? php
if (! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);
require ('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');
// удалить записи
if ($DeleteEvents!= «)
{
$i=0;
if ($REQUEST_METHOD== «POST»)
while (list ($key, $val) = each ($HTTP_POST_VARS))
{
$pos = strpos ($key, «delrecord»);
if (! ($pos === false))
{
$delid[$i] = $val;
$i++;
};
}
if ($i > 0)
{
$delsect_ids= «'».join («', '»,$delid). «'»;
$sql = «DELETE FROM events WHERE id IN ($delsect_ids)»;
$result = mysql_query($sql);
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
}
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>БД событий. Авторизированная зона.</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<div align= «center»>
<h1>Ежедневник.</h1>
<form action= «index.php» method= «post» name= «mainform» id= «mainform»>
<table width= «90%» border= «1» cellspacing= «0» cellpadding= «0»>
<tr>
<td><div align= «center»><strong>Время</strong></div></td>
<td><div align= «center»><strong>Дата</strong></div></td>
<td><div align= «center»><strong>Заголовок</strong></div></td>
<td><div align= «center»><strong>Описание</strong></div></td>
<td><div align= «center»><strong>Удаление</strong></div></td>
</tr>
<?
$where = «»;
if ($v == «day»)
$where = «WHERE datetime > CURRENT_DATE»;
if ($v == «week»)
$where = «WHERE datetime >= DATE_SUB (CURRENT_DATE, INTERVAL 7 DAY)»;
$sql = «SELECT id, date_format (datetime, ' % H:%i') AS time, date_format (datetime, ' % d/%m/%Y') AS date, title, description FROM events$where»;
$result = mysql_query($sql);
$error = 0;
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
$error = 1;
}
if (mysql_num_rows($result) == 0)
{
echo «No rows found, nothing to print.»;
$error = 1;
}
«addrecord.php»
<? php
if (! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);
require ('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');
if ($AddRecord!= «»)
{
if ($title ==»» || $description == «»)
$error = «Невозможно добавить запись!<br> Необходимо заполнить все поля.<br>»;
else
{
if ($id == «»)
{
$sql= «INSERT INTO events (datetime, title, description) VALUES (NOW(), '$title', '$description')»;
}
else
{
$sql= «UPDATE events SET title='$title', description='$description' WHERE id='$id'»;
}
$result = mysql_query($sql);
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
}
else
{
header («Location: index.php»);
exit;
}
}
}
if ($id!= «»)
{
$sql = «SELECT title, description FROM events WHERE id='$id'»;
$result = mysql_query($sql);
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
}
else
{
$row = mysql_fetch_array ($result, MYSQL_BOTH);
$title = $row [«title»];
$description = $row [«description»];
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>Добавить запись</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<? echo $error?>
<h3>Добавить запись:</h3>
<form action= «addrecord.phtml» method= «get» name= «mainform» id= «mainform»>
<input type= «hidden» name= «id» id= «id» value= "<? echo $id?>">
<table width= «90%» border= «0» cellspacing= «0» cellpadding= «5»>
<tr>
<td><div align= «right»><strong>Заголовок: </strong></div></td>
<td><input name= «title» type= «text» id= «title» size= «50» value= "<? echo $title?>"></td>
</tr>
<tr>
<td><div align= «right»><strong>Описание: </strong></div></td>
<td><textarea name= «description» cols= «50» rows= «7» id= «description»><? echo $description?></textarea></td>
</tr>
<tr>
<td colspan= «2»><div align= «center»>
<input type= «submit» name= «AddRecord» value= «Добавить запись»>
</div></td>
</tr>
</table>
</form>
<p><a href=»/">Вернуться на главную.</a></p>
</body>
</html>
«login.php»
<? php
require ('config.inc');
if ($nickname!= '' && $password!= «)
{
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную таблицу.');
$sql = «SELECT id FROM user WHERE nickname='$nickname' AND password='$password' AND superuser=1»;
$result = mysql_query($sql);
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
exit;
}
if (mysql_num_rows($result)!= 0)
{
$row = mysql_fetch_array ($result, MYSQL_BOTH);
}
if($row)
{
session_start();
session_register ('is_auth_user');
$is_auth_user = rand();
header («Location: index.php»);
}
else
{
header («Location: login.phtml»);
}
mysql_close();
}
else
{
print <<<MAINWIN
<HTML>
<head>
<META HTTP-EQUIV= «Content-Type» CONTENT= «text/html; charset=Windows-1251»>
<script language= «JavaScript»>
<!-
function SelectIt() {
document.mainform.nickname.focus();
}
// ->
</script>
<link href='$current_dir/styles/$style_file' rel=stylesheet>
</head>
$sCentralBodyTag
<table width=100% height=100% border=0>
<tr>
<td align=center valign= «middle»>
<b class=big>Для входа на сайт необходим логин и пароль</b>
<FORM action='login.phtml' method=post>
<TABLE border=0>
<TR><TD>
<INPUT type=text id=nickname name=nickname maxlength=8 value='root' class=area>
</TD></TR>
<TR><TD>
<INPUT class=area type=password name=password maxlength=8 value='admin'>
</TD></TR>
<TR><TD align=right><INPUT type=submit value=Вход class=but>
</td></tr>
</table>
</td></tr>
</table>
</BODY>
</HTML>
MAINWIN;
}
?>
«password.php»
<? php
if (! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);
require ('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');
if ($Submit!= «»)
{
if ($password == «»)
$error = «Пароль не должен быть пустым!<br>»;
else
{
$sql= «UPDATE user SET password='$password' WHERE superuser='1'»;
$result = mysql_query($sql);
if (!$result)
{
echo «Could not successfully run query ($sql) from DB:». mysql_error();
}
else
{
session_write_close();
header («Location: login.phtml»);
exit;
}
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>Смена пароля</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<? echo $error?>
<h3>Смена пароля: </h3>
<form action= «password.phtml» method= «post» name= «mainform» id= «mainform»>
Новый пароль:
<input name= «password» type= «password» id= «password»>
<input type= «submit» name= «Submit» value= «Сменить»>
</form>
</body>
</html>
Размещено на Allbest.ru
Подобные документы
Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.
курсовая работа [1,3 M], добавлен 07.07.2013Особенности работы с SQL-базами данных. Установка и настройка локального сервера СУБД Interbase. Создание приложения "Торговая фирма", состоящее из серверной части и клиентской. Разработка спецификаций и описание интерфейса пользователя программы.
курсовая работа [634,5 K], добавлен 14.07.2012Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.
дипломная работа [1,4 M], добавлен 03.06.2014Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.
курсовая работа [1,1 M], добавлен 04.09.2014Разработка сетевой карточной игры "King" для операционной системы Windows XP. Реализация приложения с помощью интерфейса прикладного программирования Win32 API. Назначение серверной и клиентской части. Анализ исходных данных, тестирование приложения.
курсовая работа [209,3 K], добавлен 24.01.2016Методика и основные этапы разработки системы тестирования для оценки уровня знаний студентов с применением технологии "Клиент-сервер". Проектирование клиентской, серверной части данной системы тестирования, порядок составления финальных отчетов.
дипломная работа [587,6 K], добавлен 08.11.2010