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

Xây dựng ứng dụng quản lý sinh viên và tìm kiếm bằng cây avl

44 2 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 đề Xây Dựng Ứng Dụng Quản Lý Sinh Viên Và Tìm Kiếm Bằng Cây AVL
Tác giả Châu Nguyễn Trường An
Người hướng dẫn GVHD: Nguyễn Thanh Tùng
Trường học Trường Đại Học Công Nghệ Sài Gòn
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ Án Tin Học
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 44
Dung lượng 10,31 MB

Nội dung

Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cânbằng cây: quay trái, quay phải.. Phép quay cây giúp cây cân bằng sau khi thực hiện các phép thêm hoặc xóa.Phép qu

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ SÀI GÒN

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

ĐỒ ÁN TIN HỌC

Trang 3

NGÀNH CÔNG NGHỆ THÔNG TIN

Trang 4

Lời nói đầu

Trong thời đại ngày nay, quản lý thông tin nói chung và quản lý thông tin sinh viên nóiriêng là một công việc khó khăn đối với các tổ chức giáo dục và các doanh nghiệp liênquan Để nâng cao hiệu suất trong việc tìm kiếm dữ liệu, ta sử dụng cây AVL để thựchiện điều này Là một cấu trúc dữ liệu tự cân bằng, cây AVL giúp giảm thời gian tìmkiếm và đồng thời đảm bảo rằng cơ sở dữ liệu duy trì sự ổn định

Đồ án này nhằm mục đích khám phá và phân tích ứng dụng của cây AVL trong việc quản

lý thông tin sinh viên, đặc biệt là trong việc tối ưu hóa thời gian truy vấn và đảm bảo tínhcân bằng của cơ sở dữ liệu Chúng ta sẽ khám phá cách cây AVL giúp duy trì tính cânbằng và làm thế nào nó ảnh hưởng đến hiệu suất của các thao tác tìm kiếm và truy cập dữliệu Bên cạnh đó, chúng ta cũng sẽ xem xét những lợi ích chi tiết và ứng dụng thực tếcủa việc tích hợp cây AVL trong quản lý thông tin sinh viên

Hãy cùng nhau khám phá và hiểu rõ hơn về cách áp dụng cây AVL vào ứng dụng quản lýsinh viên, để có thể cải thiện khả năng quản lý dữ liệu trong lĩnh vực quản lý sinh viên vàcác ứng dụng khác trong hệ thống thông tin phức tạp

Trang 5

MỤC LỤC

1 Khái niệm cây AVL 7

a Phép quay cây: 7

i Phép quay trái: 7

ii Phép quay phải: 8

b Phép thêm và tính cân bằng của cây 8

Cây lệch phải: 9

Cây lệch trái: 10

Cây lệch trái phải-trái: 10

Cây lệch trái-phải: 11

c Phép xóa trên cây 11

Lệch trái: 12

Lệch phải: 12

Lệch phải trái: 12

Lệch trái phải: 13

d Phép tìm kiếm 13

Thực hiện tương tự như trong cây nhị phân tìm kiếm: 13 2 Cơ sở dữ liệu 13

a Danh sách sinh viên 14

3 Giao diện 16

a Thêm 17

b Xóa 18

c Cập nhật thông tin 18

Trang 6

d Tìm kiếm 19

e Lưu 21

f Thoát 22

4 Xử lý 22

a Chức năng thêm 23

b Chức năng xóa 24

c Chức năng cập nhật thông tin 25

d Chức năng tìm kiếm 26

e Chức năng lưu 27

f Thoát 28

g Các chức năng khác 29

5 Liên kết cây AVL với danh sách sinh viên 29

a Lớp node 29

Các thuộc tính của lớp node: 29

b Cây AVL 31

Phương thức thêm của cây AVL: 32

Phương thức tìm kiếm của cây: 37

c Liên kết cây AVL vào danh sách sinh viên 38

Trang 7

MỤC LỤC HÌNH ẢNH

Hình 1-1 thực hiện phép quay trái 7

Hình 1-2 thực hiện phép quay phải 8

Hình 1-3 thực hiện phép quay cây khi cây lệch phải 9

Hình 1-4 thực hiện phép quay cây khi cây lệch trái 10

Hình 1-5 thực hiện phép quay cây khi cây lệch phải-trái 10

Hình 1-6 thực hiện phép quay cây khi cây lệch trái-phải 11

Hình 1-7 thực hiện phép quay cây khi cây lệch trái sau khi xóa 12

Hình 1-8 thực hiện phép quay cây khi cây lệch phải sau khi xóa 12

Hình 1-9 thực hiện phép quay cây khi cây lệch phải-trái sau khi xóa 12

Hình 1-10 thực hiện phép quay cây khi cây lệch trái-phải sau khi xóa 13

Hình 3-1 giao diện chính của ứng dụng 16

Hình 3-2 giao diện của form thêm 17

Hình 3-3 giao diện của form xóa 18

Hình 3-4 giao diện của form cập nhật thông tin 19

Hình 3-5 cửa sổ tìm kiếm 19

Hình 3-6 cửa sổ tìm kiếm theo mã số 20

Hình 3-7 cửa sổ tìm kiếm theo lớp 20

Hình 3-8 cửa sổ tìm kiếm theo tên 21

Hình 3-9 quá trình lưu dữ liệu 21

Hình 3-10 thoát ứng dụng 22

Hình 4-1 cửa sổ các chức năng tìm kiếm 26

Trang 8

1 Khái niệm cây AVL

Khái niệm: cây AVL là cây tìm kiếm nhị phân có khả năng tự cân bằng, được nângcấp và phát triển dựa trên cây nhị phân tìm kiếm (BST), là câu trúc dữ liệu đầu tiên

có khả năng này Trong cây AVL tại mỗi node chiều cao của 2 cây con không lệchquá 1 Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O(log n) Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cânbằng cây: quay trái, quay phải

Để biết được node của cây có cân bằng hay chưa ta dùng hệ số cân bằng Hệ số cânbằng của một node là hiệu chiều cao của cây con bên trái và cây con bên phải củanode đó

Hệ số cân bằng = chiều cao con trái – chiều cao con phải

a Phép quay cây:

Bao gồm 2 phép quay cây: quay trái, quay phải

Phép quay cây giúp cây cân bằng sau khi thực hiện các phép thêm hoặc xóa.Phép quay cây chuyển một nút cha thành nút con, bảo toàn thứ tự giữ các nodetrên cây

i Phép quay trái:

H ÌNH 1-1 THỰ HIỆN PHÉP QUAY TRÁI

Ta có node gốc là (z) và con phải là (y), phép quay trái chuyển node (y) thànhnode gốc và (z) thành con trái của (y) Để giữ nguyên tính chất của cây nhịphân ta chuyển con trái của (y) trước khi quay (T2) thành con phải của (z).Sau đó ta gán con trái của (y) bằng (z), ta được như hình trên

Thực hiện phép quay trái trong C#

Trang 9

ii Phép quay phải:

H ÌNH 1-2 THỰC HIỆN PHÉP QUAY PHẢI

Ta có node gốc là (z) và con trái là (y), phép quay phải chuyển node (y) thànhnode gốc và (z) thành con phải của (y) Để giữ nguyên tính chất của cây nhịphân ta chuyển con phải của (y) trước khi quay (T3) thành con trái của (z).Sau đó ta gán con trái của (y) bằng (z), ta được như hình trên

Ta thực hiện phép quay trái trong C#

b Phép thêm và tính cân bằng của cây

Cây AVL là cây nhị phân tự cân bằng, để duy trì sự cân bằng của cây khi thêm,

ta sử dụng các phép quay để cây cân bằng

Trang 10

Cấu trúc của một node trong cây:

Dữ liệu

Con trái và con phải

Chiều cao của node

Thêm node mới vào cây:

Đầu tiên ta thêm node mới vào cây như cây nhị phân thông thường, tuynhiên việc này có thể làm cây mất cân bằng

Tiếp theo ta cập nhật chiều cao cho node mới thêm và di chuyển lên dầnlên gốc cây để cập nhật chiều cao cho từng node

Kiểm tra xem node hiện tại có bị mất cân bằng hay không, nếu node bịmất cân bằng thực hiện phép quay để duy trì cân bằng của cây Có 4 loạiphép quay duy trì cân bằng: quay trái, quay phải, quay trái-phải, quayphải-trái

Lặp lại các bước trên từ node mới thêm đến gốc cho đến khi cây cân bằng

Tính cân bằng của cây:

Cây lệch phải:

H ÌNH 1-3 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI

Ta có cây đang ở trạng thái cân bằng, khi ta thêm (F) vào cây, cây mấtcân bằng tại node (B) Ta thấy hệ số cân bằng của (B) là -2 (chiều caocon trái trừ chiều cao con phải) và (F) lại lớn hơn con trái của (B) là(D), suy ra cây lệch phải Để khôi phục trạng thái cân bằng ta thực hiệnphép quay trái tại node (B) Ta được như hình

Trang 11

Cây lệch trái:

H ÌNH 1-4 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI

Ta có cây đang ở trạng thái cân bằng, khi ta thêm (A) vào cây, cây mấtcân bằng tại node (E) Ta thấy hệ số cân bằng của (E) là 2 (chiều caocon trái trừ chiều cao con phải) và (A) lại bé hơn con phải của (E) là(C), suy ra cây lệch trái Để khôi phục trạng thái cân bằng ta thực hiệnphép quay phải tại node (E) Ta được như hình

Cây lệch trái phải-trái:

H ÌNH 1-5 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI - TRÁI

Ta có cây đang ở trạng thái cân bằng, khi ta thêm (F) vào cây, cây mấtcân bằng tại node (C) Ta thấy hệ số cân bằng của (C) là -2 (chiều caocon trái trừ chiều cao con phải) và (F) lại bé hơn con trái của (C) là (G),suy ra cây lệch phải-trái Để khôi phục trạng thái cân bằng ta thực hiệnphép quay kép, quay phải tại node (G) sau đó tiếp tục quay trái tại node(C) Ta được như hình

Trang 12

Cây lệch trái-phải:

H ÌNH 1-6 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI PHẢI -

Ta có cây đang ở trạng thái cân bằng, khi ta thêm (E) vào cây, cây mấtcân bằng tại node (F) Ta thấy hệ số cân bằng của (F) là 2 (chiều caocon trái trừ chiều cao con phải) và (E) lại lớn hơn con trái của (F) là(B), suy ra cây lệch trái-phải Để khôi phục trạng thái cân bằng ta thựchiện phép quay kép, quay trái tại node (B) sau đó tiếp tục quay phải tạinode (F) Ta được như hình

c Phép xóa trên cây

Quá trình xóa một nút khỏi cây cũng có thể làm mất sự cân bằng của cây Đầutiên phép xóa trên cây AVL cũng tương tự trên cây nhị phân tìm kiếm (BST),cũng có 3 trường hợp: node lá, node có một con và node có 2 con

Node lá ta chỉ cần xóa trực tiếp node đó, node có một con ta chỉ cần lấy nodecon của node đó thế chỗ node cha

Trường hợp node có 2 con, ta phải tìm node lớn nhất bên con trái hoặc nhỏnhất bên con phải để làm node thế mạng Ta gán dữ liệu node thế mạng vàonode cần xóa và xóa node thế mạng ở cây con

Sau đó ta tiến hành cập nhật lại chiều cao cho các node cha từ node đã đượcxóa cho đến node gốc

Tiếp theo ta kiểm tra hệ số cân bằng của từng các node trên đường đi từ nodecha đến node gốc Nếu cây mất cân bằng ta thực hiện phép quay để khôi phụccân bằng cho cây

Khi xóa cây sẽ bị một trong bốn trường hợp sau:

Trang 13

Lệch trái:

H ÌNH 1-7 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI SAU KHI XÓA

Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (E) Cây bị mấtcân bằng ở node (D), ta thấy hệ số cân bằng (D) là 2 Ta thực hiện phépquay phải tại (D) để khôi phục sự cân bằng của của cây

Lệch phải:

H ÌNH 1-8 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI SAU KHI XÓA

Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (A) Cây bị mấtcân bằng ở node (B), ta thấy hệ số cân bằng (B) là -2 Ta thực hiệnphép quay trái tại (B) để khôi phục sự cân bằng của của cây

Lệch phải trái:

H ÌNH 1-9 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI - TRÁI SAU KHI XÓA

Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (A) Cây bị mấtcân bằng ở node (B), ta thấy hệ số cân bằng (B) là -2 Ta thực hiệnphép quay phải tại (D) sau đó tiếp tục quay trái tại (B) để khôi phục sựcân bằng của của cây

Trang 14

Lệch trái phải:

H ÌNH 1-10 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI - PHẢI SAU KHI XÓA

Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (D) Cây bị mấtcân bằng ở node (C), ta thấy hệ số cân bằng (C) là 2 Ta thực hiện phépquay trái tại (A) sau đó tiếp tục quay phải tại (C) để khôi phục sự cânbằng của của cây

Các trường hợp này áp dụng sau khi cập nhật chiều cao Việc thực hiệnđúng phép quay nhằm duy trì tính cân bằng của cây đảm bảo thuật toántìm kiếm luôn có thời gian tối ưu

d Phép tìm kiếm

Thực hiện tương tự như trong cây nhị phân tìm kiếm:

Bước 1: Bắt đầu từ node gốc

Bước 2: So sánh giá trị cần tìm với node hiện tại Nếu node cần tìm bằngnode hiện tại Ta đã tìm thấy và trả về node hiện tại.Nếu không tìm thấy

ta di chuyển sang node tiếp theo

Bước 3: Di chuyển xuống Nếu node hiện tại lớn hơn node cần tìm, ta dichuyển đến con trái của node hiện tại, ngược lại ta di chuyển đến conphải của node hiện tại

Bước 4: Lặp lại bước 2 và 3 cho đến khi tìm thấy node hoặc duyệt đếngiá trị null

Kết quả của phép tìm là node cần tìm (nếu tìm thấy) hoặc null (nếu không tìm thấy).

Thiết kế ứng dụng ta sử dụng mô hình 3 lớp Với lớp cơ sở dữ liệu ta sử dụng mẫusingleton để lưu trữ dữ liệu

Trang 15

Mẫu Singleton có đặc điểm đảm bảo dữ liệu là duy nhất, không bị trùng lặp ở mọinơi trong chương trình, cung cấp một điểm truy cập toàn cục đến nó Các ưu điểm:Đảm bảo sự duy nhất: điều này đảm bảo rằng chỉ có duy nhất một thể hiện của lớpđược tạo ra.

Tiết kiệm tài nguyên: việc sử dụng mẫu singleton tránh lãng phí tài nguyên bằngcách chỉ sử dụng một biến và tái sử dụng nó

Dễ dàng quản lý toàn cục: thuật tiện truy cập từ mọi nơi trong chương trình

a Danh sách sinh viên.

Ta sử dụng mẫu singleton để quản lý danh sách sinh viên trong ứng dụng.Trước khi lập một danh sách ta thiết kế một lớp để lưu trữ từng sinh viên.Một sinh viên gồm có các thông tin cơ bản : mã số, họ tên, lớp, giới tính, địachỉ, ngày sinh

Trang 16

Xây dựng danh sách sinh viên ứng dụng mẫu singleton.

Trang 17

3 Giao diện.

Trang 18

Giao diện chính của ứng dụng Gồm thanh chức năng, ô thông tin chi tiết và danhsách sinh viên.

Thanh chức năng: sử dụng thanh menustrip để hiển thị các chức năng: thêm, xóa,cập nhật thông tin, tìm kiếm, lưu và thoát Để người dùng có thể dễ thao tác.Thông tin chi tiết: sử dụng các label, textbox và radio button để hiển thị thông tinsinh viên, các thông tin này được lấy từ datagridview

Danh sách sinh viên: sử dụng datagridview để hiển thị danh sách sinh viên từ lớp

và chọn giới tính của sinh viên, sau đó nhấn nút thêm Khi thêm thành công sẽ

có thông báo thêm thành công (khi thêm thất bại sẽ có thông báo thêm thấtbại) Khi ấn nút thêm form sẽ đóng và hiển thị sinh viên vừa thêm trên danhsách ở form chính Muốn đóng form ta ấn vào nút quay lại trên thanhmenustrip Form sẽ đóng và quay lại form chính

H ÌNH 3-12 GIAO DIỆN CỦA FORM THÊM

Trang 19

b Xóa.

Để thực hiện chức năng xóa, ta click chuột vào nút xóa trên thanh menustrip.Form xóa sẽ hiển thị để thực hiện chức năng xóa

H ÌNH 3-13 GIAO DIỆN CỦA FORM XÓA

Để xóa một sinh viên ta click chọn vào sinh viên cần xóa trong danh sách sinhviên được hiển trên datagridview Thông tin chi tiết của sinh viên được hiển thị

ở trên Sau khi xác nhận sinh viên cần xóa, ta nhấn nút xóa, ứng dụng thôngbáo xóa thành công (hoặc thất bại)

c Cập nhật thông tin.

Để cập nhật thông tin của sinh viên ta thực hiện click chuột vào nút cập nhậtthông tin trên thanh menustrip Form cập nhật thông tin của sinh viên sẽ hiệnlên

Trang 20

H ÌNH 3-14 GIAO DIỆN CỦA FORM CẬP NHẬT THÔNG TIN

Để cập nhật thông tin cho một sinh viên cụ thể ta chỉ cần chọn sinh viên đó trêndanh sách sinh viên được hiển thị lên datagridview Sau đó ta nhập thông tincần chỉnh sửa của sinh viên đó trên ô thông tin chi tiết, ấn nút cập nhật để hoàntất việc cập nhật Muốn thoát form ta ấn nút quay lại để quay lại form chính

Trang 21

Tìm kiếm theo mã số: ta nhập mã số cần tìm vào thanh tìm kiếm Ấn

nút tìm, nếu tìm thấy sẽ trả về sinh viên vào datagridview và thông tinchi tiết của sinh viên trên ô thông tin chi tiết, nếu không sẽ trả về thôngbáo (mã không tồn tại)

H ÌNH 3-16 CỬA SỔ TÌM KIẾM THEO MÃ SỐ

Tìm kiếm theo lớp: ta nhập tên lớp vào thanh tìm kiếm Rồi ấn nút tìm

kiếm, nếu tìm thấy sẽ trả về tất cả sinh viên trong lớp đó và hiển thị lêndatagridview Nếu không tìm thấy sẽ trả về một danh sách rỗng Thoátform ta ấn nút quay lại để quay lại form chính

Trang 22

Tìm kiếm theo tên: ta nhập tên sinh viên vào thanh tìm kiếm Rồi ấn nút

tìm kiếm, nếu tìm thấy sẽ trả về tất cả sinh viên có tên giống với sinhviên cần tìm và hiển thị lên datagridview Nếu không tìm thấy sẽ trả vềmột danh sách rỗng Thoát form ta ấn nút quay lại để quay lại formchính

H ÌNH 3-18 CỬA SỔ TÌM KIẾM THEO TÊN

e Lưu.

Để lưu file ta chỉ cần ấn vào nút lưu file trên menustrip và chọn yes Nếu lưufile thành công ứng dụng sẽ thông báo lưu file thành công, nếu lưu thất bại ứngdụng sẽ thông báo lưu file thất bại

H ÌNH 3-19 QUÁ TRÌNH LƯU DỮ LIỆU

Trang 23

Thuộc tính “dssv” dùng lưu trữ danh sách sinh viên.

Phương thức khởi tạo sẽ tiến hành kết nối lớp xử lý và lớp cơ sở dữ liệu thông quabiến data

Trang 24

a Chức năng thêm.

Để thực hiện chức năng thêm ta đợi sự kiện click chuột vào nút thêm Khi nhậnđược sự kiện hàm thêm trong lớp xử lý sẽ được gọi Nếu thành công sẽ xuấtthông báo thành công, nếu thất bại xuất thông báo thất bại

Hàm thêm trong lớp xử lý

Trước tiên ta kiểm tra xem mã có tồn tại trong danh sách sinh viên hay chưa.Nếu đã tồn tại ta trả về false nghĩa là hàm thêm thất bại Ngược lại ta thực hiệnthêm sinh viên vào danh sách, trả về true Ta viết thêm cấu trúc try … catch….tránh các trường hợp ngoại lệ

Để thoát được form thêm người dùng cần click chuột vào nút quay lại Khiclick chuột sự kiện của nút quay được thực hiện:

Trang 25

Ta sẽ báo cho form chính biết form thêm đã được đóng thông qua delegatedongFormTen().

Hàm xóa trong lớp xử lý

Ngày đăng: 24/12/2024, 16:37

TỪ KHÓA LIÊN QUAN