Проектирование базы данных для коммерческого предприятия
Структурные элементы базы данных. Объектно-ориентированная модель программных компонент. Масштабируемые средства для построения баз данных. Рассмотрение программного продукта Delphi. Изучение новых тенденции развития СУБД и областей их применения.
| Рубрика | Программирование, компьютеры и кибернетика |
| Вид | курсовая работа |
| Язык | русский |
| Дата добавления | 05.05.2016 |
| Размер файла | 293,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Программный доступ к базе данных
Программисты пользуются языком SQL, чтобы писать приложения, в которых содержатся обращения к базам данных. Одни и те же операторы SQL используются как для интерактивного, так и для программного доступа, поэтому части программ, содержащие обращения к базе данных, можно вначале тестировать в интерактивном режиме, а затем встраивать в программу. В традиционных базах данных для программного доступа используются одни программные средства, а для выполнения немедленных запросов -- другие, без какой либо связи между этими двумя режимами доступа.
Различные представления данных
С помощью SQL создатель базы может сделать так, что различные пользователи базы данных будут видеть различные представления её структуры и содержимого. Например, базу данных можно спроектировать таким образом, что каждый пользователь будет видеть только данные, относящиеся к его подразделению или торговому региону. Кроме того, данные из различных частей базы данных могут быть скомбинированы и представлены пользователю в виде одной простой таблицы. Следовательно, представления можно использовать для усиления защиты базы данных и ее настройки под конкретные требования отдельных пользователей.
Полноценный язык для работы с базами данных
Первоначально SQL был задуман как язык интерактивных запросов, но сейчас он вышел далеко за рамки чтения данных. SQL является полноценным и логичным языком, предназначенным для создания базы данных, управления ее защитой, изменения ее содержимого, чтения данных и совместного использования данных несколькими пользователями, работающими параллельно. Приемы, освоенные при изучении одного раздела языка, могут затем применяться в других командах, что повышает производительность работы пользователей.
Динамическое определение данных
С помощью SQL можно динамически изменять и расширять структуру базы данных даже в то время, когда пользователи обращаются к ее содержимому. Это большое преимущество перед языками статического определения данных, которые запрещают доступ к базе данных во время изменения ее структуры. Таким образом, SQL обеспечивает максимальную гибкость, так как дает базе данных возможность адаптироваться к изменяющимся требованиям, не прерывая работу приложения, выполняющегося в реальном масштабе времени.
Архитектура клиент/сервер
SQL -- естественное средство для реализации приложений клиент/сервер. В этой роли SQL служит связующим звеном между клиентской системой, взаимодействующей с пользователем, и серверной системой, управляющей базой данных, позволяя каждой системе сосредоточиться на выполнении своих функций. Кроме того, SQL позволяет персональным компьютерам функционировать в качестве клиентов по отношению к сетевым серверам или более крупным базам данных, установленным на больших ЭВМ; это позволяет получать доступ к корпоративным данным из приложений, работающих на персональных компьютерах.
Глава 7. База данных «Магазин автозапчастей»
7.1 Исходные данные на проектирование
ООО «______» занимается продажей новых запасных частей к автомобилям Фольксваген, Ауди, Шкода.
Необходимо разработать базу данных, позволяющую автоматизировать выполнение основных действий при складировании и всех учетных действий с запчастями.
Для этого рассмотрим основные этапы, по которым запчасти проходят в магазине:
Закупаются запчасти, они поступают на склад.
Для каждого наименования заводится отдельная строка в таблице базы данных, в которой указываются:
Код товара по каталогу
Наименование
Дата выпуска
Количество
Ее стоимость
Дата поступления
Группа. (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.
Дополнительная литература:
8. Лекции по дисциплине «Базы данных» Ваксер В.В.
9. Лекции по дисциплине «Распределенные системы обработки информации» Ваксер В.В.
10. Использованы материалы с сайта http://www.cit-forum.ru/
11. Материалы с сайта http://www.ibex.ch/
Приложение 1
Блок-схема программы
Приложение 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
Подобные документы
Новые тенденции развития СУБД и областей их применения. Структурные элементы базы данных. Объектно-ориентированная модель программных компонентов. Формы, модули и метод разработки "Two-Way Tools". Масштабируемые средства для построения баз данных.
дипломная работа [589,5 K], добавлен 16.12.2013Delphi как программный продукт с феноменальными характеристиками. Компилятор в машинный код. Объектно-ориентированная модель программных компонентов. Масштабируемые средства для построения баз данных. Программный код.
контрольная работа [27,8 K], добавлен 30.07.2007Анализ данных предметной области. Информационно-логическая модель базы данных. Физическое проектирование и мероприятия по защите и обеспечению целостности базы данных. Приложение интерфейса для SQL-сервера базы данных на языке программирования Delphi.
курсовая работа [2,2 M], добавлен 30.05.2013Изучение основных понятий баз данных: структура простейшей базы данных, компоненты базы данных Microsoft Access. Проектирование базы данных "Туристическое агентство" в СУБД Access 2010, в которой хранятся данные о клиентах, которые хотят поехать отдыхать.
курсовая работа [3,3 M], добавлен 20.09.2013Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.
курсовая работа [3,7 M], добавлен 05.04.2012Этапы проектирования базы данных. Инфологическое проектирование. Определение требований к операционной обстановке. Выбор СУБД и других программных средств. Логическое и физическое проектирование реляционной базы данных. Технология доступа к информации.
курсовая работа [2,3 M], добавлен 06.10.2016Требования, предъявляемые к базе данных. Основы построения базы данных. Программный продукт Delphi. Структура базы данных и интерфейс программы. Построение функциональной схемы подсистемы "Учет и реализация товара", общая схема построения системы.
курсовая работа [5,9 M], добавлен 13.12.2011Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.
курсовая работа [7,8 M], добавлен 13.02.2023Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.
курсовая работа [838,9 K], добавлен 25.11.2010Построение банков данных. Инструментальные средства баз данных Borland. Принцип работы и архитектура баз данных в Delphi. Навигационный способ доступа к базам данных: операции с таблицей, сортировка и перемещение по набору данных, фильтрация записей.
курсовая работа [642,7 K], добавлен 06.02.2014


