Skocz do zawartości

[Pascal] Baza danych na wskaźnikach w Turbo Pascalu


Gość

Polecane posty

Witam

Jetsem początkujący w pascalu, i mam mały problem :oops:. Mianowicie chce zrobić program z mozliwością robienia nowych baz danych i wyświetleniem zawartości całej bazy no i jak by to było mozliwe z edycją i usuwaniem z poziomu programu. Czy ktoś moze podesłać mi źródło czegoś podobnego ?? Bo ja juz troszke pracowałem nad taką bazą ale efektów pracy niewidać
:cry: Nizej zamieszczam moją dotychczasową baze. Jezeli ktoś ma źródło takiej bazy to prosze o zamieszczenie na forum.



[code=Delphi] Uses CRT;

Var
Imie,nazwisko,telefon,adres,mail,numergg^VKLH[BB[]NBNFSĆłFWC$4TEU$Rw&vGŁ&Vv6%67#%ąąŹ4(]Ń%4(I1mą );
Write('Nazwisko : ');
ReadLn( nazwisko[ilosc] );
]J [Y ĘNBXY[Y[H
NB]JtG&W2r&VDĆG&W5śĆ65w&FRvr(I1ąmąt4(]Ń4(I1 numergg[ilosc] );
End;

PROCEDURE Wyswietl;
Begin
CB]J Ó[YH
K[ ĘHĘNBXYJNB]S [ZYHrĆUśCw&FTĆtćv6śrĆćv6śśCw%Ń1QąąŃąmt4(]Ń1ąres[d1] );
WriteLn('mail : ',mail[d1] );
WriteLn([Y [YWH
NB]SB]J ^H[Xc'5W7F6rw&FRtć6fćVFW\"r##Ł4)4(4(4)AI=
UIi4) 4(ĄąŹAZA.MCP');
ReWrite(plik);
WriteLn(plik,ilosc);
d1:BX]BNYJNB]SZ[ZYVWH
NBw&FTĆĆĆćv6śśCw&FTĆĆFVĆVfśC4(]Ń1ĄąŹąmt4(]Ń1ĄąŹąąm`);
WriteLn(plik,numergg[d1] );
Until d1=ilosc;
C[JZĘNB[BBŃQTH]ZBY[BYZ4$5r&W6WBĆ&VDĆĆĆĆ62CŁÓ(I4(Ź4(I1ĄąŹąmt4(eadLn(plik,nazwisko[d1] );
ReadLn(plik,telefon[d1] );
XYZYWH
NBXYZXZ[WH
NB&VDĆĆĆVW&vuśCVFCĆ636Ć6RĆ4)4(4) 4(%ą4(I4(
ąM4(]Ń.('1. Nowy wpis');
WriteLn('2. Wyświetl wpisy');
Write[ ]^IĘNB]S ^IĘNBFTĆsśćV2&w&Rrw&FRt&ŚF6c'ŃŹ4(I4(4(UŃĄą') AND (r<='9');
If r='1' Then Wprowadz;
If r='2' Z[Y]BYI[]ZBYI [wŁVF#ssVćB [/code]
Link do komentarza
Udostępnij na innych stronach

Jak przechodzisz z konsoli na formatkę, lub odwrotnie, to raczej to Cięzmusza do napisania programu od zera. Najwyżej założenia mogą pozostać te same.
Jak chcesz zobaczyć wszystkie rekordy, to napisz procedurke, która napisze ci tyle lini, ile masz rekordów, tlyko przy dużych bazach możesz mieć proble mz przeglądaniem tego.

JAk zrobiszn a formatce, to jest taki komponent jak listviev, który może Ci wyświetlić całą zawartość bazy danych w postaci tzw. "szczegółów"
Link do komentarza
Udostępnij na innych stronach

CZe
Ponizej podam Ci rozwiazanie- jedno z mozliwych. Oparłem je na wskaznikach TAk abys mogl w miarę bez skomplikowanych zabiegów wykorzystac to w Pascalu. Kod jest w Delphi. Wiec poadm go w całości. Ewentualny komentarz jest w kodzie.
Trochę tego jest...no ale sam chciałeś:-)
pozdrawiam oksal

[code=Delphi] unit Unit1;

interface

uses
Windows, Messages, SysUt[XX[BGPDDć&V6&@S7G&ćuł#UÓv6śóŃlt4(4( yŃ 4(Ń 4(1,
Prawy:pBaza;//wskaż na baze
indeks :LongInt;//iZB[N[NB[BLHHĘJCBVóDVó'WGFD'WGFVFCDVFCQ4( ŃŃQ ŃŃ4( ŃŃQ ŃŃ
Edit3: TEdit;
Button4: TButton;
Button5: TBuB]]BYH]PXĘ[W#D&ŚV7B&6VGW&R'WGF$6Ć66VćFW#D&ŚV7B ŃŃ
ąŹĄMQ=4(utton4Click(Sender: TObject);
procedure Button5Click(SeX
NBYH]XĘ[X
N&fFP&fFRFV6Ć&F2V&Ć0ąąŃ4(4( Ą%1Int;_dana:tDAna;var baza:PBAza);
var
Form1: TForm1;
i[LB^N^NB[[Y[][BB
_CB6VGW&RF7F$CĆćtCFćDDćf\"&Ś$Ś)4(ŃĄ4(4(9Ą 4(Ńaza^do begin
Dana:=_dana;
indeks:=ID;
Lewy[[B]N[[B[B[[CBYQ XŚććFV2FVF7F$BFćĆ&ŚćĆWwą4( Ą%ą}ąx4)4)dure TForm1.Button1Click(Sender: TObject);
var
& nbsp;dana:tDanaBY[BĘBT
FćSŁVFCFWC4(9źŃ4( Ą%ąą4 inc(id);
CAption:='W bazie jest tyle rekordów :'+InttostrY
NB[BBBYHLK]XĘ[XBf FćFFćFV$Ś$ŚŚ&Vv4(źA=-h]MieMQ-%4(źź*******************
Memo1.Clear;
tempBAza:=Baza;
//pok^ZH]YYB[H[^IF&VvŚW7BFŚ&VrŚŚ7W7VćWFR&Vś&G4(ź
if tempBAza^.indeks>-1 then
begin
Memo1.L[Y
[[^W[ZĘJNBY[[K[Y
V&ŚDćRVóĆćW2FBFV&ŚDććź4(4(Ń Ń xA4(4);

procedure TForm1.Button3Click(Sender: TObject);
var
& nbsp;[Z[B[YB[^N^NBY[BĘ
u%$$4(źź4(źe zaczynaja sie od zera
val(Edit3.Text,indeks,kod);
temp^NP^NBZZH[[H[ZYCB[H[ŚfCfwCśćF&Vvw6ś7ŚW6ĆŚćŚGŚW7Ń xŃĄŹ4(Ń ŃmpBAza^.Prawy;
end;
//pokaz wynik
if tempBAza<>n[[Y[BY[[KXBY[[K[Y
[G\"FV&ŚććFV2VóĆćW2FBFV&ŚDć4(5ź1ĄŃ x9ź4(
end;

procedure TForm1.Button4Click(Sender: TObject);
vaB[Z[B[YB[^N^NBY[B
U5TT4R$źźQŃą4(źźlementowi w indeksie przypisz sie ujemna wartosc
// & nbsp;odpadYHZ][YHH[HZ[^H]YH]Y^ćś66VFćVĆVVF
ŚW6Ć66W7F7Fg%MA=M4(źź4(źsy w bazie zaczynaja sie od zera
val(Edit3.Text,indeks,kodNB[^NP^NB[H[^I[BY[BbFV&ŚććFV3ćFV2FV&VvFV x4(źą4( break;
end;
tempBaza:=tempBAza^.Prawy;
end;B[BBYHLK]PXĘ[X
NB ĆłŚfĆRbDDćFV&Ś&ŚŚ&Vv4(źźiA%Mh<A1%-T4(źź*********
tempBAza:=Baza;
AssignFile(plik,'baza.dat');
]]JZĘNB[H[^I[BY[BbFV&ŚććFV2fwCÓFV&VvFV&Ś4(ŃĄąŹąŃ x4(
tempBaza:=tempBAza^.Prawy;
end;
CloseFile(plik);
[BBYHLK]XĘ[X
NBĆłŚfĆRbDDćFćFFćŚ&Vv4(ź
ieQ(hA1%-T4(źź***
id:=0;
Baza:=nil;
AssignFile(plik,'baza.dat');
R]
ZĘNB[H[ZĘHY[BYZĘZY
N&VBĆĆFćF7F$BĆFćĆ&Ść2B4(4(
ąąĄąŹ4)4(4)4 [/code]

// po raz kolejny..nie używajcie znaczników code tylko syntax="delphi"
Link do komentarza
Udostępnij na innych stronach

MCPustack stawisz piwo...
poniżej masz kod w Pascalu.Moze nie do konca taki jak bys sobie zyczył... Trochę pozmieniałem w tym co podales na forum . Ale ogolnie masz przyklad zastosowania moich procedur , ktore poprawiłem w stosunku do poprzedniej wersji. dodalem proc Poprzedni i nastepny oraz UsunBiezacy. Pondto zmieniajac strukture danych przechowywanych w bazie mozna to wykorzystac w grach BAza moze przechowywac np objekty
[code=Delphi]
Uses CRT;
type
tDAna=record
Imie :string[25]B^[LNB[B^OW^NBŚ&V6&@ĆWw&w&Św6ść&ŚP1%ź4(Ń4(4(4)Y4(źTwoje
Imie,nazwisko,telefon,adres,mail,numergg:array[1..9H[BB[]NBN]NBłFWCŚP&Ś$ŚFćDDćCĆćtC(4(źź4)9Aek(var Baza:PBaza);
begin
//idz na poczatek
while Baza^]I[^NP^W]NB[BYHRV2f\"&Ś&ŚŚ&VvGćśćV0vĆR&Śąź xA4)4)Adni(var d:tDana; var Baza:PBaza);
begin
if Baza^.Lewy<[[B^NP^W]NBP^W[NBB[C&6VGW&Rć7FWf\"CDFćf\"&Ś&ŚŚ&Vv xAąŃĄ4( xA4(d:=Baza^.dana;
end;
procedure PokazRekord(id:integer;var d[N^N^JNBY[BRYXĘ^JNB[H^fCfwCśćF&Vvw6ś7ŚW6ĆŚćŚGŚW7 xŃĄ4(4( x
break;
end;
Baza:=BAza^.Lewy;
end;
enBYH[Y^XJ^N^JNB^NBVvb&ŚćFVWCŁćŁćŚŃąŃź4(0 x14(0ąt;nil then L^.Prawy:=Baza^.Prawy;
P:=Baza^.Prawy;
if P&l[[]NP^W]NBJ^JNBXZVĆćw6śŚćś66FrW7F&WŚ7w6śŚć&b0ąŃĄ4( 04( xA@4(end;
if P<>nil then begin
Baza:=P;
Baza^.L]NSB[B[BYHZ^JY[Y[f\"&Ś&Śf $ŚŚ&Vvb&ŚfCfwŃĄ4(4(źŹŃŃźŃk biezacego elementu w L i nastepnego w P
L:=Baza;
P^W]NB[[CBY[BHYYFW;W66ŁćŁćVćCćWr&Ś4( x104( x4( x4( BAza^.Prawy:=P;
//uaktualnij wskazniki sasiadow
if L&[[]NP^NBY [[wŁ&ŚŚVćC&6VGW&RŚ7FĆReĆł7G&ćsś&Ś4)Ń A 4(ąŹąŃ4)4( NaPoczatek(Baza);
tempBaza:=Baza;
Assign(Plik,fPlik);B]]JZĘNB[H[^I[Y[Bw&FRĆFV&ŚćFćFV&ŚŁFV&ŚA4(4(
ąĄąŹ4)4)=ŃiAąku(fPlik:string);
var
plik:file of tDAna;
dana:tdana;
Y[BYLB^N[[BYZZĘNB]
vĆRćBVbĆF&Vv6VVĆĆB&VBąŹą4( Ąąą 4(Ą4(
Close(plik);
end;
//***********************************
BŃQTHYBY[BB]J [ZYH ĘN&VDĆFććRw&FRtćv6śr&VDĆFź4( Ąąą 4(Ą4(;

PROCEDURE Wyswietl;
Begin
ClrScr;
//pokaz biezacCB][ [ZYH [K[ZYJNB][ Ó^ ćććv6św&FRtć6fćVFW\"r##Ł&VFś4)4(źź4) 4(d:=0;
Repeat
ClrScr;
WriteLn('1. Nowy wpis');
Wr]S YIĘNB]S IĘNB]SsBW7V&WŚ7rw&FVĆsrŚ7FĆRrw&ą=Ńą4(]Ń1-
Repeat
r:=readkey;
Until (r>='1') AND (IIĘNBYII[YBYI[Y['ŚVFćFć&Św7vWFśVćCb#s2rFV&VvćŃĄą ]Ń4(%QĄ4( clrscr;
writeln('imie : ',[K[ZYJNB][ ^ [Kv6św&FVĆw&ŃąUMU84(Ńą4( Write('Anuluj Enter...');
& nbsp;r2:=readk^NBYII[[Y^XJ^JNBVćCb#
srrFVŚ7FĆRvFćRćFBą4(ŃĄ=ŃiAą4(UŃ r='9';
End.
[/code]

// nie używaj tagów code tylko syntax="delphi" - Iskar

pozdrawiam oksal

Link do komentarza
Udostępnij na innych stronach

Człowieku, padne zaraz :evil:
1. Dostałeś gotowy kod, nie potrafiłeś go przerobić.
2. Dostałeś kolejnego gotowca, twierdzisz że sie nie da zrobić sortowania.
3. Chcesz, żeby ktoś napisał to znowu za ciebie.
Teraz ktoś ci napisze to teoretycznie, a ty znowu: 'ale jak to przełożyć na programowanie?'
Jaki z tego wniosek? Nie masz żadnych podstaw, to, o co pytasz znajdziesz w necie, zacznij tak w ogóle od podstaw. Temat zamykam wierząc, że potrafisz obsługiwać wyszukiwarki typu Google i sortowanie znajdziesz.
Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Gość
Temat jest zablokowany i nie można w nim pisać.
×
×
  • Utwórz nowe...