Những người phát triển ứng dụng, những người quản lý cơ sở dữ liệu, những nhà phântích hay thiết kế hệ thống và tất cả những ai quan tâm đến thiết kế, phát triển và quảnlý các trình ứng
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Fax (84-511) 842 771
Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI : QUẢN LÝ BÁN HÀNG CHO CÁC NHÀ HÀNG
Mã số : 03T4-019 Ngày bảo vệ : 10-11/06/2008
SINH VIÊN :
LỚP :
CBHD :
ĐÀ NẴNG, 06/2008
Trang 2Em cảm ơn các thầy cô đã tận tình dạy dỗ trong suốt 5 năm qua Đặc biệt, em xin chân thành cảm ơn TS GVC Võ Trung Hùng đã trực tiếp hướng dẫn nhiệt tình, tạo mọi điều kiện thuận lợi và góp nhiều ý kiến quý báu trong suốt quá trình thực hiện
đề tài.
Em cũng xin cảm ơn các anh trong công ty TNHH TOCASO đã hướng dẫn, động viên em, đặc biệt là anh KS Bùi Duy Khánh đã gợi mở cho em những định hướng phát triển mới của công nghệ thông tin mà em đã ứng dụng trong đề tài.
Đà Nẵng, 05/2008 Sinh viên
Trang 3Tôi xin cam đoan :
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của TS GVC Võ Trung Hùng và KS Bùi Duy Khánh
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Trang 4TỔNG QUAN ĐỀ TÀI 1
.I Giới thiệu 1
.I.1 Bối cảnh 1
.I.2 Vấn đề đặt ra 1
.II Mục đích 1
.III Nội dung và phạm vi 2
.IV Phương pháp 2
.V Kết quả đạt được 2
.VI Ý nghĩa 2
CƠ SỞ LÝ THUYẾT 3
.I Tổng quan Net Framework 3
.I.1 Cấu trúc Net Framework 3
.I.2 Common Language Runtime(CLR) 4
CLR 4
Intermediate Language 4
.II Ngôn ngữ lập trình C# (C Sharp) 5
.II.1 Giới thiệu 5
.II.2 Hệ thống kiểu trong c# 5
.II.3 Các khái niệm lập trình 6
Không gian tên 6
Cấu trúc (Struct) 6
Lớp (Class) 7
Kế thừa 8
Đa hình 9
.III Hệ quản trị cơ sở dữ liệu SQL Server 11
.III.1 Giới thiệu 11
.III.2 Các thành phần cấu thành cơ bản 12
.III.3 Đối tượng cơ sở dữ liệu 12
.III.4 Các công cụ chính 12
.III.5 Phát biểu T-SQL 13
.III.6 Thủ tục 13
.III.7 Trigger 13
.III.8 Kết nối cơ sở dữ liệu SQL Server 14
.IV Ngôn ngữ mô hình hoá UML 14
.IV.1 Giới thiệu chung 14
.IV.2 Các thành phần của ngôn ngữ UML 15
.IV.3 Các biểu đồ UML 16
Biểu đồ Use case (Use Case Diagram): 16
Biểu đồ lớp (Class Diagram) 16
Biểu đồ đối tượng (Object Diagram) 17
Biểu đồ trạng thái (State Diagram) 18
Biểu đồ trình tự (Sequence Diagram) 18
Biểu đồ cộng tác (Collaboration Diagram) 19
Trang 5.I Khảo sát bài toán 21
.I.1 Yêu cầu 21
.I.2 Hiện trạng 21
.I.3 Đánh giá 21
.II Phân tích và thiết kế 22
.II.1 Xác định các Actor 22
.II.2 Xác định Use case 22
.II.3 Biểu đồ Use case 23
.II.4 Xác định lớp 24
Các lớp thực thể (Entity Classes) 24
Các lớp biên (Boundary Classes) 25
Các lớp điều khiển (Control Classes) 25
.II.5 Biểu đồ lớp 27
.II.6 Biểu đồ trình tự biểu diễn quá trình đăng nhập 28
.II.7 Biểu đồ trình tự biểu diễn quá trình chọn ca 28
.II.8 Biểu đồ hoạt động biểu diễn các thao tác nghiệp vụ 29
XÂY DỰNG VÀ CÀI ĐẶT CHƯƠNG TRÌNH 33
.I Các yêu cầu đối với hệ thống 33
.II Cơ sở dữ liệu của hệ thống 33
.III Xây dựng chương trình 35
.IV Cài đặt và thử nghiệm chương trình 35
.IV.1 Cài đặt 35
.IV.2 Môi trường thử nghiệm 35
.IV.3 Triển khai và thử nghiệm 36
.IV.4 Kết quả thử nghiệm chương trình 36
KẾT LUẬN 43
.I Những kết quả đã đạt được 43
.II Những tồn tại 43
.III Hướng phát triển 43
[1] Trey Nash Accelerated C# 2008 Apress, 2007, 510 tr 45
[2] Phương Lan Lập trình Windows với C# Net Nhà Xuất bản Lao Động - Xã Hội 45
[3] TS Hồ Tường Vinh, ThS.Phạm Nguyễn Cường Phân tích thiết kế hệ thống hướng đối tượng bằng UML Đại học KHTN-TP HCM 45
[4] Phạm Hữu Khang, Hoàng Đức Hải Lập trình ứng dụng chuyên nghiệp SQL Server 2000 Nhà Xuất bản Giáo Dục, 2002, 494 tr 45
Trang 6HÌNH 2.1: CẤU TRÚC CỦA NET FRAMEWORK 3
HÌNH 2.2: BIỂU ĐỒ USE CASE CỦA MỘT CÔNG TY BẢO HIỂM 16
HÌNH 2.3: MỘT SƠ ĐỒ LỚP TIÊU BIỂU 17
HÌNH 2.4: BIỂU ĐỒ ĐỐI TƯỢNG 17
HÌNH 2.5: MỘT VÍ DỤ VỀ BIỂU ĐỒ TRẠNG THÁI 18
HÌNH 2.6: VÍ DỤ VỀ MỘT BIỂU ĐỒ TRÌNH TỰ 19
HÌNH 2.7: VÍ DỤ VỀ BIỂU ĐỒ CỘNG TÁC 19
HÌNH 2.8: VÍ DỤ VỀ BIỂU ĐỒ HOẠT ĐỘNG 20
HÌNH 3.1: BIỂU ĐỒ USE CASE BIỂU DIỄN CÁC CHỨC NĂNG CỦA BỒI BÀN 23
HÌNH 3.2: BIỂU ĐỒ USE CASE BIỂU DIỄN CÁC CHỨC NĂNG CỦA THU NGÂN 23
HÌNH 3.3: BIỂU ĐỒ USE CASE BIỂU DIỄN CÁC CHỨC NĂNG CỦA QUẢN LÝ 23
HÌNH 3.4: BIỂU ĐỒ LỚP CỦA HỆ THỐNG 27
HÌNH 3.5: BIỂU ĐỒ TRÌNH TỰ CỦA QUÁ TRÌNH ĐĂNG NHẬP 28
HÌNH 3.6: BIỂU ĐỒ TRÌNH TỰ CỦA QUÁ TRÌNH CHỌN CA 28
HÌNH 3.7: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH MỞ BÀN 29
HÌNH 3.8: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH DỜI MÓN 29
HÌNH 3.9: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH GHÉP BÀN 30
HÌNH 3.10: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH CHIA BÀN 30
HÌNH 3.11: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH CHIA HOÁ ĐƠN 31
HÌNH 3.12: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH GIẢM GIÁ 31
HÌNH 3.13: BIỂU ĐỒ HOẠT ĐỘNG CỦA QUÁ TRÌNH THANH TOÁN 32
HÌNH 4.0.3: SƠ ĐỒ BIỂU DIỄN QUAN HỆ DỮ LIỆU GIỮA CÁC BẢN34 HÌNH 4.2: MÔ HÌNH BA TẦNG 35
HÌNH 4.3: GIAO DIỆN MỞ MÁY 36
Trang 7HÌNH 4.6: GIAO DIỆN CHÍNH CỦA QUÁ TRÌNH BÁN HÀNG 38
HÌNH 4.7: GIAO DIỆN NHẬP MÔ TẢ BÀN SAU KHI CHỌN CHỨC NĂNG MỞ BÀN 38
HÌNH 4.8: GIAO DIỆN NHẬP SỐ NGƯỜI CỦA BÀN 39
HÌNH 4.9: GIAO DIỆN GỌI MÓN 39
HÌNH 4.10: GIAO DIỆN XEM BÀN ĐANG MỞ 40
HÌNH 4.0.4: GIAO DIỆN TRƯỚC KHI CHIA BÀN 40
HÌNH 4.12: GIAO DIỆN SAU KHI CHIA BÀN 41
HÌNH 4.13: GIAO DIỆN GIẢM GIÁ 41
HÌNH 4.14: GIAO DIỆN THANH TOÁN 42
Trang 8BẢNG 2.1: DANH SÁCH CÁC KIỂU CÓ SẴN TRONG C# 5 BẢNG 4.2: MÔ TẢ CÁC BẢNG TRONG CƠ SỞ DỮ LIỆU CỦA HỆ THỐNG 33
Trang 9.I Giới thiệu
.I.1 Bối cảnh
Với sự bùng nổ của công nghệ thông tin làm cho tốc độ tin học hoá trong mọilĩnh vực của cuộc sống cũng phát triển theo Trong đó có sự góp sức của công nghệthông tin vào trong các hệ thống quản lý giúp chúng ta tiết kiệm được rất nhiều thờigian, công sức và chi phí Những hệ thống quản lý ngày càng hiệu quả và hoạt độngđáng tin cậy hơn Sự xuất hiện của máy tính đã làm thay đổi nhiều mặt cuộc sống, conngười ngày càng phát triển, tìm tòi và chế tạo những thiết bị mới giúp chúng ta làmviệc thuận tiện và dễ dàng hơn Trong đó có sự chế tạo ra chiếc màn hình cảm ứng làthiết bị tiện dụng hơn khi ta không phải dùng chuột để điều khiển
Ngày nay các nhà hàng ở nước ta mọc lên ngày càng nhiều, để có được doanhthu cao các nhà hàng sẽ tìm mọi cách để phục vụ khách hàng một cách tốt nhất.Những nhà hàng có phạm vi khá lớn việc di chuyển của nhân viên khá bất tiện, vì vậy
sự chậm trễ làm cho khách hàng không vừa lòng Hơn nữa việc quản lý thủ công làmcho nhà hàng mất nhiều thời gian, nguồn nhân lực và sự chính xác không cao
Nếu ta ứng dụng công nghệ thông tin vào việc quản lý và dùng chiếc màn hìnhcảm ứng cho những máy trạm sẽ làm cho nhân viên phục vụ tiện hơn trong việc thaotác nghiệp vụ Vậy làm sao để đưa thiết bị này vào lĩnh vực quản lý nhà hàng?
Sau khi tìm hiểu về nghiệp vụ bán hàng cùng với kiến thức đã được học ởtrường, sự hướng dẫn của thầy Võ Trung Hùng và sự giúp đỡ của công ty TOCASOnơi em thực tập Em xây dựng chương trình quản lý trong đó làm giảm thiểu sự dichuyển của nhân viên và giúp cho việc quản lý trở nên dễ dàng và thuận tiện hơn nhờ
sự trợ giúp của màn hình cảm ứng và hệ thống mạng
Được sự đồng ý của giáo viên hướng dẫn và ban chủ nhiệm khoa, em đã chọn
đề tài “QUẢN LÝ BÁN HÀNG CHO CÁC NHÀ HÀNG” làm luận văn tốt nghiệpcủa mình
Trang 10mô tả như sau: Khi xây dựng chương trình thành công Gói client sẽ thực thi và xử lýnhững hoạt động nghiệp vụ như đặt bàn, đặt tiệc, ghép bàn, chia bàn, dời bàn, dờimón, xoá món, chia bill, thanh toán, giảm giá, báo cáo, kiểm tra… tất cả các thao tác
xử lý đều nằm trong gói client và nó chỉ gởi dữ liệu về server để lưu vào cơ sở dữ liệu.Nếu có một máy client mất kết nối thì client sẽ dùng dữ liệu cục bộ trên máy client đó
và sau khi có kết nối sẽ được đồng bộ với dữ liệu ở server Gói quản lý chỉ có nhiệm
vụ nhập dữ liệu
.III Nội dung và phạm vi
Nội dung trong chương trình xây dựng hệ thống quản lý bàn hàng cho nhà hàngtrong đó mọi chức năng hoạt động nghiệp vụ trong nhà hàng: đặt bàn, đặt tiệc, mởbàn, gọi món, xoá món, ghép tàn, chia bàn, dời bàn, chia bill, thanh toán, giảm giá,báo cáo, kiểm tra, …
Nhưng trong phạm vi của đề tài em sẽ xây dựng các chức năng: mở bàn, gọimón, xoá món, dời món, ghép bàn, chia bàn, dời bàn, chia hoá đơn, thanh toán, giảmgiá
.IV Phương pháp
- Tìm hiểu nghiệp vụ quản lý và bán hàng ở nhà hàng để xây dựng hệ thống
- Nghiên cứu tìm hiểu UML để phân tích và thiết kế chương trình và vận dụngcông cụ MS Visio để vẽ những biểu đồ
- Sử dụng SQL Server 2000 để thiết kế và quản lý dữ liệu
- Nghiên cứu tìm hiểu công nghệ Net 2008 để xây dựng chương trình trong đóchú trọng ngôn ngữ C# và vận dụng có hiệu quả vấn đề đồng bộ trong Net2008
.V Kết quả đạt được
Khi chương trình xây dựng xong cơ bản cần phải đạt được những kết quả sau:
- Thiết kế cơ sở dữ liệu phải tối ưu
- Dữ liệu phải được đồng bộ chính xác
- Khi mất kết nối đến server thì client phải hoạt động tốt
- Các chức năng về nghiệp vụ bán hàng được đưa ra trong phạm vi của đề tàiphải thực thi được
- Giao diện phải hợp lý và dễ thao tác
.VI Ý nghĩa
Đề tài xây dựng thành công sẽ có ý nghĩa lớn đối với nhà hàng: làm giảm thờigian của nhân viên di chuyển, giúp nhân viên làm việc khoa học và chính xác hơn, cảitiến độ chính xác của dữ liệu, giảm thời gian chờ đợi của khách Giúp người quản lý
dễ dàng hơn trong việc theo dõi và vận hành toàn bộ hệ thống bán hàng
Trang 11.I Tổng quan Net Framework
.I.1 Cấu trúc Net Framework
.Net Framework là một nền tảng cung cấp các tiện nghi cho việc xây dựng vàchạy các ứng dụng Các thành phần chính của nó là: CLR (Common LanguageRuntime) và FCL ( Net Framework Class Library)
CLR nằm ở phần trên cùng của hệ điều hành và cung cấp một môi trường ảo đểchạy các ứng dụng dưới sự quản lý của nó
FCL cung cấp API hướng đối tượng để viết các ứng dụng Net Khi viết cácứng dụng Net ta bỏ lại phía sau các công cụ như Com, ATL, MFC, Window API, …
và chỉ sử dụng FCL
Cấu trúc cụ thể của Net Framework như sau:
Hình 2.1: Cấu trúc của Net Framework
Framework Base Class cung cấp các lớp đối tượng để lập trình ứng dụng.ADO.NET là phiên bản tiếp theo của ADO phục vụ cho việc truy cập dữ liệu từ hầuhết các nguồn cung cấp dữ liệu hiện nay, đặc biệt có hỗ trợ XML Hai dòng ứng dụngchính của Net là ứng dụng mạng (Web Form, Web Service) và Window Form
Trang 12.I.2 Common Language Runtime(CLR)
CLR
Trung tâm của NET framework là môi trường thời gian chạy, gọi là CommonLanguage Runtime (CLR) hoặc NET runtime Mã của các điều khiển trong CLRthường là mã có quản
Tuy nhiêu, trước khi được thực thi bởi CLR, mã được phát triển trong C# (hoặccác ngôn ngữ khác) cần phải được biên dịch Quá trình biên dịch trong NET xảy ratheo hai bước:
- Dịch mã nguồn thành Microsoft Intermediate Language (MS-IL)
- Dịch IL thành mã nền cụ thể bởi CLR
Mới nhìn có vẻ hơi dài dòng Nhưng thật sự, một tiến trình dịch hai mức là rấtcần thiết, bởi vì trạng thái của Microsoft Intermediate Language (mã có quản) là chìakhoá cung cấp nhiều lợi ích trong NET
Intermediate Language
Microsoft Intermediate Language (thường được viết tắt là “IntermediateLanguage ” hay “IL”) tương tự như ý tưởng về mã Java byte, nó là một ngôn ngữ cấpthấp với những cú pháp đơn giản (dựa trên cơ sở mã số hơn text), chính vì điều này sẽlàm cho quá trình dịch sang mã máy nhanh hơn Bất kì ngôn ngữ nào hướng NETcũng sẽ hỗ trợ các đặc tính chính của IL
Sau đây là những đặc tính chính của Intermediate Language:
- Hướng đối tượng và dùng interfaces
- Sự tách biệt giữa kiểu giá trị và kiểu tham chiếu
Sự cải tiến trong thực thi
Thay vì phải dịch toàn bộ ứng dụng một lần, trình biên dịch JIT sẽ biên dịchtừng phần mã khi nó được gọi Khi mã được dịch rồi, mã kết quả sẽ được giữ lại chotới khi thoát khỏi ứng dụng, chính vì thế nó không phải biên dịch lại trong lần chạy kếtiếp Microsoft quả quyết rằng cách xử lý này có hiệu lực cao hơn là dịch toàn bộ ứngdụng, bởi vì có trường hợp một khối lượng lớn mã của ứng dụng không bao giờ được
sử dụng trong thời gian chạy Khi sử dụng trình biên dịch JIT , các đoạn mã này sẽkhông bao giờ được dịch
Tương hoạt giữa các ngôn ngữ
Chúng ta đã biết cách thức IL cho phép độc lập nền, trình biên dịch JIT có thểcải thiện quá trình thực thi Tuy nhiên, IL cũng làm cho tương hoạt giữa các ngôn ngữ
Trang 13trở nên dễ dàng hơn Bạn có thể biên dịch IL từ một ngôn ngữ, và mã này sau đó cóthể tương hoạt với IL được biên dịch bởi một ngôn ngữ khác.
.II Ngôn ngữ lập trình C# (C Sharp)
.II.1 Giới thiệu
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khoá và hơn mười mấy kiểu dữliệu được xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi nhữngkhái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phầncomponent, lập trình hướng đối tượng Những tính chất đó hiện diện trong một ngônngữ lập trình hiện đại Và ngôn ngữ C# hội đủ những điều kiện như vậy, hơn nữa nóđược xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java
Không như các ngôn ngữ thủ tục, ngôn ngữ C# không quan tâm đến dữ liệutoàn cục hay các hàm toàn cục Tất cả các dữ liệu và phương thức phải được đóng góinhư một đơn vị chức năng Các đơn vị chức năng này là những đối tượng có thể sửdụng lại, chúng độc lập và có thể hoàn toàn độc lập
.II.2 Hệ thống kiểu trong c#
Hệ thống kiểu dữ liệu trong C# cũng là hệ thống kiểu dữ liệu được sử dụngchung của bộ Visual Studio.Net Các kiểu dữ liệu trong C# hoàn toàn hướng đốitượng, thời gian sống của chúng bị giới hạn trong thời gian mà chúng khai báo
Bảng 2.1: Danh sách các kiểu có sẵn trong C#
Kiểu Mô tả
Object Lớp cơ sở của tất cả các đối tượng
String Dãy các ký tự ở dạng Unicode
Sbyte Nguyên có dấu 8 bit
Short Nguyên có dấu 16 bit
Int Nguyên có dấu 32 bit
Long Nguyên có dấu 64 bit
Byte Nguyên không dấu 8 bit
Ushort Nguyên không dấu 16 bit
Uint Nguyên không dấu 32 bit
Ulong Nguyên không dấu 64 bit
Trang 14.II.3 Các khái niệm lập trình
Không gian tên
Không gian tên hỗ trợ cho sự cô lập và sự đóng gói các lớp, các giao diện, cácstruct có liên quan thành một đơn vị
Cú pháp cho việc khai báo một không gian tên như sau:
namespace ten_khong_gian_ten {
// các lớp (class), các giao diện, các struct, … }
Sử dụng các thực thể bên trong một không gian tên có thể thực hiện hai cáchkhác nhau
Cú pháp khai báo struct
[thuộc tính] [bổ sung truy cập] struct <tên cấu trúc> [: danh_ sách giao diện]
get { return xVal;}
set { xVal = value;}
} public int y {
Trang 15get { return yVal;}
set { yVal = value;}
} public override string ToString() {
return (String.Format(“{0}, {1}”, xVal, yVal)); }
// thuộc tính private lưu toạ độ x, y private int xVal;
private int yVal;
Location loc1 = new Location( 200, 300);
Console.WriteLine(“Loc1 location: {0}”, loc1);
Tester t = new Tester();
t.myFunc( loc1 );
Console.WriteLine(“Loc1 location: {0}”, loc1);
} }
Lớp (Class)
Lớp là sự gói gọn các dữ liệu và phương thức hoạt động trên dữ liệu đó TrongC# lớp được xem là kiểu dữ liệu tham chiếu, như vậy các thể hiện của lớp sẽ đượcchứa tại vùng nhớ heap và được quả lý bởi bộ thu dọn rác (GC)
Lớp có thể chứa các trường, phương thức, sự kiện, thuộc tính và các lớp lồngnhau Lớp cũng có thể kế thừa từ các lớp khác và phát triển đa giao diện
Cũng như struct, mức độ bảo vệ của lớp cũng là private Lớp có thể khai báocác thành phần là public, protected, private, internal hay protected internal
Khai báo một lớp bằng cách sử dụng từ khoá class Cú pháp đầy đủ của khaibáo một lớp như sau:
[Thuộc tính] [Bổ sung truy cập] class <Định danh lớp> [: Lớp_
Trang 16Console.WriteLine(“ Thoi gian hien hanh la :_ {0}/{1}/{2} {3}:{4}:{5}”,_
Ngay, Thang, Nam, Gio, Phut, Giay);
} // Phương thức khởi dựng public ThoiGian( System.DateTime dt ) {
static void Main() {
System.DateTime currentTime = System.DateTime.Now;
ThoiGian t = new ThoiGian( currentTime );
t.ThoiGianHienHanh();
} }
Ví dụ sau minh hoạ việc tạo và sử dụng các lớp cơ sở và dẫn xuất
Trang 17// mô phỏng vẽ cửa sổ public void DrawWindow() {
Console.WriteLine(“Drawing Window at {0}, {1}”, top, left);
} // Có hai biến thành viên private do đó // hai biến này sẽ không thấy bên trong lớp // dẫn xuất.
private int top;
private int left;
} // ListBox dẫn xuất từ Window public class ListBox: Window {
// Khởi dựng có tham số public ListBox(int top, int left, string_
theContents) : base(top, left) // gọi khởi dựng
//của lớp cơ sở {
mListBoxContents = theContents;
} // Tạo một phiên bản mới cho phương thức DrawWindow
vì //trong lớp dẫn xuất muốn thay đổi hành vi thực hiện bên //trong phương thức này
public new void DrawWindow() {
base.DrawWindow();
Console.WriteLine(“ ListBox write: {0}”, mListBoxContents);
} // biến thành viên private private string mListBoxContents;
} public class Tester {
public static void Main() {
// tạo đối tượng cho lớp cơ sở Window w = new Window(5, 10);
w.DrawWindow();
// tạo đối tượng cho lớp dẫn xuất ListBox lb = new ListBox( 20, 10, “Hello world!”);
lb.DrawWindow();
} }
Đa hình
Trong lập trình hướng đối tượng, khả năng ghi đè phương thức của lớp cơ sở
và cung cung cấp một phát triển khác ở trong lớp dẫn xuất là một hình thức cơ bản củakhái niệm đa hình
Trang 18Hãy xem xét ví dụ trước, để chỉ định rằng phương thức DrawWindow() của lớpWindow là đa hình, đơn giản là ta thêm từ khoá virtual vào khai báo như sau:
public virtual void DrawWindow()
Lúc này thì các lớp dẫn xuất được tự do thực thi các cách xử riêng của mìnhtrong phiên bản mới của phương thức DrawWindow() Để làm được điều này chỉ cầnthêm từ khoá override để chồng lên phương thức ảo DrawWindow() của lớp cơ sở.Sau đó thêm các đoạn mã nguồn mới vào phương thức viết chồng này
Ví dụ sau minh hoạ cho sự thực thi tính chất đa hình
Console.WriteLine( “Window: drawing window at_ {0}, {1}”, top, left );
} // biến thành viên của lớp protected int top;
protected int left;
} public class ListBox : Window {
// phương thức khởi dựng có tham số public ListBox(int top, int left, string contents): _base( top, left)
{
listBoxContents = contents;
} // thực hiện việc phủ quyết phương thức DrawWindow public override void DrawWindow()
} public class Button : Window {
public Button(int top, int left) : base(top, left) {
} // phủ quyết phương thức DrawWindow của lớp cơ sở public override void DrawWindow()
{
Trang 19Console.WriteLine(“ Drawing a button at {0}:_ {1}”, top, left);
} }
public class Tester {
static void Main() {
Window win = new Window(1,2);
ListBox lb = new ListBox( 3, 4, “ Stand alone list box”);
Button b = new Button( 5, 6 );
win.DrawWindow();
lb.DrawWindow();
b.DrawWindow();
Window[] winArray = new Window[3];
winArray[0] = new Window( 1, 2 );
winArray[1] = new ListBox( 3, 4, “List box is array”);
winArray[2] = new Button( 5, 6 );
for( int i = 0; i < 3; i++) {
winArray[i].DrawWindow();
} }
}
.III Hệ quản trị cơ sở dữ liệu SQL Server
.III.1 Giới thiệu
Hệ quản trị cơ sở dữ liệu là phần mềm cho phép bạn định nghĩa, khởi tạo, bảotrì cơ sở dữ liệu và cung cấp các truy xuất điều khiển đến dữ liệu Thông thường thuậtngữ cơ sở dữ liệu ám chỉ kho dữ liệu được lưu trữ Tuy nhiên trong các hệ cơ sở dữliệu tin học hoá, cơ sở dữ liệu còn bao gồm nhiều thành phần khác như phần cứng,phần mềm và cả người sử dụng Trong các hệ thống này dữ liệu được truy xuất quacác trình ứng dụng hoặc giao diện do hệ quản trị cơ sở dữ liệu cung cấp
Tập hợp các sự kiện được trình bày trong cơ sở dữ liệu được gọi là hệ thốngcác diễn dịch (universe of discourse - UOD) UOD chỉ bao gồm các sự kiện chặt chẽ
và phù hợp cho người sử dụng Vì vậy cơ sở dữ liệu phải được thiết kế, xây dựng vàphát triển dựa trên yêu cầu của người sử dụng đặc thù và mục đích sử dụng cụ thể
Hệ quản trị cơ sở dữ liệu quan hệ là hệ quản trị dữ liệu dựa trên mô hình dữliệu quan hệ Đối với loại cơ sở dữ liệu này, mọi thông tin tạo nên UOD được gọi làquan hệ Thuật ngữ quan hệ được sử dụng trong nhiều lĩnh vực, tuy nhiên trong mộtgóc nhìn nào đó, quan hệ là một bảng dữ liệu hai chiều Trong cơ sở dữ liệu, bảng vàquan hệ đều lưu trữ dữ liệu Mối quan hệ bao gồm tên và tập hợp các cột (hay còn gọi
là thuộc tính) Dữ liệu xuất hiện trong bảng là tập hợp các hàng (hay còn gọi là bộ dữliệu)
Microsoft SQL Server 2000 là một công cụ thiết kế và xây dựng cơ sở dữ liệu
có tính thực thi cao Được trải nghiệm qua nhiều phiên bản nhằm đem lại sự tối ưu
Trang 20Những người phát triển ứng dụng, những người quản lý cơ sở dữ liệu, những nhà phântích hay thiết kế hệ thống và tất cả những ai quan tâm đến thiết kế, phát triển và quản
lý các trình ứng dụng đều có thể sử dụng công cụ này
.III.2 Các thành phần cấu thành cơ bản
- Database: cơ sở dữ liệu của SQL Server
- Tập tin log: Tập tin lưu trữ những chuyển tác của SQL
- Tables: Bảng dữ liệu
- Filegroups: Tập tin nhóm
- Diagrams: Sơ đồ quan hệ
- View: Khung nhìn (hay bảng ảo mà sồ liệu dựa trên bảng)
- Stored Procedure: Thủ tục và hàm nội
- User defined Function: Hàm do người dùng định nghĩa
- Users: Người sử dụng cơ sở dữ liệu
- Roles: Các quy định vai trò và chức năng trong hệ thống SQL Server
- Rules: Những quy tắc
- Defaults: Các giá trị mặc định
- User-defined data types: Kiểu dữ liệu do người dùng định nghĩa
- Full-text catalogs: Tập phân loại dữ liệu text
.III.3 Đối tượng cơ sở dữ liệu
Master: Chứa tất cả những thông tin cấp hệ thống (system-level information)
bao gồm thông tin về các database khác trong hệ thống như vị trí của các data files,các login account và các thiết đặt cấu hình hệ thống của SQL Server (systemconfiguration settings)
Tempdb: Chứa tất cả những table hay stored procedure được tạm thời tạo ra
trong quá trình làm việc bởi user hay do bản thân SQL Server engine Các table haystored procedure này sẽ biến mất khi khởi động lại SQL Server hay khi ta disconnect
Model: Database này đóng vai trò như một bản kẽm (template) cho các
database khác Nghĩa là khi một user database được tạo ra thì SQL Server sẽ copytoàn bộ các system objects (tables, stored procedures ) từ Model database sangdatabase mới vừa tạo
Msdb: Database này được SQL Server Agent sử dụng để hoạch định các báo
động và các công việc cần làm (schedule alerts and jobs)
.III.4 Các công cụ chính
Trình Enterprise Manager: Màn hình điều khiển khi quản trị SQL Server,
cung cấp cho người quản trị nhiều chức năng để quản lý bằng giao diện đồ hoạ
Trình Query Analyzer: Giúp phát triển và gỡ rối trong SQL Server, nó là
trình soạn thảo và thực thi câu lệnh SQL hay Stored Procedure
SQL Profiler: Nó có khả năng "chụp" (capture) tất cả các sự kiện hay hoạt
động diễn ra trên một SQL server và lưu lại dưới dạng text file rất hữu dụng trong việckiểm soát hoạt động của SQL Server
Trang 21.III.5 Phát biểu T-SQL
- Câu lệnh truy xuất
SELECT [ten_truong1, ten_truong2,…] FROM <ten_bang> [WHERE dieu_kien]
Thủ tục được tạo ra như sau:
CREATE PROCEDURE | PROC <ten_thu_tuc>
[<ten_doi_so> <kieu_du_lieu> [=<gia_tri_mac_dinh> [OUT PUT] [,
…
… ]]
AS
<ma>
GO
Đoạn <ma> là các phát biểu SQL Server và T-SQL bao gồm cả biến, phép toán
và các toán tử nếu có, chúng đặt sau phát biểu AS
Trước phát biểu AS và sau khai báo tên thủ tục là danh sách các tham số cầnthiết từ bên ngoài truyền vào
.III.7 Trigger
Trigger là một loại đặc biệt của thủ tục, nó được gắn chặt vào một bảng vàđược thực thi bởi SQL Server khi có các thao tác xử lý dữ liệu liên quan đến bảng.Cách sử dụng thông thường nhất của trigger là tuân theo các quy tắc của thủ tục Cáctrigger còn được sử dụng xoá và cập nhật chồng cho các bảng con và để quản lý dữliệu không bình thường
Khi tạo trigger, ta chỉ định thao tác hay các thao tác (INSERT, UPDATE VÀDELETE) nào làm cho trigger đó hoạt động Có thể có nhiều trang trigger cập nhật,trong đó mỗi trigger về cơ bản trông coi các thay đổi trong một cột được chỉ định
Trigger hoạt động mà không phụ thuộc vào có bao nhiêu dòng bị ảnh hưởngbởi truy vấn Các trigger luôn luôn hoạt động ngay cả khi nếu truy vấn không có dòngnào bị ảnh hưởng
Trigger hoạt động ngay sau khi SQL Server hiệu chỉnh dữ liệu, trigger có thểxem kết quả trước và sau truy vấn Việc này được thể hiện bởi việc sử dụng hai bảng
Trang 22đặc biệt gọi là Inserted và Deleted Các bảng Inserted và Deleted tồn tại trong bộ nhớ
và chỉ tồn tại trong thời gian trigger đó
Tạo một trigger bằng cách sử dụng câu lệnh CREATE TRIGGER củaTransaction-SQL Một phần cú pháp được trình bày sau đây:
CREATE TRIGGER ten_trigger
ON ten_bang
FOR [Insert][,][Update][,][Delete]
AS
<Câu lệnh SQL>
.III.8 Kết nối cơ sở dữ liệu SQL Server
// Conn là biến kết nối cơ sở dữ liệu
Conn = new System.SQLClient.SQLConnection();
// Khởi tạo biến Conn với đối tượng kết nối cơ sở dữ liệu
strConn = “Server = 192.168.1.1”;
strConn += “uid = sa; pwd = 12345;”;
strConn += “database = qlBanhang”;
// Khởi tạo biến strConn với chuỗi kết nối dữ liệu
Conn.ConnectionString = strConn;
Diễn giải chuỗi kết nối:
- Server =: Tên của server cài đặt SQL Server
- uid =: Tài khoản đăng nhập cơ sở dữ liệu SQL Server
- pwd: Mật mã đăng nhập cơ sở dữ liệu SQL Server
- database =: Tên cơ sở dữ liệu
Hàm kết nối cơ sở dữ liệu:
public void OpenConnection (string strConn) {
// Khai báo biến kết nối lớp SqlConnection SqlConnection Conn;
// Khởi tạo biến kết nối Conn = new SqlConnection();
// Gán chuỗi kết nối vào biến kết nối Conn.ConnectionString = strConn;
// Mở kết nối Conn.Open();
}
.IV Ngôn ngữ mô hình hoá UML
.IV.1 Giới thiệu chung
Ngôn ngữ mô hình hoá thống nhất (Unifield Modeling Language – UML) làmột ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng bởi ba tácgiả trên với chủ đích là:
- Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng
- Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô hìnhhoá
- Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiềuràng buộc khác nhau
Trang 23- Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.
UML có thể được sử dụng trong nhiều giai đoạn, từ phát triển, thiết kế cho tớithực hiện và bảo trì Vì mục đích chính của ngôn ngữ này là dùng các biểu đồ hướngđối tượng để mô tả hệ thống nên miền ứng dụng của UML bao gồm nhiều loại hệthống khác nhau như:
Hệ thống thống tin (Information System): Cất giữ, lấy, biến đổi biểu diễn
thông tin cho người sử dụng Xử lý những khoảng dữ liệu lớn có các quan hệ phứctạp, mà chúng được lưu trữ trong các cơ sở dữ liệu quan hệ hay hướng đối tượng
Hệ thống kỹ thuật (Technical System): Xử lý và điều khiển các thiết bị kỹ
thuật như viễn thông, hệ thống quân sự, hay các quá trình công nghiệp Đây là loạithiết bị phải xử lý các giao tiếp đặc biệt, không có phần mềm chuẩn và thường là các
hệ thống thời gian thực (real time)
Hệ thống nhúng (Embeded System): Thực hiện trên phần cứng gắn vào các
thiết bị như điện thoại di động, điều khiển xe hơi, … Điều này được thực hiện bằngviệc lập trình mức thấp với hỗ trợ thời gian thực Những hệ thống này thường không
có các thiết bị như màn hình đĩa cứng, …
Hệ thống phân bố (Distributed System): Được phân bố trên một số máy cho
phép truyền dữ liệu từ nơi này đến nơi khác một cách dễ dàng Chúng đòi hỏi các cơchế liên lạc đồng bộ để đảm bảo toàn vẹn dữ liệu và thường được xây dựng trên một
số các kỹ thuật đối tượng như CORBA, COM/DCOM, hay Java Beans/RMI
Hệ thống Giao dịch (Business System): Mô tả mục đích, tài nguyên (con
người, máy tính, …), các quy tắc (luật pháp, chiến thuật kinh doanh, cơ chế, …), vàcông việc hoạt động kinh doanh
Phần mềm hệ thống (System Software): Định nghĩa cơ sở hạ tầng kỹ thuật
cho phần mềm khác sử dụng, chẳng hạn như hệ điều hành, cơ sở dữ liệu, giao diệnngười sử dụng
.IV.2 Các thành phần của ngôn ngữ UML
Ngôn ngữ UML bao gồm một loạt các phần tử đồ hoạ (graphic element) có thểđược kết hợp với nhau để tạo ra các biểu đồ Bởi đây là một ngôn ngữ, nên UML cũng
có các nguyên tắc để kết hợp các phần tử đó
Một số những thành phần chủ yếu của ngôn ngữ UML:
Hướng nhìn (view): Hướng nhìn chỉ ra những khía cạnh khác nhau của hệ
thống cần phải được mô hình hoá Một hướng nhìn không phải là một bản vẽ, mà làmột sự trừu tượng hoá bao gồm một loạt các biểu đồ khác nhau Chỉ qua việc địnhnghĩa của một loạt các hướng nhìn khác nhau, mỗi hướng nhìn chỉ ra một khía cạnhriêng biệt của hệ thống, người ta mới có thể tạo dựng nên một bức tranh hoàn thiện về
hệ thống Cũng chính các hướng nhìn này nối kết ngôn ngữ mô hình hoá với quy trìnhđược chọn cho giai đoạn phát triển
Biểu đồ (diagram): Biểu đồ là các hình vẽ miêu tả nội dung trong một hướng
nhìn UML có tất cả 9 loại biểu đồ khác nhau được sử dụng trong những sự kết hợpkhác nhau để cung cấp tất cả các hướng nhìn của một hệ thống
Phần tử mô hình hoá (model element): Các khái niệm được sử dụng trong
các biểu đồ được gọi là các phần tử mô hình, thể hiện các khái niệm hướng đối tượng
Trang 24quen thuộc Ví dụ như lớp, đối tượng, thông điệp cũng như các quan hệ giữa các kháiniệm này, bao gồm cả liên kết, phụ thuộc, khái quát hoá Một phần tử mô hình thườngđược sử dụng trong nhiều biểu đồ khác nhau, nhưng nó luôn luôn có chỉ một ý nghĩa
và một ký hiệu
Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét bổ sung, các
thông tin cũng như các quy tắc ngữ pháp chung về một phần tử mô hình; chúng còncung cấp thêm các cơ chế để có thể mở rộng ngôn ngữ UML cho phù hợp với mộtphương pháp xác định (một quy trình, một tổ chức hoặc một người dùng)
.IV.3 Các biểu đồ UML
Biểu đồ Use case (Use Case Diagram):
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liênkết của chúng đối với Use case mà hệ thống cung cấp Một Use case là một lời miêu
tả của một chức năng mà hệ thống cung cấp Lời miêu tả Use case thường là một vănbản tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động Các Use caseđược miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của hệthống theo như sự mong đợi của người sử dụng), không miêu tả chức năng được cungcấp sẽ hoạt động nội bộ bên trong hệ thống ra sao Các Use case định nghĩa các yêucầu về mặt chức năng đối với hệ thống
Hình 2.2: Biểu đồ use case của một công ty bảo hiểm
Biểu đồ lớp (Class Diagram)
Một biểu đồ lớp chỉ ra cấu trúc tĩnh của các lớp trong hệ thống Các lớp là đạidiện cho các “vật” được xử lý trong hệ thống Các lớp có thể quan hệ với nhau trongnhiều dạng thức: liên kết (associated - được nối kết với nhau), phụ thuộc (dependent -một lớp này phụ thuộc vào lớp khác), chuyên biệt hoá (specialized - một lớp này làmột kết quả chuyên biệt hoá của lớp khác), hay đóng gói ( packaged - hợp với nhauthành một đơn vị) Tất cả các mối quan hệ đó đều được thể hiện trong biểu đồ lớp, đikèm với cấu trúc bên trong của các lớp theo khái niệm thuộc tính (attribute) và thủ tục
Trang 25(operation) Biểu đồ được coi là biểu đồ tĩnh theo phương diện cấu trúc được miêu tả
ở đây có hiệu lực tại bất kỳ thời điểm nào trong toàn bộ vòng đời hệ thống
Một hệ thống thường sẽ có một loạt các biểu đồ lớp – chẳng phải bao giờ tất cảcác biểu đồ lớp này cũng được nhập vào một biểu đồ lớp tổng thể duy nhất – và mộtlớp có thể tham gia vào nhiều biểu đồ lớp
Hình 2.3: Một sơ đồ lớp tiêu biểu
Biểu đồ đối tượng (Object Diagram)
Một biểu đồ đối tượng là một phiên bản của biểu đồ lớp và thường cũng sửdụng các ký hiệu như biểu đồ lớp Sự khác biệt giữa hai loại biểu đồ này nằm ở chỗbiểu đồ đối tượng chỉ ra một loạt các đối tượng thực thể của lớp, thay vì các lớp Mộtbiểu đồ đối tượng vì vậy là một ví dụ của biểu đồ lớp, chỉ ra một bức tranh thực tế cóthể xảy ra khi hệ thống thực thi: bức tranh mà hệ thống có thể có tại một thời điểmnào đó Biểu đồ đối tượng sử dụng chung các ký hiệu của biểu đồ lớp, chỉ trừ haingoại lệ: đối tượng được viết với tên được gạch dưới và tất cả các thực thể trong mộtmối quan hệ đều được chỉ ra
Biểu đồ đối tượng không quan trọng bằng biểu đồ lớp, chúng có thể được sửdụng để ví dụ hoá một biểu đồ lớp phức tạp, chỉ ra với những thực thể cụ thể và nhữngmối quan hệ như thế thì bức tranh toàn cảnh sẽ ra sao Một biểu đồ đối tượng thườngthường được sử dụng làm một thành phần của một biểu đồ cộng tác (collaboration),chỉ ra lối ứng xử động giữa một loạt các đối tượng
Hình 2.4: Biểu đồ đối tượng
Bộ phận dịch vụ tài khoản tiết kiệm Tài khoảntiết kiệm
Tài liệu
Khách hàng
Có ► 1 *
Sở hữu ▼ 1 3
1 *
▲ Có
1 *
▲ Có
:Car :Engine
:Wheel:Wheel
:Wheel
Trang 26Biểu đồ trạng thái (State Diagram)
Một biểu đồ trạng thái thường là một sự bổ sung cho lời miêu tả một lớp Nóchỉ ra tất cả các trạng thái mà đối tượng của lớp này có thể có, và những sự kiện(event) nào sẽ gây ra sự thay đổi trạng thái Một sự kiện có thể xảy ra khi một đốitượng tự gửi thông điệp đến cho nó - ví dụ như để thông báo rằng một khoảng thờigian được xác định đã qua đi – hay là một số điều kiện nào đó đã được thoả mãn Một
sự thay đổi trạng thái được gọi là một sự chuyển đổi trạng thái (State Transition) Mộtchuyển đổi trạng thái cũng có thể có một hành động liên quan, xác định điều gì phảiđược thực hiện khi sự chuyển đổi trạng thái này diễn ra
Biểu đồ trạng thái không được vẽ cho tất cả các lớp, mà chỉ riêng cho nhữnglớp có một số lượng các trạng thái được định nghĩa rõ ràng và hành vi của lớp bị ảnhhưởng và thay đổi qua các trạng thái khác nhau Biểu đồ trạng thái cũng có thể được
vẽ cho hệ thống tổng thể
Hình 2.5: Một ví dụ về biểu đồ trạng thái
Biểu đồ trình tự (Sequence Diagram)
Một biểu đồ trình tự chỉ ra một cộng tác động giữa một loạt các đối tượng.Khía cạnh quan trọng của biểu đồ này là chỉ ra trình tự các thông điệp (message) đượcgửi giữa các đối tượng Nó cũng chỉ ra trình tự tương tác giữa các đối tượng, điều sẽxảy ra tại một thời điểm cụ thể nào đó trong trình tự thực thi của hệ thống Các biểu
đồ trình tự chứa một loạt các đối tượng được biểu diễn bằng các đường thẳng đứng.Trục thời gian có hướng từ trên xuống dưới trong biểu đồ, và biểu đồ chỉ ra sự trao đổithông điệp giữa các đối tượng khi thời gian trôi qua Các thông điệp được biểu diễnbằng các đường gạch ngang gắn liền với mũi tên (biểu thị thông điệp) nối liền giữanhững đường thẳng đứng thể hiện đối tượng Trục thời gian cùng những lời nhận xétkhác thường sẽ được đưa vào phần lề của biểu đồ
Trang 27Hình 2.6: Ví dụ về một biểu đồ trình tự
Biểu đồ cộng tác (Collaboration Diagram)
Một biểu đồ cộng tác chỉ ra một sự cộng tác động, cũng giống như một biểu đồtrình tự Thường người ta sẽ chọn hoặc dùng biểu đồ trình tự hoặc dùng biểu đồ cộngtác Bên cạnh việc thể hiện sự trao đổi thông điệp (được gọi là tương tác), biểu đồcộng tác chỉ ra các đối tượng và quan hệ của chúng (nhiều khi được gọi là ngữ cảnh).Việc nên sử dụng biểu đồ trình tự hay biểu đồ cộng tác thường sẽ được quyết địnhtheo nguyên tắc chung sau: Nếu thời gian hay trình tự là yếu tố quan trọng nhất cầnphải nhấn mạnh thì hãy chọn biểu đồ trình tự; nếu ngữ cảnh là yếu tố quan trọng hơn,hãy chọn biểu đồ cộng tác Trình tự tương tác giữa các đối tượng được thể hiện trong
cả hai loại biểu đồ này
Hình 2.7: Ví dụ về biểu đồ cộng tác