- Với tốc độ phát triển ngày càng tăng của mạng máy tính ,thì việc thiết kế và cài đặt các ứng dụng cho người dùng là rất cần thiết .Vì vậy ,ý tưởng quản lý tour du lịch trên mạng không phải là mới nhưng phần nào cũng giúp người sử dụng thuận tiện trong việc đăng ký tour.
- Việc ứng dụng các chương trình quản lý tour du lịch trên máy đơn hay bằng tay chỉ đáp ứng được một số vấn đề cơ bản về đăng ký tour ,chưa linh hoạt trong việc thiết kế tour và lập hóa đơn .Việc ứng dụng này đòi hỏi phải tốn nhiều thời gian ,tiền bạc.
- Với những kiến thức đã học được tại trường và bằng sự nổ lực của bản thân ,em đã hoàn thành đề tài “Chương trình quản lý tour du lịch”.
- Thông qua đề tài này ,em đã bước đầu đi sâu vào tìm hiểu hệ quản trị cơ sở dữ liệu SQL cũng như tìm hiểu về ASP.NET để ứng dụng vào đề tài .Tuy chưa hoàn toàn tận dụng hết những ưu điểm của hệ quản trị cơ sở dữ liệu SQL Server , ASP.NET nhưng những gì đã tìm hiểu và ứng dụng vào đề tài cũng cho em một số hiểu biết về hệ quản trị cơ sở dữ liệu SQL Server , ASP.NET nhằm đi sâu hơn nữa trong công việc tương lai của em .
84 trang |
Chia sẻ: baoanh98 | Lượt xem: 1111 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng chương trình quản lý tour du lịch, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
data. Trigger được tạo trên một bảng và kết hợp với các hành động cập nhật data (insert, update, or delete). Khi một trong những hành động này xuất hiện thì trigger tự động kích hoạt. Trigger dùng để cài đặt cho các ràng buộc toàn vẹn.
Đặc điểm của Trigger :
Một trigger có thể làm nhiều công việc khác nhau và có thể được kích hoạt bởi nhiều hơn một event nào như Update, Insert hay Delete và bên trong trigger ta sẽ viết code để giải quyết cho từng trường hợp.
Trigger không thể được tạo ra trên temporary hay system table.
Trigger chỉ có thể được kích hoạt một cách tự động bởi một trong các event Insert, Update, Delete mà không thể chạy manually được.
Có thể áp dụng trigger cho View.
Khi một trigger được kích hoạt thì data mới vừa được insert hay vừa mới được thay đổi sẽ được chứa trong Inserted table còn data mới vừa được delete được chứa trong Deleted table. Đây là 2 table tạm chỉ chứa trên memory và chỉ có giá trị bên trong trigger mà thôi ( nghĩa là chỉ nhìn thấy và được query trong trigger mà thôi). Ta có thể dùng thông tin trong 2 table này để so sánh data cũ và mới hoặc kiểm tra xem data mới vừa thay đổi có hợp lê trước khi commit hay roll back.
Tạo trigger :
Để tạo trigger trên bảng, chúng ta bảo đảm rằng bảng đó đã tồn tại. Đây là cú pháp câu lệnh tạo trigger :
CREATE TRIGGER trigger_name
ON table_name or view_name
FOR {INSERT | UPDATE | DELETE [, ...]}
AS Các câu lệnh sql
[RETURN]
Như vậy khi ta tạo ra một trigger ta phải chỉ rõ là tạo ra trigger trên table nào và được trigger khi nào Insert, Update hay Delete. Sau chử AS là các câu lệnh SQL xử lý công việc.
Bảng Inserted và Deleted:
Bảng Inserted và Deleted thật sự là hai vùng nhìn (view) của một nhật ký giao tác (transaction log) mà có cấu trúc giống như bảng mà trigger được tạo.
Khi câu lệnh này thực hiện thì một bản sao của các dòng đã được sửa đổi được lưu vào trong nhật ký cùng với một bản sao các dòng sau khi thay đổi. Những bản sao này luôn có sẵn cho một trigger dưới dạng bảng deleted và inserted.
Hàm Update():
Hàm này chỉ có trong trigger với hành động insert hoặc delete. Nó cho phép một trigger xác định liệu một cột đã có thay đổi bởi câu lệnh insert hoặc update hay chưa. Bằng cách kiểm tra như thế này mà trigger tránh được việc thực hiện tác vụ không cần thiết.
Xoá, thay thế trigger
Trigger không cho sữa đổi vì thế chúng ta phải xoá một đối tượng trước khi tạo ra một trigger khác có cùng tên, để xoá trigger chúng ta sử dụng câu lệnh :
DROP TRIGGER trigger_name
Trigger sẽ được xoá tự động khi bảng mà nó tham chiếu bị xoá.
Chúng ta không cần phải xóa trigger để thay thế nó, để thay thế một trigger cho một tác động trên bảng thì cần phải tạo mới trigger với một tên khác. Trigger củ sẽ bị thay thế bởi trigger mới và nếu nó không còn có trách nhiệm cho bất kỳ tác động nào nữa trên bảng thì nó sẽ tự động xoá.
STORED PROCEDURES :
ĐỊNH NGHĨA :
Stored Procedure là một nhóm câu lệnh Transact-SQL đã được biên dịch và chứa trong SQL Server dưới một tên nào đó và được xử lý như một đơn vị (chứ không phải nhiều câu SQL riêng lẻ). Stored proedure có thể được gọi từ Client, từ stored procedure khác hoặc từ Trigger.
TẠI SAO PHẢI DÙNG STORED PROCEDURE? :
Stored procedure cung cấp cho các ứng dụng cơ sở dữ liệu nhiều điểm thuận lợi qua việc thực thi các xử lý bó (batch) với các câu lệnh SQL lớn và phức tạp ngay tại Database Server:
Thực thi nhanh. Sau lần chạy đầu tiên, Stored procedures được lưu trong bộ nhớ do đó chúng không cần phải được phân tích lại, tối ưu hóa lại và biên dịch cho các lần gọi chúng sau đó.
Giảm thông xuất lưu thông trên mạng. Stored procedures có thể bao gồm hàng trăm các câu lệnh SQL khác nhau, nhưng có thể thực thi chỉ với một câu lệnh duy nhất. Điều này cho phép giảm kích thước các lời gọi từ Client đến Server.
Lập trình module. Procedures cung cấp một phương pháp để cắt các đoạn mã SQL dài dòng thành những đoạn mã ngắn gọn để dễ quản lý hơn.
CƠ CHẾ THỰC THI STORED PROCEDURES :
Stored Procedures làm cho toàn bộ hệ thống ứng dụng có hiệu suất cao vì các câu lệnh trong Stored Procedures chỉ được biên dịch và tối ưu một lần và được lưu trữ trong Database Server nên sự lưu thông trên mạng giảm. Khi Stored Procedures được thi hành lần đầu tiên thì Server phải có nhiệm vụ tối ưu và biên dịch nó. Sơ đồ tối ưu và biên dịch đó thì được lưu trong bộ nhớ cache và do đó nó luôn luôn ở trạng thái sẵn sàng khi có một lời gọi đến nó vào những lần sau.
Thực thi lần đầu
Thực thi lần sau
1. Định vị Stored Procedures trên đĩa và nạp vào bộ nhớ cache
1. Định vị Stored Procedures trong cache
2. Thay thế các giá trị cho tham số
2. Thay thế các giá trị cho tham số
3. Phát triển sơ đồ tối ưu
4. Biên dịch sơ đồ tối ưu
5. Thi hành từ cache
3. Thi hành từ cache
TẠO STORED PROCEDURES :
Để viết một Stored Procedures, ta cần phải cung cấp một Stored Procedures với tên duy nhất và sau đó là các câu lệnh SQL.
Cú pháp tổng quát:
CREATE PROC[EDURE]procedure_name [(parameter1,parameter2,)]
AS
Các câu lệnh SQL
[return[mã trạng thái]]
Các mã lệnh trong cặp dấu [] là tùy chọn (option). Tuy nhiên để có phong cách lập trình tốt ta nên có câu lệnh return kết thúc Stored Procedures.
Cú pháp tổng quát để thi hành procedure:
[EXEC[UTE]] Procedure_name[@param1=expression][,]
Xóa một Stored procedure:
DROP PROC[EDURE]procedure_name
Sử dụng mã trả về (return code) và tham số xuất (output parameter) trong Stored procedure. Giá trị trả về chỉ là các số nguyên – integer và tham số xuất với từ khóa output (từ khóa này cũng phải được sử dụng trong câu lệnh exec) sẽ được trả về trong dòng lệnh return.
Trong một stored procedure nếu có cả giá trị trả về và tham số xuất thì tham số xuất được ưu tiên trả về trước và phải hoàn tất thì mới tới giá trị mã được trả về.
Mã trạng thái (status code). SQL Server cung cấp bảng mã trạng thái sao cho người dùng xử lý lỗi trong stong ored procedure
Mã trạng thái
Ý nghĩa
0
Thành công
-1
Thiếu đối tượng tham chiếu
-2
Lỗi do sai phạm kiểu dữ liệu
-3
Xử lý bị deadlock
-4
Lỗi không được cho phép truy cập do bảo mật hoặc không có quyền.
-5
Lỗi cú pháp
-6
Lỗi do người dùng pha tạp (tự chế ra như user-defined datatype)
-7
Lỗi tài nguyên như hết bộ nhớ
-8
Các rối rắm bên trong hệ thống nhưng chưa có nguy hiểm (bug)
-9
Hệ thống hạn chế truy cập tới
-10
Lỗi bên trong hệ thống, nguy hiểm (bug)
-11
Lỗi bên trong hệ thống, nguy hiểm (bug)
-12
Bảng hoặc chỉ mục (index) bị hư hỏng
-13
Cơ sở dữ liệu bị hư
-14
Lỗi phần cứng
CURSORS TRONG STORED PROCEDURE :
Ta có thể khai báo cursors trong Stored Procedures (các cursors này được gọi là server cursor). Khi một Stored Procedures trả giá trị về (kết thúc) thì cursor tự động bị huỷ. Trong hình minh họa, nếu Stored Procedures được lồng nhau thì chúng có thể truy cập các cursors được khai báo trong Stored Procedures ở cấp cao hơn.
proc 1
declare curs-1
cursor as .
open curs-1
. proc 2
exec proc2 .
return ferch curs-1
.
declare curs-2
cursor as .
open curs-2
. proc 3
exec proc3 .
return ferch curs-1
.
ferch curs-2
.
return
Tại sao lại dùng cursor ?
Phần lớn các ứng dụng cơ sở dữ liệu, các lệnh SQL khả thi hành thường trả về nhiều hơn một dòng (record) cho nên các ứng dụng cần cursor.
Cách dùng các câu lệnh thao tác cursor.
Khai báo cursor :
Declare tên_cursor CURSOR
FOR câu_lệnh_select [For Update[Delete] OF tên_field ]
Mở cursor :
OPEN tên_cursor
Di chuyển con trỏ tới mẫu tin (record) kế tiếp và đọc giá trị hiện hành của nó:
FETCH [NEXT] FROM tên_cursor INTO danh_sách_biến
open
Fetch
Tên cursor
Data11
Data12
Data21
Data22
Database
Data31
Data32
Cập nhật bảng với cursor :
UPDATE tên_bảng SET field1 = value1,
field2 = value 2,
WHERE CURRENT OF tên_cursor
Xóa các trường hợp trong cursor hiện hành :
DELETE [FROM] tên_bảng WHERE CURRENT OF tên_cursor
Đóng cursor :
CLOSE tên_cursor
Hủy cursor :
DEALLOCATE tên_cursor
Chú thích :
@@FETCH_STATUS là một biến toàn cục của SQL Server có các giá trị sau :
Giá trị
Mô tả
0
Lệnh FETCH đã thành công
-1
Lệnh FETCH thực hiện thất bại
-2
Hàng được FETCH có lỗi
PHẦN 4 : KHẢO SÁT – PHÂN TÍCH – THIẾT KẾ
CÀI ĐẶT HỆ THỐNG
KHẢO SÁT :
HIỆN TRẠNG :
Một công ty du lịch cần quản lý tour du lịch .Hệ thống này gồm có :
Một khách hàng khi tham gia vào hệ thống thì có thể tham quan các địa điểm du lịch . Khách hàng có thể chọn tên tour,chương trình của tour,ngày khởi hành,sốngày ,số đêm,số lượng khách.Mỗi tour có thể di chuyển bằng nhiều phương tiện .Các loại phương tiện gồm có ba loại chính gồm xe ,tàu lửa, máy bay . Mỗi tour có thể được nghỉ ngơi tại một hay nhiều khách sạn .Khách hàng có thể chọn các loại hình du lịch khác nhau như : du lịch sinh thái , du lịch tìm hiểu , du lịch dã ngoại.
Khi khách hàng đăng ký tour thì phải nhập thông tin về khách hàng .Khách hàng đến thanh toán tại công ty.
Nhân viên của công ty chia làm ba loại :nhân viên thường , nhân viên quản trị ,nhân viên là giám đốc .Một nhân viên khi đăng nhập vào hệ thống với username và password sẽ có các chức năng khác nhau .Đối với nhân viên thường thì có chức năng xem thông tin về các tour .Đối với nhân viên quản trị thì có chức năng nhập , xem , xóa , sửa các tour đồng thời cũng có chức năng nhập thêm nhân viên mới .Đối với nhân viên là ban giám đốc thì có chức năng xem thống kê doanh thu và xem thông tin về nhân viên của mình .
NỘI DUNG :
Các công việc trong quản lý tour du lịch :
Thiết kế tour .
Lập hóa đơn .
Cho khách hàng đăng ký tour.
Thống kê tour theo định kỳ.
· Thống kê doanh thu theo quý.
· Thống kê doanh thu theo năm.
· Thống kê doanh thu theo tour.
MÔ TẢ YÊU CẦU :
CẬP NHẬT THÔNG TIN :
Thêm , xóa , sửa tour một cách dễ dàng nhanh chóng.
Thêm , xóa , sửa địa điểm một cách dễ dàng nhanh chóng.
Thêm , xóa , sửa khách sạn một cách dễ dàng nhanh chóng.
Thêm , xóa , sửa phương tiện một cách dễ dàng nhanh chóng.
Thêm , xóa , sửa nhân viên một cách dễ dàng nhanh chóng.
b) TÌM KIẾM THÔNG TIN :
Tìm kiếm tour theo tên tour ,ngày khởi hành một cách nhanh chóng.
Tìm kiếm các địa điểm du lịch theo tên địa điểm một cách nhanh chóng.
Chú ý : Sắp thứ tự theo các tiêu thức khác nhau (mã tour ,tên tour ,ngày khởi hành )
c) THỐNG KÊ THÔNG TIN :
Thống kê tour theo tên tour ,loại hình tour du lịch.
Thống kê doanh thu của tour theo định kỳ.
- Thống kê doanh thu theo quý.
- Thống kê doanh thu theo năm.
PHÂN TÍCH :
CHỨC NĂNG CỦA CÁC ĐỐI TƯỢNG :
Khách hàng :
Có các chức năng cũng như quyền thao tác đối với hệ thống quản lý tour du lịch qua Web Browser như sau :
Tham quan các địa điểm du lịch.
Đăng ký tour du lịch được hiển thị sẳn .
Xem các phương tiện ,khách sạn.
Xem danh sách phiếu đăng ký.
Nhân viên :
Có các chức năng cũng như quyền thao tác đối với hệ thống quản lý tour du lịch qua Web Browser như sau :
Thay đổi mật khẩu .
Xem thông tin các tour.
Đối với nhân viên thường :
Xem thông tin cá nhân của các nhân viên khác.
Lập hóa đơn cho tour
Đối với nhân viên quản trị hệ thống :
Thêm ,xóa ,sửa nhân viên khác.
Thêm ,xóa ,sửa nội dung và các thông tin liên quan đến tour.
Đối với nhân viên là ban giám đốc :
Xem bảng thống kê theo định kỳ.
Xem thông tin các nhân viên.
SƠ ĐỒ CHỨC NĂNG CỦA CÁC ĐỐI TƯỢNG :
KHÁCH HÀNG :
NHÂN VIÊN :
MÔ HÌNH QUAN NIỆM XỬ LÝ :
Sơ đồ ngữ cảnh :
Sơ đồ phân rã chức năng :
Mức 0 :
Mức 0 :
Mức 1 :
Mức 1 :
Mức 1 :
Mức 1 :
Sơ đồ thực thể kết hợp (ERD):
4. Xác định thực thể và quan hệ :
Phân loại các thực thể và thuộc tính :
Thực thể Khách hàng :
Khách hàng là một thực thể trong đó bao gồm các thông tin .
Tên thực thể : KHÁCH HÀNG
Tên viết tắt : KHACHHANG
Các thuộc tính của thực thể :
KHACHHANG(MAKH , HOTENKH , PASSWORD , DIACHI , DIENTHOAI , EMAIL)
Mỗi khách hàng được quản lý theo mã khách hàng . Mã khách hàng là duy nhất , vì vậy ta chọn mã khách hàng làm khóa chính . Khi có thay đổi về khách hàng thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Nhân viên :
Nhân viên là một thực thể trong đó bao gồm các thông tin .
Tên thực thể : NHÂN VIÊN
Tên viết tắt : NHANVIEN
Các thuộc tính của thực thể :
NHANVIEN(MANV , HOTENNV , PASSWORD , DIACHI , DIENTHOAI , LOAINV)
Mỗi nhân viên được quản lý theo mã nhân viên . Mã nhân viên là duy nhất , vì vậy ta chọn mã nhân viên là khóa chính . Khi có thay đổi về nhân viên thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Phương tiện :
Phương tiện là một thực thể trong đó bao gồm các thông tin
Tên thực thể : PHƯƠNG TIỆN
Tên viết tắt : PHUONGTIEN
Các thuộc tính của thực thể :
PHUONGTIEN(MAPT , TENPT)
Mỗi phương tiện được quản lý theo mã phương tiện . Mã phương tiện là duy nhất , vì vậy ta chọn mã phương tiện là khóa chính . Khi có sự thay đổi về phương tiện thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Khách sạn :
Khách sạn là một thực thể trong đó bao gồm các thông tin
Tên thực thể : KHÁCH SẠN
Tên viết tắt : KHACHSAN
Các thuộc tính của thực thể :
KHACHSAN(MAKS , TENKS , DIACHI , DIENTHOAI)
Mỗi khách sạn được quản lý theo mã khách sạn . Mã khách sạn là duy nhất , vì vậy ta chọn mã khách sạn là khóa chính . Khi có sự thay đổi về khách sạn thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Tour :
Tour là một thực thể trong đó bao gồm các thông tin
Tên thực thể : TOUR
Tên viết tắt : TOUR
Các thuộc tính của thực thể :
TOUR(MATOUR , TENTOUR , LOAITOUR , CHUONGTRINH , SONGAY , SODEM , GIA)
Mỗi tour quản lý theo mã tour . Mã tour là duy nhất , vì vậy ta mã tour là khóa chính . Khi có sự thay đổi về tour thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Chuyến đi :
Chuyến đi là một thực thể trong đó bao gồm các thông tin
Tên thưcï thể : CHUYẾN ĐI
Tên viết tắt : CHUYENDI
Các thuộc tính của thực thể :
CHUYENDI(MACD , TENCD , NGAYKHOIHANH , MATOUR , MANV)
Mỗi chuyến đi quản lý theo mã chuyến đi . Mã chuyến đi là duy nhất , vì vậy ta chọn mã chuyến đi làm khóa chính . Khi có sự thay đổi về chuyến đi thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Hóa đơn :
Hóa đơn là một thực thể trong đó bao gồm các thông tin
Tên thực thể : HÓA ĐƠN
Tên viết tắt : HOADON
Các thuộc tính của thực thể :
HOADON(MAHD , NGAYLAP , MAPDK)
Mỗi hóa đơn quản lý theo mã hóa đơn . Mã hóa đơn là duy nhất , vì vậy ta chọn mã hóa đơn làm khóa chính . Khi có sự thay đổi về hóa đơn thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Phiếu đăng ký :
Phiếu đăng ký là một thực thể trong đó bao gồm các thông tin
Tên thực thể : PHIẾU ĐĂNG KÝ
Tên viết tắt : PHIEUDANGKY
Các thuộc tính của thực thể :
PHIEUDANGKY(MAPDK , NGAYLAP , SOKHACH , MAKH , MACD)
Mỗi phiếu đăng ký quản lý theo mã phiếu . Mã phiếu là duy nhất , vì vậy ta chọn mã phiếu đăng ký làm khóa chính . Khi có sự thay đổi về phiếuđăng ký thì sẽ cập nhật và lưu lại những thuộc tính trên .
Thực thể Địa điểm :
Địa điểm là một thực thể trong đó bao gồm các thông tin
Tên thực thể : ĐỊA ĐIỂM
Tên viết tắt : DIADIEM
Các thuộc tính của thực thể :
DIADIEM(MADD , TENDD)
Mỗi địa điểm quản lý theo mã địa điểm . Mã địa điểm là duy nhất , vì vậy ta chọn mã địa điểm làm khóa chính . Khi có sự thay đổi về địa điểm thì sẽ cập nhật và lưu lại những thuộc tính trên.
Thực thể Phiếu góp ý :
Phiếu góp ý là một thực thể trong đó bao gồm các thông tin
Tên thực thể : PHIẾU GÓP Ý
Tên viết tắt : PHIEUGOPY
Các thuộc tính của thực thể :
PHIEUGOPY(MAPGY , MAKH , NGAY , NOIDUNG)
Mỗi phiếu góp ý quản lý theo mã phiếu góp ý . Mã phiếu góp ý là duy nhất , vì vậy ta mã phiếu góp ý làm khóa chính . Khi có sự thay đổi về phiếu góp ý thì sẽ cập nhật và lưu lại những thuộc tính trên .
Xác định các quan hệ :
Để xây dựng một cơ sở dữ liệu thì các thực thể này phải được kết nối chặt chẽ với nhau tạo thành một hệ thống thông tin liên quan .
_ Thực thể TOUR và CHUYENDI :
Xét hai tập thực thể trên ta thấy mỗi tour sẽ có một hay nhiều chuyến đi và mỗi chuyến đi chỉ thuộc một tour duy nhất . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Nhiều .
_ Thực thể TOUR và DIADIEM :
Xét hai tập thực thể trên ta thấy mỗi tour sẽ tham quan một hay nhiều địa điểm và mỗi địa điểm sẽ có nhiều tour tham quan . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Nhiều – Nhiều .
_ Thực thể KHACHHANG và PHIEUDANGKY :
Xét hai tập thực thể trên ta thấy mỗi khách hàng sẽ có một hay nhiều phiếu đăng ký và mỗi phiếu đăng ký chỉ thuộc một khách hàng duy nhất . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Nhiều .
_ Thực thể PHIEUDANGKY và HOADON :
Xét hai tập thực thể trên ta thấy mỗi phiếu đăng ký có thể không hoặc chỉ có một hóa đơn và mỗi hóa đơn chỉ thuộc một phiếu đăng ký duy nhất . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Một .
_ Thực thể KHACHHANG và PHIEUGOPY :
Xét hai tập thực thể trên ta thấy mỗi khách hàng sẽ có một hay nhiều phiếu góp ý và mỗi phiếu góp ý chỉ thuộc một khách hàng duy nhất . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Nhiều .
_ Thực thể NHANVIEN và CHUYENDI :
Xét hai tập thực thể trên ta thấy mỗi nhân viên có thể không hoặc tham gia nhiều chuyến đi và mỗi chuyến đi chỉ có một nhân viên tham gia duy nhất. Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Một .
_ Thực thể CHUYENDI và PHIEUDANGKY :
Xét hai tập thực thể trên ta thấy mỗi chuyến đi sẽ có một hay nhiều phiếu đăng ký và mỗi phiếu đăng ký chỉ thuộc một chuyến đi duy nhất . Như vậy với hai tập thực thể trên sẽ có sự liên kết với nhau theo quan hệ Một – Nhiều .
Mô tả chi tiết các thực thể :
Bảng NHANVIEN :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MANV
Mã nhân viên
nvarchar
Mỗi nhân viên có một mã số riêng để phân biệt nhân viên này với nhân viên khác
2
HOTENNV
Họ tên
nvarchar
3
PASSWORD
Password
nvarchar
4
DIACHI
Địa chỉ
nvarchar
5
DIENTHOAI
Điện thoại
nvarchar
6
LOAINV
Loại nhân viên
nvarchar
Bảng KHACHSAN :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAKS
Mã khách sạn
nvarchar
Mỗi khách sạn có một mã số riêng để phân biệt khách sạn này với khách sạn khác
2
TENKS
Tên khách sạn
nvarchar
3
DIACHI
Địa chỉ khách sạn
nvarchar
4
DIENTHOAI
Điện thọai khách sạn
nvarchar
Bảng CHUYENDI :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MACD
Mã chuyến đi
nvarchar
Mỗi chuyến đi có một mã số riêng để phân biệt chuyến đi này với chuyến đi khác
2
TENCD
Tên chuyến đi
nvarchar
3
NGAYKHOIHANH
Ngày khởi hành
Datetime
4
MATOUR
Mã tour
nvarchar
5
MANV
Mã nhân viên
nvarchar
Bảng PHIEUDANGKY:
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAPDK
Mã phiếu đăng ký
Int
Mỗi phiếu đăng ký có một mã số để phân biệt phiếu đăng ký này với phiếu đăng ký khác
2
NGAYLAP
Ngày lặp phiếu
Datetime
3
SOKHACH
Số khách
Int
4
MAKH
Mã khách hàng
Int
5
MACD
Mã chuyến đi
nvarchar
Bảng HOADON :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAHD
Mã hóa đơn
Int
Mỗi hóa đơn có một mã số riêng để phân biệt hóa đơn này với hóa đơn khác
2
NGAYLAP
Ngày lặp hóa đơn
Datetime
3
MAPDK
Mã phiếu đăng ký
Int
Bảng DIADIEMDEN :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MADD
Mã địa điểm
nvarchar
Mỗi địa điểm có một mã số riêng để phân biệt địa điểm này với địa điểm khác
2
TENDD
Tên địa điểm
nvarchar
Bảng CHITIETTOUR_DIADIEM :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MATOUR
Mã tour
nvarchar
2
MADD
Mã địa điểm
nvarchar
3
MAPT
Mã phương tiện
nvarchar
4
MAKS
Mã khách sạn
nvarchar
5
NGAY
Ngày du lịch
Int
Bảng TOUR :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MATOUR
Mã tour
nvarchar
Mỗi tour có một mã số riêng để phân biệt tour này với tour khác
2
TENTOUR
Tên tour
nvarchar
3
LOAITOUR
Loại tour
nvarchar
4
SONGAY
Số ngày
Int
5
SODEM
Số đêm
Int
6
GIA
Giá
float
7
CHUONGTRINH
Chương trình
nvarchar
Bảng KHACHHANG :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAKH
Mã khách hàng
Int
Mỗi khách hàng có một mã số riêng để phân biệt khách hàng này với khách hàng khác
2
HOTENKH
Họ tên khách hàng
nvarchar
3
DIACHI
Địa chỉ
nvarchar
4
DIENTHOAI
Điện thoại
nvarchar
5
EMAIL
Email
nvarchar
6
PASSWORD
Password
nvarchar
Bảng PHUONGTIEN :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAPT
Mã phương tiện
nvarchar
Mỗi phương tiện có một mã số riêng để phân biệt phương tiện này với phương tiện khác
2
TENPT
Tên phương tiện
nvarchar
Bảng PHIEUGOPY :
STT
Thuộc Tính
Diễn Giải
Kiểu
Ghi Chú
1
MAPGY
Mã phiếu góp ý
Int
Mỗi phiếu góp ý có một mã số riêng để phân biệt phiếu góp ý này với phiếu góp ý khác
2
MAKH
Mã khách hàng
Int
3
NGAY
Ngày viết
Datetime
4
NOIDUNG
Nội dung
nvarchar
Mô tả ràng buộc toàn vẹn :
_ Ràng buộc toàn vẹn miền giá trị :
· Thực thể CHUYENDI :
+ Phát biểu RBTV R1 : Mỗi chuyến đi phải có ngày khởi hành lớn hơn hoặc bằng ngày hiện tại
+ Biểu diễn R1 : " cdỴ CHUYENDI
cd.NGAYKHOIHANH >= Date()
Cuối "
+ Tầm ảnh hưởng :
R1
Thêm
Xóa
Sửa
CHUYENDI
+
-
+
· Thực thể TOUR :
+ Phát biểu RBTV R2 : Mỗi tour phải có số ngày đi lớn hơn 0.
+ Biểu diễn R2: " tỴTOUR
t.SONGAY >0
Cuối "
+ Tầm ảnh hưởng :
R2
Thêm
Xóa
Sửa
TOUR
+
-
+
+ Phát biểu RBTV R3 : Mỗi tour phải có giá lớn hơn 0
+ Biểu diễn R3: " tỴTOUR
t.GIA >0
Cuối "
+ Tầm ảnh hưởng :
R3
Thêm
Xóa
Sửa
TOUR
+
-
+
· Thực thể PHIEUDANGKY :
+ Phát biểu RBTV R4 : Mỗi phiếu đăng ký phải có số khách lớn hơn 0.
+ Biểu diễn R4: " pdk Ỵ PHIEUDANGKY
pdk.SOKHACH >0
Cuối "
+ Tầm ảnh hưởng :
R4
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
+ Phát biểu RBTV R5 : Mỗi phiếu đăng ký phải có ngày lặp phiếu lớn hơn hay bằng ngày hiện tại.
+ Biểu diễn R5: " pdk Ỵ PHIEUDANGKY
pdk.NGAYLAP >= Date()
Cuối "
+ Tầm ảnh hưởng :
R5
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
· Thực thể PHIEUGOPY :
+ Phát biểu RBTV R6 : Mỗi phiếu góp ý phải có ngày viết lớn hơn hay bằng ngày hiện tại.
+ Biểu diễn R5: " pgy Ỵ PHIEUGOPY
pgy.NGAY >= Date()
Cuối "
+ Tầm ảnh hưởng :
R6
Thêm
Xóa
Sửa
PHIEUGOPY
+
-
+
_ Ràng buộc toàn vẹn liên bộ :
· Thực thể KHACHHANG :
Thực thể này thể hiện thông tin về khách hàng như : mã khách hàng , họ tên khách hàng , địa chỉ
+ Phát biểu RBTV R7 : Mỗi khách hàng sẽ có mã khách hàng khác nhau
+ Biểu diễn R7: "kh1 Ỵ KHACHHANG ,
"kh2 Ỵ KHACHHANG
kh1.MAKH kh2.MAKH Þ kh1 kh2
Cuối "
+ Tầm ảnh hưởng :
R7
Thêm
Xóa
Sửa
KHACHHANG
+
-
+
· Thực thể NHANVIEN :
Thực thể này thể hiện thông tin về nhân viên như : mã nhân viên , họ tên nhân viên , địa chỉ
+ Phát biểu RBTV R8 : Mỗi nhân viên có mã số nhân viên khác nhau.
+ Biểu diễn R8 : "nv1 Ỵ NHANVIEN , "nv2 Ỵ NHANVIEN
nv1.MANV nv2.MANV Þ nv1 nv2
Cuối "
+ Tầm ảnh hưởng :
R8
Thêm
Xóa
Sửa
NHANVIEN
+
-
+
· Thực thể PHUONGTIEN :
Thực thể này thể hiện thông tin về phương tiện như : mã phương tiện , tên phương tiện
+ Phát biểu RBTV R9 : Mỗi phương tiện sẽ có mã phương tiện khác nhau
+ Biểu diễn R9 : "pt1 Ỵ PHUONGTIEN , "pt2 Ỵ PHUONGTIEN
pt1.MAPT pt2.MAPT Þ pt1 pt2
Cuối "
+ Tầm ảnh hưởng :
R9
Thêm
Xóa
Sửa
PHUONGTIEN
+
-
+
· Thực thể KHACHSAN :
Thực thể này thể hiện thông tin về khách sạn như : mã khách sạn , tên khách sạn , địa chỉ
+ Phát biểu RBTV R10 : Mỗi khách sạn sẽ có mã khách sạn khác nhau
+ Biểu diễn R10 : "ks1 Ỵ KHACHSAN , "ks2 Ỵ KHACHSAN ks1.MAKS ks2.MAKS Þ ks1 ks2
Cuối "
+ Tầm ảnh hưởng :
R10
Thêm
Xóa
Sửa
KHACHSAN
+
-
+
· Thực thể DIADIEM :
Thực thể này thể hiện thông tin về địa điểm như : mã địa điểm , tên địa điểm
+ Phát biểu RBTV R11 : Mỗi địa điểm có mã địa điểm khác nhau
+ Biểu diễn R11 : "dd1 Ỵ DIADIEM, "dd2 Ỵ DIADIEM dd1.MADD dd2.MADD Þ dd1 dd2
Cuối "
+ Tầm ảnh hưởng :
R11
Thêm
Xóa
Sửa
DIADIEM
+
-
+
· Thực thể PHIEUDANGKY :
Thực thể này thể hiện các thông tin về phiếu đăng ký như : mã phiếu , ngày lặp , số khách
+ Phát biểu RBTV R12 : Mỗi phiếu đăng ký sẽ có mã phiếu khác nhau
+ Biểu diễn R12 : "pdk1 Ỵ PHIEUDANGKY,
"pdk2ỴPHIEUDANGKY pdk1.MAPDK pdk2.MAPDK Þ pdk1 pdk2
Cuối "
+ Tầm ảnh hưởng :
R12
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
· Thực thể TOUR :
Thực thể này thể hiện các thông tin về tour như : mã tour , tên tour , số ngày
+ Phát biểu RBTV R13 : Mỗi tour sẽ có mã tour khác nhau
+ Biểu diễn R13 : "t1 Ỵ TOUR, "t2Ỵ TOUR t1.MATOUR t2. MATOUR Þ t1 t2
Cuối "
+ Tầm ảnh hưởng :
R13
Thêm
Xóa
Sửa
TOUR
+
-
+
· Thực thể HOADON :
Thực thể này thể hiện thông tin về hóa đơn như : mã hóa đơn , ngày lặp
+ Phát biểu RBTV R14 : Mỗi hóa đơn sẽ có mã hóa đơn khác nhau
+ Biểu diễn R14 : "hd1 Ỵ HOADON, "hd2 Ỵ HOADON
hd1.MAHD hd2. MAHD Þ hd1 hd2
Cuối "
+ Tầm ảnh hưởng :
R14
Thêm
Xóa
Sửa
HOADON
+
-
+
· Thực thể CHUYENDI :
Thực thể này thể hiện các thông tin về chuyến đi như : mã chuyến đi , ngày khởi hành
+ Phát biểu RBTV R15 : Mỗi chuyến đi sẽ có mã chuyến đi khác nhau
+ Biểu diễn R15 : "cd1 Ỵ CHUYENDI, "cd2Ỵ CHUYENDI cd1.MACD cd2. MACD Þ cd1 cd2
Cuối "
+ Tầm ảnh hưởng :
R15
Thêm
Xóa
Sửa
CHUYENDI
+
-
+
· Thực thể PHIEUGOPY :
Thực thể này thể hiện các thông tin về phiếu góp ý như : mã phiếu góp ý , nội dung
+ Phát biểu RBTV R16 : Mỗi phiế góp ý sẽ có mã phiếu góp ý khác nhau
+ Biểu diễn R16 : "pgy1 Ỵ PHIEUGOPY, "pgy2Ỵ PHIEUGOPY
pgy1.MAPGY pgy2. MAPGY
Þ pgy1 pgy2
Cuối "
+ Tầm ảnh hưởng :
R16
Thêm
Xóa
Sửa
PHIEUGOPY
+
-
+
Ràng buộc toàn vẹn về phụ thuộc tồn tại (khóa ngoại , tham chiếu) :
· Thực thể TOUR và CHUYENDI :
+ Phát biểu RBTV R17 : Sự tồn tại của một bộ trong thực thể TOUR ảnh hưởng đến sự tồn tại của một bộ trong thực thể CHUYENDI
+ Biểu diễn R17 : "pt Ỵ TOUR
$ cd Ỵ CHUYENDI :
cd.MATOUR = pt.MATOUR
Cuối $
Cuối "
+ Tầm ảnh hưởng :
R17
Thêm
Xóa
Sửa
CHUYENDI
+
-
+
TOUR
-
+
+
· Thực thể CHUYENDI và PHIEUDANGKY :
+ Phát biểu RBTV R18 : Sự tồn tại của một bộ trong thực thể CHUYENDI ảnh hưởng đến sự tồn tại của một bộ trong thực thể PHIEUDANGKY
+ Biểu diễn R18 : "cd Ỵ CHUYENDI
$ pdk Ỵ PHIEUDANGKY :
pdk.MACD = cd.MACD
Cuối $
Cuối "
+ Tầm ảnh hưởng :
R18
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
CHUYENDI
-
+
+
· Thực thể KHACHHANG và PHIEUDANGKY :
+ Phát biểu RBTV R19 : Sự tồn tại của một bộ trong thực thể KHACHHANG ảnh hưởng đến sự tồn tại của một bộ trong thực thể PHIEUDANGKY
+ Biểu diễn R19 : " pdk Ỵ PHIEUDANGKY
$ kh Ỵ KHACHHANG : kh.MAKH = pdk.MAKH
Cuối $
Cuối "
+ Tầm ảnh hưởng :
R19
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
KHACHHANG
-
+
+
Ràng buộc toàn vẹn về liên thuộc tính liên quan hệ :
Thực thể CHUYENDI và PHIEUDANGKY :
· Phát biểu RBTV R20 : Ngày lặp phiếu đăng ký phải nhỏ hơn ngày khởi hành
· Biểu diễn R20 : " pdk Ỵ PHIEUDANGKY , " cd Ỵ CHUYENDI $ pdk.NGAYLAP < cd.NGAYKHOIHANH
Cuối $
Cuối "
· Tầm ảnh hưởng :
R20
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
CHUYENDI
+
-
+
Thực thể HOADON và PHIEUDANGKY :
· Phát biểu RBTV R21 : Ngày lặp phiếu đăng ký phải nhỏ hơn ngày lặp hóa đơn
· Biểu diễn R21 : " pdk Ỵ PHIEUDANGKY , " hd Ỵ HOADON $ pdk.NGAYLAP < hd. NGAYLAP Cuối $
Cuối "
· Tầm ảnh hưởng :
R21
Thêm
Xóa
Sửa
PHIEUDANGKY
+
-
+
HOADON
+
-
+
Xác định phụ thuộc hàm :
· Thực thể KHACHHANG :
Khóa : {MAKH}
F= {MAKH Þ HOTENKH , DIACHI , DIENTHOAI , EMAIL , PASSWORD}
· Thực thể NHANVIEN :
Khóa : {MANV}
F= {MANV Þ HOTENNV , DIACHI , DIENTHOAI , LOAINV , PASSWORD}
· Thực thể PHUONGTIEN :
Khóa : {MAPT}
F= {MAPT Þ TENPT}
· Thực thể KHACHSAN :
Khóa : {MAKS}
F= {MAKS Þ TENKS , DIACHI , DIENTHOAI}
· Thực thể HOADON :
Khóa : {MAHD}
F= {MAHD Þ NGAYLAP}
· Thực thể PHIEUDANGKY :
Khóa : {MAPDK}
F= {MAPDK Þ NGAYLAP , SOKHACH}
· Thực thể TOUR :
Khóa : {MATOUR}
F= {MAPDK Þ TENTOUR,LOAITOUR , SONGAY , SODEM , GIA}
· Thực thể CHUYENDI :
Khóa : {MACD}
F= {MACD Þ TENCD, NGAYKHOIHANH}
· Thực thể PHIEUGOPY :
Khóa : {MAPGY}
F= {MAPGY Þ NGAY, NOIDUNG}
· Thực thể DIADIEM :
Khóa : {MADD}
F= {MADD Þ TENDD}
Chuẩn hóa các quan hệ :
Chuyển về dạng chuẩn 1 : (1NF : First Normal Form)
Quy tắc : Một quan hệ ở dạng chuẩn 1 nếu tất cả các thuộc tính của các thực thể đều là thuộc tính đơn .
Kết luận : Các quan hệ đều ở dạng chuẩn 1 , do đó lược đồ cơ sở dữ liệu thuộc dạng chuẩn 1 .
Chuyển về dạng chuẩn 2 : (2NF : Second Normal Form)
Quy tắc : Một quan hệ ở dạng chuẩn 2 (nếu nó ở dạng chuẩn 1) nếu tất cả các thuộc tính không khóa phụ thuộc hàm đầy đủ vào khóa .
Kết luận : Các quan hệ đã tạo đều thỏa mãn điều kiện dạng chuẩn 2 , do đó lược đồ cơ sở dữ liệu thuộc dạng chuẩn 2 .
Chuyển về dạng chuẩn 3 : (3NF : Third Normal Form)
Quy tắc : Một quan hệ ở dạng chuẩn 3 (nếu nó ở dạng chuẩn 2) và không có thuộc tính nào phụ thuộc bắc cầu vào khóa .
Kết luận : Các quan hệ đã tạo đều thỏa mãn điều kiện dạng chuẩn 3 , do đó lược đồ cơ sở dữ liệu thuộc dạng chuẩn 3 .
Từ điển dữ liệu :
Từ điển dữ liệu cho File :
Tên : Khách hàng
Mô tả : Lưu trữ các khách hàng trong hệ thống .
Format : File
= Mã khách hàng
+ Họ tên khách hàng
+ Địa chỉ
+ Điện thoại
+ Email
Tên : Nhân viên
Mô tả : Lưu trữ các khách hàng trong hệ thống .
Format : File
= Mã nhân viên
+ Họ tên nhân viên
+ Địa chỉ
+ Điện thoại
+ Password
+ Loại nhân viên
Tên : Phương tiện
Mô tả : Lưu trữ các phương tiện trong hệ thống .
Format : File
= Mã phương tiện
+ Tên phương tiện
+ Tên : Khách sạn
Mô tả : Lưu trữ các khách sạn trong hệ thống .
Format : File
= Mã khách sạn
+ Tên khách sạn
+ Địa chỉ khách sạn
+ Điện thoại khách sạn
+ Tên : Hóa đơn
Mô tả : Lưu trữ các hóa đơn trong hệ thống .
Format : File
= Mã hóa đơn
+ Ngày lặp
+ Tên : Phiếu đăng ký
Mô tả : Lưu trữ các phiếu đăng ký trong hệ thống .
Format : File
= Mã phiếu đăng ký
+ Ngày lặp
+ Số khách
+ Tên : Tour
Mô tả : Lưu trữ các tour trong hệ thống .
Format : File
= Mã tour
+ Tên tour
+ Số ngày
+ Số đêm
+ Chương trình
+ Loại tour
+ Giá
+ Tên : Chuyến đi
Mô tả : Lưu trữ các chuyến đi trong hệ thống .
Format : File
= Mã chuyến đi
+ Tên chuyến đi
+ Ngày khởi hành
Tên : Phiếu góp ý
Mô tả : Lưu trữ các phiếu góp ý trong hệ thống .
Format : File
= Mã phiếu góp ý
+ Ngày
+ Nội dung
Tên : Địa điểm đến
Mô tả : Lưu trữ các địa điểm đến trong hệ thống .
Format : File
= Mã địa điểm
+ Tên địa điểm
Từ điển dữ liệu cho các thành phần dữ liệu :
Tên : Mã khách hàng
Mô tả : Số thứ tự của khách hàng trong hệ thống .
Format : Int
Tên : Mã phương tiện
Mô tả : Số thứ tự của phương tiện trong hệ thống .
Format : nvarchar
Tên : Mã khách sạn
Mô tả : Số thứ tự của khách sạn trong hệ thống .
Format : nvarchar
+ Tên : Mã hóa đơn
Mô tả : Số thứ tự của hóa đơn trong hệ thống .
Format : nvarchar
+ Tên : Mã phiếu đăng ký
Mô tả : Số thứ tự của phiếu đăng ký trong hệ thống .
Format : Int
+ Tên : Mã tour
Mô tả : Số thứ tự của tour trong hệ thống .
Format : nvarchar
+ Tên : Mã chuyến đi
Mô tả : Số thứ tự của chuyến đi trong hệ thống .
Format : nvarchar
+ Tên : Mã nhân viên
Mô tả : Số thứ tự của nhân viên trong hệ thống .
Format : nvarchar
+ Tên : Mã phiếu góp ý
Mô tả : Số thứ tự của phiếu góp ý trong hệ thống .
Format : Int
+ Tên : Mã địa điểm
Mô tả : Số thứ tự của địa điểm trong hệ thống .
Format : nvarchar
Mô tả chi tiết chức năng xử lý :
ª Hỗ trợ khách hàng :
Chức năng đăng ký tour :
Dịch vụ đăng ký tour.
Table liên quan : tour , phiếu đăng ký.
Được thực thi khi khách hàng muốn đăng ký tour nào đó.
Chức năng thanh toán :
Thanh toán tiền theo tour.
Table liên quan : khách hàng , hóa đơn.
Được thực thi khi khách hàng muốn thanh toán tiền cho tour nào đó.
Chức năng tìm kiếm :
Tìm kiếm thông tin về tour.
Table liên quan : tour.
Được thực thi khi khách hàng muốn tìm kiếm thông tin của tour nào đó .
Hỗ trợ nhân viên :
Chức năng thêm :
Dùng để thêm các thông tin về tour .
Table liên quan : tour.
Được thực thi khi nhân viên muốn thêm một tour mới .
Chức năng xóa :
Dùng để xóa các thông tin về tour .
Table liên quan : tour
Được thực thi khi nhân viên muốn xóa một tour cũ .
Chức năng cập nhật :
Dùng để cập nhật các thông tin về tour .
Table liên quan : tour.
Được thực thi khi nhân viên muốn cập nhật thông tin một tour nào đó .
Chức năng thống kê :
Dùng để thống kê doanh thu theo loại tour , chuyến đi .
Table liên quan : tour , chuyến đi.
Được thực thi khi nhân viên muốn thống kê doanh thu của tour .
CÀI ĐẶT :
MÔ HÌNH QUAN NIỆM DỮ LIỆU :
CÀI ĐẶT TABLE :
/* Tạo table CHITIETTOUR_DIADIEM */
CREATE TABLE [dbo].[CHITIETTOUR_DIADIEM] (
[MATOUR] [nvarchar] (6) NOT NULL ,
[MADD] [nvarchar] (6) NOT NULL ,
[MAKS] [nvarchar] (6) NOT NULL ,
[MAPT] [nvarchar] (6) NOT NULL ,
[NGAY] [int] NULL
) ON [PRIMARY]
GO
/* Tạo table CHUYENDI */
CREATE TABLE [dbo].[CHUYENDI] (
[MACD] [nvarchar] (6) NOT NULL ,
[TENCD] [nvarchar] (20) NOT NULL ,
[NGAYKHOIHANH] [datetime] NOT NULL ,
[MATOUR] [nvarchar] (6) NOT NULL ,
[MANV] [nvarchar] (6) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table DIADIEMDEN */
CREATE TABLE [dbo].[DIADIEMDEN] (
[MADD] [nvarchar] (6) NOT NULL ,
[TENDD] [nvarchar] (20) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table HOADON */
CREATE TABLE [dbo].[HOADON] (
[MAHD] [int] IDENTITY (1, 1) NOT NULL ,
[NGAYLAP] [datetime] NOT NULL ,
[MAPDK] [int] NOT NULL
) ON [PRIMARY]
GO
/* Tạo table KHACHHANG */
CREATE TABLE [dbo].[KHACHHANG] (
[MAKH] [int] IDENTITY (1, 1) NOT NULL ,
[HOTENKH] [nvarchar] (40) NOT NULL ,
[DIACHI] [nvarchar] (50) NULL ,
[DIENTHOAI] [nvarchar] (12) NULL ,
[EMAIL] [nvarchar] (30) NULL ,
[PASSWORD] [nvarchar] (20) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table KHACHSAN */
CREATE TABLE [dbo].[KHACHSAN] (
[MAKS] [nvarchar] (6) NOT NULL ,
[TENKS] [nvarchar] (40) NOT NULL ,
[DIACHI] [nvarchar] (50) NULL ,
[DIENTHOAI] [nvarchar] (12) NULL
) ON [PRIMARY]
GO
/* Tạo table NHANVIEN */
CREATE TABLE [dbo].[NHANVIEN] (
[MANV] [nvarchar] (6) NOT NULL ,
[HOTENNV] [nvarchar] (40) NOT NULL ,
[LOAINV] [nvarchar] (15) NOT NULL ,
[PASSWORD] [nvarchar] (10) NOT NULL ,
[DIACHI] [nvarchar] (50) NULL ,
[DIENTHOAI] [nvarchar] (12) NULL
) ON [PRIMARY]
GO
/* Tạo table PHIEUDANGKY */
CREATE TABLE [dbo].[PHIEUDANGKY] (
[MAPDK] [int] IDENTITY (1, 1) NOT NULL ,
[NGAYLAP] [datetime] NOT NULL ,
[SOKHACH] [int] NOT NULL ,
[MAKH] [int] NOT NULL ,
[MACD] [nvarchar] (6) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table PHIEUGOPY */
CREATE TABLE [dbo].[PHIEUGOPY] (
[MAPGY] [int] IDENTITY (1, 1) NOT NULL ,
[MAKH] [int] NOT NULL ,
[NGAY] [datetime] NOT NULL ,
[NOIDUNG] [nvarchar] (2000) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table PHUONGTIEN */
CREATE TABLE [dbo].[PHUONGTIEN] (
[MAPT] [nvarchar] (6) NOT NULL ,
[TENPT] [nvarchar] (20) NOT NULL
) ON [PRIMARY]
GO
/* Tạo table TOUR */
CREATE TABLE [dbo].[TOUR] (
[MATOUR] [nvarchar] (6) NOT NULL ,
[TENTOUR] [nvarchar] (50) NOT NULL ,
[LOAITOUR] [nvarchar] (20) NOT NULL ,
[SONGAY] [int] NOT NULL ,
[SODEM] [int] NULL ,
[CHUONGTRINH] [text] NULL ,
[GIA] [float] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHITIETTOUR_DIADIEM] WITH NOCHECK ADD
CONSTRAINT [PK_CHITIET TOUR_DIADIEM] PRIMARY KEY NONCLUSTERED
(
[MATOUR],
[MADD]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHUYENDI] WITH NOCHECK ADD
CONSTRAINT [PK_CHUYENDI] PRIMARY KEY NONCLUSTERED
(
[MACD]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DIADIEMDEN] WITH NOCHECK ADD
CONSTRAINT [PK_DIADIEM] PRIMARY KEY NONCLUSTERED
(
[MADD]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[HOADON] WITH NOCHECK ADD
CONSTRAINT [PK_HOADON] PRIMARY KEY NONCLUSTERED
(
[MAHD]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[KHACHHANG] WITH NOCHECK ADD
CONSTRAINT [PK_KHACHHANG] PRIMARY KEY NONCLUSTERED
(
[MAKH]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[KHACHSAN] WITH NOCHECK ADD
CONSTRAINT [PK_KHACHSAN] PRIMARY KEY NONCLUSTERED
(
[MAKS]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[NHANVIEN] WITH NOCHECK ADD
CONSTRAINT [PK_NHANVIEN] PRIMARY KEY NONCLUSTERED
(
[MANV]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PHIEUDANGKY] WITH NOCHECK ADD
CONSTRAINT [PK_PHIEUDANGKY] PRIMARY KEY NONCLUSTERED
(
[MAPDK]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PHIEUGOPY] WITH NOCHECK ADD
CONSTRAINT [PK_PHIEUGOPY] PRIMARY KEY NONCLUSTERED
(
[MAPGY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PHUONGTIEN] WITH NOCHECK ADD
CONSTRAINT [PK_PHUONGTIEN] PRIMARY KEY NONCLUSTERED
(
[MAPT]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TOUR] WITH NOCHECK ADD
CONSTRAINT [PK_TOUR] PRIMARY KEY NONCLUSTERED
(
[MATOUR]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHITIETTOUR_DIADIEM] ADD
CONSTRAINT [FK_CHITIETTOUR_DIADIEM_DIADIEM] FOREIGN KEY
(
[MADD]
) REFERENCES [dbo].[DIADIEMDEN] (
[MADD]
),
CONSTRAINT [FK_CHITIETTOUR_DIADIEM_KHACHSAN] FOREIGN KEY
(
[MAKS]
) REFERENCES [dbo].[KHACHSAN] (
[MAKS]
),
CONSTRAINT [FK_CHITIETTOUR_DIADIEM_PHUONGTIEN] FOREIGN KEY
(
[MAPT]
) REFERENCES [dbo].[PHUONGTIEN] (
[MAPT]
),
CONSTRAINT [FK_CHITIETTOUR_DIADIEM_TOUR] FOREIGN KEY
(
[MATOUR]
) REFERENCES [dbo].[TOUR] (
[MATOUR]
)
GO
ALTER TABLE [dbo].[CHUYENDI] ADD
CONSTRAINT [FK_CHUYENDI_NHANVIEN] FOREIGN KEY
(
[MANV]
) REFERENCES [dbo].[NHANVIEN] (
[MANV]
),
CONSTRAINT [FK_CHUYENDI_TOUR] FOREIGN KEY
(
[MATOUR]
) REFERENCES [dbo].[TOUR] (
[MATOUR]
)
GO
ALTER TABLE [dbo].[HOADON] ADD
CONSTRAINT [FK_HOADON_PHIEUDANGKY] FOREIGN KEY
(
[MAPDK]
) REFERENCES [dbo].[PHIEUDANGKY] (
[MAPDK]
)
GO
ALTER TABLE [dbo].[PHIEUDANGKY] ADD
CONSTRAINT [FK_PHIEUDANGKY_CHUYENDI] FOREIGN KEY
(
[MACD]
) REFERENCES [dbo].[CHUYENDI] (
[MACD]
),
CONSTRAINT [FK_PHIEUDANGKY_KHACHHANG] FOREIGN KEY
(
[MAKH]
) REFERENCES [dbo].[KHACHHANG] (
[MAKH]
)
GO
ALTER TABLE [dbo].[PHIEUGOPY] ADD
CONSTRAINT [FK_PHIEUGOPY_KHACHHANG] FOREIGN KEY
(
[MAKH]
) REFERENCES [dbo].[KHACHHANG] (
[MAKH]
)
GO
GIAO DIỆN :
Sơ đồ khối :
Nhân viên yêu cầu nhập tour :
Kiểm tra tour có tồn tại?
Nhập thông tin về tour
Nhập tour vào bảng tour
Beginn
End
Yes
No
Nhân viên yêu cầu xem tour :
Kiểm tra tour có tồn tại?
Lấy dữ liệu từ database
Beginn
End
Yes
No
Xuất thông tin lên màn hình
Nhân viên yêu cầu xóa tour :
Kiểm tra tour có tồn tại?
Lấy dữ liệu từ database
Beginn
End
Yes
No
Xóa tour khỏi cơ sở dữ liệu
Nhân viên yêu cầu sửa tour :
Kiểm tra tour có tồn tại?
Lấy dữ liệu từ database
Beginn
End
Yes
No
Xóa tour khỏi cơ sở dữ liệu
Kiểm tra tour có tồn tại?
Lấy dữ liệu từ database
Beginn
End
Yes
No
Sửa tour và lưu vào cơ sở dữ liệu
Khách hàng xem tour :
Lấy dữ liệu từ database
Beginn
Lấy dữ liệu từ database
Beginn
End
Xuất thông tin lên màn hình
Khách hàng đăng ký tour :
Lấy dữ liệu từ database
Beginn
Lấy dữ liệu từ database
Beginn
End
Xuất bảng đăng ký
Nhập thông tin khách hàng
Lưu thông tin vào cơ sở dữ liệu
Một số màn hình giao diện :
STT
Tên màn hình
Mô tả
1
Trang chủ(MH01)
Trang giới thiệu về chương trình
2
MH02
Giới thiệu các chức năng của nhân viên
3
MH03
Giới thiệu các chức năng của khách hàng
4
MH04
Quảng cáo về địa điểm
5
MH05
Nhân viên đăng nhập
6
MH06
Giới thiệu các chức năng của nhân viên
7
MH07
Thêm khách sạn mới
8
MH08
Xem danh sách nhân viên
9
MH09
Lập hóa đơn
10
MH10
Thay đổi password
Một số màn hình giao diện :
· MH01 : Trang chủ :
Diễn giải chi tiết :
STT
Tên xử lý
Biến cố
Ý nghĩa
1
Khách hàng
Nhấn nút Khách hàng
Chuyển đến trang Khách hàng
2
Giới thiệu
Nhấn nút Giới thiệu
Chuyển đến trang Giới thiệu
3
Nhân viên
Nhấn nút Nhân viên
Chuyển đến trang Nhân viên
Ý nghĩa sử dụng :
Trang này cho phép người dùng tương tác được với các công việc chính mà họ muốn thực hiện với chương trình này .
Hình thức trình bày :
Các công việc được thể hiện trực quan qua hệ các nút nhấn : khách hàng ,giới thiệu , nhân viên.
· MH02 : Giới thiệu các chức năng của khách hàng :
Diễn giải chi tiết :
STT
Tên xử lý
Biến cố
Ý nghĩa
1
Xem tour
Nhấp chọn
Khách hàng xem tour và chọn tour mà mình thích
2
Góp ý
Nhấp chọn
Chuyển đến trang góp ý
3
Tìm kiếm
Nhấp chọn
Chuyển đến trang tìm kiếm
4
Phiếu đăng ký
Nhấp chọn
Chuyển đến trang danh sách các phiếu đăng ký
Ý nghĩa sử dụng :
Trang này cho phép người dùng tương tác được với các công việc chính mà họ muốn thực hiện với chương trình này .
Hình thức trình bày :
Các công việc được thể hiện trực quan qua hệ các hyperlink : Xem tour , Góp ý, Tìm kiếm ..
· Màn hình giới thiệu các chức năng của nhân viên:
Diễn giải chi tiết :
STT
Tên xử lý
Biến cố
Ý nghĩa
1
Địa điểm
Nhấp chọn
Chuyển đến trang địa điểm
2
Phương tiện
Nhấp chọn
Chuyển đến trang phương tiện
3
Khách sạn
Nhấp chọn
Chuyển đến trang khách sạn
4
Nhân viên
Nhấp chọn
Chuyển đến trang nhân viên
5
Tour
Nhấp chọn
Chuyển đến trang tour
6
Đổi password
Nhấp chọn
Chuyển đến trang đổi password
Ý nghĩa sử dụng :
Trang này cho phép người dùng tương tác được với các công việc chính mà họ muốn thực hiện với chương trình này .
Hình thức trình bày :
Các công việc được thể hiện trực quan qua hệ các hyperlink : Địa điểm , phương tiện,
· Màn hình khách hàng nhập phiếu đăng ký:
· Màn hình khách hàng tham quan các địa điểm:
· Màn hình nhân viên đăng nhập:
· Màn hình nhân viên thay đổi password:
· Màn hình nhân viên lập hóa đơn:
· Màn hình xem danh sách nhân viên :
PHẦN 5 : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Các kết quả thực hiện trong luận văn :
Để thực hiện đề tài này ,em đã tìm hiểu những vấn đề :
Hệ quản trị cơ sở dữ liệu SQL Server version 7.0.
Ngôn ngữ ASP.NET.
Mô hình Client / Server.
Cách trình bày ứng dụng :
Sau ba tháng thực hiện đề tài ,em đã đạt được những kết quả :
Phân tích chi tiết đề tài.
Thiết kế hoàn chỉnh các mô hình dữ liệu ,mô hình thực thể kết hợp ,mô hình quan hệ và giao diện màn hình.
Cài đặt cơ sở dữ liệu trên SQL Server.
Kiểm tra thử nghiệm.
Ứng dụng chạy tốt trên trình duyệt Internet Explorer 5.0.
Các vấn đề đã được thực hiện trong đề tài :
Sau ba tháng nổ lực tìm kiếm thông tin ,nghiên cứu sách vở ,em đã xây dựng ứng dụng “chương trình quản lý tour du lịch” thực hiện được một số chức năng sau :
Cho phép thực hiện đăng ký tour.
Cho phép lập hóa đơn.
Cho phép nhập ,xem ,xóa ,sửa ,tìm kiếm các thông tin liên quan.
Một số vấn đề còn hạn chế trong đề tài :
Mặc dù đã nổ lực rất nhiều nhưng do thời gian có hạn ,kiến thức còn hạn chế và các điều kiện khách quan khác nên đề tài vẫn chưa đáp ứng được toàn bộ các chức năng mà yêu cầu thực tế đưa ra .Vì thế chương trình còn có một số vấn đề hạn chế :
Chưa kết nối với các hệ thống quản lý khác như ngân hàng ,khách sạn
Chưa sử dụng hết khả năng bảo mật của SQL Server.
Giao diện chưa thân thiện với người sử dụng.
Chỉ cho đăng ký tour khởi hành từ Thành Phố Hồ Chí Minh .
Chưa thể lưu dữ liệu với số lượng lớn .
Hướng phát triển và mở rộng của đề tài :
Kết nối với một số hệ thống quản lý ngân hàng ,khách sạn
Cải tiến một số chức năng chưa hoàn thiện trong chương trình.
Cho đăng ký khởi hành từ mọi nơi dựa vào liên kết với các công ty khác .
Mở rộng một số chức năng quản lý như :quản lý về lương , nhân sự của công ty, quản lý về các phương tiện vận chuyển mà công ty có, các dịch vụ đi kèm theo tour và các chương trình khuyến mãi của tour.
Xây dựng và cài đặt cơ sở dữ liệu trên SQL Server thành hệ phân tán khi số lượng người dùng tham gia vào hệ thống quá đông và cơ sở dữ liệu quá lớn .
Kết luận :
Với tốc độ phát triển ngày càng tăng của mạng máy tính ,thì việc thiết kế và cài đặt các ứng dụng cho người dùng là rất cần thiết .Vì vậy ,ý tưởng quản lý tour du lịch trên mạng không phải là mới nhưng phần nào cũng giúp người sử dụng thuận tiện trong việc đăng ký tour.
Việc ứng dụng các chương trình quản lý tour du lịch trên máy đơn hay bằng tay chỉ đáp ứng được một số vấn đề cơ bản về đăng ký tour ,chưa linh hoạt trong việc thiết kế tour và lập hóa đơn .Việc ứng dụng này đòi hỏi phải tốn nhiều thời gian ,tiền bạc.
Với những kiến thức đã học được tại trường và bằng sự nổ lực của bản thân ,em đã hoàn thành đề tài “Chương trình quản lý tour du lịch”.
Thông qua đề tài này ,em đã bước đầu đi sâu vào tìm hiểu hệ quản trị cơ sở dữ liệu SQL cũng như tìm hiểu về ASP.NET để ứng dụng vào đề tài .Tuy chưa hoàn toàn tận dụng hết những ưu điểm của hệ quản trị cơ sở dữ liệu SQL Server , ASP.NET nhưng những gì đã tìm hiểu và ứng dụng vào đề tài cũng cho em một số hiểu biết về hệ quản trị cơ sở dữ liệu SQL Server , ASP.NET nhằm đi sâu hơn nữa trong công việc tương lai của em .
Mặc dù đã cố gắng và đầu tư rất nhiều nhưng do thời gian có hạn nên đề tài còn nhiều hạn chế và chương trình có thể chưa tối ưu ,đồng thời do kinh nghiệm lập trình trên môi trường lập trình Web chưa tốt nên giao diện có nhiều điểm chưa phù hợp về cách phân bố màu sắc ,hình ảnh
Em xin ghi nhận sự đóng góp quý báu của quý thầy cô và các bạn để chương trình hoàn thiện hơn.
Các file đính kèm theo tài liệu này:
- baocao.aspx.doc
- DEMO.rar