Разработка 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'">Выбор  </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>  </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', 'Приключения'
);
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Диплом
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ