Xây dựng chương trình thi trắc nghiệm bằng Visual Basic.Net

PHẦN I. TÌM HIỂU NGÔN NGỮ CHƯƠNG 1 : TÌM HIỂU NGÔN NGỮ VISUAL BASIC.NET TỔNG QUAN VỀ VISUAL BASIC.NET : Giới thiệu VISUAL BASIC.NET : Sự phát triển của công nghệ thông tin chủ yếu dựa trên các phát triển về công nghệ phần cứng và phân mềm . Trong những năm gần đây , các linh kiện máy tính ngày càng mạnh , tốc độ xử lý ngày càng cao , giá thành ngày càng rẽ. Công nghệ phần mềm đáp ứng các phát triển đó một cách tích cực , các trình ứng dụng cung cấp nhiều tính năng mới , đặc biệt là tính ti

doc102 trang | Chia sẻ: huyen82 | Lượt xem: 4235 | Lượt tải: 1download
Tóm tắt tài liệu Xây dựng chương trình thi trắc nghiệm bằng Visual Basic.Net, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
n cậy , tính dễ sử dụng và năng lực xử lý cao . Sự phát triển phần mềm dựa trên nền tảng ngôn ngữ lập trình . Lập trình hướng đối tượng là một trong những hướng phát triển mới , bao quát các trình ứng dụng thực tiển trên máy tính và trên mạng . Nhiều khái niệm , kỹ thuật và tính năng mới xuất hiện trong ngôn ngữ lập trình hướng đối tượng . Một trong những ngôn ngữ lập trình hướng đối tượng hiện nay là Visual Basic .NET của Microsoft . Đặc điểm nổi bậc của ngôn ngữ lập trình này là khả năng xây dựng các đối tượng có tính tương thích cao . Đối tượng được xây dựng trong VB.NET có thể được dùng một cách dễ dàng trong mọi ngôn ngữ hướng đối tượng khác và ngược lại . Đối tượng không chỉ được dùng cho trình ứng dụng tại chổ mà còn có thể được dùng trên mạng một cách rộng rãi . Các đối tượng được xây dựng dựa trên các đơn vị mã tiêu chuẩn , được viết sẳn . Các đơn vị mã đó sắp xếp theo module . Với các module bạn có thể lắp ghép và chỉnh sửa để có trình ứng dụng theo các yêu cầu cụ thể . Bạn có thể lắp ráp máy tính cá nhân từ các linh kiện rời và với OOP bạn có thể viết trình ứng dụng từ các module rời . Với phiên bản của Visual Basic.NET , bạn có thể sử dụng các hàm , thuộc tính và các công cụ khi tạo một ứng dụng , ngay cả khi bạn đã sử dụng Visual Basic 5 hoặc Visual Basic 6 thì phiên bản Visual Basic mới cũng có khá nhiều khác biệt nhỏ . Tuy nhiên , Microsoft đã tăng thêm cho bạn nhiều điều khiển , thêm vào một vài lệnh mới và giới thiệu mô hình thiết kế mới tạo các chương trình ứng dụng trên Web hoặc Windows từ ngay trong môi trường Visual Basic.NET Thay đổi lớn nhất diễn ra chủ yếu trong lĩnh vực truy cập trên Web và khả năng chuyển ứng dụng trên Windows sang Internet . Bạn có thể làm điều này bằng cách sử dụng cơ cấu .NET. Visual Basic.NET cung cấp cho bạn nhiều công cụ để tạo những ứng dụng có thể chạy được trên Web cùng với xây dựng những ứng dụng chuẩn cũ của Windows . Cứ mỗi phiên bản mới của Visual Basic ta lại phát hiện ra được những cách mới và tốt hơn của việc thể hiện các phương thức căn bản hoặc thêm những phương thức mới vào ứng dụng . Visual Basic.NET có nhiều thuộc tính hơn , thậm chí có thể phát triển ứng dụng dễ dàng hơn . Một thay đổi là việc hổ trợ thiết kế form . Bạn có thể sử dụng hai loại form khác nhau : một form cho ứng dụng căn bản trên windows và một form cho ứng dụng cơ bản trên web. Thay đổi chủ yếu khác của ngôn ngữ Visual Basic là khả năng tạo điều khiển xử lý lỗi , sử dụng phương thức mới để kiểm tra lỗi . Những nét mới trong VISUAL BASIC.NET Visual Basic.NET là phiên bản mới tiếp của Visual Basic . Microsoft đã thiết kế lại các sản phẩm nhằm tạo sự dễ dàng hơn trước đây trong việc viết các ứng dụng phân tán , như Web . Visual Basic.NET có hai phần hổ trợ cho việc tạo form ( Windows forms và Web form) và một phiên bản mới của ADO về truy cập nguồn dữ liệu . Hơn nữa , nóù thể hiện đa ngôn ngữ lập trình , loại bỏ những cái cũ , vô hiệu hóa các từ khóa không hữu ích cùng với rất nhiều những thay đổi khác . Các thuộc tính mới này sẽ cho phép bạn tạo cả ứng dụng Client/Sever và ứng dụng Internet . Với Web Form và ADO.NET , bây giờ bạn có thể nhanh chóng phát triển các Web Site . Với việc thêm vào các khả năng kế thừa , ngôn ngữ Visual Basic giờ đây là môi trường lập trình hướng đối tượng : Các giao diện trên Windows hỗ trợ các khả năng truy cập và kế thừa rất hiệu quả . Cuối cùng việc cài đặt và thực thi không cần phải đăng ký với Registry gì cả . Visual Basic.NET tích hợp đầy đủ với những ngôn ngữ Microsoft Visual Studio .NET . Bạn không chỉ có thể phát triển các thành phần của ứng dụng bằng các ngôn ngữ lập trình khác , các lớp của bạn cũng có thể thừa hưởng từ các lớp được viết bằng các ngôn ngữ khác sử dụng tính năng kế thừa đa ngôn ngữ . Với trình bắt lỗi , bạn có thể bắt lỗi nhiều ứng dụng với các ngôn ngữ khác nhau cho chương trình đang thi hành cục bộ hoặc từ các máy truy cập từ xa . Bất cứ ngôn ngữ nào bạn sử dụng , cơ cấu Microsoft .NET cũng cung cấp một tập hợp API cho việc sử dụng trên Windows và cả trên Internet . Những thay đổi với bản thân ngôn ngữ Visual Basic : Những phiên bản trước đây của Visual Basic hướng đến những ứng dụng Client chuẩn , trọng tâm của Visual Basic.NET với việc tạo các ứng dụng dịch vụ Web cũng tốt như các ứng dụng Client chuẩn trên Windows . Việc này được thực hiện bởi các chương trình quản lý mã chung cho cơ cấu .NET Framework và bộ diễn dịch ngôn ngữ thông dụng – Common Language Runtime . Đương nhiên , nó yêu cầu phải có những thay đổi lớn đối với ngôn ngữ Visual Basic. Với những thay đổi chính đòi hỏi phải tạo ra một bộ khung .NET Framework và thư viện Runtime mới , Microsoft nghĩ rằng đây cũng chính là cơ hội tốt để xóa sạch những khía cạnh lỗi thời của ngôn ngữ Visual Basic . Microsoft có ý định thay đổi để thực hiện những điều sau đây : + Đơn giản hóa ngôn ngữ và làm cho chúng phù hợp hơn . + Thêm vào những tính năng mới theo yêu cầu . + Tạo ra những chương trình nguồn dễ đọc và dễ bảo vệ hơn . + Phát triển những tiến trình xử lý lỗi . + Tạo các ứng dụng dễ bắt và gỡ lỗi . Giao diện Windows Forms mới : Windows Forms là một phần của cơ cấu .NET Framework với nhiều kỹ thuật mới bao gồm một cơ cấu ứng dụng thường , quản lý môi trường thực thi , bảo mật và hướng đối tượng . Windows Forms cũng đưa ra đầy đủ những hổ trợ cho việc nhanh chóng và dễ dàng để kết nối với dịch vụ Web XML , xây dựng nên những ứng dụng nhận biết dữ liệu được tạo cơ bản trên ADO.NET . Với môi trường phát triển chia xẻ với Visual Studio , các nhà phát triển có thể tạo ra các ứng dụng Windows Forms bằng bất kỳ ngôn ngữ nào có hổ trợ nền .NET . Bạn có thể tạo một ứng dụng Windows Forms như cách bạn đã làm trong phiên bản trước của Visual Basic : Đặt các điều khiển ở một vị trí trên form thay đổi thuộc tính cho chúng và nhấp đúp vào điều khiển để mở Source Editor . Visual Inheritance : Visual Inheritance là một tính năng mới của Windows Forms sẽ thúc đẩy các nhà phát triển hoàn thành sản phẩm và dễ dàng sử dụng lại các chương trình nguồn ( source code ) cũ . Chẳng hạn , bạn có thể định nghĩa một giao diện chuẩn có chứa các phần tử như trình đơn ( menu ) hay là thanh công cụ (toolbar) Bạn có thể sử dụng form này trong những ứng dụng khác thông qua kế thừa và mở rộng nó đáp ứng các yêu cầu của những ứng dụng đặc biệt , hãy chú trọng đến giao diện cho người dùng thông thường và giảm bớt công sức làm việc không phải tạo lại các form tương tự . Thiết kế một form chính xác : Với Windows Forms mới , những tính năng như Menu Designer , Anchoring , Docking và nhiều điều khiển khác có thể mạnh hơn và hợp cho các nhà phát triển xây dựng giao diện người dùng trên Windows hơn . Windows Forms cung cấp cho bạn tập hợp các kỹ thuật xây dựng ứng dụng cơ bản trên Windows . Có những điều khiển và thuộc tính mới tốt cho việc hòa hợp các giao diện người dùng ; Windows Forms cũng cung cấp thuộc tính bảo mật . Giao diện Web ( Web form ) : Web Form được tạo để chỉ định sự khác biệt giữa những kỹ thuật được sử dụng để xây dựng một ứng dụng trên Windows và chúng được sử dụng để tạo một ứng dụng trên Web . Với Visual Basic .NET , bạn có thể nhanh chóng phát triển ứng dụng để chạy được trên Internet bằng những kỹ thuật tương tự mà bạn đã được học ở Visual Basic . Để tạo một ứng dụng trên Web , bạn thêm một Web Form vào dự án , kéo thả các điều khiển (control) cần thiết vào trang . Dấu mã chương trình tách biệt khỏi mã HTML. Các phiên bản trước đây của công cụ Visual Studio đã cố gắng đơn giản hóa công việc phát triển trên Web . Ví dụ , Visual Basic đã cung cấp hỗ trợ cho DHTML Client và WebClasses ; Visual InterDev phục vụ cho phát triển ASP (Active Server Pages ). Web Form đưa ra những giải pháp làm việc hữu dụng hơn để xây dựng ứng dụng Web với Visual Basic .NET . Web Form mô tả sự biến đổi của ASP và Web Classes , cung cấp cách tốt nhất cho cả hai mô hình . Chuyển biến từ Visual Basic 6 : Tên thì gần gũi với Visual Basic 6.0 (VB6.0), nhưng Visual Basic.NET (VB.NET) lại là phiên bản có nhiều thiết kế mới về kiểu dữ liệu , phương thức truy cập dữ liệu , tính hướng đối tượng … Tại sao lại phải thay đổi thiết kế của ngôn ngữ Visual Basic – một trong những ngôn ngữ được sử dụng rộng rãi nhất hiện nay ? VB 6.0 được hàng triệu thảo chương viên trên khắp thế giới sử dụng nhờ cú pháp dễ hiểu và khả năng phát triển nhanh . VB 6.0 và các công cụ khác của Microsoft tích hợp trong phiên bản đầu tiên của bộ Visual Studio đã được thiết kế không tính đến Web . Do chậm chân trong lĩnh vực công nghệ Internet và ứng dụng phân tán , Microsoft đã phải bổ sung”chắp vá” cho bộ công cụ Visual Studio để hổ trợ môi trường phát triển mới . Khả năng phát triển ứng dụng Web của các công cụ Visual Studio rất hạn chế , phải dùng nhiều kỹ thuật khác nhau để tạo ứng dụng phân tán , không tối ưu cho môi trường Web. VB.NET giải quyết tất cả các vấn đề trên . Bộ công cụ này đã được thiết kế lại từ đầu để hổ trợ phát triển dễ dàng ứng dụng Web và Client/Server trong môi trường phân tán và không kết nối . Khác biệt giữa VB 6.0 và VB.NET có thể phân thành hai nhóm ( như bảng 1 ) : + Thay đổi về kỹ thuật cải thiện hiệu suất ứng dụng . + Thay đổi trong cú pháp và cách thức lập trình. Bảng 1 VB 6.0 > < VB. NET Tính năng VB 6.0 VB.NET Tính kế thừa đầy đủ Thực hiện phương pháp kế thừa giả . Thực hiện kế thừa đầy đủ các lớp con riêng dẫn xuất các thuộc tính và phương thức từ lớp cơ bản được viết bằng ngôn ngữ .NET C++ hay C#. Khả năng tương tác Dùng các biến khác với C++ và Java , làm cho các ứng dụng viết bằng VB và C++ khó tương tác với nhau Các kiểu biến nhất quán với C++ và C# trên nền CLR. Tạo ứng dụng Tạo tập tin .EXE nhưng lệ thuộc vào các thư viện DLL hỗ trợ . Việc triển khai khó khăn vì phải phân phối không chỉ tập tin .EXE mà cả các thư viện DLL. Tạo tập tin .EXE có thể chạy không cần đến các thư viện DLL hỗ trợ . Phân luồng Không thể tận dụng hết các tính năng phân luồng có trong .COM Cho phép phân luồng linh động , tăng tính khả mở cho ứng dụng . Thay đổi về kỹ thuật : Thay đổi kỹ thuật trong VB.NET là yếu tố dẫn đến thay đổi cú pháp và cách thức lập trình ; xuất phát từ mục tiêu kỹ thuật mà Microsoft hướng đến trong phiên bản của VB . Để VB thống nhất về mặt kỹ thuật với C++ và C# , Microsoft đã phát triển CLR (Common Language Runtime) thành nền tảng chung . VB không còn là công cụ sinh mã giả nữa , CLR làm cho nó trở thành ngôn ngữ hướng đối tượng thực sự và đặt nó ngang cấp với C++ và C# . Về mặt kỹ thuật , một ứng dụng được tạo bởi VB.NET không có gì khác biệt so với ứng dụng tạo bằng C++ và C#. Thay đổi về cú pháp : Tuy những thay đổi về mặt kỹ thuật trong VB.NET cực kỳ quan trọng ( và rất được hoan nghênh ) nhưng lại không dễ nhận biết như những thay đổi trong cú pháp và cách thức lập trình . Chúng ảnh hưởng nhiều đến khả năng chuyển đổi ứng dụng VB 6.0 sang VB.NET . Trong bộ công cụ Studio.NET , Microsoft có cung cấp tiện ích Upgrade Winzard để chuyển đổi ứng dụng VB 6.0 sang VB.NET. Thay đổi về kiểu dữ liệu : VB.NET đã nói lời chia tay với kiểu dữ liệu Variant , Short và Long . VB.NET kết hợp kiểu dữ liệu Object và Variant thành kiểu dữ liệu Object duy nhất . Variant là kiểu dữ liệu mặc định của VB 6.0 được gán cho tất cả các biến không được khai báo kiểu dữ liệu . Kiểu Variant còn được gán cho các biến ngoài biến đầu tiên trên cùng một dòng khai báo . Khai báo biến ipCount là Integer và ipNumber là Variant . Khai báo dữ liệu Integer giờ đây là Short (16 bit) và kiểu dữ liệu Long là Integer (32 bit) . Kiểu Long giờ đây là số 64 bit . Tiện ích Upgrade Winzard thực hiện rất tốt việc thay các dữ liệu này . Cú pháp cũ bị loại bỏ : Để đảm bảo tính tương thích ngược , các phiên bản VB trước đây có chứa cú pháp cũ thể hiện các kỹ thuật lập trình xa xưa . Các từ khóa trong bảng 2 đã bị loại bỏ khỏi VB.NET. Def ( DefInt , DefBool , DefByte , … ) GoTo GoSub Option Base 0 | 1 VarPtr , ObjPtr , StrPtr Lset Bảng 2 : Các từ khóa VB 6.0 không còn được hỗ trợ trong VB.NET. Chuyển biến từ Visual Basic 6 : Visual Basic .NET là nền tảng cơ bản , từ việc phát triển ứng dụng Windows đến việc xây dựng ứng trên Web . Vì lý do này , chương trình của bạn cần được nâng cấp để khai thác hết những thuận lợi của Visual Basic .NET . Microsoft cung cấp công cụ Upgrade Winzard ( nâng cấp theo sự hướng dẫn từng bước ) để giúp bạn thi hành tác vụ này . Khi bạn mở một dự án của Visual Basic 6 trong Visual Basic .NET , Upgrade Wizard sẽ chạy tự động và tạo ra một dự án mới của Visual Basic .NET được lấy từ dự án đang có của bạn . Khi dự án của bạn đã nâng cấp , ngôn ngữ được chỉnh sửa lại vì những thay đổi cú pháp và các form Visual Basic 6 được chuyển thành Windows Forms . Trong hầu hết các trường hợp bạn sẽ phải tự làm một số thay đổi trong mã của bạn mỗi khi nâng cấp vì các đối tượng và các thuộc tính ngôn ngữ hoặc không có sự tương đương trong Visual Basic .NET . Sau khi nâng cấp , có thể bạn cũng muốn hiệu chỉnh ứng dụng của mình để khai thác các mặt thuận lợi của một số tính năng mới hơn trong Visual Basic .NET . Upgrade Wizard bắt đầu khi bạn mở một ứng dụng VB 6 . Nó sẽ hỏi bạn về kiểu của dự án và tập hợp các chọn lựa cho ứng dụng . Bước tiếp theo là chỉ ra nơi bạn muốn lưu trữ dự án .NET mới . Nên nhớ rằng dự án nguyên bản của bạn sẽ không được hiệu chỉnh . Mỗi lần hoàn thành , dự án mới sẽ được mở lại trong cửa sổ Solution Explorer . Bạn có thể cho hiển thị Upgrade Report để xem những gì hữu dụng mà bạn cần trong quá trình nâng cấp dự án . Làm việc với các bộ xử lý lỗi : Không có gì tốt đẹp mãi mãi , chương trình của bạn sẽ đến lúc phát sinh lỗi chẳng hạn chương trình bị treo , ỗ đĩa sẽ ngưng hoạt động các tập tin sẽ bị xóa … Những vấn đề như thế chính là lỗi khi chạy chương trình . Lỗi trong lúc chạy chương trình được chia làm hai loại : một là những lỗi được nhận dạng và sửa ngay trước khi ứng dụng được đưa đến người sử dụng và một là những lỗi phải được xử lý trong khi chương trình đang chạy . Tìm hiểu các kiểu lỗi : Tổng quan về lỗi : Lỗi là các vấn đề về lập trình xảy ra trong khi thiết kế , tạo và kiểm tra qua từng giai đoạn phát triển ứng dụng . Có bốn kiểu lỗi khác nhau : Lỗi cú pháp : Lỗi cú pháp được giải quyết trong trình soạn thảo (Code Editor) . Nếu đoạn mã của bạn có một dòng không đúng , Code Editor sẽ báo cho bạn trước khi bạn tiếp tục và sau đó thậm chí sẽ hiển thị cú pháp của câu lệnh mà bạn đang sử dụng với các thuộc tính , phương thức hoặc sự kiện giúp bạn có thể sử dụng trên dòng đó . Điều này cho phép bạn tập trung nhiều vào tính logic của ứng dụng hơn là bạn phải tự nhớ và đánh vào lệnh . Tuy nhiên , khi bạn đã sửa xong một lỗi cú pháp , thì nó sẽ không xuất hiện nữa . Lỗi biên dịch : Lỗi này sẽ xuất hiện khi đoạn mã của bạn không hợp với cấu trúc lệnh chuẩn của VB. Hơn nữa , lỗi biên dịch được hiển thị khi bạn biên dịch ứng dụng , cho phép bạn sửa chữa và sau đó bỏ qua . Lỗi logic Là lỗi khó tìm nhất trong ứng dụng vì khi ứng dụng thực thi sẽ không báo lỗi gì cả . Tuy nhiên , ứng dụng có thể sẽ không xử lý và cho kết quả như mong muốn . Lỗi khi chạy chương trình : Thường xuất hiện rơi vào một trong những vấn đề sau : + Lỗi tập tin : Lỗi tập tin thường xảy ra vì thông số tập tin không thích hợp khi được xử lý bởi ứng dụng . Thông thường người sử dụng có thể sửa những lỗi này và ứng dụng có thể tiếp tục từ khi lỗi được sửa. Dưới đây là bảng mã lỗi về tập tin . Mã lỗi Thông báo lỗi 52 Bad filename or number 53 File not found 54 Bad fiel mode 55 File already open 58 File already exists 59 Bad record length 61 Disk full 62 Input pas end of file 63 Bad record number 64 Bad filename 67 Too many files 74 Can’t rename with different drive 75 Path/File access error Path not found + Lỗi vật lý : Nhóm lỗi thông thường này được gây ra bởi môi trường vật lý hoặc phần cứng của máy tính . Người dùng có thể hoặc không thể sửa những lỗi này một cách nhanh chóng . + Lỗi đoạn mã : Người sử dụng không thể sửa lỗi của đoạn mã . Cách tốt nhất để giải quyết những lỗi này là tạo một thông báo cho người dùng và thoát khỏi chương trình . Sau khi bạn có thông tin này bạn phải tìm ra vấn đề trong đoạn mã ứng dụng , sửa nó , biên dịch lại và sau đó thực thi lại ứng dụng . + Lỗi CSDL : Lỗi này xảy ra khi quan hệ đến dữ liệu , bao gồm những lỗi có quan hệ đến kiểu dữ liệu hoặc kích thước file : sự hạn chế truy cập bảng dữ liệu, nhân bản hoặc không cho phép sửa dữ liệu được thêm vào CSDL . Những lỗi liên quan đến SQL hoặc một mẩu tin trắng mà đúng ra là không được rỗng . Tiến trình xử lý lỗi : Khi bạn bắt đầu nghĩ về việc tạo một chương trình xử lý lỗi cho ứng dụng của mình , hãy hiểu rằng các điều khiển lỗi trong VB không dễ hiểu như trong phiên bản cũ , được viết bởi nhiều ngôn ngữ như COBOL , BASIC . Điều đó đúng so với một số nguyên nhân sau : + Visual Basic là mô hình hướng sự kiện , nghĩa là mỗi sự kiện xảy ra sẽ triệu gọi một tác vụ thực thi nào đó . + Visual Basic sử dụng ngăn xếp để theo dõi chương trình đang được xử lý và để tách những biến cục bộ trong chương trình . Khi ứng dụng của bạn có một chương trình con , nó có thể làm mất giá trị của biến cục bộ . Điều này sẽ làm cho quá trình thực thi rất khó tiếp tục lại sau khi lỗi được giải quyết xong. + Tất cả các lỗi đều là cục bộ . Nếu một lỗi phát sinh , nó nên được xử lý trong chương trình con nơi mà lỗi xảy ra , nghĩa là bạn phải viết một điều khiển lỗi cho chương trình xử lý mà bạn cần thêm vào ứng dụng của mình . Quá trình xử lý lỗi không cấu trúc : Quá trình xử lý lỗi không có cấu trúc là cách gọi mới của tiến trình cũ . Phương pháp cũ của việc kiểm tra lỗi trong VB là sử dụng câu lệnh On Error and Resume . Câu lệnh On Error bật chế độ kiểm tra lỗi cho một procedure hoặc một module và sau đó chuyển sự thực thi của chương trình đến đoạn lỗi được xác định trong câu lệnh On Error . Đoạn lỗi sau đó kiểm tra xem lỗi gì xảy ra để xử lý cho phù hợp . Câu lệnh On Error : Với câu lệnh On Error bạn có thể kích hoạt và vô hiệu hóa các bẫy lỗi trong ứng dụng , chỉ định vị trí của chương trình xử lý lỗi để thực thi cho một chương trình hoặc một form đã cho. Câu lệnh On Error bao gồm 3 phân loại khác nhau : + On Error Goto (Label) kích hoạt chương trình xử lý lỗi tại vị trí một nhãn (label) chỉ định trong câu lệnh . Nếu một lỗi xuất hiện trong khi chương trình xử lý lỗi được kích hoạt , điều khiển sẽ nhảy đến dòng đầu tiên của đoạn mã trong chương trình xử lý lỗi . Đây là cách chung nhất khi sử dụng câu lệnh On Error. + On Error Resume Next gởi điều khiển đến câu lệnh ngay chổ xảy ra lỗi . Với phương pháp này bạn có thể bẫy một lỗi và ứng dụng có thể bỏ qua nó một cách đơn giản . + On Error Goto 0 làm mất hiệu lực chương trình điều khiển lỗi trong thủ tục procedure hiện hành . Bạn có thể sử dụng câu lệnh này để tạm thời làm cho chương trình xử lý lỗi trong procedure không hoạt động . Sau đó bạn cần phải thực thi bản đầu tiên hoặc thứ hai của câu lệnh để kích hoạt lại chương trình xử lý lỗi . Khi bạn thêm một chương trình xử lý lỗi vào một procedure xử lý sự kiện hoặc vào chương trình con hoặc function mà bạn tạo ra , nó nên được đặt vào cuối của chương trình . Bạn cũng cần đặt một câu lệnh Exit Sub để thoát khỏi chương trình nếu điều khiển thực thi đến dòng cuối của chương trình . Câu lệnh Resume : Nếu có một lỗi được bẫy bằng một chương trình xử lý lỗi và điều khiển được gởi đến chương trình xử lý lỗi , cách duy nhất để làm mất hoạt động và quay lại từ chương trình là thực thi một trong ba dạng câu lệnh Resume : + Resume (Label): xác định vị trí nhãn (label) nơi bạn muốn điều khiển của ứng dụng quay trở lại . + Resume Next: thực thi tiếp tục câu lệnh ngay sau câu lệnh xảy ra lỗi . + Resume(0): thực thi lại câu lệnh có lỗi . Nếu chương trình xử lý lỗi giải quyết nguyên nhân lỗi xảy ra , bạn có thể sử dụng Resume(0) để xử lý lại các thao tác . Các đối tượng xử lý lỗi ERR được cài đặt sẳn : Đối tượng Err có thể được truy cập bất kỳ ở đâu trong ứng dụng VB . Phương thức và thuộc tính của đối tượng Err : Kiểu Diễn giải Number Mã số lỗi. Source Tên của file Visual Basic đang xảy ra lỗi . Description Diễn giải mã số lỗi được tìm thấy trong thuộc tính Number. HelpFile Đường dẫn và tên file đầy đủ của file hướng dẫn hỗ trợ thông báo lỗi . HelpContext Chỉ số help trong file hướng dẫn Help. LastDLLError Đoạn mã lỗi của lời gọi thực thi cuối cùng đến DLL. Clear Xóa tất cả các thiết lập thuộc tính của đối tượng Err. Đối tượng Error và những tập hợp lỗi liên quan có sẳn chỉ khi ứng dụng đang sử dụng một trong những thư viện DAO . Các đối tượng Error là lớp con của đối tượng Connection được sử dụng để duy trì các thông tin về lỗi CSDL có thể xảy ra trong ứng dụng . Thuận lợi của đối tượng Error bao gồm cả đối tượng Err là nó chứa nhiều thuộc tính có quan hệ trực tiếp với CSDL , để nó có thể kết nối khi cần . Đối tượng Err chỉ trả về lỗi xảy ra cuối cùng . Giới thiệu về điều khiển xử lý ngoại lệ ( Exception) có cấu trúc : Điều khiển ngoại lệ (exception) có cấu trúc cho phép bạn định nghĩa các khối mã được tạo ở dạng bảo vệ . Một đoạn mã ở dạng bảo vệ là một phần hoặc một khối đang được kiểm tra bởi một hoặc nhiều chương trình điều khiển lỗi kết hợp với nhau . Mỗi bộ điều khiển lỗi xác định những dạng điều khiển ngoại lệ xử lý khác nhau . Khi một ngoại lệ Exception được phát sinh bởi đoạn mã trong khối ở dạng bảo vệ thì tập hợp các trình điều khiển thích hợp sẽ được tìm kiếm theo thứ tự và cái đầu tiên có điều kiện thích hợp được thực thi . Bạn có thể thêm điều khiển ngoại lệ có cấu trúc vào ứng dụng bằng cách sử dụng phát biểu Try … Catch … Finally . Tiến trình xử lý TRY… CATCH … FINALLY: Tìm hiểu tiến trình : Cú pháp Try … Catch … Finally tương tự với cấu trúc mà bạn cảm thấy quen thuộc với câu lệnh Select Case hoặc câu lệnh While . Trước khi bạn hiểu cách sử dụng của tiến trình xử lý lỗi mới này , xem kỹ cú pháp của câu lệnh , cú pháp đầy đủ như sau : Try TryStatements [Catch1 [exception [As type]] [when expression] CatchStatements1 [Exit Try] [Catch2 [exception [As type]] [when expression] CatchStatements2 [Exit Try] [Catchn [exception [As type]] [when expression] CatchStatementsn [Exit Try] [Finally Try] FinallyStatements End Try Đối số của câu lệnh Try … Catch … Finally được mô tả như sau : Đối số Diễn giải TryStatements Khối của đoạn mã có lỗi xảy ra. Exception Tên biến . Giá trị khởi tạo là giá trị của lỗi xảy ra . Type Xác định kiểu của điều kiện. Expression Biểu thức có điều kiện. CatchStatements Khối của đoạn mã sẽ xử lý lỗi đã xảy ra trong khối Try. Exit Try Câu lệnh thoát khỏi tiến trình Try … Catch … Finally FinallyStatements Khối đoạn mã được thực thi sau khi tất cả tiến trình xử lý lỗi khác được làm . + Khối Try : Khối Try chứa phần đoạn mã bạn muốn trình điều khiển lỗi hiển thị lên màn hình . Nếu một lỗi xuất hiện trong khi thực thi bất kỳ đoạn mã nào , VB tìm mỗi câu lệnh CatchStatements trong đoạn Try .. Catch … Finally cho đến khi tìm thấy một mã điều kiện của nó tương ứng với lỗi . Nếu có một điều kiện được tìm thấy, điều khiển sẽ chuyển đến dòng đầu tiên của đoạn mã trong khối Catch . Tiến trình này tiếp tục qua tất cả các câu lệnh catch cho đến khi một khối catch thích hợp được tìm thấy . Nếu không tìm được gì cả thì VB sẽ phát sinh một lỗi . + Khối Catch : Nếu có ngoại lệ exception xảy ra trong quá trình xử lý của khối Try , mỗi câu lệnh Catch được xem xét theo thứ tự để xác định nó có xử lý exception xảy ra không . Các xác định trong câu lệnh Catch là biểu thị cho exception bị ném ra . + Khối Finally : Khối Finally được thực thi khi quyền thực thi không còn là một phần của câu lệnh Try . Không có thao tác rõ ràng nào được yêu cầu để thực thi khối Finally . Khi quyền thực thi của đoạn mã thoát khỏi câu lệnh Try , hệ thống sẽ tự động thực thi khối Finally và chuyển quyền thực thi đến đích cuối cùng đã định trước . Phát sinh Exception: Một chương trình cho biết lỗi ngoại lệ exception phát sinh bằng cách sử dụng phát biểu Throw . Chuyển đổi từ On Error Goto … Resume: Do không có sự tương đương về câu lệnh Resume trong câu lệnh Try Catch Finally , việc chuyển đổi đoạn mã của bạn từ On Error chuẩn với Resume hơi phức tạp . Tìm lỗi trong chương trình Bạn có thể thực hiện tiến trình kiểm tra và sửa chữa một cách đơn giản hơn bằng cách bám vào những khái niệm và những phương pháp sau : + Phải chắc chắn rằng thông số Explicit được thiết lập (thường là mặc định) để tránh ghi sai tên biến và tên các đối tượng . + Chứa những thủ tục bẫy lỗi được thiết kế tốt (bằng cách dùng Try … Catch) . + Giữ cho nội dung cài đặt của thủ tục ngắn và dễ kiểm soát . + Bật chế độ cho VB.NET định dạng mã nguồn một cách tự động , viết thụt vào những nơi cần thiết . + Đặt tên gợi nhớ cho form , đối tượng và biến để bạn có thể biết chúng là gì và chúng làm những gì . Những gợi ý trên sẽ giúp bạn giải quyết những vấn đề có thể xảy ra bất ngờ liên quan đến cú pháp , biên dịch hoặc những lỗi khi chạy . Môi trường Debugging : Để kiểm tra và sửa lỗi ứng dụng bạn phải hiểu ba chế độ mà bạn sẽ làm việc trong ứng dụng . Bảng dưới đây mô tả các chế độ và những hành động có thể áp dụng trong từng chế độ . Chế độ Mô tả Design Hầu hết công việc tạo một ứng dụng được thực hiện trong chế độ thiết kế. Bạn có thể thiết kế các form , vẽ các điều khiển , viết mã và dùng cửa sổ Property để thiết lập hoặc hiển thị bất kỳ thuộc tính nào . Tuy nhiên bạn không thể thực thi đoạn mã hoặc sử dụng những công cụ sửa chữa lỗi , ngoại trừ việc thiết lập điểm dừng và tạo các biểu thức watch . Run Khi bạn chạy ứng dụng , bạn tiếp xúc với ứng dụng giống như với người sử dụng . Bạn vẫn có thể xem được mã nguồn nhưng không thể thay đổi được nó . Break Sự thực thi ứng dụng bị gián đoạn , bạn có thể xem và chỉnh sửa được mã nguồn , kiểm tra hoặc sửa dữ liệu , khởi động lại ứng dụng , dừng sự thực thi hoặc tiếp tục thực thi từ điểm dừng . Làm việc với CRYSTAL REPORTS : Một trong những đặc điểm quan trọng mà bạn có thể thêm vào ứng dụng là khả năng in ra dữ liệu trong cơ sở dữ liệu của ứng dụng . Trong phần này , người sử dụng sẽ có thể có một cái nhìn chuyên nghiệp , dễ dàng tạo và sử dụng các report (báo cáo) từ ứng dụng mà họ đang dùng . Trong VB 3 , Microsoft đưa vào phiên bản của Crystal Reports cùng với sản phẩm phát triển . Tuy nhiên nó không bao giờ hòa hợp một cách đầy đủ với Visual Studio IDE . Bạn luôn phải chạy một công cụ thiết kế riêng biệt độc lập của Visual Basic . Trong VB.NET Crystal Reports là một thành phần được sát nhập một cách đầy đủ vào môi trường phát triển . Crystal Reports cung cấp cơ chế tạo và thiết kế report hoàn chỉnh , bạn có thể dùng trong Visual Basic và những chương trình Windows cùng với các ứng dụng Web. CRYSTAL REPORTS Là gì ? Crystal Report là một ứng dụng mạnh cho phép bạn tạo các report , các danh sách và các nhãn có sẳn từ dữ liệu trong ứng dụng cơ sở dữ liệu . Khi Crystal Reports liên kết với cơ sở dữ liệu , nó đọc các giá trị từ các field mà bạn chọn và đặt chúng vào report , các field có thể đứng một mình hoặc là một phần của công thức dùng phát sinh những giá trị phức tạp hơn . Bạn có thể dùng rất nhiều các công cụ có sẳn để điều khiển dữ liệu phù hợp với yêu cầu của report . Các công cụ đó cho phép bạn : + Tạo các phép tính từ đơn giản đến phức tạp . + Tính toán tổng lớn và nhỏ . + Tính tổng cộng các mẩu tin trong một hoặc nhiều câu truy vấn. + Tính trung bình . + Kiểm tra sự hiện diện của các giá trị xác định. + Lọc các mẩu tin của cơ sở dữ liệu . Dữ liệu có thể được cài đặt và được định dạng một cách chính xác ở những nơi mà bạn cần khi thiết kế report . Bằng cách sử dụng Crystal Reports , report của bạn có thể phức tạp hoặc là đơn giản tùy theo yêu cầu của chương trình . Sau khi thiết kế xong report cho ứng dụng bạn có thể sử dụng nó trong ứng dụng hoặc làm theo mẫu để tạo các report tương tự khác . Mặc dù hầu hết các cơ sở dữ liệu đều chứa phần cho phép sinh ra các report , nhưng chúng thường quá khó đối với những người lập trình không chuyên nghiệp sử dụng , và thường yêu cầu bạn phải hiểu biết về cách làm việc của chương trình . Crystal Reports là công cụ dành cho cả hai đối tượng : người dùng cuối (end user) và nhà phát triển chương trình . Cùng với khái niệm thiết kế của Visual Basic , Crystal Reports có thể kết nối với bất kỳ cơ sở dữ liệu nào . Bạn làm điều này bằng cách sử dụng một trong các phương thức sau : + OLE DB (ADO) , ADO.NET , ODBC (RDO or RDS) , File cơ sở dữ liệu (các file cục bộ , dBASE). Chú ý : Mặc dù ODBC và OLE DB được dùng để kết nối với nhiều cơ sở dữ liệu phức tạp như SQL Server 2000 và Oracle nhưng chúng cũng có thể dùng cho Paradox và Microsof Access. Thêm điều khiển vào CRYSTAL REPORTS: Crystal Report Viewer: Bước đầu tiên trong việc hiển thị một Crystal Reports trong ứng dụng là thêm Crystal Report Viewer vào form mới trong dự án . Qua việc hiển thị này , người sử dụng có thể chọn report từ form chính . Form sẽ chứa một nút cho phép người sử dụng đóng form khi hoàn thành xong report . Crystal Report Viewer cung cấp khả năng sau : + Đi tới trang đầu tiên , lùi một trang , tới một trang , tới trang cuối cùng , tới một trang đã được xác định , đóng cửa sổ hiện hành , in , làm tươi lại report , xuất report sang dạng khác , chuyển đổi giữa việc hiển thị nhóm , phóng to/ thu nhỏ report , tìm kiếm . b. Group Tree: Group Tree hiển thị trong Crystal Report Viewer giúp bạn điều khiển report dựa vào nhóm được định nghĩa trước trong report. Bạn có thể thấy , khi nhấn vào một nhóm giá trị riêng biệt , một phần của report hiển thị thay đổi để phản ánh sự chọn lựa đó . Tùy chọn Keep Group Together buộc một trang gián đoạn để chỉ một nhóm riêng biệt bắt đầu xuất hiện trong Viewer. Trình duyệt INTERNET : Điều khiển trình duyệt Internet cho phép bạn nối Internet bằng cách sử dụng sự kết nối Internet mặc định trên máy PC của bạn . Nó đóng vai trò tương tự như trình duyệt Web Internet Explorer hiện có trên máy bạn . Các điều khiển trình duyệt không có gì lạ ngoài một khung cửa sổ được để xem ._.và hiển thị nội dung các trang Web . Mặc dù nó chứa các phương thức , thuộc tính và sự kiện cần để thực hiện tất cả các chức năng trình duyệt theo yêu cầu , nhưng nó không đưa những thành phần giao diện người dùng vào chung . Vì thế bạn phải có nhiệm vụ thiết kế và tạo ra giao diện cần thiết tùy biến cho chính ứng dụng để người dùng tương tác . Bảng dưới đây là danh sách của các thuộc tính , phương thức , sự kiện mà điều khiển Internet Browser cung cấp . Tên Phần mô tả Location Chứa URL cho trang Web được yêu cầu hoặc được hiển thị. LocationName Tên được xác định của trang Web. Busy Trở về nếu dụng cụ Trình duyệt đang bận truy lục một trang Web . Sự kiện DownloadComplete Phát sinh khi tiến trình tải trang Web kết thúc. NavigateComplete Phát sinh khi thêm vào một chuỗi địa chỉ URL mới. Phương thức: Navigate Thông báo cho trình duyệt mở trang Web theo địa chỉ URL đã định trước . Stop Dừng hành động của Trình duyệt hiện tại . Goback Điều hướng tới trang Web hiển thị liền trước đó . GoForward Điều hướng tới trang Web kế tiếp đã hiển thị trước đó . GoHome Điều hướng tới trang Web chủ được cấu hình sẳn trong Internet Explorer . GoSearch Sử dụng công cụ tìm kiếm Microsoft để bắt đầu một phiên tìm kiếm trên Internet . ReFresh Làm tươi trang Web hiện tại đang được hiển thị. Viết mã trong trang HTML : Mặc dù VB cung cấp cho bạn mọi thứ để truy cập Internet . Để hiểu đầy đủ và sử dụng Internet thành thạo , bạn nên viết một vài ngôn ngữ khác nhau như : ngôn ngữ đánh dấu siêu văn bản (HTML) và VBScript . HTML , ngôn ngữ định dạng trang Web , được thiết kế nhằm hai mục đích : + Định dạng trang Web với bảng , hình ảnh đồ họa kết hợp với văn bản , âm thanh . + Cho phép tích hợp với các chương trình phục vụ Internet như các tài liệu ActiveX và Java (một ngôn ngữ lập trình làm các trang Web thay đổi động ). HTML được biết đến như một ngôn ngữ kịch bản , nó không được biên dịch như các chương trình VB . HTML định dạng các trang Web , chỉ ra vị trí của ảnh đồ họa và các khung để chưa văn bản , cho phép bạn nhúng các trang web động , như các tài liệu ActiveX và các chương trình Java. VBScript là một ngôn ngữ kịch bản được thiết kế bởi Microsoft , là một tập hợp con của ngôn ngữ lập trình VB . Điều đó có nghĩa là bạn sẽ cảm thấy rất quen thuộc khi làm việc với VBScript . Ngôn ngữ này rất hữu ích khi bạn cần thêm các thuộc tính của VB vào một trang Web , như bẫy thông điệp , sử dụng các câu lệnh điều khiển nhập liệu , tính toán bằng các vòng lặp . . . Tạo ứng dụng WEB : Các thành phần của ứng dụng Web : Những tập tin thêm vào dự án của bạn là những tập tin chuẩn trong hầu hết các ứng dụng Web , bao gồm : + Các tham chiếu Namespace . + Web.config + Global.asax + Trang Web Form .aspx mặc định . Những tập tin khác nhau được sử dụng bởi một ứng dụng Web được liệt kê trong Solution Explorer . Một dự án ứng dụng đầy đủ sẽ tạo ra một cấu trúc tập tin dự án cả trên máy tính của bạn và máy chủ Web server , nơi mà bạn đang thi hành ứng dụng Web. Trái lại , nếu bạn tạo một dự án Web rỗng , những tập tin này sẽ không được thêm vào dự án . Tạo một dự án Web rỗng hữu dụng khi : + Bạn chỉ làm việc với những tập tin HTML , và có thể ASP , thay cho những tập tin ASP.NET . + Dự án ứng dụng sẽ chỉ cần một vài tập tin thông thường . + Bạn định thêm vào những tập tin mới bằng tay . Khi một dự án được tạo mới , VB.NET sẽ tạo những file sau trên máy server : + Một cấu trúc đường dẫn vật lý dưới Web Site mặc định (như Inetput/wwwroot) của máy tính phục vụ Web bạn chỉ định . + Một dạng đường dẫn ảo (virtual path) quản lý bởi ứng dụng IIS . Dự án của bạn sẽ bao gồm những file sau : File Mô tả WebForm1.aspx Hai tập tin cùng nhau cấu thành một . WebForm1.aspx.vp Web Form , tập tin aspx chứa các phần tử trực quan của trang , tập tin asp.vb là một tập tin ẩn chứa mã kết hợp với biểu mẩu Web. AssemblyInfo.vb Tập tin thông tin dự án . Web.Config Một tập tin cơ bản XML chứa dữ liệu cấu hình trên mỗi tài nguyên URL được sử dụng trong dự án . Global.asax Chứa các cấu hình và biến toàn cục Global.vb của dự án . Styles.css Hỗ trợ các tập tin những kiểu css được sử dụng bên trong dự án . .vsdisco Một tập tin cơ bản XML chứa các liên kết với tài nguyên dùng khám phá thông tin cho một dịch vụ Web. Làm việc với Web Forms : Biểu mẫu Web chia giao diện người dùng của một ứng dụng Web làm hai phần riệng biệt : + Các phần tử giao diện : Gồm có một tập tin chứa các điều khiển HTML server và điều kiển Web hoạt động phía server . + Logic giao diện : Gồm có mã mà bạn tạo ra tương tác với các biểu mẫu form Mã chương trình này nằm trong một tập tin tách biệt với tập tin giao diện người dùng và thường được gọi với tên là code-behind . Trang Web Form chứa văn bản tĩnh và các điều khiển bạn muốn hiển thị . Sử dụng Visual Studio HTML Editor với các điều khiển Web Forms , bạn có thể thiết kế biểu mẫu giống như bất cứ ứng dụng Visual Studio nào khác . Thiết kế Web Form : Để tạo một ứng dụng Web bạn thêm Web Form vào dự án , kéo các điều khiển Web Form đặt vào trang , sau đó nhấp đúp vào thành phần điều khiển để thêm mã cần cho sự kiện , tương tự như khi xây dựng mã cho ứng dụng Window Desktop. Giới thiệu các điều khiển Web Form Khi thiết kế một Web Form , bạn có thể sử dụng các điều khiển xử lý phía server , những kiểu điều khiển server bao gồm : + HTML server controls là các phần tử HTML được đặt xử lý trên server bạn có thể lập trình chúng . + Web Server controls chứa nhiều tính năng xây dựng sẳn (built-in) hơn là các điều khiển server HTML . Chúng không chỉ bao gồm các điều khiển kiểu form như các điều khiển nút nhấn và ô văn bản textbox , mà còn có các điều khiển phục vụ cho mục đích đặc biệt lịch biểu (calendar). + Validation controls kết hợp logic chặc chẽ cho phép bạn kiểm tra người dùng nhập thông tin vào . + User controls là những điều khiển tùy chỉnh bạn có thể tạo để sử dụng trên một Web Form . WEB SERVICE : Web Service là một module chương trình cung cấp chức năng của ứng dụng cho phép triệu gọi và truy cập từ xa thông qua Internet . Web Service sử dụng các chuẩn của Internet như XML và HTTP . Việc sử dụng Web Service phụ thuộc nhiều vào sự chấp nhận của XML , một ngôn ngữ mô tả dữ liệu mới dùng để truyền tải dữ liệu thông qua Web . Ứng dụng Web Service : Web Service được thiết kế nhằm cung cấp một cơ chế cho phép các loại chương trình giao tiếp qua Internet (sử dụng các giao thức Internet như HTTP GET , HTP POST và SOAP – Simple Object Access Protocol). Web Service có thể được sử dụng trên Internet ở các dạng : + Bảng giá chứng khoán , dự báo thời tiết , bán hàng trên mạng , thông tin về nhân viên , thông tin về các sản phẩm bán , thông báo tỷ giá hối đoái . Tìm hiểu SOAP : SOAP (Simple Object Access Protocol – Giao thức truy cập đối tượng giản đơn ) là một tiêu chuẩn truyền thông cơ bản dựa trên XML sử dụng giao thức HTTP. Do giao thức này được xây dựng trên nền tảng XML nên nó có thể chuyển dữ liệu và đi qua hầu hết các bức tường lửa firewall. Giai đoạn đầu tiên của việc liên lạc thông qua dịch vụ Web được gọi là giai đoạn tìm kiếm (discovery phase) .Trong suốt giai đoạn này , Web Service chuyển thông tin về những thành phần có sẳn sử dụng một giao thức con của SOAP được gọi là Service Contract Language (SCI) . Sau khi giai đoạn này được hoàn thành , những lời gọi giao diện thành phần thông thường được thực hiện . Những lời gọi này thực hiện tương tự như lời gọi đến thành phần đối tượng trên máy cục bộ , ngoại trừ thông tin được chuyển qua Web bằng XML . Giai đoạn cuối cùng của lời gọi một Web Service là Web Service sẽ trả về một tài liệu XML chứa tất cả các thông tin kết . Chương trình gọi sẽ dịch tài liệu XML và trích ra những thông tin cần thiết . Xây dựng HELP ONLINE : Thiết kế một hệ thống HELP SYSTEM : Một Help System thường là những file trợ giúp có thể hiển thị bởi chính nó hoặc trong một chương trình khác . Những file trợ giúp này là những file văn bản chứa chứa thông tin hướng dẫn sử dụng chương trình . Ngày nay , Help System có thể phức tạp hơn bằng cách cho phép thêm vào hình ảnh , âm thanh và liên kết chúng với những Web site thay vì chỉ thuần văn bản như trước đây . Một Help System bao gồm nhiều file trợ giúp khác nhau được tạo bởi những file text hoặc những file phân theo chủ đề (topic) khác nhau . Một số file này chứa văn bản , hình ảnh đồ họa , những file khác sẽ chứa những thông tin hướng dẫn cách hiển thị Help System và Hepl System làm việc như thế nào . Để tạo một Hepl System của chính bạn , bạn cần phải theo những bước sau : + Tạo những file chủ đề trợ giúp dưới dạng HTML bằng cách sử dụng Microsoft Word hoặc bất kỳ chương trình soạn thảo nào bạn có . + Tạo một dự án Help System . + Tạo file Content để hiển thị những mục lục trợ giúp . + Nối Help System hoàn chỉnh vào ứng dụng Visual basic . Các file trợ giúp có thể đơn giản hoặc phức tạp tùy theo bạn muốn . Để tạo những file topic bạn cần thực hiện những bước sau : + Lưu các file dưới dạng HTML. + Thêm vào nối kết HTML . + Thêm vào hình ảnh âm thanh trong tài liệu . Định nghĩa của các FILE trợ giúp : Một file topic chứa những dòng văn bản và hình ảnh tạo nên file trợ giúp . Để tạo hầu hết những file topic bạn cần theo các bước sau : + Soạn thảo nội dung cho những chủ đề . + Thêm vào hình ảnh . + Định dạng ký tự . Khi soạn thảo nội dung cho một file topic (file chủ đề ) , liên kết hypertext được thêm vào để xác định kết nối đến chủ đề khác . Tìm hiểu cơ cấu .NET : Tham khảo sơ lược về .NET FRAMEWORK : Microsoft .NET sẽ có trên Internet để trở thành nền tảng của một hệ điều hành mới . Nó không ràng buộc chúng ta về phần cứng bởi người dùng có khả năng lấy dữ liệu từ Internet . .NET quan trọng đối với người dùng vì nó tạo ra các thông tin được truy cập qua các thiết bị . Nó cũng thay đổi cách mà các kỹ thuật viên phát triển ứng dụng bằng cách cho phép sử dụng các dịch vụ Web . Cơ cấu này cung cấp một nền tảng mà dựa trên đó bạn xây dựng và chạy ứng dụng . Nền tảng này cho phép bạn tạo ứng dụng dễ dàng hơn . Cơ cấu này bao gồm một nhóm các kỹ thuật thể hiện cơ bản của .NET . Hình dưới đây chỉ rõ các thành phần chính của bộ khung .NET Framework. Thư viện Runtime cho chương trình có khả năng đáp ứng việc quản lý các chương trình và các dịch vụ cung cấp trong quá trình thực thi . Nó tương tự như Visual Basic 6 DLL trong Runtime . Ngôn ngữ lập trình .NET , như Visual Basic .NET , sử dụng các dịch vụ và tính năng .NET thông qua một tập các lớp được hợp nhất với nhau . Cơ cấu .NET cũng cho phép bạn phát triển ứng dụng Visual Basic .NETmà không lo lắng gì về sự phụ thuộc trong ứng dụng của bạn như bạn đã làm đối với Visual Basic 6 . .NET Framework Web Services Web Windows Forms Data and XML classes ( ADO.NET , SQL , XML , ect ) Framework Base Classes ( IO , string , security , threading , reffection , ect ) Common Language Runtime ( Debug , exception , type checking , JIT compler ) Windos Platform ( Desktop hoặc thiết bị cầm tay handheld ) Tìm hiểu COMMON LANGUAGE RUNTIME (CLR) : .NET Framework cung cấp một môi trường thực thi chương trình được gọi là Common Language Runtime ( CLR ), đây là môi trường quản lý sự thực hiện của chương trình nguồn và cung cấp các dịch vụ định dạng quá trình phát triển mã cho ứng dụng . CLR được tạo ra hoàn toàn mới , nghĩa là Microsoft không bắt đầu bằng cách sử dụng VB Runtime hoặc Visual C++ Runtime . Microsoft xây dựng môi trường cho phép một ứng dụng được viết tách ra thành những module , mỗi module có thể được viết bằng một ngôn ngữ khác nhau . Ngôn ngữ lập trình được sử dụng để tạo ứng dụng .NET biên dịch ra file thực thi .NET Portable Executable (PE). Các file PE có thể là file .exe hoặc file .dll mà bạn đã quen thuộc trong các phiên bản trước đây của VB . CLR bao gồm các chức năng sau đây : + Tải hay nạp các lớp được yêu cầu . + Thực hiện biên dịch tức thời ( Just – In – Time hay JIT) các lớp đối tượng theo yêu cầu . + Thực hiện bảo mật . + Thực hiện các chức năng động khác trong khi chạy chương trình . Sau đây là một số thuận lợi của CLR là : + Tích hợp đa ngôn ngữ . + Tăng việc bảo mật . + Quản lý phiên bản của chương trình . + Hổ trợ đóng gói và cài đặt . CLR điều khiển quản lý các đối tượng tự động , quản lý các tham chiếu đối tượng , bao gồm cả việc giải phóng chúng khi đối tượng không được sử dụng đến nữa . CLR cung cấp cơ chế quản lý bộ nhớ tự động , loại trừ lỗi rò rỉ nhỏ giống như những lỗi lập trình thông thường . CLR tạo sự dễ dàng khi thiết kế các thành phần và các ứng dụng mà những đối tượng đa ngôn ngữ . Các đối tượng được viết bằng những ngôn ngữ khác nhau có thể truyền cho nhau dễ dàng tựa như chúng được viết ra từ cùng một ngôn ngữ . Ví dụ , bạn có thể định nghĩa một lớp bằng ngôn ngữ C++ , sau đó sử dụng lớp đối tượng này ngay trong ngôn ngữ Visual Basic . Siêu dữ kiện METADATA : Metadata (siêu dữ kiện) là thông tin mã máy có thể đọc được (machine-readable) về tài nguyên , hoặc có thể xem Metadata là dữ liệu dùng “mô tả dữ liệu “. Metadata bao gồm các mô tả của một bộ phận hoặc các module , các lớp , các giao diện , các thuộc tính , các trường (field) , sự kiện , phương thức chung , v.v… Thông tin đầy đủ được cung cấp bởi metadata hỗ trợ cho chương trình khi thực thi , hoặc cho công cụ và các chương trình khác tìm ra hầu hết những gì cần thiết để tích hợp các đối tượng thành phần với nhau . Sau đây là các mục đích sử dụng của metadata trong .NET + CLR sử dụng metadata cho việc kiểm tra , bảo mật , cách trình bày của bộ nhớ , và thông tin thực thi của chương trình . + Class Loader là một thành phần của CLR sử dụng metadata để tìm và tải các lớp trong .NET. + Trình biên dịch Just-In-Time (JIT) sử dụng metadata để biên dịch đoạn mã của Microsoft Intermediate Language (IL) .NET JIT biên dịch IL thành đoạn mã lệnh được lưu trữ bên trong trước khi thực thi . + Các công cụ khác nhau bao gồm (Trong đó có cả môi trường phát triển .NET Framework) sử dụng metadata để truyền thông tin mô tả về đối tượng . Quá trình thực thi của CLR : CLR cung cấp cách thức quản lý và thực thi ứng dụng . Hình ở trên hiển thị các thành phần và yêu cầu của CLR khi chương trình được .NET tải vào biên dịch và thực thi . Sau đây là các thành phần chính của CLR : Class Loader ( Bộ nạp lớn ) : Mỗi khi một chương trình ứng dụng trên Windows được thực thi , bộ tải chương trình của hệ điều hành (OS Loader) được gọi để nạp chương trình vào bộ nhớ trước khi chương trình có thể thực hiện từng dòng lệnh nhị phân . Nếu OS Loader nhận biết chương trình đang được nạp là một ứng dụng .NET , nó sẽ gởi điều khiển đến CLR để tìm “ điểm vào “ ( thường là hàm Main( ) ) của chương trình và gọi hàm này để nhảy đến điểm bắt đầu của ứng dụng . Trước khi ứng dụng có thể thực sự được thực thi, bộ nạp lớp Class Loader phải tìm thấy được lớp có chứa hàm Main( ) và tải lớp này lên . Khi chương trình Main( ) gọi bất kỳ một đối tượng nào của một lớp chỉ định (như textbox trong VB) , Class Loader nhận được quyền điều khiển để thực hiện công việc của mình khi có một kiểu được lần đầu tiên tham chiếu đến . Sau đó , Class Loader sẽ tải các lớp .NET vào bộ nhớ và chuẩn bị thực thi . Khi thực hiện tác vụ này, Class Loader định vị và chỉ tải các lớp chủ yếu cho ứng dụng .NET , sau đó sẽ giữ lại các thông tin của lớp để nó không phải nạp lại trong suốt khoảng thời gian ứng dụng thực thi . Cuối cùng , Class Loader sử dụng các thông tin metadata thích hợp để khởi tạo các biến tĩnh cho ứng dụng . Verifier ( Bộ chứng thực ) : Sau khi Class Loader nạp vào một lớp và trước khi một phần của đoạn mã có thể thực thi , Verifier bắt đầu kiểm tra đoạn mã lệnh đó để đảm bảo : + Thông tin mô tả của metadata là hợp lệ . + Các đoạn mã trung gian IL là an toàn về kiểu . Cả hai điều kiện trên trên cần phải thỏa mãn trước khi trình biên dịch JIT tiếp tục quá trình xử lý mã . Trình biên dịch JIT (JIT compiler) : Trình biên dịch JIT (Just-In-Time) sẽ chuyển đổi đoạn mã lệnh trung gian sang đoạn mã lệnh máy (native) để nó có thể thực thi trên bất kỳ hệ điều hành nào . Điểm thuận lợi mà các trình biên dịch JIT cung cấp là chúng có thể biên dịch động đoạn mã lệnh trong khi chạy chương trình . Nếu bạn lấy một tập tin PE .NET tương tự từ một máy tính với một CPU sang một máy tính với hai CPU hoặc nhiều hơn , JIT có thể biên dịch đoạn mã lệnh tận dụng tính năng của các CPU phụ . Các hỗ trợ khác : Bây giờ bạn đã hiểu mỗi thành phần trong CLR sử dụng metadata và đoạn mã lệnh trung gian phối hợp thực thi ứng dụng .NET . Rất nhiều tác vụ khác được thực hiện trong hoặc sau khi mã của ứng dụng .NET thực thi xong . Các tác vụ này được thực hiện bởi một trong những thành phần sau đây : + Code Manager điều khiển việc thực thi đoạn mã lệnh . + CLR dò tìm và phát hiện xem khi nào các đối tượng trong ứng dụng của bạn không còn được tham chiếu đến nữa và thực hiện việc gom rác để lấy lại vùng bộ nhớ không sử dụng . + Điều khiển xử lý các lỗi ngoại lệ bên trong CLR . + CLR thực hiện các thao tác kiểm tra bảo mật khác nhau trong thời điểm chạy chương trình để đảm bảo rằng đoạn mã lệnh an toàn khi thực thi và không làm gián đoạn bất kỳ một yêu cầu nào . + CLR cung cấp khả năng gỡ rối (debug)cho chương trình ở dạng mã IL . + CLR cung cấp khả năng tương tác cho phép thực thi các đoạn mã lệnh CLR và đoạn mã lệnh COM chung với nhau trong ứng dụng . Lập trình trong môi trường .NET : .NET Framework cung cấp một mô hình lập trình chung (Common Programming Model) là mô hình bao gồm ngôn ngữ lập trình và rất nhiều các tính năng . Nếu bạn đã biết về các ngôn ngữ khác như C++ thì cơ cấu này sẽ giúp bạn thấy được khả năng tham chiếu mã lệnh của bạn đến những ngôn ngữ khác . Điều này hoàn toàn có thể thực hiện được dựa vào không gian tên (namespace) , phương thức và các lớp tương thích với tất cả các ngôn ngữ được .NET hỗ trợ . Nghĩa là khi sử dụng VB.NET bạn có thể viết một chuổi hiển thị sử dụng phương thức WriteLine( ) của đối tượng . Mỗi ngôn ngữ .NET sẽ sử dụng phương thức giống nhau từ đối tượng giống nhau . Định nghĩa các namespace chính : Namespace hay không gian tên được dùng để nhận dạng một nhóm các đối tượng , chẳng hạn như điều khiển Listbox , Textbox , những điều khiển là các thành phần của hệ thống . Windows Forms namespace , Microsoft tạo namespace để tránh sự trùng tên giữa các Assembly khác nhau hoặc các thư viện class khác nhau . Namespace có thể chứa các namespace khác . Khi đó sẽ tạo ra cấu trúc thứ bậc , cho phép sắp xếp các đối tượng liên quan với mức chi tiết cao hơn . Bảng sau là một danh sách các namespace và các lớp quan trọng trong .NET Framework . Namespace Diễn giải System Bao gồm các lớp cơ bản mà các chương trình đều sử dụng , như Object , Char , String . System.IO Cung cấp các lớp cho phép đồng thời và không đồng thời viết và đọc trên dòng dữ liệu và tập tin . System.Drawing Cung cấp cơ chế truy cập đến lớp đồ họa cơ bản GDI System.Collection Chứa các lớp định nghĩa các tập hợp đối tượng khác nhau như danh sách , hàng đợi và mảng . System.Threading Cung cấp các lớp và các giao diện có khả năng lập trình đa tuyến hay đa tiểu trình . System.Reflection Chứa các tập hợp của các lớp và các giao diện cung cấp chủ yếu về điều kiểu , phương thức và các trường System.Security Chứa các tập hợp của các lớp và namspace cung cấp sự hỗ trợ bảo mật đối với một ứng dụng , như Permissions and Policy . System.Net Cung cấp các lớp và các namspacevề lập trình mạng như Connection and IP Address . System.Data Chứa các lớp và namspace cấu tạo nên kiến trúc của ADO.NET. System.Data.OleDb Cung cấp các lớp về hệ quản trị CSDL , cho phép truy cập đến nguồn dữ liệu OLE DB . System.Data.SqlClient Cung cấp các lớp về hệ quản trị CSDL SQL , cho phép truy cập đến nguồn dữ liệu của SQL Server . System.Web.Services Cung cấp các lớp hỗ trợ sự phát triển của dịch vụ Web XML . System.Web.UI Cung cấp các lớp và các namspace hỗ trợ sự phát triển trong môi trường Web. System.Windows.Forms Cung cấp các lớp và namespace hỗ trợ sự phát triển trong môi trường Windows . Làm việc với các công cụ .NET : Khi cài đặt các thành phần của Visual Studio .NET , .NET Framework SDK sẽ cài đặt các nhóm công cụ sau đây : Công cụ về cấu hình và phát triển , công cụ gỡ rối (bebug) , công cụ bảo mật, các công cụ hỗ trợ khác . Những công cụ này được thiết kế nhằm tạo sự dễ dàng hơn cho bạn khi tạo , hiển thị và quản lý các ứng dụng và các thành phần của .NET Framework . Chúng được liệt kê và trình bày trong tài liệu của .NET Framework SDK . KIỂU DỮ LIỆU : Đối tượng (OBJECT) và tập hợp (COLLECTION) : Object : Trong các phiên bản VB cũ , kiểu biến Variant được dùng cho kiểu dữ liệu động hoặc chưa biết . VB.NET , không còn sử dụng kiểu dữ liệu Variant , .NET Framework cung cấp kiểu dữ liệu tổng quát Object , từ đó có thể rút ra mọi dữ liệu còn lại . Cửa sổ Form , các điều khiển và đối tượng cơ sở dữ liệu tất cả đều được xem như là những Object . Mặc khác bất cứ chỗ nào mà bạn nhìn thấy trong VB đều có thể xem đó chính là đối tượng . Một đối tượng giống một túi rổng , mọi thứ nó cần để thi hành công việc được chứa trong đối tượng . Tất cả các phương thức , những sự kiện và những thuộc tính của đối tượng được định nghĩa hoặc được viết trong mã chính nó . Tất cả những đối tượng chia sẽ những đặc tính giống nhau được mô tả trong một lớp đối tượng gọi là class . Một đối tượng thật sự là một thể hiện (còn gọi là instance) của các định nghĩa lớp đối tượng . Mỗi lần bạn thêm vào một điều khiển mới vào form , bạn thật sự đang tạo một instance mới xuất phát từ lớp đối tượng đó . Collection : Collection là một đối tượng đặc biệt giúp bạn lưu trữ và truy xuất tất cả những đối tượng khác trong ứng dụng . Collection là một cách để nhóm một tập hợp những mục có liên hệ với nhau . Bằng cách dùng lớp COLLECTION chung bạn có thể tạo nhiều thể hiện instance khác nhau của đối tượng Collection khi cần trong ứng dụng . Lợi ích của việc dùng một tập hợp Collection so với mảng là Collection cho phép thêm những phần tử mới mà không yêu cầu bạn viết mã định nghĩa lại kích thước như vơí mảng . Một Collection cũng có thể chứa bất kỳ sự kết hợp nào của các đối tượng ; mặc dù nếu bạn sử dụng Collection thì thường chỉ để chứa những đối tượng có cùng kiểu . Đối tượng Collection có ba phương thức và một thuộc tính mà bạn có thể dùng để thêm vào , loại bỏ đối tượng khỏi tập hoặc truy cập vào những đối tượng chứa trong tập hợp Collection : + Phương thức Add dùng để thêm các mục (item) vào Collection . + Phương thức Remove xóa các item khỏi Collection bằng cách sử dụng chỉ số hoặc khóa . + Phương thức Item truy cập một thành phần Collection thông qua chỉ số hoặc khóa . + Thuộc tính Count trả về số item hiện hành trong Collection . Sử dụng các đối tượng hệ thống : Các đối tượng hệ thống ( System Object ) có thể được dùng bất cứ đâu trong ứng dụng Đối tượng App : Hầu hết thông tin đối tượng App cung cấp liên quan đến phiên bản đã được thay thế bởi thuộc tính Assembly . Thông tin về phiên bản được đặt trong hộp thoại Project Properties . Một trong những đặc điểm nổi bật của App là khả năng định nghĩa một chuỗi tiêu đề bất cứ nơi nào trong ứng dụng Đối tượng Screen : Trong phiên bản cũ của VB , đối tượng Screen cung cấp những thông tin toàn cục về ứng dụng và trong một vài trường hợp nó cho phép bạn thiết lập những thuộc tính toàn cục tác động lên màn hình . Trong VB.NET không có đối tượng tương đương ; tuy nhiên hầu hết các chức năng của Screen có thể được thay thế bằng cách sử dụng các đặc điểm trong .NET Framework . Bảng sau là danh sách các thuộc tính của đối tượng Screen trong phiên bảng VB cũ được thay thế bằng những đối tượng mới trong VB.NET . Thuộc tính .NET ActiveControl System.Windows.Forms.Application.ActiveForm.ActiveControl ActiveForm System.Windows.Forms.Application.ActiveForm Fonts System.Drawing.FontFamilies Mousepointer System.Drawing.Cursor.Current Height System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height Width System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width Đối tượng Clipboard : Clipboard cung cấp cho người sử dụng chức năng sao chép và dán chuẩn của Windows . Khi đang tạo thủ tục copy và paste , bạn phải nhận ra kiểu dữ liệu mà bạn đang copy , bởi vì Windows Clipboard sử dụng văn bản và hình ảnh theo cách khác nhau. ARRAY : Một Array là một danh sách các biến được truy xuất bằng cách sử dụng tên biến giống nhau và một giá trị chỉ rõ gọi là chỉ số . Với mảng Array , bạn có thể lưu trữ nhiều biến cố của dữ liệu . Mã ứng dụng có thể truy cập các phần tử mảng như một biến thông thường . Sự khác nhau là giá trị chỉ số của mảng được dùng để xác định thành phần Array cần truy cập . Một hạn chế của mảng là tất cả các phần tử phải chứa dữ liệu có cùng kiểu . Hạn chế khác là bạn phải định nghĩa mảng với số phần tử cố định trước khi bạn có thể truy cập nó . Các kiểu dữ liệu số thường dùng : .NET Framework thực thi nhiều kiểu dữ liệu số . VB.NET liên kết các kiểu dữ liệu .NET theo các từ khóa , tương tự như các phiên bản cũ . Sự tương đương giữa VB.NET và các phiên bản VB cũ giúp bạn nhanh chóng nắm bắt các tính năng mới trong VB.NET . Bảng dưới đây liệt kê các kiểu số khả dụng và các class .NET liên quan . Kiểu dữ liệu Kết cấu kiểu CLR Dung lượng byte Byte System.Byte 1byte Decimal System.Decimal 16bytes Double System.Double 8 bytes Integer System.Int32 4bytes Long System.Int64 8bytes Short System.Int16 2bytes Single System.Single 4bytes Nếu đã sử dụng các phiên bản VB cũ , bạn sẽ thấy các thay đổi về kiểu dữ liệu số trong VB.NET . Các thay đổi này nhằm bảo đảm tính tương thích với các ngôn ngữ .NET khác và dựa trên tiêu chuẩn thực thi trong CLR . Chẳng hạn như kiểu Decimal là 16 byte , thay vì 14 byte trong VB cũ ; Double và Single không thay đổi . Các kiểu Integer hoàn toàn thay đổi , Integer thay cho Long trong VB cũ , hiện tại là 4 byte , còn Long trong VB.NET là 8 byte , hỗ trợ các con số nguyên 64 bit . Kiểu Short thay cho Integer trong VB cũ , 2 byte , còn kiểu Byte không thay đổi . Sử dụng các chuổi : Kiểu giá trị String thực thi theo class , thay vì theo kết cấu như các kiểu dữ liệu số . String có kích cỡ thay đổi tùy theo nền thực thi . Sự khác biệt chủ yếu về String giữa các phiên bảng VB cũ và VB.NET là String không thể khai báo với chiều dài xác định Khi giá trị được gán cho String , chiều dài giá trị sẽ xác định chiều dài String . Do các chuỗi được .NET Framework thực thi , chúng có các đặc tính nội khác với các phiên bản VB cũ . Instance của String không thể chỉnh sửa sau khi instance đó được tạo ra ; khi bạn chỉnh sửa giá trị , sẽ xuất hiện instance mới để biểu thị sự chỉnh sửa đó . Kiểu dữ liệu DOUBLE : Trong VB 6.0 , thảo chương viên hay dùng kiểu dữ liệu ngày (date). Ở cấp độ bên dưới , VB 6.0 chuyển đổi và lưu ngày theo kiểu Double . VB.NET thì khác , nó dùng kiểu dữ liệu Date để lưu dữ liệu ngày . Trình Upgrade Winzard có khó khăn khi xác định nội dung của một biến Double . Xét đoạn mã sau : Dim dpDate as Double DpDate = opRecordset (“CancellationDate”) Upgrade Winzard không thể xác định field CancellationDate thực sự là kiểu dữ liệu Date và đổi mã thích hợp . Thay vì vậy , trình Winzard ghi nhận các trường hợp dùng kiểu Double và khuyến cáo nếu bạn dùng để lưu dữ liệu ngày thì phải đổi kiểu dữ liệu thành Date . Làm việc với DATE : Kiểu dữ liệu Date trong VB.NET sử dụng kết cấu DateTime , có thể biểu thị các giá trị ngày tháng và thời gian từ 12:00:00AM , 1/1/0001 đến 11:59:59PM , 31/12/9999 . Các giá trị chính xác đến ns .Kết cấu DateTime có thể dễ dàng xử lý các số này do số được lưu theo giá trị 64bit. Các tính toán với biến Date được thực hiện trực tiếp , chúng được coi là giá trị Integer . Do đó , phép trừ hai biến Date sẽ là hiệu thời gian (tính theo ns) giữa hai ngày liên tiếp . Do các giá trị thời gian tính theo ns không sử dụng được nếu không chuyển đổi , kết cấu DateTime thực thi các phương pháp khác nhau để cộng và trừ giá trị Date . Kết quả được trả về theo kết cấu TimeSpan , có các phương pháp để diễn dịch kết quả theo dạng thông dụng . Sử dụng các giá trị BOOLEAN : Nếu đã sử dụng các phiên bản VB cũ , kiểu dữ liệu Boolean là hoàn toàn quen thuộc đối với bạn , kiểu này không đổi trong VB.NET , khác biệt duy nhất là được cung cấp theo kiểu dữ liệu System.Boolean . Kiểu dữ liệu Boolean chỉ trả về một trong hai trạng thái đúng/sai , có/không, … Các kiểu Boolean được lưu theo số 2 byte , chỉ có giá trị True hoặc False . Khi các giá trị Boolean được chuyển sang các kiểu dữ liệu khác , False bằng 0 và True bằng 1 . Khi các kiểu dữ liệu khác được chuyển sang Boolen , số 0 sẽ là False và các giá trị khác 0 sẽ là True. Tạo STRUCTURE : Trong VB.NET , các structure (kết cấu) tương tự các class , do chúng liên hệ một hoặc nhiều thành viên với các thành viên khác , có thể chứa dữ liệu thành viên , tính chất , phương pháp , và các biến cố . Các structure hoạt động khác với class , các khác biệt chính gồm : + Các kết cấu có tính thừa kế . + Các kết cấu có thể được rút ra từ System.ValueType . + Biến của biến kết cấu chứa bản sao dữ liệu một cách trực tiếp . + Các kết cấu thường không kết thúc . CLR không gọi phương pháp Finally cho kết cấu . + Các kết cấu đòi hỏi tham số khi chúng có các constructor riêng . Tuy nhiên , mọi kết cấu đều có constructor New( ) kiểu public không có các tham số , khởi động các thành viên theo giá trị mặc định . + Các khai báo về thành viên dữ liệu của kết cấu không có phần khởi động . + Sự truy cập mặc định đối với các thành viên được khai báo theo câu lệnh Dim là public . + Các thành viên không được phép khai báo theo Protected trong kết cấu . + Sự kiểm tra về tính bằng nhau phải thực hiện theo sự so sánh thành viên – thành viên . + Các kết cấu không được phép có phương pháp trừu tượng . Structure rất hữu dụng trong định nghĩa các kiểu giá trị mới bao gói nhóm các biến . Các ưu điểm khi sử dụng Structure thay vì class theo kiểu giá trị là structure không cố định và từng instance của structure đều có bản sao dữ liệu riêng . Nếu bạn thiết kế kiểu dữ liệu mới , biểu thị p._.ơng đối thấp vì hầu hết thời gian thực hiện của trigger là được sử dụng cho việc tham chiếu các bảng khác . Cú pháp : CREATE TRIGGER [ower.] trigger_name ON [ower.] table_name | view_name [ FOR . . ALTER | INSTEAD OF | INSERT | UPDATE | DELETE [ WITH ENCRYPTION] AS sql_statement Làm việc với các hàm do người dùng định nghĩa : Một tính năng mạnh của SQL Server 2000 là hàm do người dùng định nghĩa (UDF) . Bạn có thể tạo một UDF để trả về một giá trị vô hướng (một giá trị đơn) hoặc một bảng . Các hàm vô hướng : Hầu hết các hàm không phức tạp để tạo và làm việc với các hàm vô hướng . Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ … , n]]) RETURN scalar_returnt_data_type [WITH ENCRYPTION | SCHEMABINDING] [ AS ] RETUNR [ ( ] select_statement [ ) ] Các hàm Inline Table – Value : So với hai hàm của bảng , hàm inline table – value đơn giản hơn : Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ … , n]]) RETURN TABLE [WITH ENCRYPTION | SCHEMABINDING] [ AS ] RETUNR [ ( ] select_statement [ ) ] Các hàm Multistatement Table – Value : Bạn sử dụng các hàm multistatement table – Value để trả về một bảng Cú pháp : CREATE FUNCTION [owner_name.]function_name ([{@parameter_name scalar_parameter_data_type [= default]} [ … , n]]) RETURN @return_variable TABLE Table_type_definition [WITH ENCRYPTION | SCHEMABINDING] [ AS ] BEGIN Function_body Return [ ( ]select_statement[ ) ] END RETUNR [ ( ] select_statement [ ) ] PHẦN II. PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH PHÂN TÍCH ĐỀ TÀI : Đặt tả sơ lược hệ thống xây dựng chương trình thi trắc nghiệm : Hiện nay , hình thức thi trắc nghiệm đã được Bộ Giáo Dục và đào tạo khuyến khích đưa vào sử dụng trong các trường , lớp . Tổ chức các cuộc thi trắc nghiệm như thế rất cần thiết để đánh giá đúng khả năng và kiến thức của học viên . Hệ thống này sẽ tạo ra công cụ cho Giáo Viên soạn câu hỏi trắc nghiệm và công cụ hổ trợ Giáo Viên soạn đề thi . Sinh Viên sẽ thi trực tiếp trên máy Client và hệ thống sẽ tự chấm điểm . Điểm thi sẽ được hệ thống công bố liền hoặc được công bố sau . Giáo Vụ sẽ lên danh sách sinh viên dự thi của các môn thi và qui định bộ đề thi của sinh viên lấy từ ngân hàng đề thi . Nếu Giáo Vụ không qui định bộ đề thi thì sinh viên sẽ thi trực tiếp từ ngân hàng đề . Sinh Viên đến dự thi đúng lịch thi , và thi trực tiếp trên máy tính Client . Sau khi thi xong hệ thống sẽ tính toán điểm thi , cập nhật điểm thi và bài làm của sinh viên vào cơ sở dữ liệu trên máy . Để đảm bảo tính công bằng của cuộc thi , các đề thi của sinh viên đều được hệ thống hoán đổi ngẫu nhiên vị trí các câu hỏi và câu trả lời của đề thi đó . Sau khi thi xong dữ liệu được cập nhật về Sever SEVER Chứa CSDL của chương trình Thí sinh tiến hành thi trắc nghiệm trên các CLIENT Phân tích hệ thống Thi Trắc Nghiệm bằng Rational Rose : Xây dựng Use_Case Diagram : Nhận diện các actor và các trường hợp sử dụng : Qua đặt tả hệ thống ở trên ta xác định các actor sau tác động đến hệ thống : Giáo Viên , Sinh Viên , Giáo Vụ , Người quản lý thông số hệ thống Sơ đồ Use_Case diagram cho từng actor : Xây dựng Class Diagram : Nhận diện các đối tượng /lớp và các Package: Hệ thống này dễ dàng nhận thấy những đối tượng : Sinh viên , Giáo viên , GiáoViênDạy , Lớp , Môn ,KỳThi , CâuHỏi , CâuTrảLời ,ĐềThi ,Câu Hỏi Đề Thi , BộĐềRaThi ,Câu Trả Lời Đề Thi , DSSVDựThi , CâuHỏiBàiLàm , CâuTrảLờiBàiLàm , GiáoViênCoiThi , Users , Groups . Ngoài ra còn có các đối tượng tạo ra cửa sổ giao tiếp với các Actor có stereotype là > : + Lớp LoginForm tạo cửa sổ để Actor truy cập theo quyền của mình . + Lớp MainFormtạo cửa sổ Menu chính . + Lớp DanhMụcMônHọc Form tạo cửa sổ để Actor xem danh mục môn học + Lớp QuảnLýDanhMụcMônHọc Form tạo cửa sổ để Actor chỉnh sửa môn học + Lớp DanhMụcLớpHọcFormtạo cửa sổ để Actor xem danh mục lớp . + Lớp QuảnLýDanhMụcLớpHọcForm tạo cửa sổ để Actor chỉnh sửa lớp học . + Lớp DanhSáchSinhViênForm tạo cửa sổ để Actor xem danh sách SinhViên + Lớp QuảnLýDanhSáchSinhViênForm tạo cửa sổ để Actor chỉnh sửa DSSV + Lớp DanhSáchGiáoViênForm tạo cửa sổ để Actor xem DSGV + Lớp QuảnLýDanhSáchGiáoViênForm tạo cửa sổ để Actor chỉnh sửa GiáoViên + Lớp QuảnLýMônDạyGiáoViênForm tạo cửa sổ để Actor chỉnh sửa Môn của GV + Lớp DanhMụcCâuHỏiForm tạo cửa sổ để Actor xem danh mục câu hỏi + Lớp QuảnLýDanhMụcCâuHỏiForm tạo cửa sổ để Actor chỉnh sửa câu hỏi + Lớp DanhMụcĐềThiForm tạo cửa sổ để Actor xem danh mục đề thi + Lớp QuảnLýDanhMụcĐềThiForm tạo cửa sổ để Actor chỉnh sửa đề thi + Lớp TạoĐềThiForm tạo cửa sổ để Actor tạo đề thi . + Lớp DanhMụcKỳThiForm tạo cửa sổ để Actor xem danh mục kỳ thi + Lớp QuảnLýDanhMụcKỳThiForm tạo cửa sổ để Actor chỉnh sửa kỳ thi + Lớp DanhSáchSinhViênDựThiForm tạo cửa sổ để Actor xem DSSV dự thi + Lớp QuảnLýDanhSáchSinhViênDựThiForm tạo cửa sổ để Actor chỉnh sửa DSSV dự thi + Lớp DanhMụcBộĐềThiForm tạo cửa sổ để Actor xem danh mục bộ đề thi + Lớp QuảnLýDanhMụcBộĐềThiForm tạo cửa sổ để Actor chỉnh sửa bộ đề thi + Lớp DanhSáchGiáoViênCoiThiForm tạo cửa sổ để Actor xem DSGV coi thi + Lớp QuảnLýDanhSáchGiáoViênCoiThiForm tạo cửa sổ để Actor chỉnh sửa DSGV coi thi + Lớp KếtQuảThiForm tạo cửa sổ để Actor xem kết quả thi + Lớp BàiLàmSinhViênForm tạo cửa sổ để Actor xem bài làm sinh viên + Lớp ĐổiMậtKhẩuForm tạo cửa sổ để Actor đổi mật khẩu + Lớp QuảnLýThôngSốForm tạo cửa sổ để Actor chỉnh sửa thông số hệ thống + Lớp LịchThiForm tạo cửa sổ để Actor xem lịch thi + Lớp ThiForm tạo cửa sổ để Actor làm bài thi . + Lớp ĐăngKýThiForm tạo cửa sổ để Actor đăng ký dự thi Ngoài ra còn xuất hiện lớp Database có stereotype là > có chức năng giao tiếp với cơ sở dữ liệu để thực hiện các tác vụ cập nhật dữ liệu Class Diagram: Nhận diện các mối quan hệ giữa các lớp: Quan hệ giữa các lớp giao diện với lớp Database là dependency . Sử dụng các stereotype > giữa LoginForm với các lớp giao diện khác . Trong khi quan hệ dependency giữa chúng có tereo là > . Ta tạo ra 2 packge là : * Packge Interface để quản lý tất cả các giao diện giao tiếp với người dùng gồm hai class diagram chính là : + Class diagram QuảnLýDữLiệu gồm tất cả các giao diện có liên quan đến cơ sở dữ liệu và chứa các lớp : Login Form , Main From , Danh Mục Môn Học Form , Quản Lý Danh Mục Môn Học Form , Danh Mục Lớp Học Form , Quản Ly ùDanh Mục Lớp Học Form , Danh Sách Sinh Viên Form , Quản Lý Danh Sách Sinh Viên Form , Danh Sách Giáo Viên Form , Quản Lý Danh Sách Giáo Viên Form , Quản Lý Môn Dạy Giáo Viên Form , Danh Mục Câu Hỏi Form , Quản Lý Danh Mục Câu Hỏi Form , Danh Mục Đề Thi Form , Quản Lý Danh Mục Đề Thi Form , Tạo Đề Thi Form , Danh Mục Kỳ Thi Form , Quản Lý Danh Mục Kỳ Thi Form , Danh Sách Sinh Viên Dự Thi Form , Quản Lý Danh Sách Sinh Viên Dự Thi Form , Danh Mục Bộ Đề Thi Form , Quản Lý Danh Mục Bộ Đề Thi Form , Danh Sách Giáo Viên Coi Thi Form , Quản Lý Danh Sách Giáo Viên Coi Thi Form , Bài Làm Sinh Viên Form , Quản Lý Thông Số Form + Class diagram Thi gồm các giao diện cho Sinh Viên thi và chứa các lớp : ĐổiMậtKhẩuForm , KếtQuảThiForm , LịchThiForm , ThiForm , ĐăngKýThiForm * Packge Data gồm : SinhViên,GiáoViên,GiáoViênDạy,Lớp,Môn,KỳThi,Câu Hỏi,CâuTrảLời,ĐềThi,CâuHỏiĐềThi,BộĐềRaThi,CâuTrảLờiĐềThi,DSSVDự Thi,CâuHỏiBàiLàm,CâuTrảLờiBàiLàm,GiáoViênCoiThi,Users,Groups . Sơ đồ class diagram : + Sơ đồ Class diagram của package Data : + Sơ đồ Class diagram của Quản Lý Dữ Liệu trong package Interface : + Sơ đồ Class diagram Sinh Viên thi trong package Interface : Xây dựng Sequence Diagram : Các Sequence Diagram của GiáoVụ : Xét UseCase QuảnLýBộĐềThi: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýBộĐềThi. Trong Form QuảnLýBộĐềThi Giáo Vụ sẽ chọn Kỳ Thi , Môn Thi , Giáo Viên ra đề thi. Hệ thống load các đề thi lên form.Giáo Vụ sẽ chọn các đề thi ra thi . Giáo Vụ hoàn thành việc chọn thì hệ thống sẽ lưu lại các đề thi vừa mới chọn vào Bộ đề thi trong cơ sở dữ liệu . + Sequence Diagram QuảnLýBộĐềThi: Xét UseCase QuảnLýDSSVDựThi: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDSSVDự Thi . Giáo vụ sẽ chọn Môn , chọn kỳ thi , nhập ngày giờ và chọn các sinh viên dự thi . Hệ thống sẽ thêm danh sách Sinh Viên dự thi vào cơ sở dữ liệu. + Sequence Diagram QuảnLýDSSVDựThi : Xét UseCase ThêmSV: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDanhSách SinhViên . Giáo vụ sẽ nhập mã số sinh viên , họ , tên , phái , địa chỉ, Ngày sinh , username , password và chọn lớp của sinh viên . Hệ thống sẽ thêm SV vào CSDL. + Sequence Diagram ThêmSV : Xét UseCase SửaThôngTinSV: Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form Quản Lý Sinh Viên . Giáo vụ chọn Sinh Viên cần sửa và nhập lại thông tin SV gồm : Mã Số Sinh Viên , Họ , Tên , Phái , Địa Chỉ, Ngày inh , username , password và chọn lớp của sinh viên Hệ thống sẽ cập nhật lại Sinh Viên này vào cơ sở dữ liệu. + Sequence Diagram SửaThôngTinSV Xét UseCase QuảnLýDSGVCoiThi : Giáo vụ đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo vụ sẽ chọn form QuảnLýDSGVCoiThi . Giáo vụ sẽ chọn kỳ thi và chọn các Giáo Viên coi thi . Hệ thống sẽ thêm danh sách Giáo Viên coi thi vào cơ sở dữ liệu. + Sequence Diagram QuảnLýDSGVCoiThi Các Sequence Diagram của GiáoViên : Xét UseCase ĐổiMậtKhẩu: Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form ĐổiMậtKhẩu Giáo viên nhập mật khẩu mới . Hệ thống sẽ cập nhật lại Giáo Viên này vào cơ sở dữ liệu. + Sequence Diagram ĐổiMậtKhẩu : Xét UseCase ThêmCâuHỏi: Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form Quản Lý Danh Mục Câu Hỏi.Giáo Viên chọn Môn , hệ thống sẽ kiểm tra môn này Giáo Viên có dạy không . Nếu có Giáo Viên sẽ nhập thông tin Câu hỏi . Hệ thống sẽ thêm Câu Hỏi vào cơ sở dữ liệu . + Sequence Diagram ThêmCâuHỏi : Xét UseCase Xóa Câu Hỏi : Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form Quản Lý Câu Hỏi . Giáo viên sẽ chọn câu hỏi cần xóa . Hệ thống sẽ kiểm tra cho xóa không , và thông báo cho Giáo viên . Nếu hệ thốâng cho phép và Giáo viên đồng ý thì hệ thống sẽ xóa Câu Hỏi này trong CSDL . + Sequence Diagram Xóa Câu Hỏi : Xét UseCase ThêmĐềThi Giáo Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form Mainenu sẽ được kích hoạt , từ form này Giáo Viên sẽ chọn form ThêmĐềThi Giáo viên sẽ chọn Môn và nhập thông tin đề thi . Hệ thống sẽ phát sinh đề theo yêu cầu của Giáo Viên và sau đó thêm Đề Thi này vào cơ sở dữ liệu . + Sequence Diagram ThêmĐềThi Các Sequence Diagram của SinhViên : Xét UseCase Thi : Sinh Viên đăng nhập vào hệ thống bằng username và password của mình . Hệ thống sẽ kiểm tra trong cơ sở dữ liệu việc đăng nhập có hợp lệ không và nếu hợp lệ form MainMenu sẽ được kích hoạt , từ form này Sinh Viên sẽ chọn form Đăng Ký Thi. Sinh viên chọn môn , chọn kỳ thi . Hệ thống sẽ kiểm tra xem Sinh Viên này có được thi hay không . Nếu được thì hệ thống sẽ kích hoạt From thi .Sau khi hoàn tất bài thi , hệ thống sẽ tính điểm và lưu bài thi vào cơ sở dữ liệu. + Sequence Diagram Thi : Chọn mô hình cài đặt về cơ sở dữ liệu : Có hai phương pháp lựa chọn : Dữ liệu tập trung và dữ liệu phân tán . Ta chọn phương pháp cơ sở dữ liệu tập trung vì : + Khối lượng dữ liệu không lớn + Số lượng thí sinh và giáo viên chủ yếu tập trung trong phạm vi nhà trường . + Quản lý đào tạo tại nước ta vẫn là hình thức tập trung tại một cơ sở chính . Nếu có nhiều cơ sở thường thì chỉ trong bán kính nhỏ . THIẾT KẾ CHƯƠNG TRÌNH SQL Server 2000 thích hợp để làm DBMS cho chương trình này vì : + Cơ sở dữ liệu ở đây trung bình . + SQL Server 2000 có thể chạy trong các hệ điều hành Windows NT 4.0 (từ Srevice Pack 5 trở đi) , Windows 2000 , Windows 98 hoặc Windows Me và có thể sử dụng với hệ điều hành Windows CE . + SQL Server của Microsoft là một phương tiện cơ sở dữ liệu Client/Server . Từ điển dữ liệu : SINHVIENID Mã Sinh Viên MASINHVIEN Mã số Sinh Viên LOPID Mã Lớp HO Họ TEN Tên PHAI Phái NGAYSINH Ngày Sinh DIACHI Địa Chỉ MALOP Mã Số Lớp TENLOP Tên Lớp MONID Mã Môn MAMON Mã số môn TENMON Tên môn SODVHT Số đơn vị học tập KYTHIID Mã kỳ thi MAKYTHI Mã số kỳ thi TENKYTHI Tên kỳ thi GIAOVIÊNID Mã Giáo Viên MAGIAOVIEN Mã số GV DIENTHOAI Điện Thọai CHUCDANH Chức Danh ACTIVE Nghĩ/còn dạy CAUHOIID Mã câu hỏi NOIDUNG Nội dung MUCDO Mức độ DETHIID Mã đề thi THOIGIANLAMBAI Thời gian làm bài SOCH Số Câu Hỏi CAUTRALOIID Mã Câu Trả Lời NOIDUNG Nội Dung STT Số thứ tự câu hỏi CAUTRALOIIDCHON Mã câu trả lời BAILAMID Mã bài làm DIEM Điểm Thi NGAYTHI Ngày Thi GROUPID Mã nhóm TENGROUP Tên Nhóm USERID Mã User USERNAME Tên Đăng Nhập PASSWORDS Mật Khẩu CAUTRALOIDUNG Câu Trả Lời Đúng Mô tả các Table : SINHVIEN ( SINHVIENID , MASINHVIEN , LOPID , HO , TEN , PHAI , NGAYSINH , DIACHI , USERID) FieldName Keys Data Type Size Allow Nulls SINHVIENID Khóa Numeric 9 MASINHVIEN Varchar 15 Not null LOPID Numeric 9 Not null HO Varchar 50 Not null TEN Varchar 50 Not null PHAI Bit 1 Not null NGAYSINH Date/Time 8 Not null DIACHI Varchar 50 Null USERID Numeric 9 Not null LOP ( LOPID , MALOP , TENLOP ) Field Name Keys Data Type Size Allow Nulls LOPID Khóa Numeric 9 MALOP Varchar 15 Not null TENLOP Varchar 50 Not null MON (MONID, MAMON , TENMON , SDVHT ) Field Name Keys Data Type Size Allow Nulls MONID Khóa Numeric 9 MAMON Varchar 15 Not null Ten MON Varchar 50 Not null SODVHT Integer 4 Not null KYTHI ( KYTHIID , MAKYTHI , TENKYTHI) Field Name Keys Data Type Size Allow Nulls KYTHIID Khóa Numeric 9 MAKYTHI Varchar 15 Not null TENKYTHI Varchar 50 Not null GIAOVIEN (MAGV ID, MAGIAOVIEN, HO , TEN , PHAI , DIA CHI , DIENTHOAI , CHỨC DANH , ACTIVE , UERID ) Field Name Keys Data Type Size Allow Nulls GIAOVIÊNID Khóa Numeric 9 MAGIAOVIEN Varchar 15 Not null HO Varchar 50 Not null TEN Varchar 20 Not null PHAI Bit 1 Not null DIACHI Varchar 50 Not null DIENTHOAI Varchar 20 null CHUCDANH Varchar 50 Not null ACTIVE Bit 1 Not null USERID Numeric 9 Not null GIAOVIENDAY (GIAOVIENID , MONID ) Field Name Keys Data Type Size Allow Nulls GIAOVIENID Khóa Numeric 9 Not null MONID Khóa Numeric 9 Not null CAUHOI ( CAUHOIID , MONID , GIAOVIENID, NOIDUNG , MUCDO , CAUTRALOIDUNGID ) Field Name Keys Data Type Size Allow Nulls CAUHOIID Khóa Numeric 9 MONID Numeric 9 Not null GIAOVIENID Numeric 9 Not null NOIDUNG Varchar 200 Not null MUCDO Integer 4 Not null CAUTRALOIDUNGID Numeric 9 Null CAUTRALOI ( CAUTRALOIID , CAUHOIID , NOIDUNG ) Field Name Keys DataType Size Allow Nulls CAUTRALOIID Khóa Numeric 9 Not null CAUHOIID Numeric 9 Not null NOIDUNG Varchar 60 Not null DETHI ( DETHIID , MONID, GIAOVIENID , THOIGIANLAMBAI , SOCH ) Field Name Keys DataType Size Allow Nulls DETHIID Khóa Numeric 9 MONID Numeric 9 Not null GIAOVIENID Numeric 9 Not null THOIGIANLAMBAI Integer 4 Not null SOCH Integer 4 Not null CAUHOIDETHI ( CAUHOIID , DETHIID , NOIDUNG , MUCDO , CAUTRALOIDUNGID ) Field Name Keys Data Type Size Allow Nulls CAUHOIID Khóa Numeric 9 Not null DETHIID Numeric 9 Not null NOIDUNG Varchar 200 Not null MUCDO Integer 4 Not null CAUTRALOIDUNGID Numeric 9 Null BODERATHI ( DETHIID ,KYTHIID ) Field Name Keys Data Type Size Allow Nulls DETHIID Khóa Numeric 9 Not null KYTHIID Khóa Numeric 9 Not null CAUTRALOIDETHI (CAUTRALOIID , CAUHOIID , NOIDUNG ) Field Name Keys Data Type Size Allow Nulls CAUTRALOIID Khóa Numeric 9 Not null CAUHOIID Numeric 9 Not null NOIDUNG Varchar 60 Not null CAUHOIBAILAM (BAILAMID , CAUHOIID, STT, CAUTRALOIIDCHON) Field Name Keys Data Type Size Allow Nulls STT Numeric 9 Not null CAUHOIID Khóa Numeric 9 Not null CAUTRALOIIDCHON Numeric 9 Null BAILAMID Khóa Numeric 9 Not null CAUTRALOIBAILAM (STT, CAUTRALOIID, BAILAMID) Field Name Keys Data Type Size Allow Nulls STT Numeric 9 Not null CAUTRALOIID Khóa Numeric 9 Not null BAILAMID Khóa Numeric 9 Not null DSSVDUTHI ( MONID , SINHVIENID , KYTHIID , BAILAMID , DETHIID , DIEM , NGAYTHI ) Field Name Keys Data Type Size Allow Nulls MONID Khóa Numeric 9 Not null SINHVIENID Khóa Numeric 9 Not null KYTHIID Khóa Numeric 9 Not null BAILAMID Numeric 9 Not null DETHIID Numeric 9 Not null DIEM Integer 4 Not null NGAYTHI Date / time 8 Not null GROUPS (GROUPID , TENGROUP) Field Name Keys Data Type Size Allow Nulls GROUPID Khóa Numeric 9 TENGROUP Varchar 50 Not null USERS ( USERID , USERNAME , PASSWORDS , GROUPID ) Field Name Keys Data Type Size Allow Nulls USERID Khóa Numeric 9 Not null USERNAME Varchar 50 Not null PASSWORDS Varchar 50 Not null GROUPID Numeric 9 Not null GIAOVIENCOITHI (GIAOVIENID , KYTHIID , MONID) Field Name Keys Data Type Size Allow Nulls GIAOVIENID Khóa Numeric 9 Not null KYTHIID Khóa Numeric 9 Not null MONID Khóa Numeric 9 Not null Ràng buột toàn vẹn : RBTV có bối cảnh trên một lược đồ quan hệ RBTV về miền giá trị : R1 : " m Ỵ MON m.DVHT > 0 Tầm ảnh hưởng : R1 Thêm Xóa Sửa MON + - + R2 : " sv Ỵ SINHVIEN sv.NGAYSINH < GETDATE ( ) Tầm ảnh hưởng : R2 Thêm Xóa Sửa SINHVIEN + - + R3 : " dt Ỵ DETHI dt.THOIGIANLAMBAI >0 R4 : " dt Ỵ DETHI dt.SOCAUHOI >0 Tầm ảnh hưởng : R3,4 Thêm Xóa Sửa DETHI + - + R 5 : " d Ỵ DSSVDUTHI d.DIEM BETWEEN 0 AND 10 R 6 : " d Ỵ DSSVDUTHI d.NGAYTHI > = GETDATE ( ) Tầm ảnh hưởng : R5,6 Thêm Xóa Sửa DSSVDUTHI + - + R 7 : " ch Ỵ CAUHOI ch.MUCDO BETWEEN 1 AND 3 ( MUCDO = 1 : Khó , 2: Trung Bình , 3: Dễ ) Tầm ảnh hưởng : R7 Thêm Xóa Sửa CAUHOI + - + R 8 : " chdt Ỵ CAUHOIDETHI chdt.MUCDO BETWEEN 1 AND 3 ( MUCDO = 1 : Khó , 2: Trung Bình , 3: Dễ ) Tầm ảnh hưởng : R8 Thêm Xóa Sửa CAUHOIDETHI + - + RBTV liên bộ (khóa nội ) : R9 : " sv1 ¹ sv2 Ỵ SINHVIEN sv1.SINHVIENID ¹ sv2.SINHVIENID R10 : " sv1 ¹ sv2 Ỵ SINHVIEN sv1.MASINHVIEN ¹ sv2.MASINHVIEN R11 : " sv1 ¹ sv2 Ỵ SINHVIEN sv1.USERID ¹ sv2.USERID R12 : " lop1 ¹ lop2 Ỵ LOP lop1.LOPID ¹ lop2.LOPID R13 : " lop1 ¹ lop2 Ỵ LOP lop1.MALOP ¹ lop2.MALOP R14 : " m1 ¹ m2 Ỵ MON m1.MONID ¹ m2.MONID R15 : " m1 ¹ m2 Ỵ MON m1.MAMON ¹ m2.MAMON R16 : " k1 ¹ k2 Ỵ KYTHI k1.KYTHIID ¹ m2.KYTHIID R17 : " k1 ¹ k2 Ỵ KYTHI k1.MAKYTHI ¹ m2.MAKYTHI R18 : " gv1 ¹ gv2 Ỵ GIAOVIEN gv1. GIAOVIENID ¹ gv2. GIAOVIENID R19 : " gv1 ¹ gv2 Ỵ GIAOVIEN gv1.MAGIAOVIEN ¹ gv2.MAGIAOVIEN R20 : " gv1 ¹ gv2 Ỵ GIAOVIEN gv1.USERID ¹ gv2.USERID R21 : " gvd1 ¹ gvd2 Ỵ GIAOVIENDAY gvd1.GIAOVIENID ¹ gvd2.GIAOVIENID OR gvd1.MONID ¹ gvd2.MONID R22 : " ch1 ¹ ch2 Ỵ CAUHOI ch1.CAUHOIID ¹ ch2.CAUHOIID R23 : " ctl1 ¹ ctl2 Ỵ CAUTRALOI ctl1. CAUTRALOIID ¹ ctl2.CAUTRALOIID R24 : " dt1 ¹ dt2 Ỵ DETHI dt1. DETHIID ¹ dt2.DETHIID R25 : " chdt1 ¹ chdt2 Ỵ CAUHOIDETHI chdt1.CAUHOIID ¹ ch2dt.CAUHOIID R26 : " bd1 ¹ bd2 Ỵ BODERATHI bd1.DETHIID ¹ bd2.DETHIID OR bd1.KYTHIID ¹ bd2.KYTHIID R27 : " ctldt1 ¹ ctldt2 Ỵ CAUTRALOIDETHI ctldt1. CAUTRALOIID ¹ ctldt2.CAUTRALOIID R28 : " chbl1 ¹ chbl2 Ỵ CAUHOIBAILAM chbd1.CAUHOIID ¹ chbd2.CAUHOIID OR chbd1.BAILAMID ¹ chbd2.BAILAMID R29 : " chbl1 ¹ chbl2 Ỵ CAUHOIBAILAM chbd1.STT ¹ chbd2.STT OR chbd1.BAILAMID ¹ bd2.BAILAMID R30 : " ctlbl1 ¹ ctlbl2 Ỵ CAUTRALOIBAILAM chtld1.CAUTRALOIID ¹ chbd2. CAUTRALOIID OR ctlbd1.BAILAMID ¹ ctlbd2.BAILAMID R31 : " dssvdt1 ¹ dssvdt2 Ỵ DSSVDUTHI dssvdt1.MONID ¹ dssvdt2. MONID OR dssvdt1.SINHVIENID ¹ dssvdt2.SINHVIENID OR dssvdt1.KYTHIID ¹ dssvdt2. KYTHIID R32 : " dssvdt1 ¹ dssvdt2 Ỵ DSSVDUTHI dssvdt1.BAILAMID ¹ dssvdt2. BAILAMID R33 : " gvct1 ¹ gvct2 Ỵ GIAOVIENCOITHI gvct1.GIAOVIENID ¹ gvct2. GIAOVIENID OR gvct1.KYTHIID ¹ gvct2. KYTHIID OR gvct1.MONID ¹ gvct2. MONID R34 : " u1 ¹ u2 Ỵ USERS u1.USERID ¹ u2.USERID R35 : " u1 ¹ u2 Ỵ USERS u1.USERNAME ¹ u2.USERNAME R36 : " g1 ¹ g2 Ỵ GROUPS g1. GROUPID ¹ g2. GROUPID RBTV có bối cảnh trên nhiều lược đồ quan hệ RBTV phụ thuộc tồn tại (khóa ngoại ) : R37 : " sv Ỵ SINHVIEN $ lop Ỵ LOP : sv.LOPID = lop.LOPID Tầm ảnh hưởng : R37 Thêm Xóa Sửa SINHVIEN + - + LOP - + + R38 : " sv Ỵ SINHVIEN $ u Ỵ USERS : sv.USERID = u.USERID Tầm ảnh hưởng : R38 Thêm Xóa Sửa SINHVIEN + - + USERS - + + R39 : " gv Ỵ GIAOVIEN $ u Ỵ USERS : gv.USERID = u.USERID Tầm ảnh hưởng : R39 Thêm Xóa Sửa GIAOVIEN + - + USERS - + + R40 : " gvd Ỵ GIAOVIENDAY $ gv Ỵ GIAOVIEN : gvd.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng : R40 Thêm Xóa Sửa GIAOVIENDAY + - + GIAOVIEN - + + R41 : " gvd Ỵ GIAOVIENDAY $ m Ỵ MON : gvd.MONID = m.MONID Tầm ảnh hưởng : R41 Thêm Xóa Sửa GIAOVIENDAY + - + MON - + + R42 : " ch Ỵ CAUHOI $ gv Ỵ GIAOVIEN : ch.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng : R42 Thêm Xóa Sửa CAUHOI + - + GIAOVIEN - + + R43 : " ch Ỵ CAUHOI $ m Ỵ MON : ch.MONID = m.MONID Tầm ảnh hưởng : R43 Thêm Xóa Sửa CAUHOI + - + MON - + + R44 : " ctl Ỵ CAUTRALOI $ ch Ỵ CAUHOI : ctl.CAUHOIID = ch.CAUHOIID Tầm ảnh hưởng : R44 Thêm Xóa Sửa CAUTRALOI + - + CAUHOI - + + R45 : " dt Ỵ DETHI $ gv Ỵ GIAOVIEN : dt.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng : R45 Thêm Xóa Sửa DETHI + - + GIAOVIEN - + + R46 : " dt Ỵ DETHI $ m Ỵ MON : dt.MONID = m.MONID Tầm ảnh hưởng : R46 Thêm Xóa Sửa DETHI + - + MON - + + R47 : " chdt Ỵ CAUHOIDETHI $ dt Ỵ DETHI : chdt.DETHIID = dt.DETHIID Tầm ảnh hưởng : R47 Thêm Xóa Sửa CAUHOIDETHI + - + DETHI - + + R48 : " bd Ỵ BODERATHI $ dt Ỵ DETHI : bd.DETHIID = dt.DETHIID Tầm ảnh hưởng : R48 Thêm Xóa Sửa BODERATHI + - + DETHI - + + R49 : " bd Ỵ BODERATHI $ kt Ỵ KYTHI : bd.KYTHIID = kt.KYTHIID Tầm ảnh hưởng : R49 Thêm Xóa Sửa BODERATHI + - + KYTHI - + + R50 : " ctldt Ỵ CAUTRALOIDETHI $ chdt Ỵ CAUHOIDETHI : ctldt.CAUHOIID = chdt.CAUHOIID Tầm ảnh hưởng : R50 Thêm Xóa Sửa CAUTRALOIDETHI + - + CAUHOIDETHI - + + R51 : " dssv Ỵ DSSVDUTHI $ m Ỵ MON : dssv.MONID = m.MONID Tầm ảnh hưởng : R51 Thêm Xóa Sửa DSSVDUTHI + - + MON - + + R52 : " dssv Ỵ DSSVDUTHI $ sv Ỵ SINHVIEN : dssv.SINHVIENID = sv.SINHVIENID Tầm ảnh hưởng : R52 Thêm Xóa Sửa DSSVDUTHI + - + SINHVIEN - + + R53 : " dssv Ỵ DSSVDUTHI $ kt Ỵ KYTHI : dssv.KYTHIID = kt.KYTHIID Tầm ảnh hưởng : R53 Thêm Xóa Sửa DSSVDUTHI + - + KYTHI - + + R54 : " dssv Ỵ DSSVDUTHI IF dssv.DETHIID ¹ NULL THEN $ dt Ỵ DETHI : dssv.DETHIID = dt.DETHIID END IF Tầm ảnh hưởng : R54 Thêm Xóa Sửa DSSVDUTHI + - + DETHIID - + + R55 : " gvct Ỵ GIAOVIENCOITHI $ kt Ỵ KYTHI : gvct.KYTHIID = kt.KYTHIID Tầm ảnh hưởng : R55 Thêm Xóa Sửa GIAOVIENCOITHI + - + KYTHI - + + R56 : " gvct Ỵ GIAOVIENCOITHI $ gv Ỵ GIAOVIEN : gvct.GIAOVIENID = gv.GIAOVIENID Tầm ảnh hưởng : R56 Thêm Xóa Sửa GIAOVIENCOITHI + - + GIAOVIEN - + + R65 : " gvct Ỵ GIAOVIENCOITHI $ m Ỵ MON : gvct.MONID = m.MONID Tầm ảnh hưởng : R65 Thêm Xóa Sửa GIAOVIENCOITHI + - + MON - + + R57 : " chbl Ỵ CAUHOIBAILAM $ chdt Ỵ CAUHOIDETHI : chbl.CAUHOIID = chdt.CAUHOIID Tầm ảnh hưởng : R57 Thêm Xóa Sửa CAUHOIBAILAM + - + CAUHOIDETHI - + + R58 : " chbl Ỵ CAUHOIBAILAM $ dssv Ỵ DSSVDUTHI : chbl.BAILAMID = dssv.BAILAMID Tầm ảnh hưởng : R58 Thêm Xóa Sửa CAUHOIBAILAM + - + DSSVDUTHI - + + R59 : " ctlbl Ỵ CAUTRALOIBAILAM $ ctldtỴCAUTRALOIDETHI :ctlbl.CAUTRALOIID = ctldt.CAUTRALOIID Tầm ảnh hưởng : R59 Thêm Xóa Sửa CAUHOIBAILAM + - + CAUTRALOIDETHI - + + R60 : " ctlbl Ỵ CAUTRALOIBAILAM $ dssv Ỵ DSSVDUTHI : ctlbl.BAILAMID = dssv.BAILAMID Tầm ảnh hưởng : R60 Thêm Xóa Sửa CAUTRALOIBAILAM + - + DSSVDUTHI - + + R61 : " u Ỵ USERS $ g Ỵ GROUPS : u.GROUPID = g.GROUPID Tầm ảnh hưởng : R61 Thêm Xóa Sửa USERS + - + GROUPS - + + RBTV liên thuộc tính liên quan hệ : R62 : " ch Ỵ CAUHOI $ ctl Ỵ CAUTRALOI : ch.CAUTRALOIDUNGID = ctl.CAUTRALOIID AND ctl.CAUHOIID = ch.CAUHOIID R63 : " chdt Ỵ CAUHOIDETHI $ ctldt Ỵ CAUTRALOIDETHI : chdt.CAUTRALOIDUNGID = ctldt.CAUTRALOIID AND ctldt.CAUHOIID = chdt.CAUHOIID R64 : " chbl Ỵ CAUHOIBAILAM IF chbl.CAUTRALOIIDCHON ¹ NULL THEN $ ctldt Ỵ CAUTRALOIDETHI : chbl.CAUTRALOIIDCHON = ctldt.CAUTRALOIID AND ctldt.CAUHOIID = chbl.CAUHOIID END IF 4. Sơ đồ quan hệ ERD: CÀI ĐẶT CHƯƠNG TRÌNH Các giao diện chính : Giao diện MainMenu quản lý dữ liệu : Giao diện Quản Lý Môn : Giao diện Quản Lý Sinh Viên : Giao diện Quản Lý DSSV Dự Thi Giao diện Quản Lý Câu Hỏi : Giao diện Tạo Đề Thi : Report In Bảng Điểm : Giao diện MainMenu Sinh Viên : Giao diện Thi PHẦN III. TỔNG KẾT NHẬN XÉT CHUNG : Đánh giá kết quả của chương trình Qua quá trình nghiên cứu , học hỏi và xây dựng chương trình Thi Trắc Nghiệm , chương trình đã đạt được một số kết quả là : + Hổ trợ Giáo Viên soạn Câu Hỏi và tạo Đề Thi theo yêu cầu . + Hổ trợ Sinh Viên thi trên máy Client được dễ dàng hơn và được xem lịch thi , xem kết quả thi . + Trong quá trình Sinh Viên thi trên máy , Giám Thị Coi Thi có thể can thiệp trực tiếp vào bài làm của Sinh Viên ( cấm thi , hủy bài thi , tạm ngưng thời gian thi của Sinh viên , cho Sinh Viên tiếp tục thời gian thi của mình ) nếu Sinh Viên hoặc bài làm của Sinh Viên đó có vấn đề . + Giáo Vụ được hổ trợ nhiều tác vụ về nghiệp vụ như quản lý Giáo Viên , Sinh Viên , Môn Học , Lớp và tổ chức một Kỳ Thi bao gồm các công việc : lên danh sách Sinh Viên Dự Thi , quy định các Đề Ra Thi , lên danh sách Giáo Viên Coi Thi . + Và với chương trình Thi Trắc Nghiệm này Giáo Viên không còn phải chấm từng bài thi của SV bằng tay nữa , mà hệ thống sẽ tự chấm điểm và in bảng điểm ra theo yêu cầu . + Để phân biệt được người sử dụng hệ thống , người sử dụng đăng nhập vào hệ thống bằng tên đăng nhập và mật khẩu riêng của mình , và để bảo mật các mật khẩu của người sử dụng đựơc an toàn , hệ thống sẽ mã hóa mật khẩu trước khi lưu vào cơ sở dữ liệu. Hạn chế của chương trình : Trong thời gian ngắn , với tất cả sự nổ lực của chúng em để hoàn thành đề tài này .Tuy đạt được những kết quả cụ thể nhưng vẫn không tránh khỏi những thiếu sót , hạn chế , và còn tồn tại vấn đề chưa giải quyết tốt cần được góp ý bổ sung thêm . Ngoài ra do kiến thức và kinh nghiệm hạn hẹp nên đề tài muốn phát triển thêm thì cần có thời gian để tiếp tục nghiên cứu , tiếp thu ý kiến đóng góp và hoàn thiện về mặt kỹ thuật để chương trình có thể trở thành một ứng dụng tốt và đạt hiệu quả cao. HƯỚNG PHÁT TRIỂN CHƯƠNG TRÌNH : Với đề tài này chúng ta có thể phát triển thêm : + Mở rộng phạm vi soạn thảo đề thi của Giáo Viên bằng một trình soạn thảo nào đó và lưu vào file , chương trình sẽ tự động kết nối file đó vào cơ sở dữ liệu + Câu Hỏi bổ sung thêm hình ảnh minh họa . + In đề thi và cho Sinh Viên thi trên giấy . + Thay đổi quyền sử dụng hệ thống một cách linh động KẾT LUẬN Sự phát triển mạnh mẻ của Công Nghệ Thông Tin cùng với sự đòi hỏi ngày càng cao sự tự động hóa , tin học hóa của con người vào tất cả các lỉnh vực khiến cho xã hội luôn đổi mới . Qua quá trình tìm hiểu , nghiên cứu và áp dụng những công nghệ mới của lĩnh vực Tin Học trong công cuộc cải cách của Bộ Giáo Dục , chúng em xây dựng đề tài này với mong muốn được góp một phần công sức vào công cuộc đổi mới này . Dựa trên những mặt đạt được và chưa đạt được của đề tài , chúng em hy vọng sẽ nhận được nhiều ý kiến đóng góp , nhận xét để có điều kiện phát triển ứng dụng này lên cao hơn nữa . TÀI LIỆU THAM KHẢO [1] TEACH YOURSELF OBJECT- ORIENTED PROGRAMMING WITH VISUAL BASIC.NET IN 21 DAYS Tác giả : Richard J.Simon NXB : Sam [2] KỸ NĂNG LẬP TRÌNH VISUAL BASIC.NET Tác giả : Nguyễn Tiến Dũng NXB : Nhà Xuất Bản Thống Kê [3] LẬP TRÌNH CHUYÊN SÂU VISUAL BASIC.NET Tác giả : Phương Lan NXB : Nhà Xuất Bản Lao Động - Xã Hội [4] ADO.NET LẬP TRÌNH VÀ ỨNG DỤNG Tác giả : Nguyễn Tiến _Nguyễn Vũ Thịnh NXB : Nhà Xuất Bản Thống Kê Lao Động – Xã Hội [5] SQL SERVER 2000 DATABASE DESIGN Tác giả : Louis Davidson NXB : Wrox [6] MICROSOFT SQL SERVER 2000 Tác giả : Nguyễn Ngọc Minh_Hoàng Đức Hải NXB : Nhà Xuất Bản Lao Động – Xã Hội [7] VISUAL MODELING WITH RATIONAL ROSE 2000 AND UML Tác giả : Terry Quatrani NXB : Grady Booch [8] PHÂN TÍCH VÀ THIẾT KẾ HƯỚNG ĐỐI TƯỢNG BẰNG UML Tác giả : Dương Anh Đức NXB : Nhà Xuất Bản Thống Kê ._.

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

  • docBAOCAO.doc
  • docBIALV2.DOC
  • docLoiCamOn.doc
  • docLoiNoiDau.doc
  • docMucLuc.doc
  • docNXGVHD.DOC
  • docNXGVPB.DOC
  • docPhanTichUML.doc
  • docSoDoSQL.doc
  • docTestChuongTrinh.doc
  • pptBCAO.PPT
  • docBIALV.DOC