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

Thông tin cơ bản

Tiêu đề Ứng dụng cấu trúc Dictionary để tạo một bộ từ điển anh - việt
Tác giả Mai Xuân Nhân, Đỗ Trọng Hiếu, Đoàn Hoàng Lợi Nguyên, Nguyễn Việt Bảo Trân
Người hướng dẫn TS. Đặng Ngọc Hoàng Thành
Trường học Đại Học Kinh Tế Tp. Hồ Chí Minh (UEH)
Chuyên ngành Cấu Trúc Dữ Liệu & Giải Thuật
Thể loại Đồ án môn học
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 30
Dung lượng 2,79 MB

Cấu trúc

  • CHƯƠNG 1. CẤU TRÚC TỪ ĐIỂN (6)
    • 1.1. Các khái niệm liên quan (6)
    • 1.2. Cấu trúc và cài đặt Từ điển (6)
    • 1.3. Các thuật toán trên Từ điển (7)
  • CHƯƠNG 2. PHÂN TÍCH VÀ THIẾT KẾ LỚP (8)
    • 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 (8)
      • 2.1.1. Các chức năng trong Từ điển (8)
      • 2.1.2. Các tài nguyên cần thiết (8)
      • 2.1.3. Nhập liệu (9)
      • 2.1.4. Tiến hành thực hiện (9)
    • 2.2. Sơ đồ lớp (9)
      • 2.2.1. Lớp “WordsDict” (9)
      • 2.2.2. Lớp “Setup” (9)
      • 2.2.2. Lớp “AllDict” (10)
    • 2.3. Cài đặt lớp (10)
      • 2.3.1. Lớp “WordsDict” (10)
      • 2.3.2. Lớp “Setup” (11)
      • 2.3.4. Lớp “AllDict” (12)
      • 2.3.3. Cài đặt ở Form.cs (17)
  • CHƯƠNG 3. THIẾT KẾ GIAO DIỆN (19)
    • 3.1. Giao diện menu chính (19)
    • 3.2. Chi tiết chức năng (19)
  • CHƯƠNG 4. THẢO LUẬN & ĐÁNH GIÁ (21)
    • 4.1. Các kết quả nhận được (21)
      • 4.1.1. Giao diện khi khởi động chương trình (21)
      • 4.1.2. Tra nghĩa của từ vựng (21)
      • 4.1.3. Tra từ đồng nghĩa của từ vựng (22)
      • 4.1.4. Tra từ trái nghĩa của từ vựng (22)
      • 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 (23)
      • 4.1.6. Xem danh sách từ điển của bản thân (24)
    • 4.2. Một số tồn tại (24)
    • 4.3. Hướng phát triển (24)
  • KẾT LUẬN (26)
  • PHỤ LỤC (27)
  • TÀI LIỆU THAM KHẢO (30)

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

CẤU TRÚC TỪ ĐIỂN

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:

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.

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

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;

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ó.

Cài đặt : public class : DictionaryBase

{ public void Add( Words, Meaning)

{ base.InnerHashtable.Add(Words, Meaning);

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

a) Thuật toán 1: public bool Contains(string Words)

{ return base.InnerHashtable.Contains(Words);

- Là thuật toán kiểm tra xem từ nhập vào có tồn tại trong từ điển không b) Thuật toán 2: public string Print(string Words)

(if base.InnerHashtable.Contains(Words))

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

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

- Là thuật toán kiểm tra xem từ nhập vào có trong từ điển không, nếu có thì in ra dữ liệu theo hàm ở trong class WordsDict

PHÂN TÍCH VÀ THIẾT KẾ LỚP

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

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ững chứ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ựng c) Một Dictionary để lưu từ đồng nghĩa của từ vựng d) Dictionary để lưu từ trái nghĩa của từ vựng

2.1.3 Nhập liệu: Để có dữ liệu đưa vào List và các Dictionary, nhóm đã tạo ra một từ điển ở Notepad với cú pháp như sau:

Từ_vựng-từ_loại-phát_âm-nghĩa=Các_từ_đồng_nghĩa#Các_từ_trái_nghĩa

Sau đó nhóm sử dụng các câu lệnh trong C# để có thể đưa các từ vựng vào List và cácDictionary theo đúng ý tưởng và cuối cùng là trình bày giao diện trên Winform.

Sơ đồ lớp

Nhóm đã chia chương trình thành 3 lớp, đó là “WordsDict”,”Setup” “AllDict” Trong lớp

“WordsDict”, nhóm tiếp tục chia thành ba lớp nhỏ là “Words”, “WordsSyn” và

“WordsAnt” Lớp “Setup” cũng tương tự vầy, chia thành 3 lớp nhỏ là “Dict”, “DictSyn” và “DictAnt” Tuy nhiên, các class nhỏ ấy có sơ đồ khối tương tự nhau nên em chỉ đưa ra

1 class nhỏ, cụ thể như sau:

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

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

Cài đặt lớp

2.3.1 Lớp “WordsDict”: internal class WordsDict

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

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

{ public string Word { get set; ; } public string WordSyn { get set; ; } publicWordsSyn(string word, string wordsyn)

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

{ public string Word { get set; ; } public string WordAnt { get set; ; } publicWordsAnt(string word, string wordant)

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

2.3.2 Lớp “Setup”: internal class Setup

{ public void Add(string Words, WordsDict.Words Meaning) { base.InnerHashtable.Add(Words, Meaning);

} public bool Contains(string Words)

{ return base.InnerHashtable.Contains(Words);

} public string Item(string Words)

(if base.InnerHashtable.Contains(Words))

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

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

{ 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(); } else

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

{ 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(); } else

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

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

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

{ string[] lines = File.ReadAllLines(filePath); n = 0;int foreach string ( line lines)in

(parts[0].Trim().ToUpper() == a.ToUpper())if { n++;

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

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

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

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

List listmean = new List(); StringBuilder meaningsBuilder = new StringBuilder(); foreach string ( line lines)in

{ string[] parts = line.Split('='); string[] parts1 = line.Split('#');

(part1[0].Trim().ToUpper() == word)if { string temp = string.Empty; for int ( i = 1; i < part1.Length; i++) { temp += "-" + part1[i].Trim();

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

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

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

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

} foreach string ( mean listmean)in

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

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

} public Setup.DictSyn dictsyn = new Setup.DictSyn(); public void LoadDataFromFileSyn(string filePath)

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

List listsyn = new List();

StringBuilder synsBuilder = new StringBuilder(); foreach string ( line lines)in

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

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

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

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

} foreach string ( mean listsyn)in

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

Console.WriteLine("Lỗi: " + ex.Message);

} public Setup.DictAnt dictant = new Setup.DictAnt(); public void LoadDataFromFileAnt(string filePath)

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

List listant = new List();

StringBuilder antsBuilder = new StringBuilder(); foreach string ( line lines)in

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

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

} foreach string ( mean listant)in

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

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

} public string SearchWord(string userInput)

{ string inputKey = userInput.Trim().ToUpper();

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

} public string SearchWordSyn(string userInput)

{ string inputKey = userInput.Trim().ToUpper();

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

} public string SearchWordAnt(string userInput)

{ string inputKey = userInput.Trim().ToUpper();

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

2.3.3 Cài đặt ở Form.cs: public partial class Form1 : Form

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

} 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);

{ allDict.mylist.Add(richTextBox1.Text);

MessageBox.Show("Đã thêm từ vào danh sách!");

MessageBox.Show("Từ này đã tồn tại trong danh sách hoặc không có nghĩa!"); }

} private void MyDict_Click(object sender, EventArgs e)

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

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

THIẾT KẾ GIAO DIỆN

Giao diện menu chính

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ùng muố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 khi chuyển qua lại giữa “Syn”, “Ant” và “Meaning”.

Button “Add”: khi click sẽ thêm phần hiển thị ở RichTextBox vào danh sách nhữ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.

THẢO LUẬN & ĐÁNH GIÁ

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

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

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

Phải có dữ liệu của từ vựng muốn thêm ở RichTextBox và sau đó ấn button “Add”.

Hình 11 - Thêm từ vựng vào danh sách cá nhân

Hình 12 - Trường hợp từ vựng đã được thêm trước đó

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

Nhấn vào button “MyDict” để xem danh sách cá nhân.

Hình 13 - Xem danh sách cá nhân

Một số tồn tại

a) Khi phóng to, thu nhỏ màn hình Form thì các control bên trong không thay đổi size (kích thước các control không phù hợp khi Form thay đổi). b) Khi nhấn vào các button thì chưa nổi bật (nghĩa là khi ấn 1 button nào đó thì nên có một dấu hiệu để cho người sử dụng biết rằng mình đang sử dụng chức năng của button đó). c) Vốn từ vựng còn khá khiêm tốn do không có nhiều thời gian nhập liệu d) Chưa có những ví dụ về cách sử dụng của từ vựng. e) Chưa có khả năng phát âm từ vựng.

Hướng phát triển

a) Tìm hiểu sâu về cách neo control, các Event để làm thay đổi size của control khi Form thay đổi để khắc phục tồn tại thứ nhất. b) Tìm hiểu cách thay đổi màu button khi click button ấy. c) Cần thêm thời gian để sưu tầm và chắt lọc nhiều từ vựng hơn. d) Có thể sẽ tạo ra thêm một từ điển chứa từ vựng ở trong từ điển ban đầu để làm nguồn Hoặc thêm ví dụ vào ngay dòng từ vựng của từ điển ban đầu. e) Cần thời gian lưu trữ lại các phát âm của từng từ vựng và chèn vào chúng.

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

HÌNH ẢNH LIÊN QUAN

Hình 1 - Các chức năng trong từ điển - 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
Hình 1 Các chức năng trong từ điển (Trang 8)
2.2. Sơ đồ lớp - 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
2.2. Sơ đồ lớp (Trang 9)
Hình 2 - Từ điển ở Notepad - 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
Hình 2 Từ điển ở Notepad (Trang 9)
Hình 6 - Lớp Dict - 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
Hình 6 Lớp Dict (Trang 10)
Hình 14 - Đưa mã nguồn trên GitHub về ứng dụng - 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
Hình 14 Đưa mã nguồn trên GitHub về ứng dụng (Trang 27)
Hình 16 - Hiện các file code vừa lưu trong máy Bước 6: Sau đó chọn tệp bên dưới là đã có tất cả code của bài. - 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
Hình 16 Hiện các file code vừa lưu trong máy Bước 6: Sau đó chọn tệp bên dưới là đã có tất cả code của bài (Trang 28)
Hình 17 - File code chính của cả bài - 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
Hình 17 File code chính của cả bài (Trang 29)
Hình 18 - Thay thế “link_file_từ_điển” thành link trong máy tính cá nhân - 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
Hình 18 Thay thế “link_file_từ_điển” thành link trong máy tính cá nhân (Trang 29)

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

TÀI LIỆU LIÊN QUAN

w