База данных склада
Основная форма имеет три основных элемента: строка меню, элемент отображения данных с навигацией и панель управления данными. В строке меню расположены элементы управления для доступа к справочникам и книге остатков, форме формирования отчета, а также находится кнопка выхода из приложения. Элемент отображения данных служит для отображения данных по заявкам, их добавления и редактирования, а также… Читать ещё >
База данных склада (реферат, курсовая, диплом, контрольная)
1. Проектирование базы данных
Имеется склад материальных ценностей. В базе данных хранится информация о подразделениях, о материалах и их остатках, о заявках от подразделений. По подразделениям известный их код и наименование. По материалам известны номенклатурный номер, наименование и цена за единицу. Остатки материалов характеризуются номенклатурным номером, количеством, и зарезервированным количеством. Заявки охарактеризованы их номером, датой составления, кодом подразделения, составившего заявку, номенклатурным номером и количеством заказанных материальных ценностей.
Схема данных приведена на рисунке 1.
Справочник материалов | Справочник подразделений | ||||||
Номенклатурный номер (PK) | Код подразделения (PK) | ||||||
Наименование | Наименование подразделения | ||||||
Цена | |||||||
Заявки | Остатки материалов | ||||||
Уникальный идентификатор (PK) | Номенклатурный номер (PK/FK) | ||||||
Номер заявки | |||||||
Дата | Количество | ||||||
Код подразделения (FK) | Зарезервированно | ||||||
Номенклатурный номер (FK) | |||||||
Количество | |||||||
Рисунок 1 — Схема базы данных Описание сущностей представленный в таблицах 1−4.
Таблица 1 — Сущность Справочник подразделений (Unit)
Наименование атрибута | Имя поля БД | Тип поля | Дополнительные характеристики | |
Код подразделения | Unit_ID | I | PK | |
Наименование подразделения | Unit_Name | A (50) | ||
Таблица 2 — Сущность Справочник материалов (Materials)
Наименование атрибута | Имя поля БД | Тип поля | Дополнительные характеристики | |
Номенклатурный номер | Mat_N | I | PK | |
Наименование материала | Mat_Name | A (50) | ||
Цена за единицу | Mat_Price | $ | ||
Таблица 3 — Сущность Остатки материалов (Ostastok)
Наименование атрибута | Имя поля БД | Тип поля | Дополнительные характеристики | |
Номенклатурный номер | Ost_Nmat | I | PK | |
Количество | Ost_Count | I | ||
Резерв | Ost_reserv | I | ||
Таблица 4 — Сущность Заявки (Request)
Наименование атрибута | Имя поля БД | Тип поля | Дополнительные характеристики | |
Уникальный идентификатор | Req_ID | PK | ||
Номер заявки | Req_N | I | ||
Дата | Req_D | D | ||
Код подразделения | Req_UnitID | I | ||
Номенклатурный № | Req_Nmat | I | ||
Количество | Req_Count | N | ||
Для реализации функций поиска информации в таблицах базы данных были созданы индексы. Описание индексов приведено в таблице 5.
Таблица 5 — Описание индексов
Таблица | Имя индекса | Поля | |
Unit | idxUnit_ID | Unit_ID | |
Materials | idxMat_N | Mat_N | |
idxMat_Name | Mat_Name | ||
Ostatok | idxOst_Nmat | Ost_Nmat | |
Request | idxReq_ID | Req_ID | |
idxReq_N | Req_N | ||
idxReq_Dat | Req_Dat | ||
Для контроля вводимых значений в таблицах были установлены правила контроля. Их описание приведено в таблице 6.
Таблица 6 — Правила контроля полей
Таблица | Поле | Правило контроля | |
Unit | Unit_ID | Minimum value=1 | |
Materials | Mat_N | Minimum value=1 | |
Mat_Price | Minimum value=0 | ||
Ostatok | Ost_Count | Minimum value=0 | |
Ost_Reserv | Minimum value=0, Value< Ost_Count. Value | ||
Request | Req_N | Minimum value=1 | |
Req_Count | Minimum value=0 | ||
2. Описание программного проекта
Программный проект Warhouse включает в себя следующие файлы:
1. Файл проекта: Warhouse. dpr
2. Файлы форм: uDM. dfm, uMat. dfm, uEdMat. dfm, uUnit. dfm, uEdUnit. dfm, uOstatok. dfm, uRptConf. dfm, uRpt. dfm, uWH. dfm
3. Файлы программных подулей: uDM. pas, uMat. pas, uEdMat. pas, uUnit. pas, uEdUnit. pas, uOstatok. pas, uRptConf. pas, uRpt. pas, uWH. pas
Формы предназначены для вывода графических элементов интерфейса для взаимодействия с пользователем. Их назначения описаны в таблице 6.
Таблица 6 — Описания файлов форм проекта
Имя файла формы | Назначение | |
uDM | Модуль данных, невидимая форма, осуществляет подключение к базе данных и хранит информации о наборах данных. | |
uMat | Предназначена для работы со справочником материалов | |
uEdMat | Предназначена для редактирования справочника материалов и добавления в него новых записей | |
uUnit | Предназначена для работы со справочником подразделений | |
uEdUnit | Предназначена для редактирования справочника подразделений и добавления в него новых записей | |
uOstatok | Предназначена для работы с информацией по остаткам | |
uRptConf | Предназначена для указания параметров формирования отчета | |
uRpt | Макет отчета | |
uWH | Предназначена для работы с информацией по заявкам, а также является главной формой, реализует доступ ко всем функциям проекта. | |
Программные модули это автономно (отдельно) компилируемая программная единица, которая содержит компоненты раздела описаний (меток, констант, типов, переменных, процедур, функций), а также может содержать операторы инициализирующей части. Сам модуль не является выполняемой программой, а предназначен для использования другими программами и модулями. Назначение модулей представлено в таблице 7.
Таблица 6 — Описания файлов форм проекта
Имя модуля | Назначение | |
uDM | Модуль данных | |
uMat | Хранит алгоритм работы со справочником материалов | |
uEdMat | Хранит алгоритм редактирования справочника материалов и добавления в него новых записей | |
uUnit | Хранит алгоритм работы со справочником подразделений | |
uEdUnit | Хранит алгоритм редактирования справочника подразделений и добавления в него новых записей | |
uOstatok | Хранит алгоритм работы с информацией по остаткам | |
uRptConf | Хранит алгоритм указания параметров формирования отчета | |
uRpt | Хранит алгоритм построения макета отчета | |
uWH | Хранит алгоритм работы с информацией по заявкам, а также алгоритм построения отчета | |
3. Описание алгоритма формирования отчета
Алгоритм формирования отчета имеет следующий вид:
1. Вывод окна для задания параметров отчета. Если нажата кнопка «Отмена» — выход из процедуры. Если номер начала диапазона заявок больше номера конца диапазона то вывод сообщения об ошибке и выход из процедуры.
2. При первом формировании отчета создание временной таблицы, при последующих формированиях ее очистка.
а) Создание полей временной таблицы. Описания полей приведены в таблице 8.
Таблица 8 — Поля временной таблицы
Имя поля | Описание | Тип | |
MatN | Номенклатурный номер | I | |
MatName | Наименование материала | A (50) | |
SvOst | Свободный остаток | N | |
Zak | Заказано подразделениями | N | |
Sum | Сумма недостачи | N | |
б) Создание индексов временной таблицы. Описания индексов приведены в таблице 9.
Таблица 9 — Индексы временной таблицы
Имя индекса | Поле | Опции | |
MatN | ixPrimary | ||
idxSum | Sum | ixDescending | |
в) Установка индекса по ключевому полю как текущего.
3. Открытие временной таблицы.
4. В цикле просматриваются строки таблицы «Заявки».
а) По коду товара ищется запись в таблице остатков. Если запись не найдена, то свободный остаток для материала равен нулю.
б) Проверяем запись на соответствие параметрам отчета: номер входит в диапазон, заявка испытывает нехватку материалов.
в) Проверяем наличие во временной таблице записи с номенклатурным номером в текущей строке.
г) Если такой записи нет, то добавляем, если есть-то переводим временную таблицу в режим редактирования.
д) Корректируем значения полей «Свободный остаток», «Заказано подразделениями», «Сумма недостачи».
5. Заполняем заголовок отчета.
6. Устанавливаем индекс idxsum как текущий.
7. Выводим отчет в режиме Priview.
8. Закрываем временную таблицу.
Блок-схема процедуры формирования отчета представлена на рисунках 2−2б.
Рисунок 2 — Блок-схема процедуры формирования отчета Листинг процедуры формирования отчета представлен в разделе 7, в исходном тексте модуля uWH.
4. Руководство программиста
Для установки программы необходимо разместить исполняемый файл Warhouse. exe данных в папке C: Program FilesWarhouse.
Файлы базы данных необходимо разместить в каталоге C: Program FilesWarhousedb. После этого необходимо в программе BDE Administrator создать псевдоним для обращения к базе данных. Псевдоним должен иметь имя WarhouseDB и в поле Path должен быть указан путь размещения файлов базы данных (C:Program FilesWarhousedb). Также, драйвер работы с файлами Paradox, должен быть сконфигурирован для работы с кириллицей.
Ярлык приложения необходимо разместить в удобном для пользователя месте (например на рабочем столе), в качестве объекта указать путь к исполняемому файлу (C:Program FilesWarhouseWarhouse. exe), именем ярлыка установить «Склад материальных ценностей».
5. Руководство пользователя
Запуск программы осуществляется с рабочего стола, путем двойного клика по ярылку с именем «Склад материальных ценностей». После запуска программы открывается основная форма. Вид основной формы представлен на рисунке 3.
Рисунок 3 — Вид основной формы программы
Основная форма имеет три основных элемента: строка меню, элемент отображения данных с навигацией и панель управления данными. В строке меню расположены элементы управления для доступа к справочникам и книге остатков, форме формирования отчета, а также находится кнопка выхода из приложения. Элемент отображения данных служит для отображения данных по заявкам, их добавления и редактирования, а также для навигации в пределах набора данных.
Для добавления записи необходимо кликнуть по кнопке «+» на панели навигации. При добавлении новой записи, а также редактировании, необходимо чтобы все поля были заполнены. Код подразделения, а также номенклатурный номер материала можно ввести с клавиатуры, но также имеется возможность выбрать значение из выпадающего списка справа. При этом в незаполненном поле автоматически появится значение: при вводе с клавиатуры в поле выпадающего списка, при выборе пункта выпадающего списка — в поле ввода. Пример представлен на рисунке 4.
Рисунок 4 — Выбор значения из выпадающего списка После заполнения всех полей необходимо кликнуть по кнопке с изображением галочки в панели навигации для сохранения изменений.
В панели управления данными имеется три вкладки: поиск, фильтрация и групповое изменение. На вкладке «Поиск» осуществляется поиск по заявкам. Внешний вид вкладки представлен на рисунке 5.
Рисунок 5 — Вкладка «Поиск»
При поиске по номеру заявки набор данных автоматически перейдет на указанную запись, если таковая имеется в нем. При отсутствии такой заявки будет выведено сообщение о том, что заявка не найдена.
При поиске по дате заявки необходимо выбрать дату составления заявки, набор данных перейдет на ту заявку, дата составления которой либо соответствует выбранной, либо находится ближе всех.
Поиск по количеству аналогичен поиску по номеру заявки.
На вкладке «Фильтрация» можно указать условия отображения заявок для удобного редактирования, а также для осуществления поиска какой либо заявки. Внешний вид вкладки представлен на рисунке 6.
Рисунок 6 — Вкладка «Фильтрация»
Для фильтрации по подразделению необходимо выбрать из выпадающего списка подразделение, заявки от которого должны быть отображены и кликнуть по кнопке «Выбрать». При этом кнопка примет вдавленный вид.
Для фильтрации по материалам необходимо ввести номенклатурный номер материала, заявки по которому должны быть отображены и кликнуть по кнопке «Выбрать». При этом кнопка примет вдавленный вид.
При фильтрации за период указываются даты периода фильтрации. Если не указана дата начала периода то фильтрация осуществляется до даты, указанной в качестве конца периода, если не указана дата конца периода — фильтрация осуществляется с даты начала периода. При указании обоих дат, в поле вывода будут отображены заявки, составленные за указанный период.
Фильтрация может осуществляться по всем параметрам одновременно.
На вкладке «Групповое изменение» представлена возможность удаления заявок из базы данных, а также группового изменения объема заявки, в зависимости от стоимости. Внешний вид вкладки представлен на рисунке 7.
Рисунок 7 — Вкладка «Групповое изменение»
Для снижения объема заявки в зависимости от суммы необходимо ввести сумму и количество единиц, на которое будут уменьшены заявки. Если стоимость заявки выше введенной суммы, то ее объем будет уменьшен на введенное количество.
При удалении заявок необходимо указать либо № начальной заявки, либо конечной, либо и начальной и конечной. В зависимости от введенных значений будет выбран диапазон, и все заявки находящиеся в этом диапазоне будут удалены.
Для просмотра и редактирования справочников необходимо открыть форму справочника, обратившись к нему через пункт «Справочники» основного меню, и выбрать интересующий справочник. После выбора откроется основная форма справочника (представлена на рисунке 8).
По справочникам можно осуществлять поиск по наименованию материала. Если отмечен пункт «Учитывать регистр» то поиск будет осуществляться с учетом регистра. Если отмечен пункт «Приближенно» то будет найден тот материал, в наименовании которого встречается поисковой запрос.
Добавление новых записей осуществляется кнопкой «Добавить». Редактирование текущей записи осуществляется кнопкой «Редактировать». Для навигации по справочнику используется панель навигации в верхней части формы. Удаление текущей записи осуществляется кнопкой «-» в панели навигации.
Рисунок 8 — Форма справочника «Материалы»
При добавлении / редактировании записи в справочнике открывается форма изменения записи. Все поля в ней должны быть заполнены, для сохранения целостности в базе данных. Номенклатурный (код подразделения) должен быть уникальным. Форма изменения приведена на рисунке 9.
Рисунок 8 — Форма изменения справочника «Материалы»
Для формирования отчета о потребностях необходимо на главной форме в основном меню выбрать пункт «Отчеты», из подчиненного меню выбрать отчет о потребностях. На экране появится форма для ввода параметров отчета. Форма приведена на рисунке 9.
Рисунок 9 — Форма «Параметры отчета»
В форме указывается диапазон заявок, по которым будет сформирован отчет. Начальное значение должно быть меньше конечного, оба значения должны быть заполнены. При нажатии кнопки «Сформировать» будет сформирован отчет, при нажатии кнопки «Отмена» или закрытии формы отчет выводиться не будет. Пример формирования отчета приведен в разделе 6.
6. Описание контрольного примера
Для демонстрации работы программы таблицы были заполнены данными контрольного примера. Содержание таблиц базы данных приведены в таблицах 10−13.
Таблица 10 — Содержание таблицы Unit
Unit_ID | UnitName | |
Отдел ИКТ | ||
Цех № 1 | ||
Цех № 2 | ||
Бухгалтерия | ||
Отдел охраны | ||
ОТК | ||
Отдел продаж | ||
Цех № 3 | ||
Таблица 11 — Содержание таблицы Materials
Mat_N | Mat_Name | Mat_Price | |
Цемент | 250,00 р. | ||
Витая пара | 780,00 р. | ||
Сетевой фильтр | 120,00 р. | ||
Шихта | 298,00 р. | ||
Гарнитура | 150,00 р. | ||
Таблица 12 — Содержание таблицы Ostatok
Ost_Nmat | Ost_Count | Ost_reserv | |
10,00 | 2,00 | ||
8,00 | 6,00 | ||
11,00 | 9,00 | ||
40,00 | 12,00 | ||
3,00 | 0,00 | ||
Таблица 13 — Содержание таблицы Request
Req_ID | Req_N | ReqDat | Req_UnitID | Req_Nmat | Req_Count | |
21.12.2012 | 159,00 | |||||
22.12.2012 | 149,00 | |||||
23.12.2012 | 5,00 | |||||
24.12.2012 | 12,00 | |||||
25.12.2012 | 2,00 | |||||
При формировании отчета в качестве параметров программа запрашивает диапазон номеров заявок. В данном контрольном примере был взят диапазон от 25 678 до 25 682.
7. Текст программы
Исходный текст модуля uDM:
unit uDM;
interface
uses
SysUtils, Classes, DB, DBTables;
type
TDM = class (TDataModule)
warhouseDB: TDatabase;
tblUnit: TTable;
tblMaterials: TTable;
tblOstatok: TTable;
tblRequest: TTable;
dsUnit: TDataSource;
dsMaterials: TDataSource;
dsOstatok: TDataSource;
dsRequest: TDataSource;
tblUnitUnit_ID: TIntegerField;
tblUnitUnit_Name: TStringField;
tblMaterialsMat_N: TIntegerField;
tblMaterialsMat_Name: TStringField;
tblMaterialsMat_Price: TCurrencyField;
tblOstatokOst_Nmat: TIntegerField;
tblRequestReq_ID: TAutoIncField;
tblRequestReq_N: TIntegerField;
tblRequestReq_Dat: TDateField;
tblRequestReq_UnitID: TIntegerField;
tblRequestReq_Nmat: TIntegerField;
tblRequestReq_Count: TFloatField;
tblRequestlkpUnitName: TStringField;
tblRequestlkpMatName: TStringField;
tblRequestcalStoim: TFloatField;
tblOstatoklkpNmat: TStringField;
tblRpt: TTable;
tblOstatokOst_reserv: TFloatField;
tblOstatokOst_Count: TFloatField;
procedure tblRequestCalcFields (DataSet: TDataSet);
procedure tblRequestFilterRecord (DataSet: TDataSet;
var Accept: Boolean);
procedure tblOstatokOst_reservValidate (Sender: TField);
private
{Private declarations}
public
{Public declarations}
end;
var
DM: TDM; Filt: String;
implementation
{$R *.dfm}
procedure TDM. tblRequestCalcFields (DataSet: TDataSet);
begin
tblMaterials. FindKey ([tblRequest. FieldByName ('Req_Nmat')]);
tblRequestcalStoim.asFloat:=tblRequestReq_Count.asFloat*tblMaterials. FieldByName ('Mat_Price').AsFloat;
end;
procedure TDM. tblRequestFilterRecord (DataSet: TDataSet;
var Accept: Boolean);
begin
if (uDM. Filt='') then exit else
Accept:= (tblRequest ['Req_Nmat']=uDM. Filt);
end;
procedure TDM. tblOstatokOst_reservValidate (Sender: TField);
begin
if ((Sender as TField).Value >tblOstatok. FieldByName ('Ost_Count').Value) then raise
exception. Create ('Резерв не может быть больше количества!');
end;
end.
Исходный текст модуля uEdMat:
unit uEdMat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls;
type
TfrmEdMat = class (TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
btnOK: TButton;
btnCancel: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
DBEdit3: TDBEdit;
private
{Private declarations}
public
{Public declarations}
end;
var
frmEdMat: TfrmEdMat;
implementation
uses uDM;
{$R *.dfm}
end.
Исходный текст модуля uEdUnit:
unit uEdUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls;
type
TfrmEdUnit = class (TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
btnOK: TButton;
btnCancel: TButton;
Label1: TLabel;
Label2: TLabel;
private
{Private declarations}
public
{Public declarations}
end;
var
frmEdUnit: TfrmEdUnit;
implementation
uses uDM;
{$R *.dfm}
end.
Исходный текст модуля uMat:
unit uMat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls;
type
TfrmMat = class (TForm)
Panel1: TPanel;
DBNavigator1: TDBNavigator;
btnAdd: TButton;
btnEdit: TButton;
Panel2: TPanel;
DBGrid1: TDBGrid;
Panel3: TPanel;
edLocate: TEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
btnLocate: TButton;
Label1: TLabel;
procedure FormShow (Sender: TObject);
procedure btnAddClick (Sender: TObject);
procedure btnEditClick (Sender: TObject);
procedure btnLocateClick (Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
frmMat: TfrmMat;
implementation
uses uDM, uEdMat, DB;
{$R *.dfm}
procedure TfrmMat. FormShow (Sender: TObject);
begin
if not dm.tblMaterials. Active then dm.tblMaterials. Open;
end;
procedure TfrmMat. btnAddClick (Sender: TObject);
begin
Выводы
программный автоматизированный складской база В ходе выполнения курсовой работы разработан и отлажен программный проект для осуществления автоматизированного складского учета материальных ценностей. В его рамках была спроектирована база данных, включающая в себя информацию о подразделениях, материалах и их остатках, а также информацию о заявках подразделений на получение материальных ценностей со склада.
Разработанная программа позволяет вести учет об остатках материалов на складе в количественном выражении и их резерве, вести учет входящих заявок от подразделений на получение материалов, осуществлять их удобный просмотр и редактирование, а также позволяет получить отчет о нехватке материальных ценностей для удовлетворения потребностей подразделений.
Список источников
1. Карпова Т. С. Базы данных: модели, разработка. — СПб.: Питер, 2001, 304 с.
2. Фаронов В. В. Программирование баз данных в Delphi 7: Учебный курс. — СПб.: Питер, 2004 — 464 с.
3. Кренке Д. Теория и практика построения баз данных: [пер. с англ] / Д. Кренке. — 9 — е изд. — СПб.: Питер, 2005. — 858 с.
4. Delphi 2006 на примерах (+ CD-ROM): Владимир Шупрута — Москва, БХВ-Петербург, 2006 г. — 528 с.
5. Delphi 7. Основы программирования. Решение типовых задач. Самоучитель: Л. М. Климова — Санкт-Петербург, КУДИЦ-Образ, 2006 г. — 480 с.
6. Delphi в задачах и примерах (+ CD-ROM): Никита Культин — Москва, БХВ-Петербург, 2008 г. — 288 с.
7. Delphi. Профессиональное программирование: Дмитрий Осипов — Москва, Символ-Плюс, 2006 г. — 1056 с.
8. Turbo Delphi для новичков и не только: С. А. Любавин — Санкт-Петербург, НТ Пресс, 2008 г. — 320 с.
9. Основы программирования в интегрированной среде DELPHI: А. Желонкин — Москва, Бином. Лаборатория знаний, 2004 г. — 240 с.
10. Основы программирования в интегрированной среде Delphi. Практикум: А. Желонкин — Санкт-Петербург, Бином. Лаборатория знаний, 2006 г. — 240 с.
11. Программирование в Turbo Pascal. Переход к Delphi (+ CD-ROM): Ю. А. Шпак — Санкт-Петербург, МК-Пресс, 2006 г. — 416 с.
12. Программируем в Turbo Delphi: С. А. Любавин — Москва, НТ Пресс, 2008 г. — 320 с.