База данных "Магазин компьютерных комплектующих"
Физическая модель, определяющая размещение данных, методы доступа и технику индексирования. Описание и структура таблиц. Выбор среды программирования. Разработка интерфейса, результат работы запроса. Подбор комплектующих. Листинг основных процедур Unit1.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.09.2014 |
Размер файла | 1017,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Содержание
Введение
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 `подсущности', которые логически связанны между собой:
МАТЕРИНСКИЕ ПЛАТЫ
ПРОЦЕССОРЫ
ВИДЕОКАРТЫ
МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ;
ПРОДАЖИ. Здесь хранится информация о когда-либо проданных товарах.
Размещено на http://www.allbest.ru
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.
Размещено на Allbest.ru
Подобные документы
Выбор языка и среды программирования, технологий доступа и взаимодействия с источниками данных. Требования к разработке информационной системы. Проектирование базы данных информационной системы учета и взаимодействующего с ней приложения .NET Framework.
курсовая работа [1,3 M], добавлен 17.05.2013Выбор системы программирования. Разработка программного обеспечения для ведения складского учета (инвентаризации) персональных компьютеров и комплектующих на предприятии. Обоснование даталогической модели данных. Рекомендации по применению программы.
курсовая работа [1,9 M], добавлен 14.01.2013Создание базы данных и СУБД. Структура простейшей базы данных. Особенности языка программирования Турбо Паскаль. Описание типов, констант, переменных, процедур и функций. Описание алгоритма базы данных (для сотрудников ГИБДД), листинг программы.
курсовая работа [26,3 K], добавлен 26.01.2012Выбор и описание автоматизируемых функций: учет кадров, инцидентов, парка компьютерной техники, заказа расходных материалов, комплектующих и ремонта техники. Первичное описание информационного обеспечения. SQL-код для создания таблиц базы данных.
курсовая работа [424,3 K], добавлен 10.04.2011Описание предметной области "Магазин по продаже компьютерных комплектующих". Построение ER и реляционной модели данных, сущности и связи. Создание ER и реляционной модели данных, запросов, представлений, хранимых процедур для предметной области.
курсовая работа [32,2 K], добавлен 15.06.2014Разработка концептуальной модели базы данных "Чемпионат авто": описание предметной области, каталог задач, описание таблиц, схема данных, ER-диаграмма. Проектирование реляционной модели "Спортивный комплекс". Реализация и результат работы базы данных.
курсовая работа [3,7 M], добавлен 14.06.2011Cоздание базы данных "Договора" для сети компьютерных магазинов "Вега" в целях автоматизации процессов учета поставки товаров, обеспечения уверенного поиска поставщиков (комплектующих) по заданным условиям. Организация работы базы данных в локальной сети.
курсовая работа [1,9 M], добавлен 05.06.2013Структура, классификация и этапы проектирования баз данных. Системы управления базами данных, их жизненный цикл. Разработка и реализация базы данных в MS Access. Организация входных и выходных данных. Защита данных от внешних угроз. Сведение о программе.
курсовая работа [558,6 K], добавлен 21.06.2012Разработка программной системы автоматизации работы приемной комиссии. Выбор CASE-средства проектирования базы данных. Разграничение доступа к записям таблиц. Триггеры и функции БД. Выбор интерфейса программирования. Разработка классов и структур данных.
дипломная работа [1,9 M], добавлен 07.03.2012Разработка информационной системы, выбор языка программирования, физическое описание базы данных, выбор типа и описание таблиц базы данных. Техническое проектирование, ограничения и значения по умолчанию, представления, хранимые процедуры и триггеры.
курсовая работа [519,8 K], добавлен 25.05.2010