Система учета городского транспорта

Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 15:49, курсовая работа

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

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

Содержание

ВВЕДЕНИЕ 5
1 ОБЗОР 7
1.1 Информация, характеризующая городской транспорт 7
1.2 Преимущества ООП для программной реализации базы данных, хранящей информацию о городском транспорте 7
1.3 Постановка задачи 7
2 АЛГОРИТМИЧЕСКОЕ КОНСТРУИРОВАНИЕ 9
2.1 Общая блок-схема работы программы 9
2.2 Алгоритм поиска по заранее заданному критерию 11
3 ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ 12
3.1 Обоснование выбора языка программирования 12
3.2 Описание основных классов 12
4 РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММНОГО СРЕДСТВА 15
ЗАКЛЮЧЕНИЕ 26
5 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 27
ПРИЛОЖЕНИЕ А. ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО 28
ПРИЛОЖЕНИЕ Б. ЛИСТИНГ ПРОГРАММЫ 32
ПРИЛОЖЕНИЕ В. 59

Прикрепленные файлы: 1 файл

отчет.docx

— 863.96 Кб (Скачать документ)

         else  // если список был пуст

            tail := head;

   end;

  

   function GetHead():node;

   begin

      Result:=head;

   end;

  

   procedure addNodeFirst(n:node);

   begin

      n.next:=head;

      n.prev:=nil;

      head := n;

         if head.next <> nil then

            head.next.prev := head

         else  // если список был пуст

            tail := head;

   end;

  

   procedure delNodeFirst();

   begin

      if (head <> nil) then

      begin

         head := head.next;

           if head = nil then

             tail := nil

           else 

             head.prev := nil;

      end;

   end;

  

   procedure delNodeLast();

   begin

      if (tail <> nil) then

      begin

        tail := tail.prev;

        if tail = nil then

           head := nil

        else

        tail.next := nil;

      end;

   end;

  

   procedure delNodeCurr(cur:node);

   begin

      if cur = head then            

             delNodeFirst()  // удаление из начала

      else

            if cur = tail then

              delNodeLast()   // удаление из конца

            else 

            begin

               cur.prev.next := cur.next;

               cur.next.prev := cur.prev;

               cur := cur.next;

            end;

   end;

 

   function count():integer;  //возвращает кол-во элементов

   begin

      Result:=0;

      var temp:node := head;

      while (temp <> nil) do

      begin

         Result+=1;

         temp:=temp.next;

      end;

   end;

  

   procedure sort();   //делает сортировку(по сидячим местам)

   begin

      var arr:array of transport;

         arr:=nil;

 

      var n:integer := count();

         SetLength(arr,n);

      var temp:node := head;

      var i:integer := 0;

      while( temp <> nil) do

      begin

         arr[i]:=temp.data;

         temp:=temp.next;

         i+=1;

      end; 

     

      var th:transport;

      for var k:=0 to n-1 do

         for var m:=0 to n-2 do

            if ( (mt(arr[m])).getSitmest() > (mt(arr[m+1])).getSitMest()) then

         begin

            th:=arr[m];

            arr[m]:=arr[m+1];

            arr[m+1]:=th;

         end;

 

      head:=nil;

      tail:=nil;

     

      for var j:=i-1 downto 0 do

            addNodeFirst(arr[j]);

     

   end;

  

   procedure writeDB();   //запись бд в файл

   begin

      var fi:file of integer;

      Assign(fi, 'index.dat');

      Rewrite(fi);            

      write(fi, index);

      close(fi);

     

       var t1,t2,t3:text;    

       Assign(t1,'mt.txt');

       Assign(t2,'autobus.txt');

       Assign(t3,'tramway.txt');

       Rewrite(t1);

       Rewrite(t2);

       Rewrite(t3);

      

       var h:node := head;

       while( h<>nil ) do

       begin

         if (h.data.getTip() = mk) then

            begin   

               writeln(t1,IntToSTR((mt(h.data)).getKod()));

               writeln(t1,IntToSTR((mt(h.data)).getRoute()));

               writeln(t1,IntToSTR((mt(h.data)).getMaxMest()));

               writeln(t1,IntToSTR((mt(h.data)).getSitMest()));

               writeln(t1,IntToSTR((mt(h.data)).getLong()));

               writeln(t1,IntToSTR((mt(h.data)).getrashod()));

               writeln(t1,(mt(h.data)).getMark());

               writeln(t1,(mt(h.data)).getName());

               writeln(t1,(mt(h.data)).getYear());

            end else

                if (h.data.getTip() = ak) then

                begin

                   writeln(t2,IntToSTR((autobus(h.data)).getKod()));

                   writeln(t2,IntToSTR((autobus(h.data)).getRoute()));

                   writeln(t2,IntToSTR((autobus(h.data)).getMaxMest()));

                   writeln(t2,IntToSTR((autobus(h.data)).getSitMest()));

                   writeln(t2,IntToSTR((autobus(h.data)).getLong()));

                   writeln(t2,IntToSTR((autobus(h.data)).getrashod()));

                   writeln(t2,(autobus(h.data)).getMark());

                   writeln(t2,(autobus(h.data)).getName());

                   writeln(t2,(autobus(h.data)).getYear());

                end

                else begin

                   writeln(t3,IntToSTR((tramway(h.data)).getKod()));

                   writeln(t3,IntToSTR((tramway(h.data)).getRoute()));

                   writeln(t3,IntToSTR((tramway(h.data)).getMaxMest()));

                   writeln(t3,IntToSTR((tramway(h.data)).getSitMest()));

                   writeln(t3,IntToSTR((tramway(h.data)).getLong()));

                   writeln(t3,IntToSTR((tramway(h.data)).getrashod()));

                   writeln(t3,IntToSTR((tramway(h.data)).getCountW()));

                   writeln(t3,(tramway(h.data)).getMark());

                   writeln(t3,(tramway(h.data)).getName());

                   writeln(t3,(tramway(h.data)).getYear());

                end;

          h:=h.next;

       end;

      

       close(t1);

       close(t2);

       close(t3);

   end;

  

   function getIndex():integer;

   begin

      index+=1;

      Result:=index;

   end;

  

   procedure readDB();    //чтение из файла в бд

   begin

      var fi:file of integer;

      Assign(fi, 'index.dat');

      Reset(fi);            

      read(fi, index);

      close(fi);

     

     

       var t1,t2,t3:text;

       var k,t,nr,mm,sm,l,r,cw:integer;

       var m,n,y,tstr:string;

          

          

       Assign(t1,'mt.txt');

       Reset(t1);

       t:=mk;

       

       while (not eof(t1)) do       

       begin

        readln(t1,tstr);

          k := StrToInt(tstr);

        readln(t1,tstr);

          nr := StrToInt(tstr);

        readln(t1,tstr);

          mm := StrToInt(tstr);

        readln(t1,tstr);

          sm := StrToInt(tstr);

        readln(t1,tstr);

          l := StrToInt(tstr);

        readln(t1,tstr);

          r := StrToInt(tstr);

        readln(t1,m);

        readln(t1,n);

        readln(t1,y);

      

        var newmt:mt:= new mt(k,t,nr,mm,sm,l,r,m,n,y);

          addNodeFirst(newmt);

       end;

      

       close(t1);

      

    

       Assign(t2,'autobus.txt');

       Reset(t2);

       t:=ak;

      

       while (not eof(t2)) do

       begin

        readln(t2,tstr);

          k := StrToInt(tstr);

        readln(t2,tstr);

          nr := StrToInt(tstr);

        readln(t2,tstr);

          mm := StrToInt(tstr);

        readln(t2,tstr);

          sm := StrToInt(tstr);

        readln(t2,tstr);

          l := StrToInt(tstr);

        readln(t2,tstr);

          r := StrToInt(tstr);

        readln(t2,m);

        readln(t2,n);

        readln(t2,y);

       

        var newautobus:autobus := new autobus(k,t,nr,mm,sm,l,r,m,n,y);

          addNodeFirst(newautobus);

       end;

      

       close(t2);

      

      

       Assign(t3,'tramway.txt');

       Reset(t3);

       t:=tk;

      

       while (not eof(t3)) do

       begin

        readln(t3,tstr);

          k := StrToInt(tstr);

        readln(t3,tstr);

          nr := StrToInt(tstr);

        readln(t3,tstr);

          mm := StrToInt(tstr);

        readln(t3,tstr);

          sm := StrToInt(tstr);

        readln(t3,tstr);

          l := StrToInt(tstr);

        readln(t3,tstr);

          r := StrToInt(tstr);

        readln(t3,tstr);

          cw := StrToInt(tstr);

        readln(t3,m);

        readln(t3,n);

        readln(t3,y);

 

        var newtramway:tramway:= new tramway(k,t,nr,mm,sm,l,r,cw,m,n,y);

          addNodeFirst(newtramway);

       end;

         

       close(t3);  

   end;

 

end; 

   

   

MTInputForm = class(Form)   //форма для маршрутного такси

 protected

        mark_f:TextBox;

        name_f:TextBox;

        year_f:TextBox;

        route_f:TextBox;

        maxmest_f: TextBox;

        sitmest_f:TextBox;

        long_f:TextBox;

        rashod_f:TextBox;

        write_bt:Button;

        tr:mt;

        temptip:integer;

       

        lbl_1:System.Windows.Forms.Label;

        lbl_2:System.Windows.Forms.Label;

        lbl_3:System.Windows.Forms.Label;

        lbl_4:System.Windows.Forms.Label;

        lbl_5:System.Windows.Forms.Label;

        lbl_6:System.Windows.Forms.Label;

        lbl_7:System.Windows.Forms.Label;

        lbl_8:System.Windows.Forms.Label;

       

 public

      

     constructor Create(title:string; t:transport; tt:integer);

     begin

         temptip:=tt;

         tr := MT(t);

         self.text:=title;

         self.Width:=250;

         self.Height:=380;        

        

 

         lbl_1:= new System.Windows.Forms.Label();

         lbl_1.Width:=150;

         lbl_1.Text := 'Введите марку';

         self.controls.add(lbl_1);

        

         mark_f:=new TextBox();

         mark_f.Top:=20;

         mark_f.Width:=150;

         self.Controls.Add(mark_f);

         mark_f.text := tr.getMark();

 

         lbl_2:= new System.Windows.Forms.Label();

         lbl_2.Top:=40;

         lbl_2.Width:=200;

         lbl_2.Text := 'Введите название';

         self.controls.add(lbl_2);

        

         name_f:=new TextBox();

         name_f.top := 60;

         name_f.Width:=150;

         self.Controls.Add(name_f);

         name_f.text  := tr.getName();

 

         lbl_3:= new System.Windows.Forms.Label();

         lbl_3.Top:=80;

         lbl_3.Width:=200;

         lbl_3.Text := 'Введите год выпуска';

         self.controls.add(lbl_3);

        

         year_f:=new TextBox();

         year_f.top := 100;

         year_f.Width:=150;

         self.Controls.Add(year_f);

         year_f.text  := tr.getyear();

 

         lbl_4:= new System.Windows.Forms.Label();

         lbl_4.Top:=120;

         lbl_4.Width:=160;

         lbl_4.Text := 'Введите номер маршрута';

         self.controls.add(lbl_4);

        

         route_f:=new TextBox();

         route_f.top := 140;

         route_f.Width:=150;

         self.Controls.Add(route_f);

         route_f.text  := IntTostr(tr.getRoute());

 

         lbl_5:= new System.Windows.Forms.Label();

         lbl_5.Top:=160;

         lbl_5.Width:=250;

         lbl_5.Text := 'Введите максимальное количество мест';

         self.controls.add(lbl_5);

        

         maxmest_f:=new TextBox();

         maxmest_f.top := 180;

         maxmest_f.Width:=150;

         self.Controls.Add(maxmest_f);

         maxmest_f.text:=IntTOStr(tr.getMaxMest());

 

         lbl_6:= new System.Windows.Forms.Label();

         lbl_6.Top:=200;

         lbl_6.Width:=250;

         lbl_6.Text := 'Введите количество сидячих мест';

         self.controls.add(lbl_6);

        

         sitmest_f:=new TextBox();

         sitmest_f.top := 220;

         sitmest_f.Width:=150;

         self.Controls.Add(sitmest_f);

         sitmest_f.text:=IntTOStr(tr.getSitMest());

 

         lbl_7:= new System.Windows.Forms.Label();

         lbl_7.Top:=240;

         lbl_7.Width:=150;

         lbl_7.Text := 'Введите длину';

         self.controls.add(lbl_7);

        

         long_f:=new TextBox();

         long_f.top := 260;

         long_f.Width:=150;

         self.Controls.Add(long_f);

         long_f.text:=IntToStr(tr.getLong());

        

         lbl_8:= new System.Windows.Forms.Label();

         lbl_8.Top:=280;

         lbl_8.Width:=200;

         lbl_8.Text := 'Введите расход топлива';

         self.controls.add(lbl_8);

        

         rashod_f:=new TextBox();

         rashod_f.top := 300;

         rashod_f.Width:=150;

         self.Controls.Add(rashod_f);

         rashod_f.text:=IntToStr(tr.getRashod());

        

         write_bt:=new Button();

         write_bt.Text:='Записать';

         write_bt.Top:=320;

         write_bt.Width:=150;

         write_bt.Click+=MyButtonClick;  //добавляем обработчик на кнопку

         self.Controls.Add(write_bt);

     end;

    

     procedure MyButtonClick(sender: Object; e: System.EventArgs);

     begin

            tr.setTransport(tr.getKod(),temptip,strtoint(route_f.text),mark_f.text,name_f.text,year_f.text);        

            tr.SetMT(StrToInt(maxmest_f.text),StrToInt(sitmest_f.text),StrToInt(long_f.text),StrToInt(rashod_f.text));

            self.Close;

     end;

 

 end;

   

   

AutobusInputForm = class(MTInputForm)   //форма для автобуса, наследуется от MTInputForm

protected

    tr:autobus;

public

   constructor Create(title:string; t:transport; gk:integer);

     begin

         inherited Create(title,t,gk);

         tr := autobus(t);

     end;

   

end;    

   

      

TramwayInputForm = class(MTInputForm)     //форма для трамвая

 protected

   countw_f:TextBox;

   tr:tramway;

   lbl_9:System.Windows.Forms.Label;

  

 public

   constructor Create(title:string; t:transport; gk:integer);

     begin

         inherited Create(title,t,gk);

         tr := tramway(t);       

       

         lbl_9:= new System.Windows.Forms.Label();

         lbl_9.Top:=320;

         lbl_9.Width:=200;

         lbl_9.Text := 'Введите количестdо вагонов';

         lbl_8.Text := 'Введите расход электроэнергии';

         self.controls.add(lbl_9);

        

         countw_f:=new TextBox();

         countw_f.top := 340;

         countw_f.Width:=150;

         self.Controls.Add(countw_f);

         countw_f.text:=IntToStr(tr.getCountw());

        

         write_bt.Top:=360;  

         write_bt.Click+=MyButtonClick;

         self.Height:=450;

     end;

    

     procedure MyButtonClick(sender: Object; e: System.EventArgs);

     begin

        tr.setTransport(tr.getKod(),temptip,strtoint(route_f.text),mark_f.text,name_f.text,year_f.text);        

        tr.SetMT(StrToInt(maxmest_f.text),StrToInt(sitmest_f.text),StrToInt(long_f.text),StrToInt(rashod_f.text));

        tr.setTramway(StrToInt(countw_f.text));

        self.Close;

     end;

 

 end;

   

   

MainForm=class(Form)

protected

   MTForm:MTInputForm;

   AutobusForm:AutobusInputForm;

   TramwayForm:TramwayInputForm;

   manager:BD;

  

   bd_l:listBox;

   addMT_b:button;

   addAutobus_b:button;

   addTramway_b:button;

   change_b:button;

   sort_b:button;

   lbl_1:System.Windows.Forms.Label;

   lbl_2:System.Windows.Forms.Label;

   lbl_3:System.Windows.Forms.Label;

   BD2_l:listBox;  

   find_f:textbox;

   find_b:button;

   delete_b:button;

   deleteFind_b:button; 

   MTF_b:button;

   AutobusF_b:button;

   TramwayF_b:button;

 

public

 

  constructor Create();

   begin

      manager := new BD();

      manager.readDB();    

     

      self.text := 'Система учета городского транспорта ' + chr(169);

     

      lbl_1:= new System.Windows.Forms.Label();

      lbl_1.Width:=200;

      lbl_1.left:=200;

      lbl_1.Text := 'окно содержимого БД';

      self.controls.add(lbl_1);

 

      bd_l:=new ListBox();

      bd_l.Top:=20;

      bd_l.Width:=700;

      bd_l.Height:=250;

      self.Controls.Add(bd_l);

     

      addMT_b:=new Button();

      addMT_b.Text:='Добавить маршрутное такси';

      addMT_b.Top:=270;

      addMT_b.Width:=200;

      addMT_b.Click+=addMT;

      self.Controls.Add(addMT_b);

     

      addAutobus_b:=new Button();

      addAutobus_b.Text:='Добавить автобус';

      addAutobus_b.Top:=300;

      addAutobus_b.Width:=200;

      addAutobus_b.Click+=addAutobus;

      self.Controls.Add(addAutobus_b);

     

      addTramway_b:=new Button();

      addTramway_b.Text:='Добавить Трамвай';

      addTramway_b.Top:=330;

      addTramway_b.Width:=200;

      addTramway_b.Click+=addTramway;

      self.Controls.Add(addTramway_b);

     

      delete_b:=new Button();

      delete_b.Text:='Удалить';

      delete_b.Top:=270;

      delete_b.Width:=120;

      delete_b.left:=230;

      delete_b.Click+=delete;

      self.Controls.Add(delete_b);

     

      change_b:=new Button();

      change_b.Text:='Изменить';

      change_b.Top:=300;

      change_b.Width:=120;

      change_b.Left:=230;

      change_b.Click+=change;

      self.Controls.Add(change_b);

Информация о работе Система учета городского транспорта