Tuy nhiên, Visual Basic phiên bản 6.0 VB6 không cung ứng tất cả các đặc trưng của kiểu mẫu ngôn ngữ lập trình khuynh hướng đối tượng Object Oriented Language - OOL như các ngôn ngữ C++,
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 3
CHƯƠNG 1 TỔNG QUAN VỀ VISUAL BASIC.NET 4
1.1 Tổng quan về ngôn ngữ lập trình Visual Basic.Net 4
1.1.1 Sơ lược về lịch sử của Visual Basic.Net 4
1.1.2 Sơ lược về Visual Basic.NET 5
1.1.3 Sơ lược về NET 6
1.2 Form và cách sử dụng Form 9
1.3 Các kiểu dữ liệu thông dụng trong Visual Basic.net 10
1.4 Các câu lệnh điều khiển 10
1.5 Các kỹ thuật kết nối cơ sở dữ liệu ADO.Net 12
1.5.1 DataReader 12
1.5.2 Data Adapter 14
1.5.3.NET Data Providers 14
1.5.4 Đối tượng Connection 15
1.5.5 Đối tượng Command 17
1.5.6 Điều khiển lưới dữ liệu (DataBinding) 19
1.5.7.Khám phá Crytal Report 22
CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 26
2.1 Khảo sát hiện trạng 26
2.2 Đánh gía hiện trạng cũ và sự cần thiết phải xây dựng hệ thống mới 26
2.3 Nội dung quy định thực tế được sử dụng cho chương trình 27
2 4 Phân tích và thiết kế hệ thống 29
2.4.1 Mục tiêu bài toán 29
2.4.2 Biểu đồ phân cấp chức năng (BPC) 29
2.4.3 Mô hình thực thể liên kết (ERD) 30
2.4.4 Sơ đồ thực thể liên kết 36
2.4.5 Biểu đồ luồng dữ liệu(BLD) 36
CHƯƠNG 3 THỰC NGHIỆM 38
3.1 Chương trình SERVER 39
3.1.1 Main 39
3.1.2 Hệ 39
3.1.3 Khoá 39
3.1.5 Bộ môn 40
3.1.6 Môn 41
3.1.7 Giáo viên 42
3.1.8 Năm 42
3.1.9 Số sinh viên 43
3.1.10 Đơn vị học trình 43
3.1.11 Chi tiết môn 44
3.1.12 Chi tiết giáo viên 44
3.1.13 Tìm kiếm 45
3.1.14 Khối lượng giảng dạy 45
3.1.15 Chi tiết khối lượng giảng dạy 46
3.1.16 Quản lý ID 46
3.1.17 Báo cáo Bộ môn 47
3.1.18 Báo cáo Khoa 48
3.2 Chương trình CLIENT 49
3.2.1 Main
Trang 23.2.2 Đổi Pass 49
3.2.3 Chi tiết khối lượng giảng dạy 50
3.2.4 Cập nhật định mức 50
3.2.5 Nhiệm vụ quy đổi 51
3.2.6 Nhiệm vụ khác 51
3.2.7 Thực tập 52
3.2.8 Tìm kiếm 52
3.2.9 Báo cáo Bộ môn 53
3.2.10 Báo cáo Giáo viên 54
3.2.11 Báo cáo Thực tập 55
3.2.12 Báo cáo Nhiệm vụ khác 56
3.2.13 Báo Cáo Ngiệm vụ quy đổi 57
3.3 Kết quả đạt được 58
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
TÀI LIỆU THAM KHẢO 60
Trang 3LỜI NÓI ĐẦU
Ngày nay, khoa học kỹ thuật ngày càng phát triển mạnh mẽ, trong đó khoa học công nghệ cũng phát triển như vũ bão và xâm nhập vào mọi lĩnh vực của đời sống: Khoa học, kinh tế, xã hội, nhất là đối với ngành giáo dục
Việt Nam trong những năm gần đây việc đẩy mạnh ứng dụng tin học vào công việc hàng ngày là mục tiêu lớn được nhà nước quan tâm và phát triển Tin học hoá vào quản lý, giảng dạy là một trong những lĩnh vực quan trọng của ứng dụng tin học Việc áp dụng tin học vào quản lý không những giúp cho chất lượng công việc tăng cao, quản lý được chặt chẽ, chính xác có cơ sở khoa học mà còn làm giảm số nhân lực cần thiết để thực hiện công việc đó
Hiện nay trong khoa Công nghệ thông tin nói riêng, các trường đại học và cao đẳng nói chung tin học hoá việc giảng dạy, thi cử, quản lý là việc làm rất thiết thực
Trong 5 năm học tập và rèn luyện tại khoa em rất mong được vận dụng những kiến thức mà mình đã thu được để có thể làm được một sản phẩm nhỏ, có thể áp dụng được vào thực tế cuộc sống Chính vì vậy em đã lựa chọn và nghiên
cứu đề tài “Xây dựng chương trình quản lý khối lựơng giảng dạy cho khoa
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ VISUAL BASIC.NET
1.1 Tổng quan về ngôn ngữ lập trình Visual Basic.Net
1.1.1 Sơ lược về lịch sử của Visual Basic.Net
Ngôn ngữ BASIC (Beginner's All Purpose Symbolic Instruction Code) đã có
từ năm 1964 BASIC rất dễ học và dễ dùng Trong vòng 15 năm đầu, có rất nhiều chuyên gia Tin Học và công ty tạo các chương trình thông dịch (Interpreters) và biên dịch (Compilers) cho ngôn ngữ làm BASIC trở nên rất phổ thông
Năm 1975, Microsft tung ra thị trường sản phẩm đầu tay Microsoft BASIC và tiếp đó Quick BASIC (còn gọi là QBASIC) thành công rực rỡ
Quick BASIC phát triển trong nền Windows nhưng vẫn khó khăn khi tạo giao diện kiểu Windows Sau đó nhiều năm, Microsoft bắt đầu tung ra 1 sản phẩm mới cho phép ta kết hợp ngôn ngữ dễ học BASIC và môi trường phát triển lập trình với giao diện bằng hình ảnh (Graphic User Interface - GUI) trong Windows Đó là Visual Basic Version 1.0
Sự chào đời của Visual Basic Version 1.0 vào năm 1991 thật sự thay đổi bộ mặt lập trình trong Công Nghệ Tin Học
Trước đó, ta không có một giao diện bằng hình ảnh (GUI) với một IDE (Integrated Development Environment) giúp các chuyên gia lập trình tập trung công sức và thì giờ vào các khó khăn liên hệ đến doanh nghiệp của mình Mỗi người phải tự thiết kế giao diện qua thư viện có sẵn Windows API (Application Programming Interface) trong nền Windows Điều này tạo ra những trở ngại không cần thiết làm phức tạp việc lập trình
Visual Basic giúp ta bỏ qua những hệ lụy đó, chuyên gia lập trình có thể tự
vẽ cho mình giao diện cần thiết trong ứng dụng (application) 1 cách dễ dàng và như vậy, tập trung nổ lực giải đáp các vần đề cần giải quyết trong doanh nghiệp hay kỹ thuật
Trang 5Ngoài ra, còn nhiều công ty phụ phát triển thêm các khuôn mẫu (modules), công cụ (tools, controls) hay ứng dụng (application) phụ giúp dưới hình thức VBX cộng thêm vào giao diện chính càng lúc càng thêm phong phú
Khi Visual Basic phiên bản 3.0 được giới thiệu, thế giới lập trình lại thay đổi lần nữa Kỳ này, ta có thể thiết kế các ứng dụng (application) liên hệ đến Cơ Sở
Dữ Liệu (Database) trực tiếp tác động (interact) đến người dùng qua DAO (Data Access Object) Ứng dụng này thưòng gọi là ứng dụng tiền diện (front-end application) hay trực diện
Phiên bản 4.0 và 5.0 mở rộng khả năng Visual Basic nhắm đến Hệ Điều Hành Windows 95
Phiên bản 6.0 cung ứng 1 phương pháp mới nối với Cơ Sở Dữ Liệu (Database) qua sự kết hợp của ADO (Active Data Object) ADO còn giúp các chuyên gia phát triển mạng nối với Cơ Sở Dữ Liệu (Database) khi dùng Active Server Pages (ASP)
Tuy nhiên, Visual Basic phiên bản 6.0 (VB6) không cung ứng tất cả các đặc trưng của kiểu mẫu ngôn ngữ lập trình khuynh hướng đối tượng (Object Oriented Language - OOL) như các ngôn ngữ C++, Java
Thay vì cải thiện hay vá víu thêm thắt vào Visual Basic phiên bản 6.0, Microsoft đã xoá bỏ tất cả làm lại từ đầu các ngôn ngữ lập trình mới theo kiểu OOL rất hùng mạnh cho khuôn nền NET Framework Đó là các ngôn ngữ lập trình Visual Basic.NET và C# (gọi là C Sharp) Sau đó, nhiều ngôn ngữ lập trình khác cũng thay đổi theo tỷ như smalltalk.NET, COBOL.NET, làm Công Nghệ Tin Học trở nên phong phú hơn, đa dạng hơn
Tất cả những thay đổi này nhằm đáp ứng kịp thời sự đòi hỏi và nhu cầu phát triển cấp bách trong kỹ nghệ hiện nay
1.1.2 Sơ lược về Visual Basic.NET
Visual Basic.NET (VB.NET) là ngôn ngữ lập trình hướng đối tượng (Object Oriented Programming Language) do Microsoft thiết kế lại từ con
số không
Trang 6Visual Basic.NET (VB.NET) không kế thừa Visual Basic 6 hay bổ sung, phát triển từ Visual Basic 6 mà là một ngôn ngữ lập trình hoàn toàn mới trên nền Microsoft 's NET Framework Do đó, nó cũng không phải là Visual Basic phiên bản 7 Thật sự, đây là ngôn ngữ lập trình mới và rất lợi hại, không những lập nền tảng vững chắc theo kiểu mẫu đối tượng như các ngôn ngữ lập trình hùng mạnh khác đã vang danh C++, Java mà còn dễ học, dễ phát triển và còn tạo mọi cơ hội hoàn hảo để giúp ta giải đáp những vấn đề khúc mắc khi lập trình Hơn nữa, dù không khó khăn gì khi cần tham khảo, học hỏi hay đào sâu những gì xảy ra bên trong hậu trường OS, Visual Basic.NET (VB.NET) giúp ta đối phó với các phức tạp khi lập trình trên nền Windows và do đó, ta chỉ tập trung công sức vào các vấn đề liên quan đến dự án, công việc hay doanh nghiệp mà thôi
Nếu ta để ý tên của Visual Basic.NET (VB.NET), ta thấy ngay ngôn ngữ lập trình này chuyên trị tạo ứng dụng (application) dùng trong mạng, liên mạng hay trong Internet
1.1.3 Sơ lược về NET
.NET là tầng trung gian giữa các ứng dụng (applications) và hệ điều hành (OS) Tầng NET cung cấp mọi dịch vụ cơ bản giúp ta tạo các công dụng mà ứng dụng (application) đòi hỏi, giống như hệ điều hành cung cấp các dịch vụ cơ bản cho ứng dụng (application), tỷ như: đọc hay viết các tập tin (files) vào đĩa cứng (hard drive), Tầng này bao gồm một bộ các ứng dụng (application) và hệ điều hành gọi là NET Servers Như vậy, NET gần như là một bộ sưu tập (collection) các nhu liệu và khái niệm kết hợp trộn lẫn nhau làm việc nhằm tạo giải đáp các vấn đề liên quan đến thương nghiệp của ta Trong đó:
Tập hợp các đối tượng (objects) được gọi là NET Framework và Tập hợp các dịch vụ yểm trợ mọi ngôn ngữ lập trình NET gọi là Common Laguage Runtime (CLR)
Trang 7Hình 1.1: Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển NET Hãy quan sát thành phần cơ bản của NET:
User Applications NET Framework NET Servers NET Devices Hardware Components
1.1.3.1 NET Servers
Mục tiêu chính của NET là giúp ta giảm thiểu tối đa công việc thiết kế hệ thống tin học phân tán (distributed system) Đa số công việc lập trình phức tạp đòi hỏi đều được thực hiện ở hậu phương (back end) trong các máy cung cấp dịch vụ (servers) Microsoft đã đáp ứng với bộ sưu tập '.NET Enterprise Servers',
bộ này chuyên trị và yểm trợ mọi đặc tính (features) hậu phương cần có cho một
hệ thống tin học phân tán (distributed system)
Bộ sưu tập '.NET Enterprise Servers' bao gồm:
Server Operationg Systems: MS Windows Server, Advanced Server và Data
Center Server
Clustering và Load Balancing Systems: MS Application Center, MS Cluster Server
Trang 8Database System: MS SQL Server
E-Mail System: MS Exchange Server
Data-transformation engine trên cơ sở XML: MS Biz Talk Server
Accessing Legacy Systems: Host Integration Server
Tất cả các máy server này cung cấp mọi dịch vụ cần thiết cho các ứng dụng (application) về NET và là nền tảng xây dựng hệ thống Tin Học cho mọi dự án lập trình
1.1.3.2 NET Framework
Đối với Visual Basic.NET (VB.NET), tất cả mọi thứ đều thay đổi tận gốc rễ Một trong những thành phần quan trọng của NET là NET Framework Đây là nền tảng cho mọi công cụ phát triển các ứng dụng (application) NET
.NET Framework bao gồm:
Môi trường vận hành nền (Base Runtime Environment)
Bộ sưu tập nền các loại đối tượng (a set of foundation classes)
Môi trường vận hành nền (Base Runtime Environment) hoạt động giống như
hệ điều hành cung cấp các dịch vụ trung gian giữa ứng dụng (application) và các thành phần phức tạp của hệ thống Bộ sưu tập nền các loại đối tượng (a set of foundation classes) bao gồm một lớn các công dụng đã soạn và kiểm tra trước,
tỷ như: giao lưu với hệ thống tập tin (file system access) hay ngay cả các quy ước
về mạng (Internet protocols), nhằm giảm thiểu gánh nặng lập trình cho các chuyên gia Tin Học Do đó, việc tìm hiểu NET Framework giúp ta lập trình dễ dàng hơn vì hầu như mọi công dụng đều đã được yểm trợ
Ta xem NET Framework như là một tầng công dụng trừu tượng cung cấp dịch vụ trên hệ điều hành (nhìn dưới khía cạnh cung cấp dịch vụ):
User Applications NET Framework
Hệ điều hành (OS) Device Drivers Harware Components (Cương liệu)
Trang 9Để mọi ngôn ngữ lập trình sử dụng được các dịch vụ cung cấp bởi NET Framework, Microsoft tạo ra 1 tiêu chuẩn chung cho ngôn ngữ lập trình gọi là Common Language Specifications (CLS) Tiêu chuẩn này giúp các chương trình biên dịch (compilers) làm việc hữu hiệu Microsoft sáng chế ra Visual Basic.NET (VB.NET), Visual C++.NET và C# (đọc là C Sharp) cho nền NET Framework
và cũng không quên phổ biến rộng rãi CLS trong Công Nghệ Tin Học giúp các ngôn ngữ lập trình khác làm việc trong nền NET, tỷ như: COBOL.NET, Smalltalk.NET,
Lưu ý ở đây, mặc dù Visual Basic.NET (VB.NET), Visual C++.NET hay C# khác nhau về syntax và các công dụng phụ thuộc nhưng tất cả đều biên dịch ra cùng một ngôn ngữ trung gian gọi là MSIL (Microsoft Intermediate Language)
và do đó, không có ngôn ngữ lập trình NET nào hùng mạnh hơn ngôn ngữ lập trình NET nào Tất cả đều bình đẳng
1.2 Form và cách sử dụng Form
Khái niệm: Là một cửa sổ của Windows dùng để chứa các thành phần khác
Thông thường thì mỗi công việc người ta sẽ biểu diễn bằng một form
Ví dụ:
Form mở file
Form ghi file
Form lấy dữ liệu
Các thành phần chính của form
Thanh tiêu đề : gồm tên form và một số nút lệnh thông dụng đối với cửa sổ:
Thu nhỏ, phóng to và đóng cửa sổ
Command button: Nút lệnh điều khiển
Điều khiển Textbox: Cho phép người dùng nhập vào thông tin
Combobox: Danh sách đổ xuống
Điều khiển checkbox: Cho phép người dùng lựa chọn các lựa chọn
Các thuộc tính của form:
Ta có thể xem thuộc tính của form bằng cách mở cửa sổ Properties
Một số thuộc tính của form:
Trang 10.name: Tên form, ta có thể đổi tên form khi lập trình
.backcolor: Mầu nền của form
.Icon: Biểu tượng của form ta có thể thay đổi biểu tượng này bằng một biểu
tượng mà ta thích
.width : Độ rộng của form
.height : Chiều cao của form
1.3 Các kiểu dữ liệu thông dụng trong Visual Basic.net
.Integer : Kiểu số nguyên
.Boolean : Chứa một trong hai giá trị True hoặc False
.String : Kiểu chuỗi
Khai báo biến:
a Cấp độ của biến
Cấp độ cục bộ: Thường khai báo trong thân một thủ tục
Cấp độ tổng thể: Thường khai báo ở đầu mỗi form hoặc nằm ngoài thủ tục
hoặc hàm
b Khai báo biến
Dim (tên biến) AS (kiểu dữ liệu)
c Khai báo mảng
Dim (tên mảng) () AS (kiểu dữ liệu)
1.4 Các câu lệnh điều khiển
Trang 11b Câu lệnh lựa chọn
Cú pháp:
Select Case (biểu thức điều kiện)
Case (danh sách biểu thức 1)
Trang 121.5 Các kỹ thuật kết nối cơ sở dữ liệu ADO.Net
Visual Basic.Net cung cấp đối tượng ADO.Net bao gồm hai thành phần chính là Net Data Provider và đối tượng DataSet, cho phép bạn kết nối tới mọi
cơ sở dữ liệu, xử lý và trình bày chúng bằng nhiều hình thức khác nhau
Bằng cách sử sụng các đối tượng của ADO.Net, bạn có thể xây dựng các lớp dữ liệu cho từng thực thể hoặc xây dựng các đối tượng tương tác với cơ sở dữ liệu dùng cho project trên nền Net
Khác với DAO(DATA ACCESS OBJECT) ADO(ACTIVE DATA OBJECTS) cho phép làm việc với mọi nguồn dữ liệu không nhất thiết phải là cơ
sở dữ liệu Microsoft Acsess hay SQL server, dữ liệu nguồn có thể là danh sách các địa chỉ mail, hay một File Text Trong khi đó DAO chỉ duy nhất có thể liên kết được với hệ quản trị CSDL MS Access
xử lý dữ liệu cho ứng dụng web thường được xử lý bằng DataReader
Cơ chế xử lý của DataReader : DataReader chỉ xử lý 1 record tại một thời điểm và chỉ được truy xuất một chiều, không có các thao tác phức tạp như sắp xếp hay truy xuất bất cứ record ngẫu nhiên nào Trong khi truy xuất dữ liệu, dĩ nhiên DataReader sẽ giữ kết nối liên tục với database (hướng kết nối), và DataReader chỉ phục vụ thao tác đọc (readonly) Chính vì tính chất hướng kết nối nên DataReader được đơn giản hoá tối đa để việc xử lý nhẹ nhàng, ít rườm rà, tối
ưu được tốc độ xử lý (rất quan trọng đối với các ứng dụng trên nền web)
Cũng như hai đối tượng Command và Connection, tùy theo loại kết nối mà DataReader cũng có hai loại: OleDbDataReader và SqlDataReader Để sử dụng
ta phải import hai namespace: System.Data.OleDb và System.Data.SqlClient Cách sử dụng: DataReader được sử dụng để chứa kết quả trả về từ đối tượng Command với việc thực thi hàm ExecuteReader
Trang 13Dim conn As SqlConnection = New
Một số giá trị liệt kê thông dụng của CommandBehavior là :
CloseConnection : Connection sẽ đóng khi đối tượng DataReader đóng SchemaOnly : Câu truy vấn không trả về dữ liệu mà trả về thông tin các cột
của bảng
SingleRow : Câu truy vấn chỉ trả về một dòng duy nhất
Chúng ta có thể kết nối các giá trị của CommandBehavior với nhau bằng dấu &:
cmd.ExecuteReader(CommandBehavior.CloseConnection &
CommandBehavior.SingleRow)
Một số thuộc tính và phương thức thông dụng của DataReader
Thuộc tính
FieldCount : Trả về số trường có trong record hiện hành
IsClosed : Trả về giá trị boolean xác định đối tượng DataReader có bị đóng
hay không
Phương thức:
tại cột đang xét tùy vào kiểu
Trang 14GetValue, GetValues : Lấy về giá trị hoặc tập giá trị ở dạng “nguyên thủy”
(kiểu dữ liệu gốc của Database)
NextResult : Nhóm Kết quả tiếp theo
Read : Record tiếp theo
1.5.2 Data Adapter
DataAdapter là đối tượng làm trung gian lấy dữ liệu về cho DataSet, để
DataSet thực hiện xử lý ngắt kết nối Do vậy, mặc dù DataAdapter được liệt kê là đối tượng hướng kết nối nhưng thực chất nó phục vụ cho việc ngắt kết nối
Cũng như các đối tượng khác của ADO.NET, DataAdapter cũng có 2 loại tuỳ theo loại dữ liệu : OleDbDataAdapter, SqlDataAdapter
Cách Sử dụng
Sau đây là một số thuộc tính và phương thức thông dụng
Thuộc tính
SelectCommand, InsertCommand, UpdateCommand, DeleteCommand :
Các câu lệnh select , insert, update ,delete dữ liệu
Phương thức
Fill : Phương thức thực hiện kết quả trong câu lệnh select, rồi trả về cho
DataSet xử lý
Update : Gọi lệnh cập nhật các thay đổi của dữ liệu lên dữ liệu nguồn
1.5.3 NET Data Providers
.NET Data Providers là một tập các đối tượng phục vụ cho việc trao đổi dữ liệu giữa Data Source (dữ liệu nguồn) và đối tượng DataSet Nó chia ra gồm hai loại tập đối tượng : Một tập các đối tượng chịu trách nhiệm quản lý các kết nối (connections) tới DataSource (dữ liệu nguồn) và một tập các đối tượng còn lại chịu trách nhiệm xử lý dữ liệu
ADO.NET cung cấp hai loại NET Data Providers đó là SQL Server NET Data Provider và OLE DB NET Data Provider SQL Server NET Data Provider
sử dụng truy xuất Database SQL Server 7.0 trở về sau Còn OLE DB NET Data Provider sử dụng cho phiên bản 6.5 trở về trước và các loại Database khác (ví dụ
Trang 15như Access, Oracle…) SQL Server NET Data Provider hoạt động hiệu quả hơn bởi vì nó thao tác trực tiếp với SQL Server mà không cần phải thông qua OLE
DB Provider
Để sử dụng hai loại NET Data Provider này ta phải imporai hai Namespace: System.Data.SqlClient cho SQL Server NET Data Provider
System.Data.OleDb cho OLE DB Data Provider
1.5.4 Đối tượng Connection
Đối tượng Connection là đối tượng chịu trách nhiệm quản lý kết nối tới nguồn dữ liệu (DataSource) Có hai dạng Connection tương ứng với hai kiểu dữ liệu SQL Server và OLE DB đó là : SqlConnection và OleDbConnection Cả hai đối tượng này đều implement từ interface IDbConnection Bằng cách sử dụng Interface IDbConnection, các nhà cung cấp dịch vụ Database khác nhau có thể tạo ra các cài đặt phù hợp cho Database riêng của họ
Đối tượng Connection của ADO.NET chỉ nhận một tham số đầu vào là chuỗi kết nối (connection string) Trong chuỗi kết nối, các thông số được cách nhau bằng dấu “;”, connection string có các thông số sau
Provider : Tên nhà cung cấp Database, đối với OLEDB cần khai báo là
SQLOLEDB Đối với SQL Server thì không cần thuộc tính này
DataSource (hoặc Server) : Tên/địa chỉ database server cần kết nối tới Initial catalog (hoặc Database) : Tên của Database cần truy xuất
Uid: username để đăng nhập vào Database Server
Pwd : password để đăng nhập vào Database Server
Sau đây là ví dụ về một chuỗi kết nối đối với Database dạng OLE DB Provider=SQLOLEDB.1;Data Source=MySQL; Initial Catalog=NorthWind; uid=sa; pwd=sa;
Còn đây là ví dụ về một chuỗi kết nối đối với Database dạng SQL Server Server=CSC;database=Northwind;uid=sa;pwd=sa;
Sau đây là các thuộc tính, phương thức, sự kiện thông dụng của cả
SqlConnection và OleDbConnection
Trang 16Thuộc tính
ConnectionString : Thuộc tính thiết lập / lấy chuỗi kết nối
ConnectionTimeout: Thuộc tính thiết lập / lấy thời gian chờ trong khi truy
xuất vào database Khi truy xuất vào Database, chương trình sẽ chờ đúng khoảng thời gian này nếu chờ qua khoảng thời gian này mà vẫn không kết nối được vào database thì chương trình sẽ báo lỗi
Database : Thuộc tính thiết lập/ lấy tên database của đối tượng connection
hiện thời
DataSource : Thuộc tính thiết lập/lấy tên của database server của đối tượng
connection hiện thời
State : Lấy trạng thái hiện thời của Connection có các trạng thái sau:
Connecting, Broken, Open, Closed, Executing, Fetching
Phương thức
BeginTransaction : Sử dụng cho trường hợp xử lý giao tác của ứng dụng
Việc xử lý giao tác rất có lợi trong khi xử lý dữ liệu từ database vì có lúc trong khi xử lý dữ liệu gặp lỗi thì có thể thực hiện câu lệnh như Rollback hay trong lúc thao tác cũng có thể thực hiện được các giao tác chính như trên SQL Server như Commit- Close : đóng 1 connection
Sự kiện
InfoMessage : Xảy ra khi provider gửi ra một lời cảnh cáo hay thông tin
StateChange : Xảy ra khi trạng thái của connection thay đổi
Sau đây là đoạn source code sử dụng đối tượng Connection để kết nối vào
'Thuc hien cac thao tac du lieu<
'dong ket noi<
conn.Close()
Trang 171.5.5 Đối tượng Command
Sau khi chúng ta đã kết nối vào nguồn dữ liệu, chúng ta cần phải thực hiện thao tác các dữ liệu Để thao tác được với các dữ liệu chúng ta phải dùng đối tượng Command Đối tượng Command là đối tượng rất “đa năng”, nó vừa xử lý được sqlserver stored procedures vừa xử lý được các giao tác (transaction) Tương tự như đối tượng Connection, đối tượng Command cũng chia ra làm hai loại tuỳ theo nguồn dữ liệu : SqlCommand (cho SQL Server) và
OleDbCommand (cho OLE DB)
Một số thuộc tính và phương thức thông dụng của đối tượng Command Thuộc tính
CommandTimeout : Thiết lập/ Lấy thời gian chờ thực hiện lệnh Sau khi chờ
một khoảng thời gian nếu vượt quá sẽ báo lỗi
CommandType : Thiết lập/ Lấy kiểu của đối tượng lệnh (lệnh trực tiếp, stored
ExecuteReader : Thực thi câu lệnh CommandText của đối tượng Command
và trả về kiểu DataReader (OleDbDataReader / SqlDataReader )
ExecuteNonQuery : Thực thi câu lệnh CommandText của đối tượng
Command, đây là dạng câu lệnh cập nhật cơ sở dữ liệu (xoá /sửa) nên chỉ trả về
số dòng bị ảnh hưởng mà không trả về dòng dữ liệu nào
ExecuteScalar : Thực thi câu truy vấn của đối tượng Command và chỉ trả
về cột đầu tiên của dòng đầu tiên của kết quả Các kết quả còn lại bị bỏ qua Các hàm khởi tạo của đối tượng SqlCommand (Tương tự cho đối tượng
OleDbCommand):
New() : không có tham số nào
Trang 18New(cmdText as String):Trong đó cmdText là câu lệnh truyền vào cho đối
tượng Command
New(cmdText as String, connectin as SqlConnection): Trong đó cmdText là
câu lệnh truyền vào cho đối tượng Command
Connection là đối tượng kết nối truyền vào cho đối tượng Command
New(cmdText as String, connection as SqlConnection, transaction as
SqlTransaction):Trong đó cmdText là câu lệnh truyền vào cho đối tượng
Command
Transaction : Là giao tác truyền cho đối tượng Command
Các ví dụ :
- Sử dụng câu lệnh ExecuteNonQuery để update dữ liệu
Dim connStr As String = "server=CSC;database=Northwind;uid=sa;pwd=sa” Dim cmdStr As String = "Update Customers set CompanyName='CSC' where CustomerID='Seves'"
Dim conn As New SqlConnection(connStr)
conn.Open()
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
cmd.ExecuteNonQuery()
conn.Close()
Sử dụng câu lệnh ExecuteReader để lấy dữ liệu
Dim conn As New SqlConnection("server=CSC; database=Northwind;uid=sa; pwd=sa")
Dim cmd As New SqlCommand("Select * From Customers", conn)
Trang 19- Sử dụng câu lệnh ExecuteScalar để lấy dữ liệu:
Dim conn As New SqlConnection("server=CSC; database=Northwind2;uid=sa; pwd=sa")
conn.Open()
Dim cmdStr As String = "Select * From Customers"
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
Response.Write(cmd.ExecuteScalar())
conn.Close()
1.5.6 Điều khiển lưới dữ liệu (DataBinding)
DataGrid trong NET tuy có các chức năng giống như trong Visual Basic 6 nhưng đã được nâng cấp vượt bậc và cách dùng thay đổi rất nhiều nên coi như ta phải xem lại từ đầu
Cách dùng thông thường nhất của một DataGrid trong Visual Basic 6 là hiển thị một Table (bảng ) các bản ghi (Record) trong một spreadsheet(bảng tính), mỗi hàng(row) chứa các datafiels(trường dữ liệu cột) của một bản ghi và mỗi cột (column) có đầu trang cho biết là trường dữ liệu gì
Nói đúng ra nằm sau lưng mỗi DataGrid là một Recordset, tức là set of records mà ta lấy từ DataBase Table cũng chỉ là một bản Recordset trong trường hợp tổng quát khi ta không dùng mệnh đề where trong SQL command ví dụ
“Select * From Northwind”
Để hiển thị data trong DataGrid, ta có thể bind(buộc) nó vào Dataset, Array hay Collection Thật ra nếu ta muốn, ta có thể đưa cả DataGrid vào một set của Lisbox Items DataGrid trong.NET có thể hiển thị cả Master/Detail record
Checkbox
Trang 20Datagrid.Net có hai dạng cột (column styles) có sẵn là Textbox (DataGridTextBoxColumn) và Checkbox (DataGridBoolColumn), bạn có thể tạo/thêm các cột này vào lúc thiết kế hay runtime Nếu không, khi bạn gắn Datagrid vào CSDL, nó sẽ tự tạo ra các cột tương ứng với các cột dữ liệu theo cấu trúc của Dataset, nếu các cột có dữ liệu dạng False/True thì sẽ được hiển thị trong DataGridBoolColumn còn các dạng khác sẽ bị biến thành dạng text hết và hiển thị trong DataGridTextBoxColumn Ngoài ra, bạn có thể tự tạo ra các column style khác (custom) và gắn vào datagrid
Các cột của Datagrid.Net có thể gắn kết với một cột dữ liệu (bound) hay hoàn toàn độc lập với CSDL Để gắn chính xác một cột của Datagrid.Net với một cột trong datatable, ta sẽ sử dụng kỹ thuật Mapping Name - nghĩa là gán tên cột
dữ liệu vào cột của Datagrid
Ngoài ra ta cũng có thể thêm các cột dữ liệu unbound vào Datatable, các cột này sẽ không dùng để update CSDL chính mà chỉ dùng để thể hiện các dữ liệu theo ý của bạn
Vì ComboBox thừa kế từ ListBox nên tất cả những gì ta biết về ListBox đều áp dụng cho ComboBox Đặc biệt bây giờ ComboBox có property MaxDropDownItems cho ta quyết định hiển thị bao nhiêu items khi danh sách được mở ra
Kèm theo đây là một chương trình biểu diễn ComboBox trong đó ta dùng Property ValueMember của ComboBox để trả về một trị số đại diện Item Data trong ComboBox1 được loaded từ một Access2000 database table bằng code sau đây:
Private Sub frmCombo_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet () ' Instantiate a Dataset
' Instantiate an OleDbDataAdapter for Access2000 database Authors.mdb and return table Authors
Dim myData As New OleDbDataAdapter("Select * from Authors",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= \Authors.mdb")
myData.Fill(ds, "Authors") ' Load table Authors into Dataset
Trang 21Kế đó ta dùng DataAdapter để bỏ table Authors vào dataset ds Cách làm việc này tương tự như ADO (Active Data Object) trong Visual Basic 6 Có điểm khác là Dataset có thể chứa nhiều tables (recordsets) và nó hoạt động như một cached disconnected database trong bộ nhớ Kỹ thuật này có tên là ADO.NET Mỗi lần user select một item mới từ ComboBox1, chương trình sẽ hiển thị AuthorId, là ValueMember trong Label1
Private Sub ComboBox1_SelectedIndexChanged( ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Trang 22Ở đây có hai cách để ta select một ComboBox item bằng coding Cách thứ nhất là cho biết AuthorId (ValueMember), user clicks button Select by AuthorId
và cách thứ hai là cho biết FullName (DisplayMember), user clicks button Select
by Name để thấy kết quả:
Private Sub BtnSelectByName_Click( ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BtnSelectByName.Click
'Use Try to ignore error if operation fails
Try
' Select the ComboBox Item whose DisplayMember equal txtFullName.Text ' FindString returns the index of the found item
ComboBox1.SelectedIndex = ComboBox1.FindString(txtFullName.Text) Catch
End Try
End Sub
1.5.7.Khám phá Crytal Report
1.5.7.1 Thiết kế Crytal Report
.NET cung cấp Crytal Report như một phần của Project, bạn có thể thêm báo cáo bằng cách chọn Project/Add New Item/Crytal Report
Trang 23Mỗi đối tượng Crytal Report được tạo ta và đều xuất hiện trong danh sách thành phần dự án, tên mở rộng của chúng là rpt
Crytal Report cung cấp nhiều hình dạng ,cho phép bạn thiết kế Report theo các mẫu như Standard,Letter,CrossTab…
Sau khi thiết kế Report thành công ,bạn có thể tiếp tục thiết kế các Report với nhiều hình thức khác nhau
Hình 1.3: Mẫu Crytal Report
1.5.7.2 Cách gọi Crytal Report từ Visual Basic.Net
a, Gọi trực tiếp Crytal Report
Dim objRep As ReportDocument
objRep = New Standard
Dim myCon As New ConnectionInfo
Dim myInfo As New TableLogOnInfo
Dim myTable As String = "[Product Sales for 1997]"
Trang 24Dim objRep As ReportDocument
objRep = New myDataSet
Dim ds As New DataSet
Dim cls As New clsDatabase("server=gfhfgh;database=" + gsDatabase +
c, Gọi qua DataTable Crytal Report
Dim objRep As ReportDocument
objRep = New myDataSet
Dim dt As New DataTable
Dim cls As New clsDatabase("server=" + gsServer + ";database=" + gsDatabase + ";uid=" + gsUser + ";pwd=" + gsPwd)
Dim strSQL As String = "select * from Customers"
Trang 25Dim Filename As String = "C:\test.pdf"
Dim myDisk As DiskFileDestinationOptions = New
Trang 26CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 Khảo sát hiện trạng
Khoa Công nghệ thông tin đã được thành lập cách đây 6 năm với số lượng sinh viên ngày càng đông đảo và số lớp thuộc khoa ngày càng nhiều Điều đó đã dẫn tới việc theo dõi khối luợng giảng dạy của các giáo viên là rất khó khăn Qua quá trình khảo sát em thấy công tác quản lý khối lượng giảng dạy tại khoa như sau :
Dựa vào bảng kế hoạch tổng thể và chương trình đào tạo có thể lập được kế hoạch chi tiết cho từng lớp, khoá và cho từng bộ môn Ở bảng kế hoạch chi tiết ta
có thể thấy được thời gian học, môn học thuộc kì nào, số đơn vị học trình, khối lượng thực hành
Bảng này gửi về từng bộ môn và qua đó phòng đào tạo có được thông tin về phân công giáo viên giảng dạy các môn học trong bộ môn
Căn cứ vào kế hoạch trên và bảng phân công giảng dạy của từng bộ môn
ta có thể tính được khối lượng giảng dạy của từng bộ môn, từng khoá, từng giáo viên
2.2 Đánh gía hiện trạng cũ và sự cần thiết phải xây dựng hệ thống mới
Công việc quản lý khối lượng giảng dạy của khoa Công nghệ thông tin thuộc Đại học Thái nguyên đã và đang sử dụng phần mềm Microsoft Office để giúp cho việc soạn thảo và in ấn bảng biểu …
Những công việc này được làm bằng một loạt các thao tác thủ công trong một bộ lệnh thiếu tính mềm dẻo và khó chỉnh sửa, khó bổ sung và đặc biệt là khó
có thể đáp ứng được những yêu cầu đa dạng và luôn thay đổi của việc quản lý khối lượng giảng dạy của khoa Công nghệ thông tin
Xây dựng một hệ thống thông tin mềm dẻo nhằm khắc phục những hạn chế nói trên là nhu cầu thực tế và rất cần thiết
Một cách tổng quan hệ thống quản lý khối lượng giảng dạy của khoa Công nghệ thông tin cần đáp ứng những yêu cầu sau :
Trang 27Phải có hệ thống đăng nhập phân quyền để đảm bảo tính bảo mật
2.3 Nội dung quy định thực tế được sử dụng cho chương trình
Chương trình được thực hiện dựa theo quy định số: 02B/QĐ-CNTT do trưởng khoa TS.Phạm Việt Bình đã kí
Trang 28ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
Về việc ban quy chế chi tiêu nội bộ của Khoa Công Nghệ Thông Tin
TRƯỞNG KHOA CÔNG NGHỆ THÔNG TIN
Căn cứ Nghị định số 31/CP, ngày 04/04/1994 của Chính phủ về việc thành lập Đại học Thái Nguyên ;
Căn cứ Quyết định số 2103/GD-ĐT ngày 25/06/1997 của Bộ Giáo dục và Đào tạo
về việc ban hành Quy chế tổ chức và hoạt động của Đại học Thái Nguyên ;
Căn cứ quyết định số 363/QĐ-TCCB ngày 18/12/2001 của giám đốc đại Thái Nguyên
về việc ban hành quy định chức năng, nhiệm vụ và tổ chức của Khoa CNTT thuộc Đại học Thái Nguyên ;
Căn cứ nghị định số 43/2006/NĐ-CP ngày 26/04/2006 của chính phủ về Quy định quyền tự chủ, tự chịu trách nhiệm thực hiện nhiệm vụ, tổ chức bộ máy, biên chế và tài chính đối với đơn vị sự nghiệp công lập và các văn bản hướng dẫn thực hiện ;
Căn cứ vào quyết định số 445 ngày 15/07/2006 của giám đốc Đại học Thái Nguyên
về việc ban hành quy chế chi tiêu nội bộ của đơn vị hành chính sự nghiệp công lập ; Căn cứ vào kết quả thảo luận thống nhất, soạn thảo quy chế chi tiêu nội bộ tại hội nghị cán bộ chủ chốt của khoa tổ chức ngày 27 tháng 07 năm 2006 ;
Theo đề nghị của trưởng phòng tổng hợp và kế toán trưởng khoa Khoa Công Nghệ Thông Tin
Các quy định trước đây trái với quy chế này đều bãi bỏ
Các nội dung chưa được đề cập ở quy chế này được thực hiện theo quy định hiện hành Điều 3 Các ông (bà) Thủ trưởng các đơn vị, các bộ phận chức năng chịu trách nhiệm thi hành quyết định này./
Trang 292.4.1 Mục tiêu bài toán
Đăng nhập có chức năng phân quyền
Theo dõi dữ liệu nhập
Tổng hợp và lập báo cáo
2.4.2 Biểu đồ phân cấp chức năng (BPC)
a : Biểu đồ phân cấp chức năng (BPC) trên SERVER
Hình 2.1: Biểu đồ phân cấp chức năng SERVER
CT Giáo viên
Số SV
CT Môn
Khoa Thoát
Trang 30b : Biểu đồ phân cấp chức năng (BPC) trên CLIENT
Hình 2.2: Biểu đồ phân cấp chức năng CLIENT
2.4.3 Mô hình thực thể liên kết (ERD)