Professional Documents
Culture Documents
VIỆN ĐIỆN
--------
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.
Nhóm 5
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
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<fstream>
using namespace std;
#define M 26
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:
NODE* pTail;
}LIST;
Khởi tạo với danh sách rỗng:
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:
}
else
{
new_ele->pNext = l.pHead;
l.pHead = new_ele;
}
return new_ele;
}
return new_ele;
}
new_ele->pNext = q->pNext;
q->pNext = new_ele;
if(q==l.pTail)
l.pTail = new_ele;
}
else
AddFirst(l,new_ele);
}
{
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;
}
2.2.2. Các thuật toán liên quan đến xuất/ nhập, in ra Menu
void ProcessList(LIST l)
{
ofstream fg;
fg.open("output.txt",ios::app);
NODE *p;
int i = -1;
p = l.pHead;
while(p!= NULL)
{
cout <<"\""<<p->word<<"\"";fg <<"\""<< p->word <<"\"";
cout << " nghia cua tu : ";fg << " nghia cua tu :";
cout << p->mean;fg << p->mean;
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.
Hàm băm:
Khởi tạo
void initbucket()
{
for(int i=0;i<M;i++)
initList(bucket[i]);
}
Bây giờ, ta sẽ bắt đầu xây dựng các hàm menu thực hiện
void MakeDictionary()
{
NODE*p;
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;
}
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(char kitu)//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)
{
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;
//}
}
}
}
}
//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;
- 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.
- 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.
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.
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.
Với đề tài chúng em chỉ mong giúp được tất cả mọi người một phần
nhỏ về việc học ngoại ngữ. Đặc biệt là tất cả các bạn học sinh, sinh viên
học tiếng Anh. Đề tài này cung cấp cho các bạn một chương trình từ
điển, giúp cho tất cả các bạn có một tài liệu học tập thật tốt. Qua đề tài
này chúng em muốn tất cả mọi người đều biết đến một phương tiện học
tâp thật tốt khi học tiếng Anh-Việt
Các đoạn Code ngôn ngữ C đã giúp hoàn thiện chương trình và hỗ trợ
cho mỗi người học được tiếng Anh tốt hơn. Ngoài ra, nó còn là cơ sở để
tạo ra các hệ thống từ điển khác: tiếng Trung, tiếng Anh chuyên ngành,…