Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
BAOCAO.pdf
1. TRƯỜNG ĐẠI HỌC ĐỒNG THÁP
KHOA SƯ PHẠM TOÁN – TIN
MSSV: 4621440002 - Nguyễn Văn Chiến
MSSV: 4621440009 - Du Thị Trúc Linh
MSSV: 4621440004 - Nguyễn Mỹ Hưng
BÁO CÁO
CẤU TRÚC DỮ LIỆU NÂNG CAO
NGÀNH: SƯ PHẠM TIN HỌC
LỚP ĐHSTIN21-L2-TN
BÀI TẬP LỚN
Người hướng dẫn: Huỳnh Lê Uyên Minh
TÂY NINH, 2022
3. 2.8.Chương trình đếm nhân viên - giáo viên theo mã nhân viên và in ra
màn hình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8.1. Code Chương trình đếm nhân viên - giáo viên theo mã nhân viên và in ra màn
hình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9.Chương trình ghi dữ liệu thông tin nhân viên, giáo viên ra file. txt. .
20
2.9.1. Code Chương trình ghi dữ liệu thông tin nhân viên, giáo viên ra file. txt . 21
KẾT LUẬN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ii
4. ‘
MỞ ĐẦU
1. Giới thiệu
Cấu trúc dữ liệu và giải thuật đóng vai trò là môn học cơ sở rất quan trọng
trong chương trình đào tạo trình độ cao đẳng, đại học cho tất các ngành, chuyên ngành
về công nghệ thông tin và đào tạo giáo viên Tin học.
Trong tin học, trừu tượng hóa nghĩa là đơn giản hóa, làm cho nó sáng sủa hơn
và dễ hiểu hơn. Hay nói cách khác, trừu tượng hóa là che đi những chi tiết, làm nổi
bật cái tổng thể. Trừu tượng hóa có thể thực hiện trên hai khía cạnh là trừu tượng hóa
dữ liệu và trừu tượng hóa chương trình.
Trừu tượng hóa chương trình là sự định nghĩa các chương trình con để tạo ra các
phép toán trừu tượng (sự tổng quát hóa của các phép toán nguyên thủy). Chẳng hạn,
ta có thể tạo ra một chương trình con matrixMult để thực hiện phép toán nhân hai
ma trận. Sau khi matrixMult đã được tạo ra, ta có thể dùng nó như một phép toán
nguyên thủy (chẳng hạn phép cộng hai số).
Trừu tượng hóa chương trình cho phép phân chia chương trình thành các chương
trình con. Sự phân chia này sẽ che dấu tất cả các lệnh cài đặt chi tiết trong các chương
trình con. Ở cấp độ chương trình chính, ta chỉ thấy lời gọi các chương trình con và
điều này được gọi là sự bao gói.
1.1 Cấu trúc dữ liệu
Như trên đã nói kiểu dữ liệu trừu tượng ADT mang tính khái quát, không phụ
thuộc vào một hệ thống cụ thể nào. Tuy nhiên, mục đích cuối cùng của việc giải quyết
bài toán bằng máy tính điện tử là các chương trình máy tính. Vì vậy, với mỗi kiểu dữ
liệu trừu tượng cần có một cách thể hiện cụ thể bằng một đối tượng dữ liệu cụ thể
được cài đặt trong máy tính, đó chính là cấu trúc dữ liệu. Định nghĩa 1.2: Cấu trúc
dữ liệu là một dữ liệu phức hợp, gồm nhiều thành phần dữ liệu, mỗi thành phần hoặc
là dữ liệu cơ sở hoặc là một cấu trúc dữ liệu đã được xây dựng được liên kết với nhau
theo một cách thức nào đó.
1
5. 2. Giải Thuật
2.1. Khái niệm giải thuật
Giải thuật, nhiều khi còn được gọi là thuật toán dùng để chỉ phương pháp hay
cách thức để giải quyết vần đề. Giải thuật có thể được biểu diễn bằng ngôn ngữ tự
nhiên, bằng lưu đồ hoặc bằng mã giả (pseudo code). Giải thuật có tính độc lập tương
đối với các ngôn ngữ lập trình, nghĩa là một giải thuật có thể được cài đặt bằng một
ngôn ngữ lập trình cụ thể. Trong thực tế, giải thuật thường được biểu diễn bằng mã
giả tựa trên một ngôn ngữ lập trình nào đó, chẳng hạn như C, Pascal. Khi đã xác định
được cấu trúc dữ liệu thích hợp, người lập trình sẽ bắt đầu tiến hành xây dựng giải
thuật tương ứng theo yêu cầu của bài toán đặt ra. Để giải quyết một vấn đề có thể có
nhiều phương pháp, do vậy sự lựa chọn phương pháp phù hợp là một việc mà người
lập trình phải cân nhắc và tính toán. Sự lựa chọn này cũng có thể góp phần đáng kể
trong việc giảm bớt công việc của người lập trình trong phần cài đặt thuật toán trên
một ngôn ngữ cụ thể. Khi nói đến giải thuật ta quan tâm đến các vấn đề cơ bản sau:
- Tư tưởng (ý tưởng) của giải thuật.
- Nội dung của giải thuật và cách cài đặt giải thuật đó.
- Đánh giá độ phức tạp về thời gian và độ phức tạp về bộ nhớ
2.2. Đặc điểm của giải thuật
Không phải tất cả các thủ tục có thể được gọi là một giải thuật. Một giải thuật
nên có các đặc điểm sau:
- Tính xác định: Giải thuật nên rõ ràng và không mơ hồ. Mỗi một giai đoạn (hay
mỗi bước) nên rõ ràng và chỉ mang một mục đích nhất định.
- Dữ liệu đầu vào xác định: Một giải thuật có thể không có hoặc có nhiều dữ liệu
đầu vào đã xác định.
- Kết quả đầu ra: Một giải thuật nên có một hoặc nhiều dữ liệu đầu ra đã xác
định, và nên kết nối với kiểu kết quả mong muốn.
- Tính dừng: Giải thuật phải kết thúc sau một số hữu hạn các bước.
- Tính hiệu quả: Một giải thuật nên thi hành được với các nguồn có sẵn, tức là
có khả năng giải quyết hiệu quả vấn đề trong điều kiện thời gian và tài nguyên cho
phép.
- Tính phổ biến: Một giải thuật có tính phổ biến nếu giải thuật này có thể giải
quyết được một lớp các vấn đề tương tự.
Cấu trúc dữ liệu + giải thuật = Chương trình
2
6. Chương 1
CÂY NHỊ PHÂN CÂN BẰNG
1.1 Định nghĩa cây nhị phân (Binary Seach Tree)
1.1.1 Định nghĩa cây cân bằng
g Định nghĩa 3.6: Cây cân bằng AVL (AVL là viết tắt của hai tác giả đề xuất ra
thuật toán này G.M. Adelson-Velsky và E.M. Landis) là cây nhị phân tìm kiếm mà tại
mỗi nút, sự khác biệt về chiều cao của cây con trái và cây con phải không vượt quá 1.
Hệ số cân bằng (Balance Factor):
Gọi B là giá trị của chiều cao của cây con bên trái trừ đi chiều cao của cây con
bên phải. Để duy trì sự khác biệt về chiều cao giữa cây con trái và cây con phải ở mỗi
nút nhỏ hơn hoặc bằng 1, mỗi nút sẽ được lưu một giá trị B. Giá trị này được gọi là
hệ số cân bằng, những nút có trị tuyệt đối của hệ số cân bằng vượt quá 1 thì cần được
điều chỉnh lại.
Hệ số cân bằng của các nút ở mức cuối cùng (nút lá) luôn luôn bằng 0. Quy ước
cây rỗng có chiều cao -1.
Trên cây AVL, ưu điểm là hiệu năng tìm kiếm luôn được đảm bảo kể cả trong
trường hợp xấu nhất (bằng O(logN)), tuy nhiên nhược điểm là khi chèn phần tử hoặc
xóa phần tử khỏi cây thì cần thêm một thao tác đó là giữ cho cây cân bằng. Ví dụ:
minh hoạ một cây BST có khoá là số nguyên (với quan hệ thứ tự trong tập số nguyên)
3
7. Hình 1.1. Minh họa cây cân bàng và không cân bằng
1.1.2 Phép quay cân bằng trên cây AVL
Việc thêm và xóa nút trên cây AVL được thực hiện như trong cây tìm kiếm nhị
phân thông thường. Tuy nhiên, các thao tác này đôi khi có thể dẫn đến cây bị mất
cân bằng.
Hình 2 dưới đây cho thấy cây thứ nhất là cây cân bằng, cây thứ hai bị mất cân
bằng sau khi thêm nút 6 vào cây, cây thứ ba cân bằng trở lại sau khi được thực hiện
phép quay trên cây.
4
8. Hình 1.2. Hình 2 Cây AVL khi chèn thêm nút làm cây bị mất cân bằng
Như vậy ta thấy khi có một yếu tố gây ra sự mất cân bằng của cây, AVL sẽ thực
hiện quá trình tự điều chỉnh để lấy lại sự cân bằng bởi các phép quay, bao gồm:92
quay trái, quay phải, quay trái-phải, quay phải-trái. Trong đó, phép quay trái và phải
là các phép quay đơn, phép quay trái-phải và phải-trái là các phép quay kép. Ta sẽ đi
vào tìm hiểu chi tiết cách hoạt động của từng phép quay. Để đơn giản hóa vấn đề ta
sẽ xét những cây có hai node.
1.1.2.1 Phép quay trái
Trong trường hợp cây ở trạng thái không cân bằng khi một node được chèn vào
làm con phải của một cây có một node gốc và một node con phải. Lúc này ta phải
thực hiện phép quay trái để đưa cây trở lại trạng thái cân bằng.
Hình 3 dưới đây cho thấy node A trở thành nút không cân bằng khi có một nút
chèn vào cây con bên phải của nó. Chúng ta thực hiện phép quay trái để đưa nút A
trở thành con trái của nút B, để đưa cây về trạng thái cân bằng
5
9. Hình 1.3. Minh họa phép quay trái
1.1.2.2 Phép quay phải
Trong trường hợp cây ở trạng thái không cân bằng khi một nút được chèn vào
làm con trái của một cây có một nút gốc và một nút con trái. Lúc này ta phải thực
hiện phép quay phải để đưa cây trở lại trạng thái cân bằng.
Hình 4 dưới đây, node A trở thành nút không cân bằng khi có một nút chèn vào
cây con bên trái của nó. Chúng ta thực hiện phép quay phải để đưa nút A trở thành
con phải của nút B, để đưa cây về trạng thái cân bằng.
6
10. Hình 1.4. Minh họa phép quay phải
1.1.2.3 Phép quay trái – phải
Đây là phép quay kết hợp có đôi chút phức tạp hơn so với các phép quay trái và
quay phải ở trên. Với phép quay trái-phải, ta sẽ thực hiện việc quay trái trước và quay
phải sau đó.
7
11. Hình 1.5. Phép quay trái phải
1.1.2.4 Phép quay Phải - Trái
Phép quay này là kết hợp của phép quay phải và theo sau bởi một phép quay
trái.
8
12. Hình 1.6. Phép quay Phải - Trái
1.1.3 Thêm nút vào cây AVL
Việc chèn một phần tử vào cây AVL xảy ra tương tự như trên cây nhị phân tìm
kiếm. Tuy nhiên sau khi chèn xong, nếu chiều cao của cây thay đổi tại vị trí thêm vào,
ta cần phải ngược lên gốc để kiểm tra xem có nút nào bị mất cân bằng hay không.
Nếu có, ta chỉ cần phải cân bằng lại ở nút này.
9
13. Hình 1.7. Quy trình chèn nút vào cây cân bằng
Cây nhị phân đầu tiên là cây cân bằng, nút gốc có hệ số cân bằng là 0.
Cây nhị phân thứ 2: Khi thêm vào một nút có giá trị 3 làm cho một nút có hệ
số cân bằng bằng 1 xuất hiện. Trường hợp này chưa cần phải điều chỉnh vì hệ số cân
bằng chưa vượt quá 1.
Cần đảm bảo cây được đưa về trạng thái cân bằng sau chỉ một lần điều chỉnh,
vì ta thực hiện việc kiểm tra, điều chỉnh sau mỗi lần thêm node vào cây
1.1.4 Loại nút vào cây Cân bằng
Việc xóa một phần tử ra khỏi cây AVL diễn ra tương tự như đối với cây nhị phân
tìm kiếm, chỉ khác là sau khi hủy, nếu cây AVL bị mất cân bằng, ta phải cân bằng lại
cây bằng các phép quay như trên. Chú ý rằng việc cân bằng lại cây có thể xảy ra phản
ứng dây chuyền.
10
14. Chương 2
CÀI ĐẶT CẤU TRÚC DỮ LIỆU NÂNG CAO
2.1 Giới thiệu sơ lược về bài tập của nhóm
Chương trình này mô tả hai bảng trong cơ sở dữ liệu quản lý giáo viên nhân
viên của một đơn vị trường học. Trong cơ sở dữ liệu của chương trình quản lý giáo
viên nhân viên có nhiều bảng nhưng ở đây nhóm em trình bày cấu trúc dữ liệu ở hai
bảng đó là bảng GIAOVIEN, TO
Ở phần cài đặt cấu trúc dữ liệu cơ sở dữ liệu của bài quản lý giáo viên, nhân
viên ở đây nhóm cài đặt hai bảng dữ liệu là: GIAOVIEN, TO.
Ở phần cài đạt này có các chức năng như sau: thêm, sửa, xóa, tìm kiếm, đọc dữ
liệu từ file.txt, ghi dữ liệu ra file.txt
2.2 Chương trình menu
Sau khi khởi động chương trình MENU sẽ hiện ra các tùy chọn sau đó người
dùng sẽ nhập từ bàn phím các tùy chọn thông qua các con số đã mô tả ở MENU
11
15. Ở mục Menu này có 8 chức năng được đánh số từ 0 đến 8 như hình 2.1
12
16. 2.2.1 Code chương trình menu
Sau khi người dùng nhập chọn một chức năng từ bàn phím chương trình sẽ gọi
chương trình tương ứng với chức năng mà người dùng chon.
2.2.2 Code gọi các chương trình con
13
17. Hình 2.1. Code gọi các chương trình con trong chương trình Menu
2.3 Chương trình đọc dữ liệu từ file.txt và in ra màn hình
Sau khi thực hiện chương trình Menu ta nhấn phím 1 để chương trình thực hiện
đọc file dữ liệu vào chương trình và in ra màn hình sau đó chạy lại chương trình Menu
14
18. 2.3.1 Code đọc dữ liệu từ file.txt
2.4 Chương trình thêm nhân viên - giáo viên
Sau khi thực hiện chương trình Menu ta nhấn phím 2 để chương trình thực
hiện thêm nhân viên mới vào cơ sỡ dữ liệu. Sau đó ta nhập số nhân viên cần thêm và
tiếp tục nhập các thông tin theo yeu cầu và sau đó in ra màn hình.
2.4.1 Code thêm nhân viên - giáo viên mới
Dưới đây là code chương trình thêm nhân viên - giáo viên mới
15
20. 2.5 Chương trình in danh sách nhân viên - giáo viên ra màn hình
Sau khi thực hiện chương trình Menu ta nhấn phím 3 để chương trình thực hiện in
danh sách nhân viên - giáo viên ra màn hình.
2.5.1 Code in danh sách nhân viên - giáo viên ra màn hình
2.6 Chương trình cập nhật (sửa) thông tin nhân viên - giáo viên ra
màn hình
Sau khi thực hiện chương trình Menu ta nhấn phím 4 để chương trình thực hiện
sửa, cập nhật lại thông tin nhân viên - giáo viên và sau đó in lại thông tin mới ra màn
hình.
17
21. 2.6.1 Code Chương trình cập nhật (sửa) thông tin nhân viên - giáo
viên ra màn hình
Hình 2.2. Code cập nhật (sửa) thông tin nhân viên - giáo viên
18
22. 2.7 Chương trình xóa thông tin nhân viên - giáo viên theo mã nhân
viên và in ra màn hình
Sau khi thực hiện chương trình Menu ta nhấn phím 5 để chương trình thực hiện
xóa thông tin nhân viên - giáo viên theo mã nhân viên và sau đó in lại thông tin mới
ra màn hình.
Hình 2.3. Chương trình xóa nhân viên - giáo viên
2.7.1 Code Chương trình xóa thông tin nhân viên - giáo viên theo mã
nhân viên và in ra màn hình
19
23. 2.8 Chương trình đếm nhân viên - giáo viên theo mã nhân viên và
in ra màn hình
Sau khi thực hiện chương trình Menu ta nhấn phím 6 để chương trình thực hiện
đếm số nhân viên - giáo viên theo mã nhân viên, giáo viên và sau đó in lại thông tin
mới ra màn hình.
Hình 2.4
2.8.1 Code Chương trình đếm nhân viên - giáo viên theo mã nhân viên
và in ra màn hình
Hình 2.5. Chương trình đếm nhân viên - giáo viên theo mã
2.9 Chương trình ghi dữ liệu thông tin nhân viên, giáo viên ra file.
txt
Sau khi thực hiện chương trình Menu ta nhấn phím 7 để chương trình thực hiện
ghi dữ liệu đã nhập mới hoặc thay đổi. Mục đích của chức năng này là ghi lại thông
tin ra file txt để sau đó ta có thể đọc lại thông tin từ file này.
20
24. Hình 2.6. Thực hiện chương trình in thông tin ra file.txt
2.9.1 Code Chương trình ghi dữ liệu thông tin nhân viên, giáo viên ra
file. txt
21
25. KẾT LUẬN
Nhóm chúng em thuộc nhóm 5 ở lớp Đại học sư phạm tin 21 do trường CĐSP
Tây Ninh liên kết với trường Đại học Đồng Tháp. Trong quá trình học tập vừa qua
nhóm chúng em có thực hiện bài tập cấu trúc cơ sở dữ liệu nâng cao về thiết kế một
cơ sở dữ liệu về quản lý nhân viên - giáo viên trong một đơn vị trường. Ở đây chỉ
viết chương trình thực hiện các chức năng thêm mới, sửa, xóa, đếm, đọc thông tin từ
file.txt và xuất thông tin ra file.txt.
Nắm bắt được nhu cầu phát triển của công nghệ thông tin trong nhiều lĩnh vực
trong đó có lĩnh vực quản lý. trong quá trình công tác tại cơ sở chúng em nhận thấy
sự cần thiết của việc quản lý thông tin bằng phần mềm ứng dụng sẽ đem lại hiệu quả
cao hơn nên chúng em được sự giúp đỡ của Cô: Huỳnh Lê Uyên Minh nhóm em đã
thực hiện thiết kế cơ sở dữ liệu quản lý nhân viên - giáo viên.
Qua những phân tích trên nhóm đã tổng hợp và rút ra nhận xét đánh giá hiệu
quả của việc sử dụng phần mềm để quản lý nhân viên - giáo viên trong trường học.
Qua quá trình đánh giá nhóm em nhận thấy việc thiết kế cơ sở dữ liệu phù họp với
yêu cầu thực tế trong quản lý hồ sơ nhân viên - giáo viên tại cơ sở
22