1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng từ điển anh việt và ngược lại

20 79 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 581,02 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngày nay, các sản phẩm phần mềm ra đời nhằm cung cấp các chương trình ứng dụng thực hiện trên các thiết bị điện tử như máy tính, các bộ điều khiển,… Điều này thực hiện được để đơn giản h

Trang 2

LỜI MỞ ĐẦU

Tin học là một ngành khoa học mũi nhọn phát triển hết sức nhanh chóng trong vài chục năm trở lại đây và ngày càng mở rộng lĩnh vực nghiên cứu, ứng dụng trong mọi mặt của đời sống xã hội Mà hơn tất cả đó là các phần mềm hữu dụng phục vụ các công việc thường ngày của con người Ngày nay, các sản phẩm phần mềm ra đời nhằm cung cấp các chương trình ứng dụng thực hiện trên các thiết bị điện tử như máy tính, các bộ điều khiển,… Điều này thực hiện được để đơn giản hoá các công đoạn trong hệ thống công việc

Do đó bọn em đã chọn đề tài:” Xây dựng từ điển Anh-Việt và ngược lại “ vì đó

là một đề tài thiết thực trong công việc học tập, giúp e có thể tự mình tạo ra một từ điển nhỏ phục vụ cho việc học tập

Nhóm 5

Trang 3

I HƯỚNG LÀM BÀI TẬP

1 Ý tưởng:

- Do đề bài yêu cầu 1 bộ từ điển có từ, nghĩa của từ, câu mẫu nên Chúng ta

sẽ xây dựng 1 cơ sở dữ liệu, trong đó sử dụng danh sách liên kết, mỗi 1 node sẽ bao gồm từ và nghĩa của từ

- Đồng thời, do chúng ta cần lưu lại sử dụng lại cơ sở dữ liệu nên ta cần phải lưu các từ ra 1 file txt để sử dụng

- Do từ điển cần phải thêm- update các từ, cũng như có thể có nhu cầu xóa, nên ta sẽ xây dựng 1 menu gồm:

+ Thêm từ

+ Tra từ

+ Xóa từ

+ Xem cà danh sách

2 Các thuật toán cần phải tìm hiểu

Để thực hiện các ý tưởng đặt ra, chúng ta cần phải tìm hiểu về các thuật toán sau:

+ Các thuật toán liên quan đến danh sách liên kết:

+ Các thuật toán liên quan đến xuất/nhập, in MENU ra màn hình chính + Các thuật toán liên quan đến xử lý file

1 Cấu trúc chương trình:

Chương trình bao gồm 1 file Header và 1 file cpp để thực hiện,

• File header sẽ bao gồm:

+ Các thuật toán liên quan đến danh sách liên kết

+ Các thuật toán liên quan đến xuất/ nhập, in ra Menu

+ Các thuật toán liên quan đến xử lý tệp

• File cpp sẽ bao gồm các hàm thực hiện

2 File header Hash_table.h

• Khai báo các thư viện cần dùng

#include<iostream>

#include<stdio.h>

#include<conio.h>

Trang 4

#include<ctype.h>

#include<fstream>

usingnamespace std;

2.1.1 Các thuật toán liên quan đến danh sách liên kết

• Lập danh sách liên kết:

typedefstructtagnode

{

char word[20];

char mean[100];

structtagnode*pNext;

}NODE;

typedefstructtagList

{

NODE* pHead;

NODE* pTail;

}LIST;

• Khởi tạo với danh sách rỗng:

void initList(LIST &l)

{

l.pHead= l.pTail = NULL;

}

• Tạo ra một phần tử chứa thông tin dữ liệu

NODE* GetNode(charword[],charmean[])

{

NODE *p;

p = newNODE;

if(p==NULL)

{

cout<<"Khong du bo nho";

Trang 5

return NULL;

}

strcpy(p->word,word);

strcpy(p->mean,mean);

p->pNext = NULL;

return p;

}

2.1.2 Các thuật toán chèn phần tử, thêm bớt phần tử, dùng để khai thác cơ sở

dữ liệu của mình:

• Chèn vào đầu:

void AddFirst(LIST &l,NODE* new_ele)

{

if(l.pHead==NULL)

{

l.pHead = new_ele;

l.pTail = l.pHead;

}

else

{

new_ele->pNext = l.pHead;

l.pHead = new_ele;

}

}

NODE* InsertHead(LIST &l,char word[],char mean[])

{

NODE* new_ele = GetNode(word,mean);

if(new_ele == NULL)

return NULL;

if(l.pHead == NULL)

{

l.pHead = new_ele;

l.pTail = l.pHead;

}

else

{

new_ele->pNext = l.pHead;

Trang 6

l.pHead = new_ele;

}

return new_ele;

}

• Chèn vào cuối:

void AddTail(LIST &l,NODE *new_ele)

{

if(l.pHead == NULL)

{

l.pHead = new_ele;

l.pTail = l.pHead;

}

else

{

l.pTail->pNext = new_ele;

l.pTail = new_ele;

}

}

NODE* InsertTail(LIST &l,char word[],char mean[])

{

NODE* new_ele = GetNode(word,mean);

if(new_ele == NULL)

return NULL;

if(l.pHead == NULL)

{

l.pHead = new_ele;

l.pTail = l.pHead;

}

else

{

l.pTail->pNext = new_ele;

l.pTail = new_ele;

}

return new_ele;

Trang 7

• Chèn vào sau một phần tử nào đó trong danh sách:

NODE* InsertAfter(LIST &l,NODE *q,char word[],charmean[])

{

NODE* new_ele = GetNode(word,mean);

if(new_ele ==NULL)

return NULL;

if(q!=NULL)

{

new_ele->pNext = q->pNext;

q->pNext = new_ele;

if(q==l.pTail)

l.pTail = new_ele;

}

else

AddFirst(l,new_ele);

}

• Tìm kiếm một phần tử trong danh sách :

NODE *Search(LIST l,charword[])

{

NODE *p;

p = l.pHead;

while((p!=NULL) && (strcmp(p->word,word)!=0))

p =p->pNext;

return p;

}

• Xóa phân tử:

int RemoveNode(LIST &l,char word[])

{

NODE *p = l.pHead;

Trang 8

NODE *q = NULL;

while(p!=NULL)

{

if(strcmp(p->word,word)==0)

break;

q = p;

p = p->pNext;

}

if(p==NULL)

return 0;

if(q!=NULL)

{

if(p == l.pTail)

l.pTail = q;

q->pNext = p->pNext;

delete p;

}

else

{

l.pHead = p->pNext;

if(l.pTail==NULL)

l.pTail = NULL;

}

return 1;

}

II.2.2 Các thuật toán liên quan đến xuất/ nhập, in ra Menu

• Duyệt danh sách:

void ProcessList(LISTl)

{

ofstream fg;

fg.open("output.txt",ios::app);

NODE *p;

int i = -1;

p = l.pHead;

Trang 9

while(p!= NULL)

{

cout <<"\""<<p->word<<"\"";fg <<"\""<< p->word <<"\"";

cout <<" nghia cua tu : ";fg <<" nghia cua tu :";

cout << p->mean;fg << p->mean;

cout << endl;fg << endl;

p = p->pNext;

}

fg.close();

}

 Như vậy, ta đã xây dựng danh sách liên kết chính của mình , với các cú pháp thêm, chèn dữ liệu, và cả duyệt danh sách Sau khi đã xây dựng xong, ta phải tiến hành khai thác danh sách liên kết để thực hiện chương trình

Trang 10

• Hàm băm:

int hashfunc(char word[])

{

char ch = toupper(word[0]);

return ((ch - 65)%M);

}

• Khởi tạo

void initbucket()

{

for(int i=0;i<M;i++)

initList(bucket[i]);

}

• Thêm 1 phần tử vào :

void Insert(NODE *p)

{

int i = hashfunc(p->word);

AddTail(bucket[i],p);

}

• Tìm kiếm 1 phần tử và trả về địa chỉ của nó :

NODE* Find(charword[]){

int i=hashfunc(word);

return (Search(bucket[i],word));

}

Bây giờ, ta sẽ bắt đầu xây dựng các hàm menu thực hiện

• Hàm thêm từ:

void MakeDictionary()

{

NODE*p;

Trang 11

char word[20];

char mean[100];

char c;

do

{

fflush(stdin);

cout <<"Nhap tu can tao:";gets(word);cout<<endl;

if(strcmp(word,"")==0)

break;

fflush(stdin);

cout <<"Nhap cac nghia cua tu:";gets(mean);cout <<endl;

p = GetNode(word,mean);

Insert(p);

fflush(stdin);

cout <<"Tiep tuc chu (y/ ):";c=getche();cout<<endl;

if(c!='y' && c!='Y')

break;

}while(true);

}

• Tra từ:

void FindWord()

{

NODE* p;

char word[20];

fflush(stdin);

cout <<"Nhap tu can tim :";gets(word);

p = Find(word);

if(p == NULL)

cout <<"Khong co tu nay trong tu dien"<<endl;

else

cout <<"Nghia cua tu :"<<p->mean<<endl;

return;

}

• Duyệt toàn bộ từ:

Trang 12

void DislayDictionary()

{

for(int i=0;i<M;i++)

ProcessList(bucket[i]);

}

• Xóa 1 từ:

int RemoveWord()

{

char word[20];

fflush(stdin);

cout <<"Nhap tu can huy: ";gets(word);fflush(stdin);cout <<endl;

int i = hashfunc(word);

return RemoveNode(bucket[i],word);

}

2.3.3 Các thuật toán liên quan đến xử lý tệp

bool ischar(charkitu)//kiem tra la chu cai

{

int temp;

temp = int(kitu);

if((temp>=65 && temp<=90)||(temp >=97 && temp<=122))

return true;

return false;

}

void MakeFromFile()

{

NODE*p;

char c;

int dem =0;

int i=0;int j=0;

char word[20];

char mean[100];

FILE*f;

f = fopen("data.txt","rt");

if(f==NULL)

Trang 13

printf("Khong mo duoc file");

exit(0);

}

while(!(feof(f)))

{

c = getc(f);

if(dem == 0)

{

if(!(ischar(c)) && c!='\n')

{

word[i]='\0';

dem=1;

}

else

word[i++] = c;

}

else

{

if(c!='\n')

{

mean[j++]=c;

}

else

{

mean[j] = '\0';

if(strlen(word)!=0 || strlen(mean)!=0)

{

p = GetNode(word,mean);

Insert(p);

}

dem = 0;i = 0;j=0;

//}

}

}

}

}

Trang 14

3 Chương trình chính gồm:

//Chuong trinh tu dien don gian theo phuong phap ket noi truc tiep

#include"Hash_table.h"

void main()

{

MakeFromFile();

char chon;

do

{

cout<<"\t\t -"<<endl; cout<<"\t\t- CHUONG TRINH TU DIEN DON GIAN -"<<endl; cout<<"\t\t- Cac chuc nang: -"<<endl; cout<<"\t\t- 1:Xay dung tu dien -"<<endl; cout<<"\t\t- 2:Tra tu -"<<endl; cout<<"\t\t- 3:Xem toan bo tu dien -"<<endl;

cout<<"\t\t- 4:Huy mot tu khoi tu dien -"<<endl; cout<<"\t\t- 0:Quit -"<<endl; cout<<"\t\t -"<<endl; chon = getche();

cout << endl;

switch(chon)

{

case '1':MakeDictionary();break;

case '2':FindWord();break;

case '3':DislayDictionary();break;

case '4':RemoveWord();break;

}

}while(chon!='0');

}

 Như vậy ta đã xây dựng xong bài code từ điển

4 Dữ liệu của Từ điển

Trang 15

Hiện tại, chúng em chỉ mới xây dựng hệ thống dữ liệu của từ điển mới được

60 từ gồm cả tiếng Anh lẫn tiếng việt Sau đây là danh sách những từ mà chúng em đã thêm vào :

- dog (N) Con cho Ex: I took the dog for a walk

- cat (N) Con meo Ex: My sister let the cat out of the bag

- spider (N) Con nhen Ex: Spider man is my favourite character

- snake (N) Con ran Ex: A snake coiled up in the grass

- sheep (N) Con cuu Ex: Sheep were grazing in the fields

- duck (N) Con vit Ex: Ducks were quacking noisily on the lake

- mosquito (N) Con muoi Ex:mosquitoes are dangerous insects

- pig (N) Con lon Ex:Pigs were grunting and squealing in the yard

- fish (N) Con ca Ex: The chef's fish dishes are his speciality

- go (V) di Ex: I go to school

- sit (V) ngoi Ex: She was sitting at her desk

- fly (V) bay Ex: the bird is flying in the sky

- listen (V) nghe Ex: I like to listen to music in the morning

- talk (V) noi chuyen Ex: Why won you talk to me ?

- study (V) hoc Ex: I study at HUST

- run (V) chay Ex: He runs very slowly

- kill (V) giet Ex: He killed his neighbor last night

- write (V) viet Ex: The teacher wrote the answers on the board

- cook (V) nau an Ex: He cooked lunch for me

- drive (V) lai xe Ex : Don't drive so fast !

- red (Adj) mau do Ex: My house is painted red

- yellow (Adj) mau vang Ex: Her has a yellow dress very beautiful

- blue (Adj) mau xanh Ex :Blue birds in the most prominent group

- black (Adj) mau den Ex: The future looks pretty black

- white (Adj) mau trang Ex: Her hair was as white as snow

- hour (Adv) gio Ex: The interview lasted half an hour

- minute (Adv) phut Ex: I enjoyed every minute of the party

- day (Adv) ngay Ex:I saw T three days ago

- week (Adv) tuan Ex: It rained all week

- month (Adv) thang Ex: We're moving house next month

- concho (N) dog Ex: Toi dat con cho di dao

- conmeo (N) cat Ex: chi toi nhac con meo ra khoi tui

- connhen (N) spider Ex: nguoi Nhen la nhan vat yeu thich cua toi

Trang 16

- conran (N) snake Ex: Mot con ran cuon tren bai co

- concuu (N) sheep Ex: Con cuu dang chan tha trong canh dong

- convit (N) duck Ex: Dam vit dang qua on ao tren ho

- conmuoi (N) mosquito Ex: Muoi la loai con trung nguy hiem

- conlon (N) pig Ex: Con lon dang ren ri va la het trong san

- conca (N) fish Ex: Nhung mon an ve ca là so truong cua anh ay

- di (V) go Ex: toi di den truong

- ngoi (V) sit Ex: Co dang ngoi o ban lam viec

- bay (V) fly Ex: Con chim bay tren bau troi

- nghe (V) listen Ex: toi thich nghe nhac vao buoi sang

- noichuyen (V) talk Ex: tai sao khong noi chuyen voi toi ?

- hoc (V) study Ex: Toi hoc tai HUST

- chay (V) run Ex: Anh ta chay rat cham

- giet (V) kill Ex: Anh ta giet nguoi hang xom cua minh vao toi qua

- viet (V) write Ex: Co giao viet cau tra loi len tren bang

- nauan (V) cook Ex: Anh ta da nau bua trua cho toi

- laixe (V) drived Ex: Dung lai xe qua nhanh!

- maudo (Adi) red Ex: Nha toi duoc son mau do

- mauvang (Adj) yellow Ex: Chiec vay mau vang cua co ay that dep

- mauxanh (Adj) blue Ex: Con chim xanh noi bat nhat trong nhom

- mauden (Adj) black Ex: Tuong lai kha den toi

- mautrang (Adj) mautrang Ex: Toc co ay trang nhu tuyet

- gio (Adv) hour Ex:Cuoc phong van ket thuc nua gio nua

- phut (Adv) minute Ex:Toi thich tung phut cua bua tiec

- ngay (Adv) day Ex: Toi da nhin thay T ba ngay truoc

- thang (Adv) month Ex: Chung toi se chuyen nha vao thang toi

- tuan (Adv) week Ex: Mua ca tuan

5 Chạy chương trình

Trang 17

Khi chạy Debug ta sẽ được chế độ làm việc của chương trình như sau:

5.1.1 Xây dựng từ điển

Để thêm từ và xây dựng hệ thống từ điển ta nhấn phím 1 , lúc đó bảng thêm từ sẽ hiện lên, chúng ta chỉ việc nhập từ cần thêm và nghĩa của nó vào , cuối dòng sẽ thông báo bạn có muốn tiếp tục việc thêm dữ liệu không, nếu có chúng ta ấn phím “y” nếu muốn thoát chúng ta ấn phím bất

kỳ :

Trang 18

5.1.2 Tra từ

- Ta nhấn phím 2 để vào cửa sổ tra từ (bao gồm cả tiếng anh lẫn tiếng việt), một cửa sổ sẽ xuất hiện:

− Chúng ta chỉ việc nhập từ cần tìm và nghĩa và câu mẫu của từ sẽ hiển thị ở phía dưới

5.1.3 Xem toàn bộ từ điển

Ta nhấn phím 3 để có thể xem được toàn bộ từ trong từ điển

Trang 19

5.1.4 Hủy một khối trong từ điển

Khi chúng ta nhập sai hoặc muốn xóa 1 từ trong từ điển thì chúng ta có thể nhấn phím 4 để vào mục xóa

III CÁC HẠN CHẾ, KHÓ KHĂN TRONG QUÁ TRÌNH LÀM BÀI.

• Trong bài làm của bọn em, có 1 số hạn chế như:

− Em đã nghĩ tới lập trình hướng đối tượng, tuy nhiên trong quá trình tìm hiểu, chúng ta vẫn phải sử dụng với danh sách liên kết mà làm phức tạp hơn khá nhiều Do trình độ code còn hạn chế nên e chưa code được theo lập trình hướng đối tượng, tuy nhiên chỉ sử dụng danh sach liên kết cũng đã có thể lập trình được bài này

− Không thể đưa câu mẫu xuống dòng được E đã thử thêm 1 char ex[100] ở Node dữ liệu, khi debug visual C báo break

− Khi nhập và tra từ điển Việt- Anh: nếu ký tự cần tìm có dấu cách thì sẽ không tìm được

• Theo em, hai lỗi trên là do xử lý file của bọn e chưa hoàn chỉnh, tuy nhiên bọn e chưa tìm được cách khắc phục tối ưu

IV KẾT LUẬN

Ngày đăng: 29/06/2019, 15:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w