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

Создание XSL-спецификации трансформации "Default.xsl" и "Browse.xsl", листинги программного кода данных файлов. Программирование серверных сценариев для получения XML-данных из базы данных "Вookstore" и применения к ним стилей XSL-трансформации.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.02.2012
Размер файла 244,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

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

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

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

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

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

Заключение

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<HTML xmlns="http://www.w3.org/1999/xhtml" >

<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 class="pageborder" border="0" width="600">

<TR>

<TD width="100%">

<SPAN class="text1">Магазин книг</SPAN>

<BR/>

<HR class="line"/><HR class="line" width="70%" align="left"/>

</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 class="text3">Жанр</SPAN></TD>

<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>

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

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

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<HTML xmlns="http://www.w3.org/1999/xhtml" >

<HEAD>

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

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

</HEAD>

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

<TABLE class="pageborder" border="0" width="600">

<TR>

<TD width="100%">

<SPAN class="text1">Магазин книг</SPAN>

<BR/>

<HR class="line"/><HR class="line" width="70%" align="left"/>

</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" class="headborder">

<TR>

<TD width="30%"><SPAN class="headtext">Автор</SPAN></TD>

<TD width="40%" align="center"><SPAN class="headtext">Название</SPAN></TD>

<TD width="10%" align="center"><SPAN class="headtext">Цена</SPAN></TD>

<TD width="20%" align="center"><SPAN class="headtext">Жанр</SPAN></TD>

</TR>

</TABLE>

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

<TR>

<TD width="30%"><SPAN class="tabletext"></SPAN></TD>

<TD width="40%" align="center"><SPAN class="tabletext"></SPAN></TD>

<TD width="10%" align="center"><SPAN class="tabletext"></SPAN></TD>

<TD width="20%" align="center"><SPAN class="tabletext"></SPAN></TD>

</TR>

</TABLE>

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

<TD width="30%"><SPAN class="tabletext"><xsl:value-of select="../@fio"/></SPAN></TD>

<TD width="40%" ><SPAN class="tabletext"><xsl:value-of select="@name"/></SPAN></TD>

<TD width="10%" ><SPAN class="tabletext"><xsl:value-of select="@price"/></SPAN></TD>

<TD width="20%" ><SPAN class="tabletext"><xsl:value-of select="@genre"/></SPAN></TD>

</xsl:for-each>

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

</xsl:template>

</xsl:stylesheet>

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

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

1. «Index.php»:

<?php

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

header($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`";

function createXMLElem($dom, $parent, $row, $name)

{

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

$elem = $parent->appendChild($elem);

foreach ($row as $fieldname => $fieldvalue)

{

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

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

}

return $elem;

}

$xml = new DOMDocument('1.0');

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

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

$g=mysql_query($g_query);

while($g_row = mysql_fetch_assoc($g))

{

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

}

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

?>

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

<Вookstore>

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

</Genre>

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

</Genre>

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

</Genre>

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

</Genre>

</Вookstore>

2. «Browse.php»:

<?php

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

header($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;");

function createXMLElem($dom, $parent, $row, $name)

{

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

$elem = $parent->appendChild($elem);

foreach ($row as $fieldname => $fieldvalue)

{

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

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

}

return $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);

while($g_row = mysql_fetch_assoc($g))

{

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

$g1 = $g_row['ID'];

$b=mysql_query($b_query);

while($b_row = mysql_fetch_assoc($b))

{

$g2 = $s_row['genre'];

if($g1==$g2)

{

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

}

}

}

echo $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;

CREATE 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 ,

PRIMARY KEY ( `ID` )

) ENGINE = MYISAM ;

CREATE 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 ,

FOREIGN KEY ( `Genre` ) REFERENCES Genre( `ID` )

) ENGINE = MYISAM CHARACTER SET cp1251 COLLATE cp1251_general_ci

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

VALUES (

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

), (

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

);

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

VALUES (

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

), (

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

);

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

VALUES (

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

), (

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

);

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

VALUES (

NULL , 'Шифф Стейси', 'Клеопатра', '$6.10', 'Мемуары'

), (

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

);

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

VALUES (

NULL , 'Майкл Морпупго', 'Боевой конь', '$6.10', 'Приключения'

);

Размещено на Allbest.ru


Подобные документы

  • Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.

    курсовая работа [1,6 M], добавлен 08.02.2013

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

    курсовая работа [1,1 M], добавлен 13.06.2014

  • Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.

    курсовая работа [1,8 M], добавлен 04.02.2013

  • Базы данных как совокупность структур, предназначенных для хранения больших объемов информации и программных модулей. Анализ способов создания базы данных для учета книг личной библиотеки, особенности использования языка программирования C++Builder.

    курсовая работа [8,1 M], добавлен 10.01.2014

  • Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.

    курсовая работа [7,8 M], добавлен 13.02.2023

  • Разработка информационной системы "Салон портьер" для автоматизации деятельности менеджера фирмы, занимающейся пошивом портьер на заказ. Создание и обоснование проекта базы данных. Создание запросов, форм, отчетов. Тестирование программного приложения.

    курсовая работа [4,6 M], добавлен 07.02.2016

  • Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.

    курсовая работа [3,7 M], добавлен 05.04.2012

  • Концептуальное и инфологическое проектирование базы данных в системе управления базами данных Microsoft Access. Физическое проектирование базы данных "Магазин спорттоваров". Тестирование и отладка базы данных, составление руководства пользователя.

    курсовая работа [6,7 M], добавлен 22.11.2022

  • Разработка базы данных книжного магазина в среде программирования Delphi. Создание таблиц и их заполнение. Требования к составу и параметрам технических средств. База данных как набор файлов, содержащих информацию. Этапы создания приложения в Delphi.

    курсовая работа [803,6 K], добавлен 04.11.2012

  • Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.

    курсовая работа [2,1 M], добавлен 17.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.