Разработка Web-приложения "Магазин книг"

 

Содержание


Введение

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

. Разработка Web-приложения «Магазин книг»

.1 Программирование XSL-таблиц стилей

.2 Программирование серверных сценариев

.3 Результаты работы Web-приложения

Заключение

Приложение. «SQL-код для создания БД «Магазин книг» («Bookstore»)»


Введение


В последние несколько лет все большее количество сайтов стремится разделить информационное наполнение страниц и дизайн посредством использования XML-разметки данных и их XSL-преобразования.

Целью данной работы является закрепление навыков по созданию Web-приложений, построению XSL-таблиц стилей трансформации, программной реализации XSL-трансформации на основе классов серверных сценариев Web-приложений.


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


В данной расчетно-графической работе в качестве предметной области рассматривается магазин книг.

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

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

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


2. Разработка Web-приложения «Магазин книг»


.1 Программирование XSL-таблиц стилей


В ходе выполнения работы нами были созданы XSL-спецификации трансформации «Default.xsl» и «Browse.xsl». Листинги программного кода данных файлов представлены ниже:

. Листинг кода файла «Default.xsl»:

<?xml version="1.0" encoding="windows-1251" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="#"justify"><xsl:template match="/">

<HTML xmlns="#"justify"><HEAD>

<TITLE>Магазин книг</TITLE>

<LINK href="images/style.css" rel="stylesheet" type="text/css"/>

</HEAD>

<BODY style="font-size: 12pt">

<form action="file.xml" method="get" name="ff">

<TABLE>

<TR>

<TD width="100%">

<SPAN>

<BR/>

<HR>

</TD>

</TR>

<TR>

<TD style="height: 17px; text-align: right;" width="100%">

<SPAN style="color: #ff0000; font-size:13pt; font-family: 'Century Schoolbook'">Выбор &#160;</SPAN>

<SPAN style="color: #669999; font-size:13pt; font-family: 'Century Schoolbook'"><A href="javascript:document.ff.submit();" style="text-decoration: none">Просмотр</A></SPAN>

</TD>

</TR>

<TR>

<TD><BR/>

<TABLE align="center" width="550">

<TR height="50px" valign="top">

<TD style="width: 163px"><SPAN>

<TD>

<select name="Genre" style="width: 350px">

<option value="0" selected="selected">Выбор жанра...</option>

<xsl:for-each select="Bookstore/Genre">

<option>

<xsl:attribute name="value">

<xsl:value-of select="@ID"/>

</xsl:attribute>

<xsl:value-of select="@name"/>

</option>

</xsl:for-each>

</select>

</TD>

</TR>

</TABLE>

</TD>

</TR>

</TABLE>

</form>

</BODY>

</HTML>

</xsl:template>

</xsl:stylesheet>

. Листинг кода файла «Browse.xsl»:

<?xml version="1.0" encoding="windows-1251" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="#"justify"><xsl:template match="/">

<HTML xmlns="#"justify"><HEAD>

<TITLE>Магазин книг</TITLE>

<LINK href="images/style.css" rel="stylesheet" type="text/css"/>

</HEAD>

<BODY style="font-size: 12pt">

<TABLE>

<TR>

<TD width="100%">

<SPAN>

<BR/>

<HR>

</TD>

</TR>

<TR>

<TD style="height: 17px; text-align: right;" width="100%">

<SPAN style="color: #669999; font-size:13pt; font-family: 'Century Schoolbook'">

<A href="newfile.xml" style="text-decoration: none">Выбор</A> &#160;</SPAN>

<SPAN style="color: #ff0000; font-size:13pt; font-family: 'Century Schoolbook'">Просмотр</SPAN>

</TD>

</TR>

<TR>

<TD><BR/>

<TABLE width="500" align="center">

<TR>

<TD width="30%"><SPAN>

<TD width="40%" align="center"><SPAN>

<TD width="10%" align="center"><SPAN>

<TD width="20%" align="center"><SPAN>

</TR>

</TABLE>

<TABLE width="500" align="center">

<TR>

<TD width="30%"><SPAN>

<TD width="40%" align="center"><SPAN>

<TD width="10%" align="center"><SPAN>

<TD width="20%" align="center"><SPAN>

</TR>

</TABLE>

<xsl:for-each select="Books/Books/Books/Genre">

<TD width="30%"><SPAN>

<TD width="40%" ><SPAN>

<TD width="10%" ><SPAN>

<TD width="20%" ><SPAN>

</xsl:for-each>

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

</xsl:template>

</xsl:stylesheet>


.2 Программирование серверных сценариев


На данном этапе работы была применена «технология PHP и СУБД MySQL». Были созданы следующие файлы:

. «Index.php»:

<?php

$def_charset = "Content-Type: text/html; charset=utf-8";($def_charset);

$link = @mysql_connect("localhost", "root") or die("Невозможно соединиться с сервером");

$db=@mysql_select_db("Вookstore") or die("Нет такой базы данных");

@mysql_query("SET SESSION character_set_results = cp1251;");

@mysql_query("SET SESSION Character_set_client = cp1251;");

@mysql_query("SET SESSION Character_set_results = cp1251;");

@mysql_query("SET SESSION Collation_connection = cp1251_general_ci;");

@mysql_query("SET SESSION Character_set_connection = cp1251;");

$g_query="select `ID`, `name` from `Genre`";createXMLElem($dom, $parent, $row, $name)

{

$elem = $dom->createElement($name);

$elem = $parent->appendChild($elem);($row as $fieldname => $fieldvalue)

{

$val = iconv('windows-1251', 'utf-8', $fieldvalue);

$elem->setAttribute($fieldname,$val);

}$elem;

}

$xml = new DOMDocument('1.0');

$root = $xml->createElement('Вookstore');

$root = $xml->appendChild($root);

$g=mysql_query($g_query);($g_row = mysql_fetch_assoc($g))

{

$g_elem = createXMLElem($xml, $root, $g_row, 'Genre');

}$xml->save("newfile.xml");

?>

При проверке работоспособности созданного PHP-сценария результат, представленный в файле, имел следующий вид:

<Вookstore>

<Genre ID="Приключения" name="приключения">

</Genre>

<Genre ID="Детектив" name="детектив">

</Genre>

<Genre ID="Роман" name="любовный роман">

</Genre>

<Genre ID="Мемуары" name="биография и мемуары">

</Genre>

</Вookstore>

. «Browse.php»:

<?php

$def_charset = "Content-Type: text/html; charset=utf-8";($def_charset);

$link = @mysql_connect("localhost", "root") or die("Невозможно соединиться с сервером");

$db=@mysql_select_db("Вookstore") or die("Нет такой базы данных");

@mysql_query("SET SESSION character_set_results = cp1251;");

@mysql_query("SET SESSION Character_set_client = cp1251;");

@mysql_query("SET SESSION Character_set_results = cp1251;");

@mysql_query("SET SESSION Collation_connection = cp1251_general_ci;");

@mysql_query("SET SESSION Character_set_connection = cp1251;");createXMLElem($dom, $parent, $row, $name)

{

$elem = $dom->createElement($name);

$elem = $parent->appendChild($elem);($row as $fieldname => $fieldvalue)

{

$val = iconv('windows-1251', 'utf-8', $fieldvalue);

$elem->setAttribute($fieldname,$val);

}$elem;

}

$g = $_POST['g'];

$g_query="SELECT `ID`, `name` FROM `Genre` where `ID`=".$g;

$b_query="SELECT `fio`, `name`, `price`, `genre` FROM `Books`";

$xml = new DOMDocument('1.0');

$root = $xml->createElement('Вookstore');

$root = $xml->appendChild($root);

$g=mysql_query($g_query);($g_row = mysql_fetch_assoc($g))

{

$g_elem = createXMLElem($xml, $root, $g_row, 'Genre');

$g1 = $g_row['ID'];

$b=mysql_query($b_query);($b_row = mysql_fetch_assoc($b))

{

$g2 = $s_row['genre'];($g1==$g2)

{

$b_elem = createXMLElem($xml, $g_elem, $b_row, 'Books');

}

}

}$xml->save("file.xml");

?>

При проверке работоспособности созданного PHP-сценария результат, представленный в файле, имел следующий вид:

<Books>

<Genre ID="Приключения" >

<Books fio="Марк Твен" name="Приключения Гекльберри Финна" price="$5.49" />

<Books fio="Майкл Морпупго" name="Боевой конь" price="$6.10" />

</Genre>

<Genre ID="Детектив" >

<Books fio="Натаниэль Готорн" name="Мраморный фавн" price="$10.95" />

</Genre>

<Genre ID="Роман" >

<Books fio="Сесилия Ахерн" name="Время моей жизни" price="$5.00" />

</Genre>

<Genre ID="Мемуары" >

<Books fio="Шифф Стейси" name="Клеопатра" price="$6.10" />

</Genre>

</Books>


2.3 Результаты работы Web-приложения


Рис. 1. Web-приложение «Книжный магазин»

Рис. 2. Пример запроса 1


Рис. 3. Результаты запроса 1


Рис. 4. Пример запроса 2


Рис. 5. Результаты запроса 2


Заключение

web приложение программирование

Выполнение расчетно-графической работы было осуществлено в два этапа: 1) программирование XSL-таблиц стилей для генерации страниц Web-приложения; 2) программирование серверных сценариев для получения XML-данных из базы данных «Вookstore» и применения к ним стилей XSL-трансформации.

В итоге нами было разработано Web-приложение «Книжный магазин», состоящее из двух Web-страниц. На первой странице пользователь должен выбирать жанр произведений из раскрывающегося списка (рис. 1, 2, 4). Передача выбранных пользователем параметров на сервер выполняется нажатием на ссылку «Просмотр». В результате выполняется переход на страницу, где отображается информация о книгах выбранного жанра (рис. 3, 5). Результаты работы Web-приложения представлены в виде скриншотов.

Таким образом, нами были закреплены навыки XSL-трансформации XML-данных в Web-приложениях.


Приложение


SQL-код для создания БД «Магазин книг» («Вookstore»)


CREATE DATABASE `Вookstore` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;TABLE `Genre` (

`ID` VARCHAR( 15) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL ,

`name` VARCHAR( 27 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL ,KEY ( `ID` )

) ENGINE = MYISAM ;TABLE `Books` (

`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`fio` VARCHAR( 27 ) NOT NULL ,

`name` VARCHAR( 60 ) NOT NULL ,

`price` VARCHAR( 10 ) NOT NULL ,

`genre` VARCHAR( 15 ) NOT NULL ,KEY ( `Genre` ) REFERENCES Genre( `ID` )

) ENGINE = MYISAM CHARACTER SET cp1251 COLLATE cp1251_general_ciINTO `Genre` ( `ID` , `name` )

VALUES (

'Приключения', 'приключения'

), (

'Детектив', 'детектив'

);

INSERT INTO `Genre` ( `ID` , `name` )

VALUES (

'Роман', 'любовный роман'

), (

'Мемуары', 'биография и мемуары'

);INTO `Books` ( `ID` , `fio` , `name`, `price`, `genre` )

VALUES (, 'Марк Твен', 'Приключения Гекльберри Финна', '$5.49', 'Приключения'

), (, 'Сесилия Ахерн', 'Время моей жизни', '$5.00', 'Роман'

);INTO `Books` ( `ID` , `fio` , `name`, `price`, `genre` )(, 'Шифф Стейси', 'Клеопатра', '$6.10', 'Мемуары'

), (, 'Натаниэль Готорн', 'Мраморный фавн', '$10.95', 'Детектив'

);INTO `Books` ( `ID` , `fio` , `name`, `price`, `genre` )(, 'Майкл Морпупго', 'Боевой конь', '$6.10', 'Приключения'

);


Содержание Введение . Описание предметной области . Разработка Web-приложения «Магазин книг» .1 Программирование XSL-таблиц стилей

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ