Разработка программного обеспечения для автоматизации учета продукции на склад
Новые тенденции развития СУБД и областей их применения. Структурные элементы базы данных. Объектно-ориентированная модель программных компонентов. Формы, модули и метод разработки "Two-Way Tools". Масштабируемые средства для построения баз данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.12.2013 |
Размер файла | 589,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Высокоуровневая структура, напоминающая английский язык
Операторы SQL выглядят как обычные английские предложения, что упрощает их изучение и понимание. Частично это обусловлено тем, что операторы SQL описывают данные, которые необходимо получить, а не определяют способ их поиска. Таблицы и столбцы в реляционной базе данных могут иметь длинные описательные имена. В результате большинство операторов SQL означают именно то, что точно соответствует их именам, поэтому их можно читать как простые, понятные предложения.
Интерактивные запросы
SQL является языком интерактивных запросов, который обеспечивает пользователям немедленный доступ к данным. С помощью SQL пользователь может в интерактивном режиме получить ответы на самые сложные запросы в считанные минуты или секунды, тогда как программисту потребовались бы дни или недели, чтобы написать для пользователя соответствующую программу. Из-за того, что SQL допускает немедленные запросы, данные становятся более доступными и могут помочь в принятии решений, делая их более обоснованными.
Программный доступ к базе данных
Программисты пользуются языком SQL, чтобы писать приложения, в которых содержатся обращения к базам данных. Одни и те же операторы SQL используются как для интерактивного, так и для программного доступа, поэтому части программ, содержащие обращения к базе данных, можно вначале тестировать в интерактивном режиме, а затем встраивать в программу. В традиционных базах данных для программного доступа используются одни программные средства, а для выполнения немедленных запросов -- другие, без какой либо связи между этими двумя режимами доступа.
Различные представления данных
С помощью SQL создатель базы может сделать так, что различные пользователи базы данных будут видеть различные представления её структуры и содержимого. Например, базу данных можно спроектировать таким образом, что каждый пользователь будет видеть только данные, относящиеся к его подразделению или торговому региону. Кроме того, данные из различных частей базы данных могут быть скомбинированы и представлены пользователю в виде одной простой таблицы. Следовательно, представления можно использовать для усиления защиты базы данных и ее настройки под конкретные требования отдельных пользователей.
Полноценный язык для работы с базами данных
Первоначально SQL был задуман как язык интерактивных запросов, но сейчас он вышел далеко за рамки чтения данных. SQL является полноценным и логичным языком, предназначенным для создания базы данных, управления ее защитой, изменения ее содержимого, чтения данных и совместного использования данных несколькими пользователями, работающими параллельно. Приемы, освоенные при изучении одного раздела языка, могут затем применяться в других командах, что повышает производительность работы пользователей.
Динамическое определение данных
С помощью SQL можно динамически изменять и расширять структуру базы данных даже в то время, когда пользователи обращаются к ее содержимому. Это большое преимущество перед языками статического определения данных, которые запрещают доступ к базе данных во время изменения ее структуры. Таким образом, SQL обеспечивает максимальную гибкость, так как дает базе данных возможность адаптироваться к изменяющимся требованиям, не прерывая работу приложения, выполняющегося в реальном масштабе времени.
Архитектура клиент/сервер
SQL -- естественное средство для реализации приложений клиент/сервер. В этой роли SQL служит связующим звеном между клиентской системой, взаимодействующей с пользователем, и серверной системой, управляющей базой данных, позволяя каждой системе сосредоточиться на выполнении своих функций. Кроме того, SQL позволяет персональным компьютерам функционировать в качестве клиентов по отношению к сетевым серверам или более крупным базам данных, установленным на больших ЭВМ; это позволяет получать доступ к корпоративным данным из приложений, работающих на персональных компьютерах.
Глава 7. База данных «Магазин автозапчастей»
7.1 Исходные данные на проектирование
ООО «______» занимается продажей новых запасных частей к автомобилям Фольксваген, Ауди, Шкода.
Необходимо разработать базу данных, позволяющую автоматизировать выполнение основных действий при складировании и всех учетных действий с запчастями.
Для этого рассмотрим основные этапы, по которым запчасти проходят в магазине:
§ Закупаются запчасти, они поступают на склад.
§ Для каждого наименования заводится отдельная строка в таблице базы данных, в которой указываются:
o Код товара по каталогу
o Наименование
o Дата выпуска
o Количество
o Ее стоимость
o Дата поступления
o Группа. (01-двигатель, 02-система охлаждения, 03-система питания, 04-система зажигания, 05-трансмиссия, 06-подвеска, 07-рулевое управление, 08-тормозная система, 09-кузов, 10-электрооборудование).
§ Со склада требуемая часть поступает непосредственно в магазин, который реализует данные товары в розницу.
При занесении данных о новом товаре, необходимо заполнить форму "Покупка", в открывающемся окне будет расположено несколько полей для заполнения: "Код товара", куда заносится уникальный код по каталогу; "Наименование" - описание детали, "Дата выпуска" - заполняется на случай если запчасть устанавливалась до какого-то времени, после чего была изменена конструкция и т.д., "Цена"- вводится цена в рублях, "Количество" - целое значение, "Группа" - заносится номер группы, к которой относится деталь. Существует несколько групп. Это системы автомобиля: тормозная система, двигатель, подвеска и т.д.
Данные в таблице можно редактировать по мере необходимости. Их можно будет сортировать по коду, дате выпуска, группе и т.д. Должен быть реализован вызов поискового окна с возможностью внесения необходимых данных для поиска интересующего товара. Так же необходимо добавить инструменты редактирования записей.
Программа "Магазин автозапчастей" будет служить для облегчения учета движения товаров. Наиболее рутинными и в то же время наиболее ответственными процессами являются:
ввод поступивших товаров.
Выгрузка товаров со склада в магазин.
Просмотр информации по состоянию склада.
Таким образом разрабатываемая программа должна выполнять следующие функции:
§ Учет товара
§ Возможность выборки по критериям
§ Информация об остатках на складе.
Общие требования:
§ Разработать структуру базы данных
§ Разработать программу ввода данных, организации доступа к данным и их редактирования.
Технические средства - ПЭВМ типа IBM PC
Операционная система - MS Windows 9x/NT/ME/XP
СУБД и инструментальные программные средства - Средство разработки приложений Borland Delphi 7.0
7.2 Реализация проекта
Вся информация для хранения в базе данных разбита на сущности и атрибуты по специфическим признакам. Каждая сущность представляет собой таблицу базы данных. Анализ описанной предметной области и решаемых задач позволяет выделить следующие сущности (таблица 1):
Таблица 1. Сущности базы данных «Магазин автозапчастей»
№ п/п |
тип сущности |
атрибуты |
|
1. |
Audi |
Код; Наименование; Дата выпуска; Количество; Цена закупки; Цена продажи; Группа; Дата поступления. |
|
2. |
Skoda |
Код; Наименование; Дата выпуска; Количество; Цена закупки; Цена продажи; Группа; Дата поступления. |
|
3. |
Volkswagen |
Код; Наименование; Дата выпуска; Количество; Цена закупки; Цена продажи; Группа; Дата поступления. |
На рисунке 1 представлено главное окно итоговой программы.
Рис 1. Главное диалоговое окно программы «Магазин автозапчастей».
Что бы начать работу с одной из трех таблиц (Audi, Volkswagen или Skoda), нужно выбрать соответствующее имя таблицы из выпадающего списка на панели инструментов. Верхняя часть окна отражает состояние таблицы в данный момент и данные, записанные в ее полях. Нижнее поле - это текстовое поле, где ведется лог операций, произведенных над таблицей. Этот лог никуда не записывается, он служит для того, чтобы пользователь мог удостовериться, что его действия были корректно выполнены и новые данные были применены к текущей таблице.
Для более удобного просмотра информации в таблице, записи можно упорядочить по следующим индексам: Код; Наименование; Дата выпуска; Дата поступления; Группа. Эта функция доступна через Данные -> Упорядочить.
На панели инструментов есть кнопки «Добавить», «Редактировать» и «Удалить». С помощью них пользователь может модифицировать данные в таблице об уже имеющихся записях. При нажатии на кнопки «Редактировать» и «Добавить», будет включен режим редактирования, цвет таблицы станет бирюзовым, как показано на рисунке 2. Выйти из режима редактирования можно, кликнув по кнопке «Редактирование».
Рис 2. Включен режим «Редактирование».
Если потребуется удалить существующую запись, то нужно установить табличный указатель на нужную строку и нажать на кнопку «Удалить». Всплывет сообщение для подтверждения удаления. При нажатии на «ОК» запись будет удалена.
Рис 3. Подтверждение удаления записи из таблицы.
Для отражения поступления нового товара на склад используется операция «Покупка» (Операции -> Покупка). Форма выглядит следующим образом:
Рис 4. Форма операции «Покупка».
Все поля формы обязательны для заполнения. «Цена» товара указывается в рублях. «Группа» товара - это выпадающий список. Для выбора доступны следующие группы: 01-двигатель; 02-система охлаждения; 03-система питания; 04-система зажигания; 05-трансмиссия; 06-подвеска; 07-рулевое управление; 08-тормозная система; 09-кузов; 10-электрооборудование. При нажатии кнопки «ОК» данные с формы записываются в активную таблицу.
Для того, чтобы отразить выгрузку какого-либо товара в магазин, либо добавить некоторое количество товара, который уже имеется на складе, используется операция «Выгрузить/Добавить на склад» (Операции -> Выгрузить/Добавить на склад).
Рис 5. Форма операции «Возврат/Добавить на Склад».
В данном случае действия пользователя происходят в следующей последовательности:
§ По поиску нужно задать критерий для нахождения требуемой записи в таблице;
§ Нажать на кнопку «Отразить»;
§ В поле с таблицей будут отражены код, наименование и группа того товара, запись о котором будет редактироваться;
§ В соответствующем поле будет отражено количество единиц на складе;
§ Доступно 2 вида действия: добавить некоторое количество товара на склад или выгрузить;
§ В соответствующем поле нужно ввести то количество единиц, которое нужно добавить или выгрузить;
§ После нажатия на кнопку «ОК» таблица будет соответственно отредактирована и в поле Memo добавиться запись о проделанной операции.
Чтобы найти ту или иную запись в таблице, можно воспользоваться «Быстрым поиском» (Данные -> Быстрый поиск).
Рис 6. Форма Быстрого поиска.
Верхний выпадающий список содержит строки «Код», «Наименование» и «Группа». При вводе значения в поле рядом с выпадающим списком, табличный указатель на главной форме приложения будет перемещен на запись таблицы, которая соответствует либо максимально приближена к значению, введенному в это поле.
«Поиск по дате» осуществляет поиск записи по «Дате выпуска» и по «Дате поступления». Поле ввода для критерия поиска имеет маску. Вводить дату следует в формате дд.мм.гггг.. Табличный указатель будет перенесен на нужную запись после нажатия кнопки «Найти»
Для просмотра общей статистической информации о товарах на складе, можно вызвать окно статистики (Данные -> Статистика).
Рис 7. Статистика.
В области «Справка» можно выделить записи из таблицы, отобранные по критерию групповой принадлежности.
Заключение
В ходе данной дипломной работы была создана база данных с применением современного средства разработки приложений Borland Delphi 7.0. В ней реализованы все основные аспекты современных баз данных, в том числе язык запросов SQL.
Целью работы являлась разработка программного обеспечения для автоматизации учета продукции на складе - база данных, которая реализовала бы автоматизацию учета товаров, хранение данных в файлах, организацию доступа к ним и редактирование.
В ходе работы над программой были изучены методы проектирования баз данных и работа с ними, исследована методология проектирования по предметной области «Склад», изучен один из наиболее используемых языков для создания запросов SQL, изучен язык программирования Object Pascal, реализованный в среде программирования Delphi 7.
Приложение «Магазин автозапчастей» в настоящее время используется в области малого бизнеса на предприятии ООО «________», где получило положительную оценку, как со стороны операторов, так и администратора компьютерной сети.
Библиографический список
Основная литература:
1. Шумаков А.И. «Базы данных в среде Delphi 5», Электронная версия
2. Вейскас Д. «Эффективная работа с Access 2000». СПб., 2001г.
3. Дуванов А. А. «Конструирование баз данных». СПб, 2003г.
4. Антипов Д. В., Соколов А. В. «Базы данных». Москва, 2002.
5. Кирстен В. «СУБД Cache. Объектно-ориентированная разработка приложений», - СПб.: «Питер», 2001.
6. Понамарёв В. «Базы данных в DELPHI 7», СПб «Питер», 2003.
7. Симонович С.В. «Язык структурированных запросов SQL», СПб «Питер», 2000.
Дополнительная литература:
1. Лекции по дисциплине «Базы данных» Ваксер В.В.
2. Лекции по дисциплине «Распределенные системы обработки информации» Ваксер В.В.
3. Использованы материалы с сайта http://www.cit-forum.ru/
4. Материалы с сайта http://www.ibex.ch/
Приложение 1
Блок-схема программы.
Размещено на http://www.allbest.ru
Приложение 2
Полный листинг программы «Магазин автозапчастей».
program MyEdit;
uses
Forms,
MainUnit in 'MainUnit.pas' {MainForm},
ChildUnit in 'ChildUnit.pas' {ChildForm},
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdActns, ActnList, DB, Grids, DBGrids, ExtCtrls, DBCtrls,
DBTables, ComCtrls, ToolWin, StdCtrls, Buttons, Mask;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
WindowMenu: TMenuItem;
OpenDialog1: TOpenDialog;
ActionList1: TActionList;
Arrange1: TWindowArrange;
Cascade1: TWindowCascade;
Close1: TWindowClose;
MinimizeAll1: TWindowMinimizeAll;
TileHorizontally1: TWindowTileHorizontal;
TileVertically1: TWindowTileVertical;
N13: TMenuItem;
N16: TMenuItem;
Copy1: TEditCopy;
Cut1: TEditCut;
Paste1: TEditPaste;
StatusBar1: TStatusBar;
DataSource1: TDataSource;
ToolBar1: TToolBar;
ComboBox1: TComboBox;
Timer1: TTimer;
warehouse: TTable;
DBGrid1: TDBGrid;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N9: TMenuItem;
N11: TMenuItem;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Memo1: TMemo;
N10: TMenuItem;
N12: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
Label1: TLabel;
Splitter1: TSplitter;
N23: TMenuItem;
N24: TMenuItem;
Query1: TQuery;
N25: TMenuItem;
procedure ComboBox1Change(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton8MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ToolBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure N25Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
editmark: boolean;
stDay : array[1..7] of string[11] = ('воскресенье','понедельник','вторник',
'среда','четверг','пятница','суббота');
implementation
uses Unit1, Unit2, Unit3, Unit4, Unit5;
{$R *.DFM}
procedure TMainForm.ComboBox1Change(Sender: TObject);
begin
warehouse.Active := false;
if combobox1.ItemIndex = 0 then begin
warehouse.TableName:='Audi.db';
end;
if combobox1.ItemIndex = 1 then begin
warehouse.TableName:= 'Volkswagen.db';
end;
if combobox1.ItemIndex = 2 then begin
warehouse.TableName := 'Skoda.db';
end;
warehouse.ReadOnly:=false;
dbgrid1.ReadOnly:=true;
warehouse.Active := true;
end;
procedure TMainForm.N8Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var Present: TDateTime;
year, month, day : word;
begin
present:=now;
decodedate(present,year,month,day);
statusbar1.Panels[2].Text:=inttostr(day)+'.'+inttostr(month)+'.'+inttostr(year)+', '+stDay[DayOfWeek(Present)];
end;
procedure TMainForm.N3Click(Sender: TObject);
begin
warehouse.Active := false;
if opendialog1.Execute then begin
warehouse.TableName:=opendialog1.FileName;
warehouse.Active:=true;
end;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
var date: Tdatetime;
begin
statusbar1.Panels[1].Text:=timetostr(time);
end;
procedure TMainForm.N6Click(Sender: TObject);
begin
combobox1.ItemIndex := -1;
warehouse.Active :=false;
warehouse.TableName := '';
end;
procedure TMainForm.SpeedButton1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Добавить';
end;
procedure TMainForm.SpeedButton2MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Редактировать';
end;
procedure TMainForm.SpeedButton4MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Быстрый поиск';
end;
procedure TMainForm.SpeedButton5MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Покупка';
End;
procedure TMainForm.SpeedButton7MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='О программе';
end;
procedure TMainForm.SpeedButton8MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Выход из приложения';
end;
procedure TMainForm.SpeedButton3MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Удалить';
end;
procedure TMainForm.SpeedButton6MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='Выгрузить/Добавить на склад';
end;
procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='';
end;
procedure TMainForm.ToolBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='';
end;
procedure TMainForm.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='';
end;
procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
if editmark=false then begin
label1.Caption:='Редактирование';
dbgrid1.Color:=clteal;
dbgrid1.ReadOnly:=false; warehouse.insert; editmark:=true end
else begin
dbgrid1.ReadOnly:=true; editmark:=false;
label1.Caption:='';
dbgrid1.Color:=clwindow; end;
end;
procedure TMainForm.SpeedButton3Click(Sender: TObject);
var k:integer;
begin
k:=messagebox(0,'Удалить запись?','Удаление',33);
if k=1 then begin
memo1.Lines.Add(Timetostr(time)+' Запись была удалена из таблицы [ '+inttostr(warehouse.fieldbyname('Код').Value)+' '+warehouse.fieldbyname('Наименование').Value+' ]');
warehouse.Delete;
end;
end;
procedure TMainForm.SpeedButton5Click(Sender: TObject);
begin
Application.CreateForm(TForm1, Form1);
Form1.Show;
end;
procedure TMainForm.SpeedButton8Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TMainForm.SpeedButton2Click(Sender: TObject);
begin
if editmark=false then begin
label1.Caption:='Редактирование';
dbgrid1.Color:=clteal;
dbgrid1.ReadOnly:=false; warehouse.Edit; editmark:=true end
else begin
dbgrid1.ReadOnly:=true; editmark:=false;
label1.Caption:='';
memo1.Lines.Add(Timetostr(time)+' Таблица была отредактирована');
dbgrid1.Color:=clwindow; end;
end;
procedure TMainForm.N13Click(Sender: TObject);
begin
speedbutton5.Click;
end;
procedure TMainForm.N4Click(Sender: TObject);
begin
speedbutton1.Click;
end;
procedure TMainForm.N5Click(Sender: TObject);
begin
speedbutton2.Click;
end;
procedure TMainForm.N9Click(Sender: TObject);
begin
speedbutton3.Click;
end;
procedure TMainForm.SpeedButton4Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.show;
end;
procedure TMainForm.N18Click(Sender: TObject);
begin
warehouse.IndexFieldNames:='Код';
end;
procedure TMainForm.N19Click(Sender: TObject);
begin
warehouse.IndexFieldNames:='Наименование';
end;
procedure TMainForm.N20Click(Sender: TObject);
begin
warehouse.IndexFieldNames:='Дата выпуска';
end;
procedure TMainForm.N21Click(Sender: TObject);
begin
warehouse.IndexFieldNames:='Дата поступления';
end;
procedure TMainForm.N22Click(Sender: TObject);
begin
warehouse.IndexFieldNames:='Группа';
end;
procedure TMainForm.SpeedButton6Click(Sender: TObject);
begin
Application.CreateForm(TForm3, Form3);
form3.Show;
form3.dbgrid1.DataSource:=datasource1;
end;
procedure TMainForm.N24Click(Sender: TObject);
var i,R,P,SR,SP: integer;
begin
Application.CreateForm(TForm4, Form4);
SR:=0; SP:=0;
form4.Show;
R:=0;
P:=0;
warehouse.Active:=false;
warehouse.TableName:='Audi.db';
warehouse.active:=true;
warehouse.First;
for i:=1 to warehouse.RecordCount do begin
R:=R+mainform.warehouse.fieldbyname('Кол-во').Value;
P:=P+mainform.warehouse.fieldbyname('Кол-во').Value*mainform.warehouse.fieldbyname('Цена закупки').Value;
warehouse.Next;
end;
form4.label2.Caption:=inttostr(R);
form4.Label4.Caption:=inttostr(P); SR:=R; Sp:=P;
{second table}
R:=0;
P:=0;
warehouse.Active:=false;
warehouse.TableName:='Volkswagen.db';
warehouse.Active:=true;
warehouse.First;
for i:=1 to warehouse.RecordCount do begin
R:=R+mainform.warehouse.fieldbyname('Кол-во').Value;
P:=P+mainform.warehouse.fieldbyname('Кол-во').Value*mainform.warehouse.fieldbyname('Цена закупки').Value;
warehouse.Next;
end;
form4.label6.Caption:=inttostr(R);
form4.Label7.Caption:=inttostr(P); SR:=SR+R; SP:=SP+P;
{third table}
R:=0;
P:=0;
warehouse.Active:=false;
warehouse.TableName:='Skoda.db';
warehouse.Active:=true;
warehouse.First;
for i:=1 to warehouse.RecordCount do begin
R:=R+mainform.warehouse.fieldbyname('Кол-во').Value;
P:=P+mainform.warehouse.fieldbyname('Кол-во').Value*mainform.warehouse.fieldbyname('Цена закупки').Value;
warehouse.Next;
end;
form4.label8.Caption:=inttostr(R);
form4.Label9.Caption:=inttostr(P); SR:=SR+R; SP:=SP+P;
form4.Label17.Caption:=inttostr(SR);
form4.Label19.caption:=inttostr(SP);
warehouse.Active:=false;
warehouse.TableName:=combobox1.text+'.db';
warehouse.Active:=true;
end;
procedure TMainForm.SpeedButton7Click(Sender: TObject);
begin
Application.CreateForm(TForm5, Form5);
Form5.Show;
end;
procedure TMainForm.N25Click(Sender: TObject);
begin
warehouse.edit; warehouse.Post;
memo1.Lines.Add(Timetostr(time)+' Все изменения сохранены');
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Mask, DBCtrls, DB, DBTables, Spin, Buttons;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit2: TEdit;
ComboBox1: TComboBox;
MaskEdit1: TMaskEdit;
DateTimePicker1: TDateTimePicker;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Edit1: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Mainunit;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
mainform.warehouse.Delete;
Form1.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
mainform.warehouse.InsertRecord([edit2.text,edit1.text,maskedit1.text,spinedit2.text,spinedit1.text,'',combobox1.text,datetimepicker1.date]);
mainform.Memo1.Lines.Add('Произведена покупка'+timetostr(time));
form1.Close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
mainform.warehouse.InsertRecord([edit2.text,edit1.text,maskedit1.text,spinedit2.text,spinedit1.text,'',combobox1.text,datetimepicker1.date]);
mainform.Memo1.Lines.Add(timetostr(time)+' Произведена покупка '+edit1.Text+' [ '+spinedit2.Text+' по цене '+spinedit1.text+'р. ]');
edit1.Clear;
edit2.Clear;
combobox1.Clear;
maskedit1.Clear;
spinedit1.Clear;
spinedit2.Clear;
form1.Close;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
combobox1.Clear;
maskedit1.Clear;
spinedit1.Clear;
spinedit2.Clear;
Form1.Close;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, ComCtrls;
type
TForm2 = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
GroupBox1: TGroupBox;
ComboBox2: TComboBox;
Button1: TButton;
MaskEdit1: TMaskEdit;
procedure DBEdit1Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
p,pd: integer;
implementation
uses MainUnit;
{$R *.dfm}
procedure TForm2.DBEdit1Change(Sender: TObject);
begin
mainform.warehouse.FindField('Код');
end;
procedure TForm2.Edit1Change(Sender: TObject);
var lan,i,mark: integer;
strmark: string;
begin
lan:=mainform.warehouse.RecordCount;
mainform.warehouse.First;
if edit1.text='' then begin mark:=0; end
else begin
if p=0 then begin mark:=strtoint(edit1.text);
for i:=0 to lan do begin
if mainform.warehouse.Fields[p].AsInteger=mark then
else mainform.warehouse.Next;
end; end;
if ((p=1) or (p=6)) then begin strmark:=edit1.Text;
for i:=0 to lan do begin
mainform.warehouse.setkey;
mainform.warehouse.IndexFieldNames:=mainform.warehouse.Fields[p].FieldName;
mainform.warehouse.FindNearest([edit1.text]);
end; end;
end;
end;
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
case combobox1.ItemIndex of
0: p:=0;
1: p:=1;
2: p:=6; end;
end;
procedure TForm2.ComboBox2Change(Sender: TObject);
begin
case combobox2.ItemIndex of
0: pd:=2;
1: pd:=7; end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
if pd=0 then pd:=2;
if maskedit1.Text='' then else
begin mainform.warehouse.SetKey;
mainform.warehouse.IndexFieldNames:=mainform.warehouse.Fields[pd].FieldName;
mainform.warehouse.FindNearest([maskedit1.text]);
end;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
edit1.Text:=''; maskedit1.Text:='';
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables, Buttons, Mask, DBCtrls,
ExtCtrls;
type
TForm3 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBEdit1: TDBEdit;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Edit1: TEdit;
Button1: TButton;
GroupBox2: TGroupBox;
Label2: TLabel;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label1: TLabel;
Memo1: TMemo;
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
p,pd: integer;
implementation
uses mainunit;
{$R *.dfm}
procedure TForm3.Button2Click(Sender: TObject);
begin
form3.Close;
end;
procedure TForm3.Edit1Change(Sender: TObject);
var lan,i,mark: integer;
strmark: string;
begin
lan:=mainform.warehouse.RecordCount;
mainform.warehouse.First;
if edit1.text='' then begin mark:=0; end
else begin
if p=0 then begin mark:=strtoint(edit1.text);
for i:=0 to lan do begin
if mainform.warehouse.Fields[p].AsInteger=mark then
else mainform.warehouse.Next;
end; end;
if ((p=1) or (p=6)) then begin strmark:=edit1.Text;
for i:=0 to lan do begin
mainform.warehouse.setkey;
mainform.warehouse.IndexFieldNames:=mainform.warehouse.Fields[p].FieldName;
mainform.warehouse.FindNearest([edit1.text]);
end; end;
end;
end;
procedure TForm3.ComboBox1Change(Sender: TObject);
begin
case combobox1.ItemIndex of
0: p:=0;
1: p:=1;
2: p:=6; end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
mainform.Query1.Active:=false;
mainform.Query1.Close;
mainform.Query1.SQL.Clear;
mainform.Query1.SQL.Add('select '+'Код, Наименование, "Дата выпуска", "Кол-во", "Цена закупки", "Группа" '+'from '+mainform.ComboBox1.Text+' where '+combobox1.Text+'='+edit1.text);
mainform.Query1.Active:=true;
dbedit1.DataField:='Кол-во';
end;
procedure TForm3.BitBtn1Click(Sender: TObject);
var N,RN: integer;
begin
if radiobutton1.Checked=true then begin
N:=strtoint(edit2.Text);
RN:=strtoint(dbedit1.Text);
RN:=RN-N;
memo1.Lines.Add('Выгружено '+edit2.Text+' единиц '+mainform.warehouse.FieldValues['Наименование']);
mainform.memo1.Lines.Add(Timetostr(time)+' Выгружено '+edit2.Text+' единиц '+mainform.warehouse.FieldValues['Наименование']);
end;
if radiobutton2.Checked=true then begin
N:=strtoint(edit2.Text);
RN:=strtoint(dbedit1.Text);
RN:=RN+N;
memo1.Lines.Add('Добавлено '+edit2.Text+' единиц '+mainform.warehouse.FieldValues['Наименование']);
mainform.memo1.Lines.Add(Timetostr(time)+' Добавлено '+edit2.Text+' единиц '+mainform.warehouse.FieldValues['Наименование']);
end;
mainform.Query1.Close;
datasource1.Enabled:=false;
mainform.warehouse.edit;
mainform.warehouse.FieldByName('Кол-во').AsInteger:=RN;
mainform.warehouse.Post;
mainform.Query1.Open;
datasource1.Enabled:=true;
edit2.Text:='';
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
mainform.Query1.Active:=false;
edit1.Clear;
edit2.Clear;
dbedit1.DataField:='';
form3.close;
end;
procedure TForm3.Edit2Change(Sender: TObject);
var N,RN: integer;
begin
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
dbgrid1.DataSource:=datasource1;
mainform.Query1.Active:=false;
mainform.Query1.Close;
mainform.Query1.SQL.Clear;
mainform.Query1.SQL.Add('select '+'Код, Наименование, Группа '+'from '+mainform.ComboBox1.Text+' where '+combobox1.Text+'="'+edit1.text+'"');
mainform.Query1.Active:=true;
dbedit1.DataField:='Кол-во';
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
dbgrid1.DataSource:=mainform.DataSource1;
end;
procedure TForm3.ComboBox2Change(Sender: TObject);
begin
case combobox1.ItemIndex of
0: p:=0;
1: p:=1;
2: p:=6; end;
end;
procedure TForm3.FormDestroy(Sender: TObject);
begin
mainform.Query1.Active:=false;
edit1.Text:='';
edit2.Text:='';
dbedit1.DataField:='';
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainform.Query1.Active:=false;
edit1.Text:='';
edit2.Text:='';
dbedit1.DataField:='';
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, Mask, QuickRpt, QRCtrls, ExtCtrls;
type
TForm4 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label21: TLabel;
Button1: TButton;
ComboBox1: TComboBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Mainunit;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
var i: integer;
begin
datasource1.DataSet:=mainform.Query1;
mainform.Query1.close;
mainform.Query1.SQL.Clear;
mainform.Query1.SQL.Add('Select * from '+mainform.ComboBox1.Text+' where Группа="'+combobox1.Text+'"');
mainform.Query1.Open;
mainform.Query1.Active:=true;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
form4.close;
end;
procedure TForm4.Button3Click(Sender: TObject);
var i:integer;
begin
mainform.warehouse.First;
for i:=1 to mainform.warehouse.recordcount do begin
if mainform.warehouse.FieldByName('Дата выпуска').value='02.03.2004' then
datasource1.DataSet:=mainform.warehouse.Fields.DataSet;
mainform.warehouse.Next;
end;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm5 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Mainunit;
{$R *.dfm}
end.
Размещено на Allbest.ru
Подобные документы
Delphi как программный продукт с феноменальными характеристиками. Компилятор в машинный код. Объектно-ориентированная модель программных компонентов. Масштабируемые средства для построения баз данных. Программный код.
контрольная работа [27,8 K], добавлен 30.07.2007Инструментальные средства для разработки структуры информационной базы данных "Программа автоматизации учета расчетов с поставщиками", пользовательский интерфейс СУБД Access. Разработка запросов отбора данных и вычислений, экранных форм коррекции данных.
лабораторная работа [2,4 M], добавлен 15.11.2010Концептуальная модель базы данных "Бюро по трудоустройству". Разработка информационного и программного обеспечения объектов автоматизации. Реализация базы данных в СУБД MsAccess. Запросы к базе данных. Таблицы, отчеты и макросы. Интерфейс пользователя.
курсовая работа [5,2 M], добавлен 30.05.2016Создание базы данных в СУБД ACCESS для автоматизации работы служащих аэропорта, этапы проектирования реляционной БД. Построение инфологической модели ПО. Разработка средств обеспечения безопасности данных; функциональное назначение программного средства.
курсовая работа [3,8 M], добавлен 25.06.2011Разработка модели и создание структуры реляционной базы данных. Организация данных в таблицах для предоставления оперативного доступа к данным. Основные структурные единицы базы данных Access: таблицы, запросы, формы, отчеты, страницы, макросы и модули.
реферат [4,0 M], добавлен 03.02.2013Порядок проектирования и разработки базы данных и программного обеспечения. Информация о структуре базы данных, созданных таблицах, формах, отчетах, запросах, хранимой информации. Логическая и концептуальная модели данных; выбор программного обеспечения.
курсовая работа [906,6 K], добавлен 20.01.2010Выбор программных средст, основные требования. Разработка программного обеспечение для автоматизации учета использования и обслуживания транспортных средств. Инфологическая модель базы данных. Разработка SQL запросов, алгоритмов. Структура базы данных.
курсовая работа [1,0 M], добавлен 16.02.2015Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.
дипломная работа [645,3 K], добавлен 21.11.2010Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.
курсовая работа [3,7 M], добавлен 05.04.2012Обоснование необходимости систем управления базами данных на предприятиях. Особенности разработки программного обеспечения по управлению базой данных, обеспечивающего просмотр, редактирование, вставку записей базы данных, формирование запросов и отчетов.
курсовая работа [1,5 M], добавлен 23.01.2010