Программная реализация предметной области "Ремонт часов"
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение высшего профессионального образования «Чувашский государственный университет им. И.Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра «Информационно-вычислительных систем»
Дисциплина «Базы данных»
Пояснительная записка
к курсовой работе
на тему:
«Ремонт часов»
Выполнил: студент ИВТ 13-06
Димитриев А. А
Проверил: Буланкина Е.Ю
Чебоксары – 2009 г.
Задание
Необходимо выполнить анализ предметной области «Ремонт часов», провести ее нормализацию и реализовать программно. При этом обязательно использование СУБД MySQL, языка HTML, технологии PHP и ADO и на выбор скриптовые языки VBScript или JavaScript.
Анализ. Предметная область
Нормализация базы данных
Дано описание предметной области:
Ремонт часов.
Автоматизировать систему заказа часовой мастерской. О заказе известно: марка часов, клиент (ФИО, адрес, телефон), мастера, которые выполняют заказ, описание услуг и запасных частей заказа. Необходимо иметь информацию о расценках мастерской. Если клиент приносит сразу несколько часов в ремонт, то они оформляются разными заказами.
Описание функций базы данных:
Система должна хранить данные о мастерах: код мастера, ФИО мастера.
Система должна хранить данные об услугах, предоставляемые мастерской: код услуги, вид услуги, стоимость услуги;
Система должна хранить данные о запасных частях: код детали, вид детали, стоимость.
Перечень сущностей БД:
Мастера;
Клиенты;
Услуги;
Запасные части;
Заказ;
Описание сущностей БД:
1) Мастера. Это сущность. О нам известно код мастера, ФИО мастера.
Клиенты. Это сущность. О клиенте нам известно код клиента, ФИО клиента, адрес и телефон клиента.
Услуги. Это сущность. Об услуге нам известно код услуги, наименование услуги, стоимость.
Запасные Части. Это сущность. О запасных частях нам известно код, наименование и стоимость детали.
Заказ. Это сущность. О заказе нам известно марка часов, клиент (ФИО, адрес, телефон), мастера, которые выполняют заказ, описание услуг и запасных частей заказа.
Перечень и описание атрибутов БД
№
Имя атрибута
Описание атрибута
1
Код Мастера
Уникальный код мастера
2
ФИО Мастера
Фамилия, Имя, Отчество мастера
3
Код Клиента
Уникальный код клиента
4
ФИО Клиента
Фамилия, Имя, Отчество клиента
5
Тел Клиента
Телефон клиента
6
Адрес Клиента
Адрес клиента
7
Код Услуги
Уникальный код услуги
8
Наимен Услуги
Наименование услуги
9
Стоимость Услуги
Стоимость услуги
10
Код Зап Части
Уникальный код запасной части
11
Наимен Зап Части
Наименование запасной части
12
Стоимость Зап Части
Стоимость
13
Код Заказа
Уникальный код заказа
14
Код Клиента
Уникальный код клиента
15
Марка Часов
Марка часов
Проектирование. Нормализация базы данных. Схема данных
Нормализация базы данных с использованием модели ER-диаграмм
Построение ER-диаграммы
Мастера;
Клиенты;
Услуги;
Запасные части;
Заказ;
//--------------------------Шаг 1:-----------------------------------------------------------------------------------------------------------------------------
Определим модальность связи.
«Мастер не обязательно выполняет Заказ» (модальность связи со стороны сущности Мастер «не обязательно»).
«Заказ обязательно выполняется Мастером» (модальность связи со стороны сущности Заказ «обязательно»).
Определим кардинальность связи.
«Один Мастер может выполнять несколько Заказов”»(кардинальность со стороны сущности Заказ «Много»).
«Над одним Заказом могут работать несколько Мастеров» (кардинальность со стороны сущности Мастер «Много»).
//-------------------------------------------------------------------------------------------
---------------------------------------------------------------------
//--------------------------Шаг 2:--------------------------------------------------------
---------------------------------------------------------------------
Если клиент приносит сразу несколько часов в ремонт, то они оформляются разными заказами.
Определим модальность связи.
Клиент обязательно оформляет Заказ (модальность связи со стороны сущности Клиент обязательно).
«У Заказа обязательно имеется Клиент» (модальность связи со стороны сущности Заказ «обязательно»).
Определим кардинальность связи.
«Клиент может принести сразу несколько часов, то они оформляются разными Заказами» (кардинальность со стороны сущности Заказ «Много»).
«Один Заказ оформляется только на одного Клиента» (кардинальность со стороны сущности Клиент «Один»).
//-------------------------------------------------------------------------------------------
---------------------------------------------------------------------
//--------------------------Шаг 3:--------------------------------------------------------
---------------------------------------------------------------------
О заказе известно: марка часов, клиент(ФИО, адрес, телефон), мастера, которые выполняют заказ, описание услуг и запасных частей заказа.
Определим модальность связи.
«В Заказе обязательно присутствуют Услуги» (модальность связи со стороны сущности Заказ «обязательно»).
«Услуга не обязательно присутствует в Заказе» (модальность связи со стороны сущности Услуги «не обязательно»).
Определим кардинальность связи.
«В один Заказ может входить несколько видов Услуг» (кардинальность со стороны сущности Услуги «Много»).
«Одни и те же Услуги могут входить в разные Заказы» (кардинальность со стороны сущности Заказ «Много»).
//-------------------------------------------------------------------------------------------
---------------------------------------------------------------------
//--------------------------Шаг 4:--------------------------------------------------------
---------------------------------------------------------------------
О заказе известно: марка часов, клиент(ФИО, адрес, телефон), мастера, которые выполняют заказ, описание услуг и запасных частей заказа.
Определим модальность связи.
"В Заказе не обязательно имеются Запасные части" (модальность связи со стороны сущности Заказ "не обязательно").
"Запасные части не обязательно имеются в Заказе" (модальность связи со стороны сущности Запасные части "не обязательно").
Определим кардинальность связи.
«В один Заказ могут входить несколько Запасных частей» (кардинальность со стороны сущности Запасные части «Много»).
«Одни те же виды Деталей(запасные части) могут входить в разные Заказы» (кардинальность со стороны сущности Заказ "Много").
//-------------------------------------------------------------------------------------------
------------------------------------------
Окончательная диаграмма имеет вид:
Отношения после нормализации
Клиент (Код Клиента, ФИО Клиента, Адрес Клиента, Тел Клиента);
Мастер (Код Мастера, ФИО Мастера);
Услуги (Код Услуги, Вид Услуги, Стоимость);
Зап Части (Код Зап Части, Наимен Зап Части, Стоимость);
Заказ (Код Заказа, Код Клиента, Марка Часов);
Заказ Мастер (Код Заказа, Код Мастера);
Заказ Услуги (Код Заказа, Код Услуги);
Заказ Зап Части (Код Заказа, Код Зап Части);
Перечень и описание таблиц и их полей (с указанием типов данных и ограничений) в сводной таблице
Таблица 2. Сводная таблица имен отношений, атрибутов, таблиц, полей и типов данных базы данных «Ремонт Часов» после нормализации методом ER-диаграмм
Имя отношения (таблицы)
Имя атрибута
Имя поля
Тип данных
Описание
Клиент
КодКлиента
KodKlienta
bigint(3)+ *
Уникальный код клиента
ФИОКлиента
FIOKlienta
varchar(45)
ФИО клиента
АдресКлиента
AdresKlienta
varchar(45)
Адрес клиента
ТелКлиента
TelKlienta
bigint(9)
Телефон клиента
Мастера
КодМастера
KodMastera
bigint(3)+ *
Уникальный код мастера
ФИОМастера
FIOMastera
varchar(45)
ФИО мастера
Услуги
КодУслуги
KodService
bigint(3)+*
Уникальный код услуги
ВидУслуги
NameService
varchar(45)
Вид услуги
Стоимость
CenaService
int(9)
Стоимость услуги
Запасные части
КодЗапЧасти
KodZapChasti
bigint(3)+ *
Уникальный код детали
ВидЗапЧасти
NameZapChasti
varchar(45)
Вид детали
Стоимость
CenaZapChasti
int(9)
Стоимость детали
Заказ
КодЗаказа
KodZakaza
bigint(3)+ *
Уникальный код заказа
КодКлиента
KodKlienta
bigint(3)
Код клиента
МаркаЧасов
MarkaChasov
varchar(45)
Марка часов клиента
ЗаказМастер
КодЗаказа
KodZakaza
bigint(3)
Уникальный код заказа
КодМастера
KodMastera
bigint(3)
Уникальный код мастера
ЗаказУслуги
КодЗаказа
KodZakaza
bigint(3)
Уникальный код заказа
КодУслуги
KodService
bigint(3)
Уникальный код суслуги
ЗаказЗапЧасти
КодЗаказа
KodZakaza
bigint(3)
Уникальный код заказа
КодЗапЧасти
KodZapChasti
bigint(3)
Уникальный код детали
Программная часть. Руководство программиста
В данной выполненной курсовой работе по дисциплине «Базы данных» был спроектирован сайт «Ремонт часов».
Были использованы такие языки программирования сайтов, как, PHP, HTML, JavaScript, MySQL.
В разработанном приложении использовались функции:
1) mysql_connect - Открывает соединение с сервером MySQL.
Описание: resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] ). Возвращает указатель на соединение с MySQL в случае успешного выполнения, или FALSE при неудаче.
Пример использования mysql_connect()
2) mysql_select_db - Выбирает базу данных MySQL.
Описание: bool mysql_select_db ( string database_name [, resource link_identifier] )
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Пример использования mysql_select_db()
php $lnk = mysql_connect('localhost', 'mysql_user', 'mysql_password') or die ('Not connected : ' . mysql_error()); // сделать foo текущей базой данных mysql_select_db('foo', $lnk) or die ('Can\'t use foo : ' . mysql_error()); ?>
3) mysql_query - Посылает запрос MySQL. mysql_query() посылает запрос активной базе данных сервера, на который ссылается переданный указатель.
Пример: mysql_query("select NazvanSudna from Suda", $conn);
4) mysql_fetch_array - Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.
Описание: array mysql_fetch_array ( resource result [, int result_type] )
Возвращает массив с обработанным рядом результата запроса, или FALSE, если рядов больше нет.
Пример: $row11 = mysql_fetch_array($query11);
Во многих файлах применялась функция IsInputEmpty(), определяющая заполнены ли поля для ввода.
Тестирование. Результаты тестирования
При разработке сайта использовалась проверка на заполненные поля.
При помощи Ява Скрипта:
Пока поле не будет заполнено программа дальше работать не будет.
Сопровождение. Руководство пользователя
Главная страница сайта index1.htm
1) Главная страница содержит 4 гиперссылок: основная из них «Заказ» адресуется на страницу addzakaz.php.
При оформлении заказа нужно заполнить шесть полей: Фамилия Клиента, Имя Клиента, Отчество Клиента, Телефон Клиента, Адрес Клиента, Марка часов; а также нужно выбрать Мастеров для выполнения заказа, Услуги и Запасные части из имеющегося списка. При занесении новой записи данные поступают в таблицы: Klient, Zakaz, ZakazMaster, ZakazService, ZakazZapChasti.
Функция «услуги»
Позволяет просмотреть предоставляемые услуги
Функция «О нас»
Позволяет просмотреть информацию о сервисном центре.
4) Функция “Добавить/удалить” позволяет добавить в базу данных нового мастера, услуги, запасные части или удалить из списка. После выбора этой функции пользователю необходимо выбрать одну из 3 ссылок.
Список использованной литературы
Колисниченко Д.Н. Самоучитель PHP 5. – Издание 2-е – СПб.:Наука и Техника, 2005.
Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5 на примерах. – СПб.: БХВ – Петербург, 2005.
Кузнецов С.Д. PHP 4.0. Руководство пользователя. – М.: Майор, 2001.
Приложение 1
Исходный текст приложения
//--------------Основная функция----------------------------------------------------
--------------------
addzakaz.php
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
[на главную | назад]
Оформление заказа
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("RemontChasov", $conn);
if($_SERVER['REQUEST_METHOD']!=='POST')
{
echo '<p><strong>Введите данные клиента:strong>p>';
echo '';
echo '
Фамилия
Имя
Отчество
Телефон
Адрес
Марка часов
';
echo '
';
}
if (isset($FKlienta) && isset ($IKlienta) && isset ($OKlienta)&& isset ($MarkaChasov)&& strlen($FKlienta)!=0 && strlen($IKlienta)!=0 && strlen($OKlienta)!=0&& strlen($MarkaChasov)!=0)
{
echo '
if($_SERVER['REQUEST_METHOD']=='POST')
{
echo '
';№ Мастер
$query7 = mysql_query("Select * from Master", $conn);
while ($row7 = mysql_fetch_array($query7))
{
echo ' ';'.$row7['KodMastera'].' '.$row7['FIOMastera'].'
}
echo ' ';
echo '
echo '';
echo '
width="300"> Услуги '; $query8 = mysql_query("Select NameService from Service", $conn); while ($row8 = mysql_fetch_array($query8)) { echo ' } echo ' echo ' Запасные части '; $query9 = mysql_query("Select NameZapChasti from ZapChasti", $conn); while ($row9 = mysql_fetch_array($query9)) { echo ' '; } echo ' echo ' '; '; ';
echo '
';
}
echo '
';
}
?>
[на главную | назад]