Автор работы: Пользователь скрыл имя, 08 Марта 2014 в 15:51, курсовая работа
Целью данного проекта является изучение базы данных, освоение реляционной модели БД, приведение таблиц БД к третьей форме нормализации, овладение способами организации и методами проектирования БД, а также технологии разработки приложений для их использования. Изучение данного материала должно сформировать общий базис знаний по организации и использованию баз данных (БД).
Задачей данной работы является проектирование и создание базы данных и разработка приложения для ее эффективного использования на примере гипотетического «Мебельного салона». Разработанная информационная система должна ускорить и облегчить работу менеджера салона по регистрации и учету заказов, способствуя сокращению временного интервала от обращения клиента в салон до заключения договора о поставке товара, а также сэкономить время на поиске информации о клиентах.
Введение………………………………………………………………………………………….3
Аналитическая часть……………………………………………………………………..5
Описание предметной области………………………………………………....5
Объект проектирования……………………………………………………...5
Информационные процессы…………………………………………………5
Требование к ИС…………………………………………………………………6
Проектирование базы данных…………………………………………………………...7
Проектирование информационной модели базы данных…………………….7
Построение логической модели базы данных…………………………………9
Построение физической модели данных……………………………………..13
Создание базы данных……...………………………………………………….17
Создание приложения для работы с базой данных…………………………………...19
Заключение……………………………………………………………………………………...31
Список литературы …………………………………………………
Таблица meb_meb.dbf для размещения данных о предоставляемом салоном товаре (мебели).
Таблица meb_proizvod.dbf для размещения данных о производителях, чей товар представлен в салоне.
Название поля (Fields name) |
Наименование поля |
Тип (Type) |
Длина |
Назначение |
N_pro |
№ производителя |
I (Long Integer) целое число |
целое |
Поле для хранения номера производителя, является ключевым, т. к. содержит уникальную идентификацию записей и служит для точного разделения значений. Каждая запись имеет свой неповторяющийся номер. |
Firma |
Фирма производитель |
A (Alpha) строковое поле |
60 |
Поле для хранения названия фирмы производителя |
R_s |
Расчетный счет производителя |
A (Alpha) строковое поле |
20 |
Поле для хранения расчетного счета производителя |
Kon_tel |
Контактный телефон производителя |
A (Alpha) строковое поле |
15 |
Поле для хранения контактного телефона производителя |
2.4. Создание базы данных
Так как создаваемая нами база данных разместится на носителях одного компьютера, то она будет локальной. Локальной базой данных считается каталог на диске, в котором хранятся файлы таблиц БД, индексов, примечаний (мемо-полей) и т.д. Для хранения одной таблицы создается отдельный файл. Такие же отдельные файлы создаются для хранения индексов таблицы и мемо-полей. Разрабатывая программу работы с базой данных, мы не можем знать, на каком диске и в каком каталоге будут находиться файлы базы данных во время ее использования. Например, пользователь может поместить базу данных в один из каталогов дисков С:, D:, E: или на сетевой диск. Поэтому возникает проблема передачи в программу информации о месте нахождения файлов базы данных.
В Delphi проблема передачи в программу информации о месте нахождения файлов базы данных решается путем использования псевдонима базы данных.
Псевдоним (Alias) - это короткое имя, поставленное в соответствие реальному, полному имени каталога базы данных. Такой псевдоним должен быть зарегистрирован в файле конфигурации конкретного компьютера при помощи утилиты BDE Administrator.
Для доступа к информации программа, обеспечивающая работу с базой данных, подключает библиотеку Borland Database Engine (BDE), которая, в свою очередь, использует конфигурационный файл, содержащий информацию обо всех зарегистрированных в системе псевдонимах.
Создадим каталог на диске Е: и назовем его «meb_salon», далее при помощи BDE Administrator создадим одноименный псевдоним и укажем ему путь "E:\meb_salon ".
Далее перейдем к созданию таблиц нашей БД. Для этого откроем компонент Delphi - Database Desktop (DBD) и для удобства дальнейшей работы в главном меню File выберем Working directory и выберем рабочим псевдонимом «meb_salon», с которым DBD будет работать по умолчанию.
Создадим четыре таблицы:
и заполним их, как описано выше.
Всем полям назначим атрибут Required (требование обязательного существования значения на момент его запоминания в БД), кроме поля N_zac, поскольку это поле имеет тип Autoincrement т.е. автоматическое заполнение при запоминании новой записи.
Далее нам необходимо определить ссылочную целостность таблиц и задать вид каскадных воздействий (отражение изменений одной записи на связанных записях в других таблицах). Для этого откроем таблицу meb_zacaz (заказы) и в режиме изменения структуры таблицы (Table \ Restructure) в списке свойств (Table Properties) выберем элемент Refrential Integrity. Затем, нажав кнопку Define, создадим ссылочную целостность.
Рис.6 Создание ссылочной целостности для поля N_cli.
Выбрав поле N_cli в списке, расположенном слева, определим его, как внешний ключ к родительской таблице meb_client справа. В поле Update rule поставим флажок у надписи Cascade (каскадное изменение и удаление подчиненных записей). То же самое проделаем с полем N_meb, присвоив ему родительскую таблицу meb_meb, далее определим ссылки у таблицы meb_meb в относительно таблицы meb_proizv по полю N_pro. Всем ссылочным определениям присвоим имена и сохраним. При создании ссылочной целостности в таблицах с внешними ключами автоматически создаются индексы по их неявному определению:
В итоге мы получили локальную базу данных для мебельного салона, состоящую из четырех связанных таблиц.
3. Создание приложения для работы с базой данных.
Для работы с созданной нами базой данных необходимо разработать приложение. Выполним задачу при помощи среды разработки Delphi.
Запустим Delphi и создадим главную форму нашего приложения Form1. Далее перейдем к инспектору объектов и в свойстве Caption введем «Мебельный салон. Учет заказов», тем самым присвоив нашей форме заголовок.
Для удобства представления данных разделим Form1 на две равные части. В левой организуем регистрацию заказов и отображение информации по клиентам салона с их поиском. Правую часть отведем под просмотр и редактирование данных о заказах, товарах и производителях.
Рис.7 Дерево объектов после размещения элементов
Разметив окно будущей программы, перейдем к созданию основных элементов. Начнем со страницы PageControl1 / «Клиенты». Открыв вкладку BDE, выберем и разместим четыре компонента Table и один Query:
Для связи компонентов Table с имеющейся базой данных meb_salon перейдем в инспектор объектов и выберем у свойства DatabaseName в выпадающем списке ранее созданный псевдоним «meb_salon». Далее в свойстве TableName определим для каждого компонента свою таблицу:
а поскольку нам необходимо реализовать поиск клиентов, то
Для отображения данных добавим из вкладки Управление данными четыре компонента DBGrid:
Для соединения компонентов Table и Query c элементами для отображения DBGrid добавим, перейдя на вкладку Доступ к данным, пять компонентов DataSourse:
Установим связь элементов DataSourse c компонентами Table и Query, присвоив в свойстве DataSet первого соответствующие значения:
Далее соединим элементы отображения DBGrid с нужными нам DataSourse:
В приложении необходимо реализовать связь между объектами (клиент > заказ > товар > производитель), т.е. чтобы при выборе клиента осуществлялся показ информации о произведенном заказе, товаре и его производителе. Для этого выполним связь между нашими таблицами.
Для отображения заказов выбранного клиента обеспечим связь отвечающего за это компонента Table2 с таблицей Table1:
Для отображения приобретенного клиентом товара обеспечим связь отвечающего за это компонента Table3 с таблицей Table2:
Для отображения производителя у приобретенного клиентом товара обеспечим связь отвечающего за это компонента Table4 с таблицей Table3:
После этого поставим свойство Active компонентов Table в значение True, активизировав тем самым соединение с базой данных.
Организовав таким образом связи, мы получим отображение отдельной информации по выбранному клиенту.
Для удобства навигации в списке клиентов, отображаемом в DBGrid, установим из вкладки Управление данными компонент DBNavigator1 и присвоим его свойству DataSourse значение DataSourse1.
Помимо навигатора добавим быстрый переход к нужному номеру клиента при помощи двух процедур SetKey, GotoKey и индексированного поля N_cli. Для этого установим элемент для ввода номера клиента Edit (назовем его Edit_Go) и, создав кнопку Button (назовем ее Go_N_cli), напишем процедуру обработки ее нажатия:
procedure TForm1.Go_N_cliClick(Sender: TObject);
begin
Table1.SetKey;
Table1.FieldByName('N_cli').
Table1.GotoKey;
end;
Рис.8 Фрагмент формы с полем ввода № клиента и кнопкой запуска
Когда база данных будет заполнена достаточно большим количеством клиентов, поиск при помощи навигатора и перехода по номеру станет долгим процессом. Для быстроты и удобства реализуем поиск по фамилии, имени, отчеству клиента, а чтобы он был еще эффективней настроим его с возможностью выборки части слова.
Из вкладки Управление данными выберем компонент RadioGroup и установим его. Далее в инспекторе объектов в свойстве Items создадим три переключателя: Фамилии, Имени, Отчеству. Сделаем переключатель поиска по фамилии выбранным по умолчанию, установив в свойстве ItemIndex значение 0 (так как нумерация начинается с 0). Поле для ввода искомых данных создадим при помощи компонента Edit (назвав его Edit_searsh). Далее напишем для этого компонента процедуру обрабатывающую событие OnChange:
procedure TForm1.Edit_searshChange(
var
strField:string; // создадим переменную для подстановки
begin
// выбираем поля поиска
case RadioGroup1.ItemIndex of
0: strField:='Fam';
1: strField:='Imya';
2: strField:='Otch';
end;
// выполняем поиск
Query1.Close;
Query1.SQL.Clear; // ' LIKE "%'+Edit_searh.Text+'%"' – ищем фрагмент текста
Query1.SQL.Add('Select * from meb_client where '+strField+' LIKE "'+Edit_searsh.Text+'%"');
Query1.Open;
Query1.FieldByName('Fam').
Query1.FieldByName('Name').
Query1.FieldByName('Otch').
end;
Для переключения DBGrid1 и остальных с ним связанных компонентов в режим поиска и обратно в режим просмотра создадим две кнопки Button: OnSearsh, OffSearsh.
Напишем для них процедуры обработки OnClick:
procedure TForm1.OnSearshClick(Sender: TObject); // включение режима поиска
begin
DBGrid1.DataSource:=
end;
procedure TForm1.OffSearshClick(Sender: TObject); // включение режима просмотра
begin
DBGrid1.DataSource:=
end;
Рис.9 Фрагмент формы с компонентами управления поиском
Следующим шагом в разработке приложения реализуем вывод отчетов по клиентам салона. Для этого добавим к форме три компонента из вкладки Rave:
Информация о работе Автоматизированный учет заказов в мебельном салоне