Đề tài Xây dựng chương trình quản lý tour du lịch

- 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 .

doc84 trang | Chia sẻ: baoanh98 | Lượt xem: 1001 | Lượt tải: 0download
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:

  • docbaocao.aspx.doc
  • rarDEMO.rar