
- •1 Постановка задачи
- •1.1 Обзор состояния вопроса
- •1.2 Постановка задачи
- •2.4 Описание ресурсов пэвм
- •3 Основные проектные решения
- •3.1 Схема программной системы
- •3.2 Структура базы данных
- •3.3 Модульная структура проекта
- •3.4 Описание модулей проекта
- •3.5 Описание главной формы проекта
- •3.6 Результаты тестовых испытаний
- •4 Инструкции по использованию программы
- •4.1 Инструкция для оператора
- •4.2 Инструкция для программиста
- •5 Организационно – экономическая часть
- •6 Охрана труда, обеспечение жизнедеятельности
- •6.1 Вредность, оснащенность, профессиональные заболевания, инструкции по охране труда оператора
- •7 Результаты
- •7.1 Вывод по реализации задачи
- •7.2 Перспективы развития проекта
- •8 Список используемой литературы
7 Результаты
7.1 Вывод по реализации задачи
В плане реализации поставленных целей и задач проделана немалая работа. Таким образом, была построена гибкая модель базы данных, с которой легко работать, данные представлены в удобном и наглядном для пользователя виде.
В системе предусмотрено занесение данных о поставленных автомобилях, оформление продажи, осуществление регистрации сотрудника. Также осуществляется поиск автомобилей, сотрудников, клиентов. Производится выдача отчётов о заказах, об объёме продаж, статистики работы сотрудников.
На основании выше изложенного можно сделать вывод, что данная тема является весьма актуальной для организации процесса работы автосалона.
7.2 Перспективы развития проекта
В ходе разработки данного проекта было выявлено, что в дальнейшем необходимо сделать базу сетевой.
8 Список используемой литературы
Архангельский А.Я. «Программирование в Delphi 6» - М.: Издательство «БИНОМ», 2003.
Бакнелл – «Фундаментальные алгоритмы» - СПб.: ООО «ДиаСофтЮП», 2003.
Бузовский О.В. - Программирование. Язык Паскаль-концепции,стандарт,расширения - СПб.: БХВ – Петербург, 2006.
Гофман В.Э., Хомоненко А.Д. «Работа с БД в Delphi» - СПб.: БХВ – Петербург, 2002.
Дархвелидзе П.Г., Марков Е.П. «Программирование в Delphi 7» - СПб.: БХВ – Петербург, 2003
Дарахвалидзе – «Delphi 2005 для Win32» - СПб.: БХВ – Петербург, 2005.
Елманова, Трепалин, Тенцер – «Delphi и технология COM» - 2 изд, 2003.
Зайцев О.В.,Владимиров А.М. - ГРАФИКА В ДЕЛЬФИ - СПб.: БХВ – Петербург, 2005.
Кандзюба С.П. - Delphi6 Базы данных и приложения
Корняков В. - Программирование документов и приложений MS Office в Delphi - СПб.: БХВ – Петербург, 2005.
Краснов М. - DirectX Графика в проектах Delphi
Михаил Фленов «Библия Delphi» - СПб.: БХВ – Петербург, 2004.
Парижский С.М. «Delphi. Учимся на примерах» - К.: «МК-Пресс», 2005
Пестреков В.М., Маслобоев А.Н. «Delphi в примерах» - СПб.: БХВ – Петербург, 2005.
Ревич Ю. «Нестандартные приёмы программирования на Delphi» - СПб.: БХВ – Петербург, 2005.
Род Стивене - Delphi Готовые алгоритмы - СПб.: БХВ – Петербург, 2004.
Сорокин А.В. «Разработка БД» - СПб.: Питер, 2005.
Фленов М. - Delphi 2005 Секреты программирования - СПб.: БХВ – Петербург, 2006.
Фленов М. Е. «Программирование в Delphi глазами хакера» - СПб.: БХВ – Петербург, 2003.
Шупрута В.В. - Delphi 2005 Учимся программировать - СПб.: БХВ – Петербург, 2005.
Приложение А
(справочная)
«Договор поставки»
Приложение Б
(справочная)
«Платежное поручение»
Приложение В
(справочная)
«Снятие кассы»
Приложение Г
(справочная)
«Диаграмма продаж автомобилей»
Приложение Д
(справочная)
«Объем продаж»
Приложение Е
(справочная)
«Оформление кредита»
Приложение Ж
(
справочная)
«Гарантийный талон»
Приложение З
(справочная)
«Товарный чек»
Приложение И
(справочная)
«Прибыль автосалона»
Приложение К
(справочная)
«Листинг исходных кодов»
«Авторизация»
case ComboBox1.ItemIndex of
0: if Edit1.Text='1' then dlSekr.showModal else showmessage('неправильный ввод');
1: if Edit1.Text='2' then ParKlad.ShowModal else showmessage('неправильный ввод');
2: if Edit1.Text='3' then ParSotr.showModal else showmessage('неправильный ввод');
3: if Edit1.Text='4' then dlMened.showModal else showmessage('неправильный ввод');
4: if Edit1.Text='5' then
begin dlKlien.Position:=poDesigned;
dlKlien.showModal; end
else showmessage('неправильный ввод');
5: if Edit1.Text='6' then dlDirek.showModal else showmessage('неправильный ввод');
else showmessage('неправильный ввод');
end;
«Расчёт суммы поставки»
nakl.ADOTable1itogo.Value:=nakl.ADOTable1obsh_stoim_avt.Value+(nakl.ADOTable1obsh_stoim_avt.Value*nakl.ADOTable1proc_za_postavku.Value);
«Расчёт суммы автомобилей»
dlNakl.ADOTable1stoim_v_rub.Value:=dlNakl.ADOTable1stoim_avt.Value*dlNakl.ADOTable1tar.Value;
«Расчёт суммы продажи»
k:=0;
if (Prodazh.ADOTable1kod_karti.Value<>0) then
begin
k:=0.03;
if (Prodazh.ADOTable1SumKred.Value<>0) then
k:=Prodazh.ADOTable1SumKred.Value;
end;
Prodazh.ADOTable1sum_NDS.Value:=Prodazh.ADOTable1proc_NDS.Value*Prodazh.ADOTable1sum.Value;
Prodazh.ADOTable1summa_prodazh.Value:=(Prodazh.ADOTable1SObor.Value+Prodazh.ADOTable1sum.Value+Prodazh.ADOTable1summa_za_oforml.Value+Prodazh.ADOTable1summa_dostav.Value+Prodazh.ADOTable1sum_NDS.Value)-((Prodazh.ADOTable1SObor.Value+Prodazh.ADOTable1sum.Value+Prodazh.ADOTable1summa_za_oforml.Value+Prodazh.ADOTable1summa_dostav.Value+Prodazh.ADOTable1sum_NDS.Value)*k);
Prodazh.ADOTable1stoim_oplat.Value:=(Prodazh.ADOTable1SObor.Value+(Prodazh.ADOTable1sum.Value-Prodazh.ADOTable1SumVKred.Value)+Prodazh.ADOTable1summa_za_oforml.Value+Prodazh.ADOTable1summa_dostav.Value+Prodazh.ADOTable1sum_NDS.Value)-((Prodazh.ADOTable1SObor.Value+(Prodazh.ADOTable1sum.Value-Prodazh.ADOTable1SumVKred.Value)+Prodazh.ADOTable1summa_za_oforml.Value+Prodazh.ADOTable1summa_dostav.Value+Prodazh.ADOTable1sum_NDS.Value)*k);
Prodazh.ADOTable1sdacha.Value:=Prodazh.ADOTable1nalichn.Value-Prodazh.ADOTable1stoim_oplat.Value;
«Расчёт суммы выплаты по кредиту»
Present:= Now;
DecodeDate(ViplPoKred.ADOTable1data_oform.Value, Year, Month, Day);
DecodeDate(Present, Year1, Month1, Day1);
k2:=(Year1-(Year+(trunc((Month+ViplPoKred.ADOTable1kol_vipl.Value)/12))));
k3:=(Month1+(k2*12))-(((Month+1+ViplPoKred.ADOTable1kol_vipl.Value)-(trunc((Month+1+ViplPoKred.ADOTable1kol_vipl.Value)/12)*12)));
k4:=(Day1+(k3*30))-Day;
if (k4>0) then
ViplPoKred.ADOTable1obsh_summa.Value:=ViplPoKred.ADOTable1summa_oplati.Value+((ViplPoKred.ADOTable1summa_oplati.Value*ViplPoKred.ADOTable1Pen.Value*k4))
else
ViplPoKred.ADOTable1obsh_summa.Value:=ViplPoKred.ADOTable1summa_oplati.Value;
«Прорисовка демонстрационного зала»
var r,c,j,m,k,d1,d2,d3,d4,d5,i:integer;
b:string;
g:real;
begin
s1:=0;
k:=225;
d1:=15;
d2:=15;
d5:=250;
j:=0;
m:=2;
with Image1 do Canvas.FillRect(Rect(0,0,Width,Height));
with Image1.Canvas do // Снова рисуем пустой зал
begin
for r:=1 to d1 do
begin
c:=0;
for m:=1 to d2 do
begin
c:=c+2;
if r mod 2=0 then begin
RoundRect(25+15*c,10+15*r,38+15*c,23+15*r,8,8);
end
else begin
j:=j+1;
b:=IntToStr(j);
if j<=105 then
TextOut(25+15*c,10+15*r,b);
end;
end;
end;
end;
with Image1.Canvas do // Закрашиваем синим проданные места
begin
ADOTable1.First;
for i:=1 to ADOTable1.RecordCount do begin
r:=ADOTable1.FieldByName('mesto_v_manezhe').AsInteger;
if (r mod 15)<>0 then
m:=(((trunc(r/15))+1)*2)
else m:=((trunc(r/15))*2);
if m=4 then
r:=(r+1)-16
else
if m=6 then
r:=(r+1)-31
else
if m=8 then
r:=(r+1)-46
else
if m=10 then
r:=(r+1)-61
else
if m=12 then
r:=(r+1)-76
else
if m=14 then
r:=(r+1)-91;
if r<>0 then begin
r:=r+r;
Brush.Color:=clBlue;
RoundRect(25+15*r,10+15*m,38+15*r,23+15*m,8,8);
Brush.Color:=clWhite;
end;
{end;}
ADOTable1.Next;
end;
end;
ADOTable1.First;
Brush.Color:=clWhite;
«Оформление продажи»
dlProdaz.DateTimePicker2.DateTime:=now;
Prodazh.ADOTable1.Insert;
if (dlProdaz.DBCheckBox1.Checked=false) then begin
dlProdaz.DateTimePicker2.Visible:=false;
dlProdaz.Label5.Visible:=false;
dlProdaz.Label6.Visible:=false;
dlProdaz.Label7.Visible:=false;
dlProdaz.DBEdit4.Visible:=false;
dlProdaz.DBEdit5.Visible:=false;
end
else begin
dlProdaz.DateTimePicker2.Visible:=true;
dlProdaz.Label5.Visible:=true;
dlProdaz.Label6.Visible:=true;
dlProdaz.Label7.Visible:=true;
dlProdaz.DBEdit4.Visible:=true;
dlProdaz.DBEdit5.Visible:=true;
end;
Prodazh.ADOTable1kod_sotrudnika.Value:=StrToInt(dlKass.Edit1.Text);
dlProdaz.Show;
«Фильтрация кредитов»
ViplPoKred.ADOTable1.Filtered:=false;
ViplPoKred.ADOTable1.Filter:='kod_kredita='''+Edit2.Text+'''';
ViplPoKred.ADOTable1.Filtered:=true;
«Поиск автомобилей»
var s1,s2:string;
op:TLocateOptions;
begin
Case ComboBox1.ItemIndex of
0:begin s1:= 'kod_avt';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
1:begin s1:= 'marka';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
2:begin s1:= 'nazvan_avt';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
3:begin s1:= 'god_vipuska';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
4:begin s1:= 'strana_proizvod';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
5:begin s1:= 'stoim_s_nadb';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
6:begin s1:= 'kol_mest';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
7:begin s1:= 'cvet_avt';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
8:begin s1:= 'tip_kuzova';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
9:begin s1:= 'tip_dvigat';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
10:begin s1:= 'max_scor';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
11:begin s1:= 'moshn_avt';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
12:begin s1:= 'kol_dverei';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
13:begin s1:= 'razgon';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
14:begin s1:= 'obem_bagazhn';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
15:begin s1:= 'obem_topl_baka';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
16:begin s1:= 'tip_kor_pered';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
17:begin s1:= 'tip_rul';
s2:= Edit1.Text;
op:= [loCaseInsensitive];
end;
end;
if (Skl.Edit1.Text='0') then begin
if not KladSkl.ADOTable1.Locate(s1,s2,op) then
ShowMessage(' не найдена ');
end
else
begin
if not Sklad.ADOTable1.Locate(s1,s2,op) then
ShowMessage(' не найдена ');
end;
«Дерево данных автомобилей»
var
i:integer;
CaptionStr:String;
NewNode,NewNode2:TTreeNode;
j:integer;
r,c,h,m,k,d1,d2,d3,d4,d5:integer;
b:string;
g:real;
cv1:Tcolor;
begin
ADOTable1.Active:=false;
ADOTable1.Active:=true;
ADOQuery2.Active:=false;
ADOQuery2.Active:=true;
ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
TreeView1.Items.Clear;
CaptionStr:='';
ADOQuery2.First;
for i:=1 to ADOQuery2.RecordCount do begin
NewNode:=TreeView1.Items.Add(Nil, ADOQuery2marka.AsString);
CaptionStr:=ADOQuery2marka.AsString;
ADOQuery1.First;
for j:=1 to ADOQuery1.RecordCount do begin
if ((CaptionStr)=(ADOQuery1marka.AsString)) then
begin
NewNode2:=TreeView1.Items.AddChild(NewNode, ADOQuery1nazvan_avt.AsString);
end;
ADOQuery1.Next;
end;
ADOQuery2.Next;
end;
s1:=0;
k:=225;
d1:=2;
d2:=5;
{d3:=280;
d4:=265;}
d5:=250;
j:=0;
m:=2;
with Image1 do Canvas.FillRect(Rect(0,0,Width,Height));
with Image1.Canvas do // Снова рисуем пустой зал
begin
for r:=1 to d1 do
begin
c:=0;
for m:=1 to d2 do begin
h:=m;
if r=2 then h:=h+5;
cv1:=cvet[h];
Brush.Color:=cv1;
RoundRect(24*m-24,24*r-24,24*m,24*r,24,24);
Brush.Color:=clWhite;
end;
end;
end;