Mục lục
Tên mục dòng
Trang
Mở đầu...................................................................................................................5
Nội dung................................................................................................................7
Chương I................................................................................................................7
Phân tích yêu cầu.............................................................................................7
1. Đặc điểm của hệ thống thông tin quản lý..................................................7
1.1. Phân cấp quản lý.................................................................................7
1.2. Các luồng thông tin............................................................................7
1.2.1. Luồng thông tin vào:...................................................................7
1.2.2. Luồng thông tin ra:......................................................................8
1.3. Mô hình hệ thống thông tin trong quản lý..........................................8
1.4. Kết luận..............................................................................................9
Chương II............................................................................................................10
Phân tích hệ thống quản lý...........................................................................10
1. Phân tích hệ thống quản lý trên quan niệm của người làm quản lý........10
2.
Phân tích hệ thống quản lý trên quan niệm của người làm Tin học....10
3.
Lựa chọn hệ quản trị (Ngôn ngữ được sử dụng-Thế mạnh của hệ).. .11
3.1. Lựa chọn ngôn ngữ sử dụng:............................................................11
3.2. Lựa chọn cơ sở dữ liệu:....................................................................25
4. Kết luận:..................................................................................................25
Chương III...........................................................................................................26
Phân tích thết kế hệ thống............................................................................26
1. phân tích chức năng của hệ thống...........................................................26
1.1. Lý thuyết:.........................................................................................26
1.2. áp dụng vào đề tài:............................................................................27
2. Biểu đồ luồng dữ liệu (BLD)..................................................................27
3. BLD mức khung cảnh............................................................................28
4. Xét yêu cầu thuê phòng (Lập phiếu thuê phòng)....................................28
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
1
4.1. Thiết kế dữ liệu với tính đúng đắn...................................................28
4.1.1 biểu mẫu liên quan.....................................................................28
4.1.2 Sơ đồ luồng dữ liệu....................................................................29
4.1.3 Sơ đồ luồng dữ liệu cho quá trình kiểm tra phòng trống............29
4.1.4 Sơ đồ luồng dữ liệu cho quá trình thuê phòng...........................30
4.2. Các thuộc tính mới...........................................................................31
4.2.1 Sơ đồ lớp....................................................................................31
4.2.2 Sơ đồ logic..................................................................................32
4.2.3. Qui định liên quan....................................................................32
4.2.4. Các thuộc tính mới...................................................................32
4.2.5 Sơ đồ lớp....................................................................................32
4.2.6. Các thuộc tính trừu tượng.........................................................32
4.2.7. Sơ đồ logic................................................................................33
5. Xét yêu cầu báo cáo tháng......................................................................33
5.1. Biểu mẫu liên quan...........................................................................33
5.2. Sơ đồ luồng dữ liệu.........................................................................34
5.3. Các thuộc tính mới..........................................................................35
5.4. Sơ đồ lớp.........................................................................................35
5.5. Các thuộc tính trừu tượng................................................................35
5.6. Sơ đồ logic.......................................................................................35
6. Xét yêu cầu lập hoá đơn..........................................................................36
6.1 Thiết kế dữ liệu với tính đúng đắn....................................................36
6.1.1 Biểu mẫu liên quan.....................................................................36
6.1.2 Sơ đồ luồng dữ liệu....................................................................36
6.1.3 Các thuộc tính mới.....................................................................37
6.1.4 Sơ đồ lớp....................................................................................37
6.1.5 Các thuộc tình trừu tượng...........................................................37
6.1.6 Sơ đồ logic..................................................................................38
6.2 Thiết kế dữ liệu với tính tiến hoá......................................................38
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
2
6.2.1 Quy định liên quan.....................................................................38
6.2.2 Sơ đồ luồng dữ liệu....................................................................38
6.2.3 Sơ đồ lớp....................................................................................39
6.2.4 Các thuộc tính trừu tượng...........................................................39
6.2.5 Sơ đồ logic..................................................................................40
7. Xét yêu cầu lập danh mục phòng............................................................40
7.1 Thiết kế dữ liệu với tính đúng đắn....................................................40
7.1.1 Sơ đồ luồng dữ liệu....................................................................40
7.1.2 Sơ đồ lớp....................................................................................41
7.1.3 Thuộc tính trừu tượng.................................................................41
7.1.4 Sơ đồ logic..................................................................................41
7.2 Thiết kế dữ liệu với tính tiến hoá......................................................41
7.2.1 Qui định liên quan......................................................................41
7.2.2 Sơ đồ luồng dữ liệu....................................................................42
7.2.3 Các thuộc tính mới.....................................................................42
7.2.4 Sơ đồ lớp....................................................................................42
7.2.5 Các thuộc tính trừu tượng...........................................................42
7.2.6 Sơ đồ logic..................................................................................42
8. Xét yêu cầu kiểm tra phòng trống...........................................................42
8.1. Thiế kế biểu mẫu liên quan..............................................................42
8.2. Sơ đồ luồng dữ liệu.........................................................................43
8.3. Các thuộc tính mới..........................................................................43
8.4. Sơ đồ lớp.........................................................................................44
8.5. Các thuộc tính trừu tượng................................................................44
8.6. Sơ đồ logic.......................................................................................44
9. kết luận:......................................................................................................45
chương IV............................................................................................................46
Thiết kế giao diện chương trình...................................................................46
1.Màn hình chính của chương trình............................................................47
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
3
1.1. Thiết kế màn hình tạo mới phòng....................................................48
Danh sách các biến cố.................................................................................49
1.2. Thiết kế màn hình xoá phòng...........................................................50
Danh sách các biến cố.............................................................................51
1.3. Thiết kế giao diện màn hình tiếp nhận khách..................................53
Danh sách các biến cố.............................................................................53
1.4. Thiết kế giao diện cho màn hình tra cứu phòng...............................56
1.4.1. Màn hình tra cứu theo thời gian................................................56
Danh sách các biến cố.........................................................................56
1.4.2. Màn hình tra cứu theo loại phòng.............................................58
1.4.3. Màn hình tra cứu theo phòng....................................................60
1.5. Thiết kế màn hình cho yêu cầu báo cáo tháng.................................62
2. Một số code chính của chương trình.......................................................64
Code của form main (FrmMain.vb)........................................................64
3. kết luận.......................................................................................................87
Kết luận và hướng phát triển...............................................................................88
1. Kết luận:.....................................................................................................88
2. hướng phát triển:.......................................................................................88
Lời cam đoan.......................................................................................................89
Tài liệu tham khảo...............................................................................................90
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
4
Mở đầu
Trong những năm gần đây sự phát triển mạnh mẽ của công nghệ thông tin,
các hệ thống quản lý đã và đang được tin học hoá từng phần, tiến tới tin học hoá
toàn bộ.
Công việc này đóng góp một phần đáng kể trong công tác quản lý. Hiện tại
các công tác quản lý đang còn dựa chủ yếu trên yếu tố con nguời, thủ công, điều
này đã bộc lộ nhiều vấn đề bất hợp lý, dẫn tới hiệu quả công việc thấp và không
đáp ứng được nhu cầu công việc thực tại.
Trong hệ thống quản lý hiện nay, cơ cấu tổ chức còn chồng chéo nhiều
phòng ban, không thuận tiện trong việc lưu trữ, lưu chuyển thông tin còn vòng
vèo, ùn tắc, làm cho hiệu xuất đáp ứng công việc không cao, kém hiệu quả.
Trước tình hình đó, nảy sinh yêu cầu nâng cao tính tự động hoá của việc
quản lý, nhằm đáp ứng cung cấp thông tin đầy đủ, chính xác, kịp thời, xử lý chặt
chẽ, tạo điều kiện phục vụ tốt nhất cho công việc quản lý.
Vì thế, quản lý là một đề tài mà gần như tất cả các cơ quan hành chính, các
tổ chức hoạt động đều quan tâm đến, bởi nó quyết định sự hoạt động của cơ
quan, tổ chức... có hiệu quả và tối ưu để hoạt động tốt hay không...
Đặc biệt là trong ngành du lịch việc quản lý phòng nghỉ lại càng là một vấn
đề cấp thiết. Bởi do những đặc điểm riêng của ngành, người làm công tác quản
lý phòng nghỉ luôn luôn cần phải nắm rõ các đặc điểm, quá trình hoạt động
trong các nhà hàng, khách sạn để có thể theo dõi kịp thời chính xác tình trạng
hoạt động của nhà hàng, khách sạn, ví dụ như (Quản lý về khách hàng, dịch vụ,
trang thiết bị sử dụng, ...), để từ đó có những biện pháp và kế hoạch đón nhận
khách, bảo quản, ... Làm tăng tính hiệu quả trong công tác quản lý phòng nghỉ.
Qua đó, ta thấy rằng vấn đề quản lý phòng nghỉ luôn là một vấm đề cấp
thiết. Vì vậy, em mạnh dạn chọn: “Thiết kế phần mềm quản lý phòng nghỉ ” để
làm đề tài cho đồ án tốt nghiệp.
Chương trình Quản lý phòng nghỉ được viết dưới dạng một phần mềm tin
học dùng để ứng dụng trong các khách sạn, các nhà hàng có phòng nghỉ, phòng
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
5
cho thuê trọ…, với mục đích quản lý các mặt như: Tiếp nhận khách, Báo cáo
doanh thu, lập hoá đơn, ... Nhằm tăng tính hiệu quả cho công việc quản lý.
Từ nhiều năm qua trong công tác quản lý ở các khách sạn, nhà hàng, ...
hầu hết dùng các công cụ có sẵn như Word, Excel ... Em dùng ngôn ngữ
Microsoft Visual Studio .NET 2003 làm ngôn ngữ và cơ sở dữ liệu là Access để
viết bài quản lý này, nhằm sử dụng cơ sở dữ liệu một cách hiệu quả hơn, tạo
giao diện thân thiện với người sử dụng và cũng nhằm mục đích rèn luyện kỹ
năng tự lập trình, tập làm những chương trình lớn, học hỏi thêm ngôn ngữ mới...
Chương trình quản lý phòng nghỉ có các chức năng được phân cấp rõ ràng
theo từng cấp để bất cứ ai làm công tác quản lý cũng có thể sử dụng được. Mặt
khác, chương trình còn cho phép người sử dụng quản trị hệ thống mạnh, tìm
kiếm thông tin nhanh, chính xác... Song bên cạnh đó vì thời gian có hạn, nghiệp
vụ chưa tìm hiểu chuyên xâu, khả năng lập trình chưa thành thạo,... Mặt khác
đây là một phần mềm được em tìm hiểu, phân tích và viết đầu tay, nên em mới
đi vào tìm hiểu và phân tích sơ bộ về các chức năng, tìm hiểu nghiệp vụ quản lý
nói chung và nghiệp vụ quản lý Phòng nghỉ nói riêng. Vì vậy chương trình này
của em còn chứa đựng rất nhiều hạn chế mà em chưa có thời gian khắc phục.
Em rất mong nhận được sự đóng góp ý kiến của tất cả các thầy cô giáo, và toàn
thể các bạn.
Chương trình tìm hiểu phân tích thiết kế phần mềm quản lý phòng nghỉ
được thực hiện bởi sinh viên: Hoàng Viết Tân lớp 811b khoa CNTT trường
ĐHDL Phương Đông, Dưới sự hướng dẫn của kỹ sư tin học Dương Mạnh Nam,
em xin chân thành cảm ơn sự hướng dẫn của thầy Dương Mạnh Nam giúp em
hoàn thành tốt đồ án này.
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
6
Nội dung
Chương I
Phân tích yêu cầu
Tổng quan về hệ thống thông tin ứng dụng trong công tác quản lý Phòng
nghỉ.
Trước khi bắt tay vào thiết kế và xây dựng hệ thống quản lý phòng nghỉ
chúng ta có một số khái niệm về hệ thống thông tin quản lý:
1. Đặc điểm của hệ thống thông tin quản lý.
1.1. Phân cấp quản lý.
Hệ thống thông tin quản lý là một hệ thống được tổ chức thống nhất từ trên
xuống dưới. Có chức năng tổng hợp các thông tin giúp nhà quản lý quản lý tốt
cơ sở của mình. Một hệ thống quản lý được phân cấp từ trên xuống dưới. Mọi
thông tin được tổng hợp từ dưới lên và chuyển từ trên xuống dưới.
1.2. Các luồng thông tin.
1.2.1. Luồng thông tin vào:
Luồng thông tin này bao gồm cả thông tin định hướng của hệ thống cấp
trên và các thông tin liên hệ trao đổi với môi trường. Mỗi một bộ phận có lượng
thông tin lớn và đa dạng cần phải xử lý.
Các thông tin cần phải xử lý có thể được chia làm 3 loại:
- Các thông tin luân chuyển: Là loại thông tin chi tiết về các hoạt động
hàng ngày của hệ thống. Khối lượng của thông tin này lớn nên đòi hỏi có sự xử
lý nhanh, kịp thời.
- Các thông tin tổng hợp định kỳ: Là thông tin tổng hợp về hoạt động của
cấp dưới báo lên cấp trên. Những thông tin thu thập này là những thông tin được
ghi chép trực tiếp từ các bộ phận trong hệ thống thừa hành.
- Thông tin dùng để tra cứu: Là các thông tin dùng chung trong hệ thống.
Các thông tin này tồn tại một thời gian dài trong hệ thống và ít thay đổi, được
dùng để tra cứu trong việc xử lýcác thông tin luân chuyển và thông tin tổng hợp.
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
7
1.2.2. Luồng thông tin ra:
Thông tin đầu ra được tổng hợp từ các thông tin đầu vào và phụ thuộc vào
từng yêu cầu quản lý cụ thể. Thông tin ra là việc tra cứu nhanh về một đối tượng
cần quan tâm. Mỗi lần tra cứu yêu cầu thông tin ra có thể hoàn toàn khác nhau
nhưng điều quan trọng là thông tin ra phải chính xác, kịp thời.
Các báo cáo, tổng hợp, thống kê, thông báo là các thông tin quan trọng nhất
được tổng hợp trong quá trình xử lý. Các biểu mẫu báo các thống kê phải phản
ánh cụ thể, trực tiếp sát với một đơn vị, một đối tượng.
Đối với cán bộ quản lý cấp cao (là người xây dựng mục tiêu hoạt động của
hệ thống, đặt hướng đi cho hệ thống) thì :
- Thông tin ngoài là quan trọng nhất
- Thông tin khi cung cấp cần có tính khái quát, cô đọng và tổng hợp.
Đối với cán bộ cấp trung gian với nhiệm vụ chủ yếu là tiến hành hoá các
mục tiêu nhiệm vụ cụ thể, liên kết các bộ phận trong tổ chức.
- Thông tin trong quan trọng hơn.
- Thông tin mang tính chi tiết và định hướng
Đối với cán bộ cấp cơ sở: Là những người trực tiếp thực hiện các nhiệm vụ
cụ thể thì cần cung cấp thông tin cho họ đầy đủ và càng chi tiết càng tốt.
1.3. Mô hình hệ thống thông tin trong quản lý.
Để tổ chức các thông tin phục vụ quản lý, cần xây dựng các modul dữ liệu
gồm:
Các modul cập nhật, xử lý thông tin tổng hợp và thông tin luân chuyển: vì
lượng thông tin này lớn đòi hỏi tốc độ xử lý nhanh và chính xác, khi xây dựng
cần phải quan tâm đến các yêu cầu sau:
- Tổ chức màn hình hợp lý giảm thao tác của người sử dụng
- Nắm vững những thông tin quan trọng từ thông tin cần cập nhật
- Tự động nạp các giá trị đã biết và những giá trị lặp lại
- Kiểm tra, phát hiện nhanh các sai sót khi nhập liệu và có thông báo cho
người sử dụng biết...
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
8
1.4. Kết luận
Việc phân tích yêu cầu là một vấn đề không thể thiếu đối với những ai làm
một đồ án, một đề tài, một công việc cụ thể nào đó,… Đây là bước đầu tiên, để
giải thích câu hỏi (cần phải làm gì?).
Việc phân tích yêu cầu giúp cho chúng ta biết và hiểu rõ vấn đề của bài
toán, giúp người thực hiện hiểu mình cần biết về những gì chuẩn bị thực hiện và
đang được thực hiện, cụ thể như:
Nắm được đặc điểm của hệ thống quản lý
- Phân cấp quản lý
- Các luồng thông tin vào ra
- Mô hình của hệ thống thông tin trong quản lý
- Yêu cầu đơn vị
- Yêu cầu người sử dụng
Từ những yêu cầu mà hệ thống quản lý cần, chúng ta lại tiếp tục đi vào
phân tích hệ thống quản lý, để từ đó biết được hệ thống được hiểu như thế nào.
Trên quan niệm của người làm quản lý, và trên quan niệm của người làm tin
học, cùng với biết được định hướng của người viết hệ thống dùng ngôn ngữ và
công cụ hỗ trợ để thực hiện đồ án.
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
9
Chương II
Phân tích hệ thống quản lý
1. Phân tích hệ thống quản lý trên quan niệm của người làm quản lý
Mỗi đơn vị có những yêu cầu và đặc điểm riêng. Hệ thông tin quản lý phải
đáp ứng được các yêu cầu quản lý của đơn vị đó. Nhà quản lý đơn vị phải là
người đề đạt và quyết định đưa các ứng dụng tin học vào công tác quản lý. Như
vậy một hệ thông tin quản lý cần phải nắm được chiến lược phát triển chung của
đơn vị quản lý, không để những thay đổi nhỏ về tổ chức cũng như về quản lý
làm sai lệch thông tin tập hợp.
Trong quá trình phát triển hệ thống cần phải kiểm chứng tính đúng đắn,
tính khoa học đồng thời hệ thống luôn phải được hoàn thiện, điều chỉnh cho phù
hợp. Các thông tin đầu ra phải đảm bảo tính mục tiêu, rõ ràng, chính xác, đầy đủ
đáp ứng yêu cầu của nhà quản lý.
2.
Phân tích hệ thống quản lý trên quan niệm của người làm Tin học.
Đây chính là yêu cầu của người sử dụng hệ thống không chỉ đơn thuần là
thao tác vói máy. Điều quan trọng là hệ thống không chỉ đáp ứng cho người
thông thạo về tin học mà còn đáp ứng cho những người hiêủ biết rất ít về máy
tính. Khi thiết kế phải đảm bảo các yêu cầu sau:
- Yêu cầu về nhập dữ liệu: Hệ thống phải có khả năng truy nhập dữ liệu từ
xa, nhanh chóng, thuận lợi , chuẩn xác, các thao tác phải thuận lợi, đơn giản
nhưng phải đáp ứng đầy đủ các yêu cầu truy nhập dữ liệu từ xa.
-Yêu cầu về hệ thống thông tin: Hệ thống phải được bảo mật, bảo trì, có
tính mở để phát triển, điều chỉnh. Đặc biệt phải có các khả năng kiểm tra sự
đúng đắn của dữ liệu cũng như khả năng phát hiện lỗi và xử lý lỗi.
- Yêu cầu về giao diện: Giao diện giữa người và máy phải được thiết kế
khoa học, đẹp, không cầu kỳ, phải có tính thống nhất về phương pháp làm việc,
cách trình bày, khả năng trợ giúp tốt kịp thời giải quyết tốt mọi thắc mắc của
người sử dụng.
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
10
- Yêu cầu về đối thoại, giải đáp: Hệ thống phải có khả năng thực hiện
chế độ hội thoại ở một mức nào đó nhằm cung cấp nhanh, chuẩn xác yêu cầu
của nhà quản lý. Đây là tính mở của hệ thống nhằm đảm bảo cho người sử dụng
khai thác tối đa mà hệ thống cung cấp.
3.
Lựa chọn hệ quản trị (Ngôn ngữ được sử dụng-Thế mạnh của hệ).
3.1. Lựa chọn ngôn ngữ sử dụng:
Như nhũng phân tích hệ thống quản lý trên quan niệm của người làm quản
lý và quan niệm của người làm tin học đã được nói ở phần trên. Em đã quết định
sử dụng hệ quản trị cơ sở dữ liệu là Microsoft Visual Studio .NET 2003. (Hiện
nay đã xuất hiện một số hệ quản trị của Visual có nhiều trợ giúp cho công việc
thiết kế cũng như viết mã ...) Trên thế giới cũng có rất nhiều ngôn ngữ lập trình,
nhưng đối với ngôn ngữ lập trình định hướng đối tượng thì hay dùng Visua
Basic 6.0, hiện nay dựa trên những nền tảng sẵn có của hệ ngôn ngữ này mà
Microsoft cho ra hệ ngôn ngữ Microsoft Visual Studio .NET. Microsoft Visual
Studio .NET 2003 có những đặc điểm phát triển mạnh và hỗ trợ nhiều cho lập
trình viên, ngôn ngữ này có những đặc điểm khác biệt so với ngôn ngữ
VisuaBasic 6.0.
Những khỏc biệt giữa VB.NET với VB6
VB.NET, cũn gọi là VB7, chẳng qua là C# viết theo lối Visual Basic. Nay
VB7 đó hoàn toàn là Object Oriented, tức là cho ta dựng lại (reuse)
classes/forms theo cỏch thừa kế thật thoải mỏi, nờn nú khỏc VB6 nhiều lắm.
Dự vậy, đối với VB6 programmers học VB.NET không khó. Lý do là VB.NET
khụng cho thờm nhiều từ mới (reserved words). Nói chung các ý niệm mới
trong VB.NET đều dễ lĩnh hội, nhất là khi đem ra áp dụng cách thực tế. Đó là
nhờ Microsoft vẫn giữ nguyên tắc dấu và làm sẵn (của VB6) những gỡ rắc rối
phớa sau sõn khấu, để ta có thể tập trung vào việc tỡm kiếm một giải phỏp, thay
vỡ quỏ bận tõm vào cỏch thức làm một việc gỡ.
Chính nguyên tắc ấy đó giỳp Microsoft chiờu mộ được 3 triệu VB6
programmers trên khắp thế giới. VB.NET cống hiến cho VB programmers một
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
11
công cụ rất hữu hiệu để dùng cho mọi hoàn cảnh, từ database, desktop,
distributed,
internet
cho
Đến
real-time
hay
mobile
(pocket
PC).
Những ưu điểm (features) của VB.NET Đến từ chức năng của .NET
Những điểm khác nhau giữa VB6 và VB.NET từ quan điểm ngôn ngữ lập
trỡnh.
Namespaces
Namespaces là một cách đặt tên để giúp sắp đặt các Classes ta dùng trong
program một cách thứ tự đều dễ tỡm kiếm chỳng. Tất cả code trong .NET, viết
bằng VB.NET, C# hay ngụn ngữ nào khỏc, đều được chứa trong một
namespace.
Điểm này cũng áp dụng cho code trong .NET system class libraries. Chẳng
hạn, các classes của WinForms đều nằm trong System.Windows.Forms
namespace. Và các classes dùng cho collections như Queue, Stack, Hashtable
.v.v.. đều nằm trong System.Collections namespace.
Tất cả code ta viết trong program của mỡnh cũng đều nằm trong các
namespaces.
Trước đây trong VB6, mỗi khi nhắc Đến một Class trong một COM tờn
CompName ta viết CompName.classname (cũn gọi là PROGID) , tức là cũng
dùng một dạng namespace.
Tuy nhiên phương pháp này cú một vài giới hạn:
Địa chỉ của class bị buộc cứng vào component đang chứa nó.
Những classes khụng nằm trong một COM component thỡ khụng cú
"namespace".
Cỏch gọi tờn PROGID chỉ cú một bậc thụi, khụng cú bậc con, bậc chỏu.
Tờn của Component luụn luụn cú hiệu lực trờn khắp cả computer.
Namespaces trong .NET khắc phục được mọi giới hạn núi trờn trong VB6.
Nhiều assemblies cú thể nằm trong cựng một namespace, nghĩa là classes tuyờn
bố trong cỏc components khác nhau có thể có chung một namespace. Điều này
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
12
cũng ỏp dụng xuyờn qua cỏc ngụn ngữ, giỳp cho một class viết trong VB.NET
cú thể nằm trong cựng một namespace với một class viết trong C#, chẳng hạn.
Hơn nữa, trong một assembly có thể có nhiều namespaces, dù rằng thông thường
ta chỉ dùng một namespace duy nhất cho tất cả các classes trong ấy.
Local và Global Namespaces
Khác với COM components với "namespace" của chúng áp dụng cho khắp
cả computer, namespaces của .NET thông thường là Local, chỉ cú application
program của nú thấy mà thụi. .NET cũng hổ trợ Global namespace, nhưng phải
được ký tờn (digitally signed) và đăng ký với .NET runtime để chứa nó trong
global assembly cache.
Công việc làm một namespace Global rắc rối như thế để giảm thiểu trường
hợp ta trở về tỡnh trạng DLL hell trước đây.
Dựng Namespaces
Ta cú thể dựng namespaces bằng cỏch núi thẳng ra (explicitly) với nguyờn
tờn (Direct Addressing) hay hàm ý (implicitly) với Import keyword. Nhưng điều
tiên quyết là ta phải reference cái assembly chứa namespace mà ta muốn dựng.
Ta thực hiện việc ấy với Menu command Project Add References. Khi Add
References dialog hiện ra, chọn Tab .NET cho standard .NET components hay
Tab Projects cho DLL của một .NET project khỏc , highlight DLL bạn muốn
rồi click Select button, đoạn click OK.
Chẳng hạn ta muốn read và write từ stdio (cỏi console input/output stream).
Cỏi namespace ta cần sẽ là System.Console. Trong cỏch Direct Addressing ta
sẽ code như sau để viết hàng chữ "Chào thế giới":
System.Console.WriteLine
("Hello
world!")
Nếu ta dựng Import keyword bằng cỏch nhột vào cõu Imports
System.Console ở đầu code module, ta có thể code gọn hơn:
WriteLine
("Hello
world!")
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
13
Dưới đây là một số namespaces thông dụng:
Namespace
System.IO
System.Drawi
ng
Chức năng
Đọc/Viết files và các
FileStream, Path, StreamReader,
data streams khác
StreamWriter
Đồ họa
System.Data
Quản lý data
System.Collect
Tạo và quản lý
ion
cỏc loại collections
System.Math
Tớnh toỏn
System.Diagno
Debug
stics
Làm việc với
System.XML
System.Securit
y
Classes điển hỡnh
Bitmap, Brush, Pen Color,
Font, Graphics
DataSet, DataTable, DataRow,
SQLConnection, ADOConnection
ArrayList, BitArray, Queue,
Stack, HashTable
Sqrt, Cos, Log, Min
Debug, Trace
XMLDocument,
XML, Document
XMLElement, XMLReader,
Object Model
XMLWriter
Cho phộp kiểm
soỏt an ninh
Cryptography, Permission,
Policy
Aliasing Namespaces (dựng bớ danh)
Khi hai namespaces trùng tên, ta phải dùng nguyên tên (kể cả gốc tích) để
phân biệt chúng. Điển hỡnh là khi ta dựng những namespaces liờn hệ Đến VB6
như Microsoft.Visualbasic. Thay vỡ code:
Microsoft.Visualbasic.Left
( InputString,6)
ta tuyờn bố:
Imports
VB6=
Microsoft.Visualbasic
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
14
Sau đó ta có thể code:
VB6.Left
( InputString,6)
Tất cả đều là Object
Một thay đổi lớn cho Data Type của VB.NET, là những variables dùng
Data Type địa phương như Integer, Single, Boolean,.v.v.. đều là những Objects.
Chúng đều được derived (xuất phát) từ Class căn bản nhất tên Object trong
VB.NET. Nếu bạn thử dựng Intellisense để xem có bao nhiêu
Functions/Properties một Object loại Integer có, bạn sẽ thấy như dưới đây:
Trong .NET, Integer cú bốn loại: Byte (8 bits, khụng cú dấu, tức là từ 0
Đến 255), Short (16 bits, cú dấu cộng trừ, tức là từ -32768 Đến 32767), Integer
(32 bits, cú dấu) và Long (64 bits, có dấu). Như vậy Integer bây giờ tương
đương với Long trong VB6, và Long bây giờ lớn gấp đôi trong VB6.
Floating-Point Division
Việc chia số nổi (Single, Double) trong VB.NET được làm theo đúng tiêu
chuẩn của IEEE. Do đó nếu ta viết code như sau:
Dim dValueA As Double
Dim dValueB As Double
dValueA = 1
dValueB = 0
Console.WriteLine(dValueA /
dValueB)
Trong VB6 ta biết mỡnh sẽ gặp Division by Zero error, nhưng ở đây
program sẽ viết trong Output Window chữ Infinity (vụ cực). Tương tự như
vậy, nếu ta viết code:
Dim dValueA As Double
Dim dValueB As Double
dValueA = 0
dValueB = 0
Console.WriteLine(dValueA
/
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
15
dValueB)
Kết quả sẽ là chữ NaN (Not a Number) hiển thị trong Output Window.
Thay thế Currency bằng Decimal
VB.NET dùng Decimal data type với 128 bits để thay thế Currency data
type trong VB6. Nó có thể biểu diễn một số tới 28 digits nằm bên phải dấu chấm
để cho thật chính xác. Hể càng nhiều digits nằm bên phải dấu chấm thỡ tầm trị
số của Decimal càng nhỏ hơn.
Char Type
VB.NET cú cả Byte lẫn Char data type. Byte được dùng cho một số nhỏ 0255, có thể chứa một ASCII character trong dạng con số.
Char được dùng để chứa một Unicode (16 bit) character. Char là một character
của String.
String Type
Nhỡn lướt qua, String trong VB.NET khụng cú vẻ khỏc VB6 bao nhiờu.
Nhưng trừ khi ta muốn tiếp tục dùng các Functions như InStr, Left, Mid and
Right trong VB6, ta nên xem String là một object và dùng những
Properties/Functions của nó trong VB.NET cho tiện hơn.
í niệm fixed-length (có chiều dài nhất định) String trong VB6 không cũn
dựng nữa. Do đó ta không thể declare:
Dim
myString
As
String * 25
Object thay thế Variant
Một trong những data types linh động, hiệu năng và nguy hiểm trong VB6
là Variant. Một variable thuộc data type Variant có thể chứa gần như thứ gỡ
cũng được (trừ fixed-length string), nó tự động thích nghi bên trong để chứa trị
số mới. Cái giá phải trả cho sự linh động ấy là program chạy chậm và dễ có bugs
tạo ra bởi sự biến đổi từ data loại này qua loại khỏc khụng theo dự tớnh của ta.
VB.NET thay thế Variant bằng Object. Vỡ trờn phương diện kỹ thuật tất cả data
types trong .NET đều là Object nên, giống như Variant, Object có thể chứa đủ
thứ.
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
16
Núi chung, dự Object giống như Variant, nhưng trong .NET ta phải núi rừ ra
(explicitly) mỡnh muốn làm gỡ. Ta thử xem một thớ dụ code trong VB6 nh ư
sau:
Private Sub Button1_Click()
Dim X1 As Variant
Dim X2 As Variant
X1 = "24.7"
X2 = 5
Debug.Print X1 + X2 ' Cộng hai số với operator +
Debug.Print X1 & X2
' Ghộp hai strings lại với
operator &
End Sub
Kết quả hiển thị trong Immediate Window là :
29.7
24.75
Trong VB.NET, ta phải code cho rừ ràng hơn như sau để có cùng kết quả
như trên hiển thị trong Output Window:
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs) Handles Button1.Click
Dim X1 As Object
Dim X2 As Object
X1 = "24.7"
X2 = 5
Console.WriteLine(CSng(X1) + CInt(X2))
Console.WriteLine(CStr(X1) & CStr(X2))
End Sub
Thay đổi trong cách tuyên bố Variables
Tuyên bố nhiều Variables
Trong VB6 ta có thể Declare nhiều variables trên cùng một hàng như:
Dim i, j, k As
Integer
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
17
Kết quả là chỉ cú k là Integer, cũn i và j là Variant (cú thể đó là điều bạn
không ngờ). Trong VB.NET thỡ cả ba i,j và k đều là Integer, và như thế hợp lý
hơn.
Tuyên bố sau khi khởi đầu
Trong VB6, sau khi declare variable ta thường cho nó một trị s ố khởi đầu
như:
Dim X As
Integer
X = 12
Bây giờ trong VB.NET ta có thể gọp chung hai statements trên lại nh ư
sau:
Dim
X
As
Integer = 12
Tuyên bố Constants
Khi tuyờn bố Constants trong VB.NET ta phải khai rừ Data type của nú là
String, Integer, Boolean ..v.v.:
Public Const myConstantString As String =
"happy"
Public Const maxStuđếnt As Integer = 30
Dim As New
Trong VB6 ta được khuyên khụng nờn code:
Dim X As New
Customer
vỡ VB6 khụng instantiate một Object Customer cho Đến khi X được dùng
Đến - chuyện này rất nguy hiểm vỡ cú thể tạo ra bug mà ta khụng ngờ.
Trong VB.NET ta cú thể yờn tõm code:
Dim
X
As
New
Customer()
vỡ statement núi trờn lập tức tạo ra một Object Customer.
Tuyên bố Variable trong Scope của Block
Trong thí dụ dưới đây, variable X được declared trong một IF
..THEN...END IF block. Khi execution ra khỏi IF block ấy, X sẽ bị hủy diệt.
Do đó, VB.NET sẽ than phiền là X undefined vỡ nú khụng thấy X bờn ngoài IF
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
18
block. Luật này cũng áp dụng cho những Blocks khác như DO...LOOP,
WHILE...END WHILE, FOR...NEXT, .v.v..
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs) Handles Button1.Click
Dim A As Integer = 5
Dim B As Integer = 5
If A = B Then
Dim X As Integer ' X is declared in this IF block
X = 12
End If
A = X ' X has been destroyed, so it is undefined here
End Sub
Cú lẽ bạn hỏi Declare Variable trong FOR...LOOP cú lợi gỡ, tại sao ta
không Declare một lần duy nhất ở đầu?
Thứ nhất là Block giới hạn scope (phạm vi hoạt động) của một variable để nó
không đụng chạm ai dễ gây nên bug, thứ hai là trường hợp điển hỡnh ta sẽ cần
feature này là trong một FOR...LOOP, cứ mỗi iteration ta muốn instantiate một
Object mới. Khi ấy ta cần Declare một Object variable, instantiate Object , rồi
chứa nú vào một collection chẳng hạn.
Truy cập Variable/Class/Structure
Trong VB.NET ta có thể quyết định giới hạn việc truy cập một Variable,
Class, Structure .v.v. bằng cỏch dựng cỏc keywords sau:
Loại truy
cập
Thớ dụ
Chỳ thớch
Cho phép ở đâu cũng dùng nó
Publi
c
Public Class
ClassForEverybody
được. Ta chỉ có thể dùng Public ở mức
độ Module, Namespace hay File. Tức là
ta không thể dùng Public trong một
Sub/Function.
Prote Protected Class
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
Cho phép các classes con, cháu
19
cted
ClassForMyHeirs
Frien
d
te
ở mức độ Class.
Friend
StringForThisProject As
String
Priva
được dùng. Ta chỉ có thể dùng Protected
Private
NumberForMeOnly As
Integer
Cho phép code trong cùng một
Project được dùng.
Cho phép code trong cùng module,
class, hay structure được dùng. Lưu ý là
Dim coi như tương đương với Private,
do đó ta nên dùng Private cho dễ đọc.
Ngoài ra, nhớ là nếu container (Object chứa) của một Variable/Class/Structure là
Private thỡ dự ta cú tuyờn bố một Variable/Class/Structure nằm bờn trong
container là Public ta cũng khụng thấy nú từ bờn ngoài.
Thay đổi trong Array
Array index từ 0
Trong VB.NET khụng cú Option Base và mọi Array đều có index bắt
đầu từ 0. Khi bạn tuyên bố một array như:
Dim myArray(10) As
Integer
Kết quả là một array cú 11 elements và index từ 0 Đến 10. UBound của
array này là 10 và LBound của tất cả arrays trong VB.NET đều là 0.
Tuyên bố Array với những trị số khởi đầu
Bạn cú thể tuyờn bố Array với những trị số khởi đầu như sau:
Dim myArray() As Integer = { 1, 5, 8, 16 } ' Note the curly
brackets
Statement làm hai chuyện: quyết định size của array và cho các elements trị
số khởi đầu. Để dùng feature này, bạn không được nói rừ size của array, mà để
cho program tự tớnh.
ReDim Preserve
Sinh viªn: Hoµng ViÕt T©n, MS: P§ 811127
20
- Xem thêm -