База данных "Магазин компьютерных комплектующих"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Этапы разработки базы данных

1. 1 Описание предметной области

1. 2 Концептуальная модель и ее описание

1. 3 Логическая модель

1. 4 Физическая модель

1. 5 Описание табли

2. Проектирование приложения

2. 1 Выбор среды программирования

2.1. 1 Denwer 3 + MySQL Server 5.5. 25

2.1. 2 Connector/ODBC 5.2. 5

2.1. 3 Borland Delphi 7

2.1.4 Технология ADO

2. 2 Разработка интерфейса

2. 3 Разработка запросов

2.3. 1 Поиск товара по ID

2.3. 2 Занесение данных о покупке в таблицу Продажи

2.3. 3 Подбор комплектующих

Заключение

Список использованной литературы

Приложения

Введение

база данный магазин запрос

За последние двадцать лет значительно возрос объём и оборот информации во всех сферах жизнедеятельности человека: экономической, финансовой, политической, духовной. И процесс накопления, обработки и использования знаний постоянно ускоряется. Учёные утверждают, что каждые десять лет количество информации увеличивается вдвое. В связи с этим возникает необходимость использования автоматических средств, позволяющих эффективно хранить, обрабатывать и распределять накопленные данные.

Исходя из современных требований, предъявляемых к качеству работы финансового звена крупного предприятия, нельзя не отметить, что эффективная работа его всецело зависит от уровня оснащения компании информационными средствами на базе компьютерных систем.

В сферах деятельности современных предприятий получили реализацию различные базы данных. Это обосновано тем, что данный раздел информационных технологий имеет значительную степень применимости в практических ситуациях и довольно просто внедряется в каждом конкретном случае. К тому же в настоящее время существует множество всевозможных реализаций баз данных (БД) и систем управления базами данных (СУБД).

База данных (БД) — это специальным образом организованное хранение информационных ресурсов в виде интегрированной совокупности файлов, обеспечивающей удобное взаимодействие между ними и быстрый доступ к данным.

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

Данные в базе организуются в единую целостную систему что обеспечивает более производительную работу пользователей с большими объемами данных.

Система управления базами данных (СУБД) — это система, обеспечивающая поиск, хранение, корректировку данных, формирование ответов на запросы. Система обеспечивает сохранность данных, их конфиденциальность, перемещение и связь с другими программными средствами.

СУБД становятся наиболее популярным средством обработки табличной информации. Они являются инструментальным средством проектирования баз данных при обработке больших объемов информации.

СУБД реляционного типа являются наиболее распространенным на всех классах ЭВМ, а на ПК занимают доминирующее положение. СУБД позволяет структурировать, систематизировать и организовать данные для их компьютерного хранения и обработки. В данном курсовом проекте разработана база данных «Магазин компьютерных комплектующих».

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

Задачи курсового проекта: получить возможность просматривать, редактировать, добавлять данные, получать результаты запросов. В качестве приложения для разработки базы данных использован язык MySQL, а в качестве разработки СУБД использован программный продукт Borland Delphi 7. Разработанная программа предназначена для работы на компьютерах с операционными системами семейства Windows. Программа не требовательна к ресурсам системы и проста в использовании, благодаря удобному пользовательскому интерфейсу.

1. Этапы разработки базы данных

1.1 Описание предметной области

В магазине компьютерных комплектующих, как и в любом другом магазине главное — это товары и их продажи.

Поэтому базу данных можно разделить на две части: собственно сами товары (куда входит подробная информация о каждом товаре, и об его специфике) и операции с товарами (закупка, поставки, продажа, хранение на складе и т. д.).

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

Поэтому в базе данных, мне хотелось бы уделить больше внимания товарам, разделив их на типы.

1.2 Концептуальная модель и ее описание

Для данной предметной области можно спроецировать простую концептуальную модель, которая будет состоять из 2 объектов, связанных между собой.

Объект «Товар», хранит информацию о типе товара, его параметрах, цене и т. д.

Объект «ПрОДАЖИ», хранит информацию о проданных товарах, их наименовании, количестве, дате продажи, цене.

Концептуальная модель транслируется затем в модель данных, совместимую с выбранной системой управления базами данных (далее СУБД). Возможно, что отраженные в концептуальной модели взаимосвязи между объектами окажутся впоследствии нереализуемыми средствами выбранной СУБД. Это потребует изменения концептуальной модели. Версия концептуальной модели, которая может быть обеспечена конкретной СУБД, называется логической моделью.

1.3 Логическая модель

Логическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среде хранения.

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

Как видно из логической модели (см. рисунок 1.), база данных будет состоять из двух сущностей:

ТОВАРЫ. Сюда заносится вся информация о товарах. Причём, сущность ТОВАРЫ разбита на 4 `подсущности', которые логически связанны между собой:

МАТЕРИНСКИЕ ПЛАТЫ

ПРОЦЕССОРЫ

ВИДЕОКАРТЫ

МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ;

ПРОДАЖИ. Здесь хранится информация о когда-либо проданных товарах.

1.4 Физическая модель

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

Внешние модели никак не связаны с типом физической памяти, в которой будут храниться данные, и с методами доступа к этим данным. Это положение отражает первый уровень независимости данных. С другой стороны, если концептуальная модель способна учитывать расширение требований к системе в будущем, то вносимые в нее изменения не должны оказывать влияния на существующие внешние модели. Это — второй уровень независимости данных. Построение логической модели обусловлено требованиями используемой СУБД.

Все актуальные требования предметной области и адекватные им «скрытые» требования на стадии проектирования должны найти свое отражение в концептуальной модели. Конечно, нельзя предусмотреть все возможные варианты использования и изменения базы данных. Но в большинстве предметных областей такие основные данные, как объекты и их взаимосвязи, относительно стабильны. Меняются только информационные требования, то есть способы использования данных для получения информации.

Степень независимости данных определяется тщательностью проектирования базы данных. Всесторонний анализ объектов предметной области и их взаимосвязей минимизирует влияние изменения требований к данным в одной программе на другие программы.

1.5 Описание таблиц

Структура таблицы ПРОЦЕССОРЫ

Значение

Название поля в БД

Тип данных

Код товара

ID_proc

INT (12), NOT NULL, PRIMARY KEY

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

Name

VARCHAR (40)

Разъём процессора

Socket

VARCHAR (12)

Ядро

Core

VARCHAR (12)

Количество ядер

Number_cores

INT (12)

Техпроцесс, нм

Process_tech_nm

INT (12)

Частота, МГц

Frequency_MGz

INT (12)

Системная шина

System_bus

VARCHAR (12)

Цена, руб

Price_rub

INT (12), NOT NULL

Структура таблицы ВИДЕОКАРТЫ

Значение

Название поля в БД

Тип данных

Код товара

ID_VGA

INT (12), NOT NULL, PRIMARY KEY

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

Name

VARCHAR (40)

Разъём процессора

Graph_proc

VARCHAR (20)

Частота граф. процессора

Frenq_proc_MGz

INT (12)

Поддержка интерфейса

Interface

VARCHAR (12)

Граф. память

VRAM_Mb

INT (12)

Тип граф. памяти

Type_VRAM

VARCHAR (12)

Версия шейдеров

Shaders

DOUBLE

Цена, руб

Price_rub

INT (12), NOT NULL

Структура таблицы МАТЕРИНСКИЕ ПЛАТЫ

Значение

Название поля в БД

Тип данных

Код товара

ID_MB

INT (12), NOT NULL, PRIMARY KEY

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

Name

VARCHAR (40)

Разъём процессора

CPU_Socket

VARCHAR (12)

Чипсет

Сhipset

VARCHAR (12)

Тип памяти

Memory_type

VARCHAR (12)

Слотов памяти

Memory_stots

INT (12)

Макс объём памяти

Memory_max_Gb

INT (12)

Поддержка видеокарт

VGA_sup

VARCHAR (12)

Цена, руб

Price_rub

INT (12), NOT NULL

Структура таблицы МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ

Значение

Название поля в БД

Тип данных

Код товара

ID_DDR

INT (12), NOT NULL, PRIMARY KEY

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

Name

VARCHAR (40)

Тип памяти

DDR_type

VARCHAR (12)

Форм-фактор

Form

VARCHAR (12)

Частота

Frequency_MGz

INT (12)

Объём

Size_Gb

INT (12)

Цена, руб

Price_rub

INT (12), NOT NULL

Структура таблицы ПРОДАЖИ

Значение

Название поля в БД

Тип данных

Код продажи

ID_Sale

INT (12), NOT NULL, PRIMARY KEY AUTO_INCREMENT

Код товара

Item_ID

INT (12)

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

Item_Name

VARCHAR (40)

Количество

Number

INT (12)

Продавец

Seller

INT (12)

Дата, время продажи

Data_Time_sale

INT (12)

Цена

Price

INT (12)

2. Проектирование приложения

2.1 Выбор среды программирования

2.1.1 Denwer 3 + MySQL Server 5.5. 25

В качестве локального сервера MySQL я использовал локальный сервер Денвер версии 3.0. Локальный сервер Денвер 3 включает в себя уже установленные MySQL Server 5.5. 25 и PhpMyAdmin 3.5. 1, а так же локальный сервер можно перенести на другой компьютер без потери каких либо данных. А PhpMyAdmin более комфортен в работе с сервером MySQL, чем MySQL CommandLine.

Рисунок 2 — PhpMyAdmin 3.5. 1

2.1.2 Connector/ODBC 5.2. 5

Это стандартный драйвер, который обеспечивает доступ к базе данных MySQL через Open Database Connectivity (ODBC) API. Включает в себя функциональность Unicode и ANSI драйверов ранее разделёных на Connector/ODBC 5.1 и Connector/ODBC 3. 51.

2.1.3 Borland Delphi 7

Мощность и гибкость Delphi при работе с базами данных основана на
низкоуровневом ядре — процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию Open DataBase Connectivity (ODBC) фирмы Microsoft.

Все инструментальные средства баз данных Borland — Paradox, dBase,
Database Desktop — используют BDE. Все особенности, имеющиеся в Paradox или dBase, «наследуются» BDE, и поэтому этими же особенностями обладает и Delphi.

Одним из преимуществ Delphi является то, что он поддерживает все SQL-БД, доступ к которым осуществляется через Borland Database Engine, ADO или драйверы InterBase. Через Borland SQL Links BDE так же возможен доступ к Oracle, Sybase, Informix, MS SQL Server, DB2 и InterBase.

2.1.4 Технология ADO

Для применения технологии ADO в Delphi 7 предназначены семь компонентов, расположенных на закладке ADO палитры компонентов.

рис. 3 Компоненты страницы ADO

Название

Описание

ADOConnection

Функционально аналогичен компоненту Database закладки BDE. Позволяет указывать местоположение базы данных и работать с транзакциями

ADOCommand

Предназначен для выполнения SQL-команды без возврата результирующего набора данных

ADODataset

Предназначен для получения набора данных из одной или нескольких таблиц БД. Позволяет работать с возвращённым набором данных визуальным компонентам

ADOTable

Аналог компонента Table, расположенного на закладке BDE. Используется для доступа к таблице с помощью механизма ADO

ADOQuery

Аналог Query. Позволяет формировать запросы к БД, которые возвращают данные из базы (например, командой SELECT) или не формируют результирующего набора данных (например, INSERT)

ADOStoredProc

Предназначен для вызова процедуры, хранимой на сервере базы данных. Является потомком TDataSet, в отличие от BDE и InterBase позволяет возвращать набор данных, поэтому может выступать источником данных в компонентах типа DataSource

RDSConnection

Управляет механизмом, который позволяет клиенту получать доступ к объектам, расположенным в другом адресном пространстве или на другом компьютере

2.2 Разработка интерфейса

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

рис. 4 Окно доступа к БД

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

рис. 5. Окно программы, вкладка Товары. Процессоры

Переключатся между таблицами можно просто переключая вкладки или использовать меню.

рис. 6 Меню программы

На вкладке товары иформация о товарах предоставлена в виде форм.

На вкладке «Продажи» информация о продажах представлена в виде таблицы.

рис. 7 Вкладка Продажи

2.3 Разработка запросов

Поиск товара по ID

На вкладке товары находится панель поиска товара по коду.

В базе данных каждый тип товара имеет свой префикс в коде товара:

1xxx — процессоры

2xxx — видеокарты

3xxx — материнские платы

4xxx — оперативная память

В зависимости от введённого кода, выполняется поиск по определённой таблице с товарами (см. Приложение 1, procedure TForm1. Button5Click).

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

Результат работы запроса:

Занесение данных о покупке в таблицу Продажи

На вкладке Продажи правая часть — это панель занесения данных в таблицу Продажи.

Нужно ввести всего лишь код товара и количество. Остальное программа выполнит за вас (см. Приложение 1, procedure TForm1. Timer1Timer).

Просто нажмите кнопку «Готово» (см. Приложение 1, procedure TForm1. Button17Click).

На данный момент в можно добавлять до 4 записей в таблицу продажи одновременно.

Результат работы запроса:

2.3.3 Подбор комплектующих

При нажатии на пункт меню «Подбор комплектующих» открывается одноимённая форма:

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

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

Ознакомиться с работой запроса можно в листинге Unit3.

Заключение

С помощью спроектированной СУБД можно наглядно демонстрировать информацию о товарах, производить поиск по товарам, осуществлять ввод информации о новых товарах.

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

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

На основе достигнутых результатов можно сформулировать рекомендации по улучшению программы:

Использование web-технологий для доступа к данных через Интернет.

Разработка новых таблиц базы данных для других типов комплектующих

Добавление информации о поставщиках, поставках, сотрудниках

Создание клиентской версии программы, с помощью которой пользователи смогут ознакомиться с товарами, подбирать комплектующие.

Создание серверной версии программы с расширенным функционалом и большими возможностями.

Список использованной литературы

Фёдоров А. Г. Создание Windows-приложений в среде Delphi. — М.: ТОО «Компьютер Пресс», 1995. — 287с.

Хоменко А.Д. Delphi 7. — СПб.: БХВ-Петербург, 2003. — 1216с.

Хоменко А. Д. Основы современных компьютерных технологий. — М.: ТОО «Компьютер Пресс», 2000 г. — 467с.

http: //www. site-do. ru/db/db. php Уроки SQL и базы данных.

http: //www. snkey. net/books/delphi/ch4−6. html — создание запросов в Delphi. +2 методички, гост СТО

Приложение 1

Листинг основных процедур Unit1

procedure TForm1. Button5Click (Sender: TObject);

var code: Integer;

begin

code: =StrToInt (Edit1. Text);

if ((code> 1000) and (code< 5000)) then

begin

Button6. Click;

DBNavigator1. Visible:=False;

Button6. Visible:=True;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

if ((code> 1000) and (code< 2000)) then

begin

TabSheet3. Show; TabSheet4. TabVisible:=False; TabSheet5. TabVisible:=False; TabSheet6. TabVisible:=False;

ADOQuery1. SQL. ADD ('SELECT*FROM processors WHERE ID_proc ='+#39+IntToStr (code)+#39'');

ADOQuery1. Open;

DataSource1. DataSet. Close;

DataSource1. DataSet:=ADOQuery1;

if (DBEdit1. Text='') then Error. ShowModal;

end;

if ((code> 2000) and (code< 3000)) then

begin

TabSheet4. Show; TabSheet3. TabVisible:=False; TabSheet5. TabVisible:=False; TabSheet6. TabVisible:=False;

ADOQuery1. SQL. ADD ('SELECT*FROM vga WHERE ID_VGA ='+#39+IntToStr (code)+#39'');

ADOQuery1. Open;

DataSource2. DataSet. Close;

DataSource2. DataSet:=ADOQuery1;

if (DBEdit10. Text='') then Error. ShowModal;

end;

if ((code> 3000) and (code< 4000)) then

begin

TabSheet5. Show; TabSheet3. TabVisible:=False; TabSheet4. TabVisible:=False; TabSheet6. TabVisible:=False;

ADOQuery1. SQL. ADD ('SELECT*FROM motherboards WHERE ID_MB ='+#39+IntToStr (code)+#39'');

ADOQuery1. Open;

DataSource3. DataSet. Close;

DataSource3. DataSet:=ADOQuery1;

if (DBEdit19. Text='') then Error. ShowModal;

end;

if ((code> 4000) and (code< 5000)) then

begin

TabSheet6. Show; TabSheet3. TabVisible:=False; TabSheet4. TabVisible:=False; TabSheet5. TabVisible:=False;

ADOQuery1. SQL. ADD ('SELECT*FROM memory WHERE ID_DDR ='+#39+IntToStr (code)+#39'');

ADOQuery1. Open;

DataSource4. DataSet. Close;

DataSource4. DataSet:=ADOQuery1;

if (DBEdit28. Text='') then Error. ShowModal;

end;

end

else Error. ShowModal;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

var Sum: integer;

begin

Sum: =0;

Label46. Caption := DateToStr (Now);

Label47. Caption := TimeToStr (Time);

///////////////////////////////////////////////////////////////////

/////1 товар

if ((Edit2. Text>'1000') and (Edit2. Text<'5000')) then

begin

ADOQuery2. Close;

ADOQuery2. SQL. Clear;

if ((Edit2. Text>'1000') and (Edit2. Text<'2000')) then

ADOQuery2. SQL. ADD ('SELECT*FROM processors WHERE ID_proc ='+#39+Edit2. Text+#39'');

if ((Edit2. Text>'2000') and (Edit2. Text<'3000')) then

ADOQuery2. SQL. ADD ('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit2. Text+#39'');

if ((Edit2. Text>'3000') and (Edit2. Text<'4000')) then

ADOQuery2. SQL. ADD ('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit2. Text+#39'');

if ((Edit2. Text>'4000') and (Edit2. Text<'5000')) then

ADOQuery2. SQL. ADD ('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit2. Text+#39'');

ADOQuery2. Open;

DataSource5. DataSet. Close;

DataSource5. DataSet:=ADOQuery2;

DBText1. DataSource:=DataSource5;

DBText1. DataField:='Name';

DBText1. DataSource. DataSet. Active:=true;

DBText2. DataSource:=DataSource5;

DBText2. DataField:='Price_rub';

DBText2. DataSource. DataSet. Active:=true;

if DBText1. Caption='' then

begin

DBText1. Caption:='Товар не найден!!!';

DBText2. Caption:='';

Label51. Visible:=False;

Label49. Visible:=False;

Edit3. Visible:=False;

end

else

begin

Label51. Visible:=True;

Label49. Visible:=True;

Edit3. Visible:=True;

end;

end

else

begin

DBText1. Caption:='Товар не найден!!!';

DBText2. Caption:='';

Label51. Visible:=False;

Label49. Visible:=False;

Edit3. Visible:=False;

end;

/////////////////////////////////////////////////////////////////////////////

if ((Edit4. Text>'1000') and (Edit4. Text<'5000')) then

begin

ADOQuery3. Close;

ADOQuery3. SQL. Clear;

if ((Edit4. Text>'1000') and (Edit4. Text<'2000')) then

ADOQuery3. SQL. ADD ('SELECT*FROM processors WHERE ID_proc ='+#39+Edit4. Text+#39'');

if ((Edit4. Text>'2000') and (Edit4. Text<'3000')) then

ADOQuery3. SQL. ADD ('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit4. Text+#39'');

if ((Edit4. Text>'3000') and (Edit4. Text<'4000')) then

ADOQuery3. SQL. ADD ('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit4. Text+#39'');

if ((Edit4. Text>'4000') and (Edit4. Text<'5000')) then

ADOQuery3. SQL. ADD ('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit4. Text+#39'');

ADOQuery3. Open;

DataSource6. DataSet. Close;

DataSource6. DataSet:=ADOQuery3;

DBText3. DataSource:=DataSource6;

DBText3. DataField:='Name';

DBText3. DataSource. DataSet. Active:=true;

DBText4. DataSource:=DataSource6;

DBText4. DataField:='Price_rub';

DBText4. DataSource. DataSet. Active:=true;

if DBText3. Caption='' then

begin

DBText3. Caption:=

DBText4. Caption:='';

Label53. Visible:=False;

Label54. Visible:=False;

Edit5. Visible:=False;

end

else

begin

Label53. Visible:=True;

Label54. Visible:=True;

Edit5. Visible:=True;

end;

end

else

begin

DBText3. Caption:=

DBText4. Caption:='';

Label53. Visible:=False;

Label54. Visible:=False;

Edit5. Visible:=False;

end;

///////////////////////////////////////////////////////////////

if ((Edit6. Text>'1000') and (Edit6. Text<'5000')) then

begin

ADOQuery4. Close;

ADOQuery4. SQL. Clear;

if ((Edit6. Text>'1000') and (Edit6. Text<'2000')) then

ADOQuery4. SQL. ADD ('SELECT*FROM processors WHERE ID_proc ='+#39+Edit6. Text+#39'');

if ((Edit6. Text>'2000') and (Edit6. Text<'3000')) then

ADOQuery4. SQL. ADD ('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit6. Text+#39'');

if ((Edit6. Text>'3000') and (Edit6. Text<'4000')) then

ADOQuery4. SQL. ADD ('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit6. Text+#39'');

if ((Edit6. Text>'4000') and (Edit6. Text<'5000')) then

ADOQuery4. SQL. ADD ('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit6. Text+#39'');

ADOQuery4. Open;

DataSource7. DataSet. Close;

DataSource7. DataSet:=ADOQuery4;

DBText5. DataSource:=DataSource7;

DBText5. DataField:='Name';

DBText5. DataSource. DataSet. Active:=true;

DBText6. DataSource:=DataSource7;

DBText6. DataField:='Price_rub';

DBText6. DataSource. DataSet. Active:=true;

if DBText5. Caption='' then

begin

DBText5. Caption:='Товар не найден!!!';

DBText6. Caption:='';

Label56. Visible:=False;

Label57. Visible:=False;

Edit7. Visible:=False;

end

else

begin

Label56. Visible:=True;

Label57. Visible:=True;

Edit7. Visible:=True;

end;

end

else

begin

DBText5. Caption:='Товар не найден!!!';

DBText6. Caption:='';

Label56. Visible:=False;

Label57. Visible:=False;

Edit7. Visible:=False;

end;

//////////////////////////////////////////////////////////////

/// 4 товар

if ((Edit8. Text>'1000') and (Edit8. Text<'5000')) then

begin

ADOQuery5. Close;

ADOQuery5. SQL. Clear;

if ((Edit8. Text>'1000') and (Edit8. Text<'2000')) then

ADOQuery5. SQL. ADD ('SELECT*FROM processors WHERE ID_proc ='+#39+Edit8. Text+#39'');

if ((Edit8. Text>'2000') and (Edit8. Text<'3000')) then

ADOQuery5. SQL. ADD ('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit8. Text+#39'');

if ((Edit8. Text>'3000') and (Edit8. Text<'4000')) then

ADOQuery5. SQL. ADD ('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit8. Text+#39'');

if ((Edit8. Text>'4000') and (Edit8. Text<'5000')) then

ADOQuery5. SQL. ADD ('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit8. Text+#39'');

ADOQuery5. Open;

DataSource8. DataSet. Close;

DataSource8. DataSet:=ADOQuery5;

DBText7. DataSource:=DataSource8;

DBText7. DataField:='Name';

DBText7. DataSource. DataSet. Active:=true;

DBText8. DataSource:=DataSource8;

DBText8. DataField:='Price_rub';

DBText8. DataSource. DataSet. Active:=true;

if DBText7. Caption='' then

begin

DBText7. Caption:='Товар не найден!!!';

DBText8. Caption:='';

Label59. Visible:=False;

Label60. Visible:=False;

Edit9. Visible:=False;

end

else

begin

Label59. Visible:=True;

Label60. Visible:=True;

Edit9. Visible:=True;

end;

end

else

begin

DBText7. Caption:='Товар не найден!!!';

DBText8. Caption:='';

Label59. Visible:=False;

Label60. Visible:=False;

Edit9. Visible:=False;

end;

////////////////////////////////////////////////////////////////

if ((DBText2. Caption<>'') and (Edit3. Text<>'')) then

Sum: =Sum+StrToInt (DBText2. Caption)*StrToInt (Edit3. Text);

if ((DBText4. Caption<>'') and (Edit3. Text<>'')) then

Sum: =Sum+StrToInt (DBText4. Caption)*StrToInt (Edit5. Text);

if ((DBText6. Caption<>'') and (Edit3. Text<>'')) then

Sum: =Sum+StrToInt (DBText6. Caption)*StrToInt (Edit7. Text);

if ((DBText8. Caption<>'') and (Edit3. Text<>'')) then

Sum: =Sum+StrToInt (DBText8. Caption)*StrToInt (Edit9. Text);

Label65. Caption:=IntToStr (Sum);

end;

procedure TForm1. Button17Click (Sender: TObject);

begin

ADOQuery6. Close;

ADOQuery6. SQL. Clear;

ADOQuery6. SQL. Add ('INSERT INTO sales (Item_ID, Item_Name, Number, Seller, Data_Time_sale, Price) VALUES');

if (DBText2. Caption<>'') then

ADOQuery6. SQL. Add ('('+#39+Edit2. Text+#39','+#39+DBText1. Caption+#39','+#39+Edit3. Text+#39','+#39+ComboBox1. Text+#39', NOW (),'+#39+IntToStr (StrToInt (DBText2. Caption)*StrToInt (Edit3. Text))+#39')');

if (DBText4. Caption<>'') then ADOQuery6. SQL. Add (',('+#39+Edit4. Text+#39','+#39+DBText3. Caption+#39','+#39+Edit5. Text+#39','+#39+ComboBox1. Text+#39', NOW (),'+#39+IntToStr (StrToInt (DBText4. Caption)*StrToInt (Edit5. Text))+#39')');

if (DBText6. Caption<>'') then

ADOQuery6. SQL. Add (',('+#39+Edit6. Text+#39','+#39+DBText5. Caption+#39','+#39+Edit7. Text+#39','+#39+ComboBox1. Text+#39', NOW (),'+#39+IntToStr (StrToInt (DBText6. Caption)*StrToInt (Edit7. Text))+#39')');

if (DBText8. Caption<>'') then

ADOQuery6. SQL. Add (',('+#39+Edit8. Text+#39','+#39+DBText7. Caption+#39','+#39+Edit9. Text+#39','+#39+ComboBox1. Text+#39', NOW (),'+#39+IntToStr (StrToInt (DBText8. Caption)*StrToInt (Edit9. Text))+#39')');

ADOQuery6. SQL. Add (';');

ADOQuery6. ExecSQL;

Button18. Click;

Button16. Click;

end;

procedure TForm1. Button18Click (Sender: TObject);

begin

if Panel1. Width>25 then Button8. Click;

if Panel2. Width>25 then Button10. Click;

if Panel3. Width>25 then Button12. Click;

if Panel4. Width>25 then Button14. Click;

Panel2. Visible:=False;

Panel3. Visible:=False;

Panel4. Visible:=False;

Panel5. Visible:=False;

end;

procedure TForm1. Button16Click (Sender: TObject);

var date1, date2: string;

begin

DataSource9. DataSet:=ADOTable5;

DBGrid1. DataSource:=DataSource9;

date1: =FormatDateTime ('yyyy-mm-dd 00−00−00', DateTimePicker1. DateTime);

date2: =FormatDateTime ('yyyy-mm-dd 23−59−59', DateTimePicker2. DateTime);

ADOQuery7. Close;

ADOQuery7. SQL. Clear;

ADOQuery7. SQL. Add ('SELECT*FROM sales WHERE ((Data_Time_sale > ='+#39+date1+#39') and (Data_Time_sale < ='+#39+date2+#39'));');

ADOQuery7. Open;

DataSource9. DataSet. Close;

DataSource9. DataSet:=ADOQuery7;

DBGrid1. DataSource:=DataSource9;

end;

Приложение 2

Листинг Unit3

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, DBCtrls, DB, ADODB;

type

TForm3 = class (TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Button1: TButton;

Button2: TButton;

Label1: TLabel;

ADOConnection1: TADOConnection;

DataSource1: TDataSource;

ADOTable1: TADOTable;

DBLookupComboBox1: TDBLookupComboBox;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

DBText1: TDBText;

DBText2: TDBText;

DBText3: TDBText;

DBText4: TDBText;

DBText5: TDBText;

DBText6: TDBText;

DBText7: TDBText;

Label8: TLabel;

Label9: TLabel;

DBImage1: TDBImage;

Label10: TLabel;

DBLookupComboBox2: TDBLookupComboBox;

DBImage2: TDBImage;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

DBText8: TDBText;

DBText9: TDBText;

DBText10: TDBText;

DBText11: TDBText;

DBText12: TDBText;

ADOQuery1: TADOQuery;

DataSource2: TDataSource;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

DBLookupComboBox3: TDBLookupComboBox;

DataSource3: TDataSource;

ADOQuery2: TADOQuery;

Label18: TLabel;

DataSource4: TDataSource;

DBLookupComboBox4: TDBLookupComboBox;

ADOQuery3: TADOQuery;

DBImage3: TDBImage;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

DBText13: TDBText;

DBText14: TDBText;

DBText15: TDBText;

DBText16: TDBText;

DBText17: TDBText;

DBImage4: TDBImage;

Label25: TLabel;

Label26: TLabel;

Label27: TLabel;

Label28: TLabel;

Label29: TLabel;

DBText18: TDBText;

DBText19: TDBText;

DBText20: TDBText;

DBText21: TDBText;

Label30: TLabel;

Label31: TLabel;

Label32: TLabel;

ComboBox1: TComboBox;

Label33: TLabel;

Timer1: TTimer;

Label34: TLabel;

procedure DBLookupComboBox1Click (Sender: TObject);

procedure DBLookupComboBox2Click (Sender: TObject);

procedure DBLookupComboBox3Click (Sender: TObject);

procedure DBLookupComboBox4Click (Sender: TObject);

procedure ComboBox1DropDown (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *. dfm}

procedure TForm3. DBLookupComboBox1Click (Sender: TObject);

begin

DBImage1. Visible:=True;

Panel1. Height:=170;

Panel1. Width:=380;

if ((Panel2. Height<70) and (Panel2. Top<150)) then Panel2. Top:=Panel2. Top+110;

ADOQuery1. Close;

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Add ('SELECT*FROM processors WHERE Socket='+#39+DBText2. Caption+#39';');

ADOQuery1. Open;

DataSource2. DataSet:=ADOQuery1;

ADOQuery2. Close;

ADOQuery2. SQL. Clear;

ADOQuery2. SQL. Add ('SELECT*FROM vga WHERE Interface='+#39+DBText3. Caption+#39';');

ADOQuery2. Open;

DataSource3. DataSet:=ADOQuery2;

ADOQuery3. Close;

ADOQuery3. SQL. Clear;

ADOQuery3. SQL. Add ('SELECT*FROM memory WHERE DDR_Type='+#39+DBText4. Caption+#39';');

ADOQuery3. Open;

DataSource4. DataSet:=ADOQuery3;

end;

procedure TForm3. DBLookupComboBox2Click (Sender: TObject);

begin

DBImage2. Visible:=True;

Panel2. Height:=170;

Panel2. Width:=380;

end;

procedure TForm3. DBLookupComboBox3Click (Sender: TObject);

begin

DBImage3. Visible:=True;

Panel3. Height:=170;

Panel3. Width:=380;

if ((Panel4. Height<70) and (Panel4. Top<150)) then Panel4. Top:=Panel4. Top+110;

end;

procedure TForm3. DBLookupComboBox4Click (Sender: TObject);

begin

DBImage4. Visible:=True;

Panel4. Height:=170;

Panel4. Width:=380;

end;

procedure TForm3. ComboBox1DropDown (Sender: TObject);

var i: integer;

begin

ComboBox1. Items. Clear;

for i: =1 to StrToInt (DBText5. Caption) do

begin

if i*StrToInt (DBText20. Caption)<=StrToInt (DBText6. Caption) then

ComboBox1. Items. Add (IntToStr (i));

end;

end;

procedure TForm3. Timer1Timer (Sender: TObject);

begin

if (DBLookupComboBox4. Text='') then

begin

Panel4. Height:=60;

DBImage4. Visible:=False;

end;

if (DBLookupComboBox4. Text<>'') then

begin

Panel4. Height:=170;

DBImage4. Visible:=True;

Label33. Caption:=IntToStr (StrToInt (ComboBox1. Text)*StrToInt (DBText20. Caption));

if (ComboBox1. Text<>'1') then

begin

DBText21. Visible:=False;

Label34. Visible:=True;

Label34. Caption:=IntToStr (StrToInt (ComboBox1. Text)*StrToInt (DBText21. Caption));

end

else

begin

DBText21. Visible:=True;

Label34. Visible:=False;

end;

end;

if (DBLookupComboBox2. Text='') then

begin

Panel2. Height:=60;

DBImage2. Visible:=False;

end;

if (DBLookupComboBox2. Text<>'') then

begin

Panel2. Height:=170;

DBImage2. Visible:=True;

end;

if (DBLookupComboBox3. Text='') then

begin

Panel3. Height:=60;

DBImage3. Visible:=False;

Panel4. Top:=80;

end;

if (DBLookupComboBox3. Text<>'') then

begin

Panel3. Height:=170;

DBImage3. Visible:=True;

Panel4. Top:=190;

end;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

Form3. Close;

end;

procedure TForm3. Button1Click (Sender: TObject);

begin

Form1. TabSheet2. Show;

Form1. Button18. Click;

Form1. Button7. Click;

Form1. Edit2. Text:=DBText1. Caption;

Form1. Button9. Click;

Form1. Edit4. Text:=DBText8. Caption;

Form1. Button11. Click;

Form1. Edit6. Text:=DBText13. Caption;

Form1. Button13. Click;

Form1. Edit8. Text:=DBText18. Caption;

Form1. Edit9. Text:=ComboBox1. Text;

Form3. Close;

end;

end.

ПоказатьСвернуть
Заполнить форму текущей работой