Автоматизированный учет заказов в мебельном салоне

Автор работы: Пользователь скрыл имя, 08 Марта 2014 в 15:51, курсовая работа

Краткое описание

Целью данного проекта является изучение базы данных, освоение реляционной модели БД, приведение таблиц БД к третьей форме нормализации, овладение способами организации и методами проектирования БД, а также технологии разработки приложений для их использования. Изучение данного материала должно сформировать общий базис знаний по организации и использованию баз данных (БД).
Задачей данной работы является проектирование и создание базы данных и разработка приложения для ее эффективного использования на примере гипотетического «Мебельного салона». Разработанная информационная система должна ускорить и облегчить работу менеджера салона по регистрации и учету заказов, способствуя сокращению временного интервала от обращения клиента в салон до заключения договора о поставке товара, а также сэкономить время на поиске информации о клиентах.

Содержание

Введение………………………………………………………………………………………….3

Аналитическая часть……………………………………………………………………..5
Описание предметной области………………………………………………....5
Объект проектирования……………………………………………………...5
Информационные процессы…………………………………………………5
Требование к ИС…………………………………………………………………6

Проектирование базы данных…………………………………………………………...7
Проектирование информационной модели базы данных…………………….7
Построение логической модели базы данных…………………………………9
Построение физической модели данных……………………………………..13
Создание базы данных……...………………………………………………….17

Создание приложения для работы с базой данных…………………………………...19

Заключение……………………………………………………………………………………...31

Список литературы …………………………………………………

Прикрепленные файлы: 1 файл

курсовой проект Базы данных.doc

— 864.50 Кб (Скачать документ)



 Таблица 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 будет работать по умолчанию.

Создадим четыре таблицы:

    1. meb_client.dbf (клиенты);
    2. meb_zacaz.dbf (заказы);
    3. meb_meb.dbf (товар);
    4. meb_proizv.dbf (производители)

и заполним их, как описано выше.

Всем полям назначим атрибут 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. Всем ссылочным определениям присвоим имена и сохраним. При создании ссылочной целостности в таблицах с внешними ключами автоматически создаются индексы по их неявному определению:

    • meb_zacaz – N_cli, N_meb;
    • meb_meb – N_pro.

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

3.   Создание приложения для работы с базой данных.

 

Для работы с созданной нами базой данных необходимо разработать приложение. Выполним задачу при помощи среды разработки Delphi.

Запустим Delphi и создадим главную форму нашего приложения Form1. Далее перейдем к инспектору объектов и  в свойстве Caption введем «Мебельный салон. Учет заказов», тем самым присвоив нашей форме заголовок.

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

  • В левой части разместим элемент PageConrol1 и добавим к нему два окна TabSheet1 и TabSheet2. Две получившиеся вкладки переименуем в инспекторе объектов и присвоим им имена «Добавить новый заказ» и «Клиенты».
  • На правой половине разместим элементы Panel1 и Panel2, разделив тем самым ее на две части. В верхней ее половине на Panel1 далее реализуем просмотр информации, а в нижней Panel2 будут располагаться элементы для ввода новых данных о товаре и производителе.

Рис.7 Дерево объектов после размещения элементов

Разметив окно будущей программы, перейдем к созданию основных элементов. Начнем со страницы PageControl1 / «Клиенты». Открыв вкладку BDE, выберем и разместим четыре компонента Table и один Query:

    • Table1;
    • Table2;
    • Table3;
    • Table4;
    • Query1.

Для связи компонентов Table с имеющейся базой данных meb_salon перейдем в инспектор объектов и выберем у свойства DatabaseName в выпадающем списке ранее созданный псевдоним «meb_salon». Далее в свойстве TableName определим для каждого компонента свою таблицу:

    • meb_client.db для Table1;
    • meb_zacaz.db для Table2;
    • meb_meb.db для Table3;
    • meb_proizvod.db для Table4,

а поскольку нам необходимо реализовать поиск клиентов, то

    • meb.client.db для Query1.

Для отображения данных добавим из вкладки Управление данными четыре компонента DBGrid:

  • DBGrid1;
  • DBGrid2;
  • DBGrid3;
  • DBGrid4.

Для соединения компонентов Table и Query c элементами для отображения DBGrid добавим, перейдя на вкладку Доступ к данным, пять компонентов DataSourse:

    • DataSourse1;
    • DataSourse2;
    • DataSourse3;
    • DataSourse4;
    • DataSourse5.

Установим связь элементов DataSourse c компонентами Table и Query, присвоив в свойстве DataSet первого соответствующие значения:

    • Table1 для DataSourse1;
    • Query1 для DataSourse2;
    • Table2 для DataSourse3;
    • Table3 для DataSourse4;
    • Table4 для DataSourse5.

Далее соединим элементы отображения DBGrid с нужными нам DataSourse:

    • DataSourse1для DBGrid1;
    • DataSourse3для DBGrid2;
    • DataSourse4для DBGrid3;
    • DataSourse5для DBGrid4.

В приложении необходимо реализовать связь между объектами (клиент > заказ > товар > производитель), т.е. чтобы при выборе клиента осуществлялся показ информации о произведенном заказе, товаре и его производителе. Для этого выполним связь между нашими таблицами.

Для отображения заказов выбранного клиента обеспечим связь отвечающего за это компонента Table2 с таблицей Table1:

    • в свойстве MasterSourse введем значение DataSourse1;
    • открыв свойство MasterFields, создадим объединенное поле N_cli у таблиц meb_client и meb_zacaz;
      • открыв свойство IndexName, выберем имя индекса N_cli.

Для отображения приобретенного клиентом товара обеспечим связь отвечающего за это компонента Table3 с таблицей Table2:

    • в свойстве MasterSourse введем значение DataSourse3;
    • открыв свойство MasterFields, создадим объединенное поле N_meb у таблиц meb_zacaz и meb_meb;
    • открыв свойство IndexFieldName, выберем имя индекса N_meb.

Для отображения производителя у приобретенного клиентом товара обеспечим связь отвечающего за это компонента Table4 с таблицей Table3:

    • в свойстве MasterSourse введем значение DataSourse4;
    • открыв свойство MasterFields, создадим объединенное поле N_pro у таблиц meb_meb и meb_proizvod;
    • открыв свойство IndexFieldName, выберем имя индекса N_pro.

После этого поставим свойство 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').AsString := Edit_Go.Text;

           Table1.GotoKey;

end;

Рис.8 Фрагмент формы с полем ввода № клиента и кнопкой запуска

 

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

Из вкладки Управление данными выберем компонент RadioGroup и установим его. Далее в инспекторе объектов в свойстве Items создадим три переключателя: Фамилии, Имени, Отчеству. Сделаем переключатель поиска по фамилии выбранным по умолчанию, установив в свойстве ItemIndex значение 0 (так как нумерация начинается с 0). Поле для ввода искомых данных создадим при помощи компонента Edit (назвав его Edit_searsh).  Далее напишем для этого компонента процедуру обрабатывающую событие OnChange:

procedure TForm1.Edit_searshChange(Sender: TObject);

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').DisplayLabel:='Фамилия';

Query1.FieldByName('Name').DisplayLabel:='Имя';

Query1.FieldByName('Otch').DisplayLabel:='Отчество';

end;

Для переключения DBGrid1 и остальных с ним связанных компонентов в режим поиска и обратно в режим просмотра создадим две кнопки Button: OnSearsh, OffSearsh.

Напишем для них процедуры обработки OnClick:

procedure TForm1.OnSearshClick(Sender: TObject); // включение режима поиска

begin

DBGrid1.DataSource:=DataSource2;

end;

 

procedure TForm1.OffSearshClick(Sender: TObject); // включение режима просмотра

begin

DBGrid1.DataSource:=DataSource1;

end;

Рис.9 Фрагмент формы с компонентами управления поиском

Следующим шагом в разработке приложения реализуем вывод отчетов по клиентам салона. Для этого добавим к форме три компонента из вкладки Rave:

    • RvProject1;
    • RvSystem1;
    • RvDataSetConnection1.

 

    1. Присвоим свойству DataSet у RvDataSetConnection1значение Table. Далее вызвав контекстное меню нажатием правой кнопкой на RvProject запустим визуальный дизайнер отчетов Rave Visual Designer.
    2. Потом выбираем Project / New Data Object из главного меню для выбора диалога Data Connections. Выбераем Direct Data View и затем Next. Убедившись, что выбран нужный элемент в списке Active Data Connections нажмимаем кнопку OK.
    3. Перейдя в дерево проекта (Locate the Project Tree - дерево в левой части визуального дизайнера) открываем Data View Dictionary и выбераем новый просмотр данных, DataView1, который только что мы создали. А дальше при помощи дизайнера создадим отчет «Рис.10».

Информация о работе Автоматизированный учет заказов в мебельном салоне