Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
16.04.2013
Размер:
385.02 Кб
Скачать

4.8. Даталогическая модель данных

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

Все объекты и связи между объектами в нашем случае можно выразить следующими соотношениями:

  • Товар (обозначение товара, описание товара, единица измерения кол-ва, количество хранимого товара в единицах измерения, цена товара) - таблица Goods.txt;

  • Поставщик (Index поставщика, описание поставщика) - таблица Vendors.txt;

  • Связи (Index товара, Index поставщика, объем поставленного товара в единицах измерения ) - таблица Links.txt;

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

На уровне таблиц это выглядит следующим образом:

В приведенных ниже таблицах обозначение вида «X» в колонке «№», где X - номер поля, означает, что данное поле является ключевым.

Goods.txt

Имя

Тип

Комментарий

“1”

Ig

Integer

Обозначение индекса

2

Good

String

Наименование товара

3

Izm

String

Единица измерения

4

Count

Real

Количество товара

5

Price

Real

Цена товара

Vendors.txt

Имя

Тип

Комментарий

“1”

Iv

Integer

Index поставщика

2

Vendor

String

Поставщик

Links.txt

Имя

Тип

Комментарий

“1”

Ig

Integer

Index товара

“2”

Iv

Integer

Index поставщика

3

Post

Integer

Объем поставки

  1. Технический проект

В этом разделе рассматриваются алгоритмы клиентской части реализации доступа к данным в архитектуре клиент/сервер.

    1. Конфигурация технических средств

Требования к составу и параметрам технических средств соответствуют требованиям к программному продукту - системе моделирования макроэкономики.

Минимально необходимое оборудование:

PC 80486 SX2-66;

RAM 12 MB;

HDD 50 MB свободных;

Screen Color VGA.

Printer.. Любой матричный

Рекомендуемое оборудование:

PC Pentium 133 МГц;

RAM 32 MB;

HDD 30 MB свободных;

Screen Color SVGA;

Printer HP LASER JET

Необходимое программное обеспечение:

ОС Windows’95;

Драйвера для принтера.

    1. Алгоритмы предварительной работы программы

Общий алгоритм работы программы:

      1. Структура программы

Структура программы представлена на риc.1.10.

Рис.1.10. Структура программы.

      1. Иерархия форм.

Формы баз данных Delphi можно разделить на четыре следующих функциональных класса.

1. Редактирование и ввод. Простая форма, представляющая одну запись одной таблицы.

2. Сетка. Форма, которая отображает несколько строк одной таблицы, как это делается в программах электронных таблиц (каждая строка таблицы базы данных занимает одну строку на экране).

3. Управляющая сетка. Форма, которая отображает несколько строк одной таблицы (каждая строка таблицы базы данных занимает несколько строк экрана).

4. Главная-подчиненная. Форма, которая показывает строки двух или более связанных таблиц.

При разработке приложения прежде всего создаются и сохраняются в хранилище объектовDelphi формы-предки. Затем на их основе создаются все формы, являющиеся потомками.

Рис.1.11. Иерархия форм.

Главная форма MAIN содержит процедуры реализующие “Акт приема товара”, “Акт снятия товара”, вызовы дочерних форм (посредством выбора одного из пунктов меню).

Рис. 1.12 Главная форма перед началом работы.

Выбор режима работы происходит с помощью меню:

Рис 1.13. Пример работы с меню.

После выбора режима работы, появляется одна из панелей. Рассмотрим работу программы на примере режима “Акт приёма товара”:

Рис 1.14 Режим “Акт приёма товара”

Работа с формой происходит следующим образом:

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

Затем пользователь вводит наименование товара поступившего от поставщика, единицы измерения товара, цену за единицу и количество поставленных единиц, нажимая на кнопку “добавить” (справа) пользователь заносит информацию во временную таблицу.

Реализована так же вспомогательная автоматическая функция подсчета общей суммы, уплаченной за товар

После окончательного формирования акта поставки нажимается

Кнопка“Записать в книгу” и запись из временной таблицы переносится в Базу Данных.

Приведем участок текста программы, реализующий этот алгоритм

procedure TForm1.N5Click(Sender: TObject);

var f:TextFile;

s:string;

begin

// Блокируем ненужные пункты меню

N1.enabled:=false;

N2.enabled:=false;

N3.enabled:=false;

N4.enabled:=false;

// Открываем файл БД ПОСТАВЩИК

assignfile(f,'vendors.txt');

reset(f);

listbox.Items.Clear;

// Заполняем список ПОСТАВЩИКов

while not eof(f) do

begin

readln(f,s);

listbox.items.add(s);

end;

// Показываем Панель

panel1.Visible:=True;

// Закрываем файл БД ПОСТАВЩИК

closefile(f);

end;

// Процедура отображения выбранного поставщика в заголовке

// Акта Приёма Товара

procedure TForm1.ListBoxClick(Sender: TObject);

var i:integer;

begin

i:=0;

while not listbox.selected[i] do inc(i);

Vend.Caption:='Поставщик : '+Listbox.Items.Strings[i];

canAccept:=(canAccept or 1);

if canAccept=3 then btAccept.Enabled:=True;

end;

// Пользователь выбрал ОТМЕНА

procedure TForm1.btCancelClick(Sender: TObject);

begin

Panel1.Visible:=False;

N1.enabled:=true;

N2.enabled:=true;

N3.enabled:=true;

N4.enabled:=true;

end;

// Добавляем строку в список ПОСТАВЩИКов и – одновременно в БД

procedure TForm1.btAdd1Click(Sender: TObject);

var f:TextFile;

begin

assignfile(f,'vendors.txt');

Append(f);

ListBox.Items.Add(Edit3.Text);

Writeln(f,Edit3.Text);

closefile(f);

btAdd1.Enabled:=false;

end;

// Удаляем строку из списка

procedure TForm1.btDeleteClick(Sender: TObject);

var f:TextFile;

i:integer;

begin

assignFile(f,'vendors.txt');

rewrite(f);

i:=0;

while not listbox.selected[i] do inc(i);

ListBox.Items.Delete(i);

for i:=0 to ListBox.Items.Count-1 do

writeln(f,Listbox.Items[i]);

closefile (f)

end;

// Добавляем строку во временную таблицу

procedure TForm1.btAdd2Click(Sender: TObject);

begin

Table.Cells[0,CurrentRow]:=Goods.Text;

Table.Cells[1,CurrentRow]:=Izm.Text;

Table.Cells[2,CurrentRow]:=Price.Text;

Table.Cells[3,CurrentRow]:=Count.Text;

Table.Cells[4,CurrentRow]:=intToStr(strToint(Price.Text)*strToint(Count.Text));

inc(currentRow);

btAdd2.Enabled:=false;

entered:=0;

canAccept:=(canAccept or 2);

if canAccept=3 then btAccept.Enabled:=True;

end;

// Делаем окончательную запись в БД

procedure TForm1.btAcceptClick(Sender: TObject);

var f:textfile;

i,j:integer;

buff: string;

flag:boolean;

begin

assignfile(f,'goods.txt');

FileMode:=2;

i:=0;

while i<CurrentRow do

begin

reset(f);

flag:=true;

while flag do

begin

readln(f,buff);

if pos(Table.Cells[0,i],buff)>0 then

begin

flag:=false;

writeln(f,Table.Cells[0,i]+' '+Table.Cells[1,i]+' '+Table.Cells[2,i]+' '+Table.Cells[3,i]+' '+Table.Cells[4,i]+' '+Table.Cells[5,i]);

end

else

if flag and eof(f)then

begin

closefile(f);

append(f);

flag:=false;

writeln(f,' '+Table.Cells[0,i]+' '+Table.Cells[1,i]+' '+Table.Cells[2,i]+' '+Table.Cells[3,i]+' '+Table.Cells[4,i]+' '+Table.Cells[5,i]);

end;

end;

inc(i);

closefile(f);

end;

end;

Еще один из режимов работы системы – печать сводки цен, вот как выглядит панель, иллюстрирующая этот режим:

Рис. 1.15. Режим Печать сводки цен кладовой

Процедура, заполняющая список в панели из базы данных:

procedure TForm1.N25Click(Sender: TObject);

var f:textfile;

i,t,j:integer;

s:string;

begin

AssignFile(f,'goods.txt');

i:=0;

ReSet(f);

while not eof(f) do

begin

readln(f,s);

delete(s,1,1);

for j:=0 to 1 do

begin

t:=pos(' ',s);

Prices.Cells[j,i]:=Copy(s,1,t);

delete(s,1,t);

end;

Prices.Cells[2,i]:=s;

inc(i);

Prices.rowCount:=Prices.RowCount+1;

end;

closefile(f);

Panel2.Visible:=True;

end;

Покажем так же насколько элегантно и просто в Windows – Delphi реализована процедура вызова панели настройки принтера:

Рис 1.16. Настройка принтера

Cоответствующая процедура:

procedure TForm1.N36Click(Sender: TObject);

begin

PrinterSetupDialog.execute

end;

Действительно очень простая и в тоже время важная процедура.

Форму Service мы здесь рассматривать не будем, потому что функции реализованные в той части программы не являются специфичными ни с математической, ни с программистской точки зрения и представляют собой лишь готовые шаблоны-заготовки печатаемых финансовых документов.

Еще одна, третья и последняя форма, входящая в состав автоматизированной системы учета товаров является форма About.

Вызов её из основной формы производится следующей процедурой:

procedure TForm1.N37Click(Sender: TObject);

begin

Form3:=TForm2.Create(Self);

Form3.Show;

end;

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.