Để có thể hoàn tất được bài đồ án này, trước tiên phải kể đến công sức của thầy Nguyễn Tấn Trần Minh Khang. Chúng em kính lời cảm ơn đến thầy đã tận tình hướng dẫn và giúp đỡ trong thời gian thực hiện đồ án này. Chúng em xin tỏ lòng biết ơn sâu sắc đối với gia đình đã động viên.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM PHẠM VĂN VIỆT - TRƯƠNG LẬP VĨ TÌM HIỂU NGƠN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA ĐỒ ÁN TỐT NGIỆP GIÁO VIÊN HƯỚNG DẪN NGUYỄN TẤN TRẦN MINH KHANG TP HCM 2002 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM PHẠM VĂN VIỆT - TRƯƠNG LẬP VĨ TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA GIÁO VIÊN HƯỚNG DẪN NGUYỄN TẤN TRẦN MINH KHANG TP HCM 2002 Lời cám ơn Để hồn tất đồ án này, trước tiên phải kể đến công sức thầy Nguyễn Tấn Trần Minh Khang Chúng em kính lời cảm ơn đến thầy tận tình hướng dẫn giúp đỡ thời gian thực đồ án Chúng em xin tỏ lòng biết ơn sâu sắc gia đình động viên, tạo điều kiện để thực tốt đồ án Xin cám ơn cha, mẹ, anh, chị, em! Chúng em xin chân thành cảm ơn đến thầy cô khoa Công nghệ thông tin trường Đại học Khoa học Tự nhiên Thành phố Hồ Chí Minh truyền đạt kiến thức, kinh nghiệm quí báu cho chúng em trình học tập trường Chúng em xin chân thành cảm ơn đến bạn bè giúp đỡ tài liệu, trao đổi học thuật thực đồ án Xin gởi lời cảm ơn đến bạn Hồ Ngọc Huy, Trần Thế Anh, Bùi Thanh Tuấn Thành phố Hồ Chí Minh, ngày 03 tháng năm 2002 Sinh viên Phạm Văn Việt Trương Lập Vĩ Mục lục Lời cám ơn .3 Mục lục Tóm tắt Phần Tìm hiểu ngơn ngữ C# .1 Chương C# Net Framework 1.1 Nền tảng NET 1.2 NET Framework .3 1.3 Biên dịch ngôn ngữ trung gian (MSIL) .4 1.4 Ngôn ngữ C# Chương Khởi đầu 2.1 Lớp, đối tượng kiểu .6 2.2 Phát triển “Hello World” Chương Những sở ngôn ngữ C# 12 3.1 Các kiểu 12 3.2 Biến 14 3.3 Biểu thức 16 3.4 Khoảng trắng 16 3.5 Câu lệnh 16 3.6 Toán tử .19 3.7 Tạo vùng tên 21 3.8 Chỉ thị tiền xử lý 22 Chương Lớp đối tượng .24 4.1 Định nghĩa lớp 24 4.2 Tạo đối tượng 25 4.3 Sử dụng thành viên tĩnh .27 4.4 Hủy đối tượng 29 4.5 Truyền tham số .30 4.6 Nạp chồng phương thức hàm dựng .32 4.7 Đóng gói liệu với property 33 Chương Thừa kế Đa hình 35 5.1 Đặc biệt hoá tổng quát hoá 35 5.2 Sự kế thừa .35 5.3 Đa hình .37 5.4 Lớp trừu tượng 38 5.5 Lớp gốc tất lớp: Object 39 5.6 Kiểu Boxing Unboxing .40 5.7 Lớp lồng 42 Chương Nạp chồng toán tử 44 6.1 Cách dùng từ khoá operator .44 6.2 Cách hổ trợ ngôn ngữ Net khác 44 6.3 Sự hữu ích tốn tử .44 6.4 Các tốn tử logic hai ngơi 45 6.5 Toán tử so sánh 45 6.6 Toán tử chuyển đổi kiểu (ép kiểu) 45 Chương Cấu trúc 48 7.1 Định nghĩa cấu trúc 48 7.2 Cách tạo cấu trúc 49 Chương Giao diện 50 8.1 Cài đặt giao diện .50 8.2 Truy xuất phương thức giao diện 52 8.3 Nạp chồng phần cài đặt giao diện 54 8.4 Thực giao diện cách tường minh 55 Chương Array, Indexer, and Collection 58 9.1 Mảng (Array) 58 9.2 Câu lệnh foreach 59 9.3 Indexers 62 9.4 Các giao diện túi chứa 65 9.5 Array Lists 65 9.6 Hàng đợi 65 9.7 Stacks .66 9.8 Dictionary .66 Chương 10 Chuỗi .67 10.1 Tạo chuỗi 67 10.2 Phương thức ToString() 67 10.3 Thao tác chuỗi 68 10.4 Thao tác chuỗi động .70 Chương 11 Quản lý lỗi .72 11.1 Ném bắt biệt lệ 73 11.2 Đối tượng Exception 80 11.3 Các biệt lệ tự tạo 82 11.4 Ném biệt lệ lần 83 Chương 12 Delegate Event 87 12.1 Delegate (ủy thác, ủy quyền) 87 12.2 Event (Sự kiện) 101 Chương 13 Lập trình với C# 109 13.1 Ứng dụng Windows với Windows Form 109 Chương 14 Truy cập liệu với ADO.NET 144 14.1 Cơ sở liệu ngôn ngữ truy vấn SQL 144 14.2 Một số loại kết nối sử dụng 144 14.3 Kiến trúc ADO.NET 145 14.4 Mơ hình đối tượng ADO.NET .146 14.5 Trình cung cấp liệu (.NET Data Providers) 148 14.6 Khởi với ADO.NET 148 14.7 Sử dụng trình cung cấp liệu quản lý 151 14.8 Làm việc với điều khiển kết buộc liệu .152 14.9 Thay đổi ghi sở liệu 161 Chương 15 Ứng dụng Web với Web Forms 173 1.1 Tìm hiểu Web Forms 173 15.1 Các kiện Web Forms 174 15.2 Hiển thị chuỗi lên trang 175 15.3 Điều khiển xác nhận hợp 178 15.4 Một số ví dụ mẫu minh họa 179 Chương 16 Các dịch vụ Web 192 Chương 17 Assemblies Versioning 196 17.1 Tập tin PE 196 17.2 Metadata .196 17.3 Ranh giới an ninh 196 17.4 Số hiệu phiên (Versioning) 196 17.5 Manifest 196 17.6 Đa Module Assembly 197 17.7 Assembly nội (private assembly) 198 17.8 Assembly chia sẻ (shared assembly) 198 Chương 18 Attributes Reflection 200 18.1 Attributes 200 18.2 Attribute mặc định (intrinsic attributes) .200 18.3 Attribute lập trình viên tạo 201 18.4 Reflection .203 Chương 19 Marshaling Remoting .204 19.1 Miền Ứng Dụng (Application Domains) .204 19.2 Context 206 19.3 Remoting 208 Chương 20 Thread Sự Đồng Bộ 215 20.1 Thread 215 20.2 Đồng hóa (Synchronization) 216 20.3 Race condition DeadLock .221 Chương 21 Luồng liệu 223 21.1 Tập tin thư mục .223 21.2 Đọc ghi liệu 230 21.3 Bất đồng nhập xuất 235 21.4 Serialization 238 21.5 Isolate Storage 244 Chương 22 Lập trình NET COM .246 22.1 P/Invoke .246 22.2 Con trỏ 248 Phần Xây dựng ứng dụng minh họa 250 Chương 23 Website dạy học ngôn ngữ C# 251 23.1 Hiện trạng yêu cầu 251 23.2 Phân tích hướng đối tượng 258 23.3 Thiết kế hướng đối tượng 262 Tóm tắt Đề tài tập trung tìm hiểu tồn khái niệm liên quan đến ngơn ngữ C# Bởi C# Microsoft phát triển thành phần khung ứng dụng NET Framework hướng Internet nên đề tài bao gồm hai phần sau: Phần 1: Tìm hiểu ngơn ngữ C# Việc tìm hiểu bao gồm kiến thức tảng công nghệ NET Framework, chuẩn bị cho khái niệm liên quan C# NET Framework Sau tìm hiểu cú pháp ngơn ngữ này, bao gồm tồn tập lệnh, từ khóa, khái niệm lập trình hướng đối tượng theo C#, hỗ trợ lập trình hướng component Sau cách lập trình C# với ứng dụng Window cho máy để bàn C# với công nghệ đại ASP.NET ADO.NET, XML cho lập trình Web Phần 2: Xây dựng ứng dụng Phần báo cáo ứng dụng minh họa cho việc tìm hiểu Tên ứng dụng Xây dựng Website dạy học C# Đây ứng dụng Web cài đặt ngôn ngữ C# ASP.NET Trong ASP.NET dùng để xây dựng giao diện tương tác với người dùng; cịn C# ngơn ngữ lập trình bên Ứng dụng có thao tác sở liệu (Microsoft SQL Server) thơng quan mơ hình ADO.NET Phần Tìm hiểu ngơn ngữ C# C# Net Framework Gvhd: Nguyễn Tấn Trần Minh Khang Chương C# Net Framework Mục tiêu C# cung cấp ngơn ngữ lập trình đơn giản, an toàn, đại, hướng đối tượng, đặt trọng tâm vào Internet, có khả thực thi cao cho mơi trường NET C# ngơn ngữ mới, tích hợp tinh hoa ba thập kỷ phát triển ngơn ngữ lập trình Ta dể dàng thầy C# có đặc trưng quen thuộc Java, C++, Visual Basic, … Đề tài đặt trọng tâm giới thiệu ngôn ngữ C# cách dùng cơng cụ lập trình tảng NET Với ngơn ngữ C++, học ta không cần quan tâm đến môi trường thực thi Với ngôn ngữ C#, ta học để tạo ứng dụng NET, lơ ý bỏ lỡ quan điểm ngơn ngữ Do đó, đề tài xét C# tập trung ngữ cảnh cụ thể tảng NET Microsoft ứng dụng máy tính để bàn ứng dụng Internet Chương trình bày chung hai phần ngôn ngữ C# tảng NET, bao gồm khung ứng dụng NET (.NET Framework) 1.1 Nền tảng NET Khi Microsoft công bố C# vào tháng năm 2000, việc khánh thành phần số nhiều kiện mà tảng Net công công bố Nền tảng Net bô khung phát triển ứng dụng mới, cung cấp giao diện lập trình ứng dụng (Application Programming Interface - API) mẽ cho dịch vụ hệ điều hành Windows, cụ thể Windows 2000, mang lại nhiều kỹ thuật khác bật Microsoft suốt từ năm 90 Trong số có dịch vụ COM+, công nghệ ASP, XML thiết kế hướng đối tượng, hỗ trợ giao thức dịch vụ web SOAP, WSDL UDDL với trọng tâm Internet, tất tích hợp kiến trúc DNA Nền tảng NET bao gồm bốn nhóm sau: Một tập ngôn ngữ, bao gồm C# Visual Basic Net; tập công cụ phát triển bao gồm Visual Studio Net; tập đầy đủ thư viện phục vụ cho việc xây dựng ứng dụng web, dịch vụ web ứng dụng Windows; cịn có CLR - Common Language Runtime: (ngôn ngữ thực thi dùng chung) để thực thi đối tượng xây dựng bơ khung Một tập Server Xí nghiệp Net SQL Server 2000 Exchange 2000, BizTalk 2000, … chúng cung cấp chức cho việc lưu trữ liệu quan hệ, thư điện tử, thương mại điện tử B2B, … Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang TEN VARCHAR(50) Tên chủ đề NOIDUNG VARCHAR(1000) Nội dung chủ đề SOCHUONG INT Số chương có chủ đề TENTP VARCHAR(50) Tên thành phần : Lý thuyết, Vì dụ, Trắc nghiệm, Quản trị NOIDUNGTP VARCHAR(500) Nội dung tổng quan thành phần thuộc chủ đề Thuộc tính đối tượng : CHƯƠNG Stt Tên thuộc tính Loại Kiểu liệu Ý nghĩa MACHUONG PK INT Mỗi chương có mã TEN VARCHAR(50) Tên chương NOIDUNG VARCHAR(1000) Nội dung chương SOMUCCHINH INT Số mục chương Thuộc tính đối tượng : MỤC CHÍNH Stt Tên thuộc tính Loại Kiểu liệu Ý nghĩa MAMUCCHINH PK INT Mã mục TENMC VARCHAR(100) Tên mục GIOITHIEUMC VARCHAR(2000) Giới thiệu tổng quan tổng quan mục TAPTIN VARCHAR(50) Tên tập tin mô tả chi tiết mục có NOIDUNGCTMC VARCHAR(1000) Nội dung ý thuộc mục Thuộc tính đối tượng : VÍ DỤ Stt Tên thuộc tính Loại Kiểu liệu Ý nghĩa MAVD PK INT Mã ví dụ TENVIDU VARCHAR(100) Tên ví dụ MANGUON VARCHAR(1000) Mã nguồn ví dụ KETQUA VARCHAR(1000) Kết xuất mã ví dụ TAPTIN VARCHAR(50) Tên tập tin mơ tả chi tiết ví dụ 259 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Thuộc tính đối tượng : CÂU TRẮC NGHIỆM Stt Tên thuộc tính Loại Kiểu liệu Ý nghĩa MACAUTRACNGHIEM PK INT Mã câu trắc nghiệm TEN VARCHAR(500) Tên câu trắc nghiệm NOIDUNG VARCHAR(1000) Nội dung câu trắc nghiệm TRALOI1, TRALOI2, TRALOI3, TRALOI4 VARCHAR(500) Một câu hỏi có câu trả lời, ứng với thuộc tính DAPAN INT Đáp án câu hỏi, có giá trị : 1, 2, 3, 23.2.4 Các xử lý đối tượng Xử lý đối tượng : CHỦ ĐỀ Stt Tên xử lý Loại Ý nghĩa Hiển thị thông tin chủ đề Qui định Hiển thị thông tin thành phần chủ đề Thêm chủ đề Qui định Dữ liệu nhập tên nội dung Xóa chủ đề có sẵn Qui định Xóa tồn thơng tin chủ đề Sửa đổi thông tin chủ đề Qui định Hiệu chỉnh tên, nội dung chủ đề Kiểm tra hợp lệ việc thay đổi chủ đề Qui định Kiểm tra ràng buộc tính hợp lệ thêm, xóa, sửa chủ đề Lập báo cáo, thống kê Qui định Tổng kết tồn thơng tin số chương, ví dụ, câu trắc nghiệm Xử lý đối tượng : CHƯƠNG Stt Tên xử lý Loại Ý nghĩa Hiển thị thông tin chương Qui định Hiển thị danh sách tên chương theo chủ đề nội dung Thêm chương Qui định Dữ liệu nhập tên nội dung Xóa chương có sẵn Qui định Xóa tồn thơng tin chương : mục chính, ý Sửa đổi thơng tin chương Qui định Hiệu chỉnh tên, nội dung chương Kiểm tra hợp lệ việc thay đổi chương Qui định Kiểm tra ràng buộc tính hợp lệ thêm, xóa, sửa 260 Website dạy học ngơn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Xử lý đối tượng : MỤC CHÍNH Stt Tên xử lý Loại Ý nghĩa Hiển thị thông tin mục thuộc chương Qui định Hiển thị danh sách ý mục Thêm mục Qui định Dữ liệu nhập tên, nội dung mục ý con, tên tập tin mơ tả mục cần thiết Xóa mục có sẵn Qui định Xóa tồn thơng tin mục : ý chính, tên tập tin Sửa đổi thông tin mục Qui định Hiệu chỉnh tên, nội dung nội dung mục ý cần thiết Kiểm tra hợp lệ việc thay đổi mục Qui định Kiểm tra ràng buộc tính hợp lệ thêm, xóa, sửa Xử lý đối tượng : VÍ DỤ Stt Tên xử lý Loại Ý nghĩa Hiển thị thơng tin ví dụ Qui định Hiển thị danh sách ví dụ chương Thêm ví dụ Qui định Dữ liệu nhập tên, giới thiệu sơ ví dụ, mã nguồn, kết xuất tương ứng tên tập tin mô tả ví dụ cần thiết Xóa ví dụ có sẵn Qui định Xóa tồn thơng tin ví dụ : tên, mã nguồn, kết xuất tên tập tin Sửa đổi thơng tin ví dụ Qui định Hiệu chỉnh tên, giới thiệu ví dụ, mã nguồn, kết xuất tên tập tin có Kiểm tra hợp lệ việc thay đổi ví dụ Qui định Kiểm tra ràng buộc tính hợp lệ thêm, xóa, sửa Xử lý đối tượng : CÂU TRẮC NGHIỆM Stt Tên xử lý Loại Ý nghĩa Hiển thị thông tin câu trắc nghiệm thuộc chương Qui định Hiển thị danh sách câu trắc nghiệm, câu trả lời đáp án tương ứng câu Thêm câu trắc nghiệm Qui định Dữ liệu nhập tên, câu hỏi trắc 261 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang nghiệm, câu chọn lựa đáp án câu Xóa câu trắc nghiệm có sẵn Qui định Xóa tồn thơng tin câu trắc nghiệm : tên, câu hỏi trắc nghiệm, câu chọn lựa đáp án câu Sửa đổi thông tin câu trắc nghiệm Qui định Hiệu chỉnh tên, câu hỏi trắc nghiệm, câu chọn lựa đáp án câu Kiểm tra hợp lệ việc thay đổi câu trắc nghiệm Qui định Kiểm tra ràng buộc tính hợp lệ thêm, xóa, sửa 23.3 Thiết kế hướng đối tượng 23.3.1 Thiết kế liệu 23.3.1.1 Sơ đồ logic Hình 23-7 Sơ đồ logic 23.3.1.2 Bảng thuộc tính đối tượng phụ Thuộc tính đối tượng : THAM SỐ Stt Tên thuộc tính Loại Kiểu liệu Ý nghĩa MATHAMSO PK INT Mã tham số TEN VARCHAR(100) Tên tham số GIATRI INT Giá trị tham số DIENGIAI VARCHAR(100) Ý nghĩa tham số Kiểu liệu Ý nghĩa Thuộc tính đối tượng : NGƯỜI DÙNG Stt Tên thuộc tính Loại 262 Website dạy học ngôn ngữ C# TENNGUOIDUNG Gvhd: Nguyễn Tấn Trần Minh Khang PK VARCHAR(100) Tên người dùng MATMA VARCHAR(100) Mật mã EMAIL VARCHAR(100) Địa mail DIENTHOAI VARCHAR(100) Điện thoại FAX VARCHAR(100) Số fax 23.3.2 Thiết kế giao diện 23.3.2.1 Tổng quan Sơ đồ hình Tổng quan lý thuết Lý thuyết theo chương Tổng quan Ví dụ Ví dụ theo chương Tổng quan Trắc nghiệm Trắc nghiệm theo chương Báo cáo Thống kê MÀN HÌNH CHÍNH Đăng nhập Quản trị Thơng báo lỗi Lý thuyết Ví dụ 263 Trắc nghiệm Website dạy học ngơn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang 23.3.2.2 Một số giao diện ứng dụng Giao diện Hình 23-8 Trang chủ ứng dụng dạy học CSharp • 264 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện chi tiết lý thuyết chương Hình 23-9 Liệt kê chi tiết mục chính, ý chương số 265 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện tổng quan ví dụ Hình 23-10 Liệt kê tất ví dụ chương 266 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện mơ tả chi tiết ví dụ Hình 23-11 Minh họa lý thuyết mã ví dụ kết xuất 267 Website dạy học ngơn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện câu trắc nghiệm kiến thức Hình 23-12 Trắc nghiệm kiến thức chương số 268 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Kết làm trắc nghiệm Hình 23-13 Kết chấm điểm làm trắc nghiệm 269 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện hiệu chỉnh chủ đề Hình 23-14 Cho phép thêm, xóa sử chủ đề 270 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện tổng quan hiệu chỉnh nội dung chi tiết chủ đề Hình 23-15 Tổng quan hiệu chỉnh lý thuyết, ví dụ trắc nghiệm 271 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện hiệu chỉnh chi tiết nội dung lý thuyết chương Hình 23-16 Cho phép thêm, xóa sửa nội dung lý thuyết theo chương 272 Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang Giao diện hiệu chỉnh chi tiết Trắc nghiệm Hình 23-17 Giao diện thêm, xóa sửa câu trắc nghiệm 273 ... Web Phần 2: Xây dựng ứng dụng Phần báo cáo ứng dụng minh họa cho việc tìm hiểu Tên ứng dụng Xây dựng Website dạy học C# Đây ứng dụng Web cài đặt ngơn ngữ C# ASP.NET Trong ASP.NET dùng để xây dựng... MÔN CÔNG NGHỆ PHẦN MỀM PHẠM VĂN VIỆT - TRƯƠNG LẬP VĨ TÌM HIỂU NGƠN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA GIÁO VIÊN HƯỚNG DẪN NGUYỄN TẤN TRẦN MINH KHANG TP HCM 2002 Lời cám ơn Để hồn tất đồ án này,... thực thi Với ngôn ngữ C#, ta học để tạo ứng dụng NET, lơ ý bỏ lỡ quan điểm ngơn ngữ Do đó, đề tài xét C# tập trung ngữ cảnh cụ thể tảng NET Microsoft ứng dụng máy tính để bàn ứng dụng Internet