Xây dựng phần mềm từ điển Anh Việt

Đề tài : Xây dựng phần mềm từ điển Anh – Việt 1.Đặt vấn đề : Xu hướng chung trên thế giới ngày nay là toàn cầu hoá. Việt nam một quốc gia kém phát triển trên thế giới muốn phát triển nền kinh tế để không lạc hậu so với thế giới thì không có con đường nào khác nhanh hơn con đường hội nhập vào nền kinh tế đang toàn cầu hoá. Một trong những công cụ quan trọng để cho một quốc gia có thể hội nhập vào nền kinh tế thế giới đó chính là trình độ ngoại ngữ của những người dân nước ấy. Đặc biệt là đối v

doc12 trang | Chia sẻ: huyen82 | Lượt xem: 1743 | Lượt tải: 0download
Tóm tắt tài liệu Xây dựng phần mềm từ điển Anh Việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ới sinh viên của nước ấy. Chính vì vậy việc học ngoại ngữ với sinh viên là vô cùng quan trọng. Trong các ngôn ngữ chính trên thế giới hiện nay thì tiếng Anh là phổ cập nhất. Để học tốt tiếng Anh thì không gì bằng một quyển từ điển tốt. Xuất phát từ nhu cầu thực tiễn đó nhóm lập trình Star Sofware Center của lớp CTM4-K45 ĐH BK HN đã xây dựng một chương trình từ điển Anh-Việt. Chương trình có một giao diện thân thiện cho phép người dùng dễ dàng tra cứu từ tiếng Anh , ngoài ra nó còn cho phép người dùng bổ xung từ tiếng Anh vào trong từ điển. 2.Cơ sở lí thuyết của đề tài : Việc xây dựng chương trình từ điển từ lâu đã được các công ty phần mềm trong và ngoài nước nghiên cứu thực hiện và họ cũng đã cho ra rất nhiều bộ từ điển ví dụ như : Lạc-Việt , just’click & see...Đây là 1 đề tài không phải là mới mẻ nhưng nó lại rất thu hút nhóm lập trình chúng em . Tuy là đi sau nhưng chúng em luôn luôn muốn phát huy hết những ý tưởng sáng tạo của mình để làm cho chương trình thực sự là 1 cuốn từ diển điện tử hữu ích và không thể thiếu cho mọi người. 3.Phương án giải quyết : Khi xây dựng chương trình từ điển này việc đầu tiên là giải quyết việc vấn đề lưu trữ từ và nghĩa của từ. 1 từ tiếng Anh thì đi kèm theo nó là rất nhiều nghĩa tiếng Việt , vì vậy em tổ chức lưu trữ những từ tiếng Anh ra 1 file,nghĩa tiếng Việt ra 1 file riêng. Từ tiếng Anh sẽ được lưu trong file “Td.idx” la file cua xâu chữ(String) còn nghĩa tiếng Việt sẽ được lưu trong file “Tudien.dat” là file của các bản ghi . Các bản ghi này gồm nhiều trường n,v,adj,vidu... để lưu trữ nghĩa Danh từ,Động từ,Tính Từ ,Ví dụ ...của từ tiếng Anh tương ứng.Việc tách ra làm 2 file này sẽ làm cho dung lượng file nhỏ đi và việc tìm kiếm sẽ nhanh hơn và dễ dàng hơn. Thuật toán chính của chương trình là việc truy nhập và tìm kiếm trong file lưu trữ từ. Khi người dùng nhập 1 từ bất kỳ việc tìm kiếm sẽ diễn ra . Chương trình sẽ truy nhập vào file lưu trữ từ tiếng Anh (Td.idx) và thủ tục “timtu(s)” tìm kiếm so sánh trong đó . Nếu từ đã nhập trùng với từ lưu trữ trong file thì chương trình sẽ ghi nhận vị trí của từ đó và kết thúc quá trình tìm kiếm.Tiếp theo chương trình sẽ truy nhập vào file lưu trữ nghĩa tiếng Việt(Tudien.dat),đặt con trỏ ngay tại vị trí vừa ghi nhận và thủ tục “intu(s)” sẽ in nghĩa tiếng việt ra màn hình. Nếu việc tìm kiếm thất bại (không tìm thấy từ cần tìm ) thì chương trình sẽ đưa ra thông báo là từ cần tìm chưa có trong từ điển . Ngoài việc tra cứu , chương trình còn cho phép người dùng bổ xung những từ chưa có vào trong từ điển bằng thư tục “Nhaptu”. Khi bạn muốn nhập một từ mới vào từ điển thì từ chương trình chính bạn nhấn F1. Chương trình sẽ hiện ra lời mời nhập từ vào. Khi nhập từ Tiếng Anh ,chương trình sẽ kiểm tra xem từ đó đã có chưa ,nếu từ đó đã có trong từ điển thì chương trình sẽ thông báo cho bạn biết về sự trùng lặp đó và đương nhiên bạn sẽ phải nhập từ khác .Sau khi nhập nghĩa tiếng Anh chương trình sẽ hướng dãn bạn nhập tiếp nghĩa bằng tiếng việt của từ tuỳ theo từ đó thuộc loại từ gì (danh từ, động từ…). Kết thúc nhập một từ có lời hỏi có sửa từ vừa nhập không nếu như trong quá trình nhập có sai xót thì chọn có (c) còn nếu không thì từ vừa nhập sẽ ghi vào từ điển. Quá trình nhập từ sẽ tiếp tục cho đến khi bạn nhập xâu rỗng và chương trình sẽ quay về chương trình chính. Để tối ưu hoá tốc độ truy nhập file , các file sẽ được mở ngay từ khi chương trình khởi động và sẽ đóng lại khi bạn thoátkhỏi chương trình.Việc mở file sẽ kèm theo thủ tục kiểm tra sự tồn tại của file.Nếu file không tồn tại chương trình sẽ báo lỗi và dừng lại. Ngoài ra trong chương trình còn bổ xung thêm mục about để giới thiệu về nhóm tác giả. Chương trình được thoát khỏi bằng phím Esc. Tuy nhiên vì vấn đề thời gian nên chương trình còn một số tồn tại chưa giải quyết được: - Chương trình không có phiên âm và phát âm của từ tiếng Anh - Giao diện chưa thật thân thiện. - Chương trình không thể chạy đồng thời cùng một lúc với các chương trình khác. 4.Xây dựng ,thực hiện phương án đề xuất : Chương trình được viết bằng công cụ chính là phiên bản Turbol Pascal 7.0 Chương trình như sau: Program Tu_Dien; Uses crt,graph,dos; Type mangtv= record N:string; V:string; ADJ:string; vd:string; end; mangta=string[16]; Const thu:array[0..6] of string[8] = ('Chu nhat','Thu Hai','Thu Ba','Thu Tu','Thu Nam','Thu Sau','Thu Bay'); VAR f:file of mangtv; f1 :file of mangta; ch:char; tv:mangtv; s,ta :mangta; vitri,gd,gm,x,y,i:integer; s1,s2:string; mofile:boolean; Procedure VietHoa(var s:mangta); {chuyển từ nhập vào thành chữ in Hoa trước xử lý} Var i:integer; begin for i:=1 to length(s) do s[i]:=upcase(s[i]); end; Function KiemTra(var ta:mangta):boolean; {Kiểm tra xem từ đã có chưa} var tg:mangta; ok:boolean; Begin kiemtra:=true;ok:=true;seek(f1,0); while (not eof(f1))and(ok=true) do begin read(f1,tg); if ta=tg then begin ok:=false; kiemtra:=false; end; end; end; Procedure nhaptu; {Nhập từ } Begin clrscr; if mofile=false then BEgin assign(f,'tudien.dat');{$I-}reset(f);{$I+}if IOResult0 then rewrite(f); assign(f1,'td.idx');{$I-}reset(f1);{$I+}if IOResult0 then rewrite(f1); mofile:=true; ENd; textcolor(7); repeat write('Nhap tu TIENG ANH : ');textcolor(14);readln(ta);textcolor(7); if (ta '') then Begin VietHoa(ta); if KiemTra(ta) then Begin writeln('Nhap nghia TIENG VIET : '); writeln('1. DANH TU (Neu co,neu khong co thi nhan ENTER): '); textcolor(13);readln(tv.n);textcolor(7); writeln('2. DONG TU (Neu co,neu khong co thi nhan ENTER): '); textcolor(13);readln(tv.v);textcolor(7); writeln('3. TINH TU (Neu co,neu khong co thi nhan ENTER): '); t textcolor(13);readln(tv.adj);textcolor(7); write('4. VI DU (Neu co,Hay Nhap Theo Mau : '); textcolor(14);Writeln('I Love You(Anh Yeu Em)'); textcolor(7); writeln('Neu khong co thi nhan ENTER): ');textcolor(13);readln(tv.vd);textcolor(7); Write('Ban co sua lai khong(C/K): ');readln(ch); if upcase(ch)'C' then Begin seek(f,filesize(f));write(f,tv); seek(f1,filesize(f1));write(f1,ta); End; End else Begin textcolor(4); Writeln('Tu Nay Da Co Trong Tu Dien,Moi Ban Nhap Tu Khac !'); textcolor(7); End; end; writeln('*=======*=======*========*======*======*=======*=======*====*'); until (ta='') ; writeln('Tong So Tu trong tu dien la : ',filesize(f1));delay(900); End; Procedure tach_xau(var xau,xau1,xau2:string); {Tách xâu ví dụ làm 2 phần tiếng Anh và tiếng Việt} var j:integer; Begin j:=0; repeat j:=j+1; if xau[j]='(' then begin xau1:=copy(xau,1,j-1); xau2:=copy(xau,j,length(xau)-j+1); if xau2[length(xau2)] ')' then xau2:=xau2+')'; end; until xau[j]='('; End; Procedure intu(var tg:mangtv); {in nghĩa tiếng Việt ra màn hình} Begin i:=0; if (tg.n '') then begin setcolor(12); outtextxy(91,250,'Danh tu(n):'); setcolor(14); outtextxy(200,250,tg.n);i:=i+26; end; if (tg.v '') then begin setcolor(12); outtextxy(91,250+i,'Dong tu(v):'); setcolor(14); outtextxy(200,250+i,tg.v);i:=i+26; end; if (tg.adj '') then begin setcolor(12); outtextxy(91,250+i,'Tinh tu(adj):'); setcolor(14); outtextxy(200,250+i,tg.adj);i:=i+26; end; if (tg.vd '') then begin setcolor(12); outtextxy(91,250+i,'ViDu:'); setcolor(14);Tach_xau(tg.vd,s1,s2); outtextxy(150,250+i,s1);i:=i+26; setcolor(14); outtextxy(150,250+i,s2); end; end; Procedure Timtu(var s:mangta); {Tìm kiếm từ} var ok:boolean; Begin if mofile=false then BEgin assign(f,'tudien.dat');{$I-}reset(f);{$I+}if IOResult0 then Begin cleardevice;outtextxy(100,100,'Khong tim thay file TUDIEN.DAT');readln;halt(1);end; assign(f1,'td.idx');{$I-}reset(f1);{$I+}if IOResult0 then Begin cleardevice;outtextxy(100,120,'Khong tim thay file TD.idx');readln;halt(1);end; mofile:=true; ENd; ok:=false;seek(f1,0); while (ok=false) and (not eof(f1)) do Begin read(f1,ta); if s=ta then begin vitri:=filepos(f1)-1; seek(f,vitri);read(f,tv);intu(tv); ok:=true; end; end; if ok=false then begin settextstyle(7,0,1);setcolor(14); outtextxy(92,260,'Xin Loi ! Tu Nay chua co trong tu dien !'); end; End; Procedure Giaodien; {Giao diện } Begin setlinestyle(0,$aaaa,3);setfillstyle(1,7); bar(60,90,550,430);setfillstyle(1,9); bar(90,220,520,410);setfillstyle(1,13); bar(90,140,300,170); settextstyle(3,0,4);setcolor(4); for i:=1 to 4 do outtextxy(330+(i-1)*2,110-(i-1)*1,'TD ANH-VIET'); settextstyle(3,0,1);setcolor(14); outtextxy(330,150,'STAR SOFWARE CENTER'); outtextxy(90,110,'TIENG ANH'); outtextxy(90,190,'TIENG VIET'); settextstyle(3,0,1);setcolor(14); outtextxy(60,460,'F1:');setcolor(15); outtextxy(100,460,'NHAP TU'); settextstyle(3,0,1);setcolor(14); outtextxy(220,460,'F2:');setcolor(15); outtextxy(250,460,'ABOUT SOFWARE'); settextstyle(3,0,1);setcolor(14); outtextxy(420,460,'ESC:');setcolor(15); outtextxy(465,460,'KET THUC'); settextstyle(2,0,8);setcolor(14); end; {----------Phần này dùng trình bầy phần ABOUT SOFWARE-------------} Procedure chu_chay; {chữ chạy} var j,k,m:integer; str:string; begin setfillstyle(1,0);settextstyle(4,0,6);setcolor(4); str:='ABOUT SOFWARE'; repeat for j:=1 to length(str) do begin sound(100*j+100); if (str[j] ' ') then for m:=620 downto textwidth('M')*j do begin if keypressed then begin nosound;exit;end else Begin bar(m,150,m+textwidth('M'),200); for k:=1 to 4 do outtextxy(m+(k-1)*2,150-(k-1)*1,str[j]);delay(1); end; end; nosound; end;delay(300); until keypressed; end; procedure About; var th,ngay,thang,nam:word; begin cleardevice; settextstyle(3,0,1);setcolor(14); getdate(nam,thang,ngay,th); outtextxy(80,100,'Hom Nay'); outtextxy(170,100,thu[th]);outtextxy(260,100,'Ngay');str(ngay,s); outtextxy(310,100,s); outtextxy(340,100,'Thang');str(thang,s); outtextxy(400,100,s);outtextxy(440,100,'Nam');str(nam,s); outtextxy(480,100,s);setcolor(7); outtextxy(80,300,'Day la phien ban dau tien nen khong tranh khoi sai xot ,'); outtextxy(50,320,'Mong cac ban thong cam va gop y them de phan mem ngay 1 '); outtextxy(50,340,'hoan thien hon.'); outtextxy(50,380,'Moi gop y xin gui ve :'); outtextxy(100,400,'Nhom STAR SOFWARE CENTER : CTM4 - K45 - DHBK HN '); outtextxy(100,420,'E-MAIL : PQH@.student.hut.com'); outtextxy(100,440,' NTA@.student.hut.com'); chu_chay; end; Procedure creatsound(h,t:word); {tạo âm thanh } begin sound(h);delay(t);nosound; end; Procedure nhackt; Begin Creatsound(967,300); Creatsound(861,300); Creatsound(767,300); Creatsound(575,900); delay(60); Creatsound(575,300); Creatsound(861,300); Creatsound(967,300); Creatsound(767,900); End; Procedure Ketthuc; {phần kết thúc } begin cleardevice; settextstyle(10,0,6);setcolor(4); for i:=1 to 4 do outtextxy(40+(i-1)*2,30-(i-1)*1,'TD ANH-VIET'); setfillstyle(1,9);setcolor(14); bar(30,150,600,230);settextstyle(7,0,4); outtextxy(40,170,'THANKS FOR YOUR SUPPORT !'); settextstyle(3,0,2);setcolor(13); outtextxy(400,300,'NHOM THUC HIEN :');setcolor(7); outtextxy(400,340,'Pham Quoc Huong'); outtextxy(400,360,'Nguyen The Anh'); outtextxy(400,380,'Nguyen Huu Dinh'); outtextxy(400,400,'Dang Van Phuc'); outtextxy(400,420,'Le Anh Tuan'); nhackt; end; Procedure tldh;{thiết lập đồ hoạ} begin gd:=detect; initgraph(gd,gm,'d:\Dos\tp\Bgi'); if graphresult grok then halt(1); end; {---------------------Chương trình chính-----------------------} BEGIN tldh; setcolor(4); textcolor(0); Giaodien;mofile:=false; repeat i:=0;s:=''; repeat setcolor(15); ch:=readkey;creatsound(800,10); if ch=#27{ESC} then Begin if mofile=true then begin close(f);close(f1);end; ketthuc;closegraph;halt(1); End; if (ch=#59){F1}then begin closegraph;nhaptu;tldh;cleardevice;giaodien;ch:=#0;s:='';end; if ch=#60{F2} then begin about;cleardevice;giaodien;s:='';end; if (ch in [#8,#32,#48..#57,#65..#90,#97..#122]) and (length(s)<16) then begin if ch#8 then begin s:=s+ch;outtextxy(91+i,140,ch);i:=i+13;end; if (ch=#8) and (length(s)0)then begin bar(91+i -textwidth('M'),140+textheight('H')+6,91+i,140); delete(s,length(s),1);i:=i-13;end; end; if length(s) =16 then if (ch=#8) and (length(s)0)then begin bar(91+i - textwidth('M'),140+textheight('H')+6,91+i,140); delete(s,length(s),1);i:=i-13;end; until (ch =#13) and (s''); settextstyle(3,0,1); VietHoa(s); timtu(s); ch:=readkey;setfillstyle(1,9); bar(90,220,520,410);setfillstyle(1,13); bar(90,140,300,170);settextstyle(2,0,8); until ch=#27; if mofile=true then begin close(f);close(f1); end; ketthuc; closegraph; END. 5.Đánh giá thử nghiệm các kết quả thu được : Chương trình chưa được tối ưu hoá về mặt tốc độ tìm kiếm từ.Các từ ghi trong file chưa được xắp xếp theo qui luật (có thể là Alphabet hoặc theo 1 qui luật nào đó tuỳ vào thuật toán tìm kiếm sao cho nhanh nhất).Vì vậy tốc độ tìm kiếm từ còn chậm. Dung lượng lưu trữ của trương trình tuỳ thuộc vào số lượng từ có trong từ điển.Số lượng từ càng nhiều thì dung lượng càng tăng.Nhưng ngày nay với các ổ đĩa có dung lượng rất lớn(từ 10Gb trở lên)thì dung lượng chương trình không đáng kể. 6.Các phương hướng phát triển tiếp theo : Trước tiên sẽ khắc phục những tồn tại chưa thể giải quyết được trong chương trình này.Bổ xung các tính năng còn thiếu,tăng tốc độ tìm kiếm từ, giảm nhỏ kích thước chương trình bằng cách nén file.... Khi có điều kiện sẽ tiếp tục phát triển chương trình thành một công cụ học tiếng Anh hữu ích hơn nữa. Chương trình không chỉ đơn thuần là từ điển nữa mà có bổ xung thêm các phần mới để cho việc học tiếng Anh trở nên dễ dàng hơn đối với mọi người. 7.Tài liệu tham khảo : Sách tin học đại cương, sách ngôn ngữ lập trình Pascal nâng cao, tạp trí PCWorld ._.

Các file đính kèm theo tài liệu này:

  • doc25232.doc
Tài liệu liên quan