Информационные технологии в управлении качеством и защита информации

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

 Тульский  государственный университет

Кафедра "Автоматизированные станочные системы" 
 
 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по курсу:

«Информационные технологии в управлении качеством и защита информации»

на  тему:

Разработка Web – интерфейса для БД

«Кинотеатр» 

Задание №6 
 
 
 

Выполнил студент  группы 631861 /__________________/       Елманов К.В. 

Проверил  доц.                                 /__________________/        Зайков С.Г. 
 
 

Тула  – 2009

      Содержание 

Введение 3
Разработка Web – интерфейса 4
Поиск информации о цене билета 5
Добавление данных о покупке билета 13
Разработка  главной страницы 21
Заключение 23
Список  используемой литературы 24

Введение

 

      Практически любая задача, решающая проблему получения  данных от клиента, связана с построением  интерфейса. Наиболее интересным является построение интерфейсов к различным  базам данных, доступ к SQL-серверу, получение информации от периферийных устройств, создание клиентских рабочих мест. Все это возможно посредством CGI(Common Gateway Interface). Common Gateway Interface (CGI) является стандартом интерфейса внешней прикладной программы с WWW сервером.

      Предметную  область - Кинотеатр

      Произведем  поиск цены билета по названию фильма . В результате поиска получим необходимую информацию: цена билета, № сеанса, № ряда и места.

     Добавлять будем данные о покупке билета. Вводимыми данными будут:  № заказа, № ряда и места.

      В данной курсовой работе разработаем  Web – интерфейс для БД «Кинотеатр». Для этого создадим 2 CGI-модуля, один из которых будут производить добавление данных в таблицы, а другой – осуществлять поиск необходимых данных. 
 
 
 
 
 
 
 
 

Разработка  Web – интерфейса

 

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

      В данной курсовой работе разработаем Web – интерфейс, с помощью которого будем осуществлять поиск информации о цене билета по названию фильма, а также добавлять данные о покупке билета. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Поиск информации о приказе 

     Поиск информации о цене билета будем осуществлять по названию фильма . Критерии поиска будут следующие:

    • необходимо показать всю имеющуюся информацию  (в этом случае отмечаем «Отображать все»);
    • необходимо показать конкретные данные (в этом случае отмечаем нужные нам поля, а именно : цена билета, № сеанса,   № ряда и места ).
 

      Эскиз web-страницы на поиск данных о приказе: 

 
 
 
 

      Написание SQL-запроса 

      Поиск необходимой информации будет производиться в таблице «Приказ» (prikaz) при помощи следующего SQL-запроса:

SELECT "Название  фильма", "Цена билета", "№ сеанса", "№ ряда и места" FROM "Билет" WHERE "Название фильма"='Форсаж 4'.

SELECT "№  приказа" FROM "Приказ" WHERE "№  приказа"='69-д'

      Переменной  частью данного SQL-запроса является название фильма, а именно: 'Форсаж 4'. 

Используемые переменные и элементы управления

Имя переменной Имя элемента управления на Web-странице Назначение переменной Тип хранимых данных Ограничения
film film Название фильма Текстовый (строковый) Не пустая строка
cena cena Показывать  поле «Цена билета» «, \"Цена билета\"», если флажок отмечен и пустая строка, если нет  
seans seans Показывать  поле «№ сеанса» «, \"№  сеанса\"», если флажок отмечен и пустая строка, если нет  
mesto mesto Показывать  поле «№ ряда и меств» «, \"№  ряда и места\"», если флажок отмечен и пустая строка, если нет  
all all Показывать  все поля Переменные 

cena= «, \"Цена билета\"»

seans= «, \"№ сеанса\"»

mesto= «, \"№ ряда и места\"»

если флажок отмечен и пустая строка, если нет

 
 

Дополнительные  переменные

Имя переменной Назначение переменной Тип хранимых данных
Data Хранит результат  выполнения SQL-запроса строковый

Написание SQL-запроса с переменными:

 

select \"Название  фильма\" cena seans mesto from  \"Билет\" where \"Название фильма\" =(\'film\');"

Изменение текста SQL-запроса для использования в CGI-модуле на языке Tcl:

 

select \"Название  фильма\" $cena $seans $mesto from  \"Билет\" where \"Название  фильма\" =(\'$film\');" 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Блок-схема  программы:

 
 
 
 
 
 
 
 
 
 
 
 
 

Разработанная web-страница:

Текст программы на поиск  данных по номеру приказа: 

#!/usr/local/bin/tclsh8.4

#

# пример с сообщением  о том, что ничего не найдено

#

package require cgi

cgi_eval {

cgi_debug -on

title "Заголовок  страницы"

cgi_meta http-equiv=content-type {content=text/html;charset=utf-8}

body {

cgi_input

if [catch {cgi_import all}] { ; # галочку все НЕ поставили

   if [catch {cgi_import cena}] {set cena ""} else {set cena ", \"Цена билета\""}

   if [catch {cgi_import seans}] {set seans ""} else  {set seans ", \"№ сеанса\""}

   if [catch {cgi_import mesto}] {set mesto ""} else  {set mesto ", \"№  ряда и места\""}

     

} else {set cena ", \"Цена  билета\"" ; set seans ", \"№ сеанса\"" ; set mesto ", \"№ ряда и места\""}

if [string is space [cgi_import film]] {

      puts "А что будем искать-то?"

} else {

      set film [string trim $film] ; # удаление пробелов

      set data [exec /usr/local/bin/psql elmanov_kv elmanov_kv -c "select \"Название фильма\" $cena $seans $mesto from  \"Билет\" where \"Название фильма\" =(\'$film\');" -P format=html -P border=2]

      if [string match "*(0 rows)*" $data] { ; # запрос вернул строку (0 rows)

            puts "Для \"$film\" ничего не найдено"

      } else {

            puts $data ; # покажем, что  удалось найти

      }

}

} ; # body

}

Результаты  поиска:

      Найдем  всю информацию о фильме Форсаж 4 

Добавление  данных о покупке билета в заказ

     Постановка  задачи: Добавление данных о покупке билета в заказ

     Для регистрации необходимо:

  • № заказа
  • № ряда и места

      Эскиз web-страницы на добавление нового участника: 

 

      Написание SQL-запроса

      Добавление  данных будет производиться при помощи следующего SQL-запроса:

INSERT INTO "Заказ" VALUES ('10','7-3')  
 
 

Используемые  переменные и элементы управления

Имя элемента управления Имя переменной в программе Имя таблицы Имя поля Назначения Тип данных Ограничение
zakaz zakaz Заказ "№ заказа" Добавить поле "№ заказа" Числовой, Не пустая строка, число
mesto mesto Заказ "№ ряда  и места" Добавить поле "№ ряда и места" Текстовый Не пустая строка
 

Дополнительные переменные

Имя переменной Тип переменной Назначение Возможные значения
no_error Логический Наличие ошибочно введенных исходных данных 0 — отсутствие  ошибок

1 — наличие  ошибок

Написание SQL-запроса с переменными:

 

INSERT INTO \"Заказ\" VALUES (\'zakaz\', '\mesto\')

Изменение текста SQL-запроса для использования в CGI-модуле на языке Tcl:

 

INSERT INTO \"Заказ\" VALUES (\'$zakaz\', \'$mesto\')

Первичный ключ

Первичный ключ таблицы "Заказ" - поле "№ ряда и места"

Полю "№ ряда и места" присваивается имя  переменной mesto 

       Чтобы данные можно было добавить, нужно убедиться, что такого значения первичного ключа нет в таблице.

     Для каждой таблицы, в которую добавляются  данные, выписываются поля, образующие первичный ключ и составляется SQL-запрос видa:

SELECT * FROM "Заказ" WHERE "№ ряда и места"='1-1' 

 или

SELECT count(*) FROM "Заказ" WHERE "№ ряда и  места"='1-1'

Написание SQL-запроса с переменными:

SELECT * FROM "Заказ" WHERE "№ ряда и места"='mesto'

Изменение текста SQL-запроса для использования в CGI-модуле на языке Tcl:

SELECT * FROM \"Заказ\" WHERE \"№ ряда и места\"=\'$mesto\' 

Внешние ключи

Внешнего  ключа для поля "№ ряда и места" не будет. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Блок-схема  программы: 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Разработанная web-страница:

 

Текст программы на добавление данных : 

#!/usr/local/bin/tclsh8.4

#

package require cgi

cgi_eval {

cgi_debug -on

title " "

cgi_meta http-equiv=content-type {content=text/html;charset=utf-8}

body {

set no_error 1 ;   

cgi_input

if [string is space [cgi_import zakaz]] {set no_error 0 ; puts "Не указан заказ"

} else {if [string is digit $zakaz] {} else {puts "Номер заказа это число[nl]";set no_error 0 }} ;br;br

if [string is space [cgi_import mesto]] {set no_error 0 ; puts "Не указано место"} ;br;br                                                                                                     

if $no_error {                                                                                                                                         

      if [string length [exec /usr/local/bin/psql elmanov_kv elmanov_kv -t -c "SELECT * FROM \"Заказ\" WHERE \"№ заказа\"=\'$zakaz\'"]] {

            puts "Данные не  могут быть добавлены";set no_error 0                                                             

            }                                                                                                                                                                                                                               

}              

if $no_error {                                                                                        

      exec /usr/local/bin/psql elmanov_kv elmanov_kv  -c "INSERT INTO \"Заказ\" VALUES (\'$zakaz\', \'$mesto\');"

      put "Данные добавлены"                                                                        

} else {put "Неверно  заданы исходные данные"}  

;br;br

put [cgi_url "ВЕРНУТЬСЯ  НА ГЛАВНУЮ СТРАНИЦУ" http://www.acc.tula.ru/~631861/Yelmanov1/1str.htm];br ;br

put [cgi_url "ввести  другие данные" http://www.acc.tula.ru/~631861/Yelmanov1/dobavlenie.htm];br ;br                     

put "Разработал  Елманов К.В., группа 631861"

} ; # body

} 
 
 
 

if [string is space [cgi_import inv]] {set no_error 0 ;puts "Данные не будут  добавлены[nl]Не указан инвентарный  номер[nl]"  

} else {if [string is digit $inv] {} else {puts "Инвентарный номер это число[nl]";set no_error 0 }}     

Результаты  добавления:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      Разработка  главной страницы 

      Для наиболее удобного способа работы с  CGI-модулями создадим главную страницу, на которой будут располагаться ссылки на созданные модули.

Разработанная web-страница:

 
 
 
 
 
 

Заключение

 

       В курсовой работе был разработан Web-интерфейс для БД «Кинотеатр». С помощью созданных страниц пользователь можно добавлять данные о покупке билета в уже существующую базу данных, а также осуществлять поиск информации о цене билета. Поиск необходимой информации происходит по названию фильма. Пользователь может получить доступ к интересующей его информации, указав либо конкретные параметры, либо запросить всю имеющуюся информацию.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      Список  используемой литературы

  1. Кириллов  В.В. “Основы проектирования реляционных  баз данных”. Учебное пособие. - СПб.: ИТМО, 1994. - 90 с.
  2. Питер Роб, Карлос Корнел “Системы баз данных: проектирование, реализация и управление”. // С-Пб, “БХВ-Петербург”, 2004 г.
  3. Кандзюба С.П., Громов В.Н. “Базы данных и приложения”. СПб.: “ДиаСофтЮП”, 2002. - 576с.
  4. Курс лекций по дисциплине “Информационное обеспечение, базы данных”.
  5. Курс лекций по дисциплине “Информационные технологии в управлении качеством и защита информации”.
  6. Документация по PostgreSQL.
Информационные технологии в управлении качеством и защита информации