PDA

Zobacz pełną wersję : Baza danych w Pascalu



Jaco_Q
13-12-07, 09:26
Witam jestem nowy.

Mam taki problem jak z tego:


program rekordy;
type
osoba = record
Imie:String[20];
Nazwisko:String[30];
wiek:byte;
end;
var student:osoba;
studenci:array[1..10] of osoba;
begin
for 1 to 10 do
writeln('podaj imiê:');
readln(studenci[1].imie);
writeln('podaj nazwisko:');
readln(studenci[1].nazwisko);
writeln('podaj wiek:');
readln(studenci[1].wiek);
for 1 to 3 do
writeln(studenci[1].imie,' ',studenci[1].nazwisko,' ',studenci[1].wiek);
readln;
end;
end.

mam zrobiæ bazê danych w pascalu zrobiona z funkcji rekord?
emat: anime
2. Pola rekordu: Nazwa anime,rok powstania,autor anime,rok ukazania siê w TV w Polsce, kana³ na jakim anime siê ukaza³.

Mog³by mi kto¶ pomóc?

doderic
14-12-07, 09:29
mam zrobić bazę danych w pascalu zrobiona z funkcji rekord?
Pola rekordu: Nazwa anime,rok powstania,autor anime,rok ukazania się w TV w Polsce, kanał na jakim anime się ukazał.


Żeby stworzyć bazę w TP musisz przejść przez kilka kroków:

Stwórz definicję swojego rekordu anime - to ten kawałek: "osoba = record ..."
Zdecyduj, jak chcesz przechowywać bazę w programie - przy pomocy tablicy (array) czy wskaźników (pointers)? Tablice są zdecydowanie prostsze, jednak taka baza ma jedno ograniczenie: z góry zakładasz, że nie będziesz miał więcej niż x wpisów. Np. studenci:array[1..10] of osoba; - czyli tablica 10 elementowa przechowująca rekordy typu osoba.
Wreszcie przychodzi pora na zrealizowanie funkcjonalności bazy. Każdy taki kawałek powinien być napisany jako osobna funkcja.

Dodawanie nowego rekordu - w przykładzie już masz jakieś zaczątki - mała podpowiedź: dobrze jest stworzyć sobie zmienną, w której będziesz przechowywał informację o tym, ile już rekordów jest wpisanych do bazy i jak dodajesz, to nowy rekord ma numer ile+1.
Usuwanie wybranego rekordu - pamiętaj, aby po usunięciu rekordu przesunąć dalsze o jedno miejsce w dół i zaktualizować zmienną ile, tzn. jeżeli masz 5 rekordów i usuwasz 3., to żeby po operacji rekordy miały numery 1,2,3,4, a nie 1,2,,4,5 oraz żeby ile=4.
Wyświetlanie wybranego rekordu - i znów w przykładzie coś takiego się już pojawia pod sam koniec.

Powyższe to było minimum funkcjonalności. Dodatkowo można też dodać:

Wyszukiwanie rekordów spełniających zadane kryterium - czyli przejrzyj w pętli for całą tablicę i wyświetl rekordy, które w wybrany polu mają wybraną wartość.
Zapisywanie i odczytywanie bazy z dysku - jak już uruchomisz program do testów po raz 10. i od początku będziesz musiał wprowadzić wszystkie dane... ;)



Przyszło mi jeszcze do głowy alternatywne rozwiązanie. Zamiast używać zmiennej ile można do rekordu dodać pole wUzyciu. Na początek ustawiasz dla wszystkich rekordów wUzyciu:=false. Jak dodajesz rekord, to wyszukujesz pierwszy numer rekordu, gdzie wUzyciu=false, dodajesz dane i zmieniasz wUzyciu:=true. Jeżeli kasujesz rekord, to tylko zmieniasz wUzyciu:=false. No i przy wyświetlaniu, szukaniu i zapisie na dysk interesują Ciebie tylko rekordy z wUzyciu=true.

Teraz spróbuj napisać samemu funkcje, a w razie dalszych problemów, wal śmiało.