Автор работы: Пользователь скрыл имя, 06 Июня 2013 в 16:25, курсовая работа
В реляционной модели данные на концептуальном уровне представляются в виде таблиц, состоящих из строк и столбцов. Строго говоря, таблицы называются отношениями, строки — кортежами, а столбцы — атрибутами. Кортежи практически эквивалентны тому, что обычно понимается под записью файла, а атрибуты отражают смысл значений каждого кортежа. Связывание данных различных таблиц друг с другом осуществляется не с помощью явных указателей (как в сетевой базе данных), а с помощью значений атрибутов.
Введение…………………………………………………………………..………………4
Описание интерфейса программы……………………………….……….……………..9
Описание типов………………………………………………………….……………....15
Описание главной программы…………………………………………….……………16
Описание модулей……………………………………………………………………....18
Заключение………………………………………………………….………….………..24
Литература……………………………………………………………………..………...25
(рис. 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[
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,DlinNa
Avtor;
readkey;
{Ves' interface}
AllInterf(LeftRight,UpDown,
PodmenuSpis(pod1,pod2,pod3,
Repeat
pered := readkey; {Identifikaciya klavishi}
Case pered of
#75: LefRig(LeftRight,true); {Left}
#77: LefRig(LeftRight,false); {Right}
#72: UpADown(LeftRight,UpDown,pod1,
#80: UpADown(LeftRight,UpDown,pod1,
#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,
{Vibor deistviya}
ChooseAction(mTab,vibor,
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,
#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,
pTable := readkey;
case pTable of
#9 : begin tab := not(tab); {Tab}
LeftRight := 1;
AllInterf(LeftRight,UpDown,
break; end;
#13 : Overlook(h); {Prosmotret Zapis}
#45 :
ExitT(first,h,pod1,pod2,pod3,
#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,
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);
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,
st := 'Input the surname: ';
Messange(st,k,t); {Familiya}
Writeln;
Readln(st);
h^.surname := st;
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the name: ';
Messange(st,k,t); {Imya}
Writeln;
Readln(h^.name);
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the patronic: ';
Messange(st,k,t); {Otchestvo}
Writeln;
Readln(h^.patronic);
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the date of birth: ';
Messange(st,k,t); {BirthDay}
Writeln;
Readln(h^.birthday);
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the date of reception: ';
Messange(st,k,t); {Data priema}
Writeln;
Readln(h^.dat);
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the time of reception: ';
Messange(st,k,t); {Vremya priema}
write(' ');
Readln(h^.tim);
AllInterf(0,0,mTab,DlinNazv,
t := t + 1;
st := 'Input the question: ';
Messange(st,k,t); {Vopros}
Writeln;
Readln(h^.ques);
AllInterf(0,0,mTab,DlinNazv,
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