Смекни!
smekni.com

Разработка базы данных "Отдел сбыта" (стр. 2 из 3)

"Phone" - контактирующий телефон (char 15);

"E_mail" - адрес электронной почты (char 20);

Таблица "Productions" будет иметь следующие атрибуты:

1 "Production_name" - является уникальным названием продукции, выступающим в роли первичного ключа таблицы (char 10);

2 "Price_for_one" - цена за единицу (int);

3 "Num_in_depository" - количество единиц данной продукции на складе (int);

И соответственно в таблицу "Sale" необходимо поместить следующие атрибуты:

"nakladnaya" - является уникальным номером накладной, выступающим в роли первичного ключа таблицы (int);

"Organization_name" - название организации (char 20);

"Production_name" - наименование продукции (char 10);

"Number" - количество проданной продукции (int)

"Date" - дата продажи (datetime)

"Payment" - вид оплаты (char 20)

4.2 Структура хранимой информации

Поступающая от менеджера (пользователя) информация будет вноситься в основные таблицы базы данных ("Organizations", "Productions", "Sale").

Существующие связи между этими таблицами служат для обеспечения целостности данных. Наглядно связь между таблицами изображена на рисунке 1.

Рисунок 1 - Связь между таблицами БД "Отдел сбыта"

Вид связи между таблицами "один-ко-многим". Связующими полями являются поле "Organization_name" таблицы "Organizations" с полем "Organization_name" таблицы "Sale", и аналогично поле "Production_name" таблицы "Productions" с полем "Production_name" таблицы "Sale".

4.3 Концептуальная модель данных

Концептуальное моделирование - это переход от неформализованного описания предметной области к ее формальному изложению с помощью специальных языковых средств. В приложении А представлена концептуальная модель данной базы данных "Отдел сбыта".

5. SQL - запросы

Запрос 1 - Выводит организации с общим видом деятельности, указанным пользователем

select *

from Organizations

where Activity=activ,

где activ - указанный вид деятельности организации

Запрос 2 - Выводит список продукций с ценой за единицу большей указанной цены:

select *

from Productions

where Price_for_one>=price

order by Production_name,

где price - указанная цена продукции за еденицу

Запрос 3 - Выводит список указанной пользователем продукции, которая имеет заявки на продажу превышающие указанного количества единиц:

select *

from Sale

where Production_name=prod and number>=col,

где prod - указанная продукция, а col - указанное количество единиц продукции

Запрос 4 - Выводит количество проданной продукции

select Sum (number) as Number_saled

from Sale

where Productio_ name] =prod,

где prod - указанная продукция

Запрос 5 - Выводит список организаций с указанного города с указанным общим видом деятельности:

select *

from Organizations

where Address=town and Activity=active,

где town - указанный город, active - вид деятельности организации

Запрос 6 - Выводит все информацию о проданной продукции за раз превышающей указанного количества единиц продукции:

select *

from Sale

where number>=col

где col - количество единиц продукции

Запрос 7 -Выводит информацию о максимальном количестве продукции, проданной за 1 заявку:

select Production_name, MAX (number) as МАХ

from Sale

group by Production_name

Запрос 8 - Выводит список организаций и наименования продукции с наибольшими партиями закупок:

select distinct Organization_name, Production_name, MAX (number) as МАХ

from Sale

group by Production_name,Organization_name

6. Руководство пользователю

При запуске приложения открывается главное окно программы с активной вкладкой "Организации" (рисунок 3). Оно содержит главное меню и четыре вкладки: "Организации", "Продукция", "Продажа" и "Запросы". Каждая вкладка имеет соответствующую названию вкладки таблицу и компонент манипулирования этой таблицей. Для необходимо можно выделить нужную организацию (признаком выделенности является черный треугольник напротив организации, на рисунке выделенным организацией является "Building").

Рисунок 3 - Главное окно программы

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

Рисунок 4 - Окно программы со списком запросов

Четвертая вкладка содержит список запросов (Рисунок 4). Здесь пользователь может выбрать из списка один из предложенных запросов, либо в списке запросов выбрать "создать запрос…", либо в меню Action выбрать Make query. В результате появится диалоговое окно (Рисунок 5), где можно ввести нужные критерии запроса и нажать "ОК". Результат запросов отображается в таблице на вкладке "Запросы".

Рисунок 5 - Окно создания запроса

В меню Action есть команда Show report, после нажатия которой появится окно отчета по запросу (Рисунок 6). Отчет будет содержать информацию запроса, который выбран в списке запросов. Команда Show report доступна не всегда. Отчет предоставляется лишь следующим запросам:

список организаций (указать вид деятельности)

список организаций (указать город и вид деятельности)

максимальные заявки на продукцию

организации с макс числом куп продукции

Рисунок 6 - Окно отчета

Для получения справки об использовании программы пользователю необходимо в меню About выбрать Program…. Появится окно справки программы (Рисунок 7).

Рисунок 7 - Окно справки программы

Заключение

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

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

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

Список используемых источников

1. Мартин Груббер, "Понимание SQL", Москва, 2003 г

2. Т. Карпова - Базы данных: модели, разработка, реализация. Питер, 2001

3. Курс лекций по разработке баз данных, Терлецкая А.М., 2007 г

Приложения

Приложение А Концептуальная модель данных


Приложение Б. Листинг программного кода

Unit1

procedure TForm1. TabControl1Change (Sender: TObject);

begin

case Tabcontrol1. TabIndex of

0: // управление вкладками

begin

DBGrid1. Visible: =true;

DBNavigator1. Visible: =true;

DBGrid2. Visible: =false;

DBNavigator2. Visible: =false;

DBGrid3. Visible: =false;

DBNavigator3. Visible: =false;

DBGrid4. Visible: =false;

ComboBox1. Visible: =false;

end;

1:

begin

DBGrid1. Visible: =false;

DBNavigator1. Visible: =false;

DBGrid2. Visible: =true;

DBNavigator2. Visible: =true;

DBGrid3. Visible: =false;

DBNavigator3. Visible: =false;

DBGrid4. Visible: =false;

ComboBox1. Visible: =false;

end;

2:

begin

DBGrid1. Visible: =false;

DBNavigator1. Visible: =false;

DBGrid2. Visible: =false;

DBNavigator2. Visible: =false;

DBGrid3. Visible: =true;

DBNavigator3. Visible: =true;

DBGrid4. Visible: =false;

ComboBox1. Visible: =false;

end;

3:

begin

DBGrid1. Visible: =false;

DBNavigator1. Visible: =false;

DBGrid2. Visible: =false;

DBNavigator2. Visible: =false;

DBGrid3. Visible: =false;

DBNavigator3. Visible: =false;

DBGrid4. Visible: =true;

ComboBox1. Visible: =true;

end;

end;

end;

procedure TForm1. Exit1Click (Sender: TObject);

begin

Close; закрытие программы

end;

procedure TForm1.comboBox1Change (Sender: TObject);

var

town: string;

prod: string;

price: string;

aktiv: string;

begin

case ComboBox1. ItemIndex of

0: // первый запрос

begin

ADOQuery1. Active: = false;

aktiv: =InputBox ('Введите','Вид деятельности предприятия',aktiv);

aktiv: =Edit1. Text+aktiv+Edit1. Text;

if aktiv<>'' then

ADOQuery1. SQL. Text: = 'select * from Organizations where Activity='+aktiv;

ADOQuery1. Active: = true;

// ------------------report----------------------------------------------

N2. Enabled: =true;

Form3. QRLabel2. Caption: ='Организации';

Form3. QRLabel4. Caption: ='Адрес';

Form3. QRLabel5. Caption: ='Деятельность';

Form3. QRLabel6. Caption: ='Телефон';

Form3. QRLabel7. Caption: ='E-mail';

end;

1: // второй запрос

begin

ADOQuery1. Active: = false;

price: =InputBox ('Введите','Цена за единицу продукции',price);

if (price<>'') or (StrToInt (price) >=1000) then

ADOQuery1. SQL. Text: = 'select * from Productions where Price_for_one>='+price+' order by Production_name';

ADOQuery1. Active: = true;

N2. Enabled: =false;

end;

2: // третий запрос

begin

ADOQuery1. Active: = false;

prod: =InputBox ('Введите','Наименование продукции',prod);

prod: =Edit1. Text+prod+Edit1. Text;

if prod<>'' then

aktiv: =InputBox ('Введите','Количество проданной продукции',aktiv);

if (aktiv<>'') or (StrToInt (aktiv) >0) then

ADOQuery1. SQL. Text: = 'select * from Sale where Production_name='+prod+' and number>='+aktiv;

ADOQuery1. Active: = true;

N2. Enabled: =false;

end;

3: // четвертый запрос

begin

ADOQuery1. Active: = false;

prod: =InputBox ('Введите','Наименование продукции',prod);

prod: =Edit1. Text+prod+Edit1. Text;

if prod<>'' then

ADOQuery1. SQL. Text: = 'select Production_name, Sum (number) as Number_saled from Sale where Production_name='+prod+' group by Production_name';

ADOQuery1. Active: = true;

N2. Enabled: =false;

end;

4: // пятый запрос

begin

ADOQuery1. Active: = false;

town: =InputBox ('Введите','Название города',town);

town: =Edit1. Text+town+Edit1. Text;

if town<>'' then

aktiv: =InputBox ('Введите','Вид деятельности предприятия',aktiv);

aktiv: =Edit1. Text+aktiv+Edit1. Text;

if aktiv<>'' then