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

tiểu luận đồ án môn học đề tài ứng dụng cấu trúc dictionary để tạo một bộ từ điển anh việt

30 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

HỒ CHÍ MINH UEHTRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾĐỒ ÁN MÔN HỌCĐỀ TÀIỨNG DỤNG CẤU TRÚC DICTIONARY ĐỂ TẠO MỘT BỘ TỪ ĐIỂN ANH - VIỆTHọc Phần: Cấu Trúc Dữ Liệu & Giải ThuậtDanh Sách Nhóm: 1.. LỜI

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠOĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH (UEH)

TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ

ĐỒ ÁN MÔN HỌCĐỀ TÀI

ỨNG DỤNG CẤU TRÚC DICTIONARY ĐỂ TẠO MỘT BỘ TỪ ĐIỂN ANH - VIỆTHọc Phần: Cấu Trúc Dữ Liệu & Giải ThuậtDanh Sách Nhóm:

1 MAI XUÂN NHÂN2 ĐỖ TRỌNG HIẾU

3 ĐOÀN HOÀNG LỢI NGUYÊN4 NGUYỄN VIỆT BẢO TRÂN

Khóa: K48

Giảng Viên: TS Đặng Ngọc Hoàng Thành

Tp Hồ Chí Minh, Ngày 12 tháng 12 năm 2023

Trang 2

LỜI MỞ ĐẦU

Trong thời đại của công nghệ thông tin ngày nay, cấu trúc dữ liệu và giải thuật đóng vaitrò quan trọng trong việc xử lý và tổ chức thông tin một cách hiệu quả Trong bộ môn"Cấu trúc dữ liệu và giải thuật", chúng ta được giới thiệu với nhiều cấu trúc dữ liệu phổbiến, mỗi cấu trúc mang đến những lợi ích và ứng dụng riêng biệt.

Trong bài báo cáo đồ án của nhóm, nhóm xin trình bày về một cấu trúc dữ liệu đặc biệt,đó là cấu trúc Dictionary, và ứng dụng của nó trong đề tài "Ứng dụng cấu trúc Dictionaryđể xây dựng từ điển Anh-Việt".

Cấu trúc Dictionary là một cấu trúc dữ liệu mạnh mẽ, cho phép lưu trữ các cặp khóa-giátrị Khác với các cấu trúc dữ liệu khác như mảng hay danh sách liên kết, Dictionary chophép truy xuất giá trị của một phần tử thông qua khóa tương ứng nhanh chóng, giúp tốiưu hóa thời gian truy vấn dữ liệu.

Trong đề tài của nhóm, nhóm sử dụng cấu trúc Dictionary để xây dựng từ điển Anh-Việt.Với sự hỗ trợ của cấu trúc này, nhóm có thể lưu trữ các từ tiếng Anh và tương ứng vớimỗi từ là nghĩa tiếng Việt tương ứng Điều này giúp nhóm tạo ra một công cụ hữu ích đểtra cứu từ vựng và dịch thuật một cách nhanh chóng và thuận tiện Ngoài ra, nhóm cònkết hợp ứng dụng Windows Forms vào để tạo nên một giao diện thu hút và dễ nhìn chongười dùng.

Nhóm hi vọng rằng bài báo cáo này sẽ trình bày một cách chi tiết và minh bạch về cấutrúc Dictionary và ứng dụng của nó trong đề tài "Ứng dụng cấu trúc Dictionary để xâydựng từ điển Anh-Việt"

Nhóm xin bày tỏ lòng biết ơn chân thành đến Thầy Đặng Ngọc Hoàng Thành vì sự tậntâm và sự dẫn dắt trong suốt quá trình giảng dạy Thầy đã dành thời gian và công sức đểtruyền đạt kiến thức về cấu trúc dữ liệu và giải thuật một cách chi tiết và rõ ràng.

nhóm cảm kích sự sẵn lòng của Thầy trong việc giải đáp những thắc mắc và hỗ trợ nhómtrong quá trình nghiên cứu và thực hiện đồ án Nhờ sự chỉ bảo và nhận xét từ Thầy, nhómđã học được nhiều kỹ năng mới và phát triển khả năng giải quyết vấn đề.

Cuối cùng, nhóm xin gửi lời chúc tốt đẹp nhất đến Thầy Đặng Ngọc Hoàng Thành ChúcThầy luôn có niềm vui và đam mê trong công việc giảng dạy, và tiếp tục truyền cảm hứngcho các sinh viên khác Xin cảm ơn Thầy vì những đóng góp quý báu và mong rằngnhóm sẽ có dịp học hỏi thêm từ Thầy trong tương lai.

Trang 3

Xin chân thành cảm ơn và kính chúc Thầy thật nhiều sức khỏe, niềm vui và thành côngtrong sự nghiệp giảng dạy.

Trang 4

MỤC LỤC

LỜI MỞ ĐẦU 1

MỤC LỤC 2

CHƯƠNG 1 CẤU TRÚC TỪ ĐIỂN 4

1.1 Các khái niệm liên quan 4

1.2 Cấu trúc và cài đặt Từ điển 4

1.3 Các thuật toán trên Từ điển 5

a) Thuật toán 1: 5

b) Thuật toán 2: 5

CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ LỚP 6

2.1 Phân tích bài toán Ứng dụng cấu trúc Dictionary để tạo ra 1 từ điển Anh-Việt 6

2.1.1 Các chức năng trong Từ điển: 6

2.1.2 Các tài nguyên cần thiết: 6

CHƯƠNG 3 THIẾT KẾ GIAO DIỆN 22

3.1 Giao diện menu chính 22

3.2 Chi tiết chức năng 22

CHƯƠNG 4 THẢO LUẬN & ĐÁNH GIÁ 24

4.1 Các kết quả nhận được 24

4.1.1 Giao diện khi khởi động chương trình 24

4.1.2 Tra nghĩa của từ vựng 24

4.1.3 Tra từ đồng nghĩa của từ vựng 25

4.1.4 Tra từ trái nghĩa của từ vựng 25

Too long to read onyour phone? Save to

read later on yourcomputer

Save to a Studylist

Trang 5

4.1.5 Thêm dữ liệu về từ vựng vào danh sách từ điển của bản thân 26

4.1.6 Xem danh sách từ điển của bản thân 27

Trang 6

CHƯƠNG 1 CẤU TRÚC TỪ ĐIỂN1.1 Các khái niệm liên quan

Dictionary trong C# là một Collections lưu trữ dữ liệu dưới dạng cặp Key - Value Keyđại diện cho một khoá giống như chỉ số phần tử của mảng và Value chính là giá trị tươngứng của khoá đó Ta sẽ dử dụng Key để truy cập đến Value tương ứng.

Dưới đây là một số thuộc tính và phương thức thông dụng trong Dictionary:Thuộc tính:

Count: Trả về một số nguyên là số phần tử hiện có trong Dictionary.Keys: Trả về một danh sách chứa các Key trong Dictionary.Values: Trả về một danh sách chứa các Value trong Dictionary.Phương thức:

Add(TKey Key, TValue Value): Thêm một cặp Key - Value vàoDictionary.

Clear(): Xoá tất cả các phần tử trong Dictionary.

ContainsKey(TKey Key): Kiểm tra đối tượng Key có tồn tại trong Dictionary hay không.

ContainsValue(TValue Value): Kiểm tra đối tượng Value có tồn tại trong Dictionary hay không.

Remove (TKey Key): Xoá đối tượng có Key xuất hiện đầu tiên trong Dictionary.

Do Dictionary là một Generic Collections nên để sử dụng ta cần thêm thưviện System.Collections.Generic bằng câu lệnh:

using System.Collections.Generic;

1.2 Cấu trúc và cài đặt Từ điển

Cấu trúc: Dictionary trong C# là một Collections lưu trữ dữ liệu dưới dạng cặp Key - Value Key đại diện cho một khoá giống như chỉ số phần tử của mảng và Value chính là giá trị tương ứng của khoá đó Các key phải là duy nhất và không được để trống Value có thể trùng lặp và có thể là giá trị null Các Value có thể được truy cập thông qua key của nó.

Trang 7

1.3 Các thuật toán trên Từ điển

return ((WordsDict.Words)base.InnerHashtable[Words]).ToString(); }

Trang 8

CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ LỚP2.1 Phân tích bài toán Ứng dụng cấu trúc Dictionary để tạo ra 1 từ điển Anh-Việt

2.1.1 Các chức năng trong Từ điển:

Ban đầu nhóm hình dung ra trong từ điển Anh-Việt mà nhóm muốn xây dựng có nhữngchức năng gì Sau khi thảo luận thì nhóm em thống nhất từ điển ấy sẽ có bốn chức năng:

a) Tra nghĩa từ vựng (Search)b) Tra từ đồng nghĩa của từ vựng (Syn)c) Tra từ trái nghĩa của từ vựng (Ant)

d) Tạo ra một danh sách những từ mà người dùng lưu lại (MyDict)

Hình 1 - Các chức năng trong từ điển

2.1.2 Các tài nguyên cần thiết:

Từ điều trên, nhóm đưa ra ý tưởng rằng sẽ cần một List và ba Dictionary để lưu trữ:a) List để lưu từ vựng cho comboBox

b) Một Dictionary để lưu nghĩa của từ vựngc) Một Dictionary để lưu từ đồng nghĩa của từ vựngd) Dictionary để lưu từ trái nghĩa của từ vựng

Trang 9

2.2.1 Lớp “WordsDict”:

Hình 3 - Lớp WordDictLớp nhỏ trong lớp “WordsDict”:

Hình 4 - Lớp Words

2.2.2 Lớp “Setup”:

Trang 10

Hình 5 - Lớp SetupLớp nhỏ trong lớp “Setup”:

Trang 11

{

public string Word { get set; ; } public string Meaning { get set; ; } publicWords(string word, string mean) {

Word = word; Meaning = mean; }

public override string ToString() {

return$"{Word}" + Environment.NewLine + $"{Meaning}"; }

Word = word; WordSyn = wordsyn; }

public override string ToString() {

return$"{Word}" + Environment.NewLine + $"{WordSyn}"; }

Word = word; WordAnt = wordant; }

public override string ToString() {

return$"{Word}" + Environment.NewLine + $"{WordAnt}"; }

}}

Trang 12

(if base.InnerHashtable.Contains(Words)) {

return ((WordsDict.Words)base.InnerHashtable[Words]).ToString(); }

public classDictSyn : DictionaryBase {

public void Add(string Words, WordsDict.WordsSyn Syn) {

base.InnerHashtable.Add(Words, Syn); }

public bool Contains(string Words) {

return base.InnerHashtable.Contains(Words); }

public string Item(string Words) {

(if base.InnerHashtable.Contains(Words)) {

return ((WordsDict.WordsSyn)base.InnerHashtable[Words]).ToString(); }

public classDictAnt : DictionaryBase {

public void Add(string Words, WordsDict.WordsAnt Ant) {

base.InnerHashtable.Add(Words, Ant); }

public bool Contains(string Words) {

return base.InnerHashtable.Contains(Words); }

public string Item(string Words) {

(if base.InnerHashtable.Contains(Words)) {

return ((WordsDict.WordsAnt)base.InnerHashtable[Words]).ToString(); }

2.3.4 Lớp “AllDict”:

Trang 13

* Trước hết phải có thư viện: using System.IO;internal classAllDict

public List<string> mylist = new List<string>(); public List<string> listdict = new List<string>(); public void LoadDataFromFile(string filePath) {

{

listdict.Add(parts[0].Trim().ToUpper()); }

n = 0; } } }

catch (Exception ex) {

MessageBox.Show("Lỗi: " + ex.Message); }

}

public Setup.Dict dict = new Setup.Dict(); public void LoadDataFromFileMean(string filePath) {

{

string[] parts = line.Split('='); string[] parts1 = line.Split('#'); (parts.Length == 2)if

temp += "-" + part1[i].Trim();

Trang 14

string[] part1 = parts1[0].Split('-'); (part1.Length == 4)if {

(part1[0].Trim().ToUpper() == word)if {

string temp = string.Empty; for int ( i = 1; i < part1.Length; i++) {

temp += "-" + part1[i].Trim(); }

listmean.Add(temp); }

}

}

else {

string[] part1 = line.Split('-'); (part1.Length == 4)if {

(part1[0].Trim().ToUpper() == word)if {

string temp = string.Empty; for int ( i = 1; i < part1.Length; i++) {

temp += "-" + part1[i].Trim(); }

listmean.Add(temp); }

(meaningsBuilder.Length > 0)if {

dict.Add(word, new Words(word, meaningsBuilder.ToString())); }

try {

string[] lines = File.ReadAllLines(filePath); foreach string ( word listdict)in {

List<string> listsyn = new List<string>();

Trang 15

foreach string ( line lines)in

{

string[] parts = line.Split('='); (parts.Length == 2)if {

string[] part1 = parts[0].Split('-'); (part1.Length == 4)if {

string[] part2 = parts[1].Split('#'); (part2.Length == 2)if {

(part1[0].Trim().ToUpper() == word)if {

string temp = string.Empty; temp = + part1[1] + "." "=" + part1[1]; listsyn.Add(temp); }

}

else {

(part1[0].Trim().ToUpper() == word)if {

string temp = string.Empty; temp = + part1[1] + "." "=" + parts[1]; listsyn.Add(temp); }

(synsBuilder.Length > 0)if {

dictsyn.Add(word, new WordsSyn(word, synsBuilder.ToString())); }

try {

string[] lines = File.ReadAllLines(filePath); foreach string ( word listdict)in {

List<string> listant = new List<string>(); StringBuilder antsBuilder = new StringBuilder(); foreach string ( line lines)in {

string[] parts = line.Split('#'); (parts.Length == 2)if {

Trang 16

(part1.Length == 4)if

{

(part1[0].Trim().ToUpper() == word)if {

string temp = string.Empty; temp = + part1[1] + "." "#" + parts[1]; listant.Add(temp); }

(antsBuilder.Length > 0)if {

dictant.Add(word, new WordsAnt(word, antsBuilder.ToString())); }

return dict.Item(inputKey); }

else {

return"Không có từ này"; }

return dictsyn.Item(inputKey); }

else {

return"Không có đồng nghĩa từ này"; }

return dictant.Item(inputKey); }

else {

return"Không có trái nghĩa từ này"; }

Trang 17

InitializeComponent(); allDict = new AllDict(); allDict.dict.Clear(); allDict.dictsyn.Clear(); allDict.dictant.Clear();

allDict.LoadDataFromFile(@"D:\Bài tập để nộp\dictfinal.txt"); allDict.LoadDataFromFileMean(@"D:\Bài tập để nộp\dictfinal.txt"); allDict.LoadDataFromFileSyn(@"D:\Bài tập để nộp\dictfinal.txt"); allDict.LoadDataFromFileAnt(@"D:\Bài tập để nộp\dictfinal.txt"); comboBox1.Items.Clear();

List<string> words = new List<string>(); words.Add("- Chào mừng đến với nhóm 3"); foreach string in ( a allDict.listdict) {

words.Add(a); }

comboBox1.DataSource = words; }

private void Search_Click(object sender, EventArgs e) {

richTextBox1.Text = string.Empty;

richTextBox1.Text = allDict.SearchWord(comboBox1.Text); }

private void Meaning_Click(object sender, EventArgs e) {

richTextBox1.Text = string.Empty;

richTextBox1.Text = allDict.SearchWord(comboBox1.Text); }

private void Syn_Click(object sender, EventArgs e) {

richTextBox1.Text = string.Empty;

richTextBox1.Text = allDict.SearchWordSyn(comboBox1.Text); }

private void Ant_Click(object sender, EventArgs e) {

richTextBox1.Text = string.Empty;

richTextBox1.Text = allDict.SearchWordAnt(comboBox1.Text); }

private void Add_Click(object sender, EventArgs e) {

(richTextBox1.Text != if string.Empty) {

string word = richTextBox1.Text; string worddict = comboBox1.Text; bool exists = allDict.mylist.Contains(word); bool existsdict = allDict.dict.Contains(worddict); (!exists && existsdict)if

Trang 18

allDict.mylist.Add(richTextBox1.Text); MessageBox.Show("Đã thêm từ vào danh sách!"); }

private void MyDict_Click(object sender, EventArgs e) {

richTextBox1.Text = string.Empty; foreach (var pair allDict.mylist)in

{

richTextBox1.Text += pair + Environment.NewLine; }

}}

Trang 19

CHƯƠNG 3 THIẾT KẾ GIAO DIỆN3.1 Giao diện menu chính

Hình 6 - Giao diện chính

3.2 Chi tiết chức năng

ComboBox “-Chào mừng đến với nhóm 3”: nơi nhập từ vựng mà người dùngmuốn tra cứu.

Button “Search”: khi click vào button này thì sẽ hiển thị nghĩa của từ vựng màngười dùng muốn tra cứu ở RichTextBox đang trống phía dưới.

Button “Syn”: khi click vào button này thì sẽ hiển thị những từ đồng nghĩa với từvựng mà người dùng muốn tra cứu ở RichTextBox đang trống phía dưới.

Button “Ant”: khi click vào button này thì sẽ hiển thị những từ trái nghĩa với từvựng mà người dùng muốn tra cứu ở RichTextBox đang trống phía dưới.

Button “Meaning”: tương tự với “Search” nhưng mục đích là để tiện hơn khichuyển qua lại giữa “Syn”, “Ant” và “Meaning”.

Trang 20

Button “Add”: khi click sẽ thêm phần hiển thị ở RichTextBox vào danh sáchnhững từ mà người dùng muốn lưu lại.

Button “MyDict”: khi click vào button này thì sẽ hiển thị những từ mà người dùngđã nhấn “Add”.

RichTextBox: nơi hiển thị những thông tin khi click các button.

Trang 21

CHƯƠNG 4 THẢO LUẬN & ĐÁNH GIÁ4.1 Các kết quả nhận được

4.1.1 Giao diện khi khởi động chương trình

Hình 7 - Giao diện khi khởi động chương trình

4.1.2 Tra nghĩa của từ vựng

Nhập từ vựng vào comboBox rồi ấn button “Search” hoặc “Meaning”.

Hình 8 - Tra nghĩa của từ vựng

Trang 22

4.1.3 Tra từ đồng nghĩa của từ vựng

Nhập từ vựng vào comboBox rồi ấn button “Syn”.

Hình 9 - Tra từ đồng nghĩa của từ vựng

4.1.4 Tra từ trái nghĩa của từ vựng

Nhập từ vựng vào comboBox rồi ấn button “Ant”.

Hình 10 - Tra từ trái nghĩa của từ vựng

Ngày đăng: 20/06/2024, 16:48

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

TÀI LIỆU LIÊN QUAN

w