Tải bản đầy đủ (.docx) (97 trang)

ĐỒ án môn học minh họa trực quan bằng giao diện đồ họa các thuật toán tìm thành phần liên thông của đồ thị duyệt đồ thị theo chiều rộng và theo chiều sâu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (979.2 KB, 97 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP. HỒ CHÍ MINH
KHOA CƠNG NGHỆ THƠNG TIN

ĐỒ ÁN MƠN HỌC

Minh họa trực quan bằng giao diện đồ họa các thuật tốn
Tìm thành phần liên thơng của đồ thị
Duyệt đồ thị theo chiều rộng và theo chiều sâu

Học phần: COMP170101 – Lý thuyết đồ thị và ứng dụng

Thành phố Hồ Chí Minh, ngày 24 tháng 10 năm 2021

TIEU LUAN MOI download :


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP. HỒ CHÍ MINH
KHOA CƠNG NGHỆ THƠNG TIN

ĐỒ ÁN MƠN HỌC

Minh họa trực quan bằng giao diện đồ họa các thuật tốn
Tìm thành phần liên thơng của đồ thị
Duyệt đồ thị theo chiều rộng và theo chiều sâu

Học phần: COMP170101 – Lý thuyết đồ thị và ứng dụng

Nhóm sinh viên thực hiện: I_Lalisa_4
Họ và tên : Nguyễn Phước Thịnh − 46.01.104.176


Họ và tên : Khổng Tín Hào − 46.01.104.048
Họ và tên : Nguyễn Huỳnh Thị Tuyết My − 46.01.104.109
Họ và tên : Dư Thị Như Quỳnh − 46.01.104.151
Giảng viên hướng dẫn: TS.Nguyễn Viết Hưng , ThS. Lương Trần Ngọc Triết

Thành phố Hồ Chí Minh, ngày 24 tháng 10 năm 2021

TIEU LUAN MOI download :


MỤC LỤC
MỞ ĐẦU.................................................................................................................................................... 6
1. Lý do chọn đề tài............................................................................................................................. 6
2. Mục tiêu nghiên cứu....................................................................................................................... 6
a. Đối tượng và phạm vi nghiên cứu:......................................................................................... 7
b. Phương pháp nghiên cứu.......................................................................................................... 7
c. Kết cấu của đề tài....................................................................................................................... 7
NỘI DUNG................................................................................................................................................ 8
CHƯƠNG 1: TỔNG QUAN VỀ 1 SỐ KIẾN THỨC CỦA LÝ THUYẾT ĐỒ THỊ..........8
1.1 Graph (đồ thị)........................................................................................................................... 8
1.2 Ma trận kề................................................................................................................................ 10
1.3 Thuật toán BFS ( Duyệt theo chiều rộng)........................................................................ 10
1.4 Thuật toán DFS ( Duyệt theo chiều sâu )......................................................................... 11
1.5. Đồ thị liên thông và các thành phần liên thơng............................................................. 11
CHƯƠNG 2: MƠ PHỎNG THUẬT TỐN BẰNG NGƠN NGỮ LẬP TRÌNH C#.......13
2.1 Thuật tốn BFS ( Duyệt theo chiều rộng)........................................................................ 13
2.2 Thuật toán DFS ( Duyệt theo chiều sâu )......................................................................... 14
2.3 Tìm thành phần liên thông.................................................................................................. 15
CHƯƠNG 3 : MINH HỌA TRỰC QUAN THUẬT TOÁN BẰNG GIAO DIỆN ĐỒ
HỌA 16

3.1 Thiết kế giao diện thông tin sản phẩm Thiết kế giao diện trang chủ........................ 16
CODE : sử dụng C# để thiết lập giao diện:............................................................................ 16
3.2 Thiết kế giao diện thông tin sản phẩm............................................................................. 21
CODE: sử dụng C# để thiết lập giao diện Thông Tin Sản Phẩm:..................................... 21
3.3 Thiết kế giao diện đồ thị và ma trận................................................................................. 22
CODE: dùng C# để thiết kế giao diện đồ thị và ma trận.................................................... 22
Giao diện đồ thị và ma trận sẽ bao gồm các chức năng:..................................................... 23
TỔNG KẾT............................................................................................................................................. 55
1. Kết quả sản phẩm......................................................................................................................... 55
2. Tự đánh giá.................................................................................................................................... 55
TÀI LIỆU THAM KHẢO.................................................................................................................... 56

TIEU LUAN MOI download :


THƠNG TIN THÀNH VIÊN NHĨM, PHÂN BỔ CƠNG VIỆC, TỰ ĐÁNH GIÁ
STT

1

2

3
4

DANH MỤC CÁC HÌNH ẢNH

TIEU LUAN MOI download :



Hình 1. Đồ thị........................................................................................................................................... 9
Hình 2. Đồ thị có hướng....................................................................................................................... 10
Hình 3. Đồ thị vơ hướng...................................................................................................................... 10
Hình 4. Đồ thị có hướng liên thơng................................................................................................... 13
Hình 5. Các thành phần liên thơng.................................................................................................... 13
Hình 6. Giao diện trang chủ................................................................................................................ 17
Hình 7. Giao diện thơng tin sản phẩm.............................................................................................. 22
Hình 8. Giao diện đồ thị....................................................................................................................... 23
Hình 9. Giao diện ma trận.................................................................................................................... 23

TIEU LUAN MOI download :


MỞ ĐẦU
1. Lý do chọn đề tài
Lý thuyết đồ thị là một ngành khoa học được phát triển từ lâu nhưng lại có nhiều ứng
dụng hiện đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm
đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Euler. Đồ thị được sử
dụng để giải các bài toán trong nhiều lĩnh lực khác nhau . Chẳng hạn , đồ thị có thể sử để
xác định mạch vòng trong vấn đề giải tích mạch điện. Đồ thị có trọng số trên các cạnh có
thể sử dụng để giải các bài tốn như: Tìm đường đi ngắn nhất giữa hai thành phố trong
mạnh giao thơng. Chúng ta cũng có thể sử dụng đồ thị để giải các bài toán về lập lịch ,
thời khoa biểu… Đặc biệt trong khoảng vài mươi năm trở lại đây, cùng với sự ra đời của
máy tính điện tử và sự phát triển nhanh chóng của tin học, lí thuyến đồ thị càng được
quan tâm đến nhiều hơn. Các thuật tốn trên đồ thị đã có nhiều ứng dụng trong nhiều lĩnh
vực khác nhau như: Mạng máy tính, Lí thuyết mã, Tối ưu hố,…
Chính vì thế nhóm em đã lựa chọn đề tài “ Minh họa trực quan bằng giao diện đồ họa các
thuật tốn tìm thành phần liên thông của đồ thị, duyệt đồ thị theo chiều rộng và theo chiều
sâu” để nghiên cứu, tìm hiểu tạo ra một giao diện trực quan giúp cho người dùng dễ tiếp
cận và sử dụng , hiểu hơn về các thuật tốn tìm đường đi duyệt theo chiều sâu (DFS) hay

duyệt theo chiều rộng (BFS) và tìm thành phần liên thông của của đồ thị.
2. Mục tiêu nghiên cứu
Mục tiêu của đồ án này nhằm giúp chúng em có được sự hiểu biết sâu hơn về các thuật
tốn tìm đường đi duyệt theo chiều sâu (DFS) hay duyệt theo chiều rộng (BFS) và tìm
thành phần liên thơng của của đồ thị. Đồng thời cũng tạo ra một giao diện trực quan để
giúp cho người dùng có hướng tiếp cận dễ dàng hơn cũng như có cách nhìn trực quan hơn
về các thuật toán này.

TIEU LUAN MOI download :


a. Đối tượng và phạm vi nghiên cứu:
Đối tượng nghiên cứu của đồ án này là :
- Thuật toán duyệt theo chiều sâu của đồ thị
- Thuật toán duyệt theo chiều rộng của đồ thị
- Thuật tốn tìm thành phần liên thông của đồ thị
- Thiết kế giao diện trực quan bằng ngơn ngữ lập trình
C# Phạm vi nghiên cứu là :
- Các khái niệm cơ bản , các thuật tốn nằm trong vùng kiến thức của mơn lý
thuyết đồ thị và ứng dụng.
-

Mơ tả thuật tốn và giao diện trực quan bằng ngơn ngữ lập trình C#.

b. Phương pháp nghiên cứu
Sử dụng phương pháp phân tích và tổng hợp để thực hiện đề tài nghiên cứu.

c. Kết cấu của đề tài
Nội dung bài tiểu luận được xây dựng gồm các phần sau:
Mở đầu

Chương 1: Tổng quan về 1 số kiến thức của lý thuyết đồ thị
Chương 2: Mô phỏng thuật tốn bằng ngơn ngữ lập trình C#
Chương 3: Minh họa trực quan thuật toán bằng giao diện đồ họa
Tổng kết
Tài liệu tham khảo

TIEU LUAN MOI download :


NỘI DUNG
CHƯƠNG 1: TỔNG QUAN VỀ 1 SỐ KIẾN THỨC CỦA
LÝ THUYẾT ĐỒ THỊ
1.1 Graph (đồ thị)
1.1.1 Định nghĩa
Đồ thị vô hướng G = (V, E) gồm:
- V là tập hợp khác rỗng mà các phần tử của nó gọi là đỉnh (vertex) của G.
- E là đa tập hợp gồm các cặp không sắp thứ tự của hai đỉnh. Mỗi phần tử của E được gọi
là một cạnh (edge) của G. Ký hiệu uv.

Hình 1. Đồ thị
1.1.2 Đồ thị có hướng
Đồ thị có hướng G =(V,E) gồm:
- V là tập hợp khác rỗng mà các phần tử của nó gọi là đỉnh của G.
- E là đa tập hợp gồm các cặp có sắp thứ tự của hai đỉnh. Mỗi phần tử của E được gọi là
một cung (cạnh) của G.
-Đồ thị có hướng khơng chứa các cạnh song song.

TIEU LUAN MOI download :



Hình 2. Đồ thị có hướng
1.1.3 Đồ thị vơ hướng
Đồ thị vô hướng G=(V,E) gồm:
- Tập hợp V ≠ ∅ được gọi là tập các đỉnh của đồ thị.
- Tập hợp E là tập các cạnh của đồ thị.
-Mỗi cạnh e ∈ E được liên kết với một cặp đỉnh {i, j} ⊆ X khơng phân biệt thứ tự.

Hình 3. Đồ thị vô hướng

TIEU LUAN MOI download :


1.2 Ma trận kề
Định nghĩa:
Giả sử G = (V, E) là một đơn đồ thị có số đỉnh là n. Ma trận kề là ma trận vuông A=aij cấp
n x n với n là số đỉnh của đồ thị. Trong đó: aij ={1 nếu i,j∈ E 0 nếu i,j∉E
Một số tính chất:
Đồ thị vơ hướng aij = aji (ma trận đối xứng qua đường chéo chính)
Đường chéo chính aii= 0 (do khơng có khun).

1.3 Thuật tốn BFS ( Duyệt theo chiều rộng)
Định nghĩa : Trong lý thuyết đồ thị , tìm kiếm theo chiều rộng (BFS) là một thuật tốn
tìm kiếm trong đồ thị trong đó việc tìm kiếm chỉ bao gồm 2 thao tác: (a) cho trước một
đỉnh của đồ thị; (b) thêm các đỉnh kề với đỉnh vừa cho vào danh sách có thể hướng tới
tiếp theo. Có thể sử dụng thuật tốn tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm
đường đi từ một đỉnh gốc cho trước tới một đỉnh đích, và tìm kiếm đường đi từ đỉnh gốc
tới tất cả các đỉnh khác.
Các bước duyệt đồ thị như sau:
Cho G là đồ thị liên thông với tập đỉnh {v1, v2, ..., vn}
Bước 1. Xuất phát từ 1 đỉnh cho trước nào đó.

Bước 2. Xử lý đỉnh này và đánh dấu để không xử lý lần sau.
Bước 3. Đưa tất cả các đỉnh kề với nó vào danh sách xử lý và lần lượt xử lý các đỉnh kề
với đỉnh đang xét
Bước 4. Quay lại Bước 2 cho đến khi khơng cịn đỉnh trong danh sách.
Cây T thu được là cây khung của đồ thị.

TIEU LUAN MOI download :


1.4 Thuật toán DFS ( Duyệt theo chiều sâu )
Định nghĩa: Tìm kiếm ưu tiên chiều sâu hay tìm kiếm theo chiều sâu( Depth-first search DFS) là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một đồ thị. Thuật toán khởi
đầu tại gốc (hoặc chọn một đỉnh nào đó coi như gốc) và phát triển xa nhất có thể theo mỗi
nhánh.
Thơng thường, DFS là một dạng tìm kiếm thơng tin khơng đầy đủ mà q trình tìm kiếm
được phát triển tới đỉnh con đầu tiên của nút đang tìm kiếm cho tới khi gặp được đỉnh cần
tìm hoặc tới một nút khơng có con. Khi đó giải thuật quay lui về đỉnh vừa mới tìm kiếm ở
bước trước. Trong dạng không đệ quy, tất cả các đỉnh chờ được phát triển được bổ sung
vào một ngăn xếp.
Các bước duyệt đồ thị như sau:
Cho G là đồ thị liên thông với tập đỉnh {v1, v2, ..., vn}
Bước 1: Xuất phát từ 1 đỉnh cho trước nào đó.
Bước 2: Xử lý đỉnh này và đánh dấu đã duyệt để không xử lý lần sau.
Bước 3: Đưa tất cả các đỉnh kề với nó vào danh sách xử lý và chọn 1 đỉnh để xử lý
tiếp theo.
Bước 4: Quay lại Bước 2 cho đến khi khơng cịn đỉnh trong danh sách.
Cây T thu được là cây khung của đồ thị.

1.5. Đồ thị liên thông và các thành phần liên thông
1.5.1 Đồ thị liên thơng
Định nghĩa: là đồ thị chỉ có 01 thành phần liên thơng, hay nói cách khác giữa 2 đỉnh bất

kỷ trong đồ thị ln có đường đi từ đỉnh này tới đỉnh kia (trực tiếp hay gián tiếp qua các
đỉnh trung gian).

TIEU LUAN MOI download :


Hình 4. Đồ thị có hướng liên thơng

1.5.2 Các thành phần liên thông: Một đồ thị không liên thông sẽ bao gồm nhiều đồ thị
con liên thông, các đồ thị con này được gọi là các thành phần liên thông (connected
component).
Đồ thị liên thơng khi và chỉ khi có một thành phần liên thơng.

Hình 5. Các thành phần liên thơng

TIEU LUAN MOI download :


CHƯƠNG 2: MƠ PHỎNG THUẬT TỐN BẰNG NGƠN NGỮ LẬP TRÌNH C#
2.1 Thuật tốn BFS ( Duyệt theo chiều rộng)
public void BFS(int s)
{
Queue<int> Q = new Queue<int>();
Q.Enqueue(s);
while (Q.Count > 0)
{
s = Q.Dequeue();
this.visited[s] = 1;
for (int i = 0; i < this.sodinh; i++)
if (this.visited[i] == 0 && this.a[s, i] != 0)

{
Q.Enqueue(i); this.LuuVet[i] = s;
}
}
}
public string duyetBFS(int s, int f)
{
string kq = "";
//Khởi tạo giá trị ban đầu, tất cả các địh chư đuợc duyệt và chưa lưu vết
for (int i = 0; i < this.sodinh; i++)
{
this.visited[i] = 0;
this.LuuVet[i] = -1;
}
//Gọi hàm BFS
BFS(s);
if (this.visited[f] == 1)
{
//In ket qua
int j = f;
while (j != s)
{
kq += Convert.ToString(j);
j = this.LuuVet[j];
}
kq += Convert.ToString(s);
}
else
kq = string.Empty;


TIEU LUAN MOI download :


return kq;
}
2.2 Thuật toán DFS ( Duyệt theo chiều sâu )
public void DFS(int s)
{
this.visited[s] = 1;
for (int i = 0; i < this.sodinh; i++)
if (this.visited[i] == 0 && this.a[s, i] != 0)
{
this.LuuVet[i] = s; //Lưu trước đỉnh i là đỉnh s
this.DFS(i);//gọi đệ quy tiến hành xét tiếp
}
}
public string duyetDFS(int s, int f)
{
string kq = "";
//Khởi tạo giá trị ban đầu, tất cả các địh chư đuợc duyệt và chưa lưu vết
for (int i = 0; i < this.sodinh; i++){
this.visited[i] = 0;
this.LuuVet[i] = -1;
}
//Gọi hàm DFS
this.DFS(s);
if (this.visited[f] == 1)
{
//In ket qua
int j = f;

while (j != s)
{
kq += Convert.ToString(j);
j = this.LuuVet[j];
}
kq += Convert.ToString(s);}
else{
kq = string.Empty;
}
return kq;
}

TIEU LUAN MOI download :


2.3 Tìm thành phần liên thơng
public void xetLT()
{
for (int i = 0; i < this.sodinh; i++)
this.visited[i] = 0;
/ đặt số miền liên thông ban đầu la 0
this.nTPLT = 0;
/ dùng một vịng for i để tìm đỉnh chưa xét, gọi hàm duyệt cho đỉnh này
for (int i = 0; i < this.sodinh; i++)
if (this.visited[i] == 0)
{
this.nTPLT++;
/ nSoMienLienThong là nhãn sẽ gán cho các đỉnh trong lần duyệt này
this.visitedLT(i, this.nTPLT);
}

}
public string[] thanhPhanLienThong()
{
xetLT();
string[] TPLT = new string[this.nTPLT + 1];
TPLT[0] = this.nTPLT.ToString();
for (int i = 1; i <= TPLT.Length; i++)
{
/ xét tất cả các đỉnh, nếu có nhãn trùng với nMienLienThong, in ra
for (int j = 0; j < this.sodinh; j++)
{
if (visited[j] == i)
{
TPLT[i] += j.ToString() + " ";
}
}
}
return TPLT;
}
}
}

TIEU LUAN MOI download :


CHƯƠNG 3 : MINH HỌA TRỰC QUAN THUẬT TOÁN
BẰNG GIAO DIỆN ĐỒ HỌA
3.1 Thiết kế giao diện thông tin sản phẩm Thiết kế giao diện trang chủ
Giao diện trang chủ sẽ bao gồm :
1. Hiển thị thông tin : về khoa, học phần , mã lớp và giảng viên hướng dẫn , logo Trường

Đại học Sư Phạm Thành Phố Hồ Chí Minh.
2. Hiển thị mục chức năng và Click chuột chọn chức năng người dùng cần (góc bên trái
hình 3.1.1) : + Đồ thị
+ Ma trận
+ Thông tin về sản phẩm

Hình 6. Giao diện trang chủ

CODE : sử dụng C# để thiết lập giao diện:
using System;
using System.Collections.Generic;
using System.ComponentModel;

TIEU LUAN MOI download :


using
using
using
using
using
using
using
using

System.Data;
System.Drawing;
System.Linq;
System.Runtime.InteropServices;
System.Text;

System.Threading.Tasks;
System.Windows.Forms;
FontAwesome.Sharp;

namespace LTDT_DoAnCuoiKi_Lalisa
{
public partial class Form1 : Form
{
//
private IconButton currentBtn;
private Panel leftBorderBtn;
private Form currentChildForm;
//constructor
public Form1()
{
InitializeComponent(); leftBorderBtn =
new Panel(); leftBorderBtn.Size = new
Size(7, 69);
panelMenu.Controls.Add(leftBorderBtn);
this.Text = string.Empty; this.ControlBox =
false; this.DoubleBuffered = true;
this.MaximizedBounds =
Screen.FromHandle(this.Handle).WorkingArea;
}
private struct RGBcolors
{
public static Color color1 = Color.FromArgb(172, 126,
241);
public static Color color2 = Color.FromArgb(249, 118,
176);

public static Color color3 = Color.FromArgb(253, 138,
114);
public static Color color4 = Color.FromArgb(95, 77,
221);
public static Color color5 = Color.FromArgb(249, 88,
115);

TIEU LUAN MOI download :


public static Color color6 = Color.FromArgb(24, 161,
251);
}
//methods
private void ActivateButton(object senderBtn, Color
color)
{
if (senderBtn != null)
{
DisableButton();
//button
currentBtn = (IconButton)senderBtn;
currentBtn.BackColor = Color.FromArgb(37, 36,
81);
currentBtn.ForeColor = color;
currentBtn.TextAlign =
ContentAlignment.MiddleCenter;
currentBtn.IconColor = color;
currentBtn.TextImageRelation =
TextImageRelation.TextBeforeImage;

currentBtn.ImageAlign =
ContentAlignment.MiddleRight;
//left border button
leftBorderBtn.BackColor = color;
leftBorderBtn.Location = new Point(0,
currentBtn.Location.Y);
leftBorderBtn.Visible = true;
leftBorderBtn.BringToFront();
//iconTittle
iconcurrentChildform.IconChar =
currentBtn.IconChar;
iconcurrentChildform.IconColor =
currentBtn.IconColor;
lblTittleChildForm.Text = currentBtn.Text;
}
}
private void openChildForm(Form childForm)
{
if (currentChildForm != null){
currentChildForm.Close();
}
currentChildForm = childForm;
childForm.TopLevel = false;

TIEU LUAN MOI download :


childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
pnlDesktop.Controls.Add(childForm); pnlDesktop.Tag =

childForm; childForm.BringToFront(); childForm.Show();
}
private void DisableButton(){
if (currentBtn != null)
{
currentBtn.BackColor = Color.FromArgb(31, 30,
68);
currentBtn.ForeColor = Color.Gainsboro;
currentBtn.TextAlign =
ContentAlignment.MiddleCenter;
currentBtn.IconColor = Color.Gainsboro;
currentBtn.TextImageRelation =
TextImageRelation.ImageBeforeText;
currentBtn.ImageAlign =
ContentAlignment.MiddleLeft;
leftBorderBtn.Visible = false;
iconcurrentChildform.IconChar = IconChar.Home;
lblTittleChildForm.Text = "Home";
iconcurrentChildform.IconColor =
Color.MediumPurple;
}
}
private void btnGraph_Click(object sender, EventArgs e){
ActivateButton(sender, RGBcolors.color1);
openChildForm(new FormGraph()); panelMenu.BorderStyle
= BorderStyle.FixedSingle;
}
private void btnMatrix_Click(object sender, EventArgs e){
ActivateButton(sender, RGBcolors.color2);
openChildForm(new FormMatrix()); panelMenu.BorderStyle

= BorderStyle.FixedSingle;
}
[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.DLL", EntryPoint = "SendMessage")]

TIEU LUAN MOI download :


private extern static void SendMessage(System.IntPtr
hWnd, int wMsg, int wParam, int lParam);
private void pnlTittle_MouseDown(object sender,
MouseEventArgs e){
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}
private void logoHCMUE_Click(object sender, EventArgs e)
{ if(currentChildForm != null){
currentChildForm.Close();
}
DisableButton();
}
private void btnClose_Click(object sender, EventArgs e){
Application.Exit();
}
private void btnZoom_Click(object sender, EventArgs e){ if
(WindowState == FormWindowState.Normal)
{
btnZoom.IconChar = IconChar.WindowRestore;
WindowState = FormWindowState.Maximized;

}
else{
btnZoom.IconChar =
IconChar.WindowMaximize; WindowState =
FormWindowState.Normal;
}
}
private void btnhide_Click(object sender, EventArgs e){
WindowState = FormWindowState.Minimized;
}
private void btnThongTin_Click(object sender, EventArgs
e){
ActivateButton(sender, RGBcolors.color3);
openChildForm(new ThongTinSanPham());
panelMenu.BorderStyle = BorderStyle.FixedSingle;
}
private void label1_Click(object sender, EventArgs e){

TIEU LUAN MOI download :


}private void label2_Click(object sender, EventArgs e){
}}}
3.2 Thiết kế giao diện thông tin sản phẩm
Từ giao diện trang chủ sau khi người dùng Click chuột chọn mục “ Thông tin sản phẩm”
một giao diện mới sẽ được hiển thị như hình 3.1.2 :

Hình 7. Giao diện thơng tin sản phẩm

CODE: sử dụng C# để thiết lập giao diện Thông Tin Sản Phẩm:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FontAwesome.Sharp;
namespace LTDT_DoAnCuoiKi_Lalisa{
public partial class ThongTinSanPham : Form
{
public ThongTinSanPham(){
InitializeComponent();
}}

TIEU LUAN MOI download :


}
3.3 Thiết kế giao diện đồ thị và ma trận
Từ giao diện trang chủ sau khi người dùng Click chuột chọn mục “ Đồ thị ” một giao diện
mới sẽ được hiển thị như hình 3.3.1 :

Hình 8. Giao diện đồ thị

Từ giao diện trang chủ sau khi người dùng Click chuột chọn mục “ Đồ thị ” một giao diện
mới sẽ được hiển thị như hình 3.3.2 :


Hình 9. Giao diện ma trận

TIEU LUAN MOI download :


CODE: dùng C# để thiết kế giao diện đồ thị
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FontAwesome.Sharp;
namespace LTDT_DoAnCuoiKi_Lalisa
{
public partial class FormGraph : Form
{
public FormGraph()
{
InitializeComponent();
rightBorderBtn = new Panel();
rightBorderBtn.Size = new Size(7, 37);
panelClickSukien.Controls.Add(rightBorderBtn);
}
private Color[] a =
{
Color.FromArgb(51, 255, 153),

Color.FromArgb(255, 255, 51),
Color.FromArgb(102, 255, 255),
Color.FromArgb(178, 102, 255),
Color.FromArgb(255, 102, 178),
Color.FromArgb(255, 153, 153),
};

Giao diện đồ thị sẽ bao gồm :
I. Chức năng vẽ đồ thị
Để vẽ được đồ thị chúng ta tiến hành thực hiện các mục dưới đây :
+ Chọn loại đồ thị bạn muốn vẽ : - Đồ thị có hướng

TIEU LUAN MOI download :


- Đồ thị vơ hướng
CODE
Tạo Ma Trận Có Hướng
private void TaolaiMaTranCH()
{
Matrix = new int[100, 100];
for (int i = 0; i < ListarrEgde.Count; i++)
{
Class_FS_Graph.Egde Eg = ListarrEgde[i]; for
(int j = 0; j < ListarrNod.Count; j++) {
for (int l = 0; l < ListarrNod.Count; l++)
{
Class_FS_Graph.NodeGraph Nod1 =
new Class_FS_Graph.NodeGraph();
Nod1.x = ListarrNod[j].x + 12;

Nod1.y = ListarrNod[j].y + 12;
Class_FS_Graph.NodeGraph Nod2 =
new
Class_FS_Graph.NodeGraph();
Nod2.x = ListarrNod[l].x + 12;
Nod2.y = ListarrNod[l].y + 12;
if (Eg.CheckMatrixCH(Nod1, Nod2))
{
Matrix[j, l] = 1;
}}}}}
Tạo Ma Trận Vô Hướng
private void TaolaiMaTranVH()
{
Matrix = new int[100, 100];
for (int i = 0; i < ListarrEgde.Count; i++)
{
Class_FS_Graph.Egde Eg = ListarrEgde[i]; for
(int j = 0; j < ListarrNod.Count; j++)
{
for (int l = j + 1; l < ListarrNod.Count; l+
+)
{

TIEU LUAN MOI download :


Class_FS_Graph.NodeGraph Nod1 =
new Class_FS_Graph.NodeGraph();
Nod1.x = ListarrNod[j].x + 12;
Nod1.y = ListarrNod[j].y + 12;

Class_FS_Graph.NodeGraph Nod2 =
new
Class_FS_Graph.NodeGraph();
Nod2.x = ListarrNod[l].x + 12;
Nod2.y = ListarrNod[l].y + 12;
if (Eg.CheckMatrixVH(Nod1, Nod2))
{
Matrix[j, l] = 1;
Matrix[l, j] = 1;}}}}}

Chọn loại chức năng :
-

Duyệt BFS

-

Duyệt DFS

-Xét liên thông
Nếu chức năng người dùng chọn là :
Xét Liên Thông giao diện sẽ hiển thị :

BFS hoặc DFS giao diện sẽ hiển thị:

CODE
Thay Đổi Text Button Duyệt Theo Chức Năng
private void comboBox2_SelectedValueChanged(object sender,
eventArgs e)
{



×