quanlysach

Program Quanlysach;

{

Chuong trinh quan ly sach nhom VII

Huong dan thuc hien: Co Do Thi Mo;

Cac thanh vien:

Bui Van Menh

Bui Xuan Duong

Phan Huu Dang

Doan Anh Hung

Luong Van Xanh

}

Uses Crt,Mbv_Menu,MediaMbv;

Type

pt=^sach;

ma=String[4];

Sach=record

Masach:ma;

Tensach:String[40];

Namxb:Integer;

Tacgia:String[25];

Sotrang:Word;

Gia:Longint;

Ngaynhap:record

ngay:1..31;

thang:1..12;

nam:Integer;

End;

next:pt;

End;

Var

lcc,lc1,lc2,vt:byte;

dk1,dk2,dk3,dk4:Char;

j:Word;

ddtt:String;

s:sach;

ptm,pttk:Word;

fm,ftk,p,q,r:pt;

ts:array[1..10] of Byte;

dk:array[1..10] of Char;

tb:array[1..10] of String[10];

ms:ma;

td:menu;

{------------------------ Tim theo ma sach ----------------------------------}

FUNCTION Timms(first:pt;masach:ma):pt;

Var

p:pt;

Begin

p:=first;

While (p<>nil) and (p^.masach<>masach) do

p:=p^.next;

Timms:=p;

End;

{------------------------ Luu vao tap tin -----------------------------------}

PROCEDURE Luu(first:pt;t:String);

Var

f:file of sach;

p:pt;

s:sach;

Begin

Assign(f,t);

Rewrite(f);

p:=first;

While p<>nil do

Begin

s:=p^;

Write(f,s);

p:=p^.next;

End;

Hthongbao('','Ghi hoan tat');

End;

{---------------------Dao trat tu cua danh sach------------------------------}

PROCEDURE Dao(var first:pt);

Var

p,q,r:Pt;

Begin

p:=first;

first:=nil;

While p<>nil do

Begin

q:=p^.next;

p^.next:=first;

first:=p;

p:=q;

End;

End;

{----------------------------------------------------------------------------}

PROCEDURE Inx(first:pt;d,spt:Word);Forward;

{----------------------Doc danh sach tu tep----------------------------------}

PROCEDURE Doc(Var first:pt;var spt:Word;dd:String);

Var

f:file of sach;

s:sach;

tentep:String[20];

Begin

Assign(f,dd);

Reset(f);

first:=nil;

spt:=0;

While not Eof(f) do

Begin

New(p);

Read(f,s);

p^:=s;

p^.next:=first;

first:=p;

spt:=spt+1;

End;

Hthongbao('','Da doc xong');

End;

{-----------------------Tim phan tu dung truoc con tro p---------------------}

FUNCTION Prvp(first,p:pt):pt;

Var

q:pt;

Begin

q:=first;

While q<>nil do

Begin

If q^.next=p then

Begin

Prvp:=q;

Exit;

End;

q:=q^.next;

End;

Prvp:=nil;

End;

{-----------------------Xoa phan tu co ma sach cho truoc---------------------}

PROCEDURE Xoapt (var first:pt;var spt:Word;masach:ma);

Var

i:Byte;

Begin

p:=Timms(first,masach);

If p<> nil then

Begin

If p=first then

Begin

first:=p^.next;

End

Else

Begin

q:=prvp(first,p);

p:=p^.next;

q^.next:=p;

End;

spt:=spt-1;

Dispose(q);

End;

End;

{------------------------Tim con tro cua phan tu vi tri n--------------------}

FUNCTION Pvt(first:pt;n:Word):pt;

Var

i:Word;

p:pt;

Begin

p:=first;

For i:=1 to n-1 do p:=p^.next;

Pvt:=p;

End;

{------------------------Doi noi dung cua hai con tro------------------------}

PROCEDURE Thay(Var sc:sach;Var sm:sach);

Var

next:pt;tg:sach;

Begin

tg:=sc;

sc:=sm;

sc.next:=tg.next;

next:=sm.next;

sm:=tg;

sm.next:=next;

End;

{----------------------Kiem tra ma sach da co hay chua-----------------------}

FUNCTION Ktms(first:pt;ms:ma):Boolean;

Var p:pt;

Begin

p:=first;

While p<>nil do

Begin

If p^.masach=ms then

Begin

Ktms:=False;

Exit;

End;

p:=p^.next;

End;

Ktms:=True;

End;

{----------------------In tung phan tu---------------------------------------}

Procedure Inpt(p:pt);

Begin

With p^ do

Begin

Write('º',Masach :4,'º ',Cantrai(Tensach,20),'º',Namxb:4,'º ',Cantrai(tacgia,20),'º',Sotrang:5,'º',Gia:8,'º ');

Write(ngaynhap.ngay:2,'-',ngaynhap.thang:2,'-',ngaynhap.nam:4,'º');

If next<>nil then

Write('ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹')

Else Write('ÈÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍͼ');

End;

End;

{-----------------------Xoa hinh tai vi tri ---------------------------------}

PROCEDURE Xoaxy(x,y,n:Byte);

Var i:Byte;

Begin

Gotoxy(x,y);

For i:=1 to n do Write(' ');

End;

{-----------------------In khung nhap----------------------------------------}

FUNCTION Bangd:Byte;

Var y:Byte;

Begin

y:=Wherey;

Bangd:=y;

Textbackground(1);

Textcolor(14);

Gotoxy(15,y+1); Write('ÉÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');

Gotoxy(15,y+2); Write('º Ma sach º º');

Gotoxy(15,y+3); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+4); Write('º Ten sach º º');

Gotoxy(15,y+5); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+6); Write('º Nam in º º');

Gotoxy(15,y+7); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+8); Write('º Tac gia º º');

Gotoxy(15,y+9); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+10); Write('º So trang º º');

Gotoxy(15,y+11); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+12); Write('º Gia tien º º');

Gotoxy(15,y+13); Write('ÌÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹');

Gotoxy(15,y+14); Write('º Ngay nhapº - - º');

Gotoxy(15,y+15); Write('ÈÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');

Textattr:=15;

End;

{-------------------In noi dung phan tu--------------------------------------}

PROCEDURE Inbangd(p:pt;s:String);

Begin

If p=nil then

Begin

Hthongbao('','Khong co ma sach thoa man');

Exit;

End;

With p^ do

Begin

Textattr:=15;

Writeln;

Writeln(s);

i:=Bangd;

Textbackground(Blue);

Gotoxy(28,i+2);Writeln(masach);

Gotoxy(28,i+4);Writeln(tensach);

Gotoxy(28,i+6);Writeln(namxb);

Gotoxy(28,i+8);Writeln(tacgia);

Gotoxy(28,i+10);Writeln(sotrang);

Gotoxy(28,i+12);Writeln(gia);

With Ngaynhap do

Begin

Gotoxy(28,i+14);

Writeln(ngay:2,' - ',thang:2,' - ',nam);

End;

End;

Textbackground(0);

End;

{------------------------In dang danh sach-----------------------------------}

PROCEDURE Iny(first:pt;n,spt:Word);

Var

i,vt:Word;

Phim:Char;

Begin

If first=nil then

Begin

Hthongbao('','Danh sach rong');

Exit;

End;

p:=pvt(first,n);

Repeat

Clrscr;

Writeln;

Writeln('Hien tai dang o vi tri ',n,' tren tong so ',spt);

Inbangd(p,'');

Phim:=Readkey;

Case Phim of

PhimTrai,PhimLen:

Begin

If n>1 then

Begin

p:=prvp(first,p);

n:=n-1;

End;

End;

PhimPhai,Phimxuong:

Begin

If n<spt then

Begin

p:=p^.next;

n:=n+1;

End;

End;

PhimTab:

Begin

If spt<10 then n:=1 Else

If n>=spt-10 then n:=spt-10;

Inx(first,n,spt);

Exit;

End;

End;

Until Phim=PhimEnter;

End;

{------------------------Nhap vao mot phan tu--------------------------------}

FUNCTION Nhap(s:String):pt;

Var ms:ma;p:pt;y,i:Byte;Phim:Char;

Begin

Writeln(s);

y:=Bangd;

Textbackground(1);

Gotoxy(28,y+2);Readln(ms);

If ms='' then Nhap:=nil

Else

Begin

New(p);

With p^ do

Begin

masach:=ms;

Gotoxy(28,y+4);Readln(tensach);

Gotoxy(28,y+6);Readln(namxb);

Gotoxy(28,y+8);Readln(tacgia);

Gotoxy(28,y+10);Readln(sotrang);

Gotoxy(28,y+12);Readln(gia);

With ngaynhap do

Begin

Gotoxy(28,y+14);Read(ngay);

Gotoxy(33,y+14);Read(thang);

Gotoxy(38,y+14);Read(nam);

End;

End;

Nhap:=p;

End;

Textbackground(0);

End;

{-----------------------In theo lan luot-------------------------------------}

PROCEDURE Inx(first:pt;d,spt:Word);

Var

p:pt;c,i,j,y:Byte;Phim:char;n,k:Word;f:Text;

Begin

Clrscr;

If first=nil then

Begin

Hthongbao('','Danh sach rong');

Exit;

End;

Write('ÉÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍ»');

Write('º Ma º Ten sach º Namº Tac gia º So º Gia º Ngay nhap º');

Write('ºsachº º In º ºtrangº º º');

Write('ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹');

p:=pvt(first,d);

q:=pvt(first,d);

If spt-d>=10 then n:=10 else n:=spt-d+1;

For j:=1 to n do

If p<>nil then

Begin

Inpt(p);

p:=p^.next;

End;

n:=d+n-1;

Gotoxy(1,1);

Insline;

Writeln(' Hien tai dang duyet cac sach o vi tri ',d,' den ',n,' tren tong so ',spt);

r:=p;

Repeat

Phim:=Readkey;

Case Phim of

PhimLen:

Begin

If d>1 then

Begin

Gotoxy(1,6);

Insline;

insline;

q:=pvt(first,d-1);

If q<>nil then

Begin

Inpt(q);

d:=d-1;

r:=prvp(first,r);

Gotoxy(1,1);

Clreol;

n:=n-1;

Writeln(' Hien tai dang duyet cac sach o vi tri ',d,' den ',n,' tren tong so ',spt);

End;

End;

End;

Phimxuong:

Begin

If n<spt then

Begin

If (r<>nil) then

Begin

Gotoxy(1,6);

Delline;

Delline;

Gotoxy(1,24);

Inpt(r);

r:=r^.next;

n:=n+1;

Gotoxy(1,1);

Insline;

Writeln(' Hien tai dang duyet cac sach o vi tri ',d+1,' den ',n,' tren tong so ',spt);

d:=d+1;

End;

End;

End;

PhimTab:

Begin

Iny(first,d,spt);

Exit;

End;

End;

Until Phim=PhimEnter;

Textbackground(0);

End;

{-------------------------Tao danh sach--------------------------------------}

FUNCTION Taods(first:pt;ptr:pt;var spt:Word):pt;

Begin

Repeat

If ptr=nil then

Begin

Clrscr;

p:=Nhap('Nhap thong tin cho sach: ');

If p=nil then break;

Readln;

End

Else

Begin

New(p);

p^:=ptr^;

End;

If Not Ktms(first,p^.masach) then

Hthongbao('','Ma sach nay da co')

Else

Begin

spt:=spt+1;

p^.next:=first;

first:=p;

End;

Until (p=nil) or (ptr<>nil);

Taods:=first;

End;

{----------------------So sanh hai con tro-----------------------------------}

FUNCTION Sosanh(a,b:sach;trs:Byte;lc:Char):Boolean;

Begin

Case trs of

1:

Begin

If ((a.masach<b.masach) And (lc='<'))

Or ((a.masach>b.masach) And (lc='>'))

Or ((a.masach=b.masach) And (lc='=')) then Sosanh:=True

Else Sosanh:=False;

End;

2:

Begin

If ((a.tensach<b.tensach) And (lc='<'))

Or ((a.tensach>b.tensach) And (lc='>'))

Or ((a.tensach=b.tensach) And (lc='='))

then Sosanh:=True

Else Sosanh:=False;

End;

3:

Begin

If ((a.namxb<b.namxb) And (lc='<'))

Or ((a.namxb>b.namxb) And (lc='>'))

Or ((a.namxb=b.namxb) And (lc='='))

then Sosanh:=True

Else Sosanh:=False;

End;

4:

Begin

If ((a.tacgia<b.tacgia) And (lc='<'))

Or ((a.tacgia>b.tacgia) And (lc='>'))

Or ((a.tacgia=b.tacgia) And (lc='='))

then Sosanh:=True

Else Sosanh:=False;

End;

5:

Begin

If ((a.sotrang<b.sotrang) And (lc='<'))

Or ((a.sotrang>b.sotrang) And (lc='>'))

Or ((a.sotrang=b.sotrang) And (lc='='))

then Sosanh:=True

Else Sosanh:=False;

End;

6:

Begin

If ((a.gia<b.gia) And (lc='<'))

Or ((a.gia>b.gia) And (lc='>'))

Or ((a.gia=b.gia) And (lc='='))

then Sosanh:=True

Else Sosanh:=False;

End;

7:

Begin

If (

(a.ngaynhap.ngay=b.ngaynhap.ngay)

And (a.ngaynhap.thang=b.ngaynhap.thang)

And (a.ngaynhap.nam=b.ngaynhap.nam)

And (lc='=')

)

Or (

(

(a.ngaynhap.nam>b.ngaynhap.nam)

Or (

(a.ngaynhap.nam=b.ngaynhap.nam)

And (a.ngaynhap.thang>b.ngaynhap.thang)

)

Or (

(a.ngaynhap.nam=b.ngaynhap.nam)

And (a.ngaynhap.thang=b.ngaynhap.thang)

And (a.ngaynhap.ngay>b.ngaynhap.ngay)

)

)

And (lc='>')

)

Or (

(

(a.ngaynhap.nam<b.ngaynhap.nam)

Or (

(a.ngaynhap.nam=b.ngaynhap.nam)

And (a.ngaynhap.thang<b.ngaynhap.thang))

Or (

(a.ngaynhap.nam=b.ngaynhap.nam)

And (a.ngaynhap.thang=b.ngaynhap.thang)

And (a.ngaynhap.ngay<b.ngaynhap.ngay)

)

And (lc='<')

)

)

then Sosanh:=True

Else Sosanh:=False;

End;

End;

End;

FUNCTION Sosanhm(sa,sb:Sach;m:Byte):Boolean;

Begin

If m=1 then Sosanhm:=Sosanh(sa,sb,ts[1],'=')

Else Sosanhm:=Sosanh(sa,sb,ts[m],'=') And Sosanhm(sa,sb,m-1);

End;

{----------------------------------------------------------------------------}

FUNCTION Sosanhn(sa,sb:Sach;n:Byte):Boolean;

Begin

If n=1 then Sosanhn:=Sosanh(sa,sb,ts[1],dk[1])

Else Sosanhn:=(Sosanhm(sa,sb,n-1) And Sosanh(sa,sb,ts[n],dk[n])) Or Sosanhn(sa,sb,n-1);;

End;

{----------------------------------------------------------------------------}

PROCEDURE Max_Min(first:pt;lc:Byte;ts:Byte;m:sach);

Var p:pt;

Begin

p:=first;

M:=p^;

While p<>nil do

Begin

p:=p^.next;

Case lc of

0:If Sosanh(M,p^,ts,'<') then M:=p^;

1:If Sosanh(M,p^,ts,'>') then M:=p^;

End;

End;

End;

{----------------------Xoa theo dieu kien------------------------------------}

PROCEDURE Xoatdk(var first:pt;var spt:Word;sb:sach;ts:Byte;lc:Char);

Begin

p:=first;

While p<>nil do

Begin

If Sosanh(p^,sb,ts,lc) then

Begin

If p=first then first:=p^.next

Else

Begin

q:=prvp(first,p);

q^.next:=p^.next;

End;

spt:=spt-1;

End;

p:=p^.next;

End;

End;

{-------------------Tim kiem theo truong-------------------------------------}

PROCEDURE Timkiem(s:sach;ts:Byte;lc:char);

Var

i:Byte;

p:pt;

Begin

pttk:=0;

New(p);

p:=fm;

ftk:=nil;

While p<>nil do

Begin

If Sosanh(p^,s,ts,lc) then ftk:=Taods(ftk,p,pttk);

p:=p^.next;

End;

Inx(ftk,1,pttk);

Readln;

End;

{-----------------------Cap nhat theo ma sach--------------------------------}

PROCEDURE Capnhat(first:pt;ms:String);

Begin

Repeat

Clrscr;

p:=Timms(first,ms);

If p=nil then

Begin

Hthongbao('','Khong co sach nao thoa man ');

Exit;

End;

Textmode(3+256);

Inbangd(p,' Thong tin cu ');

Writeln;

Textbackground(0);

Writeln;

q:=Nhap(' Thong tin moi ');

If q=nil then

Begin

Textmode(Lo(3));

Textbackground(0);

Exit;

End;

Textmode(Lo(3));

Textbackground(0);

If Ktms(fm,q^.masach) or (q^.masach=p^.masach) then

Begin

Thay(q^,p^);

Exit;

End

Else

Begin

Hthongbao('','Ma sach da co xin moi nhap lai');

Readln;

End;

Until False;

End;

{----------------------Cap nhat theo dieu kien-------------------------------}

PROCEDURE Capnhatdk(sb:sach;trs:Byte;lc:Char);

Begin

p:=fm;

While p<>nil do

Begin

If Sosanh(p^,sb,trs,lc) then

Begin

Capnhat(fm,p^.masach);

End;

p:=p^.next;

End;

End;

{-----------------------Bo sung vao vi tri n---------------------------------}

PROCEDURE Bosungvt(first:pt;n:Word);

Var p,q,r,ss:pt;

Begin

Repeat

Clrscr;

If n>ptm then n:=ptm;

p:=Nhap('Nhap thong tin cho sach can bo sung');

If p=nil then Exit;

If Not ktms(first,p^.masach) then

Begin

Hthongbao('','Ma sach nay da co');

Readln;

End

Else

Begin

If n=1 then

Begin

q:=first;

first:=p;

p^.next:=q;

ptm:=ptm+1;

End

Else

Begin

q:=pvt(first,n-1);

r:=q^.next;

q^.next:=p;

p^.next:=r;

ptm:=ptm+1;

End;

End;

Until False;

End;

{------------------------Bo sung truoc/sau ma sach---------------------------}

PROCEDURE Bosung(first:pt;ms:String;tt:Char);

Var p,r:pt;

Begin

p:=Timms(first,ms);

If p=nil then

If Hluachon('Ma vua nhap khong co trong danh sach','Ban co muon nhap lai khong?')=-1 then Exit;

Repeat

Clrscr;

r:=Nhap('Nhap thong tin cho sach can bo sung:');

If r=nil then Exit;

If Not ktms(first,r^.masach) then

Hthongbao('','Ma sach nay da co')

Else

Case tt of

't':

Begin

prvp(first,p)^.next:=r;

r^.next:=p;

ptm:=ptm+1;

End;

's':

Begin

r^.next:=p^.next;

p^.next:=r;

ptm:=ptm+1;

End;

End;

Readln;

Until False;

End;

{--------------------------Cap nhat theo dieu kien---------------------------}

PROCEDURE Capnhattk;

Begin

For i:=1 to pttk do Capnhat(fm,pvt(ftk,i)^.masach);

End;

{---------------------------Xoa theo dieu kien-------------------------------}

PROCEDURE Xoatk;

Begin

For i:=1 to pttk do

For j:=1 to ptm do

Begin

If pvt(ftk,i)^.masach = pvt(fm,j)^.masach then

Xoapt(fm,ptm,pvt(ftk,i)^.masach);

End;

End;

{-------------------------Menu chon truong-----------------------------------}

PROCEDURE Menuts(var ts:Byte;n:Byte;tde:String);

Var lc:Byte;

Begin

td[1]:='1. Theo ma sach';

td[2]:='2. Theo ten sach';

td[3]:='3. Theo nam xuat ban';

td[4]:='4. Theo tac gia ';

td[5]:='5. Theo so trang ';

td[6]:='6. Theo gia';

td[7]:='7. Theo ngay nhap';

td[8]:='8.Quay tro lai';

ts:=Chonmenu(10,2,60,10,15,10,n,td,tde);

End;

{-------------------------Menu chon gia tri----------------------------------}

PROCEDURE Menudk(ts:Byte;Var dk:Char);

Var lc:Byte;

Begin

Case ts of

1..7:

Begin

td[1]:=' 1. Bang gia tri nhap vao';

td[2]:=' 2. Cao hon gia tri nhap vao';

td[3]:=' 3. Thap hon gia tri nhap vao';

td[4]:=' 4. Quay tro lai';

lc:=Chonmenu(10,2,60,6,15,10,4,td,'Nhap vao dieu kien');

Case lc of

1:dk:='=';

2:dk:='>';

3:dk:='<';

End;

End;

End;

End;

{-----------------------Sap xep tang giam------------------------------------}

PROCEDURE Menudktk(trs:Byte;Var dk:Char);

Var lc:Byte;

Begin

Case trs of

1..7:

Begin

td[1]:=' 1. Tang dan';

td[2]:=' 2. Giam dan';

lc:=Chonmenu(10,2,60,4,15,10,2,td,'Sap xep theo thu tu');

Case lc of

1:dk:='>';

2:dk:='<';

End;

End;

End;

End;

{------------------------Nhap thong tin tim kiem-----------------------------}

PROCEDURE Nhaptk(var s:Sach;ts:Byte);

Begin

Clrscr;

With s do

Case ts of

1: Masach :=HtbNhapchuoi('Dieu kien cua ma sach','Ma sach',dk[1]);

2: Tensach:=HtbNhapchuoi('Dieu kien cua ten sach','Ten sach',dk[1]);

3: Namxb :=HtbNhapso('Dieu kien cua nam xuat ban','Nam xuat ban',dk[1]);

4: Tacgia :=HtbNhapchuoi('Dieu kien cua ten tac gia','Tac gia',dk[1]);

5: Sotrang:=HtbNhapso('Dieu kien cua so trang sach','So trang',dk[1]);

6: Gia :=HtbNhapso('Dieu kien cua gia tien','Gia tien',dk[1]);

7:

Begin

Ngaynhap.ngay:=HtbNhapso('Dieu kien cua ngay nhap','Ngay nhap',dk[1]);

Gotoxy(28,10);

Write(' - -');

Gotoxy(Wherex-5,10);

Readln(ngaynhap.thang);

Gotoxy(38,10);

Readln(ngaynhap.nam);

End;

End;

End;

{--------------------------Chuong trinh chinh--------------------------------}

BEGIN

Repeat

Textattr:=15;

Clrscr;

td[1]:=' 1. Tao danh sach ';

td[2]:=' 2. In danh sach ';

td[3]:=' 3. Cap nhat danh sach ';

td[4]:=' 4. Tim kiem ';

td[5]:=' 5. Sap xep ';

td[6]:=' 6. Doc du lieu tu tep ';

td[7]:=' 7. Luu danh sach vao tep ';

td[8]:=' 8. Gioi thieu ';

td[9]:=' 9. Thoat ';

lcc:=Chonmenu(10,2,60,11,15,10,9,td,' Chuong trinh quan ly sach ');

Case lcc of

1:{Tao danh sach}

Begin

ptm:=0;

Clrscr;

If fm<>nil then

Begin

yn:=Hluachon('Ban se ghi de len danh sach hien tai',' Ban co muon tiep tuc khong?');

If yn=1 then

Begin

fm:=Taods(nil,nil,ptm);

Dao(fm);

End;

End

Else

Begin

fm:=Taods(nil,nil,ptm);

Dao(fm);

End;

End;

2:{In danh sach}

Begin

td[1]:='1. Toan bo danh sach ';

td[2]:='2. Danh sach tim kiem gan nhat ';

td[3]:='3. In danh sach dang duyet lan luot ';

td[4]:='4. Quay tro lai ';

lc1:=Chonmenu(10,2,60,6,15,10,4,td,' In danh sach ');

Case lc1 of

1: Inx(fm,1,ptm);

2:Inx(ftk,1,pttk);

3:Iny(fm,1,ptm);

End;

End;

3:{Cap nhat}

Begin

Repeat

td[1]:=' 1. Them thong tin sach';

td[2]:=' 2. Sua doi thong tin sach';

td[3]:=' 3. Xoa thong tin sach ';

td[4]:=' 4. Quay tro lai';

lc1:=Chonmenu(10,2,60,6,15,10,4,td,'Cap nhat thong tin sach');

Case lc1 of

1:{Them sach}

Begin

td[1]:=' 1. Vao truoc ma sach ';

td[2]:=' 2. Vao sau ma sach ';

td[3]:=' 3. Vao vi tri ';

td[4]:=' 4. Quay tro lai';

lc2:=Chonmenu(10,2,60,6,15,10,4,td,'Cap nhat thong tin sach');

Case lc2 of

1:{Them truoc }

Begin

Clrscr;

Write('Bo sung vao truoc ma sach: ');

Readln(ms);

Bosung(fm,ms,'t');

End;

2:{Them sau}

Begin

Clrscr;

Write('Bo sung vao sau ma sach: ');

Readln(ms);

Bosung(fm,ms,'s');

End;

3:{Them tai vi tri}

Begin

Clrscr;

Write('Nhap vao vi tri muon them: ');

Readln(vt);

Bosungvt(fm,vt);

Readln;

End;

End;

End;

2:{Sua}

Begin

td[1]:='1. Theo dieu kien nhap vao';

td[2]:='2. Theo danh sach tim kiem';

td[3]:='3. Quay tro lai';

lc2:=Chonmenu(10,2,60,5,15,10,3,td,'Sua thong tin ');

Case lc2 of

1:{Theo dieu kien}

Begin

Menuts(ts[1],8,'Cap nhat theo dieu kien nhap ');

Menudk(ts[1],dk[1]);

Nhaptk(s,ts[1]);

Capnhatdk(s,ts[1],dk[1]);

End;

2:Capnhattk;

End;

End;

3:{Xoa}

Begin

td[1]:='1. Theo dieu kien nhap vao';

td[2]:='2. Theo danh sach tim kiem';

td[3]:='3. Quay tro lai';

lc2:=Chonmenu(10,2,60,5,15,10,3,td,'Sua thong tin ');

Case lc2 of

1:{Xoa theo dieu kien}

Begin

Menuts(ts[1],8,'Xoa thong tin sach');

Menudk(ts[1],dk[1]);

Nhaptk(s,ts[1]);

Xoatdk(fm,ptm,s,ts[1],dk[1]);

End;

2:{Xoa theo tim kiem}

Begin

Xoatk;

Hthongbao('','Da xoa xong!');

End;

End;

End;

End;

Until lc1=4;

End;

4:{Tim kiem}

Begin

Clrscr;

td[1]:='1. Tren toan bo danh sach';

td[2]:='2. Tren danh sach tim kiem gan nhat';

td[3]:='3. Quay tro lai';

lc1:=Chonmenu(10,2,60,5,15,10,3,td,'Tim kiem ');

Case lc1 of

1:{Tren toan bo danh sach}

Begin

Menuts(ts[1],8,'Tim kiem');

Menudk(ts[1],dk[1]);

Nhaptk(s,ts[1]);

If ts[1]<>8 then

Timkiem(s,ts[1],dk[1]);

End;

2:{Tren danh sach tim kiem}

Begin

If ftk=nil then Hthongbao('Danh sach tim kiem rong','')

Else

Begin

Menuts(ts[1],8,'Loc ra khoi danh sach');

Menudk(ts[1],dk[1]);

Nhaptk(s,ts[1]);

Xoatdk(ftk,pttk,s,ts[1],dk[1]);

Inx(ftk,1,pttk);

End;

End;

End;

End;

5:{Sap xep}

Begin

td[1]:='1. Sap xep theo 1 chi so';

td[2]:='2. Sap xep theo 2 chi so ';

td[3]:='3. Sap xep theo 3 chi so ';

td[4]:='4. Sap xep theo 4 chi so';

td[5]:='5. Sap xep theo 5 chi so';

td[6]:='6. Quay tro lai ';

lc1:=Chonmenu(10,2,60,8,15,10,6,td,' Sap xep ');

If lc1<6 then

Begin

tb[1]:='dau tien';

tb[2]:='thu hai';

tb[3]:='thu ba';

tb[4]:='thu tu';

tb[5]:='thu nam';

For i:=1 to lc1 do

Begin

Menuts(ts[i],8,'Truong sap xep '+tb[i]);

Menudktk(ts[i],dk[i]);

If ts[i]=8 then break;

End;

p:=fm;

While p^.next<>nil do

Begin

q:=p^.next;

r:=p;

While q<>nil do

Begin

If Sosanhn(r^,q^,lc1) then r:=q;

q:=q^.next;

End;

Thay(p^,r^);

p:=p^.next;

End;

End;

End;

6:{Doc}

Begin

ddtt:=Chontaptin('psd');

Doc(fm,ptm,ddtt);

Dao(fm);

End;

7:{Luu}

Begin

td[1]:=' 1. Luu toan bo danh sach';

td[2]:=' 2. Luu danh sach tim kiem';

td[3]:=' 3. Quay tro lai';

lc1:=Chonmenu(10,2,60,5,15,10,3,td,' Luu tap tin ');

Case lc1 of

1:{Luu toan bo danh sach}

Begin

ddtt:=Chonduongdan('');

Luu(fm,ddtt);

End;

2:{Luu danh sach tim kiem }

Begin

ddtt:=Chonduongdan('');

Luu(ftk,ddtt);

End;

End;

End;

8:{Gioi thieu}

Begin

Gioithieu;

End;

9:{Thoat}

Begin

yn:=Hluachon('','Ban co chac chan muon thoat khong ?');

If yn=1 then Halt;

End;

End;

Until False;

END.

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: