46888 (База данных "Автосервис" в среде Borland Delphi 6.0.)

2016-07-28СтудИзба

Описание файла

Документ из архива "База данных "Автосервис" в среде Borland Delphi 6.0.", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "46888"

Текст из документа "46888"

Содержание отчета

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

2. Описание структуры базы данных

3. Инструкция программисту

4. Инструкция пользователю

5. Исходные тексты

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

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

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

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

2. Описание структуры БД

Схема данных


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

  1. Автомобили (Cars)

* Код автомобиля

CodeAuto

+

Марка авто

TMAuto

A(30)

Регистр. знак

StateSign

A(11)

Тех. паспорт

Tpasssport

A(10)

Цвет авто

ColourAuto

A(20)

Год выпуска

Year

S

Двигатель №

MotorNum

A(10)

Кузов №

BodyNum

A(10)

Шасси №

UnderCgeNum

A(10)

Примечание

Info

M(200)

  1. Владельцы (Owners)

* Код владельца

CodeOwner

+

Фамилия

OLastName

A(30)

Имя

OFirstName

A(20)

Отчество

OSecondName

A(25)

Паспорт №

OPassportNum

A(10)

Права №

ODrvLicence

A(15)

Телефон

Phone

A(12)

Фото

Foto

B

Примечание

Info

M(200)

  1. Виды работ (KindOfWork)

* Код работы

CodeWork

+

Вид работы

KindWork

A(30)

Стоимость работы

CostWork

$

Срок выполнения

PeriodEx

N

Гарантия

Guarantee

N

  1. Новые запчасти (New Part)

* Код автозапчасти

CodePart

+

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

PartName

A(30)

Стоимость

CostPart

$

Гарантия

Guarantee

N

  1. Заказы (AOrders)

* Номер заказа

OrderNum

+

Код автомобиля

CodeAuto

I

Код владельца

CodeOwner

I

Дата поступления

ActDate

D

Примечание

Info

M(200)

  1. Услуги заказа (OrderWork)

* Номер заказа

OrderNum

I

* Код работы

CodeWork

I

  1. Установка запчастей (PutInPart)

* Номер заказа

OrderNum

I

* Код автозапчасти

CodePart

I

3. Инструкция программисту

ПО разработано в среде Borland Delphi 6.0.

Все таблицы, запросы находятся в DateModule. Для получения доступа к любой таблице или запросу в этом модуле необходимо просто обратится к нему, а потом и к выбранному элементу. Каждой таблице, приведенной выше, соответствует форма для ввода данных в эту таблицу: Cars.db – CarsForm, Owners.db – OwnersForm, AOrders.db – FormAOrders и т.д. Ввод информации о владельцах, об автомобилях, оформление заказов осуществляется с соответствующих форм, содержащих стандартные элементы управления, связанные с данными в таблице.

Используются следующие основные запросы:

1) Query1 – запрос, на основе которого производится поиск всех заказов, оформленных в период времени с даты «А» по дату «В»:

SELECT OrderNum, CodeAuto, CodeOwner, ActDate, Info

FROM "AOrders.DB" Aorders

Where (ActDate>:A) and (ActDate<:B)

2) Query2 – запрос, на основе которого строится диаграмма процентного соотношения востребованности услуг, производимых автосервисом:

SELECT CodeWork, Count(*) AS CountWork

FROM "OrderWork.DB" Orderwork

GROUP BY CodeWork

3) Query3 – запрос, с помощью которого определяется промежуточная стоимость заказа (стоимость работ, произведенных для данного заказа):

SELECT SUM( Kindofwork.CostWork ), Orderwork.OrderNum

FROM "OrderWork.DB" Orderwork

INNER JOIN "KindOfWork.DB" Kindofwork

ON (Kindofwork.CodeWork = Orderwork.CodeWork)

GROUP BY Orderwork.OrderNum

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

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

4. Инструкция пользователю

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

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

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

Просмотр и печать прайс-листа «Услуги автосервиса». Функция необходима как для владельцев автосервиса, так и для его клиентов. Прайс-лист приведен в приложении к данному отчету.

Аналогично прайс-листу «Услуги автосервиса», но по новым автозапчастям.

Занесение информации о новом владельце, ранее не пользовавшимся услугами автосервиса.

Регистрация нового автомобиля, до сей поры не замеченного в автосервисе.

Оформление нового заказа с занесением всей необходимой информации.

15 300,00р.

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

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

Аналогично услугам, но по новым автозапчастям.

5. Исходные тексты

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Menus, jpeg, ExtCtrls;

type

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Image1: TImage;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button10: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit4, Unit5, Unit3, Unit6, Unit7, Unit8;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form1.Show;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Form4.Show;

Form4.Table1.Insert;

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm2.Button4Click(Sender: TObject);

begin

Form3.Show;

end;

procedure TForm2.Button5Click(Sender: TObject);

begin

Form2.Close;

end;

procedure TForm2.Button6Click(Sender: TObject);

begin

Form6.Show;

end;

procedure TForm2.Button7Click(Sender: TObject);

begin

Form7.Show;

end;

procedure TForm2.Button8Click(Sender: TObject);

begin

Form8.QuickRep3.Preview;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls, Mask, Buttons;

type

TForm4 = class(TForm)

Table2OrderNum: TIntegerField;

Table2CodeWork: TIntegerField;

Table1OrderNum: TAutoIncField;

Table1CodeAuto: TIntegerField;

Table1CodeOwner: TIntegerField;

Table1ActDate: TDateField;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

Panel1: TPanel;

DataSource1: TDataSource;

Panel2: TPanel;

Panel3: TPanel;

Splitter1: TSplitter;

Table1: TTable;

Table2: TTable;

DataSource2: TDataSource;

Table3: TTable;

DataSource3: TDataSource;

Table1Marca: TStringField;

Table1Reg: TStringField;

DBGrid3: TDBGrid;

Table4: TTable;

DataSource4: TDataSource;

Table4OrderNum: TIntegerField;

Table4CodePart: TIntegerField;

DataSource5: TDataSource;

Table5: TTable;

Table6: TTable;

DataSource6: TDataSource;

Table2KindWork: TStringField;

Table4PartName: TStringField;

DataSource7: TDataSource;

Table7: TTable;

Table1Name: TStringField;

Table1LasteName: TStringField;

Table1SecondName: TStringField;

Table6CodePart: TAutoIncField;

Table6PartName: TStringField;

Table6CostPart: TCurrencyField;

Table6Guarantee: TIntegerField;

Table5CodeWork: TAutoIncField;

Table5KindWork: TStringField;

Table5CostWork: TCurrencyField;

Table5PeriodExecution: TIntegerField;

Table5Guarantee: TIntegerField;

Table2CostWork: TCurrencyField;

Table1CostSum: TCurrencyField;

Table4CostPart: TCurrencyField;

Button1: TButton;

Button2: TButton;

Query1: TQuery;

Query1SUMOFCostWork: TCurrencyField;

Query1OrderNum: TIntegerField;

DataSource8: TDataSource;

Table3CodeAuto: TAutoIncField;

Table3Info: TMemoField;

Table3TradeMarkAuto: TStringField;

Table3StateSign: TStringField;

Table3TPassport: TStringField;

Table3ColourAuto: TStringField;

Table3OutputYear: TSmallintField;

Table3MotorNum: TStringField;

Table3BodyNum: TStringField;

Table3UnderCgeNum: TStringField;

Table7CodeOwner: TAutoIncField;

Table7OLastName: TStringField;

Table7OFirstName: TStringField;

Table7OSecondName: TStringField;

Table7OPassportNum: TStringField;

Table7ODrivingLicence: TStringField;

Table7OContactPhone: TStringField;

Table7Info: TMemoField;

Table7Photo: TBlobField;

DBEdit1: TDBEdit;

Button3: TButton;

Label2: TLabel;

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

DBNavigator1: TDBNavigator;

BitBtn1: TBitBtn;

procedure FormCreate(Sender: TObject);

procedure Table1CalcFields(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Query1FilterRecord(DataSet: TDataSet; var Accept: Boolean);

procedure Table1AfterInsert(DataSet: TDataSet);

procedure Button3Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit5, Unit6, Unit9;

{$R *.DFM}

procedure TForm4.FormCreate(Sender: TObject);

begin

Table1.Open;

Table2.Open;

//Edit1.Text:=DateToStr(Date);

Label2.Caption:=DateToStr(Date);

end;

procedure TForm4.Table1CalcFields(DataSet: TDataSet);

begin

//Table1CostSum.Value:=Summ(Table2CostWork.Value);

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

Form6.Show;

end;

procedure TForm4.Query1FilterRecord(DataSet: TDataSet;

var Accept: Boolean);

begin

//Query1.Filter:='OrderNum='+ Form4.Table1OrderNum.AsString;

end;

procedure TForm4.Table1AfterInsert(DataSet: TDataSet);

begin

Form4.Table1ActDate.Value:=Date;

end;

procedure TForm4.Button3Click(Sender: TObject);

begin

Form9.Show;

end;

end.

unit Unit8;

interface

uses

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

Dialogs, QuickRpt, QRCtrls, ExtCtrls, DB, DBTables;

type

TForm8 = class(TForm)

QuickRep1: TQuickRep;

QuickRep2: TQuickRep;

QuickRep3: TQuickRep;

TitleBand1: TQRBand;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

SummaryBand1: TQRBand;

QRLabel1: TQRLabel;

Table1: TTable;

PageFooterBand1: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRSysData1: TQRSysData;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRSysData2: TQRSysData;

QRLabel6: TQRLabel;

QRDBText4: TQRDBText;

QRLabel7: TQRLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

{$R *.dfm}

end.

unit Unit9;

interface

uses

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

Dialogs, StdCtrls, Buttons, ComCtrls, DBTables, DB, Grids, DBGrids;

type

TForm9 = class(TForm)

Table1: TTable;

DataSource1: TDataSource;

Query1: TQuery;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

BitBtn1: TBitBtn;

DBGrid1: TDBGrid;

DataSource2: TDataSource;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

{$R *.dfm}

procedure TForm9.BitBtn1Click(Sender: TObject);

begin

Query1.Params.ParamValues['A']:=DateTimePicker1.Date;

Query1.Params.ParamValues['B']:=DateTimePicker2.Date;

Query1.Close;

Query1.Open;

end;

end.

unit Unit1;

interface

uses

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

Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables;

type

TForm1 = class(TForm)

DBGrid1: TDBGrid;

DataSource1: TDataSource;

Table1: TTable;

Table1CodePart: TAutoIncField;

Table1PartName: TStringField;

Table1CostPart: TCurrencyField;

Table1Guarantee: TIntegerField;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

end.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее