Создание базы данных в среде Turbo Pascal

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

Описание работы

В реляционной модели данные на концептуальном уровне представляются в виде таблиц, состоящих из строк и столбцов. Строго говоря, таблицы называются отношениями, строки — кортежами, а столбцы — атрибутами. Кортежи практически эквивалентны тому, что обычно понимается под записью файла, а атрибуты отражают смысл значений каждого кортежа. Связывание данных различных таблиц друг с другом осуществляется не с помощью явных указателей (как в сетевой базе данных), а с помощью значений атрибутов.

Содержание работы

Введение…………………………………………………………………..………………4
Описание интерфейса программы……………………………….……….……………..9
Описание типов………………………………………………………….……………....15
Описание главной программы…………………………………………….……………16
Описание модулей……………………………………………………………………....18
Заключение………………………………………………………….………….………..24
Литература……………………………………………………………………..………...25

Файлы: 1 файл

Курсавая.doc

— 3.36 Мб (Скачать файл)

(рис. 7)

 

Можно копировать запись. Выделим её и нажав Copy (рис.8)

(рис. 8)

 

 

 

 

 

 

 

 

 

 

 

 Можно подвести  итоги за месяц (рис 9):

(рис. 9)

 

 

 

 

 

 

Открытие базы данных(Ctrl+O). (рис.10)

(рис. 10)

 

Сохранение базы данных. После завершения работы с базой данных есть возможность её сохранить что бы использовать позже (рис. 11):

(рис. 11)

 

 

 

 

 

 

 

 

Важная информация (рис. 12):

(рис. 12)

 

 

Типы данных, используемые в программе

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

     Unit Types;

   interface

    Uses WinDos;

    type

     mTab_mas = array[1..20,1..20] of string[15]; {imena menu}

     mTab_dlin = array[1..4] of byte; {dlk}

     VertMen =^ tableVert;  {Ukazatel dlya verticalnogo peredvizeniya po podmenu}

     tableVert = record

                  next,prev : vertMen;

                  x : byte; {Nomer podmenu}

                 end;

    InfSubs =^ subscrib;

    subscrib = record {Glavnaya Informaciya}

                nomer : integer;

                name,surname,patronic:string[20]; {FIO}

                birthday : string[30];

                dat,tim : string[10]; {data i vremya priema}

                ques : string[30];

                next,prev : infSubs;

                dt : TDateTime; {Data i vremya registracii v base dannih

               end;

    FileInfo = file of subscrib;

  implementation

  end.   

 

Дело в том, что в  программе часто нужно присваивать  значение элемента списка переменной, используемой при работе с типизированным файлом, и наоборот. Это облегчает работу.

 

 

 

 

Описание основной программы Begin

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

Program Administration; {DataBase "Priem v administraciyu"}

   Uses Crt,Types,Interf,Spiski;

  var

   mTab : mTab_mas;

   LeftRight,UpDown : byte; {Dliya peremesheniya po menu}

   pTable,pered : char;

   DlinNazv,vibor : mTab_dlin; {Dlya hraneniya dlini menu}

   Pod1,Pod2,Pod3,pod4 : VertMen;

   agree,tab : boolean;

   nameFile : string;

   first,h,copZap,s : InfSubs;

  begin

   textcolor(15);

   textbackground(1);

   clrscr;

   {Zadaniye pervonachalnih znacheniy kluchevim peremennim}

   TabMenu(mTab,DlinNazv); {Zapolneniye massiva menu};

   LeftRight := 1;   {1-e menu}

   UpDown := 0;      {0-e podmenu - net takogo}

   first := nil;

   h := nil;

   copZap := nil; {Kopirovaniye zapisi}

   Agree := true; {raskritiye podmenu}

   tab := true; {pereklucheniye mezdu menu i tablicey}

   nameFile := '';

   {Risovaniye the interface}

   AllInterf(0,UpDown,mTab,DlinNazv,first,h);

   Avtor;

   readkey;

   {Ves' interface}

   AllInterf(LeftRight,UpDown,mTab,DlinNazv,first,h);

   PodmenuSpis(pod1,pod2,pod3,pod4);

   Repeat

     pered := readkey; {Identifikaciya klavishi}

    Case pered of

     #75: LefRig(LeftRight,true); {Left}

     #77: LefRig(LeftRight,false); {Right}

     #72: UpADown(LeftRight,UpDown,pod1,pod2,pod3,pod4, true); {Up Podmenu}

     #80: UpADown(LeftRight,UpDown,pod1,pod2,pod3,pod4, false); {Down Podmenu}

     #13: begin

           If Agree then

            begin

            {peremesheniye po podmenu}

             agree := false;

             UpDown := 1;

            end

           else  {Dlya vibora podmenu}

            begin

             Vibor[1] := LeftRight; {Fiksaciya mestonahozdeniya v menu}

             Vibor[2] := UpDown;

             UpDown := 0;{Dlya sbrosa mestonahozdeniya v podmenu}

             {Draw the interface}

             AllInterf(LeftRight,UpDown,mTab,DlinNazv,first,h);

             {Vibor deistviya}

             ChooseAction(mTab,vibor,DlinNazv,nameFile,first,h,copZap,pod1,pod2,pod3,pod4);

             tab := false; {tablica}

             agree := true; {dlya podmenu posle vipolneniya operacii}

            end;

           end;

     #9: tab := not tab; {Perehod iz tablici v menu upravleniya programmoy}

     #27 : Escape(agree,UpDown); {Esc}

     #45 : ExitT(first,h,pod1,pod2,pod3,pod4,nameFile); {Alt+X} {Udaleniye spiskov i vihod}

     #61 : begin OpenTheFile(nameFile,first,h); tab := false; end;{F3}

    end; {Kisa Readkey}

   {Operacii i peredvizeniye v tablice}

   If not(tab) and (first<>nil) then  {V tablice}

    begin

     repeat {Peremesheniye po tablice}

      AllInterf(0,0,mTab,DlinNazv,first,h);

      pTable := readkey;

      case pTable of

       #9 : begin tab := not(tab); {Tab}

        LeftRight := 1;

        AllInterf(LeftRight,UpDown,mTab,DlinNazv,first,h);

        break; end;

       #13 : Overlook(h);   {Prosmotret Zapis}

       #45 : ExitT(first,h,pod1,pod2,pod3,pod4,nameFile); {Alt+C}

       #72 : h := h^.prev; {Up}

       #73 : PgUp(first,h);

       #80 : h := h^.next; {Down}

       #81 : PgDown(first,h); {PageDown}

       #83 : DeletElem(first,h); {Del}

      end;

      {Dlya otobrazeniya chastiami bolshogo colichestva elementov}

      Dinamic(first,h);

     until tab;

    end;

    {Obnovleniye izobrazeniya}

    AllInterf(LeftRight,UpDown,mTab,DlinNazv,first,h);

   Until pered = #68; {F10}

  end.

 

Модуль Interf

В этом модуле представлены процедуры  рисования интерфейса базы данных.

Интерфейс понятен и  удобен на интуитивном уровне.

Считаю наиболее интересной процедуру рисования рамки,текст которой предоставлен ниже:

    {Prorisovka ramki,menu file i tablici}

    Procedure AllInterf(l,k : byte;  var mTab : mTab_mas; DlinNazv : mTab_dlin;

    var first,h : InfSubs);

     begin

      Interfac; {Sozdaniye obramleniya};

      Tablica(first,h);

      RisovFED(l,k,mTab,DlinNazv); {Prorisovka i peredvizeniye po menu}

     end;

    Procedure Interfac; {Risovaniye ramki}

     var i:byte;

       begin

        textcolor(14);

        textbackground(Blue);

        window(1,1,80,25);

        clrscr; {Ochisheniye nenuznogo}

        gotoxy(1,2);

        write(' ADMINISTRATION RECEPTION ');

        textColor(14);

        for i:=3 to 23 do

         begin

          gotoxy(1,i);

          write('є');

          gotoxy(80,i);

          write('є');

         end;

        write(' ');

        textbackground(7);

        window(1,25,80,25);

        gotoXY(3,25);

        clrscr;

        textcolor(0);

        Write('  Free memory: ',memAvail,' byte ');

        Write(' | ');

       end;

 

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

Их название и описание находиться в модуле Interf.

Unit Interf;

   Interface

    Uses Types,Windos,crt;

    Procedure Interfac; {Risovaniye ramki}

{Zapolneniye massiva nazvaniyami menu}

    Procedure TabMenu(var mTab : mTab_mas; var DlinNazv : mTab_dlin);

    Procedure Border(x,y,v,g:byte; bla : boolean); {Risovaniy Bordura 1-nogo menu}

    Procedure Zagol(st : string; l : byte); {Napisaniye zagolovkov menu}

    Procedure RisovFED(l,k :byte;  var mTab : mTab_mas; Dlin : mTab_dlin);

                                        {Vverh ili vniz}

    Procedure ZapVert(var mem : VertMen; k : boolean);  {Dvig Up ili Down}

    Procedure SozdSpisPodMenu(var men : VertMen; kol : byte); {Sozdaet spisok dlya dvizeniya po menu}

    Procedure Avtor; {Eto Ya}

    Procedure Tablica(var first,h : InfSubs); {Chercheniye tablici}

    Procedure Messange(st : string; k,t : byte); {Soobsheniye o vvode}

    {Prorisovka ramki,menu file i tablici}

    Procedure AllInterf(l,k : byte;  var mTab : mTab_mas; DlinNazv : mTab_dlin;

    var first,h : InfSubs);

    Procedure DayOfWeek(dw : word); {Den nedeli}

    Procedure Escape(var agree : boolean; var UpDown : byte); {Close or cancel}

    {Zapolneniye spiska podmenu}

    Procedure PodmenuSpis(var pod1,pod2,pod3,pod4 : VertMen);

    {Up & Down podmenu}

    Procedure UpADown(k : byte; var UD : byte;

    var pod1,pod2,pod3,pod4 : VertMen; bool : boolean);

    {Peremesheniye po podmenu}

    Procedure LefRig(var LeftRight : byte; bool : boolean);

 

Модуль Spiski

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

 

Наиболее интересной и самой необходимой является проедура создание элемента в списке:

{Sozdaniye elementa}

   Procedure Add(var first,h : InfSubs; var mTab : mTab_mas; {mTab - s nomerami menu}

                 var DlinNazv : mTab_dlin; Edit : boolean;

                 nameFile : string; k : byte);

    var

     l,t : byte;

     st : string;

     kop : infSubs;

 

    begin

 

     kop := h;

     t := 1; {Nomer punkta zaprosa}

 

     If not(Edit) then {Add or Edit}

      h := new(InfSubs);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     st := 'Input the surname:    ';

     Messange(st,k,t); {Familiya}

     Writeln;

 

     Readln(st);

     h^.surname := st;

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     t := t + 1;

     st := 'Input the name:       ';

    Messange(st,k,t); {Imya}

     Writeln;

     Readln(h^.name);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     t := t + 1;

     st := 'Input the patronic:       ';

     Messange(st,k,t); {Otchestvo}

     Writeln;

     Readln(h^.patronic);

     AllInterf(0,0,mTab,DlinNazv,first,kop);

 

     t := t + 1;

     st := 'Input the date of birth:       ';

     Messange(st,k,t); {BirthDay}

     Writeln;

     Readln(h^.birthday);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     t := t + 1;

     st := 'Input the date of reception:       ';

     Messange(st,k,t); {Data priema}

     Writeln;

     Readln(h^.dat);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     t := t + 1;

     st := 'Input the time of reception:       ';

     Messange(st,k,t); {Vremya priema}

     write(' ');

     Readln(h^.tim);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

     t := t + 1;

     st := 'Input the question:       ';

     Messange(st,k,t); {Vopros}

     Writeln;

     Readln(h^.ques);

 

     AllInterf(0,0,mTab,DlinNazv,first,kop);

 

     h^.nomer := k;

     Tim(h); {Snyatiye vrememni}

     edit := false;

 

    end;

 

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

 

Unit Spiski;

  Interface

   Uses crt,types,interf,Windos;

   Function ErrorFile : boolean; {Identifikaciya oshibki}

   {Sozdaniye elementa}

   Procedure Add(var first,h : InfSubs; var mTab : mTab_mas;

                 var DlinNazv : mTab_dlin; Edit : boolean; nameFile : string;

                 k : byte);

   {Perenos informacii iz faila v spiski}

   Procedure PerezapVSpis(var first : InfSubs; var nameFile : string);

   {Otkritiye faila i perenos v spisok}

   Procedure OpenTheFile(var nameFile : string; var first,h : InfSubs);

   {Zapis iz faila v spisok}

   Procedure PerezapVFile(first : InfSubs; var nameFile : string);

   {Sozdaniye dannih}

   Procedure Sozdat(var first,h : InfSubs; mTab : mTab_mas;

   var DlinNazv : mTab_dlin; var nameFile : string);

   {Sohranit Spisok iz tablici}

   Procedure SaveSpisok(var first : InfSubs; var nameFile : string);

   Procedure Overlook(h : infSubs); {Prosmotr}

   {Delete element}

   Procedure DeletElem(var first,h : InfSubs);

   {Vibor deystviya}

   Procedure ChooseAction(mTab : mTab_mas; vibor,DlinNazv : mTab_dlin;

   var nameFile : string; var first,h,copZap : InfSubs;

   var pod1,pod2,pod3,pod4 : VertMen);

   {Delete database recordS}

   Procedure DeleteInfo(var first,p : InfSubs; var nameFile : string);

   {Udaleniye vseh spiskov}

   Procedure DeleteAll(var first,h : InfSubs; var pod1,pod2,pod3,pod4 : VertMen;

   var nameFile : string);

   {Udaleniye spiska dlya menu}

   Procedure DeleteMenu(var pod : VertMen);

   {Udaleniye spiskov i vihod}

   Procedure ExitT(var first,h : InfSubs; var pod1,pod2,pod3,pod4 : VertMen;

   var nameFile : string);

   {Redaktirovaniye}

   Procedure Edit(var first,h : InfSubs; mTab : mTab_mas;

   DlinNazv : mTab_dlin; nameFile : string);

 

  {Kopirovat zapis}

  Procedure CopyT(h : InfSubs; var copZap : infSubs);

  Procedure Ins(var first,tek,copZap : InfSubs); {Vstavka elementa v bazu dannih}

Информация о работе Создание базы данных в среде Turbo Pascal