Проектирование базы данных

Автор работы: Пользователь скрыл имя, 12 Октября 2013 в 02:17, курсовая работа

Краткое описание

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

Содержание

1. Проектирование базы данных 4
2. Описание программного проекта 7
3. Описание алгоритма формирования отчета 9
4. Руководство программиста 13
5. Руководство пользователя 14
6. Описание контрольного примера 19
7. Текст программы 22
8. Выводы 38
Список использованных источников

Вложенные файлы: 1 файл

Otchet_po_kursachu.docx

— 258.97 Кб (Скачать файл)

     else    DM.tblBook.SetRange([strtoint(edit6.Text)],[strtoint(edit7.Text)]);

       (Sender as TBitBtn).Caption:='Отменить';

       end

       else begin

  //отмена фильтра

  edit6.Clear;

  edit7.Clear;

  DM.tblBook.cancelrange;

  (Sender as TBitBtn).Caption:='Выбрать';

  end;

end;

procedure TfrmBook.Button4Click(Sender: TObject);

begin

if((edit8.Text='')or(edit9.Text='')) then begin

ShowMessage('Введите фио и код участка');

edit8.SetFocus;

exit

end;

with DM.tblBook do begin

First;

while not Eof do begin

if FieldByName('Look_dat').AsString = edit8.Text then begin

edit;

FieldByName('Look_Dat').AsString:= edit9.Text;

post;

end;

Next;

end;

    end;end;

procedure TfrmBook.Button5Click(Sender: TObject);

var

  n2,n1:integer;

begin

if(edit10.Text='') and (edit11.Text='') then begin

ShowMessage('Заполните поля');

edit3.SetFocus;

exit

end;

if(edit10.Text='') then

n1:=-1

else

n1:=StrToInt(edit10.Text);

if(edit11.Text='') then

n2:=-1

else

n2:=StrToInt(edit11.Text);

with DM.tblBook do begin

First;

while not eof do

if(n1=-1) and ((FieldByName('N_Vagona').AsInteger<=n2)) then Delete

else if(n2 = -1) and ((FieldByName('N_Vagona').AsInteger >= n1)) then Delete

else if ((FieldByName('N_Vagona').AsInteger >= n1)) and ((FieldByName('N_Vagona').AsInteger <= n2)) then Delete

else Next;

end;

end;

procedure TfrmBook.SPRV1Click(Sender: TObject);

begin

 FrmSPRVizmdob.show;

end;

procedure TfrmBook.SPRP1Click(Sender: TObject);

begin

 frmSPRPizmdob.show;

end;

procedure TfrmBook.N5Click(Sender: TObject);

var n1,n2:string;

  //noOst:boolean;

  gorod:string;

  countplatz,countkupe,countlux,countsid:INteger;

  OM_SUM:integer;

// OM:string;

  begin

     Kol_bil:=0;

     countplatz:=0;

     countkupe:=0;

     countlux:=0;

     countsid:=0;

     OM_SUM:=0;

     if not (frmRptConf.ShowModal=mrOk) then exit;

       try

       gorod:=frmRptConf.DBLookupComboBox1.Text;

       n1:=frmRptConf.dat1.Text;

       n2:=frmRptConf.dat2.Text;

       except

       showmessage('некоректные значения');

       frmRptConf.dat1.clear;

       frmRptConf.dat2.clear;

       exit

     end;

     if n1>n2 then begin

     showmessage('неверный диапозон!');

     end;

     if not dm.tblSPRP.Active then  dm.tblSPRP.Open;

     if not dm.tblSPRV.Active then  dm.tblSPRV.Open;

     with dm.tblRPT do begin

       if not exists then begin

          with fielddefs do begin

           with addfielddef do begin

                name:='N_vag';

                datatype:=ftInteger;

              end;

              with addfielddef do begin

                name:='Tip_vagona';

                datatype:=ftString;

                size:=50;

              end;

              with addfielddef do begin

                name:='Kol_prod_bil';

                datatype:=ftinteger;

              end;

              with addfielddef do begin

                name:='Stoimost';

                datatype:=ftFloat;

              end;

              with addfielddef do begin

                name:='Proc_prod_mest';

                datatype:=ftinteger;

              end;

              with addfielddef do begin

                name:='Ost_mest';

                datatype:=ftinteger;

              end;

              end;

              with IndexDefs do begin

              with addIndexDef do Begin

                name:='';

                Fields:='N_Vag';

                options:=[ixPrimary];

              end;

              with addIndexDef do Begin

                name:='idxTip_Vagona';

                Fields:='Tip_Vagona';

                options:=[ixDescending];

              end;

          end;

        databasename:='Romandb';

        TableName:='tblRpt';

        exclusive:=false;

        CreateTable;

     end

     else

       EmptyTable;

       open;

    //dm.tblRpt.Indexname:='';

  end;

   with dm.tblBook do begin

    first;

    while not eof do begin

       dm.tblSPRV.FindKey([dm.tblBook.fieldbyname('N_Vagona').asInteger]);

       dm.tblSPRP.FindKey([FieldByName('N_Poezda').asInteger]);

      if (fieldbyname('Dat_otpr').AsDateTime > strToDate(n1)) and (fieldbyname('Dat_otpr').AsDateTime < strToDate(n2)) and (dm.tblSPRP.FieldByName('Punkt_nazn').AsString=gorod)   then

         begin

         if (dm.tblRpt.FindKey([dm.tblSPRV.FieldByName('Kod_tip').asInteger])) then dm.tblRpt.Edit  else

               begin

                 if(dm.tblSPRV.FieldByName('Naimen').AsString = 'Платцкарт') then

                    CountPlatz:=Countplatz+1

                    Else if (dm.tblSPRV.FieldByName('Naimen').AsString= 'Купе') then

                    CountKupe:=CountKupe+1

                    Else if  (dm.tblSPRV.FieldByName('Naimen').AsString= 'Люкс') then

                    Countlux:=CountLux+1

                    Else if (dm.tblSPRV.FieldByName('Naimen').AsString= 'Сидячий') then

                    CountSid :=CountSid+1;

                       end;

                       end;

                       next;

                       end;

                       end;

  with dm.tblBook do begin

    first;

    while not eof do begin

       dm.tblSPRV.FindKey([dm.tblBook.fieldbyname('N_Vagona').asInteger]);

       dm.tblSPRP.FindKey([FieldByName('N_Poezda').asInteger]);

      if (fieldbyname('Dat_otpr').AsDateTime > strToDate(n1)) and (fieldbyname('Dat_otpr').AsDateTime < strToDate(n2)) and (dm.tblSPRP.FieldByName('Punkt_nazn').AsString=gorod)   then

         begin

         if (dm.tblRpt.FindKey([dm.tblSPRV.FieldByName('Kod_Tip').asInteger])) then dm.tblRpt.Edit  else

            begin

                 dm.tblRpt.Append;

                 dm.tblRpt.FieldByName('N_Vag').AsInteger:= dm.tblSPRV.FieldByName('Kod_tip').AsInteger;

                 dm.tblRpt.FieldByName('Tip_Vagona').AsString:= dm.tblSPRV.FieldByName('Naimen').AsString;

  dm.tblRpt.FieldByName('Stoimost').AsFloat:=dm.tblBook.FieldByName('bilet').AsFloat;

                 dm.tblRpt.FieldByName('Kol_prod_bil').AsInteger:= 0;

                 dm.tblRpt.FieldByName('Proc_prod_mest').AsInteger:=0;

                 dm.tblRpt.FieldByName('Ost_mest').AsInteger:=0;

            end;

            if(dm.tblSPRV.FieldByName('Naimen').AsString = 'Платцкарт') then

                    dm.tblRpt.FieldByName('Kol_prod_bil').AsInteger:=CountPlatz

                    else if (dm.tblSPRV.FieldByName('Naimen').AsString= 'Купе') then

                    dm.tblRpt.FieldByName('Kol_prod_bil').AsInteger:=CountKupe

                    else if  (dm.tblSPRV.FieldByName('Naimen').AsString= 'Люкс') then

                    dm.tblRpt.FieldByName('Kol_prod_bil').AsInteger:=CountLux

                    Else if (dm.tblSPRV.FieldByName('Naimen').AsString= 'Сидячий') then

                    dm.tblRpt.FieldByName('Kol_prod_bil').AsInteger:=CountSid;

           dm.tblRpt.FieldByName('Ost_mest').AsFloat := (dm.tblSPRV.FieldByName('Pass_dvest').Asfloat )- (dm.tblRpt.FieldByName('Kol_prod_bil').Asfloat) ;

           dm.tblRpt.FieldByName('Proc_prod_mest').AsFloat := (((dm.tblRpt.FieldByName('Kol_prod_bil').Asfloat))*100) / ((dm.tblSPRV.FieldByName('Pass_dvest').Asfloat));

           OM_SUM:= OM_SUM+dm.tblRpt.FieldByName('Ost_mest').AsInteger;

           frmRpt.QRLabel2.Caption:=INTTOSTR (OM_SUM);

           dm.tblRpt.Post;

           end;

           next;

              end;

                    end;

    frmRpt.qrlbDate.Caption:='по дате с '+(n1)+' по '+(n2)+' ';

    frmRpt.qrlbGorod.Caption:='по городу: '+gorod;

    frmRpt.Preview;

    Dm.tblRpt.Close;

end;

procedure TfrmBook.FormShow(Sender: TObject);

begin

  dm.tblBook.Open;

end;

procedure TfrmBook.FormCreate(Sender: TObject);

begin

end;

end.  
8. Вывод

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

 

 

Список  использованных источников

 

  1. Карпова Т.С. Базы данных: модели, разработка. - СПб.: Питер, 2001, 304 с.
  2. Фаронов В.В. Программирование баз данных в Delphi 7: Учебный курс. – СПб.: Питер, 2004 - 464 с.
  3. Кренке Д. Теория и практика построения баз данных: [пер.с англ] / Д. Кренке. - 9 - е изд. - СПб.: Питер, 2005. - 858 с.
  4. Delphi 2006 на примерах (+ CD-ROM): Владимир Шупрута — Москва, БХВ-Петербург, 2006 г.- 528 с.
  5. Delphi 7. Основы программирования. Решение типовых задач. Самоучитель: Л. М. Климова — Санкт-Петербург, КУДИЦ-Образ, 2006 г.- 480 с.
  6. Delphi в задачах и примерах (+ CD-ROM): Никита Культин — Москва, БХВ-Петербург, 2008 г.- 288 с.
  7. Delphi. Профессиональное программирование: Дмитрий Осипов — Москва, Символ-Плюс, 2006 г.- 1056 с.
  8. Turbo Delphi для новичков и не только: С. А. Любавин — Санкт-Петербург, НТ Пресс, 2008 г.- 320 с.
  9. Основы программирования в интегрированной среде DELPHI: А. Желонкин — Москва, Бином. Лаборатория знаний, 2004 г.- 240 с.
  10. Основы программирования в интегрированной среде Delphi. Практикум: А. Желонкин — Санкт-Петербург, Бином. Лаборатория знаний, 2006 г.- 240 с.
  11. Программирование в Turbo Pascal. Переход к Delphi (+ CD-ROM): Ю. А. Шпак — Санкт-Петербург, МК-Пресс, 2006 г.- 416 с.
  12. Программируем в Turbo Delphi: С. А. Любавин — Москва, НТ Пресс, 2008 г.- 320 с.
  13. Самоучитель Delphi 7 Studio: Вячеслав Понамарев — Москва, БХВ-Петербург, 2003 г.- 504 с.



Информация о работе Проектирование базы данных