Главная страница
Навигация по странице:

  • Основные аспекты курсовой работы

  • Процедура закраски ячеек

  • Процедура занесения данных в базу

  • Процедура закрытия БД (эмуляция перезагрузки компьютера)

  • Заполнение полей

  • Процедура открытия и редактирования

  • Процедура автоматического заполнения формы

  • сервис центр. курсак. Руководство. 34 Порядок ввода в эксплуатацию. 35 Литература 37 Цели и задачи курсовой работы Цель работы


    Скачать 2.11 Mb.
    НазваниеРуководство. 34 Порядок ввода в эксплуатацию. 35 Литература 37 Цели и задачи курсовой работы Цель работы
    Анкорсервис центр
    Дата30.06.2022
    Размер2.11 Mb.
    Формат файлаdoc
    Имя файлакурсак.doc
    ТипРуководство
    #621415

    Оглавление:


    Оглавление: 2

    2

    Цели и задачи курсовой работы 3

    Обзор рынка аналогичных программ. 3

    Сбор исходных данных. 3

    Интерфейс проекта 4

    Технологии. 17

    Руководство. 34

    Порядок ввода в эксплуатацию. 35

    Литература 37

    Цели и задачи курсовой работы



    Цель работы: Создание базы данных: «Автоматизированное рабочее место сервисного центра»
    СУБД или язык программирования, используемые для реализации курсовой работы: SQL server InterBase 7, Delphi 7
    Основные аспекты курсовой работы:

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

    Состав курсовой работы должен содержать следующие составные части:

    1. Полностью завершённый проект базы данных «Автоматизированное рабочее место сервисного центра», реализованный на базе СУБД InterBase 7, и алгоритмического языка Delphi 7, содержащий следующие модули:

      • Ввод нового заказа

      • Работа с существующими заказами

      • Сортировка

      • Отчет о проделанной работе сервисного центра

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

    Обзор рынка аналогичных программ.


    Имеется целая серия ПО позволяющих вести работу в сервисном центре. Но не многие из этой армии Software имеют гибкую настройку сортировки заказов. К тому же, программы подобного уровня стоят не малые деньги. Также во многих аналогах нет возможности быстро оценить степень срочности заказа благодаря цветовому выделению. Нет также в своем большинстве таких программ вывода информации на бумажный носитель.

    В нашей работе мы устраним эти недостатки. А именно добавим в проект возможность гибкой сортировки заказов, цветовое выделение строк, вывод отчетов на бумажный носитель. Программа получила свое название: Dialog3.

    Сбор исходных данных.


    Разберем сам процесс автоматизации рабочего места сервисного центра.

    В сервисный центр поступает (Дата приемки, Дата выдачи) устройство (Устройство, Производитель, Модель, Серийный номер), вносятся сведенья о сделавшем заявку, это может быть как физическое лицо, так и юридическое. В случае, если сделало заявку юридическое лицо вносятся сведенья о названии организации и фамилия, имя, отчество через кого была сделана заявка организацией (Правовая форма, Адрес, Телефон, Фамилия, Имя, Отчество) и кто из сотрудников выполнил заявку (Выполнил, Фамилия, Имя, Отчество). После выполнения заявки вносятся дополнительные сведенья о проделанной работе: какая работа была проделана, в случае если выполняемые услуги в сервисном центре систематизированы вводиться артикул, количество видов работ, цена работы, общая сумма за выполненную работу, дополнительное описание работы если есть необходимость, в случае если пришлось заменить какое-то комплектующие вносятся сведенья об снятом устройстве и сведенья об установленном устройстве (Работа, Артикул, Количество, Цена, Сумма, Описание, Выполнено, Снято, Установлено).

    Интерфейс проекта



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

    Что позволяет быстро сориентироваться сотруднику сервисного центра – какую работу надо проделать в п6ервую очередь.


    Если мы выберем меню Файл, то нам будет предложено выйти из программы.



    При выборе в пункте меню поля Запись, нам будет предложено:




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

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

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

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

    После того, как мы заполнили форму Неисправность и перечень работ, мы нажимаем Ок. Заказ принят.
    При нажатии клавиши Enter или же Запись -> Изменить появляется следующая форма:


    В этой форме мы можем изменить, как первоначальные сведенья, так и сведенья необходимые нам в течении всей работы над заказом. Во-первых это свойство Состояние.

    После того, как работа выполнена заполняется форма Выполненная работа:


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


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


    Если мы выберем кнопку Квиток, то появиться форма для вывода на печать заявки на ремонт.


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

    Если же мы выберем Отчет, то появиться отчет о проделанной работе над заказом. В отчете предоставлены полные сведенья о проделанной работе: номер заказа, дата приемки и дата выдачи заказа, кто принимал и кто выдавал заказ, какая работа была проведена, какие устройства были заменены, общая стоимость проведенных работ. Благодаря тому, что сведенья о конечной сумме проделанной работы достаточно полные это позволяет заказчику увидеть «за что» он отдает деньги.


    Для данного отчета приведен пример: в сервисный центр поступила заявка на лечение вирусов. Для лечения вирусов был установлен антивирусный пакет стоимостью 500 рублей. В процессе работы встала производственная необходимость извлечь из системного блока CD – Rom, тут же указывается его цена и модель. В результате этой манипуляции в графе Итого Выполненная работа из общей цены была отнята цена привода.

    После того, заказ выполнен необходимо нажать кнопку Заказ выполнен, после чего со строки спадает выделение цветом.
    Если в меню Запись выбрать Удалить, то строчка будет выделена черным цветом.
    Последний пункт в меню Запись это Сортировка.



    Сортировка имеет три вкладки Сортировка, Дополнительно и Расширенный поиск. В Сортировке вводиться критерий выборки и пункт по которому производиться сортировка. В случае, если необходим расширенный поиск, то необходимо выбрать свойство Использовать расширенный поиск.

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

    В Сортировка -> Дополнительно, можно выбрать свойства: Показывать удаленные записи, Находиться сколько дней в ремонте, Показать все невыполненные заказы, находящиеся более 7 дней.
    Далее в меню идет Отчет. В отчете мы можем увидеть работу сервисного центра: какие заказы выполнены, кто заказчик, доход за указанный промежуток времени, дату выполнения заказа, какой вид ремонта (гарантийный или платный ремонт).
    Программа оснащена достаточно полной справочной системой. В справке полностью отражены о системойолнения формы:сновные свойства программного продукта.



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


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


    По умолчанию при установке программы в первый раз все свойства включены.

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



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


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



    Технологии.


    Процедура закраски ячеек:
    procedure TForm1.DBCoolGrid1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumn;

    State: TGridDrawState);

    var

    ss,s:string;

    dat,dat1:TDateTime;

    d1,d,m1,m,y1,y:word;

    begin

    if DataModule2.IBQuery1_2.RecordCount>0 then

    begin

    s:=column.Field.Text;

    if Column.Index=0 then

    begin

    if s='N' then

    s:='В ремонте';

    if s='B' then

    s:='Отправлено по гарантии';

    if s='C' then

    s:='Ждем запчасти';

    if s='D' then

    s:='Ждем заказчика';

    if s='Y' then

    s:='Выполнено';

    if s='X' then

    s:='Удалено';

    end;

    if Column.Index=3 then

    begin

    ss:= (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString;

    if ss<>'Y' then s:='Не готово';

    end;

    if Column.Index=5 then

    begin
    if s='1' then s:='Платный'else

    if s='2' then s:='Гарантийный';

    end;

    if Column.Index=4 then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl04 ');
    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T401='+s+' ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    s:=Trim(DataModule2.IBQueryAll.fieldbyname('T402').AsString);

    end;

    if Column.Index=6 then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl07 ');
    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T701='+s+' ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    s:=Trim(DataModule2.IBQueryAll.fieldbyname('T702').AsString);

    end;

    if Column.Index=7 then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl07 ');
    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T701='+s+' ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    s:=Trim(DataModule2.IBQueryAll.fieldbyname('T707').AsString);

    end;

    if Column.Index=8 then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl08 ');
    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T801='+s+' ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    s:=Trim(DataModule2.IBQueryAll.fieldbyname('T802').AsString);

    end;

    if Column.Index=9 then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl08 ');
    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T801='+s+' ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    s:=Trim(DataModule2.IBQueryAll.fieldbyname('T802').AsString);

    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='Y' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clGray;

    DBCoolGrid1.Canvas.Brush.Color:=clWhite;

    end

    else

    begin

    DBCoolGrid1.Canvas.Font.Color:=clBlack;

    DBCoolGrid1.Canvas.Brush.Color:=clWhite;

    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString<>'Y' then

    begin

    dat:=(Sender as TDBGrid).DataSource.DataSet.FieldByName('T103').AsDateTime;

    dat1:=Date;

    DecodeDate(Dat,y,m,d);

    DecodeDate(Dat1,y1,m1,d1);
    if dat1-dat >=7 then

    begin

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='N' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=form12.Panel1.Color;

    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='D' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=form12.Panel2.Color;

    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='C' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=form12.Panel3.Color;

    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='B' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=form12.Panel4.Color;

    end;

    end;
    end;

    if (Sender as TDBGrid).DataSource.DataSet.FieldByName('T113').AsString='X' then

    begin

    DBCoolGrid1.Canvas.Font.Color:=clGray;

    DBCoolGrid1.Canvas.Brush.Color:=form12.Panel5.Color;

    end;

    {if gdFocused in State then

    NoId:=DataModule2.IBQuery1_2T101.AsInteger;

    if NoId =(Sender as TDBGrid).DataSource.DataSet.FieldByName('T101').AsInteger then

    begin

    DBCoolGrid1.Canvas.Font.Style:=[fsBold];

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=$00FF8000;

    end;

    }

    if gdFocused in State then

    begin

    DBCoolGrid1.Canvas.Font.Style:=[fsBold];

    DBCoolGrid1.Canvas.Font.Color:=clWhite;

    DBCoolGrid1.Canvas.Brush.Color:=$00FF8000;

    end;
    DBCoolGrid1.Canvas.FillRect(Rect);

    DBCoolGrid1.Canvas.TextRect(Rect, Rect.Left+1, Rect.Top + 2, s);

    end;

    end;
    Процедура занесения данных в базу:
    procedure TForm3.SpeedButton1Click(Sender: TObject);

    var

    i,NT2,NT1,NT4,NT5,NT6,NT7,NT8,NT9,NT10,NT11,NT12:integer;

    s,snam,sot,ss:string;

    DtD:TDateTime;

    DD,MM,YY:word;
    begin

    dxPickEdit1.Text:=TestStr(dxPickEdit1.Text);

    dxPickEdit2.Text:=TestStr(dxPickEdit2.Text);

    dxPickEdit3.Text:=TestStr(dxPickEdit3.Text);

    dxPickEdit4.Text:=TestStr(dxPickEdit4.Text);

    dxPickEdit5.Text:=TestStr(dxPickEdit5.Text);

    dxPickEdit6.Text:=TestStr(dxPickEdit6.Text);

    dxPickEdit7.Text:=TestStr(dxPickEdit7.Text);

    dxPickEdit8.Text:=TestStr(dxPickEdit8.Text);

    dxPickEdit9.Text:=TestStr(dxPickEdit9.Text);

    dxPickEdit10.Text:=TestStr(dxPickEdit10.Text);

    dxPickEdit11.Text:=TestStr(dxPickEdit11.Text);

    form1.Memo1.Lines.Append('+------{**___**}------+');

    form1.Memo1.Lines.Append('Add:'+dxPickEdit1.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit2.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit3.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit4.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit5.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit6.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit7.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit8.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit9.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit10.Text);

    form1.Memo1.Lines.Append('Add:'+dxPickEdit11.Text);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl04 ');

    s:=Trim(dxPickEdit1.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T402='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt4:=DataModule2.IBQueryAll.fieldbyname('T401').AsInteger

    else

    begin

    DataModule2.IBTable4.Insert;

    DataModule2.IBTable4T401.AsInteger:=0;

    s100:=dxPickEdit1.Text;

    if s100='' then s100:='none';

    DataModule2.IBTable4T402.AsString:=s100;

    DataModule2.IBTable4.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt4:=DataModule2.IBQueryAll.fieldbyname('T401').AsInteger

    end;

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl05 ');

    s:=Trim(dxPickEdit2.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T502='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt5:=DataModule2.IBQueryAll.fieldbyname('T501').AsInteger

    else

    begin

    DataModule2.IBTable5.Insert;

    DataModule2.IBTable5T501.AsInteger:=0;

    s100:=dxPickEdit2.Text;

    if s100='' then s100:='none';

    DataModule2.IBTable5T502.AsString:=s100;

    DataModule2.IBTable5.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt5:=DataModule2.IBQueryAll.fieldbyname('T501').AsInteger

    end;

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl06 ');

    s:=Trim(dxPickEdit3.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T602='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt6:=DataModule2.IBQueryAll.fieldbyname('T601').AsInteger

    else

    begin

    DataModule2.IBTable6.Insert;

    DataModule2.IBTable6T601.AsInteger:=0;

    s100:=dxPickEdit3.Text;

    if s100='' then s100:='none';

    DataModule2.IBTable6T602.AsString:=s100;

    DataModule2.IBTable6.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt6:=DataModule2.IBQueryAll.fieldbyname('T601').AsInteger

    end;

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl08 ');

    s:=Trim(dxPickEdit11.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T802='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt8:=DataModule2.IBQueryAll.fieldbyname('T801').AsInteger

    else

    begin

    DataModule2.IBTable8.Insert;

    DataModule2.IBTable8T801.AsInteger:=0;

    s50:=dxPickEdit11.Text;

    if s50='' then s50:='none';

    DataModule2.IBTable8T802.AsString:=s50;

    DataModule2.IBTable8.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt8:=DataModule2.IBQueryAll.fieldbyname('T801').AsInteger

    end;

    DataModule2.IBQueryAll.Close;

    if dxPickEdit5.Text='' then

    begin

    snam:=trim(dxPickEdit9.Text);

    sot:=trim(dxPickEdit10.Text);

    ss:=Trim(dxPickEdit8.Text);

    if snam<>'' then

    ss:=ss+' '+snam[1]+'.';

    if sot<>'' then

    ss:=ss+' '+sot[1]+'.';

    dxPickEdit5.Text:=ss;

    end;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl07 ');
    s:=Trim(dxPickEdit5.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where (T702='''+s+''') and');
    s:=Trim(dxPickEdit6.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add(' (T706='''+s+''') and');
    s:=Trim(dxPickEdit7.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add(' (T707='''+s+''') and');
    s:=Trim(dxPickEdit8.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add(' (T703='''+s+''') and');
    s:=Trim(dxPickEdit9.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add(' (T704='''+s+''') and');
    s:=Trim(dxPickEdit10.Text);

    if s='' then s:='none';

    IBQueryAll.SQL.Add(' (T705='''+s+''')');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt7:=DataModule2.IBQueryAll.fieldbyname('T701').AsInteger

    else

    begin

    DataModule2.IBTable7.Insert;

    DataModule2.IBTable7T701.AsInteger:=0;

    s100:=dxPickEdit5.Text;

    if s100='' then s100:='none';

    DataModule2.IBTable7T702.AsString:=s100;

    s30:=dxPickEdit8.Text;

    if s30='' then s30:='none';

    DataModule2.IBTable7T703.AsString:=s30;

    s30:=dxPickEdit9.Text;

    if s30='' then s30:='none';

    DataModule2.IBTable7T704.AsString:=s30;

    s30:=dxPickEdit10.Text;

    if s30='' then s30:='none';

    DataModule2.IBTable7T705.AsString:=s30;

    s100:=dxPickEdit6.Text;

    if s100='' then s100:='none';

    DataModule2.IBTable7T706.AsString:=s100;

    s30:=dxPickEdit7.Text;

    if s30='' then s30:='none';

    DataModule2.IBTable7T707.AsString:=s30;

    DataModule2.IBTable7.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt7:=DataModule2.IBQueryAll.fieldbyname('T701').AsInteger

    end;

    {Showmessage('T4='+inttostr(nt4)+' T5='+inttostr(nt5)+' T6='+inttostr(nt6)+' T7='+inttostr(nt7)+' '+' T8='+inttostr(nt8)+' ');}

    begin

    DataModule2.IBTable1.Insert;

    DataModule2.IBTable1T101.AsInteger:=0;

    DataModule2.IBTable1T102.AsInteger:=round(dxSpinEdit1.Value);

    DataModule2.IBTable1T103.AsDateTime:=StrToDate(dxDateEdit1.Text);

    dtd:=StrToDate(dxDateEdit1.Text);

    DecodeDate(DtD,YY,MM,DD);

    DtD:=DateSer(YY,MM,DD-1);

    DataModule2.IBTable1T104.AsDateTime:=DtD;

    DataModule2.IBTable1T105.AsInteger:=NT4;

    DataModule2.IBTable1T106.AsInteger:=NT5;

    DataModule2.IBTable1T107.AsInteger:=NT6;

    s20:=dxPickEdit4.Text;

    if s20='' then s20:='none';

    DataModule2.IBTable1T108.AsString:=s20;

    if dxCheckEdit1.Checked then

    DataModule2.IBTable1T109.AsString:='1'

    else

    DataModule2.IBTable1T109.AsString:='2';

    DataModule2.IBTable1T110.AsInteger:=NT7;

    DataModule2.IBTable1T111.AsInteger:=NT8;

    DataModule2.IBTable1T112.AsInteger:=NT8;

    DataModule2.IBTable1T113.AsString:='N';

    DataModule2.IBTable1.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    DataModule2.IBTable1.Refresh;

    DataModule2.IBTable1.Last;

    nt1:=DataModule2.IBTable1T101.AsInteger;

    for i:=1 to 5 do

    if trim(form4.StringGrid1.Cells[1,i])<>'' then

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl09 ');

    s:=trim(form4.StringGrid1.Cells[1,i]);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T902='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    nt2:=DataModule2.IBQueryAll.fieldbyname('T901').AsInteger

    else

    begin

    DataModule2.IBTable9.Insert;

    DataModule2.IBTable9T901.AsInteger:=0;

    s200:=trim(form4.StringGrid1.Cells[1,i]);

    if s200='' then s200:='none';

    DataModule2.IBTable9T902.AsString:=s200;

    DataModule2.IBTable9.Post;

    DataModule2.IBQueryAll.Close;

    DataModule2.IBQueryAll.Open;

    nt2:=DataModule2.IBQueryAll.fieldbyname('T901').AsInteger

    end;

    DataModule2.IBTable2.Insert;

    DataModule2.IBTable2T201.AsInteger:=0;

    DataModule2.IBTable2T202.AsInteger:=nt1;

    DataModule2.IBTable2T203.AsInteger:=nt2;

    DataModule2.IBTable2.Post;

    end;

    end;

    for i:=1 to Form14.CoolStringGrid1.RowCount-1 do

    if trim(form14.CoolStringGrid1.Cells[1,i])<>'' then

    begin

    DataModule2.IBTable14.Insert;

    DataModule2.IBTable14T1401.AsInteger:=0;

    DataModule2.IBTable14T1402.AsInteger:=nt1;

    s100:=Form14.CoolStringGrid1.Cells[0,i];

    if s100='' then s100:='none';

    DataModule2.IBTable14T1403.AsString:=s100;

    s100:=Form14.CoolStringGrid1.Cells[1,i];

    if s100='' then s100:='none';

    DataModule2.IBTable14T1404.AsString:=s100;

    DataModule2.IBTable14.Post;

    end;

    DataModule2.IBTable1.Refresh;

    DataModule2.IBTable2.Refresh;

    DataModule2.IBTable4.Refresh;

    DataModule2.IBTable5.Refresh;

    DataModule2.IBTable6.Refresh;

    DataModule2.IBTable7.Refresh;

    DataModule2.IBTable8.Refresh;

    DataModule2.IBTable9.Refresh;
    Form1.RefreshDB;

    close;

    end;

    Процедура закрытия БД (эмуляция перезагрузки компьютера):
    Procedure TForm1.RefreshDB;

    begin

    DataModule2.IBDatabase1.Close;

    DataModule2.IBDatabase1.Open;

    DataModule2.IBTable1.Open;

    DataModule2.IBTable2.Open;

    DataModule2.IBTable3.Open;

    DataModule2.IBTable4.Open;

    DataModule2.IBTable5.Open;

    DataModule2.IBTable6.Open;

    DataModule2.IBTable7.Open;

    DataModule2.IBTable8.Open;

    DataModule2.IBTable9.Open;

    DataModule2.IBTable10.Open;

    DataModule2.IBTable11.Open;

    DataModule2.IBTable12.Open;

    DataModule2.IBTable14.Open;

    DataModule2.IBQuery1.Open;

    DataModule2.IBQuery1_1.Open;

    DataModule2.IBQuery1_2.Open;

    DataModule2.IBQuery10.Open;

    DataModule2.IBQuery11.Open;

    DataModule2.IBQuery12.Open;

    DataModule2.IBQuery14.Open;

    DataModule2.IBQuery14_1.Open;

    DataModule2.IBQuery2.Open;

    DataModule2.IBQuery2_1.Open;

    DataModule2.IBQuery3.Open;

    DataModule2.IBQuery3_1.Open;

    DataModule2.IBQuery4.Open;

    DataModule2.IBQuery5.Open;

    DataModule2.IBQuery6.Open;

    DataModule2.IBQuery7.Open;

    DataModule2.IBQuery8.Open;

    DataModule2.IBQuery9.Open;

    DataModule2.IBQueryAll.Open;

    DataModule2.IBQueryAll2.Open;
    end;

    function DateSer(y, m, d: Integer): TDateTime;

    const

    mj: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31,

    31, 30, 31, 30, 31);

    var

    add: Integer;

    begin

    while (true) do

    begin

    y := y + (m - 1) div 12;

    m := (m - 1) mod 12 + 1;

    if m <= 0 then

    begin

    Inc(m, 12);

    Dec(y);

    end;

    if ((y mod 4 = 0) and

    ((y mod 100 <> 0) or (y mod 400 = 0)))

    and (m = 2) then

    add := 1 //дополнительный день в феврале

    else

    add := 0;

    if (d > 0) and (d <= (mj[m] + add)) then

    break;

    if d > 0 then

    begin

    Dec(d, mj[m] + add);

    Inc(m);

    end

    else

    begin

    Inc(d, mj[m] + add);

    Dec(m);

    end;

    end;

    Result := EncodeDate(y, m, d);

    end;
    Заполнение полей:
    procedure TForm3.FormShow(Sender: TObject);

    var

    s:string;

    begin

    dxPickEdit1.Items.Clear;

    DataModule2.IBQuery4.First;

    repeat

    s:=Trim(DataModule2.IBQuery4T402.AsString);

    if s<>'' then

    if dxPickEdit1.Items.IndexOf(s)=-1 then

    dxPickEdit1.Items.Add(s);

    DataModule2.IBQuery4.Next;

    until DataModule2.IBQuery4.Eof;

    dxPickEdit1.Sorted:=true;

    dxPickEdit2.Items.Clear;

    DataModule2.IBQuery5.First;

    repeat

    s:=Trim(DataModule2.IBQuery5T502.AsString);

    if s<>'' then

    if dxPickEdit2.Items.IndexOf(s)=-1 then

    dxPickEdit2.Items.Add(s);

    DataModule2.IBQuery5.Next;

    until DataModule2.IBQuery5.Eof;

    dxPickEdit2.Sorted:=true;

    dxPickEdit3.Items.Clear;

    DataModule2.IBQuery6.First;

    repeat

    s:=Trim(DataModule2.IBQuery6T602.AsString);

    if s<>'' then

    if dxPickEdit3.Items.IndexOf(s)=-1 then

    dxPickEdit3.Items.Add(s);

    DataModule2.IBQuery6.Next;

    until DataModule2.IBQuery6.Eof;

    dxPickEdit3.Sorted:=true;

    dxPickEdit11.Items.Clear;

    DataModule2.IBQuery8.First;

    repeat

    s:=Trim(DataModule2.IBQuery8T802.AsString);

    if s<>'' then

    if dxPickEdit11.Items.IndexOf(s)=-1 then

    dxPickEdit11.Items.Add(s);

    DataModule2.IBQuery8.Next;

    until DataModule2.IBQuery8.Eof;

    dxPickEdit11.Sorted:=true;

    dxPickEdit5.Items.Clear;

    dxPickEdit6.Items.Clear;

    dxPickEdit7.Items.Clear;

    dxPickEdit8.Items.Clear;

    dxPickEdit9.Items.Clear;

    dxPickEdit10.Items.Clear;

    DataModule2.IBQuery7.First;

    repeat

    s:=Trim(DataModule2.IBQuery7T702.AsString);

    if s<>'' then

    if dxPickEdit5.Items.IndexOf(s)=-1 then

    dxPickEdit5.Items.Add(s);

    s:=Trim(DataModule2.IBQuery7T706.AsString);

    if s<>'' then

    if dxPickEdit6.Items.IndexOf(s)=-1 then

    dxPickEdit6.Items.Add(s);

    s:=Trim(DataModule2.IBQuery7T707.AsString);

    if s<>'' then

    if dxPickEdit7.Items.IndexOf(s)=-1 then

    dxPickEdit7.Items.Add(s);

    s:=Trim(DataModule2.IBQuery7T703.AsString);

    if s<>'' then

    if dxPickEdit8.Items.IndexOf(s)=-1 then

    dxPickEdit8.Items.Add(s);

    s:=Trim(DataModule2.IBQuery7T704.AsString);

    if s<>'' then

    if dxPickEdit9.Items.IndexOf(s)=-1 then

    dxPickEdit9.Items.Add(s);

    s:=Trim(DataModule2.IBQuery7T705.AsString);

    if s<>'' then

    if dxPickEdit10.Items.IndexOf(s)=-1 then

    dxPickEdit10.Items.Add(s);

    DataModule2.IBQuery7.Next;

    until DataModule2.IBQuery7.Eof;

    dxPickEdit5.Sorted:=true;

    dxPickEdit6.Sorted:=true;

    dxPickEdit7.Sorted:=true;

    dxPickEdit8.Sorted:=true;

    dxPickEdit9.Sorted:=true;

    dxPickEdit10.Sorted:=true;

    end;
    Процедура открытия и редактирования:
    procedure TForm1.N7Click(Sender: TObject);

    var

    id,id2,i,no:integer;

    s:string;

    begin

    BM := DataModule2.IBQuery1_2.GetBookmark;

    id:=DataModule2.IBQuery1_2T101.AsInteger;

    id2:=DataModule2.IBQuery1_2T102.AsInteger;

    Form5.NT1:=id;

    Form5.id2:=id2;

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl01 ');

    IBQueryAll.SQL.Add('where T101='+inttostr(id)+' ');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.NT2:=DataModule2.IBQueryAll.fieldbyname('T102').AsInteger;

    Form5.dxDateEdit1.Date:=DataModule2.IBQueryAll.fieldbyname('T103').AsDateTime;

    Form5.dxDateEdit2.Date:=DataModule2.IBQueryAll.fieldbyname('T104').AsDateTime;

    Form5.NT5:=DataModule2.IBQueryAll.fieldbyname('T105').AsInteger;

    Form5.NT6:=DataModule2.IBQueryAll.fieldbyname('T106').AsInteger;

    Form5.NT7:=DataModule2.IBQueryAll.fieldbyname('T107').AsInteger;

    Form5.dxPickEdit4.Text:=trim(DataModule2.IBQueryAll.fieldbyname('T108').AsString);

    Form5.NT9:=DataModule2.IBQueryAll.fieldbyname('T109').AsString;

    Form5.NT10:=DataModule2.IBQueryAll.fieldbyname('T110').AsInteger;

    Form5.NT11:=DataModule2.IBQueryAll.fieldbyname('T111').AsInteger;

    Form5.NT12:=DataModule2.IBQueryAll.fieldbyname('T112').AsInteger;

    Form5.NT13:=DataModule2.IBQueryAll.fieldbyname('T113').AsString;

    Form5.Caption:='Редактирование заявки на обслуживание № '+inttostr(form5.NT2);

    if Form5.NT13<>'Y' then Form5.dxDateEdit2.Visible:=false;

    form5.SpeedButton6.Enabled:=true;

    if Form5.NT13='Y'then form5.SpeedButton6.Enabled:=false;

    Form5.dxCheckEdit1.Checked:=false;

    Form5.dxCheckEdit2.Checked:=false;

    If form5.NT9='1' then

    Form5.dxCheckEdit1.Checked:=true;

    If form5.NT9='2' then

    Form5.dxCheckEdit2.Checked:=true;

    if form5.NT13='N' then

    form5.dxPickEdit13.ItemIndex:=0;

    if form5.NT13='B' then

    form5.dxPickEdit13.ItemIndex:=1;

    if form5.NT13='C' then

    form5.dxPickEdit13.ItemIndex:=2;

    if form5.NT13='D' then

    form5.dxPickEdit13.ItemIndex:=3;

    if form5.NT13='Y' then

    form5.dxPickEdit13.ItemIndex:=4;

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl04 ');

    s:=inttostr(form5.NT5);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T401='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.dxPickEdit1.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T402').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl05 ');

    s:=inttostr(form5.NT6);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T501='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.dxPickEdit2.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T502').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl06 ');

    s:=inttostr(form5.NT7);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T601='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.dxPickEdit3.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T602').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl07 ');

    s:=inttostr(form5.NT10);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T701='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    form5.dxSpinEdit1.Value:=form5.id2;

    Form5.dxPickEdit5.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T702').AsString);

    Form5.dxPickEdit6.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T706').AsString);

    Form5.dxPickEdit7.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T707').AsString);

    Form5.dxPickEdit8.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T703').AsString);

    Form5.dxPickEdit9.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T704').AsString);

    Form5.dxPickEdit10.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T705').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl08 ');

    s:=inttostr(form5.NT11);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T801='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.dxPickEdit11.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T802').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl08 ');

    s:=inttostr(form5.NT12);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T801='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    Form5.dxPickEdit12.Text:=Trim(DataModule2.IBQueryAll.fieldbyname('T802').AsString);

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl02 ');

    s:=inttostr(form5.NT1);

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T202='''+s+'''');

    end;

    DataModule2.IBQueryAll.Open;

    DataModule2.IBQueryAll.First;

    i:=0;

    Form5.CoolStringGrid1.Clear;

    if DataModule2.IBQueryAll.RecordCount>0 then

    repeat

    no:=DataModule2.IBQueryAll.fieldbyname('T203').AsInteger;

    DataModule2.IBQueryAll2.Close;

    with DataModule2 do

    begin

    IBQueryAll2.SQL.Clear;

    IBQueryAll2.SQL.Add('select * from tabl09 ');

    s:=inttostr(No);

    if s='' then s:='none';

    IBQueryAll2.SQL.Add('where T901='''+s+'''');

    end;

    DataModule2.IBQueryAll2.Open;

    Inc(i);

    Form5.CoolStringGrid1.Cells[0,i]:=trim(DataModule2.IBQueryAll2.fieldbyname('T902').AsString);

    DataModule2.IBQueryAll.Next;

    until DataModule2.IBQueryAll.Eof;

    Процедура автоматического заполнения формы:
    procedure TForm3.dxPickEdit5KeyPress(Sender: TObject; var Key: Char);

    var

    s:string;

    begin

    s:=dxPickEdit5.Text;

    {if key=#13 then}

    begin

    DataModule2.IBQueryAll.Close;

    with DataModule2 do

    begin

    IBQueryAll.SQL.Clear;

    IBQueryAll.SQL.Add('select * from tabl07 ');

    if s='' then s:='none';

    IBQueryAll.SQL.Add('where T702='''+s+'''');

    IBQueryAll.SQL.Add('order by T701 desc ');

    end;

    DataModule2.IBQueryAll.Open;

    if DataModule2.IBQueryAll.RecordCount>0 then

    begin

    dxPickEdit6.Text := Trim(DataModule2.IBQueryAll.fieldbyname('T706').AsString);

    dxPickEdit7.Text := Trim(DataModule2.IBQueryAll.fieldbyname('T707').AsString);

    dxPickEdit8.Text := Trim(DataModule2.IBQueryAll.fieldbyname('T703').AsString);

    dxPickEdit9.Text := Trim(DataModule2.IBQueryAll.fieldbyname('T704').AsString);

    dxPickEdit10.Text := Trim(DataModule2.IBQueryAll.fieldbyname('T705').AsString);

    end;

    Руководство.


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

    Так как программа имеет очень узко специализированную область применения (это требуется заказчику), и нет необходимости создавать дополнительную справочную систему. Достаточно будет обучения заказчика. В план обучения входит:

    • Обучение установки программы

    • Восстановление поврежденных данных и предотвращение. (эти два пункта есть в помощи поставляемой с InterBase)

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


    Помощь по работе с программой:

    1. Создание новой записи

    Находясь в рабочей области нажмите <> или Запись --> Новая.

    В появившемся окне желательно заполнить графы: устройство, Организация/физ. лицо, Специалист сервисного центра. И О Б Я З А Т Е Л Ь Н О указать вид ремонта. Затем нажать далее и указать неполадки.

    Если заполняя графу <<Организация/Физ.лицо>> дважды нажать <>, то остальные графы заполнятся сами, используя предыдущие данные.
    2. Открытие записи

    Находясь в рабочей области нажмите <> или Запись --> Открыть. В появившемся окне можно указать выполненные операции и распечатать. Дату выдачи есть смысл ставить только при установлении

    состояния в положение <<Выполнено>>
    3. Сортировка записи

    Находясь в рабочей области нажмите <> или Запись --> Сортировка. В появившемся окне нужно указать критерий выборки и текст выборки. Если не требуется выборка, то в критерии выборки нужно указать - none- В этой версии не требуется вводить весь текст. Достаточно ввесть только часть. например: дана фамилия "Иванов" можно ввести "Ив". добавлять знак "%" не требуется. Если нужно искать по типу ремонта то при платном нужно указать "1", а при гарантийном "2"
    4. Настройки

    Находясь в рабочей области нажмите Настройка --> Настройка.В появившемся окне есть два пункта Цвет и Log. Для изменения цвета нужно кликнуть по цветному квадратику

    Порядок ввода в эксплуатацию.



    Установка Программы.

    На диске находится Borland Interbase v7.0.1. следует запустить Setup.exe и проследовав инструкции установить сервер. Для регистрации следует запустить KeyGen.exe.

    Далее следует перезагрузить компьютер и посмотреть должен появиться процесс ibguardian теперь нужно запустить программу IBConsole. В ней создать новый сервер Local Server. Теперь зайти в папку Dialog2 и запустить setup.exe.

    Теперь установка завершена.

    Оценка проекта.

    Заказчик:

    Все поставленные цели выполнены

    1. Полностью завершённый проект базы данных «Автоматизированное рабочее место сервисного центра», реализованный на базе СУБД InterBase 7, и алгоритмического языка Delphi 7, содержащий следующие модули:

    • Ввод нового заказа

    • Работа с существующими заказами

    • Сортировка

    • Отчет о проделанной работе сервисного центра

    В целом программа является функциональной и завершенной, удовлетворяющая поставленной задачи.

    Литература


    1. Справочная служба поставляемая с комплексом Borland InterBase 7.0

    2. Справочная служба поставляемая с комплексом Borland Delphi 7.0

    3. Шкарина Л. Язык SQL: учебный курс. – СПб.: Питер, 2001. – 592 с.:ил.

    4. Дарахвелидзе П. Delphi 4. СПб.: БХВ –Санкт-Питербург,1999. –816 с.:ил.

    5. Дарахвелидзе П. Программирование в Delphi 7. СПб.: БХВ –Петербург,2003. –784 с.:ил.








    написать администратору сайта