You are on page 1of 7

Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Lêi nãi ®Çu

HiÖn nay trªn thÕ giíi C«ng NghÖ Th«ng Tin ®ang
ph¸t triÓn víi tèc ®é rÊt nhanh. C¸c øng dông cña nã ®·
th©m nhËp vµo hÇu hÕt c¸c lÜnh vùc Khoa Häc KÜ ThuËt
còng nh X· Héi. §èi víi nh÷ng níc ®ang ph¸t triÓn nh níc
ta cÇn ph¶i cã mét chÝnh s¸ch khuyÕn khÝch vµ ®Çu t
thÝch ®¸ng nÕu nh kh«ng muèn trë nªn tôt hËu. Chóng ta
®ang cã mét m¹ng líi th«ng tin ®îc coi lµ hiÖn ®¹i trªn
thÕ giíi nhng kh«ng ai trong chóng ta ch¾c ch¾n r»ng
trong mét vµi n¨m tíi nã sÏ kh«ng trë thµnh l¹c hËu, v× cã
thÓ thÊy c«ng nghÖ m¸y tÝnh c¶ phÇn cøng lÉn phÇn
mÒm ®ang thay ®æi tõng phót.

LËp tr×nh lµ mét trong c¸c c«ng viÖc ®Çu tiªn mµ


mét ngêi nghiªn cøu tin häc ph¶i lµm. Cho tíi nay ®· cã
rÊt nhiÒu ng«n ng÷ lËp tr×nh ra ®êi víi tÝnh n¨ng vµ t¸c
dông kh¸c nhau phï hîp víi tõng lÜnh vùc kh¸c nhau. Trong
®ã ph¶i kÓ ®Õn mét sè ng«n ng÷ nh: FORTRAN, ALGOL,
BASIC, C, PLOLOG. §èi víi ngêi míi häc tin häc th× PASCAL
lµ ng«n ng÷ lËp tr×nh thÝch hîp nhÊt, bëi v× nã lµ mét
ng«n ng÷ cã tÝnh cÊu tróc chÆt chÏ, s¸ng sña, cã thuËt
gi¶i m¹ch l¹c gÇn víi ng«n ng÷ logic b×nh thêng. MÆt
kh¸c hiÖn nay PASCAL trë thµnh mét trong c¸c ng«n ng÷
phæ biÕn nhÊt, thÝch hîp víi nhiÒu øng dông khoa häc,kÜ
thuËt,qu¶n lÝ.

Ch¬ng tr×nh “ Qu¶n lÝ sè ®iÖn tho¹i “ nµy ®îc viÕt


trªn ng«n ng÷ PASCAL tuy mét sè phÇn cËp nhËt cha
®Çy ®ñ nhng ®· thÓ hiÖn ®îc nhiÒu tÝnh n¨ng ®Æc
biÖt cña PASCAL víi cÊu tróc vµ thuËt to¸n s¸ng sña. Ch-
¬ng tr×nh cã tÝnh øng dông cao, dÔ sö ®èi víi mäi ngêi,
cã c¸c sö lÝ víi hÇu hÕt c¸c trêng hîp sÈy ra. §óng ra ®©y
ph¶i lµ mét ch¬ng tr×nh lín nhng do thêi gian h¹n hÑp
®ång thêi cÇn cã sù ®Çu t thêi gian cho phï hîp trong qu¸
tr×nh häc tËp nªn ch¬ng tr×nh kh«ng thÓ ch¸nh khái sai
sãt mong ®îc sù gãp ý cña thÇy c«.

Xin ch©n thµnh c¶m ¬n.

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -1-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Hµ Néi ngµy 15 th¸ng 11 n¨m


1998

Ch¬ng tr×nh qu¶n lÝ sè ®iÖn tho¹i

1. Sö dông trang m· trong qu¸ tr×nh tra cøu.


Trang m· ®îc x©y dùng kh¸ hoµn thiÖn víi ®Çy
®ñ c¸c tÝnh n¨ng, hoµn toµn cã thÓ thao t¸c b»ng
bµn phÝm hoÆc chuét.
2. Lu tr÷ tuÇn tù b»ng File kh«ng ®Þnh kiÓu.
Ch¬ng tr×nh ®ßi hái c¸c thao t¸c xen, xo¸, söa
sÈy ra liªn tôc v× vËy nªu sö dông b¶ng b¨m th×
thø nhÊt lµ sè phÇn tö trong mét tËp lµ cè ®Þnh
nªn nÕu dù tr÷ lîng lín mµ kh«ng dïng hÕt sÏ g©y
l·ng phÝ cßn nÕu sè phÇn tö kh«ng cè ®Þnh th×
cÇn sÕp l¹i File vµ chi phÝ thêi gian lµ lín h¬n lu
tr÷ tuÇn tù. Thø hai t×m kiÕm trªn b¶ng b¨m
kh«ng nhanh h¬n t×m kiÕm nhÞ ph©n.
3. T×m kiÕm nhÞ ph©n. Dùa vµo trêng kho¸ lµ sè
®iÖn tho¹i
4. C¸c thao t¸c xen, so¸, söa thao t¸c trùc tiÕp
víi File. ThuËt to¸n ng¾n gän thùc hiÖn víi thêi
gian ng¾n

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -2-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Mét sè module chÝnh

1. T×m kiÕm
procedure TimKiem(x:LongInt;var f:File;var
Vitri:Integer;var Ok:Boolean);
var q:BanGhi;
cantren,canduoi,t,j:Integer;
begin
Ok:=False;
Vitri:=0;
cantren:=FileSize(f);
canduoi:=0;
Repeat
Seek(f,(cantren+canduoi) div 2);
BlockRead(f,q,1,t);
IF t<>0 then
begin
IF q.sodt<x then
canduoi:=(cantren+canduoi) div 2
else IF q.sodt >x then
cantren:=(cantren+canduoi) div 2
else begin
Ok:=True;

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -3-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

break;
end;
end;
Until Ok or (cantren-canduoi < 100 );
IF not Ok then
begin
Seek(f,canduoi);
BlockRead(f,Buf,100,t);
For j:=0 to t do
IF Buf[j].sodt=x then
begin
Ok:=true;
Vitri:=canduoi+j;
Break;
end
else IF Buf[j].sodt>x then
begin
Vitri:=canduoi+j;
Break;
end
else Vitri:=cantren;
end;
end;

2. Xen
Procedure InsertRecord(var f:File;p:BanGhi;var
Ok:Boolean);
var Vitri,Nho1,Nho2,t,j,k:Integer;
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(p.sodt,f,Vitri,Ok);
IF not Ok then
begin
Seek(f,vitri);
BlockRead(f,Buf,1,t);
Seek(f,vitri);
BlockWrite(f,p,1);
Nho1:=Vitri+1;
Nho2:=Vitri+1;
Repeat
Seek(f,nho1);
BlockRead(f,Bufv,100,k);
Nho1:=Filepos(f);
Seek(f,nho2);
BlockWrite(f,Buf,t,j);

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -4-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Nho2:=Filepos(f);
Buf:=Bufv;
t:=k;
Until (j=0);
Ok:=True;
end
else
begin
Mgs(40,2,70,4,' Nhap trung so ');
Ok:=False;
end;
Close(f);
end;

3. So¸
Procedure DelRecord(var f:File;x:LongInt;var Ok:Boolean);
var nho1,nho2,k,j,vitri:Integer;
Buf:BufferType;{}
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(x,f,vitri,Ok);
IF Ok then
begin
nho1:=vitri+1;
nho2:=vitri;
Repeat
Seek(f,nho1);
BlockRead(f,Buf,100,k);
nho1:=Filepos(f);
Seek(f,nho2);
BlockWrite(f,Buf,k,j);
nho2:=FilePos(f);
Until k=0;
Seek(f,FileSize(f)-1);

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -5-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Truncate(f);
end
else
begin
Mgs(40,2,70,4,' So khong co trong danh muc
');
end;
Close(f);
end;

4. Söa
procedure ChangeRecord(var f:File;p:BanGhi;var
Ok:Boolean);
var vitri:Integer;
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(p.sodt,f,Vitri,Ok);
IF Ok then
begin
Seek(f,vitri);
BlockWrite(f,p,1);
end
else
begin
Mgs(40,2,70,4,' So khong co trong danh muc
');
Ok:=False;
end;

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -6-
Khoa C«ng NghÖ Th«ng Tin-§¹i Häc Quèc Gia Hµ Néi

Close(f);
end;

Tµi liÖu tham kh¶o:

1.Hç trî kÜ thuËt lËp tr×nh hÖ thèng - NguyÔn Lª TÝn

2.Turbo Pascal cÈm nang tra cøu - Qu¸ch TuÊn Ngäc

3.Ng«n ng÷ lËp tr×nh Pascal-Qu¸ch TuÊn Ngäc

Ch¬ng tr×nh Qu¶n LÝ Sè §iÖn Tho¹i


trang -7-

You might also like