Đồ án Xây dựng chương trình mô phỏng các phép toán đại số quan hệ bằng VB 6.0

Nội dung:

I. Giới thiệu . 3

1. Mục tiêu đồ án 3

2. Giới thiệu công cụ thực hiện đồ án: Visual Basic 6.0 3

3 Giới thiệu về Cơ sở dữ liệu 5

4. Lý thuyết các phép toán Đại số quan hệ 5

a.Phép giao .

b.Phép hợp .

c.Phép trừ

d.Phép chọn .

e.Phép kết nối .

II.Nội dung 10

1. Ý tưởng giải quyết thuật toán . 11

2. Sơ đồ khối 13

3. Thiết kế giao diện . 17

4. Viết Code . 18

5. Kiểm thử . 25

III. Kết quả đạt được . 26

4.1. Kết quả kiểm thử . 26

4.2. Danh sách lỗi tìm được .26

IV. Nhận xét, đánh giá và đề xuất .27

 

 

doc29 trang | Chia sẻ: netpro | Lượt xem: 1739 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng chương trình mô phỏng các phép toán đại số quan hệ bằng VB 6.0, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nội dung: Báo cáo đồ án cơ sở Các từ viết tắt: CSDL: Cơ sở dữ liệu VB: Visual Basic. I.Giới thiệu 1.Mục tiêu đồ án Giới thiệu sơ lược về đồ án. Xây dựng chương trình mô phỏng các phép toán đại số quan hệ: Phép hợp, phép giao, phép trừ, phép kết nối, phép chiếu. Yêu cầu: Tóm lược lý thuyết phần Đại số quan hệ Trình bày ý tưởng thuật toán để giải quyết cho từng phép toán Vẽ sơ đồ khối hoặc mã giả cho các thuật toán trên Viết chương trình bằng ngôn ngữ VB Nhập vào 02 quan hệ (lưu vào file text dạng ma trận) Chọn 02 quan hệ và chọn phép toán để thực hiện In kết quả ra màn hình (dạng bảng) và lưu kết quả xuống file Mục tiêu: -Tìm hiểu kĩ lý thuyết về CSDL ,các phép toán đại số quan hệ như phép giao, phép hợp, phép trừ… -Tìm hiểu kĩ hơn về cách sử dụng ngôn ngử VB, sử dụng thành thạo ngôn ngữ VB cho việc lập trình. -Rèn luyện kĩ năng làm việc độc lập - 2.Giới thiệu công cụ thực hiện : Visual Basic 6.0 Dùng VB6 là cách nhanh và tốt nhất để lập trình cho Microsoft Windows. Cho dù ta là chuyên nghiệp hay mới mẻ đối với chương trình Windows, VB6 sẽ cung cấp cho ta một bộ công cụ hoàn chỉnh để đơn giản hóa việc triển khai lập trình ứng dụng cho MSWindows. Visual Basic là gì? Phần "Visual" đề cập đến phương phàp được sử dụng để tạo giao diện đồ họa người dùng (Graphical User Interface hay viết tắc là GUI) . Có sẵn những bộ phận hình ảnh, gọi là controls, ta tha hồ sắp đặt vị trí và quyết định các đặc tính của chúng trên một khung màn hình, gọi là form. Nếu ta đã từng sử dụng chương trình vẽ chẳng hạn như Paint, ta đã có sẵn các kỹ năng cần thiết để tạo một GUI cho VB6. Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction Code), một ngôn ngữ lập trình đơn giản, dễ học, được chế ra cho các khoa học gia (những người không có thì giờ để học lập trình điện toán) dùng. Visual Basic đã được ra từ MSBasic, do Bill Gates viết từ thời dùng cho máy tính 8 bits 8080 hay Z80. Hiện nay nó chứa đến hàng trăm câu lệnh (commands), hàm (functions) và từ khóa (keywords). Rất nhiều commands, functions liên hệ trực tiếp đến MSWindows GUI. Những người mới bắt đầu có thể viết chương trình bằng cách học chỉ một vài commands, functions và keywords. Khả năng của ngôn ngữ này cho phép những người chuyên nghiệp hoàn thành bất kỳ điều gì nhờ sử dụng ngôn ngữ lập trình MSWindows nào khác. Người mang lại phần "Visual" cho VB là ông Alan Cooper. Ông đã gói môi trường hoạt động của Basic trong một phạm vi dễ hiểu, dễ dùng, không cần phải chú ý đến sự tinh xảo của MSWindows, nhưng vẫn dùng các chức năng của MSWindows một cách hiệu quả. Do đó, nhiều người xem ông Alan Cooper là cha già của Visual Basic. Visual Basic còn có hai dạng khác: Visual Basic for Application (VBA) và VBScript. VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, MSProject, .v.v.. còn gọi là Macros. Dùng VBA trong MSOffice, ta có thể làm tăng chức năng bằng cách tự động hóa các chương trình. VBScript được dùng cho Internet và chính Operating System. Dù cho mục đích của bạn là tạo một tiện ích nhỏ cho riêng bạn, trong một nhóm làm việc của bạn, trong một công ty lớn, hay cần phân bố chương trình ứng dụng rộng rãi trên thế giới qua Internet, VB6 cũng sẽ có các công cụ lập trình mà bạn cần thiết. Các ấn bản Visual Basic 6 Có ba ấn bản VB6: Learning, Professional và Enterprise. Chúng ta hãy gát qua ấn bản Learning. Bạn có thể dùng ấn bản Professional hay Enterprise. Ấn bản Professional cung cấp đầy đủ những gì bạn cần để học và triển khai một chương trình VB6, nhất là các control ActiveX, những bộ phận lập trình tiền chế và rất hữu dụng cho các chương trình ứng dụng (application programs) của bạn trong tương lai. Ngoài đĩa compact chính cho VB6, tài liệu đính kèm gồm có sách Visual Studio Professional Features và hai đĩa CD Microsoft Developer Network (MSDN). Ấn bản Enterprise là ấn bản Professional cộng thêm các công cụ Back Office chẳng hạn như SQL Server, Microsoft Transaction Server, Internet Information Server. 3.Giới thiệu về CSDL Cơ sở dữ liệu (CSDL) là một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bị băng từ, đĩa từ… để có thể làm thỏa mản yêu cầu khai thác đồng thời của nhiều người sữ dụng. CSDL gắng liền với Đại số ,logic toán và một số vấn đề khác. * Ưu điểm của cơ sở dữ liệu -Giảm sự trùng lắp thông tin xuống mức thấp nhất và do đó bảo đảm được tính nhất quán và toàn vẹn dữ liệu. -Đảm bảo dữ liệu có thể truy xuất theo nhiều cách khác nhau. -Khả năng chia sẻ thông tin cho nhiều người sử dụng 4.Lý thuyết các phép toán Đại số quan hệ Các phép toán chia làm 2 nhóm: Các phép toán tập hợp (hội, giao, trừ, …) Các phép toán quan hệ (chiếu, chọn, kết nối, …) ( Trong phần này ta chỉ trình bày các phép toán tập hơp như Phép hợp, phép giao, phép trừ, phép kết nối, phép chiếu.) Khả hợp: (Union compatibility) Hai lược đồ quan hệ R(A1, A2, …, An) và S(B1, B2, …, Bn) là khả hợp nếu cùng bậc n (cùng số thuộc tính) và có DOM(Ai) = DOM(Bi), với 1£ i £ n. VD: SINHVIEN HOSV GIANGVIEN HOGV TENGV Nguyen Trang Bui Hong Minh TENSV Tran An Nguyen Trang Le Van Phong Cho 2 quan hệ R, S khả hợp: a.Phép hợp (union) Phép hợp của R và S, ký hiệu là R È S, là một quan hệ gồm các bộ thuộc R hoặc thuộc S, hoặc cả hai. Các bộ trùng lắp sẽ bị lược bớt và chỉ giữ lại 1 bộ đại diện. Biểu diển: RÈS=(t/ t Є R hoặc tЄ S hoặc t Є R và S} VD: R SINHVIEN HOSV S GIANGVIEN HOGV TENGV Nguyen Trang Bui Hong Minh TENSV Tran An Nguyen Trang Le Van Phong t = RÈS =( SINHVIEN È GIANGVIEN ) HOSV TENSV Tran An Le Van Phong Nguyen Trang Bui Hong Minh b.Phép giao(intersect) Phép giao của R và S, ký hiệu là R Ç S, là một quan hệ gồm các bộ thuộc R đồng thời thuộc S. Biểu diển: RÇS=(t/ t Є R và tЄ S } t= RÇS SINHVIEN Ç GIANGVIEN HOSV TENSV Nguyen Trang Ví dụ với 2 quan hệ ở trên , giao của chúng là: c.Phép trừ (minus) Phép trừ của R và S, ký hiệu R – S, là một quan hệ gồm các bộ thuộc R và không thuộc S. Biểu diển: RÇS=(t/ t Є R và tЄ S } Ví dụ với 2 quan hệ ở trên , giao của chúng là: t= R-S= SINHVIEN - GIANGVIEN HOSV TENSV Tran An Le Van Phong Bui Hong Minh Các tính chất: Giao hoán: R È S = S È R, R Ç S = S Ç R Kết hợp: R Ç (S Ç T) = (R Ç S) Ç T, R È (S È T) = (R È S) È T d. Phép chọn(selection) Cho một quan hệ r với lược đồ quan hệ R(A1,A2,A3,..,An) Phép chọn trên r là phép xác định một tập con các bộ các bộ quan hệ thỏa mãn 1 điều kiện cho trước Tức là : s() (Phép chọn được hiểu: sF (r)={t Єr/F(t)=đúng}) s: ký hiệu phép chọn. : chỉ quan hệ được chọn. Kết quả thu được từ phép chọn là một quan hệ, có cùng danh sách thuộc tính được chỉ ra trong Điều kiện chọn được hình thành từ các mệnh đề có dạng: là tên thuộc tính của , phép so sánh thường là: =, ¹, >, ³, <, £. Các mệnh đề có thể được nối lại nhờ vào các phép Ø, Ù, Ú Phép chọn có tính giao hoán: s(đk1)(s(đk2)R) = s(đk2)(s(đk1)R) = s(đk1 Ù đk2) R VD: Tìm các nhân viên có mức lương trên 25.000 ở phòng 4 hoặc các nhân viên có mức lương trên 30.000 ở phòng 5. s(PHG = 4 Ù LUONG > 25000) Ú (PHG = 5 Ù LUONG > 30000)(NHANVIEN) e.Phép kết nối (join) Phép kết nối, ký hiệu là |X|, dùng để tổ hợp 2 bộ có liên quan từ 2 quan hệ thành 1 bộ. VD: Tìm tên các trưởng phòng ban: TR_PHG ¬ PHONGBAN |x| TRHG = MANV NHANVIEN KETQUA ¬ pTENPHG, HONV, TENNV(TR_PHG) Dạng tổng quát của phép kết nối 2 lược đồ quan hệ R(A1, A2, …, An), và S(B1, B2, …, Bm) là: R xS Kết quả của phép kết nối là một lược đồ quan hệ Q có n+m thuộc tính. Q(A1, A2, …, An, B1, B2, …, Bm) Mỗi bộ của Q là một tổ hợp của 2 bộ trong R và S thoả mãn . có dạng: Ù Ù … Ù mỗi có dạng Ai q Bi, với Ai là một thuộc tính của R, Bj là một thuộc tính của S, Ai và Bj có cùng miền và q là một trong những phép so sánh {=, ¹, >, ³, <, £} Phép kết nối với điều kiện kết nối tổng quát gọi là q kết nối. Các bộ có giá trị rỗng tại thuộc tính kết nối không xuất hiện trong kết quả của phép kết. Nếu q là phép so sánh bằng (=), phép kết được gọi là phép kết bằng (equi-join). Kết quả của phép kết nối bằng có 2 cột giống nhau à có cột thừa à nếu bỏ bớt cột thứ 2 thì thành phép kết tự nhiên, ký hiệu là dấu sao (*). VD: DA_PHG ¬ DEAN * PHONG=MAPHG PHONGBAN Cách viết gọn: DA_PHG ¬ DEAN * (PHONG, MAPHG) PHONGBAN Tổng quát, phép kết nối tự nhiên có dạng: Q ¬ R (, )*S Trong đó, là các thuộc tính của R và là các thuộc tính của S. Chỉ có các thuộc tính tương ứng trong là được giữ lại trong kết quả. Nếu và giống nhau về tên è bỏ luôn. PHG_DD ¬ PHONGBAN * DIADIEM_PHG II Nội dung 1/ Trình bày ý tưởng thuật toán giải quyết bài toán. Để giải quyết bài toán ta thực hiện như sau” -Nhập tên, số trường và dữ liệu cho các quan hệ -Lưu dữ liệu vào file text -Chọn 2 quan hệ cần tính toán -Chọn phép toán thực hiện -Thực hiện tính toán -Hiển thị kết quả lên màn hình Trong đó với các phép toán ta thực hiện như sau 1.Phép hợp (union) -Load quan hệ 1 từ file vào A -Kiểm tra sự trùng lặp của các hàng A -Đưa vào kết quả - Load quan hệ 2 từ file vào B -So sánh ma trận B với ma trận A , nếu các hàng trong B không trùng lặp với kết quả thì ta đưa B vào kết quả. -Lưu kết quả ra file text và hiển thị lên màn hình. 2.Phép giao (intersect) -Load 2 quan hệ1 và 2 vào A và B -Kiểm tra sự trùng lặp các hàng của A và B, nếu trùng thì ta sẽ đưa nó vào kết quả -Lưu kết quả ra file text và hiển thị lên màn hình 3.Phép trừ (minus) -Load 2 quan hệ 1 và 2 vào A và B -So sánh các hàng của A với B, nếu không trùng thì ta sẽ đưa hàng đó vào kết quả -Lưu kết quả ra file text và hiển thị lên màn hình 4.Phép chiếu (projection) -Load quan hệ cần tính vào A -Nhập các cột cần chiếu -Đưa vào kết quả các cột của A tương ứng với các cột cần tính -Loại bỏ các hàng trùng lặp trong kết quả -Lưu kết quả ra file text và hiển thị lên màn hình 5.Phép kết nối (join) -Load 2 quan hệ 1 và 2 vào A và B -Nhập vào điều kiện cần kết nối -Kiểm tra các hàng của A và B theo điều kiện cần kết nối -Đưa vào kết quả các hàng thỏa mản với các hàng của B nối tiếp sau A -Lưu kết quả ra file text và hiển thị lên màn hình 2/ Vẻ sơ đồ khối hoặc mả giả cho các thuật toán nói trên Begin a/Phép hợp Sơ đồ khối Gọi quan hệ 1 Ktra sự trùng lặp các hàng Loại bỏ Trùng lặp Không trùng lặp Lưu vào file kết quả Gọi quan hệ 2 Kiểm tra sự trừng lặp bộ 2 với bộ kết quả Loại bỏ Trùng lặp Không trùng lặp Thêm vào File kết quả Xuất ra màn hình File kết quả End Begin b.Phép giao Sơ đồ khối Gọi 2 quan hệ Kiểm tra các hàng trong mỗi quan hệ Loại bỏ Trùng lặp Không trùng lặp So sánh các hàng 2 quan hệ với nhau Loại bỏ Không trùng lặp Lưu vào File kết quả Trùng lặp Xuất ra màn hình File kết quả End c.Phép trừ Begin Sơ đồ khối Gọi quan hệ 1 Lưu vào File kết quả Gọi quan hệ 2 So sánh các hàng của kết quả với quan hệ 2 Không trùng lặp Trùng lặp Loại bỏ hàng đó khỏi File kết quả Xuất ra màn hình End Begin d/Phép chiếu Sơ đồ khối Gọi quan hê Nhập các trường cần chiếu Lược bỏ các trường được chiếu trong quan hệ Kiểm tra các hàng của các trường con lại Loại bỏ Trùng lặp Không trùng lặp Lưu vào File kết quả Xuất ra màn hình File kết quả End e/Phép kết nối Begin Sơ đồ khối Gọi 2 quan hệ Nhập điều kiện Kiểm tra điều kiện lần lượt từng hàng của qhệ 2 với qhệ1 Bỏ qua Không thỏa mản Thỏa mản Hàng của kết quả = hàng quan hệ 1 nối tiếp hàng quan hệ 2 Lưu vào file kết quả Xuất ra màn hình File kết quả End 3/Thiết kế giao diện a.Giao diện tổng quát b.Giao diện khi chạy chương trình 4.Viết CODE cho chương trình a.Việc nhập quan hệ và lưu xuống file Text *Code cho nút lệnh Add: Private Sub Command1_Click() Dim i, filename, FileNumber, anItem filename = App.Path 'chi duong dan hien tai If Right(filename, 1) "\" Then filename = filename & "\" 'neu ben phai duong dan con co cac duong dan khac thi duong dan se duoc them dau \ filename = filename & Text1.Text & ".txt" 'tao file If Dir(filename) "" Then 'duong dan da ton tai Open filename For Append As #2 'ghi de len Else Open filename For Output As #2 'tao moi End If Print #2, Text2 & " " & Text3 & " " & Text4 & " " & Text5 ' Viet vao cong so 2: Noi dung trong text 2345 cach nhau boi dau cach Close #2 ' Dong cong so 2 Text2.Text = " " Text3.Text = " " Text4.Text = " " Text5.Text = " " 'dua ket qua len file Listbox End Sub b.Chọn 2 quan hệ và thực hiện tính toán. Code: Private Sub Dir1_Change() File1.Path = Dir1.Path ‘Khi duong dan dir1 thay doi thi File 1 se thay doi theo End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive ‘khi duong dan Drive1 thay doi thi dir1 cung thay doi theo End Sub *Để hiển thị nội dung các File mình đã chọn lên Listbox ta sử dụng code cho việc click vào File đó. Private Sub File1_Click() Dim i, filename, FileNumber, anItem filename = App.Path If Right(filename, 1) "\" Then filename = filename & "\" filename = filename & File1.filename ‘Lay duong dan hien tai FileNumber = FreeFile Open filename For Input As FileNumber List1.Clear ' Xoa listbox truoc Do While Not EOF(FileNumber) Line Input #FileNumber, anItem List1.AddItem anItem Loop Close FileNumber Call getFileName ‘Goi ham hien thi File End Sub C.Phép toán và các nút lệnh *Chọn phép toán Lưu ý là khi chọn các phép chiếu và phép kết nối thì sẽ có các text box hiện ra cho ta nhập dữ liệu vào. *Nút lệnh tính toán. -Đọc file dạng text vào mảng 2 chiều Dim m As String Open filName For Input As #3 Dim h1 As Integer Dim ms() As String Line Input #3, m h1 = CInt(Val(Left(m, 1))) ReDim matranA(h1, 3) As Integer For k = 1 To h1 Line Input #3, m ms = Split(m, " ") For l = 0 To 3 matranA(k, l) = CInt(Val(ms(l))) Next Next Close #3 -Hàm chèn Public Function insert(a() As Integer, c() As Integer) dung = True l = 0 For k = 0 To 3 If c(l, k) = "" Then c(l, k) = a(l + 1, k) Else If c(l, 1) = a(l + 1, 1) Then Exit For Else l = l + 1 End If End If Next -Phép giao For I = 1 To h1 dung = True For k = 1 To h2 If matranA(I, 0) = matranB(k, 0) And dung Then Call insert(matranA(), matranC()) Else: k = k + 1 End If Next Next -PHEP HOP 'Dua ma tran A vao mang C For I = 1 To h1 For j = 0 To 3 Call insert(matranA(), matranC()) Next Next 'Dua ma tran B vao mang C For I = 1 To h2 For j = 0 To 3 Call insert(matranB(), matranC()) Next Next -Phép trừ For j = 1 To h1 dung = True For k = 1 To h2 If matranA(j, 0) = matranB(k, 0) And dung Then dung = True Else Call insert(matranA(), matranC()) End If Next Next -Phép chiếu a = Val(Text9.Text) b = Val(Text8.Text) For j = 1 To h1 For I = 0 To 3 If a = I Or b = I Then matranC(j, 0) = matranA(j, a) matranC(j, 1) = matranA(j, b) End If Next Next -Lưu kết quả tính toán dưới dạng file Ketqua.txt Open App.Path & "Ketqua.txt" For Output As filenum Print #filenum, h1; ""; c1 For f = 1 To h1 m = "" For g = 1 To c1 m = m & matranA(f - 1, g - 1) & " " Next Print #filenum, m Next Close #filenum */Nút lệnh hiển thị kết quả Private Sub Command4_Click() Dim i, filename, FileNumber, anItem filename = App.Path If Right(filename, 1) "\" Then filename = filename & "\" filename = filename & "ketqua.txt" FileNumber = FreeFile Open filename For Input As FileNumber List1.Clear ' Xoa listbox truoc Do While Not EOF(FileNumber) Line Input #FileNumber, anItem List1.AddItem anItem Loop Close FileNumber End Sub 5.Kiểm thử -Việc nhập dữ liệu vào File text thành công. Khi nhấn nút lệnh refresh thì file ta nhập sẽ hiện ra. Khi ta chọn File đó thì kết quả sẽ được hiển thị trên List1 (Hiển thị) -Sau khi chọn 2 file muốn tính toán. Ta click vào phép toán để chọn phép toán cần tính toán. Nhấn vào Button Tính toán và tiếp đó nhấn nút Kết quả để có thể xem được kết quả mà ta vừa tính ở trên. Dưới đây là kết quả thu được. Ngoài ra việc hiển thị trên Menu cũng được coi trọng *Khi click vao menu Hướng dẫn thì sẽ xuất hiện 1 Form hướng dẫn cách thực hiện. Để hiển thị nội dung lên hướng dẫn ta có đoạn Code sau: Private Sub Form_Load() Dim I, filename, FileNumber, anItem filename = App.Path If Right(filename, 1) "\" Then filename = filename & "\" filename = filename & "huongdan.txt" FileNumber = FreeFile Open filename For Input As FileNumber List1.Clear ' Xoa listbox truoc Do While Not EOF(FileNumber) Line Input #FileNumber, anItem List1.AddItem anItem Loop Close FileNumber End Sub *Đồng thời khi click vào About me sẽ hiển thị 1 Form nói về tác giả Đây là giao diện nên ta không cần Code phức tạp. III/Kết quả đạt được. 1.Kết quả kiểm thử Hầu như việc nhập và tính toán đều thành công. Các phép toán thực hiện tốt và cho kết quả như mong muốn. 2.Các lỗi phát sinh -Muốn thực hiện tính toán mà chưa chọn các File để tính toán cũng gây ra lỗi. -Việc nhập dữ liệu không cẩn thận cũng phát sinh ra lỗi do việc đưa File text vào mảng 2 chiều không đạt đúng yêu cầu. File text ko có hình dạng ma trận đúng kiểu. IV/Nhận xét, đánh giá, đề xuất 1.Nhận xét: Nhìn chung đồ án chạy tốt, cho ra kết quả đúng như mong muốn. Tuy nhiên còn một số lỗi phát sinh trong quá trình thực hiện như trên phần kiểm lỗi. 2.Đề xuất Do thời gian còn hạn chế và việc nghiên cứu chưa thật sâu nên còn có nhiều sai sót. Em mong rằng có thêm thời gian để chỉnh sửa lại thêm phần kiểm lỗi để có thể hoàn thiện chương trình hơn. Em xin cảm ơn thầy giáo hướng dẫn là thầy Nguyễn Đức Mận đã nhiệt tình giúp đỡ em hoàn thành đồ án này. Xin chân thành cảm ơn thầy cô và các bạn đã tạo điều kiện cho em thực hiện tốt đồ án.

Các file đính kèm theo tài liệu này:

  • docBao cao do an co so - ANhTIen.doc
  • docBia.doc
  • rarchuongtrinh.rar
  • docde tai do an cs.DOC