Witam!
Mam do napisania bazę danych. Wybrałam, że będzie to baza biblioteki. Mój problem polega na tym, że pomimo, że program się kompiluje to przy wypisywaniu z pliku na ekranie nic się nie pojawia, jak również nie zapisuje do pliku.
Oto program:
program Biblioteka;
uses crt;
type
Tgatunek=(pamietnik,komedia,dramat);
Tksiazka=record
nr:integer;
tytul:string;
imie_autora:string[20];
nazwisko_autora:string[30];
rok_wydania:integer;
ilosc_stron:integer;
gatunek:Tgatunek;
end;
const
NAZWA_PLIKU='BibKasia.txt';
max_ksiazek=50;
nazwy_gatunkow:array[tgatunek] of string=('pamietnik','komedia','dramat');
var
ksiazka:array[1..max_ksiazek] of Tksiazka;
i,j,licz,y:byte;
c,x:char;
slowo:string;
aktualnie_osob,znalezionych:byte;
gt:Tgatunek;
pom:boolean;
plik,plik2: file of Tksiazka;
ksia:Tksiazka;
blad:byte;
k,u:integer;
procedure policz;
begin
aktualnie_osob:=0;
for i:=1 to max_ksiazek do
if ksiazka[i].tytul<>'' then
inc(aktualnie_osob);
end;
procedure dodaj;
begin
clrscr;
assign(plik, NAZWA_PLIKU);
rewrite(plik);
writeln('Podaj ile ksiazek chcesz dodac do bazy');
readln(u);
for k:=1 to u do
begin
inc(aktualnie_osob);
with ksiazka[aktualnie_osob] do
begin
writeln('**********DODAWANIE NOWYCH POZYCJI KSIAZKOWYCH**********');
writeln('Podaj tytul ksiazki: ');
readln(tytul);
writeln('Podaj imie autora: ');
readln(imie_autora);
writeln('Podaj nazwisko autora: ');
readln(nazwisko_autora);
writeln('Podaj rok wydania ksiazki:');
readln(rok_wydania);
writeln('Podaj ilosc stron ksiazki:');
readln(ilosc_stron);
repeat
pom:=false;
write('Podaj gatunek: '); readln(slowo);
for gt:=pamietnik to dramat do
if slowo=nazwy_gatunkow[gt] then
begin
gatunek:=gt;
pom:=true;
end;
if pom=false then
writeln('Zle podana gatunek. Podaj jeszcze raz ');
until pom=true;
nr:=aktualnie_osob;
end;
write(plik,ksia);
end;
close(plik);
end;
procedure dopisz;
begin
clrscr;
assign(plik,NAZWA_PLIKU);
reset(plik);
blad:=ioresult;
if (blad<>0) then
dodaj
else
begin
writeln('Podaj ile ksiazek chcesz dodac do bazy');
readln(u);
k:=0;
while not(eof(plik)) do
begin
seek(plik,k);
k:=k+1;
end;
for k:=1 to u do
begin
inc(aktualnie_osob);
with ksiazka[aktualnie_osob] do
begin
writeln('**********DODAWANIE NOWYCH POZYCJI KSIAZKOWYCH**********');
writeln('Podaj tytul ksiazki: ');
readln(tytul);
writeln('Podaj imie autora: ');
readln(imie_autora);
writeln('Podaj nazwisko autora: ');
readln(nazwisko_autora);
writeln('Podaj rok wydania ksiazki:');
readln(rok_wydania);
writeln('Podaj ilosc stron ksiazki:');
readln(ilosc_stron);
repeat
pom:=false;
write('Podaj gatunek: '); readln(slowo);
for gt:=pamietnik to dramat do
if slowo=nazwy_gatunkow[gt] then
begin
gatunek:=gt;
pom:=true;
end;
if pom=false then
writeln('Zle podana gatunek. Podaj jeszcze raz ');
until pom=true;
nr:=aktualnie_osob;
write(plik,ksia);
end;
close(plik);
end;
end;
end;
procedure pokaz_dane (encja:Tksiazka);
begin
writeln('Tytul : ');
readln(ksia.tytul);
writeln('Imie autora : ');
readln(ksia.imie_autora);
writeln('Nazwisko autora : ');
readln(ksia.nazwisko_autora);
writeln('Rok wydania : ');
readln(ksia.rok_wydania);
writeln('Gatunek : ');
readln(nazwy_gatunkow[gt]);
end;
procedure usun;
begin
Writeln('Podaj nr ksiazki ktora chcesz usunac: ');
readln(y);
writeln('Czy napewno usunac ksiazke o tytule: ',ksiazka[y].tytul);
writeln(' Autora: ',ksiazka[y].nazwisko_autora,' ',ksiazka[y].imie_autora,'?(t/n)');
repeat
readln(x);
if (x<>'t') and (x<>'n') then writeln('zly znak. wybierz t lub n');
until (x='t') or (x='n');
if x='t' then
begin
writeln('Ksiazka o numerze ',y,' - usunieto!');
ksiazka[y]:=ksiazka[aktualnie_osob];
with ksiazka[aktualnie_osob] do
begin
nazwisko_autora:='';
imie_autora:='';
tytul:='';
rok_wydania:=0;
ilosc_stron:=0;
nr:=0;
end;
end;
policz;
for i:=1 to aktualnie_osob do
ksiazka[i].nr:=i;
end;
procedure ponazwisku;
begin
write('Podaj nazwisko autora : ');
readln(slowo);
clrscr;
for i:=1 to aktualnie_osob do
if slowo=ksiazka[i].nazwisko_autora then
begin
inc(znalezionych);
readln(i);
if znalezionych mod 2 = 0 then
begin
writeln('Nacisnij dowolny klawisz aby kontynuowac...');
x:=readkey;
clrscr;
if x=chr(27) then break;
end;
end;
end;
procedure pogatunku;
begin
write('Podaj gatunek: ');
readln(slowo);
clrscr;
for i:=1 to aktualnie_osob do
if slowo=nazwy_gatunkow[ksiazka[i].gatunek] then
begin
inc(znalezionych);
readln(i);
if znalezionych mod 2 = 0 then
begin
writeln('Nacisnij dowolny klawisz aby kontynuowac...');
x:=readkey;
clrscr;
if x=chr(27) then break;
end;
end;
end;
procedure wypisz;
begin
assign(plik,NAZWA_PLIKU);
reset(plik);
clrscr;
writeln('*****SPIS WSZYSTKICH KSIAZEK*****');
writeln('_________________________________');
while not (eof(plik)) do
begin
read(plik,ksia);
writeln('Tytul : ');
writeln(ksia.tytul);
writeln('Imie autora : ');
readln(ksia.imie_autora);
writeln('Nazwisko autora : ');
readln(ksia.nazwisko_autora);
writeln('Rok wydania : ');
readln(ksia.rok_wydania);
writeln('Ilosc stron : ');
readln(ksia.ilosc_stron);
writeln('Gatunek : ');
readln(nazwy_gatunkow[gt]);
writeln('_____________________________');
close(plik);
begin
inc(znalezionych);
readln(i);
if znalezionych mod 2 = 0 then
begin
writeln('Nacisnij dowolny klawisz aby kontynuowac...');
x:=readkey;
clrscr;
if x=chr(27) then break;
end;
end;
end;
end;
procedure menu;
begin
gotoxy(1,1);
writeln('r.',aktualnie_osob);
writeln('1 - Dodaj ksiazki do bazy');
writeln('2 - Wyswietlanie zawartosci biblioteki');
writeln('3 - wyszukaj osoby po gatunku');
writeln('4 - dodaj osobe');
writeln('5 - sortowanie po wieku (od najmlodszych)');
writeln('7 - usuwanie osob');
writeln('z - zakoncz');
c:=readkey;
case c of
'1': dodaj ;
{begin
clrscr;
for i:=1 to aktualnie_osob do
begin
readln(i);
if i mod 2 = 0 then
begin
writeln('Nacisnij dowolny klawisz aby kontynuowac...');
x:=readkey;
clrscr;
if x=chr(27) then break;
end;
end;
end; }
'2': wypisz;
'3': pogatunku;
'4': dodaj;
{'5': po_wieku;}
'7': usun;
{'q': zapis2;}
else c:='z';
end;
end;
begin
policz;
repeat
clrscr;
menu;
readkey;
until c='z';
end.