Tải bản đầy đủ (.pdf) (88 trang)

nghiên cứu về GIS và logic mờ áp dụng cho bài toán phân lớp khách hàng tại VNPT thái nguyên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.43 MB, 88 trang )

LỜI CẢM ƠN
Trong thời gian làm đồ án tốt nghiệp, em đã nhận được nhiều sự giúp đỡ,
đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè.
Em xin gửi lời cảm ơn chân thành đến thầy Trần Hải Thanh, giảng viên Bộ
môn Khoa Học Máy Tính - trường ĐH CNTT&TT, người đã tận tình hướng dẫn,
chỉ bảo em trong suốt quá trình làm đồ án.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường ĐH
CNTT&TT nói chung, các thầy cô trong Bộ môn Khoa Học Máy Tính nói riêng đã
dạy dỗ cho em kiến thức về các môn đại cương cũng như các môn chuyên ngành,
giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt
quá trình học tập.
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều
kiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành
khoá luận tốt nghiệp.
Thái Nguyên, ngày 06 tháng 6 năm 2016
Sinh Viên Thực Hiện

Trần Minh Hoàng

1


2


LỜI CAM ĐOAN
Tôi xin cam đoan số liệu và kết quả nghiên cứu trong đồ án này là trung
thực và chưa hề được sử dụng để bảo vệ một học vị nào. Mọi sự giúp đỡ cho việc
thực hiện đồ án này đã được cảm ơn và các thông tin trích dẫn trong đồ án đã được
chỉ rõ nguồn gốc rõ ràng và được phép công bố.
Thái Nguyên, ngày 06 tháng 6 năm 2016


Sinh Viên Thực Hiện

Trần Minh Hoàng

3


4


MỤC LỤC
LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
CHƯƠNG 1: CÔNG CỤ THỰC HIỆN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.Ngôn ngữ lập trình C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1.Lịch sử hình thành. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2.Đặc điểm ngôn ngữ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3.Cách thức ứng dụng C# hoạt động.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.4.Ngôn ngữ C# và những ngôn ngữ khác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.5.Kiểu dữ liệu trong C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.6.Toán tử trong C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.7.GMap.NET cho ngôn ngữ C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.Công cụ quản lý dữ liệu SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1.Lịch sử phát triển.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.2.Đặc điểm của SQL Server và đối tượng làm việc. . . . . . . . . . . . . . . . . . . 13
1.2.3.Các định nghĩa cơ bản trong SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4.Những cú pháp cơ bản.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.5.Các chế độ bảo mật.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.Tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1.Khái niệm tập rõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2.Khái niệm tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3.Tập mờ trực cảm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.Các đặc trưng của tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5


2.3.Số mờ và các tập con mờ lồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1.Tập mờ lồi và số mờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2.Các hàm thuộc của tập mờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4.Các phép toán trên tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.1.So sánh các tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.2.Các phép toán trên tập mờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.Các kỹ thuật phân loại dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.1.Giới thiệu về kỹ thuật phân cụm trong Khai phá dữ liệu (Clustering
Techniques in Data Mining). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.2.Kỹ thuật phân lớp dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.3.Các phương pháp tính khoảng cách . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.4.Thuật toán K-Means. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6.Hệ thống thông tin địa lý. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
CHƯƠNG 3: XÂY DỰNG VÀ CÀI ĐẶT CHƯƠNG TRÌNH . . . . . . . . . . . . . . . . 40
3.1.Mô tả bài toán.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.Xây dựng các chức năng của chương trình.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.1.Cấu trúc cơ sở dữ liệu sử dụng trong chương trình. . . . . . . . . . . . . . . . . . 40
3.2.2.Xây dựng giao diện form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2.3.Xây dựng các chức năng của chương trình. . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.Ứng dụng thuật toán K-Means vào việc phân loại khách hàng . . . . . . . . . . . 53
KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

NHẬN XÉT CỦA GIÁO VIÊN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6


DANH MỤC HÌNH ẢNH

Hình 1.1.Các từ khóa thông dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Hình 1.2.Giao diện ứng dụng console application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Hình 1.3.Giao diện ứng dụng window application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Hình 1.4.Giao diện ứng dụng web application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Hình 1.5.Khái quát về NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hình 1.6.GMap.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 1.7.Các nguồn cung cấp dữ liệu bản đồ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 2.1.Các tập mờ tam giác . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.2.Tập mờ hình thang. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.3.Tập mờ L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 2.4.Tập mờ Gamma tuyến tính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Hình 2.5.Tập mờ Singleton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Hình 2.6.Hợp của hai tập mờ A và B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Hình 2.7.Giao của hai tập mờ A và B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Hình 2.8.Phần bù của tập mờ A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Hình 2.9.Sơ đồ thuật toán K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.10.Khởi tạo trọng tâm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.11.Trọng tâm mới . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hình 2.12.Trọng tâm mới . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 3.1.Bảng chi tiết dịch vụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 3.2.Bảng dịch vụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 3.3.Bảng danh mục khách hàng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Hình 3.4.Bảng khách hàng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 3.5.Bảng huyện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7


Hình 3.6.Bảng phường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 3.7.Bảng tỉnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 3.8.Mối quan hệ giữa các bảng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hình 3.9.Giao diện chính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hình 3.10.Giao diện thêm mới thuê bao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 3.11.Giao diện tra cứu thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 3.12.Giao diện phân loại khách hàng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 3.13.Đặc tính cơ bản của bản đồ GMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 3.14.Bản đồ GMap sau khi thiết lập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hình 3.15.Đánh dấu trên bản đồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 3.16.Kết quả trả về . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 3.17.Bố cục một bảng Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hình 3.18.Sơ đồ thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Hình 3.19.Kết quả sau khi phân loại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8


MỞ ĐẦU
Chúng ta đang sống trong một thời đại mới, thời đại phát triển rực rỡ của
CNTT. CNTT đã ở một bước phát triển cao đó là số hóa tất cả các dữ liệu thông
tin, luân chuyển mạnh mẽ và kết nối tất cả chúng ta lại với nhau.
Xu thế toàn cầu hóa về internet đang diễn ra mạnh mẽ trên khắp thế giới, và
Việt Nam cũng không phải ngoại lệ. Số người dùng internet tại Việt Nam tính đến

cuối tháng 6/2015 đã vượt 45 triệu người, chiếm hơn 48% dân số Việt Nam.
Internet bùng nổ đang đặt ra nhiều cơ hội và thách thức cho sự phát triển kinh tế –
xã hội ở nước ta. Song song với đó, các dịch vụ giá trị gia tăng (VAS – Value
added service), dịch vụ Internet cũng đang phát triển mạnh.
Như vậy, với tình hình hiện tại, số lượng các hộ dân sử dụng dịch vụ
Internet, MyTV, điện thoại… ngày một tăng. Việc thống kê báo cáo số tiền cước,
số các tài khoản còn hoạt động… sẽ gặp nhiều khó khăn khi thông tin ngày một
nhiều. Do đó, một phần mềm quản lý và phân loại khách hàng là hết sức cần thiết.
Để thực hiện điều này, với sự trợ giúp của công nghệ thông tin, hàng loạt
các công cụ hỗ trợ phát triển phần mềm, lưu trữ dữ liệu có thể sử dụng để giải
quyết bài toán. Điển hình như công cụ lập trình C#, hệ quản trị cơ sở dữ liệu SQL.
Do vậy, trong quá trình thực tập tại cơ quan, em đã chọn đề tài nghiên cứu
về GIS và Logic mờ áp dụng cho bài toán phân lớp khách hàng tại VNPT Thái
Nguyên. Việc hoàn thành đề tài sẽ giúp giảm bớt khối lượng công việc cho nhân
viên tại cơ quan.

9


10


CHƯƠNG 1: CÔNG CỤ THỰC HIỆN
1.1.Ngôn ngữ lập trình C#
C#

là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi

Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. Microsoft phát triển C#
dựa trên C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa

C++, Visual Basic, Delphi và Java. C# được thiết kế chủ yếu bởi Anders Hejlsberg
kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++,
WFC.
1.1.1.Lịch sử hình thành.
Từ khi chiếc máy tính có thể lập trình đầu tiên (First freely programmable
computer) ra đời vào năm 1936 hàng nghìn ngôn ngữ lập trình đã được tạo ra. Có
những ngôn ngữ chết đi vì sự thiếu tâm huyết của người tạo ra nó, sự hạn chế của
chính ngôn ngữ hay không được cộng đồng sử dụng rộng rãi và cũng có cả những
ngôn ngữ trở nên thành công. Với sự hỗ trợ của Microsoft, tháng giêng năm 1999,
Anders Hejlsberg trở thành người phụ trách xây dựng ngôn ngữ lập trình Cool (Clike Object Oriented Language tiền thân của C#) , ngày 12/2/2002 C# ra đời cùng
với .NET Framework 1.0.
1.1.2.Đặc điểm ngôn ngữ.
- C# là ngôn ngữ đơn giản:
+ C# loại bỏ được một vài sự phức tạp và rối rắm của các ngôn ngữ C++ và
Java.
+ C# khá giống C / C++ về diện mạo, cú pháp, biểu thức, toán tử.
+ Các chức năng của C# được lấy trực tiếp từ ngôn ngữ C / C++ nhưng
được cải tiến để làm cho ngôn ngữ đơn giản hơn.
- C# có những đặc tính của ngôn ngữ hiện đại như:
+ Xử lý ngoại lệ.
+ Thu gom bộ nhớ tự động.
11


+ Có những kiểu dữ liệu mở rộng.
+ Bảo mật mã nguồn.
- C# hỗ trợ tất cả những đặc tính của ngôn ngữ hướng đối tượng là:
+ Sự đóng gói (encapsulation).
+ Sự kế thừa (inheritance).
+ Đa hình (polymorphism).

+ Mã nguồn của C# được viết trong Class (lớp). Những Class này chứa các
Method (phương thức) thành viên của nó.
+ Class (lớp) và các Method (phương thức) thành viên của nó có thể được
sử dụng lại trong những ứng dụng hay chương trình khác.
- C# là ngôn ngữ mạnh mẽ và mềm dẻo:
+Với ngôn ngữ C#, chúng ta chỉ bị giới hạn ở chính bản thân của chúng ta.
Ngôn ngữ này không đặt ra những ràng buộc lên những việc có thể làm.
+ C# được sử dụng cho nhiều dự án khác nhau như: tạo ra ứng dụng xử lý
văn bản, ứng dụng đồ họa, xử lý bảng tính; thậm chí tạo ra những trình biên dịch
cho các ngôn ngữ khác.
+ C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa
dùng để mô tả thông tin, nhưng không gì thế mà C# kém phần mạnh mẽ. Chúng ta
có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm bất cứ nhiệm vụ
nào.
- C# là ngôn ngữ ít từ khóa:
+ C# là ngôn ngữ sử dụng ít từ khóa, phần lớn các từ khóa được sử dụng để
mô tả thông tin.

12


Hình .1.Các từ khóa thông dụng
- C# là ngôn ngữ hướng module:
+ Mã nguồn của C# có thể được viết trong những phần được gọi là lớp,
những lớp này chứa các phương thức thành viên của nó. Những lớp và phương
thức có thể được sử dụng lại trong ứng dụng hay các chương trình khác. Bằng cách
truyền mẫu thông tin đến những lớp hay phương thức, chúng ta có thể tạo ra những
mã nguồn dùng lại có hiệu quả.
- So sánh với C và C++, ngôn ngữ này bị giới hạn và được nâng cao ở một
vài đặc điểm nào đó, nhưng không bao gồm các giới hạn sau đây:

+ Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn. Hầu hết
các đối tượng được tham chiếu an toàn, và các phép tính đều được kiểm tra tràn bộ
đệm. Các con trỏ chỉ được sử dụng để gọi các loại kiểu giá trị; còn những đối
tượng thuộc bộ thu rác (garbage-collector) thì chỉ được gọi bằng cách tham chiếu.
+ Các đối tượng không thể được giải phóng tường minh.
13


+ Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng
(abstract interfaces). Chức năng này làm đơn giản hóa sự thực thi của thời gian
thực thi.
+ Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay vì "int a
[5]").
+ Kiểu thứ tự được thay thế bằng tên miền không gian (namespace).
+ C# không có tiêu bản.
+ Có thêm Properties, các phương pháp có thể gọi các Properties để truy
cập dữ liệu.
- Cú pháp C# hàm ý, nhưng nó cũng đơn giản và dễ dàng để học. Nếu có
kinh nghiệm với C, C++ hoặc Java thì có thể bắt đầu làm việc hiệu quả trong C#
với một thời gian rất ngắn vì c# có cú pháp tương tự, tuy nhiên C# đơn giản hơn so
với C++ và cung cấp các tính năng mạnh mẽ như các loại giá trị nullable,
enumerator, delegate, biểu thức lambda và việc truy cập bộ nhớ trực tiếp (unsafe
code) mà không tìm thấy trong ngôn ngữ Java.
- C# hỗ trợ kiểu dữ liệu và phương thức chung (giống Java), ứng dụng C#
nhanh bảo mật và mã nguồn có thể tái sử dụng.
- Là một ngôn ngữ hướng đối tượng, C# hỗ trợ các khái niệm về đóng gói
ncapsulation, thừa kế inheritance và đa hình polymorphism. Tất cả các biến và
phương thức, bao gồm cả phương thức override virtual methods, được đóng gói
trong Class. Một lớp có thể kế thừa trực tiếp từ một lớp cha, nhưng nó có thể có
thực hiện nhiều interfaces khác nhau…

- Ngoài những nguyên tắc cơ bản của ngôn ngữ hướng đối tượng, C# còn
có những sáng tạo riêng: Encapsulation, Properties, Attribute, XML, LanguageIntegrated Query (LINQ).
- Việc sử dụng đối tượng COM hoặc Win32 DLLs thông qua "Interop" trở
nên dể dàng. Thậm chí C# hỗ trợ con trỏ và các khái niệm của mã "không an toàn"
đối với những trường hợp mà trong đó truy cập bộ nhớ trực tiếp là tuyệt đối quan trọng.
14


Quy trình xây dựng ứng dụng C# đơn giản hơn so với C và C++ và linh
hoạt hơn trong Java.
- Trong C#, có 3 kiểu ứng dụng chính đó là Console application, Window
application và Web application.
+ Console application được thiết kế để chạy các dòng lệnh không hỗ trợ
giao diện cho người sử dụng.

Hình 1.2.Giao diện ứng dụng console application
+ Window application được thiết kế để chạy trên màn hình nền có hỗ trợ
giao diện cho người sử dụng.

15


Hình 1.3.Giao diện ứng dụng window application
+ Web application được kết hợp giữa ASP.NET và C#, trong đó C# đóng
vai trò xử lý bên dưới. Loại ứng dụng này có giao diện đồ họa và xử lý sự kiện.

16


Hình 1.4.Giao diện ứng dụng web application

- C# là một ngôn ngữ phân biệt chữ hoa và chữ thường. Dấu “;” được dùng
để kết thúc câu lệnh. Tất cả các khai báo và câu lệnh thực hiện đều được đặt trong
một file với phần mở rộng là cs.
- Nhằm giải quyết sự xung đột giữa việc sử dụng các thư viện khác nhau từ
các nhà cung cấp, C# cung cấp một thuộc tính là Namespace. Namespace được
xem như là tập hợp các lớp đối tượng, và cung cấp duy nhất các định danh cho các
kiểu dữ liệu và được đặt trong một cấu trúc phân cấp. Các namespace cơ bản của
C# bao gồm:
+ System: Chứa lớp toán học, chuyển đổi dữ liệu.
+ System.IO: Các lớp cho thao tác Input và Output.
+ System.Net: Các lớp liên quan đến giao thức mạng.
+ System.Collections: Chứa các lớp liên quan đến xử lý tập hợp.
17


+ System.Data: Các lớp của ADO.NET.
+ System.Drawing: Các lớp thực thi chức năng GUI.
+ System.Threading: Các lớp lập trình đa luồng xử lý (MultiThread).
+ System.Web: Các lớp liên quan đến giao thức HTTP.
+ System.XML: Các lớp liên quan đến XML.
1.1.3.Cách thức ứng dụng C# hoạt động.
- Các ngôn ngữ NET như C#, VB.NET, VJ#, VC++ .NET có cách thức hoạt
động giống nhau và là một thành phần của .NET Framework do đó không thể chạy
các ứng dụng này trên các máy không chạy cài đặt .NET Framework version thích
hợp.
- Trước hết cần có cái nhìn khái quát về NET Framework nó gồm 2 phần
chính: The common language runtime (CLR) and The .NET Framework class
library.

18



Hình 1.5.Khái quát về NET Framework
- Trong hình trên những gì chúng ta viết ra sẽ là custom object libraries,
class libarary sẽ chứa những class chung. Có thể sử dụng nhiều lần các class này
định nghĩa console, window hay button thứ mà bạn cần có để ứng dụng chạy mà
không cần viết lại.
- Runtime chính là nền tảng của .NET Framework cách dễ hiểu nhất là coi
nó như máy ảo có nhiệm vụ quản lý bộ nhớ, quản lý luồng, cho phép truy cập các
Dll khác để chương trình có thể hoạt động trơn tru.

19


- Khi viết xong một chương trình, qua quá trình biên dịch sẽ cho ta cùng
một kết quả, đó là Microsoft Intermediate Language (MSIL code), sau đó JIT
compiler sẽ chuyển mã MSIL code sang mã máy, thứ mà CPU có thể hiểu và thực
thi.
1.1.4.Ngôn ngữ C# và những ngôn ngữ khác.
- Microsoft nói rằng C# mang đến sức mạnh của ngôn ngữ C++ cùng với sự
dễ dàng của ngôn ngữ Visual Basic.
- Mặc dù C# loại bỏ một vài đặc tính của C++, nhưng bù lại nó tránh được
những lỗi thường gặp trong C++. Điều này tiết kiệm thời gian trong việc hoàn tất
chương trình.
- Một điều quan trọng khác với C++ đó là mã nguồn C# không đòi hỏi phải
có tập tin header. Tất cả mã nguồn được viết trong khai báo trong một lớp.
- C# thực hiện thu gom bộ nhớ tự động, do đó việc sử dụng con trỏ trong
C# ít quan trọng hơn C++. Những con trỏ cũng có thể được sử dụng trong C#, khi
đó những đoạn mã nguồn này sẽ được đánh dấu là không an toàn (unsafe code).
- Với Java, điểm giống nhau là cả C# và Java đều biên dịch ra mã trung

gian, C# biên dịch ra MSIL còn Java biên dịch ra bytecode. Sau đó chúng được
thực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo
tương ứng. C# chứa nhiều kiểu dữ liệu cơ bản hơn Java và cũng cho phép nhiều sự
mở rộng với kiểu dữ liệu giá trị. C# cũng bỏ tính đa kế thừa trong một lớp tương tự
như Java, tuy nhiên mô hình kế thừa đơn này được mở rộng bởi tính đa kế thừa
nhiều giao diện.
1.1.5.Kiểu dữ liệu trong C#.
C# là ngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh về kiểu
dữ liệu là phải khai báo kiểu của mỗi đối tượng khi tạo (kiểu số nguyên, số thực,
kiểu chuỗi, kiểu điều
khiển...) và trình biên dịch sẽ giúp cho người lập trình không bị lỗi khi chỉ
cho phép một loại
20


kiểu dữ liệu có thể được gán cho các kiểu dữ liệu khác.
Tương tự như C++ hay Java, C# chia thành hai tập hợp kiểu dữ liệu chính:
Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình và kiểu
được người dùng định nghĩa (user-defined) do người lập trình tạo ra.
Ngoài ra C# cũng hỗ trợ một kiểu con trỏ C++, nhưng hiếm khi được sử
dụng, và chỉ khi nào làm việc với những đoạn mã lệnh không được quản lý
(unmanaged code). Mã lệnh không được quản lý là các lệnh được viết bên ngoài
nền .MS.NET, như là các đối tượng COM.
Ngôn ngữ C# đưa ra các kiểu dữ liệu xây dựng sẵn rất hữu dụng, phù hợp với một
ngôn ngữ lập trình hiện đại, mỗi kiểu dữ liệu có một sự xác nhận và kích thước
không thay đổi.

21



1.1.6.Toán tử trong C#.
1.1.6.1.Toán tử quan hệ.
Những toán tử quan hệ được dùng để so sánh giữa hai giá trị, và sau đó trả
22


về kết quả là một giá trị logic kiểu bool (true hay false). Ví dụ toán tử so sánh lớn
hơn (>) trả về giá trị là true nếu giá trị bên trái của toán tử lớn hơn giá trị bên phải
của toán tử. Do vậy 5 > 2 trả về một giá trị là true, trong khi 2 > 5 trả về giá trị
false.

1.1.6.2.Toán tử logic.
Khi chúng ta muốn kết hợp nhiều điều kiện với nhau như: bắt buộc cả hai
hay nhiều điều kiện phải đúng hoặc chỉ cần một trong các điều kiện đúng là đủ
hoặc không có điều kiện nào đúng...C# cung cấp một tập hợp các toán tử logic để
phục vụ cho người lập trình.

23


Các toán tử logic (Giả sử x=5, y=7)
1.1.7.GMap.NET cho ngôn ngữ C#.
GMap.NET là một công cụ đa nền tảng dựa trên framework dotNet. Công
cụ này được sử dụng để xây dựng và hiển thị bản đồ cho ứng dụng Window
application trong C#.

24


Hình 1.6.GMap.NET

GMap.NET khai thác bản đồ từ nhiều nguồn khác nhau như Bing, Google,
Yahoo… Hỗ trợ xây dựng và hiển thị tọa độ địa lý (geocoding), định tuyến
(routing) và hỗ trợ tìm đường dựa trên nguồn bản đồ của nhà cung cấp.

25


×