Vì chương trình lập trình trên ngôn ngữ C nên thuận lợi cho việc học tập, nghiên cứu về ngôn ngữ để thực hiện
• Tốc độ làm việc của chương trình tương đối nhanh, tìm kiếm thông tin dễ dàng, hiệu quả.
- Khó khăn:
• Kiến thức về ngôn ngữ C còn hạn chế nên việc lập trình chưa tối ưu
• Ngôn ngữ C không hỗ trợ kết nối database nên việc xây dựng dữ liệu cho từ điển còn nhiều hạn chế
• Ngôn ngữ C không hỗ trợ tạo giao diện trực quan nên giao diện chương trình chưa đẹp.
Từ những thuận lợi và khó khăn kể trên nên đề tài có những ưu và nhược điểm sau:
- Ưu điểm:
• Chương trình hỗ trợ học Tiếng Nhật tương đối dễ sử dụng (hầu như ai cũng có thể sử dụng được)
• Không tốn nhiều bộ nhớ của máy
• Có thể tra từ bằng cả Tiếng Việt lẫn Tiếng Nhật
• Có thể phát triển thành chương trình hỗ trợ tra từ điển của nhiều ngôn ngữ khác.
38 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4189 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Chương trình từ điển Việt - Nhật viết bằng lập trình C, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
Mục lục…………………………………………………………….trang 1
Bảng phân công công việc……………………………………...trang 2
Lời mở đầu………………………………………………………..trang 3
Phần 1 : Giới thiệu đề tài…………………..……………………trang 5
Phần 2 : Mục tiêu đạt được……………………………………..trang 6
Phần 3 : Nội dung đề tài
I. Một số tính năng của chương trình………………….trang 7
II. Tìm hiểu chương trình………………………………...trang 7
III. Code của chương trình……………………………….trang 8
IV. Chạy chương trình…………………………………….trang 32
Phần 4 : Kết luận
I. Kết luận………………………………………………....trang 35
II. Ý nghĩa thực tiễn………………………………………trang 35
III. Ưu nhược điểm………………………………………..trang 36
IV. Hướng phát triển………………………………………trang 37
Phần 5 : Tài liệu tham khảo……….........………………….......trang 38
BẢNG PHÂN CÔNG CÔNG VIỆC
Công việc
Thực hiện
Tìm tài liệu và tổng hợ thông tin
Cả nhóm
File PowerPoint
- Xuân Đức
- Tử Huân
File Word
Cả nhóm
Thiết kế trang bìa
Tuấn Vũ
Phân tích, nhập từ điển, ghi đĩa
- Tuấn Vũ
- Văn Hưng
Trình bày báo cáo
- Xuân Đức
- Tuấn Vũ
Hỗ trợ báo cáo
- Hoàng Vũ
- Quốc Việt
- Hoàng Thiệ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.
Ngôn ngữ lập trình là một loại công cụ giúp con người thể hiện các vấn đề của thực tế lên máy tính một cách hữu hiệu. Với sự phát triển của Tin học, các ngôn ngữ lập trình cũng dần tiến hóa để đáp ứng các thách thức mới của thực tế.
Khoảng cuối những năm 1960 đầu 1970 xuất hiện nhu cầu cần có các ngôn ngữ bậc cao để hỗ trợ cho những nhà Tin học trong việc xây dựng các phần mềm hệ thống, hệ điều hành. Ngôn ngữ C ra đời từ đó, nó đã được phát triển tại phòng thí nghiệm Bell. Đến năm 1978, giáo trình “Ngôn ngữ lập trình C” do chính các tác giả của ngôn ngữ là Dennish Ritchie và B.W.Kernighan viết, đã được xuất bản và phổ biến rộng rãi.
C là ngôn ngữ lập trình vạn năng. Ngoài việc C được dùng để viết hệ điều hành UNIX, người ta nhanh chóng nhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của Tin học. C không gắn với bất kì một hệ điều hành hay máy nào, và mặc dầu nó đã được gọi là “ngôn ngữ lập trình hệ thống” vì nó được dùng cho việc viết hệ điều hành, nó cũng tiện lợi cho cả việc viết các chương trình xử lí số, xử lí văn bản và cơ sở dữ liệu.
Sau một thời gian học môn Lập trình chuyên căn bản với ngôn ngữ C, chúng em đã hiểu được phần nào về phương pháp lập trình, nguyên lý hoạt động cũng như vai trò của ngôn ngữ C. Và để hiểu hơn về ngôn ngữ C, chúng em quyết định đi sâu tìm hiểu một ứng dụng của C, đó là một chương trình nhỏ gọn, tuy không mới nhưng lại rất có ích trong học tập cũng như làm việc: Từ điển Tiếng Nhật.
Từ điển tiếng Nhật có rất nhiều vấn đề nên chúng em quyết định chia đề tài ra làm bốn phần như sau :
+ Phần 1: Giới thiệu đề tài
+ Phần 2: Mục tiêu đạt được của đề tài
+ Phần 3: Nội dung đề tài
+ Phần 4: Kết luận
Qua đề tài này, chúng em được tìm hiểu sâu hơn về môn học và ứng dụng của ngôn ngữ lập trình C trong thực tế.
Trong quá trình thực hiện đề tài, tuy đã có nhiều cố gắng nhưng chắc chắn sẽ không tránh khỏi những sai sót. Chúng em rất mong nhận được sự góp ý của cô giáo và các bạn để kịp thời bổ sung, sữa chữa để đề tài hoàn thiện hơn.
Đà Nẵng, tháng 10/2010
Nhóm sinh viên thực hiện
PHẦN 1: GIỚI THIỆU ĐỀ TÀI
Như chúng ta đã biết, hiện nay nhu cầu giao tiếp bằng ngoại ngữ rất phổ biến trên thế giới. Việt Nam cũng không phải là ngoại lệ, nước ta đã và đang bước vào thời kì hội nhâp quốc tế nên ngoại ngữ ngày càng được sử dụng nhiều. Để đáp ứng được nhu cầu đó, mỗi chúng ta đã phải bỏ ra không ít công lao để học các ngoại ngữ phổ biến trên thế giới, trong đó có tiếng Nhật. Tiếng Nhật là một ngôn ngữ được hơn 130 triệu người sử dụng ở Nhật Bản và những cộng đồng dân di cư Nhật Bản khắp thế giới.
Việc học ngoại ngữ nói chung và học tiếng Nhật nói riêng là rất khó. Chính vì thế việc xây dựng một bộ từ điển ngôn ngữ là hết sức cần thiết. Nên đã có nhiều người sáng tạo ra một số phần mềm hỗ trợ chúng ta học dễ dàng và hiệu quả hơn. Có thể dựa trên nhiều cơ sở để sáng tạo ra chương trình hỗ trợ chúng ta. Trong đó, không thể không kể đến vai trò quan trọng và ứng dụng của ngôn ngữ C.
Dựa trên ngôn ngữ lập trình C, chương trình hỗ trợ học Tiếng Nhật “Từ điển Mini - Version 1” đã ra đời và đến nay đã phát triển lên phiên bản Version 4, giúp cho những ai học tiếng Nhật học tốt hơn. Đây là một sản phẩm viết ra trên dos với sự cố vấn của anh Hoàng Minh Hưng, trước đây là sinh viên trường Công Nghệ Thăng Long. Đây là tác phẩm đầu tay của anh Hưng khi học tiếng Nhật ở trường. Được sự đồng ý và hướng dẫn của anh Hưng, nhóm chúng em quyết định chọn tác phẩm của anh làm đề tài để nghiên cứu và phát triển.
PHẦN 2: MỤC TIÊU ĐẠT ĐƯỢC CỦA ĐỀ TÀI
Khi chọn thực hiện đề tài này chúng em đã xác định một số mục tiêu phải đạt được như sau:
Xây dựng một bộ từ điển tiếng Nhật với đầy đủ tính năng, tra từ nhanh chóng, có thể tra từ tiếng Nhật sang tiếng Việt và từ tiếng Việt sang tiếng Nhật.
Giao diện dễ sử dụng, dễ nhìn.
Thông qua chương trình nắm rõ về ngôn ngữ C, các tính năng cũng như phương pháp lập trình trên ngôn ngữ C và các ngôn ngữ khác.
Tìm hiểu các thuật toán ứng dụng để sau này có thể áp dụng vào các chương trình lớn hơn.
Mỗi chúng ta phải biết cách sử dụng chương trình, hiểu rõ được cấu trúc của chương trình, hiểu được các đoạn Code chương trình như thế nào, mỗi đoạn Code đó dùng để làm gì.
Hỗ trợ người học tiếng Nhật có thể học dễ dàng và hiệu quả hơn.
Qua đề tài này, 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 Nhật đó là từ điển Mini-Version 4.
PHẦN 3: NỘI DUNG ĐỀ TÀI
I. MỘT SỐ TÍNH NĂNG CỦA CHƯƠNG TRÌNH
Chương trình được chia làm 2 phần:
Dành cho Admin, người lập trình: Phần này là phần dành cho người phát triển chương trình có thể thao tác trên dữ liệu, thay đổi dữ liệu của chương trình. Người phát triển có thể thêm, sửa đổi hay cập nhật thêm thông tin,…
Dành cho người dùng: Phần này dành cho mọi người có thể sử dụng để tra từ, tìm kiếm,…có giao diện dễ nhìn, dễ sử dụng.
II. TÌM HIỂU CHƯƠNG TRÌNH
1. Một số thuật toán sử dụng trong chương trình
1.1. Xóa một phần tử:
- Tạo ra một tệp “temp.dat” làm tệp dịch của sự xáo trộn dữ liệu
- Copy dữ liệu từ tệp sang tệp trừ phần tử xác định loại bỏ.
- Copy ngược trở lại dữ liệu vào tệp "dictionary.dat"
1.2. Thêm vào một phần tử mới:
- Tạo một đối tượng character temp
- Nhập dữ liệu cho đối tượng đó
- Kiểm tra xem có trùng file hay không
- Nếu không trùng thì mở file có đuôi ios::app để ghi thêm vào
1.3. Chỉnh sửa đối tượng
- Đề nghị nhấp vào đối tượng cần chỉnh sửa
- Kiểm tra xem có phát hiện không, nếu không thì bỏ qua, nhập lại
- Nếu có phát hiện thì đổi hàm thêm phần tử
2. Các chế độ của chương trình
2.1. Chế độ thực hành, luyện tập
2.2. Quản lí tài nguyên
+ Quản lí từ khóa
- Thêm từ khóa
- Sửa từ khóa
- Bớt từ khóa
+ Backup thư viện từ khóa
+ Update thư viện từ khóa
+ Kết nối bạn bè
+ Thay đổi mật khẩu Admin
2.3. Exit
III. CODE CỦA CHƯƠNG TRÌNH
1. Khai báo thư viện
//=================Khai bao thu vien ==============
#include "character.h"
#include "administrator.h"
#include
#include
#include "helpNV.h"
#include "option.h"
#include "extradata.h"
#include "rocket.h"
#define tepbackup "backup.dat"
#define tepnguon "dictionary.dat"
#define tepnhap "temp.dat"
#define teptrunggian "temp1.dat"
#define tepupdate "C:\\Documents and Settings\\Administrator\\Desktop\\update.dat"
#define tepfriend "C:\\Documents and Settings\\Administrator\\Desktop\\friend.dat"
#define tepfriend2 "update.dat" //
2. Tìm kiếm một từ
//-------------------------- Tim kiem mot phan tu ------------------------------
template
bool seek_file(T a,int k=0)
{
int x=wherex(),y=wherey(); _setcursortype(0);
ifstream in(tepnguon,ios::binary);
if(!in)
{
gotoxy(32,18);
cout<<"Khong tim thay file du lieu nguon....";
gotoxy(x,y);
return false;
}
else
{
bool co=false;
character temp;
int vitri=17,dem=0;
if(k==0)
{
for(int i=vitri;i<49;i++)
{
gotoxy(1,i);
for(int run=0;run<28;run++)
cout<<" ";
gotoxy(30,i);
for(int run=30;run<80;run++)
cout<<" ";
}
}
while(in.read((char*)&temp,sizeof temp))
{
if(temp==a)
{
if(k==0)
{
gotoxy(1,vitri); //cout<<temp;
textcolor(15);
cprintf("%c ",4);
textcolor(14);
cprintf("%s",temp.get_name());
gotoxy(30,vitri);
textcolor(15);
cprintf("%c ",16);
textcolor(11);
cprintf("%s",temp.get_itmeans());
gotoxy(x,y);
vitri++;
dem++;
if(dem==30)
break;
}
co=true;
}
}
if(k==0&&co==false)
{
gotoxy(32,18);
textcolor(10);cprintf("%s"," Khong tim thay tu khoa nao trung ....");
}
gotoxy(x,y);
_setcursortype(2);
return co;
}
}
3. Tìm kiếm xác định duy nhất
//-------------------------------Tim kiem xac dinh duy nhat---------------------
bool seek_word(char a[])
{
int x=wherex(),y=wherey(); _setcursortype(0);
ifstream in(tepnguon,ios::binary);
if(!in)
{
gotoxy(32,18);
cout<<"Khong tim thay file du lieu nguon....";
gotoxy(x,y);
return false;
}
else
{
bool co=false;
character temp;
int vitri=17;
for(int i=vitri;i<49;i++)
{
gotoxy(1,i);
for(int run=0;run<28;run++)
cout<<" ";
gotoxy(30,i);
for(int run=30;run<80;run++)
cout<<" ";
}
while(in.read((char*)&temp,sizeof temp))
{
if(temp.check(a))
{
gotoxy(1,vitri); //cout<<temp;
textcolor(15);
cprintf("%c ",4);
textcolor(14);
cprintf("%s",temp.get_name());
gotoxy(30,vitri);
textcolor(15);
cprintf("%c ",16);
textcolor(11);
cprintf("%s",temp.get_itmeans());
gotoxy(x,y);
vitri++;
co=true;
}
}
if(co==false)
{
gotoxy(32,18);
textcolor(10);cprintf("%s"," Khong tim thay tu khoa nao trung ....");
}
/* for(int i=16;i<51;i++)
{
gotoxy(29,i);
textcolor(mau);cprintf("%c",char(-77));
} */
gotoxy(x,y);
_setcursortype(2);
getch();
return co;
}
}
4. Tìm kiếm bất kì
//-------------------------------Tim kiem bat ki-------------------------------
template
bool searchalltype(T a)
{ int x=wherex(),y=wherey();
ifstream in(tepnguon,ios::binary);
if(!in)
{
gotoxy(32,18);
cout<<"Khong tim thay file du lieu nguon....";
gotoxy(x,y);
return false;
}
else
{
bool co=false;
character temp;
int vitri=17,dem=0;
_setcursortype(0);
for(int i=vitri;i<49;i++)
{
gotoxy(1,i);
for(int run=0;run<28;run++)
cout<<" ";
gotoxy(30,i);
for(int run=30;run<80;run++)
cout<<" ";
}
while(in.read((char*)&temp,sizeof temp))
{
if(temp.checkall(a))
{
co=true;
gotoxy(1,vitri); //cout<<temp;
textcolor(15);
cprintf("%c ",4);
textcolor(14);
cprintf("%s",temp.get_name());
gotoxy(30,vitri);
textcolor(15);
cprintf("%c ",16);
textcolor(11);
cprintf("%s",temp.get_itmeans());
gotoxy(x,y);
vitri++;
dem++;
if(dem==30)
{
_setcursortype(0);
/* for(int i=16;i<51;i++)
{
gotoxy(29,i);
textcolor(mau);cprintf("%c",char(-77));
} */
int ch;
int w=wherex(),t=wherey();
gotoxy(30,47);
textcolor(15);
cprintf("%s","Press 'ESC' at anytime to turn back this menu !");
gotoxy(w,t);
ch=getch();
if(ch==27)
return co;
vitri=17;
for(int i=vitri;i<49;i++)
{
gotoxy(1,i);
for(int run=0;run<28;run++)
cout<<" ";
gotoxy(30,i);
for(int run=30;run<80;run++)
cout<<" ";
}
dem=0;
}
}
}
/* for(int i=16;i<51;i++)
{
gotoxy(29,i);
textcolor(mau);cprintf("%c",char(-77));
} */
if(co==false)
{
gotoxy(32,18);
textcolor(10);cprintf("%s"," Khong tim thay tu khoa nao trung ....");
}
gotoxy(30,47);
textcolor(15);
cprintf("%s","Press 'ESC' at anytime to turn back this menu !");
gotoxy(x,y); _setcursortype(2);
getch();
return co;
}
}
5. Hàm copy hai tệp dữ liệu
//----------------------------- Ham copy hai tep du lieu ----------------------
void copyright(char a[],char b[],character &c) // copy tu a sang b
{
ifstream in(b,ios::binary);
ofstream out(a,ios::binary);
if(!in)
return;
else
{
character temp;
while(in.read((char*)&temp,sizeof temp))
{
if(!(temp==c))
{
out.write((char*)& temp,sizeof temp);
}
}
in.close();
out.close();
6. Tạo ra file lưu trữ
//----------------------------- Tao ra file luu tru ----------------------------
void create_file(char a[]="No Name")
{
if(!strcmp(a,"No Name"))
{
}
else
{
ofstream out(a,ios::binary);
out.close();
}
}
7. Thêm dữ liệu vào
//------------------------------ Them vao mot du lieu --------------------------
void add_member()
{
ofstream in(tepnguon,ios::binary|ios::app);
if(!in)
{
clrscr();
cout<<"\n\n\n\t Khong tim thay file du lieu nguon....";
cout<<"\n\n Tu dong tao file du lieu nguon.....";
create_file(tepnguon);
}
else
{
char name[30],means[70];
while(1)
{
clrscr();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ENTER' with no character at anytime to turn back this menu !");
gotoxy(1,1);
cout<<"\n\n\n\n\t Nhap ten tu khoa : ";gets(name);
if(!name[0])
{in.close();return;}
ifstream ghi(tepnguon,ios::binary|ios::app);
if(!ghi)
{
cout<<"\n\n Khong the tim thay tep nguon";getch();return;
}
character temp; bool co=true;
while(ghi.read((char*)&temp,sizeof temp))
{
char tunhap[30]; strcpy(tunhap,name);
int tg=strlen(tunhap);
if(tunhap[tg-1]=='*')
{
tunhap[tg-1]='\0';
}
if(temp.check(tunhap))
{cout<<"\n\n Phat hien da co tu khoa trong thu vien..."; getch();co=false;break;}
}
ghi.close();
if(!co)
continue;
else
{
cout<<"\n\n\t Nhap vao nghia cua tu : ";gets(means);
character temp(name,means);
in.write((char*)&temp,sizeof temp);
}
}
}
}
8. Xóa đi một từ
//---------------------------- Xoa di mot phan tu ------------------------------
void earse(char a[]="stop")
{
char name[70]; int dem=0;
while(1)
{
clrscr();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ENTER' with no character at anytime to turn back this menu !");
gotoxy(1,1);
if(!strcmp(a,"stop"))
{
cout<<"\n\n\n \t Nhap vao tu khoa muon xoa bo ? ";gets(name);
if(!name[0])
dem++;
if(dem==2)
return;
}
else
strcpy(name,a);
if(!strcmp(name,"exit"))
return;
if(seek_file(name,1))
{
create_file(tepnhap);
character temp(name,"su dung de lam doi tuong nhap");
copyright(tepnhap,tepnguon,temp);
if(!rename(tepnguon,teptrunggian))
{
rename(tepnhap,tepnguon);
remove(teptrunggian);
cout<<"\n\n Xoa doi tuong thanh cong .....";
}
}
else
{
cout<<"\n\n Khong tim thay doi tuong can xoa...";
}
getch();
}
}
9. Đọc file đã ghi
//----------------------------- Doc file da ghi --------------------------------
int read_file(int k=-1,int n=0)
{
ifstream in(tepnguon,ios::binary);
if(!in)
cout<<"\n\n Khong lien ket duoc voi file nguon...";
else
{
character temp;
int dem=0,dem2=0; int ch;
while(in.read((char*)&temp,sizeof temp))
{
if(k==-1)
{
cout<<temp;
if(dem2==20)
{
int w=wherex(),t=wherey();
gotoxy(10,47);
textcolor(15);
cprintf("%s","Press 'ESC' at anytime to turn back this menu !");
gotoxy(w,t);
ch=getch();;if(int(ch)==27){in.close();break;}dem2=0;clrscr();
}
dem2++;
}
else
{
if(k==dem&&k!=-2)
{
clrscr();
gotoxy(15,40);
textcolor(15);
cprintf("%s","Press 'ESC' at anytime to turn back this menu !");
switch(n)
{
case 1:
{
gotoxy(32,15);
clreol();
cout<<temp.get_name();
break;
}
case 2:
{
gotoxy(32,15);clreol();
cout<<temp.get_itmeans();
break;
}
default :
{
int d=random(100);
if(d%2==0)
{
gotoxy(32,15);clreol();
cout<<temp.get_itmeans();
break;
}
else
{
gotoxy(32,15);clreol();
cout<<temp.get_name();
break;
}
}
}
int ch=getch();if(ch==27)return 0;
}
}
dem++;
if(dem==6)
dem=0;
}
in.close();return dem;
}
return 1;
}
10. Update dữ liệu
//---------------------------- Update du lieu ( trao doi ) ---------------------
void update()
{
clrscr();
ifstream in("update.dat",ios::binary);
if(!in)
{
in.open(tepupdate,ios::binary);
if(!in)
{
moc1:
clrscr();
cout<<"\n\n Chuong trinh khong the tu dong tim thay file..."<<endl;
cout<<"\n \t\t De nghi nhap vao duong linh ?";
char a[50];gets(a);
if(!a[0])
return;
in.open(a,ios::binary);
if(!in)
goto moc1;
}
}
ofstream out(tepnguon,ios::binary|ios::app);
character temp;
while(in.read((char*)& temp,sizeof temp))
{
if(!seek_file(temp,1))
out.write((char*)&temp,sizeof temp);
}
cout<<"\n\n Update thu vien thanh cong....";
in.close();
out.close();
getch();
}
11. Kết nối thư viện bạn bè
//----------------------------------- Ket noi thu vien ban be ------------------
void friend_file()
{
clrscr();
cout<<"\n\n\n\n\t Tao tep lien ket ra ngoai man hinh nen DESKTOP";
character temp("don't use this item","khong dung doi tuong nay");
create_file(tepfriend);
copyright(tepfriend,tepnguon,temp);
create_file(tepfriend2);
copyright(tepfriend2,tepnguon,temp);
cout<<"\n\n \t\t Tao file thanh cong......";
getch();
}
12. Backup dữ liệu
//------------------------------- Backup du lieu -------------------------------
void backup()
{
ifstream in(tepbackup,ios::binary);
if(in)
{
character temp("don't use this item","khong tu dung doi tuong nay");
copyright(tepnguon,tepbackup,temp);
cout<<"\n\n\n Backup du lieu thanh cong....";
}
else
{
cout<<"\n\n\n Khong the tim thay du lieu nguon......";
}
getch();
}
13. In ra menu chính
//--------------------------------- in ra menu chinh ---------------------------
void display_menu()
{
clrscr();
cout<<"\n\n\t\t\t ";
textcolor(15);
cprintf("%s","CT TRO GIUP HOC TIENG NHAT");
cout Ho tro";
cout<<"\n\n Moi chon muc quan ly du lieu :\n";
cout<<"\n\t\t 1, Che do thuc hanh, luyen tap.";
cout<<"\n\t\t 2, Quan ly chuong trinh.";
cout\n\n\n\t ";
int w=wherex(),t=wherey();
gotoxy(58,49);
cout<<"Designed by HOANG HUNG";
gotoxy(60,50);
cout<<"12/6/07 - Version 4";
gotoxy(w,t);
}
14. In ra menu quản lí chương trình
//---------------------------------- in ra menu quan ly chuong trinh -----------
void display1_menu()
{
clrscr();
cout<<"\n\n\n\t\t Moi chon muc quan ly chuong trinh \n";
cout\n";
cout\n";
cout<<"\n \t\t\t 3, Update thu vien tu khoa.\n";
cout<<"\n \t\t\t 4, Ket noi thu vien ban be.\n";
cout<<"\n \t\t\t 5, Thay doi mat khau Administrator.\n";
cout<<"\n \t\t\t 0, Quay tro lai.\n\n\t\t";
int w=wherex(),t=wherey();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ENTER' with no character at anytime to turn back this menu !");
gotoxy(w,t);
}
15. Chế độ thực hành, luyện tập
//-------------------------------- che do thuc hanh , luyen tap ----------------
void data1_menu()
{
while(1)
{
_setcursortype(0);
clrscr();
int w=wherex(),t=wherey();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ESC' at anytime to turn back this menu !");
gotoxy(w,t);
cout<<"\n\n Moi ban chon che do luyen tap ?\n\n\t\t 1, Tieng nhat\n\n\t\t 2, Tieng viet\n\n\t\t 3, Random \n\n\n\t\t";
w=wherex(),t=wherey();
int n;do{n=getch();cout<<char(n);if(n==8){gotoxy(w,t);clreol();}}while(n!=27&&n!=49&&n!=50&&n!=51);
if(n==27)
return;
switch(n)
{
case 49: n=1;break;
case 50: n=2;break;
case 51: n=3;break;
}
int ch;
randomize(); int k;
int sl=read_file(-2);
while(1)
{
ch=getch();
if(ch==27)
break;
else
{
k=random(sl);
if(!read_file(k,n))break;
}
}
16. Kiểm tra các file hiện tại
//-------------------------------kiem tra cac file hien tai---------------------
void check_file()
{
int x=wherex(),y=wherey();
ifstream in(tepnguon,ios::binary);
gotoxy(32,18);
if(!in)
cout<<"Khong tim thay file du lieu nguon....";
else
cout<<"Da tim thay file du lieu nguon ....";
clreol();
in.close();
in.open(tepbackup,ios::binary);
gotoxy(32,20);
if(!in)
cout<<"Khong tim thay file backup.dat ....";
else
cout<<"Da tim thay file backup.dat ....";
clreol();
in.close();
in.open(tepupdate,ios::binary);
gotoxy(32,22);
if(!in)
cout<<"Khong tim thay file update.dat ....";
else
cout<<"Da tim thay file update.dat ....";
clreol();
in.open("update.dat",ios::binary);
gotoxy(32,22);
if(!in)
cout<<"Khong tim thay file update.dat ....";
else
cout<<"Da tim thay file update.dat ....";
clreol();
in.close();
gotoxy(x,y);
}
17. Add hay remove từ khóa
//------------------------------- Add or remove tu khoa ------------------------
void AddRemove()
{
create_file(tepbackup);
character temp("don't use this object","khong su dung thang nay");
copyright(tepbackup,tepnguon,temp);
char n[30];
while(1)
{
clrscr();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ENTER' with no character at anytime to turn back this menu !");
gotoxy(1,1);
cout<<"\n\n\n Moi chon che do quan ly tu khoa \n";
cout<<"\n\t\t 1, Them tu khoa.\n";
cout<<"\n\t\t 2, Loai tu khoa.\n";
cout<<"\n\t\t 3, Quay tro ve.\n";
gets(n);
if(!strcmp(n,"exit")||!n[0])
return;
if(!strcmpi(n,"sap xep"))
{clrscr();
cout<<"\n\n Tu dong sap xep thu vien,,,,,\n\n Xin hay cho trong choc lat,,,\n\n Hanh dong nay co the se mat nhieu phut,,,,\n\n Lam on hay cho doi...";
arrange();
cout<<"\n\n OKKKKKKKKKK,,, sap xep thanh cong...";
getch();
continue;
}
switch(n[0])
{
case '1': add_member();continue;
case '2': earse();continue;
case '3': return;
}
}
}
18. Chế độ quản lí chương trình
//-------------------------------- che do quan ly chuong trinh -----------------
void data2_menu()
{
char n[30];
while(1)
{
clrscr();
gotoxy(10,40);
textcolor(15);
cprintf("%s","Press 'ENTER' with no character at anytime to turn back this menu !");
gotoxy(1,1);
display1_menu();
gets(n);
if(!strcmp(n,"exit")||!n[0])
return;
switch(n[0])
{
case '0':return;
case '1':if(power())AddRemove();continue;
case '2':if(power())backup();continue;
case '3':update();continue;
case '4':friend_file();continue;
case '5':power(1);continue;
default : continue;
}
}
}
19. Giao diện làm việc chính
//---------------------------------- giao dien lam viec chinh ------------------
int control_menu()
{
_setcursortype(0);
int z=wherex(),w=wherey();
randomize();
ifstream in(tepnguon,ios::binary);
if(!in)
{
gotoxy(25,18);
cout<<"Khong tim thay file du lieu nguon";
gotoxy(25,20);
cout<<"De nghi dua file vao cung thu vien";
gotoxy(25,22);
cout<<"Hoac vao muc THEM/BOT tu de tao moi";
gotoxy(z,w);getch(); clrscr();
}
in.close();
int mau;do{mau=random(16);}while(mau<10);
char n[70];
bool flag=true;
gotoxy(25,3);
displaytext("CT TRO GIUP HOC TIENG NHAT",1);
gotoxy(1,1);
while(1)
{ _setcursortype(2);
for(int i=17;i<49;i++)
{
gotoxy(1,i);
for(int run=0;run<28;run++)
cout<<" ";
gotoxy(30,i);
for(int run=30;run<80;run++)
cout<<" ";
}
if(flag)
{
clrscr();
display_menu();
int x=wherex(),y=wherey();
gotoxy(2,y);
textcolor(mau);
cprintf("%c",char(1));
textcolor(15);
cprintf("%s"," INPUT :");
gotoxy(1,13);
for(int i=0;i<80;i++)
{
textcolor(mau);cprintf("%c",char(-51));
}
gotoxy(1,15);
for(int i=0;i<80;i++)
{
textcolor(mau);cprintf("%s","_");
}
for(int i=16;i<51;i++)
{
gotoxy(29,i);
textcolor(mau);cprintf("%c",char(-77));
}
gotoxy(x,y);
flag=false;
}
else
{gotoxy(12,14);clreol();}
getschar(n,seek_file,mau);
if(!strcmpi(n,"exit"))
return 1;
if(!strcmpi(n,"xem thu vien"))
{clrscr();read_file();flag=true; continue;}
if(!strcmpi(n,"autokillpass"))
{remove("admin.dat");continue;}
if(!strcmpi(n,"help"))
{clrscr();help();flag=true;continue;}
if(!strcmpi(n,"thong tin tu khoa"))
{countmember();getch();continue;}
if(!strcmpi(n,"kiem tra file"))
{check_file();getch();continue;}
int dem=strlen(n);
if(n[dem-1]=='*')
{
n[dem-1]='\0';
searchalltype(n);
continue;
}
switch(n[0])
{
case '1':if(!n[1]){ data1_menu();flag=true;}break;
case '2':if(!n[1]){ data2_menu();flag=true;}break;
case '3':if(!n[1]) return 0;
default :
{
if(n[0])
seek_word(n);
gotoxy(12,14);
clreol();
break;
}
}
}
}
20. Chương trình chính
//==================Chuong trinh chinh ===================
void main()
{
textmode(C4350);
switch(control_menu())
{
case 0:displaystar();return;
default: auto_fire();return;
}
}
IV. CHẠY CHƯƠNG TRÌNH
Khi chạy file .exe của chương trình ta sẽ được chế độ làm việc chính của chương trình như hình sau:
Hình 1
Để tra từ, bạn nhập từ khóa (tiếng Việt hoặc tiếng Nhật) vào và xem nghĩa của từ khóa đó (tiếng Nhật hoặc tiếng Việt). Cột bên trái là phiên âm tiếng Nhật, cột bên phải là tiếng Việt:
Ví dụ: Nhập vào từ khóa “haru” (phiên âm tiếng Nhật) ta được nghĩa tiếng Việt của nó là “mùa xuân”:
Hình 2
Ngược lại, nếu ta nhập vào từ khóa “mua xuan” (mùa xuân) ta sẽ được phiên âm tiếng Nhật tương ứng là “haru”:
Hình 3
Trên Hình 1 ta có thể thấy các chế độ làm việc khác của chương trình:
a) Vào chế độ thực hành, luyện tập: Nhập vào số 1 rồi nhấn Enter:
Hình 4
Sau đó bạn chọn chế độ luyện tập tiếng Nhật (nhập vào 1) hoặc tiếng Việt (nhập vào 2).
b) Vào chế độ quản lí chương trình: Nhập vào số 2 rồi nhấn Enter:
PHẦN 4: KẾT LUẬN
I. KẾT LUẬN
Sau một thời gian nỗ lực nhóm 5 đã hoàn thành đề tài “Ứng dụng của ngôn ngữ lập trình C trong chương trình hỗ trợ học tiếng Nhật”. Tuy chưa thật hoàn chỉnh nhưng đề tài đã đáp ứng được đa số những mục tiêu đặt ra. Trong tương lai chúng em sẽ phát triển đề tài hoàn chỉnh hơn, đáp ứng được nhiều nhu cầu của xã hội.
Với những nỗ lực của nhóm 5, chúng em hy vong Cô giáo và các bạn sẽ đón nhận đề tài này và đóng góp ý kiến để đề tài được hoàn chỉnh hơn.
II. Ý NGHĨA THỰC TIỄN CỦA ĐỀ TÀI
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 Nhật. Đề 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 Nhật đó là từ điển mini-version 4.
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 Nhật 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 Anh, tiếng Trung, tiếng Anh chuyên ngành,…
III. ƯU, NHƯỢC ĐIỂM
- Thuận lợi:
Vì chương trình lập trình trên ngôn ngữ C nên thuận lợi cho việc học tập, nghiên cứu về ngôn ngữ để thực hiện
Tốc độ làm việc của chương trình tương đối nhanh, tìm kiếm thông tin dễ dàng, hiệu quả.
- Khó khăn:
Kiến thức về ngôn ngữ C còn hạn chế nên việc lập trình chưa tối ưu
Ngôn ngữ C không hỗ trợ kết nối database nên việc xây dựng dữ liệu cho từ điển còn nhiều hạn chế
Ngôn ngữ C không hỗ trợ tạo giao diện trực quan nên giao diện chương trình chưa đẹp.
Từ những thuận lợi và khó khăn kể trên nên đề tài có những ưu và nhược điểm sau:
- Ưu điểm:
Chương trình hỗ trợ học Tiếng Nhật tương đối dễ sử dụng (hầu như ai cũng có thể sử dụng được)
Không tốn nhiều bộ nhớ của máy
Có thể tra từ bằng cả Tiếng Việt lẫn Tiếng Nhật
Có thể phát triển thành chương trình hỗ trợ tra từ điển của nhiều ngôn ngữ khác.
- Nhược điểm:
Chương trình do tự cá nhân sáng tạo ra nên số lượng từ còn hạn chế và chưa đầy đủ
Nhiều đoạn code mang tính đồ họa nên còn nhiều người chưa hiểu rõ.
IV. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
Vì chương trình được lập trình trên ngôn ngữ C nên khó tránh khỏi những hạn chế về tính công nghệ. Chính vì thế, nếu muốn xây dựng từ điển thật hoàn hảo thì sau này cần nghiên cứu phát triển thêm:
Cần tổ chức thêm các mục từ điển khác như Anh, Hoa, chuyên ngành và một số ngôn ngữ khác.
Thêm phần phát âm cho người học có thể phát âm chuẩn
Phát triển lên các phiên bản cao hơn: Có thể chạy trên nền Web, cài đặt trên điện thoại để mọi người có thể sử dụng ở mọi lúc mọi nơi,…
PHẦN 5: TÀI LIỆU THAM KHẢO
1. Giáo trình “Ngôn ngữ lập trình C”, ThS. Tiêu Kim Cương, NXB Giáo dục, 2004.
2. Website: congdongcviet.com
Các file đính kèm theo tài liệu này:
- Chương trình từ điển Việt - Nhật viết bằng lập trình C.doc