Создание программы для упрощения работы магазина по продаже автомобилей

Это наиболее общий компонент для работы с набором данных который может использоваться вместо компонентов DOTble DOQuery или DOStoredProc. Компонент DOQuery представляет собой запрос к базе данных. Они инкапсулированы в компоненты представляющие наборы данных...

2015-09-25

1.62 MB

6 чел.


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск


Содержание

[1] Содержание

[2]
1 Теоретическая часть

[2.1] 1.1 СУБД Microsoft Office Access

[2.2] 1.2 Технология ADO

[2.3] 1.3 Язык SQL

[3] 2 Практическая часть

[3.1] 2.1 Цель работы

[3.2] 2.2 Даталогическое проектирование

[3.3] 2.3 Проектирование БД «Магазин автомобилей»

[3.4] в среде СУБД Microsoft Office Access

[3.5]
2.4 Формализация и постановка задачи

[3.6] 2.5 Разработка ER-диаграмм

[3.7]
2.6 Задание на курсовой проект

[3.8]
2.7 Схема решения задачи

[4]
3 Логика работы программы

[4.1] 3.1 Архитектура программно-аппаратного комплекса

[4.2] 3.2 Минимальные системные требования

[4.3] 3.3 Руководство пользователя

[5]
Заключение

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

[7]
Приложение 1 . Исходный код программы

[8]
Приложение 2 . Блок схемы основных форм


Введение

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

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

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

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

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

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

В данном курсовом проекте предметом исследования является магазин по продаже автомобилей.


1 Теоретическая часть

1.1 СУБД Microsoft Office Access

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

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

Для выполнения почти всех основных операций Access предлагает большое количество Мастеров (Wizards), которые делают основную работу за пользователя при работе с данными и разработке приложений, помогают избежать рутинных действий и облегчают работу неискушенному в программировании пользователю.

Особенности MS Access, отличающиеся от представления об «идеальной» реляционной СУБД. Создание многопользовательской БД Access и получение одновременного доступа нескольких пользователей к общей базе данных возможно в локальной одноранговой сети или в сети с файловым сервером. Сеть обеспечивает аппаратную и программную поддержку обмена данными между компьютерами. Access следит за разграничением доступа разных пользователей к БД и обеспечивает защиту данных. При одновременной работе. Так как Access не является клиент серверной СУБД, возможности его по обеспечению многопользовательской работы несколько ограничены. Обычно для доступа к данным по сети с нескольких рабочих станций, файл БД Access (с расширением *.mdb или *.accdb) выкладывается на файловый сервер. При этом обработка данных ведется в основном на клиенте – там, где запущено приложение, в силу принципов организации файловых СУБД. Этот фактор ограничивает использование Access для обеспечения работы множества пользователей (более 15-20) и при большом количестве данных в таблицах, так как многократно возрастает нагрузка не сеть.

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

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

Однако при известных недостатках MS Access обладает большим количеством преимуществ по сравнению с системами подобного класса.

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

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

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

Access обладает широкими возможностями по импорту/экспорту данных в различные форматы, от таблиц Excel и текстовых файлов, до практически любой серверной СУБД через механизм ODBC.

Еще одно немаловажное преимущество MS Access заключается в развитых встроенных средствах разработки приложений. Большинство приложений, распространяемых среди пользователей, содержит тот или иной объем кода VBA (Visual Basic for Applications). Поскольку VBA является единственным средством для выполнения многих стандартных задач в Access (работа с переменными, построение команд SQL во время работы программы, обработка ошибок, использование Windows API и т. д.), для создания более-менее сложных приложений необходимо его знание и знание объектной модели MS Access.

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

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

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

Компоненты для работы с Microsoft ActiveX Data Objects (ADO) впервые появились в среде Delphi версии 5.

ADO — это технология стандартного обращения к реляционным структурам данных от Microsoft. Она аналогична BDE по назначению и сродни ему по возможностям.

В основе архитектуры ADO лежит объектная модель компонентов COM (Component Object Model). Все объекты и интерфейсы ADO представляют собой интерфейсы и объекты СОМ.

Модель СОМ является базовой для технологий ActiveX и OLE. Проиллюстрировать это отношение можно на примере объекта TObject, как базового объекта для VC L Delphi.

Технология СОМ работаете так называемыми СОМ-обьектами. Во многом СОМ-объекты похожи на обычные объекты визуальной библиотеки компонентов Delphi. Но, в отличие от последних, СОМ-объекты не содержат поля, в них находятся лишь свойства и методы, а также интерфейсы.

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

Обычный СОМ-объект включает в себя один или несколько интерфейсов. Кроме того, СОМ-объект содержит методы, которые позволяют приложению пользоваться им.

Технология СОМ имеет два явных плюса:

  •  создание СОМ-объектов не зависит от языка программирования. Таким образом, СОМ-объекты могут быть написаны на различных языках;
  •  СОМ-объекты пригодны для использования в любой среде программирования под Windows. В число этих сред входятDelphi, Visual С++, С++ Builder, Visual Basic и многие другие.

ПРИМЕЧАНИЕ: Хотя технология СОМ имеет очевидные достоинства, ей свойственны также и минусы, среди которых можно выделить зависимость от платформы. Эта технология применима только в операционной системе Windows и на платформе Intel.

Технология СОМ реализуется с помощью СОМ-библиотек (такие файлы операционной системы, как OLE32.DLL и OLEAUT32.DLL). СОМ-библиотеки содержат набор стандартных интерфейсов, которые отвечают за функциональность СОМ-объекта, а также небольшой набор функций API, обеспечивающих создание СОМ-объектов и управление ими.

В Delphi воплощение и поддержка технологии СОМ называется Delphi ActiveX framework, DAX. Реализация DAX описана в модуле AxCtrls.

Рассмотрим особенности архитектуры ADO (Рисунок 1).

 

Рисунок 1 - Архитектура ADO

Перечислим основные интерфейсы ADO и кратко поясним их назначение:

  •  интерфейс IConnection выполняет следующие функции:
  •  осуществляет связь с сервером;
  •  управляет транзакциями;
  •  получает информацию о произошедших ошибках (свойство Errors);
  •  получает информацию о схеме данных (таблицы, поля и т. д.);
  •  интерфейс IRecordset (на нижнем уровне ADO это IRowset) является аналогом TDataSet в Delphi и поддерживает текущее положение и перемещение курсора, закладки (Bookmarks), чтение, изменение и удаление записей и т. п.;
  •  интерфейс IReld позволяет получать значение поля, его тип, длину и другие сведения о поле данных;
  •  интерфейсы ICommand и IParameter обеспечивают работу с командами источника данных. Синтаксис команд для каждого из источников свой собственный;
  •  интерфейс IProperty позволяет получать и устанавливать параметры, специфические для провайдера данных.

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

Рисунок 2 – палитра компонентов ADO

Первый компонент называется ADOConnection. Функционально он аналогичен компоненту Database закладки BDE. С помощью компонента ADOConnection можно указывать местоположение базы данных и работать с транзакциями. Рассмотрим основные свойства компонента ADOConnection, отображаемые в окне инспектора объектов (Таблица 1).

Таблица 1 – Основные свойства ADOConnection

Следующий компонент закладки ADO называется ADOCommand. Он предназначен для выполнения SQL-команды без возврата результирующего набора данных (Таблица 2).

Таблица 2 - Основные свойства компонента ADOCommand

Третий компонент закладки ADO – ADODataSet. Его назначение — получение набора данных из одной или нескольких таблиц базы данных. Кроме того, он также позволяет работать с возвращенным набором данных визуальным компонентам, предназначенным для отображения данных. Это наиболее общий компонент для работы с набором данных, который может использоваться вместо компонентов ADOTable, ADOQuery или ADOStoredProc. В таблице 3 приведены основные свойства указанного компонента.

Таблица 3 - Основные свойства компонента ADODataSet

Следующий компонент закладки ADO называется ADOTable. Он является аналогом компонента Table, расположенного на закладке BDE, и предназначен для доступа к таблице с помощью механизма ADO. Компонент ADOTable имеет свойства, которые мы уже рассматривали ранее в компонентах Table и ADODataSet, поэтому мы не будем возвращаться к ним еще раз.

Компонент ADOQuery представляет собой запрос к базе данных. Это может быть как запрос, в результате которого возвращаются данные из базы (например, SELECT), так и запрос, не формирующий результирующего набора данных (например, INSERT). Компонент аналогичен компоненту Query из BDE. Все основные его свойства мы уже рассматривали в описании свойств компонентов Query н ADODataSet

Компонент ADOStoredProc предназначен для вызова процедуры, хранимой на сервере базы данных. В отличие от BDE и InterBase хранимые процедуры в ADO могут возвращать набор данных, поэтому компонент такого типа является потомком DataSet и может выступать источником данных в компонентах типа DataSource.

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

ПРИМЕЧАНИЕ: Маршалингом данных называется механизм, который позволяет клиенту получать доступ к объектам, расположенным в другом адресном пространстве или на другом компьютере.

На события в ADO возлагаются те же задачи, что и на события в VCL. Многие из событий ADO имеют аналоги в VCL, и соответствующие компоненты вызывают из событий ADO события VCL.

Все события в ADO условно разделим на несколько групп: события соединения, события транзакции, события выполнения команд. События соединения:

  •  OnWillConnect — вызывается перед установкой соединения;
  •  OnConnectComplete — вызывается после установки соединения;
  •  OnDisconnect — активируется при разрыве соединения. Эти события инкапсулированы в компоненте ADOConnection.События транзакции:
  •  OnBeginTransComplete — происходят при выполнении BeginTrans;
  •  OnCommitTransComplete — происходят при выполнении CommitTrans;
  •  OnRollbackTransComplete — вызываются при выполнении RollbackTrans.

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

Эти события «зашиты» в компоненте ADOConnection, а не в ADOCommand, как можно было бы предположить. Указанная «странность» связана с тем, что в ADO объекта команды как такового нет, и по этой причине он не может получать сообщения.

В компонент ADOConnection также встроено событие OnlnfoMessage, которое вызывается по факту прихода с сервера дополнительной информации. Формат и назначение зависят от сервера, с которым вы работаете.

В ADO есть и события, связанные с набором данных, а не с соединением, как вышеописанные. Они инкапсулированы в компоненты, представляющие наборы данных: ADODataSet, ADOTable, ADOQuery и ADOStoredProc.

Эти события можно условно разбить на три группы.

События выборки данных.

  •  OnFetchProgress — многократно вызывается в процессе выборки данных;
  •  OnFetchComplete — завершение выборки.
  •  Уведомления об изменении положения текущей записи в наборе:
  •  OnWillMove — вызывается до изменения положения текущей записи. Позволяет отменить действие;
  •  OnMoveComplete — вызывается после изменения положения текущей записи;
  •  OnEndOfRecordset — генерируется при достижении конца набора данных. Позволяет добавить новую запись.

Уведомления об изменении набора данных.

  •  OnWillChangeField, OnFieldChangeComplete — вызываются до и после изменения текущей записи набора;
  •  OnWillChangeRecord, OnRecordChangeComplete — вызываются до и после изменения, добавления, удаления строки набора и при отмене этих действий;
  •  OnWillChangeRecordset, OnRecordsetChangeComplete — вызываются до и после открытия, закрытия, повторного запроса и синхронизации набора данных.

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

В ADO есть возможность, не имеющая аналогов ни в BDE, ни в InterBase. Это асинхронное выполнение операций с сервером. Асинхронно могут выполняться:

  •  установка соединения с сервером (Connection);
  •  выполнение команды (Execute);
  •  выборка данных (Fetch).

Для включения этого режима необходимо присвоить свойству ConnectOptions компонента ADOConnection значение coAsyncConnect.

При установлении соединения происходит следующее:

  •  вызывается обработчик события OnWillConnect;
  •  управление передается программе.
  •  После завершения соединения, как успешного, так и ошибочного, вызывается обработчик события OnConnectComplete.

Надо заметить, что многие компоненты ADO при активизации или выполнении отрабатывают команду на языке SQL. Это такие компоненты, как ADOCommand, ADODataSet, ADOTable, ADOQuery и ADOStoredProc. Для асинхронного выполнения команды установите в свойстве ExecuteOptions значение coAsyncExecute. При выполнении команды будет происходить следующее:

  •  вызовется обработчик события OnWillExecute;
  •  управление передастся программе.

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

1.3 Язык SQL

SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «структурированный язык запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям[2] язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль» или используют жаргонизм «скуль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

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

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

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

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

  •  создание в базе данных новой таблицы;
  •  добавление в таблицу новых записей;
  •  изменение записей;
  •  удаление записей;
  •  выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
  •  изменение структур таблиц.

Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.

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

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:

  •  запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);
  •  запросы на получение данных;
  •  запросы на добавление новых данных (записей);
  •  запросы на удаление данных;
  •  обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на:

  •  запросы, оперирующие самими таблицами (создание и изменение таблиц);
  •  запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
  •  Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием
  •  типа хранимых в каждом поле значений;
  •  связей между таблицами (задание первичных и вторичных ключей);
  •  информации, необходимой для построения индексов.

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

  •  вставка новой строки;
  •  изменение значений полей строки или набора строк;
  •  удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

  •  просмотреть полученный набор;
  •  изменить все записи набора;
  •  удалить все записи набора.

Таким образом использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.

Язык SQL представляет собой совокупность

  •  операторов,
  •  инструкций,
  •  и вычисляемых функций.

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами.[5] Операторы SQL делятся на:

  •  операторы определения данных (Data Definition Language, DDL):
  •  CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),
  •  ALTER изменяет объект,
  •  DROP удаляет объект;
  •  операторы манипуляции данными (Data Manipulation Language, DML):
  •  SELECT считывает данные, удовлетворяющие заданным условиям,
  •  INSERT добавляет новые данные,
  •  UPDATE изменяет существующие данные,
  •  DELETE удаляет данные;
  •  операторы определения доступа к данным (Data Control Language, DCL):
  •  GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,
  •  REVOKE отзывает ранее выданные разрешения,
  •  DENY задает запрет, имеющий приоритет над разрешением;
  •  операторы управления транзакциями (Transaction Control Language, TCL):
  •  COMMIT применяет транзакцию,
  •  ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
  •  SAVEPOINT делит транзакцию на более мелкие участки.

2 Практическая часть

2.1 Цель работы

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

2.2 Даталогическое проектирование

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

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

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

 Логическая структура реляционной базы данных Access является адекватным отображением полученной информационно-логической модели предметной области. Для канонической модели не требуется дополнительных преобразований. Каждый информационный объект модели данных отображается реляционной таблицей. Структура реляционной таблицы определяется реквизитным составом соответствующего информационного объекта, где каждое поле соответствует одному из реквизитов объекта. Ключевые реквизиты объекта образуют уникальный ключ реляционной таблицы. Для каждого поля задается тип, размер данных и др. свойства. Записи таблицы соответствуют экземплярам объекта и формируются при загрузке таблицы.

Связи между объектами данных реализуются одинаковыми реквизитами – ключами связи в соответствующих таблицах. При этом ключом связи типа 1:М всегда является уникальный ключ главной таблицы (Рисунок 3).

Рисунок 3 – Даталогическая модель

2.3 Проектирование БД «Магазин автомобилей» 

в среде СУБД Microsoft Office Access

В ходе проектирования БД «Магазин автомобилей » были разработаны следующие таблицы:

  •  Заказы
  •  Клиенты
  •  Каталог

Структуры этих таблиц приведены ниже.

1) Структура таблицы «Клиенты»

2) Структура таблицы «Заказы»

3) Структура таблицы «Каталог»


2.4 Формализация и постановка задачи

На основании  описания  предметной области спроектировать базу данных ER-методом с применением диаграмм ER-типа. Разработанные в результате проектирования таблицы находятся в нормальной форме Бойса-Кодда.

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

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

     б) выборку данных по заданным условиям и предъявление результатов выборки на экране в удобном для пользователя виде;

     в) обработку данных по заданному алгоритму;

     г) создание заданных отчетов по базе данных.

     д) вывод отчета проданных машин за 30 дней на экран и в файл

2.5 Разработка ER-диаграмм

 


2.6 Задание на курсовой проект

Вариант 20

Магазин продает автомобили по каталогу, в котором имеются данные о ряде моделей (название модели, фирма-изготовитель, мощность двигателя, число мест в салоне, расход топлива на 100 км. в литрах, объем багажника в дм. куб.). Клиент, просмотрев каталог, заказывает нужную ему модель.

Магазин оформляет заказ и затем получает нужный автомобиль. Клиенту выписывается счет, в котором указывается модель автомобиля, его идентификационный номер (15 знаков), а также номера двигателя и кузова (14 знаков), цвет автомобиля и его цена. В счете обязательно указывается дата выписки счета и дата оплаты. После оплаты счета клиент получает автомобиль, о чем делается отметка в заказе (выполнен). Кроме заказов и счетов, выпускается ежемесячно отчет с данными о продаже каждой модели (количество, сумма) и общей суммой продаж.

Клиент может сделать несколько заказов. Сведения о продавце не нужны.


2.7 Схема решения задачи


3 Логика работы программы

3.1 Архитектура программно-аппаратного комплекса

Для корректной работы приложения необходимы следующие аппаратные и системные программные средства:

ADO

Использование ADO является альтернативой Borland Database Engine (BDE), обеспечивающей более эффективную работу с данными. Для использования этой возможности на вашем компьютере должна быть установлена система ADO 2.1 или более старшая версия. Кроме того должна быть установлена клиентская система доступа к данным, например, Microsoft SQL Server, а в ODBC должен иметься драйвер OLE DB для того типа баз данных, с которыми вы работаете.

Microsoft Office Access 2007

Microsoft Office Access 2007 является системой управления базами данных в которой можно создавать и редактировать базы данных.

Microsoft Office Access 2007 позволяет просматривать сведения о зависимостях между объектами базы данных. Просмотр списка объектов, используемых указанным объектом, помогает осуществлять поддержку базы данных и предотвращать ошибки, связанные с потерей источников записей.

3.2 Минимальные системные требования

  •  Частота процессора не менее 500 МГц
  •  Не менее 256 Мб оперативной памяти
  •  1,5—2 Гб свободного места на жёстком диске
  •  Разрешение экрана не менее 1024x768 точек
  •  Операционная система Windows XP с SP2, Windows Server 2003 с SP2[1] или более новые версии.
  •  Принтер
  •  Клавиатура
  •  Мышь

3.3 Руководство пользователя

При открытии приложения открывается главное окно программы (Рисунок 4)

Рисунок 4 – Главное окно программы

Нажав на «Оформление заказа» откроется каталог машин для выбора понравившейся машины и оформления заказа (Рисунок 5).

Рисунок 5 – Окно оформления заказа

При выборе машин можно сортировать данные по различным признакам. Для выбора понравившейся машины необходимо кликнуть двойным щелчком по строке таблицы или нажать кнопку «Оформить заказ» откроется форма по управлению заказом (Рисунок 6 )

Рисунок 6 – Оформление заказа

Заполнив все необходимые поля формы и нажав на кнопку «ОК» клиенту будет выписан счет (Рисунок 7).

Рисунок 8 – Счет покупателю

Если вернуться к главное форме (Рисунок 4) и нажать на «Управление базой» то выйдет окно для работы с базой данных, ее редактирования и вывода отчетов о продаж, но прежде чем приступить к работе требуется ввести пароль (Рисунок 8).

Рисунок 8 – Форма для ввода пароля

Введем пароль для входа в базу данных и нажмем «ОК» появиться окно для управления базой (Рисунок 9).

Рисунок 9 – Управление базой

Нажав на кнопку «Редактирование таблиц» появиться форма для удаление, изменения и добавления записей в таблицу (Рисунок 10).

Рисунок 10 – Редактирование таблиц базы данных

Если вернуться в окно управления базой (Рисунок  9)  и нажать на кнопку «Работа с данными» выйдет список форм для открытия. Самой первой формой является форма поиск клиента (Рисунок 11).

Рисунок 11 – Окно поиска клиента

Перейдя во вкладку «Продажи» можно увидеть продажи машин по клиентам (Рисунок 12)

Рисунок 12 – Продажи по клиентам

Перейдя по вкладку «Поиск автомобиля» откроется форма для поиска нужного автомобиля (Рисунок 13).

Рисунок 13 – Форма для поиска автомобилей

Перейдя во вкладку обработка заказов появиться окно для работы с заказами, можно посмотреть обработанные и не обработанные заказы, а так же просроченные заказы (Рисунок 14).

Рисунок 14 – Обработка заказов

Нажав на кнопку «Просроченные заказы» выйдет форма, в которой выведены только те заказы, у которых дата оплаты просрочена, эти записи можно редактировать (Рисунок 15).

Рисунок 15 – Просроченные заказы.

Если вернуться на форму «Управление базой» (Рисунок 9) и нажать на вкладку «Отчеты» можно посмотреть отчет о продажах за месяц (Рисунок 16). Выбираем месяц и нажимаем «ОК».

Рисунок 16 – Выбор месяца для отчета

После выбора соответствующего месяца будет выведен и сохранен в  файл отчет о продажах за месяц (Рисунок 17-18).

Рисунок 17 – Отчет за месяц

Рисунок 19 – Сохранение отчета в файл


Заключение

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

1) просмотр и редактирование данных;

2) поиск и редактирование записей о машинах;

3) поиск и редактирование записей о клиентах;

4) Поиск и обработка заказов;

5) Печать чека;

6) Просмотр машин в магазине;

7) Просмотр отчета проданных машин за 30 дней на экране, и вывод этого отчета в файл;

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


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

  1.  Карпова Т.С. Базы данных: модели, разработка. - СПб.: Питер, 2001, 304 с.
  2.  Петров В.Н. Информационные системы. – СПб.: Питер, 2002.
  3.  Фаронов В.В. Программирование баз данных в Delphi 7: Учебный курс. – СПб.: Питер, 2004 - 464 с.
  4.  Кренке Д. Теория и практика построения баз данных: [пер.с англ] / Д. Кренке. - 9 - е изд. - СПб.: Питер, 2005. - 858 с.
  5.  Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - СПб.: КОРОНА принт, 2000. - 416с.
  6.  Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001. - 304с.
  7.  Ульман Дж., Уидом Дж. Введение в системы баз данных. - М.: Лори, 2000. - 374с.
  8.  Мейер Д. Теория реляционных баз данных. - М.: Мир, 1987. - 608с.
  9.  Джексон Г. Проектирование реляционных баз данных для использования с микро - ЭВМ. - М.: Мир, 1991.
  10.  Четвериков В.Н. и др. Базы и банки данных. - М.: Высш.шк., 1987.
  11.  Бойко В.В., Савинов В.М. Проектирование баз данных информационных систем. - М.: Финансы и статистика, 1989.
  12.  Дейт К. Введение в системы баз данных. - К.: Диалектика, 1998.
  13.  Хансен Г., Хансен Д. Базы данных: разработка и уравление. - М.: БИНОМ, 1999.
  14.  Боровский, А.Н. Программирование в Delphi/ А.Н. Боровский. - СПб.: БХВ-Петербург. – 2005.


Приложение 1 . Исходный код программы

Главная форма программы.

unit main;

interface

uses

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

 Dialogs, StdCtrls;

type

 TMainForm = class(TForm)

   GroupBox1: TGroupBox;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   Button1: TButton;

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 MainForm: TMainForm;

implementation

uses katalog, password;

{$R *.dfm}

procedure TMainForm.Button1Click(Sender: TObject);

begin

if RadioButton1.Checked

   then

       KatalogAvto.Show

   else

       PassForm.Show

end;

end.

Форма ModulBD

Здесь расположены невидимые компоненты, для работы с базой данных

Форма выбора машины по каталогу

unit katalog;

interface

uses

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

 Dialogs, Grids, DBGrids, StdCtrls;

type

 TKatalogAvto = class(TForm)

   DBGrid1: TDBGrid;

   GroupBox1: TGroupBox;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   RadioButton3: TRadioButton;

   RadioButton4: TRadioButton;

   GroupBox2: TGroupBox;

   Edit1: TEdit;

   Button1: TButton;

   Edit2: TEdit;

   Button2: TButton;

   Button3: TButton;

   procedure FormActivate(Sender: TObject);

   procedure RadioButton1Click(Sender: TObject);

   procedure RadioButton2Click(Sender: TObject);

   procedure RadioButton3Click(Sender: TObject);

   procedure RadioButton4Click(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure DBGrid1DblClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 KatalogAvto: TKatalogAvto;

implementation

uses main, module, zak;

{$R *.dfm}

procedure TKatalogAvto.FormActivate(Sender: TObject);

begin

      ModuleBD.ADOQuery_Katalog.SQL.Clear;

      ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs');

      ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.RadioButton1Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Katalog.SQL.Clear;

 ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs ORDER BY Engine_power DESC ');

 ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.RadioButton2Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Katalog.SQL.Clear;

 ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs ORDER BY Number_seats DESC ');

 ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.RadioButton3Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Katalog.SQL.Clear;

 ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs ORDER BY Rashod_topliva DESC');

 ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.RadioButton4Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Katalog.SQL.Clear;

 ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs ORDER BY Volume_trunk DESC');

 ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.Button1Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Katalog.SQL.Clear;

 ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs WHERE Marka_modeli LIKE '''+Edit1.Text+''' and Model  LIKE '''+Edit2.Text+'''');

 ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.Button2Click(Sender: TObject);

begin

  ModuleBD.ADOQuery_Katalog.SQL.Clear;

  ModuleBD.ADOQuery_Katalog.SQL.Add('SELECT * FROM Catalogs');

  ModuleBD.ADOQuery_Katalog.Active:=True;

end;

procedure TKatalogAvto.Button3Click(Sender: TObject);

begin

Zakaz.Show;

end;

procedure TKatalogAvto.DBGrid1DblClick(Sender: TObject);

begin

  Zakaz.Show;

  Zakaz.Edit2.Text:= DBGrid1.DataSource.DataSet.Fields[0].AsString;

  Zakaz.Edit9.Text:= DBGrid1.DataSource.DataSet.Fields[1].AsString;

  Zakaz.Edit10.Text:= DBGrid1.DataSource.DataSet.Fields[2].AsString;

end;

end.

Форма оформления заказа

unit zak;

interface

uses

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

 Dialogs, StdCtrls;

type

 TZakaz = class(TForm)

   Button3: TButton;

   GroupBox1: TGroupBox;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label5: TLabel;

   Label6: TLabel;

   Label7: TLabel;

   Label8: TLabel;

   Edit1: TEdit;

   Edit2: TEdit;

   Edit3: TEdit;

   Edit4: TEdit;

   Edit5: TEdit;

   Edit6: TEdit;

   Button1: TButton;

   Button2: TButton;

   Edit7: TEdit;

   Edit8: TEdit;

   Label9: TLabel;

   Label10: TLabel;

   Edit9: TEdit;

   Edit10: TEdit;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

 

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Zakaz: TZakaz;

implementation

uses klient, avto, module, zak2, main, cek;

{$R *.dfm}

procedure TZakaz.Button1Click(Sender: TObject);

begin

PoiskKlienta.Show;

end;

procedure TZakaz.Button2Click(Sender: TObject);

begin

Form_Avto.show;

end;

procedure TZakaz.Button3Click(Sender: TObject);

var

     zakazid,warehouseid,i:Integer;

begin

 ModuleBD.ADOQuery_Zakaz.Insert;

 zakazid:=ModuleBD.ADOQuery_Zakaz.RecordCount+1;

 ModuleBD.ADOQuery_Zakaz.FieldByName('id_orders').AsInteger:= zakazid;

 ModuleBD.ADOQuery_Zakaz.FieldByName('id_clients').AsInteger:= StrToInt(Edit1.Text);

 ModuleBD.ADOQuery_Zakaz.FieldByName('Order_status').AsBoolean:=false;

 ModuleBD.ADOQuery_Zakaz.FieldByName('Status_oplati').AsBoolean:=false;

 ModuleBD.ADOQuery_Zakaz.FieldByName('Date_vipiski').AsString:=Edit7.Text;

 ModuleBD.ADOQuery_Zakaz.FieldByName('Date_oplati').AsString:=Edit8.Text;

 ModuleBD.ADOQuery_Zakaz.FieldByName('№_engine').AsInteger:= StrToInt(Edit3.Text);

 ModuleBD.ADOQuery_Zakaz.FieldByName('№_kuzova').AsInteger:= StrToInt(Edit4.Text);

 ModuleBD.ADOQuery_Zakaz.FieldByName('Color').AsString:=Edit5.Text;

 ModuleBD.ADOQuery_Zakaz.FieldByName('Price').AsString:=Edit6.Text;

 ModuleBD.ADOQuery_Zakaz.FieldByName('id_cars').AsFloat:= StrToFloat(Edit2.Text);

 Chek.QRLabel13.Caption:=Edit9.Text;

 Chek.QRLabel14.Caption:=Edit10.Text;

 Chek.QRLabel15.Caption:=Edit2.Text;

 Chek.QRLabel16.Caption:=Edit3.Text;

 Chek.QRLabel17.Caption:=Edit4.Text;

 Chek.QRLabel18.Caption:=Edit5.Text;

 Chek.QRLabel19.Caption:=Edit8.Text;

 Chek.QRLabel20.Caption:=Edit7.Text;

 Chek.QRLabel12.Caption:=Edit6.Text;

 Chek.QuickRep1.PreviewModal;  

end;

end.

Форма ввода пароля для доступа к базе

unit password;

interface

uses

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

 Dialogs, StdCtrls;

type

 TPassForm = class(TForm)

   Edit1: TEdit;

   Button1: TButton;

   procedure Edit1Change(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure FormActivate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 PassForm: TPassForm;

implementation

uses main, admin;

{$R *.dfm}

procedure TPassForm.Button1Click(Sender: TObject);

begin

  Upravlenie.visible:= true;

  PassForm.Visible:= false;

end;

procedure TPassForm.Edit1Change(Sender: TObject);

begin

 if  Edit1.Text = '1' then  begin

   Button1.Enabled := true; end;

end;

procedure TPassForm.FormActivate(Sender: TObject);

begin

   edit1.Clear;

   Button1.Enabled := false;

end;

end.

Форма управления БД

unit admin;

interface

uses

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

 Dialogs, Menus;

type

 TUpravlenie = class(TForm)

   MainMenu1: TMainMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   N5: TMenuItem;

   N6: TMenuItem;

   N7: TMenuItem;

   N8: TMenuItem;

   N9: TMenuItem;

   procedure N9Click(Sender: TObject);

   procedure N1Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

   procedure N7Click(Sender: TObject);

   procedure N10Click(Sender: TObject);

   procedure N8Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Upravlenie: TUpravlenie;

implementation

uses edit, klient, prodan, avto, zak2, skld, otchet;

{$R *.dfm}

procedure TUpravlenie.N9Click(Sender: TObject);

begin

    Upravlenie.Close;

end;

procedure TUpravlenie.N1Click(Sender: TObject);

begin

    EditBD.Show;

end;

procedure TUpravlenie.N4Click(Sender: TObject);

begin

  PoiskKlienta.Show;

end;

procedure TUpravlenie.N5Click(Sender: TObject);

begin

 Prodano.Show;

end;

procedure TUpravlenie.N6Click(Sender: TObject);

begin

  Form_Avto.Show;

end;

procedure TUpravlenie.N7Click(Sender: TObject);

begin

   Zakazi.Show;

end;

procedure TUpravlenie.N10Click(Sender: TObject);

begin

 Sklad.Show;

end;

procedure TUpravlenie.N8Click(Sender: TObject);

begin

 Otchet_za_mec.Show;

end;

end.

Форма просмотра и редактирования БД

unit edit;

interface

uses

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

 Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls;

type

 TEditBD = class(TForm)

   DBGrid1: TDBGrid;

   DBNavigator1: TDBNavigator;

   GroupBox1: TGroupBox;

   ComboBox1: TComboBox;

   GroupBox2: TGroupBox;

   Edit1: TEdit;

   Button1: TButton;

   procedure FormActivate(Sender: TObject);

   procedure ComboBox1Change(Sender: TObject);

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 EditBD: TEditBD;

implementation

uses module;

{$R *.dfm}

procedure TEditBD.FormActivate(Sender: TObject);

begin

ModuleBD.ADOQuery_Edit.SQL.Clear;

ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Catalogs');

ModuleBD.ADOQuery_Edit.Active:=True;

end;

procedure TEditBD.ComboBox1Change(Sender: TObject);

begin

 if ComboBox1.Text='Клиенты' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Clients');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

 if  ComboBox1.Text='Каталог' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Catalogs');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

 if  ComboBox1.Text='Заказы' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Orders');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

end;

procedure TEditBD.Button1Click(Sender: TObject);

begin

 if ComboBox1.Text='Клиенты' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Clients WHERE id_clienta LIKE '''+Edit1.Text+'''');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

 if  ComboBox1.Text='Каталог' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Catalogs WHERE id_cars LIKE '''+Edit1.Text+'''');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

 if  ComboBox1.Text='Склад' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Warehouse WHERE id_warehouse LIKE '''+Edit1.Text+'''');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

 if  ComboBox1.Text='Заказы' then

    begin

      ModuleBD.ADOQuery_Edit.SQL.Clear;

      ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Orders WHERE id_orders LIKE '''+Edit1.Text+'''');

      ModuleBD.ADOQuery_Edit.Active:=True;

    end;

end;

end.

Форма для поиска клиента

unit klient;

interface

uses

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

 Dialogs, StdCtrls, Grids, DBGrids;

type

 TPoiskKlienta = class(TForm)

   DBGrid1: TDBGrid;

   GroupBox1: TGroupBox;

   Edit1: TEdit;

   Button1: TButton;

   Button2: TButton;

   procedure FormActivate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure DBGrid1DblClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 PoiskKlienta: TPoiskKlienta;

implementation

uses module, zak;

{$R *.dfm}

procedure TPoiskKlienta.FormActivate(Sender: TObject);

begin

 ModuleBD.ADOQuery_Klient.SQL.Clear;

 ModuleBD.ADOQuery_Klient.SQL.Add('SELECT * FROM Clients');

 ModuleBD.ADOQuery_Klient.Active:=True;

end;

procedure TPoiskKlienta.Button1Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Klient.SQL.Clear;

 ModuleBD.ADOQuery_Klient.SQL.Add('SELECT * FROM Clients WHERE Familya LIKE '''+Edit1.Text+'''');

 ModuleBD.ADOQuery_Klient.Active:=True;

end;

procedure TPoiskKlienta.Button2Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Klient.SQL.Clear;

 ModuleBD.ADOQuery_Klient.SQL.Add('SELECT * FROM Clients ');

 ModuleBD.ADOQuery_Klient.Active:=True;

end;

procedure TPoiskKlienta.DBGrid1DblClick(Sender: TObject);

begin

  Zakaz.Edit1.Text:= DBGrid1.DataSource.DataSet.Fields[0].AsString;

end;

end.

Форма для вывода продаж по клиентам

unit prodan;

interface

uses

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

 Dialogs, Grids, DBGrids, StdCtrls;

type

 TProdano = class(TForm)

   DBGrid1: TDBGrid;

   procedure FormActivate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Prodano: TProdano;

implementation

uses module;

{$R *.dfm}

procedure TProdano.FormActivate(Sender: TObject);

begin

 ModuleBD.ADOQuery_Prodano.SQL.Clear;

 ModuleBD.ADOQuery_Prodano.SQL.Add('SELECT id_clienta,Familya,(SELECT Count(id_clients) FROM Orders WHERE (Orders.id_clients=Clients.id_clienta) GROUP BY id_clienta) AS Кол_воМашин FROM Clients');

 ModuleBD.ADOQuery_Prodano.Active:=True;

end;

end.

Форма для поиска автомобиля

unit avto;

interface

uses

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

 Dialogs, Grids, DBGrids, StdCtrls;

type

 TForm_Avto = class(TForm)

   DBGrid1: TDBGrid;

   GroupBox1: TGroupBox;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   RadioButton3: TRadioButton;

   RadioButton4: TRadioButton;

   GroupBox2: TGroupBox;

   Edit1: TEdit;

   Button1: TButton;

   Button2: TButton;

   procedure FormActivate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure RadioButton1Click(Sender: TObject);

   procedure RadioButton2Click(Sender: TObject);

   procedure RadioButton3Click(Sender: TObject);

   procedure RadioButton4Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure DBGrid1DblClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form_Avto: TForm_Avto;

implementation

uses module, zak;

{$R *.dfm}

procedure TForm_Avto.FormActivate(Sender: TObject);

begin

ModuleBD.ADOQuery_Avto.SQL.Clear;

ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs');

ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.Button1Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs WHERE Marka_modeli LIKE '''+Edit1.Text+'''');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.RadioButton1Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs ORDER BY Engine_power DESC ');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.RadioButton2Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs ORDER BY Number_seats DESC ');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.RadioButton3Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs ORDER BY Rashod_topliva DESC');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.RadioButton4Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs ORDER BY Volume_trunk DESC');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.Button2Click(Sender: TObject);

begin

 ModuleBD.ADOQuery_Avto.SQL.Clear;

 ModuleBD.ADOQuery_Avto.SQL.Add('SELECT * FROM Catalogs');

 ModuleBD.ADOQuery_Avto.Active:=True;

end;

procedure TForm_Avto.DBGrid1DblClick(Sender: TObject);

begin

  Zakaz.Edit2.Text:= DBGrid1.DataSource.DataSet.Fields[0].AsString;

  Zakaz.Edit9.Text:= DBGrid1.DataSource.DataSet.Fields[1].AsString;

  Zakaz.Edit10.Text:= DBGrid1.DataSource.DataSet.Fields[2].AsString;

end;

end.

Форма для обработки заказов

unit zak2;

interface

uses

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

 Dialogs, Grids, DBGrids, StdCtrls;

type

 TZakazi = class(TForm)

   DBGrid1: TDBGrid;

   Button1: TButton;

   Button2: TButton;

   Button3: TButton;

   procedure FormActivate(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Zakazi: TZakazi;

implementation

uses module, proc;

{$R *.dfm}

procedure TZakazi.FormActivate(Sender: TObject);

begin

     {ModuleBD.ADOQuery_Zakaz.SQL.Clear;

      ModuleBD.ADOQuery_Zakaz.SQL.Add('SELECT * FROM Orders');

      ModuleBD.ADOQuery_Zakaz.Active:=True;  }

end;

procedure TZakazi.Button2Click(Sender: TObject);

begin

    ModuleBD.ADOQuery_Zakaz.SQL.Clear;

    ModuleBD.ADOQuery_Zakaz.SQL.Add('SELECT * FROM Orders where Order_status = true');

    ModuleBD.ADOQuery_Zakaz.Active:=True;

end;

procedure TZakazi.Button1Click(Sender: TObject);

begin

    ModuleBD.ADOQuery_Zakaz.SQL.Clear;

    ModuleBD.ADOQuery_Zakaz.SQL.Add('SELECT * FROM Orders where Order_status = false');

    ModuleBD.ADOQuery_Zakaz.Active:=True;

end;

procedure TZakazi.Button3Click(Sender: TObject);

begin

Form_Prosrochka.Show;

end;

end.

Форма для просмотри и редактирования просроченных заказов

SELECT *

FROM Orders

Where (Status_oplati=False) AND (Date_oplati=Format(Date()))

Форма для выбора отчета за месяц

unit otchet;

interface

uses

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

 Dialogs, StdCtrls;

var

 month, monthname : string;

type

 TOtchet_za_mec = class(TForm)

   ComboBox1: TComboBox;

   Button1: TButton;

   procedure ComboBox1Click(Sender: TObject);

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Otchet_za_mec: TOtchet_za_mec;

implementation

uses otch;

{$R *.dfm}

procedure TOtchet_za_mec.ComboBox1Click(Sender: TObject);

begin

case ComboBox1.ItemIndex of

    -1:ShowMessage('Выберите месяц!');

     0: begin month:='__.01.2014'; monthname:='Январь 2014'; end;

     1: begin month:='__.02.2014'; monthname:='Февраль 2014'; end;

     2:  begin month:='__.03.2014'; monthname:='Март 2014'; end;

     3: begin month:='__.04.2014'; monthname:='Апрель 2014'; end;

     4: begin month:='__.05.2014'; monthname:='Май 2014'; end;

     5: begin month:='__.06.2014'; monthname:='Июнь 2014'; end;

     6: begin month:='__.07.2014'; monthname:='Июль 2014';  end;

     7: begin month:='__.08.2014'; monthname:='Август 2014'; end;

     8: begin month:='__.09.2014'; monthname:='Сентябрь 2014'; end;

     9: begin month:='__.10.2014'; monthname:='Октябрь 2014'; end;

     10: begin month:='__.11.2014'; monthname:='Ноябрь 2014'; end;

     11: begin month:='__.12.2014'; monthname:='Декабрь 2014';  end;

    end;

end;

procedure TOtchet_za_mec.Button1Click(Sender: TObject);

begin

   Form_otchet.QRLabel2.Caption:= monthname;

   Form_otchet.ADOQuery1.Active:=False;

   Form_otchet.ADOQuery1.SQL.Add('Where Data LIKE '''+month+'''');

   Form_otchet.ADOQuery1.Active:=True;

     Form_otchet.Show;

end;

end.


Приложение 2 . Блок схемы основных форм

Блок-схема оформления заказа

Блок схема ввода пароля для доступа к базе


Блок схема на просмотр и редактирования БД

Блок схема для вывода продаж по клиентам


zakazid:=ModuleBD.ADOQuery_Zakaz.RecordCount+1

ModuleBD.ADOQuery_Zakaz.FieldByName('id_orders').AsInteger:= zakazid

ModuleBD.ADOQuery_Zakaz.FieldByName('id_clients').AsInteger:= StrToInt(Edit1.Text)

ModuleBD.ADOQuery_Zakaz.Insert

TZakaz.Button3Click

Отчет о продажах за месяц

Обработка заказов

Поиск машины

Продажи

Поиск клиента

Отчеты

Работа с данными

Просмотр и редактирование данных

Работа с БД

Печать чека

1

М

1

Оформление заказа

Просмотр каталога

Главная форма

Заказ

Вноситься

Автомобиль

Заказ

Вноситься

Клиент

ModuleBD.ADOQuery_Zakaz.FieldByName('Order_status').AsBoolean:=false

ModuleBD.ADOQuery_Zakaz.FieldByName('Status_oplati').AsBoolean:=false

ModuleBD.ADOQuery_Zakaz.FieldByName('Date_vipiski').AsString:=Edit7.Text

ModuleBD.ADOQuery_Zakaz.FieldByName('Date_oplati').AsString:=Edit8.Text

ModuleBD.ADOQuery_Zakaz.FieldByName('№_engine').AsInteger:= StrToInt(Edit3.Text)

ModuleBD.ADOQuery_Zakaz.FieldByName('№_kuzova').AsInteger:= StrToInt(Edit4.Text)

ModuleBD.ADOQuery_Zakaz.FieldByName('Color').AsString:=Edit5.Text

ModuleBD.ADOQuery_Zakaz.FieldByName('Price').AsString:=Edit6.Text

ModuleBD.ADOQuery_Zakaz.FieldByName('id_cars').AsFloat:= StrToFloat(Edit2.Text)

Chek.QRLabel13.Caption:=Edit9.Text

Chek.QRLabel14.Caption:=Edit10.Text

Chek.QRLabel15.Caption:=Edit2.Text

Chek.QRLabel16.Caption:=Edit3.Text

Chek.QRLabel17.Caption:=Edit4.Text

Chek.QRLabel18.Caption:=Edit5.Text

Chek.QRLabel19.Caption:=Edit8.Text

Chek.QRLabel20.Caption:=Edit7.Text

Chek.QRLabel12.Caption:=Edit6.Text

Chek.QuickRep1.PreviewModal

Конец

TPassForm.Edit1Change

Edit1.Text = '1'

Y

Button1.Enabled := true

Конец

TPassForm.FormActivate

edit1.Clear

Button1.Enabled := false

Конец

TPassForm.Button1Click

Upravlenie.visible:= true

PassForm.Visible:= false

Конец

TEditBD.Button1Click

ComboBox1.Text='Клиенты'

Y

ModuleBD.ADOQuery_Edit.SQL.Clear

ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Clients WHERE id_clienta LIKE '''+Edit1.Text+'''')

ModuleBD.ADOQuery_Edit.Active:=True

ComboBox1.Text='Каталог'

Y

ModuleBD.ADOQuery_Edit.SQL.Clear

ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Catalogs WHERE id_cars LIKE '''+Edit1.Text+'''')

ModuleBD.ADOQuery_Edit.Active:=True

ComboBox1.Text='Склад'

Y

ModuleBD.ADOQuery_Edit.SQL.Clear

ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Warehouse WHERE id_warehouse LIKE '''+Edit1.Text+'''')

ModuleBD.ADOQuery_Edit.Active:=True

ComboBox1.Text='Заказы'

Y

ModuleBD.ADOQuery_Edit.SQL.Clear

ModuleBD.ADOQuery_Edit.SQL.Add('SELECT * FROM Orders WHERE id_orders LIKE '''+Edit1.Text+'''')

ModuleBD.ADOQuery_Edit.Active:=True

Конец

TProdano.FormActivate

ModuleBD.ADOQuery_Prodano.SQL.Clear

ModuleBD.ADOQuery_Prodano.SQL.Add('SELECT id_clienta,Familya,(SELECT Count(id_clients) FROM Orders WHERE (Orders.id_clients=Clients.id_clienta) GROUP BY id_clienta) AS Кол_воМашин FROM Clients')

ModuleBD.ADOQuery_Prodano.Active:=True

Конец



 

Другие похожие работы, которые могут вас заинтересовать.
15200. Интерактивное приложение интернет магазина по продаже компьютерных игр (ключей) 1.08 MB
  PHP скриптовый язык программирования общего назначения интенсивно применяемый для разработки веб-приложений. В области веб-программирования в частности серверная часть PHP один из популярных сценарных языков наряду с JSP Perl и языками используемыми в SP. Благодаря своей простоте скорости выполнения богатой функциональности кроссплатформенности и распространению исходных кодов на основе лицензии PHP.
1537. Создание информационной системы управления закупками для магазина «Цифровой Мир» 4.37 MB
  Интернет магазин «Техномир» —это сайт, созданный для того, чтобы связывать покупателей и продавцов напрямую без посредников. Вам предлагается огромный ассортимент товаров бытовой
13309. Создание каталога товаров для последующего создания интернет-магазина 2.27 MB
  Целью данной работы является создание каталога товаров для последующего создания интернет-магазина. Основными задачами данного проекта являются: изучение теоретических аспектов создания интернет магазинов; изучение способа организации интернет-магазинов; изучение видов и требований для создания интернет магазина; изучение методов...
1182. Создание программы «Кулинарная книга» 556.03 KB
  Представители школы научного менеджмента еще в самом начале XX века, осознали порочность системы оплаты труда на уровне заработков, позволяющих только преодолеть чувство голода и холода, определили понятие достаточная дневная выработка и предложили оплачивать труд работников пропорционально их вкладу
18492. Создание программы, облегчающей работу менеджера по продажам в автосалоне 591.22 KB
  Для использования столь огромных объемов хранимой информации, помимо развития системных устройств, средств передачи данных, памяти необходимы средства обеспечения диалога человек-ЭВМ, которые позволяют пользователю вводить запросы, читать файлы, модифицировать хранимые данные, добавлять новые данные или принимать решения на основании хранимых данных. Для обеспечения этих функций созданы специализированные средства – системы управления базами данных (СУБД).
1455. Разработка программы с линейным алгоритмом выполнения. Лабораторные работы 1007.4 KB
  Разработка программы с линейным алгоритмом выполнения. Требования к программе: Программа должна выводить: –номер варианта и сообщение о назначении программы; – фамилию и инициалы автора программы; –информационные сообщения о необходимости ввода данных; –сообщение с результатами полученными в ходе работы программы.
10069. Разработка алгоритма и программы имитации работы цифрового концентратора в сети ISDN 583.57 KB
  В отличие от устройств простого уплотнения мультиплексоров концентратор обеспечивает накопление и хранение информации а иногда и некоторую ее обработку например применение более сложных кодов для повышения помехозащищенности изменение формата и т. Когда канал с низким быстродействием не занят по каналу с высоким быстродействием передаются сигналы пробела для поддержания синхронизации. Поэтому было бы лучше если бы мы могли занимать быстродействующий канал только в том случае когда имеется чтолибо для передачи. Сообщения передаваемые...
9991. Создание программного продукта для более удобной работы c операторами языка C++ 682.67 KB
  Шифрование текста необходимо для защиты информации от посторонних для кого она не предназначена. Шифрование – это способ защиты данных от несанкционированного использования. Шифрование для защиты информации полагается на разделы математики, называемой криптографией.
3604. Освоение технологии структурного программирования и применения стандартных методов работы с двумерными массивами при разработке и создании программы на языке Турбо Паскаль 52.5 KB
  Освоение методов структурного программирования при разработке и создании программы на языке Турбо Паскаль для обработки двумерных массивов. Освоение методики нисходящей разработки (проектирования) программы методом пошаговой детализации с помощью псевдокода при решении задач с помощью ПК.
3642. Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль 45.64 KB
  Освоение методики нисходящей разработки (проектирования) программы методом пошаговой детализации с помощью псевдокода при решении задач с помощью ПК. Освоение методов структурного программирования при разработке и создании программы на языке Турбо Паскаль для обработки одномерных массивов.
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.