Chuyên đề Xây dựng Website hệ thống thông tin quản lý khách sạn Công Đoàn

Về phía công ty nhu cầu thiết kế một trang web là phải bao quát nhiều vấn đề, tuy nhiên đây chỉ là giai đoạn thực tập tốt nghiệp em không có đủ thời gian và với một lượng kiến thức chưa rộng về vấn đề lập trình mạng và chưa có đầy đủ thông tin từ phía khách sạn do vấn đề bảo mật thông tin nên em chưa thể thực hiện hết những mong muốn như ban đầu. Trong Website mặc dù giao diện là một phần quan trọng trong việc thiết kế Web, em đã cố gắng dùng những phần chuyên biệt để thiết kế Website này, và phần nào đã mang đến một giao diện thân thiện cho ngưòi sử dụng.

doc89 trang | Chia sẻ: aloso | Lượt xem: 1669 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng Website hệ thống thông tin quản lý khách sạn Công Đoàn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
của hệ thống thực tế và đạt được những mục tiêu đã được thiết lập ở giai đoạn trước. Mô hình lôgic của hệ thống mới sẽ sản sinh ra (nội dung của Outputs), nội dung các tệp dữ liệu (các tệp, các quan hệ giữa các tệp), các xử lý và hợp thức hoá sẽ phải thực hiện (các xử lý) và các dữ liệu sẽ được nhập vào (các Inputs). Mô hình lôgic sẽ phải được những người sử dụng xem xét và chuẩn y. Thiết kế lôgic gồm những công đoạn sau: 3.1 Thiết kế cơ sở dữ liệu Thiết kế cơ sở dữ liệu từ các thông tin đầu ra. Xác định các đầu ra. - Liệt kê toàn bộ các thông tin đầu ra. - Nội dung, khối lượng, tần suất và nơi nhận của chúng Xác định các tệp cần thiết cung cấp để dữ liệu cho việc tạo ra từng đầu ra. - Liệt kê các phần tử thông tin trên đầu ra. - Thực hiện việc chuẩn hoá các mức 3.2 Thiết kế xử lý Từ trên ta đã có các sơ đồ lô gic của xử lý. Tuy nhiên nó chỉ mới làm rõ những quan hệ có tính chất ngữ nghĩa của các dữ liệu và không quan tâm tới những yếu tố mang tính tổ chức như: Ai thực hiện xử lý ở đâu Khi nào Như thế nào. Phân tích tra cứu Dựa vào phần thiết kế cơ sở dữ liệu mà ta có thể tìm hiểu xem, bằng cách nào để có thể lấy được những thông tin đầu ra từ các tệp đã được thiết kế. Phân tích tra cứu một mặt giúp cho việc xem xét lại khâu thiết kế cơ sở dữ liệu đã hoàn thành chưa, nghĩa là đủ để sản sinh các đầu ra hay không, mặt khác nó phát triển một phần lôgic xử lý để tạo các thông tin ra. Ðối với mỗi đầu ra người ta tìm cách xác định các tệp cần thiết, thứ tự mà chúng được đọc và các xử lý được thực hiện trên các dữ liệu đã đọc. Kết quả của việc phân tích này sẽ được thực hiện thành sơ đồ phân tích tra cứu và đưa vào các phích xử lý trong từ điển hệ thống. Phân tích cập nhật Các đối tượng mà hệ thống thông tin quản lý thường xuyên thay đổi, vì vậy thông tin trong cơ sở dữ liệu cũng phải được cập nhật thường xuyên. Như vậy để trả lời câu hỏi là khi nào thì tiến hành cập nhật thì ta cần phải xác định được các nguyên nhân dẩn đến các cập nhật. 4. Ðề xuất các phương án của giải pháp Mô hình lô gic của hệ thống mới mô tả cái mà hệ thống này phải làm. Khi mô hình này được xác định và chuẩn y bởi người sử dụng, thì phân tích viên hoặc các nhóm phân tích viên phải nghiêng về các phương tiện để thực hiện hệ thống này. Ðó là việc xây dựng các phương án khác nhau để cụ thể hoá mô hình lôgic. Mổi một phương án là phác hoạ của một mô hình vật lý ngoài của một hệ thống nhưng chưa phải là một mô hình chi tiết. Tất nhiên là người sử dụng sẽ thấy dể dàng hơn khi lựa chọn trên những mô hình vật lý ngoài được xây dựng chi tiết nhưng chi phí cho việc tạo ra chúng là rất lớn. Ðể giúp những người sử dụng lựa chọn giải pháp vật lý thoả mãn tốt hơn các mục tiêu đã định ra trước đây, nhóm phân tích viên phải đánh giá các chi phí và lợi ích (hữu hình và vô hình) cả mỗi phương án và có những khuyến nghị cụ thể. Một báo cáo sẽ được trình lên những người sử dụng và một buổi trình bày sẽ được thực hiện. Những người sử dụng sẽ chọn lấy một phương án tỏ ra đáp ứng tốt nhất các yêu cầu của họ mà vẫn tôn trọng các rành buộc của tổ chức. Sau đây là các công đoạn của giai đoạn đề xuất các phương án giải pháp: - Xác định các ràng buộc tin học và các ràng buộc tổ chức. Mỗi một tổ chức, một cơ quan thì có những đặc điểm khác nhau. Chính vì vậy các hệ thống thông tin chỉ thành công khi đã được tính đến các ràng buộc về môi trường. Trên thực tế có những điều đúng cho mô hình lôgic những lại không đúng với mô hình vật lý. Một mô hình lô gic có thể được chấp nhận cho nhiều môi trường, nhưng mỗi môi trường cụ thể đòi hỏi một cách thức cụ thể hoá khác nhau. Ðó là vì những ràng buộc về tổ chức như việc phân chia trách nhiệm giữa các bộ phận, giữa nhân viên và cán bộ, tình hình tài chính, quy mô, doanh thu, số lượng giao dịch thực hiện, mức độ phan tán địa lý của tổ chức, trang thiết bị máy móc hiện có... - Xây dựngcác phương án của giải pháp. ở một môi trường cụ thể thì chúng ta có thể tìm đựơc một giải pháp tin học phù lợp nhất cho việc giải quyết các vấn đề đặt ra của hệ thống thông tin, tuy nhiên có thể tồn tại những tình huống thay đổi như: sự phân công trách nhiệm, thay đổi phương thức làm việc do đó cần phải xây dựng một số phượng án cho giải pháp. - Việc xây dựngphương án cho giải pháp bắt đầu từ hai khâu chính: xác định biên giới phần tin học hoá và xác định cách thức cho các xử lý. - Ðánh gía các phương án của giải pháp. 5. Thiết kế vật lý ngoài Giai đoạn này được tiến hành sau khi một phương án giải pháp được lựa chọn.Thiết kế vật lý bao gồm hai tài liệu kết quả cần có: Trước hết đó là một tài liệu bao chứa tất cả các đặc trưng của hệ thống mới sẽ cần cho việc thực hiện kỹ thuật; và tiếp đó là tài liệu dành cho người sử dụng và nó mô tả cả phần thủ công và cả những giao diện với phần tin học hóa. Những công đoạn chính của thiết kế vật lý ngoài là: - Lập kế hoạch thiết kế vật lý ngoài : Giai đoạn này phân tích viên phải lựa chọn phương tiện, khuôn dạng của các dòng vào/ ra, xác định cách thức hội thoại với phần tin học hoá vủa hệ thống và cách thức thực hiện các thủ tục thủ công. Phân bố thời gian và danh mục các sản phẩm. Ðó chính là việc lập kế hoạch cho giai đoạn này. - Thiết kế chi tiết các giao diện vào ra : Công đoạn này nhằm thiết kế khuôn dạng trình bày của các đầu ra và thể thức nhập tin cho người sử dụng. Công việc này rất quan trọng trên thực tế, vì những nhận xét đánh giá về hệ thống thông tin của người sử dụng là dựa vào những yếu tố vào/ra này. Họ có thể từ chối sử dụng vè những yếu kém ở đây cho dù hệ thống thông tin được đánh giá tốt ở những khía cạnh khác. Khuôn dạng vào/ ra không những đẹp, hợp lý mà còn phải giúp người sử dụng thực hiện tốt hơn, dể dàng hơn công việc của họ. - Thiết kế cách thức tương tác với phần tin học hoá : Có rất nhiều công việc khác nhau phải làm của một hệ thống thông tin như: cập nhật, in ấn báo cáo, tra cứu sơ sở dữ liệu, sao chép đảm bảo an toàn dữ liệu... Qua các giao tác người máy mà thao tác viên chỉ cho hệ thống biết phải làm gì và kiểm soát trật tự hiện thông tin ra trên màn hình và sản sinh các thông tin đầu ra.Vì vậy, hội thoại người máy phải được thiết kế cẩn thận, tạo điều kiện thuận lợi cho người sử dụng. Có 4 cách để thực hiện việc tương tác với hệ thống tin học hoá. Thiết kế viên cần phải biết và kết hợp tốt 4 cách này để tạo ra được những giao tác chuẩn cho hệ thống thông tin tin học hoá. + Giao tác bằng tập hợp lệnh + Giao tác bằng các phím trên bàn phím + Giao tác qua thực đơn + Giao tác dựa vào các biểu tượng + Thiết kế các thủ tục thủ công. + Chuẩn bị và trình bày báo cáo về thiết kế vật lý ngoài. IV. TỔNG QUAN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER 2000 1. Giới thiệu chung về SQL Server 2000 Vào năm 1980, Microsoft và các thành viên của nhóm Sybase đã sáng tạo ra một ngôn ngữ RDBMS rất linh hoạt được gọi là 'SQL Server'. Sau đó phát hành ver SQL Server 6.5. Phiên bản mới nhất hiện nay và vẫn được sử dụng phổ biến nhất đó chính là SQL Server 2000. SQL Server 2000 là một hệ quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS) ) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. SQL Server 2000 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server 2000 có thể kết hợp "ăn ý" với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server.... SQL Server có 7 editions: - Enterprise : Chứa đầy đủ các đặc trưng của SQL Server và có thể chạy tốt trên hệ thống lên đến 32 CPUs và 64 GB RAM. Thêm vào đó nó có các dịch vụ giúp cho việc phân tích dữ liệu rất hiệu quả (Analysis Services) - Standard : Rất thích hợp cho các công ty vừa và nhỏ vì giá thành rẻ hơn nhiều so với Enterprise Edition, nhưng lại bị giới hạn một số chức năng cao cấp (advanced features) khác, edition này có thể chạy tốt trên hệ thống lên đến 4 CPU và 2 GB RAM. - Personal: được tối ưu hóa để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản windows kể cả Windows 98. - Developer : Có đầy đủ các tính năng của Enterprise Edition nhưng được chế tạo đặc biệt như giới hạn số lượng người kết nối vào Server cùng một lúc.... Ðây là edition mà các bạn muốn học SQL Server cần có. Chúng ta sẽ dùng edition này trong suốt khóa học. Edition này có thể cài trên Windows 2000 Professional hay Win NT Workstation. - Desktop Engine (MSDE): Ðây chỉ là một engine chạy trên desktop và không có user interface (giao diện). Thích hợp cho việc triển khai ứng dụng ở máy client. Kích thước database bị giới hạn khoảng 2 GB. - Win CE : Dùng cho các ứng dụng chạy trên Windows CE - Trial: Có các tính năng của Enterprise Edition, download free, nhưng giới hạn thời gian sử dụng. Các thành phần quan trọng trong SQL Server 2000 SQL Server 2000 được cấu tạo bởi nhiều thành phần như Relational Database Engine, Analysis Service và English Query.... Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng. Relational Database Engine - Cái lõi của SQL Server Ðây là một engine có khả năng chứa data ở các quy mô khác nhau dưới dạng table và support tất cả các kiểu kết nối (data connection) thông dụng của Microsoft như ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC). Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ như sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off. Replication - Cơ chế tạo bản sao (Replica) Giả sử bạn có một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật. Một ngày đẹp trời bạn muốn có một cái database giống y hệt như thế trên một server khác để chạy báo cáo (report database) (cách làm này thường dùng để tránh ảnh hưởng đến performance của server chính). Vấn đề là report server của bạn cũng cần phải được cập nhật thường xuyên để đảm bảo tính chính xác của các báo cáo. Bạn không thể dùng cơ chế back up and restore trong trường hợp này. Thế thì bạn phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ được sử dụng để bảo đảm cho dữ liệu ở 2 database được đồng bộ (synchronized). Data Transformation Service (DTS) - Một dịch vụ chuyển dịch data vô cùng hiệu quả Nếu bạn làm việc trong một công ty lớn trong đó data được chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể như chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access....Bạn chắc chắn sẽ có nhu cầu di chuyển data giữa các server này (migrate hay transfer) và không chỉ di chuyển bạn còn muốn định dạng (format) nó trước khi lưu vào database khác, khi đó bạn sẽ thấy DTS giúp bạn giải quyết công việc trên dễ dàng như thế nào. Analysis Service Một dịch vụ phân tích dữ liệu rất hay của Microsoft. Dữ liệu (Data) chứa trong database sẽ chẳng có ý nghĩa gì nhiều nếu như bạn không thể lấy được những thông tin (Information) bổ ích từ đó. Do đó Microsoft cung cấp cho bạn một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi-dimension cubes) và kỹ thuật "đào mỏ dữ liệu" (data mining) English Query Một dịch vụ mà người Việt Nam chắc là ít muốn dùng. Ðây là một dịch vụ giúp cho việc query data bằng tiếng Anh "trơn" (plain English). Meta Data Service Dịch vụ này giúp cho việc chứa đựng và "xào nấu" Meta data dễ dàng hơn. Thế thì Meta Data là cái gì vậy? Meta data là những thông tin mô tả về cấu trúc của data trong database như data thuộc loại nào String hay Integer..., một cột nào đó có phải là Primary key hay không....Bởi vì những thông tin này cũng được chứa trong database nên cũng là một dạng data nhưng để phân biệt với data "chính thống" người ta gọi nó là Meta Data. Phần này chắc là bạn phải xem thêm trong một thành phần khác của SQL Server sắp giới thiệu sau đây là SQL Server Books Online vì không có bài nào trong loạt bài này nói rõ về dịch vụ này cả. SQL Server Books Online Cho dù bạn có đọc các sách khác nhau dạy về SQL server thì bạn cũng sẽ thấy books online này rất hữu dụng và không thể thiếu được( cho nên Microsoft mới hào phóng đính kèm theo SQL Server). SQL Server Tools Ðây là một bộ đồ nghề của người quản trị cơ sở dữ liệu (DBA ). Ðầu tiên phải kể đến Enterprise Manager. Ðây là một công cụ cho ta thấy toàn cảnh hệ thống cơ sở dữ liệu một cách rất trực quan. Nó rất hữu ích đặc biệt cho người mới học và không thông thạo lắm về SQL. Kế đến là Query Analyzer : Ðối với một DBA giỏi thì hầu như chỉ cần công cụ này là có thể quản lý cả một hệ thống database mà không cần đến những thứ khác. Ðây là một môi trường làm việc khá tốt vì ta có thể đánh bất kỳ câu lệnh SQL nào và chạy ngay lập tức đặc biệt là nó giúp cho ta debug mấy cái stored procedure dễ dàng. Công cụ thứ ba cần phải kể đến là 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ệc kiểm soát hoạt động của SQL Server. Ngoài một số công cụ trực quan như trên chúng ta cũng thường hay dùng osql và bcp (bulk copy)  trong command prompt. 2. Giới Thiệu Sơ Lược Về Transact SQL (T-SQL) Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL Server khác với P-SQL (Procedural-SQL) dùng trong Oracle. Chúng được chia làm 3 nhóm: 2.1 Data Definition Language (DDL): Ðây là những lệnh dùng để quản lý các thuộc tính của một database như định nghĩa các hàng hoặc cột của một table, hay vị trí data file của một database...thường có dạng Create object_Name Alter object_Name Drop object_Name Trong đó object_Name có thể là một table, view, stored procedure, indexes... Lệnh Alter sau đây cho phép ta thay đổi định nghĩa của một table như thêm(hay bớt) một cột hay một Constraint...Trong ví dụ này ta sẽ thêm cột Lệnh Drop sau đây sẽ hoàn toàn xóa table khỏi database nghĩa là cả định nghĩa của table và data bên trong table đều biến mất (khác với lệnh Delete chỉ xóa data nhưng table vẫn tồn tại). 2.2 Data Control Language (DCL) Ðây là những lệnh quản lý các quyền truy cập lên từng object (table, view, stored procedure...). Thường có dạng sau: Grant Revoke Deny Ví dụ: Lệnh sau sẽ cho phép user trong Public Role được quyền Select đối với table Customer trong database Northwind (Role là một khái niệm giống như Windows Group sẽ được bàn kỹ trong phần Security) USE Northwind GRANT SELECT ON Customers TO PUBLIC 2.3. Manipulation Language (DML) Ðây là những lệnh phổ biến dùng để xử lý data như Select, Update, Insert, Delete Ví dụ: Select USE Northwind SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr') ORDER BY ContactName Insert USE Northwind INSERT INTO Territories VALUES (98101, 'Seattle', 2) 3. Các lệnh nâng cao trong SQL Server 2000 Trong phần này chúng ta sẽ đào sâu một số câu lệnh nâng cao như SELECT, INSERT... Có thể nói hầu như ai cũng biết qua câu lệnh căn bản kiểu như "SELECT * FROM TABLENAME WHERE..." nhưng có thể có nhiều người không biết đến những tính chất nâng cao của nó. Cú pháp đầy đủ của một câu lệnh SELECT rất phức tạp tuy nhiên ở đây chỉ trình bày những nét chính của lệnh này mà thôi: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] Chúng ta sẽ lần lượt nghiên cứu từng clause (mệnh đề) trong câu lệnh này. SELECT Clause Sau keyword (từ khóa) SELECT ta sẽ có một danh sách các cột mà ta muốn select được cách nhau bằng dấu ",". Có 3 Keywords cần nhấn mạnh trong phần SELECT. Distinct : Khi có keyword này vào thì sẽ cho kết quả các cột không trùng nhau. Ví dụ trong Orders table của Norwind database (database mẫu di kèm với SQL Server) chứa giá trị trùng lập (duplicate value) trong cột ShipCity. Nếu ta muốn select một danh sách ShipCity trong đó mỗi city chỉ xuất hiện một lần trong kết quả nhận được ta dùng như sau: SELECT DISTINCT ShipCity, ShipRegion FROM Orders ORDER BY ShipCity Top n : Nếu ta muốn select n hàng đầu tiên mà thôi ta có thể dùng Top keyword. Nếu có thêm ORDER BY thì kết quả sẽ được order trước sau đó mới select. Chúng ta cũng có thể select số hàng dựa trên phần trăm bằng cách thêm Keyword Percent vào. Ví dụ sau sẽ select 10 hàng đầu tiên theo thứ tự: SELECT DISTINCT TOP 10 ShipCity, ShipRegion FROM Orders ORDER BY ShipCity As : Ðôi khi chúng ta muốn cho SELECT statement dễ đọc hơn một chút ta có thể dùng một alias (tức là từ thay thế hay từ viết tắt) với keyword As hay không có keyword As: table_name As table_alias  hay table_name table_alias. Ví dụ: USE pubs SELECT p.pub_id, p.pub_name AS PubName FROM publishers AS p Ngoài ra trong Select list ta có thể select dưới dạng một expression như sau: SELECT FirstName + ' ' + LastName AS "Employee Name", IDENTITYCOL AS "Employee ID", HomePhone, Region FROM Northwind.dbo.Employees ORDER BY LastName, FirstName ASC Trong ví dụ trên ta select cột "Employee Name" là sản phẩm ghép lại của cột FirstName và LastName được cách nhau bằng một khoảng trắng. Một  giá trị thuộc loại identity để làm cột "Employee ID". Kết quả sẽ được sắp theo thứ tự từ nhỏ tới lớn (ASC) (còn DESC là từ lớn tới nhỏ) trong đó cột LastName được sắp trước rồi mới tới cột FirstName. The INTO Clause INTO Clause cho phép ta select data từ một hay nhiều table sau đó kết quả sẽ được insert vào một table mới. Table này được tạo ra do kết quả của câu lệnh SELECT INTO. Ví dụ: SELECT FirstName, LastName INTO EmployeeNames FROM Employers Câu lệnh tên sẽ tạo ra một table mới có tên là EmployeeNames với 2 cột là FirstName và LastName sau đó kết quả select được từ table Employers sẽ được insert vào table mới này. Nếu table EmployeeNames tồn tại SQL Server sẽ báo lỗi. Câu lệnh này thường hay được sử dụng để select một lượng data lớn từ nhiều table khác nhau vào một table mới (thường dùng cho mục đích tạm thời (temporary table)) mà khỏi phải thực thi câu lệnh Insert nhiều lần. Một cách khác cũng select data từ một hay nhiều table và insert vào một table khác là dùng "Insert Into...Select...". Nhưng câu lệnh này không tạo ra một table mới. Nghĩa là ta table đó phải tồn tại trước. Ví dụ: INSERT INTO EmployeeNames SELECT FirstName, LastName FROM Employers Chú ý là không có chữ "Value" trong câu Insert này. The GROUP BY and HAVING Clauses GROUP BY dùng để tạo ra các giá trị tổng (aggregate values) cho từng hàng trong kết quả select được. Chỉ có một hàng cho từng giá trị riêng biệt (distinct) của từng cột. Các cột được select đều phải nằm trong GROUP BY Clause. Hãy xem ví dụ phức tạp sau: SELECT OrdD1.OrderID AS OrderID, SUM(OrdD1.Quantity) AS "Units Sold", SUM(OrdD1.UnitPrice * OrdD1.Quantity) AS Revenue FROM [Order Details] AS OrdD1 WHERE OrdD1.OrderID in (SELECT DISTINCT OrdD2.OrderID FROM [Order Details] AS OrdD2 WHERE OrdD2.UnitPrice > $100) GROUP BY OrdD1.OrderID HAVING SUM(OrdD1.Quantity) > 100 Trong ví dụ trên đầu tiên ta select những order riêng biệt (distinct) từ Order Details table với giá > 100. Sau đó tiếp tục select OrderID, "Units Sold", Revenue từ kết quả trên trong đó "Units Sold" và Revenue là những aggregate columns (cho giá trị tổng một cột của những hàng có cùng OrderID). HAVING Clause đóng vai trò như một filter dùng để lọc lại các giá trị cần select mà thôi. HAVING Clause thường đi chung với GROUP BY mặc dù có thể xuất hiện riêng lẻ. UNION Uninon keyword có nhiệm vụ ghép nối kết quả của 2 hay nhiều queries lại thành một kết quả. Ví dụ: Giả sử có table1(ColumnA varchar(10), ColumnB  int) và table2(ColumnC varchar(10), ColumnD  int). Ta muốn select data từ table1 và ghép với data từ table2 để tạo thành một kết quả duy nhất ta làm như sau: SELECT * FROM Table1 UNION ALL SELECT * FROM Table2 Nếu không có keyword ALL thì những hàng giống nhau từ 2 table sẽ chỉ xuất hiện một lần trong kết quả. Còn khi dùng ALL thì các hàng trong 2 table đều có trong kết quả bất chấp việc lập lại. Khi Dùng Union phải chú ý hai chuyện: số cột select ở 2 queries phải bằng nhau và data type của các cột tương ứng phải compatible (tương thích). Using JOINS Có các loại Join sau : Inner Join, Left Outer Join, Right Outer Join, Full Outer Join - Inner Joins Dùng Inner Join để select data từ 2 hay nhiều tables trong đó giá trị của các cột được join phải xuất hiện ở  cả 2 tables tức là phần gạch chéo trên hình. Ví dụ: SELECT t.Title, p.Pub_name FROM Publishers AS p INNER JOIN Titles AS t ON p.Pub_id = t.Pub_id ORDER BY Title ASC - Left Outer Joins Dùng Left Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ nhất và không tồn tại bên table thứ hai sẽ được select cộng với các giá trị của các cột được inner join. Số cột select được sẽ bằng với số cột của table thứ nhất. Tức là phần tô màu đỏ trên hình.  Ví dụ: USE Pubs SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a LEFT OUTER JOIN Publishers p ON a.City = p.City ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC - Right Outer Joins Dùng Right Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ hai và không tồn tại bên table thứ nhất sẽ được select cộng với các giá trị của các cột được inner join. Số cột select được sẽ bằng với số cột của table thứ hai. Tức là phần tô màu đỏ trên hình.  Ví dụ: USE Pubs SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a RIGHT OUTER JOIN Publishers p ON a.City = p.City ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC - Full Outer Joins Dùng Full Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ nhất và thứ hai đều được chọn các giá trị bên hai table bằng nhau thì chỉ lấy một lần. Tức là phần tô màu đỏ trên hình.  Ví dụ: USE Pubs SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a FULL OUTER JOIN Publishers p ON a.City = p.City ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC - Cross Joins Dùng Cross Join ghép data từ hai table trong đó số hàng thu được bằng với số hàng của table thứ nhất nhân với số hàng của table thứ hai.  Ví dụ: USE pubs SELECT au_fname, au_lname, pub_name FROM authors CROSS JOIN publishers WHERE authors.city = publishers.city ORDER BY au_lname DESC V. TỔNG QUAN VỀ ASP (ACTIVE SERVER PAGE) 1. Giới thiệu ngôn ngữ lập trình web động ASP Các website thuở ban đầu chỉ bao gồm các trang web tĩnh dưới dạng các file HTML, tất cả những gì cần hiển thị trên trang web thì người thiết kế phải tạo sẵn trên trang đó. Các trang web tĩnh có đuôi là .htm hoặc .html Chẳng hạn muốn tạo một trang web có hiển thị chữ “Hello” với màu chữ đỏ người ta viết file index.html với nội dung như sau: index Hello Trang web sau đó sẽ được lưu trên Web Server. Khi người dùng muốn xem trang web này họ sẽ dùng trình duyệt gửi một yêu cầu đến server bằng cách gõ vào địa chỉ URL ví dụ : Lúc này Web Server nhận được yêu cầu sẽ tìm trong kho dữ liệu của nó trang web index.html tương ứng rồi gửi về cho client, sau đó trang web này sẽ được hiển thị ra bởi trình duyệt. Đó là cách hoạt động của web tĩnh. Cách hoạt động của web tĩnh Dễ dàng thấy rằng trang Result.htm không thể soạn thảo sẵn được vì ứng với mỗi username mà người dùng nhập vào, trang này có nội dung khác nhau. Nghĩa là các trang web tĩnh không có khả năng tương tác với người dùng. Trong thực tế có rất nhiều trường hợp chúng ta thường gặp trong thế giới web đòi hỏi sự tương tác mà web tĩnh không thể giải quyết được ( chat, forums, web mail, trang tin tức, giỏ hàng, thông tin thời tiết từng ngày, tỷ giá ngoại tệ hàng ngày) Để giải quyết vấn đề này người ta sử dụng các ngôn ngữ lập trình web để hỗ trợ sự tương tác giữa client và server. Chúng là những file có chứa các mã lập trình, có thể tạo ra các trang web động, cho phép trả về cho client trang web có nội dung có thể thay đổi một cách linh động ứng với những ngữ cảnh cụ thể, thu thập và phản hồi với thông tin mà người dùng gửi lên server (thông qua form hay URL), truy cập dữ liệu trong database... Một số ngôn ngữ lập trình web động phổ biến gồm ASP, PHP, Java, .net ... ASP (Active Server Pages) là ngôn ngữ lập trình web được viết bởi hãng Microsoft, rất phổ biến trên hệ điều hành Microsoft Windows. Các trang web viết bằng ngôn ngữ này có phần mở rộng là .asp (ví dụ HelloWorld.asp) thay vì .htm hay .html. Nội dung file ASP về cơ bản rất giống file Html bình thường, nó bao gồm các cú pháp html trộn lẫn các mã lập trình ASP (còn gọi là các script, được viết bằng VBScript hay JavaScript). Các Script trong ASP thực thi trên server. Có thể nói trang ASP là sự kết hợp các thẻ html, các script và các ActiveX Component. Script có thể trộn lẫn giữa các thẻ html và nằm trong cặp dấu 2. Cài đặt và chạy ứng dụng ASP đầu tiên Để bắt đầu chạy một website viết bằng ngôn ngữ ASP đầu tiên chúng ta thực hiện các bước sau: Cài đặt web server IIS ( ở phần trên) và start IIS Cấu hình cho website bằng cách tạo Virtual Directory trên Web Server Viết các file ASP và save vào thư mục đã được cấu hình cho website trên server Dùng trình duyệt (như Internet Explorer) trên client yêu cầu file ASP và hiển thị kết quả trả về. 3. Tóm tắt các cú pháp VBScript Mã lệnh ASP có thể viết bằng VBScript hoặc JavaScript (đọc thêm tài liệu về ngôn ngữ này). Các script của ASP thực thi trên server và nằm trong cặp dấu . Bên trong có thể chứa các biểu thức, hàm, toán tử, lệnh hợp lệ của ngôn ngữ Script tương ứng. Ở đây chúng ta tìm hiểu vắn tắt cách sử dụng ASP để lập trình web động bằng VBScript. 3.1 Response.write Để gửi nội dung về cho trình duyệt ta dùng lệnh Response.write hoặc có thể viết ngắn gọn hơn 3.2 Biến Biến dùng để lưu trữ thông tin. Biến có phạm vi cục bộ, nếu nó được khai báo bên trong 1 hàm hay thủ tục thì nó chỉ có tác dụng trong hàm hay thủ tục đó, nếu nó khai báo trong phạm vi toàn trang ASP thì tác dụng của nó sẽ có phạm vi trong toàn trang ASP, tuy nhiên không có tác dụng trong trang ASP khác. Ví dụ ở trang Hello.asp ta có một biến x có giá trị là 3, trang Index.asp ta dùng lệnh thì sẽ không ra kết qủa là 3 vì biến x của trang Hello.asp không được hiểu trong trang Index.asp. Tương tự như vậy khi một biến được khai báo trong 1 hàm, sẽ không có tác dụng ở bên ngoài hàm đó. Biến được khai báo và sử dụng bên trong trang asp nào dùng nó. <% Dim x ‘khai báo biến, không bắt buộc x=3 Response.write x %> Biến không bắt buộc phải khai báo. Trong asp không khai báo kiểu của biến. Asp sẽ căn cứ vào việc sử dụng biến mà quyết định xem nên xử lý biến đó như là kiểu gì. <%Dim a, b a=”Hello” ‘a là một biến kiểu chuỗi For b=1 to 10 ‘b là một biến kiểu số nguyên Response.write b Next%> Để có thể kiểm soát chính xác một biến theo kiểu mình mong muốn, chúng ta dùng các hàm chuyển đổi kiểu. Để định nghĩa một biến có phạm vi sử dụng trong nhiều trang ASP của ứng dụng Web, ta dùng biến session và application (xem đối tượng session và application) 3.3 Mảng Mảng dùng để lưu trữ dữ liệu theo một dãy các phần tử. <% dim y(5) ‘khai báo mảng 6 phần tử đánh chỉ số từ 0 đến 5 y(0)=2 y(1)=13 response.write y(0) response.write y(1) %> 3.4 Ghép chuỗi Để ghép các chuỗi với nhau ta dùng dấu & <%Dim a, b A=”Cộng hòa xã hội chủ nghĩa Việt Nam” B=”Độc lập Tự do Hạnh phúc” Response.write a&b %> 3.5 Hàm có sẵn VBScript hỗ trợ sẵn một số hàm cơ bản. Ví dụ hàm “now”sau đây sẽ trả về thời gian trên server - Các hàm chuyển đổi kiểu : Các hàm này cho phép chuyển đổi kiểu dữ liệu Cdate: Chuyển sang kiểu ngày tháng <%Dim a, b a=”22/1/2004” ‘a đang được hiểu là một chuỗi b=Cdate(a) ‘chuyển chuỗi a sang đúng kiểu ngày tháng %> Cint: Chuyển sang kiểu Integer <% Dim a,b a=”3” b=cint(a) %> Cstr: Chuyển sang kiểu string <% Dim a,b a=3 b=Cstr(a) %> Các hàm khác : Cbyte, Cdbl,CSng, Cbool, Ccur, - Các hàm format Các hàm này cho phép định dạng dữ liệu FormatDateTime FormatCurrency FormatNumber FormatPercent - Các hàm toán học Int: lấy phần nguyên của một số <% Dim x=14.9 Y=Int(x) ‘kết quả y=14 %> Các hàm khác : Abs, Atn, Cos, Exp, Fix, Hex, Log, Oct, Rnd, Randomize, Round, Sin, Sqr, Tan - Các hàm thao tác với chuỗi Len: Lấy chiều dài chuỗi <%dim a,b a=”Cộng hòa xã hội chủ nghĩa Việt Nam” b=len(a) %> Ucase, Lcase: Chuyển chữ hoa thành chữ thường và ngược lại <%dim a,b,c,d a=”hello” b=Ucase(a) ‘b=”HELLO” c=”GOODBYE” d=Lcase(c) ‘d=”goodbye” %> Ltrim, Rtrim, Trim: cắt bỏ các khoảng trắng thừa <% dim a,b,c,d,e,f a=” Hello” b=Ltrim(a) ‘cắt bỏ hết các khoảng trắng bên trái c=”Hello ” d=Rtrim(a) ‘cắt bỏ hết các khoảng trắng bên phải e=” Hello world ” f=Trim(a) ‘cắt bỏ hết các khoảng trắng thừa 2 bên và ở giữa %> Left, Mid, Right: Lấy một chuỗi con trong chuỗi lớn <%Dim a,b,c,d a=”Hello World” b=left(a,5) ‘lấy 5 ký tự bên trái của a, kết quả b=”Hello” c=right(a,5) ‘lấy 5 ký tự bên phải của a, kết quả c=”World” d=mid(a,7,1) ‘lấy 1 ký tự của a từ vị trí thứ 7, kết quả d=”W” %> Các hàm khác: Space,String, StrReverse,StrComp,InStr,Replace,Split,join - Các hàm ngày tháng Date, Time, Now: Lấy ngày, giờ hiện hành trên server <% Response.write “Hom nay la ngay: ” &Date ‘Date trả về ngày hiện hành Response.write “Bay gio la”&Time ‘Time trả về giờ hiện hành Response.write Now ‘Now trả về ngày và giờ hiện hành %> Các hàm khác: DateAdd, DateDiff, DatePart, Year, Month, Day, Weekday, Hour, Minute, Second - Các hàm kiểm tra Các hàm này cho phép kiểm tra kiểu của biến và biểu thức - Isdate: Kiểm tra có phải đúng kiểu ngày tháng không? <%Dim a a=”1/1/2004” If Isdate(a) then Response.write “a đúng là kiểu ngày tháng ” End if %> - IsNumeric: Kiểm tra có phải đúng kiểu số không? <%Dim a A=”13” If IsNumeric(a) then Response.write “a đúng là kiểu số” End if %> Các hàm khác: IsArray,IsEmpty,IsNull,IsObject Câu lệnh rẽ nhánh : Lệnh If Chúng ta sử dụng if theo cú pháp như ví dụ sau: <% h=hour(now) If h >12 then Response.write “Afternoon” else Response.write “Morning” End if %> Hoặc: <% h=hour(now) If h >12 then Response.write "Afternoon" else Response.write "Morning" %> Select case ... else ...End select Cấu trúc rẽ nhánh trong trường hợp có nhiều hơn 2 lựa chọn <% h=hour(now) Select case h Case "1" Response.write "1 am" Case "2" Response.write "2 am" Case else Response.write "Other " End select %> Lệnh lặp: For…Next Vòng lặp có số lần lặp xác định <%Dim i For i=1 to 10 Response.write i Next %> Do While…Loop Vòng lặp có số lần lặp không xác định <% Dim i i=1 Do while i<=10 Response.write i i=i+1 Loop %> While .. Wend Vòng lặp có số lần lặp không xác định <% Dim i i=1 While i<=10 Response.write i i=i+1 Wend %> Do .. Loop Until Vòng lặp có số lần lặp không xác định <% i=1 do response.write i i=i+1 loop Until i>10 %> Điều kiện and ,or, not <% h=hour(now) If (h >12) and (h<18) then Response.write “Afternoon” End if %> 4. Sử dụng Database với ASP Hầu hết các ứng dụng Web động đều lưu trữ dữ liệu trong Database. Vì vậy các thao tác kết nối vào Database, xem, thêm, sửa, xóa dữ liệu trong các bảng là phần quan trọng đối với các ngôn ngữ lập trình web như ASP. Chúng ta sẽ học các kỹ thuật sử dụng Asp để thao tác với dữ liệu trong Database thông qua kiến trúc ADO. 4.1 Các cú pháp căn bản để truy xuất dữ liệu từ DB Để thao tác với dữ liệu trong các bảng của DB, có 4 thao tác chính với câu lệnh SQL tương ứng như sau: (Lấy ví dụ với một Database cụ thể Quanlyhocvien.mdb, trong đó có một bảng HosoHocVien (MaHV:text, Ten: text) Lựa chọn Lấy tất cả các bản ghi trong bảng: “Select * from HosoHocVien” Nếu lựa chọn có điều kiện: “Select * from HosoHocVien where MaHV=’10’ “ Nếu chỉ lựa chọn một số trường trong bảng: “Select Ten from HosoHocVien where MaHV=’10’ ” Thêm dữ liệu vào bảng “Insert into HosoHocVien values (‘001’,’Tran Van A’) “ Sửa dữ liệu “Update HosoHocVien set Ten=’Tran Van B’ where MaHV=’001’ “ Xoá dữ liệu “Delete from HosoHocVien where MaHV=’001’ “ Chúng ta có thể sử dụng các lệnh SQL phức tạp hơn để có được kết quả mong muốn như sử dụng các lệnh join, order by, group by, having... 4.2 Đối tượng Connection Đối tượng Connection cho phép tạo kết nối đến một DB. Các bước sử dụng Connection: Khai báo đối tượng Connection Khởi tạo Tạo chuỗi kết nối Mở Connection với chuỗi kết nối trên Sử dụng Connection Đóng và Hủy Connection 4.3 Đối tượng Recordset Đối tượng Recordset thường dùng để xem, thêm, sửa, xóa các bản ghi trong bảng dữ liệu của Database. Nó trỏ đến tập hợp các bản ghi là kết quả trả về từ câu lệnh select Các bước sử dụng đối tượng Recordset : Khai báo đối tượng Recorset Khởi tạo Tạo sql query Mở Recordset với chuỗi sql query và connection đã mở Sử dụng Recordset Đóng và Hủy Recordset 4.4 Thêm sửa xóa dữ liệu trong DB Với một connection đã mở chúng ta có thể dùng nó để thực thi câu lệnh SQL dạng insert, update, delete: Thêm dữ liệu: Sửa dữ liệu: Xoá dữ liệu: Ngoài ra chúng ta có thể dùng Recordset để thêm, sửa, xóa dữ liệu trong database bằng cách duyệt qua tập hợp các bản ghi trong bảng 4.5 Phân trang Trong nhiều trường hợp do kết quả câu lệnh “select ....” trả về quá nhiều bản ghi, nếu chúng ta hiển thị tất cả trên cùng 1 trang web thì sẽ bất tiện trong việc đọc chúng, khi đó người ta tiến hành phân nó ra để hiển thị thành nhiều trang, đây gọi là kỹ thuật phân trang. So với cách đọc và hiển thị dữ liệu thông thường, thì phân trang đòi hỏi phải thiết lập thêm một số thuộc tính: Số bản ghi cần hiển thị trên một trang RS.PageSize Trang nào đang được hiển thị: RS.AbsolutePage, Khi mở Recordset đòi hỏi phải thêm các tham số CursorType và LockType :rs.open SQLstring ,conn,3,3 Vòng lặp hiển thị dữ liệu cần có cơ chế đảm bảo nó chỉ chạy đúng số bản ghi trên một trang (rs.pagesize) là phải thoát khỏi vòng lặp. 4.6 Tìm kiếm dữ liệu trong database Để tìm kiếm dữ liệu trong bảng của Database chúng ta dựa vào câu lệnh SQL: “select * from Tenbang where Tencot like ‘%giatri%’ “ Thông thường người sử dụng nhập từ khoá cần tìm kiếm vào một trường của form. như vậy ta chỉ việc dùng lệnh request.form để lấy lại từ khoá cần tìm kiếm và đưa vào câu lệnh SQL ở trên. Chẳng hạn người sử dụng nhập từ khoá cần tìm vào trường “Ten” trong form thì chúng ta sẽ mở bảng bằng câu lệnh SQL sau: <% ten=request.form(“Ten”) ‘validate rs.open "select * from HosoSV where Ten like '%”&ten&”%' ",conn ‘... %> Nếu không tìm thấy bản ghi nào thì giá trị rs.EOF sẽ true. CHƯƠNG III PHÂN TÍCH & THIẾT KẾ HTTT QUẢN LÝ KHÁCH SẠN TẠI KHÁCH SẠN CÔNG ĐOÀN VN I. PHÂN TÍCH HỆ THỐNG THÔNG TIN QUẢN LÍ KHÁCH SẠN Do hệ thống thông tin quản lý khách sạn được tạo ra nhằm áp dụng vào việc quản lý cho một khách sạn nên nó có những đặc thù riêng của khách sạn đó. Điều đó được thể hiện một cách đầy đủ thông qua các biểu đồ mô tả logic. 1.Sơ đồ luồng thông tin (IFD) của Website HTTTT Quản lý khách sạn Các loại kí pháp được sử dụng : - Trong xử lý Thủ công hoàn toàn Người và máy Tin học hoàn toàn -Trong lưu trữ Thủ công Tin học hoá - Dòng thông tin - Điều khiển Một số các mô hình IFD của HTTT Sơ đồ luồng thông tin trong quá trình đăng nhập của người sử dụng Thời điểm Khách hàng HTTT quản lý Quản trị Website Khi người sử dụng mở trang web và đăng nhập hệ thống Thông tin về tên Và mật khẩu người dùng Thông báo đăng nhập thành công Thông tin về tài khoản Kiểm tra tên và mật khâu trong CSDL Thông tin đã qua kiểm tra Sơ đồ luồng thông tin trong việc xử lý đặt phòng Khách hàng đặt phòng Thời điểm Khách hàng Thông tin đặt phòng In danh sách Phòng trống Hệ thống thông tin quản lý khách sạn Module xử lý thông tin đặt phòng Thông tin đặt phòng đã xử lý Nhập thông tin đã xử lý Cơ sở dữ liệu về phòng Quản trị Website Thông tin phòng Danh sách khách đặt phòng 2. Sơ đồ phân rã chức năng Đây là loại biểu đồ hình cây được xây dựng bằng kĩ thuật phân mức, xuất phát từ mức thấp nhất và các mức tiếp theo được phân rã tiếp cho đến mức cuối là chức năng nhỏ nhất không thể phân chia được nữa. Tại mỗi nút là một chức năng của hệ thống. Quản lý dịch vụ Thống kê, tìm kiếm Trợ giúp Quản lý account Quản lý nhóm tin QUẢN LÝ KHÁCH SẠN Đăng xuất Đổi mật khẩu QL đặt phòng QL nhà hàng QL du lịch lữ hành QL tin tức QL các thông tin khác Theo số phòng còn trống Theo tên người đặt phòng Theo các loại dịch vụ Liên hệ Trợ giúp đăng nhập Gửi thông tin phản hồi Đăng nhập QL thông tin phản hồi Thêm mới account QL các dịch vụ khác Sửa account 3. Biểu đồ mức khung cảnh của HTTT quản lý khách sạn  QUẢN TRỊ HTTT (Context Data Flow Diagram) Thay đổi thành viên Sửa đổi cấu trúc trang web QUẢN TRỊ VIÊN WEB SITE K H Á C H Trả lời yêu cầu nhận phòng Yêu cầu nhận phòng Yêu cầu thay thế thiêt bị, tiện nghi HTTT QUẢN LÝ KHÁCH SẠN Trả lời yêu cầu đăng ký Yêu cầu đăng ký Thống kê lại thiêt bị, tiện nghi hoá đơn dịch vụ Yêu cầu dịch vụ Báo cáo doanh thu Yêu cầu thanh toán Yêu cầu thay đổi đơn giá phòng hoá đơn thanh toán Đây là mô hình hệ thống ở mức tổng quát nhất, mô hình này mô tả toàn thể hệ thống như một chức năng. Tại mô hình này các tác nhân ngoài và luồng dữ liệu vào ra từ các tác nhân ngoài đến hệ thống được hoàn toàn xác định. Hệ thống thông tin có các tác nhân bên ngoài và các luồng dữ liệu được thể hiện như hình vẽ trên, trong đó hình chữ nhật thể hiện các đối tượng với tên xác định được đặt trong đó, còn luồng dữ liệu được biểu thị bằng mũi tên có hướng cạnh đó có ghi tên nhãn là tên luồng thông tin ang theo. Đối với hệ thống thông tin quản lý khách sạn có các tác nhân bên ngoài là khách và quản trị viên website, ngoài ra còn có tác nhân bên ngoài nữa là quản trị hệ thống thông tin,. Các đối tượng của mô hình : Khách hàng : Là người xem và có đăng kí những dịch vụ tại khách sạn. Quản trị viên hệ thống : quản trị hệ thống có toàn quyền với website, vừa có quyền như một quản trị viên website ngoài ra họ còn có những quyền như có thể thay đổi cấu trúc của cả trang web hay thêm, bớt danh sách các thành viên. Quản trị viên website : Là người cập nhật nội dung, thay đổi phần nội dung cho mỗi trang web, trả lời thông tin từ phía khách hàng. 4. Sơ đồ luồng dữ liệu DFD của HTTT quản lý khách sạn  yêu cầu nhận phòng yêu cầu đăng ký 2 Quản lý phòng 1 Quản lý khách trả lời yêu cầu đăng ký trả lời yêu cầu nhận phòng yêu cầu thanh toán dangky yêu cầu thanh toán hdthue khach Khách phong 5 Báo cáo 3 Quản lý dich vụ hoá đơn dich vụ hoá đơn thanh toán yêu cầu dich vụ Báo cáo doanh thu Ban giám đốc Biểu đồ trên được phân rã từ biểu đồ dữ liệu mức khung cảnh với các chức năng phân rã tương ứng với mức 2 của biểu đồ phân rã chức năng. Trong biểu đồ trên các luồng dữ liệu và các đối tượng được bảo toàn. Các luồng dữ liệu được thể hiện bằng những mũi tên có hướng. Các kho dữ liệu : Khach : Lưu lại các thông tin về khách hàng đã đăng ký với khách sạn, và được khách sạn chấp nhận đăng ký. Dangki : Lưu lại thông tin đăng kí các dịch vụ từ phía khách hàng. hdthue : Lưu lại các thông tin về hợp đồng thue phòng như ngày đến, ngày đi,… phong : Lưu trữ dữ liệu về các loại phòng có trong khách sạn. II. THIẾT KẾ HỆ THỐNG THÔNG TIN 1. Thiết kế các module của chương trình : Module quản lý account Như biểu đồ phân rã trên thì mô hình quản lý khách sạn như sau : Quản lý account Quản lý tài khoản admin Quản lý tài khoản member Quản lý tài khoản khách hàng Đây là module quản lý quá trình đăng nhập, đăng xuất thay đổi mật khẩu của nhân viên, khách hàng, của chuyên gia quản trị hệ thống. Description Cho phép Admin nhập vào hệ thống. Input Nhập Username v à Password. Process Kiểm tra xem Username v à Password có tồn tại trong database không. Output Nếu đăng nhập thành công chuyển đến trang Admin, nếu đăng nhập không thành công chuyển về trang Online. Quản trị viên : Quản trị viên Website : Quản lý thông tin khách hàng, trả lời các thông tin phản hồi từ phía khách. Thay đổi, cập nhật thông tin cho các chức năng của Website. Quản trị viên hệ thống : Có quyền cao nhất và có thể xóa hoặc thêm mới, ban quyền cho các thành viên quản trị Website, có quyền thay đổi cấu trúc Website, quản lý các account. Khách vãng lai : Những khách hàng này chỉ có mục đích là tìm hiểu thông tin về khách sạn, không có yêu cầu, không đăng kí dịch vụ với khách sạn. Khách đăng kí dịch vụ : Đây là đối tượng phục vụ chính của Website, khách hàng có thể đăng kí trước các dịch vụ của khách sạn nếu còn trống, góp ý kiến với quản trị viên. Website sẽ lưu lại các thông tin cần thiết về loại khách hàng này nhằm quản lý tốt hơn. Module quản lý dịch vụ Quản lý dịch vụ Quản lý đặt phòng Quản lý du lịch lữ hành Quản lý các dịch vụ khác Quản lý nhà hàng Module này nhằm quản lý các loại hình kinh doanh của khách sạn như phòng nghỉ, du lịch lữ hành, nhà hàng, … Đây là một module quan trọng trong toàn bộ hệ thống thông tin khách sạn. Trong đó quản lý đặt phòng sẽ được chú trọng nhất. Description Cho phép khách hàng đặt trước phòng đã được lựa chọn. Input Nhập đầy đủ các thông tin cá nhân và lựa chọn hình thức đặt phòng (loại có bảo đảm hay không). Process Kiểm tra độ chính xác thông tin nhập của người dùng. Output Đăng nhập thông tin đặt phòng của khách vào Server. Khách hàng Module quản lý phòng Yêu cầu đặt phòng Trả lời yêu cầu Đơn đặt phòng Người quản lý Thao tác quản lý Giám đốc Báo cáo Các điều chỉnh Module quản lý nhóm tin Quản lý nhóm tin Quản lý tin mới Giới thiệu về công ty Các thông tin khác Giới thiệu các loại dịch vụ Module này để quản lý các các thông tin trên trang web nhằ đáp ứng cho khách hàng có thể tìm hiểu về khách sạn, các dịch vụ hiện có, các tin mới và các thông tin khác có liên quan hoặc tham khảo. Description Quản lý (thêm, sửa, xoá, kiểm tra) các thông tin được đưa lên trang web của khách sạn . Input Nhập, xoá hoặc sửa các thông tin. Process Kiểm tra và lưu thông tin vào database. Output Hiển thị các thông tin. Khách hàng Module quản lý thông tin Yêu cầu thông tin Trả lời yêu cầu Thông tin Người quản lý Thao tác với Thông tin Tìm kiếm thông tin 2. Các bảng dữ liệu Bảng datphong Bảng chứa thông tin khách đăng ký bao gồm số đăng ký, tên khách, địa chỉ, email, điện thoại, ngày đăng ký đến, ngày đăng ký đi số người và yêu cầu khác. Bảng hdthue (hợp đồng thuê) Bảng danh mục chứa các thông tin hợp đồng bao gồm số hợp đồng, mã phòng, mã khách, ngày đến và ngày đi. Bảng cthdthue (chi tiết hợp đồng thuê) Bảng chứa thông tin chi tiết hợp đồng bao gồm hợp đồng thuê và mã phòng. Bảng loaiphong (loại phòng) Bảng danh mục chứa thông tin loại phòng bao gồm loại phòng, kiểu phòng, giá phòng và tên loại phòng. Bảng phong (phòng) Bảng chứa danh mục thông tin phòng bao gồm mã phòng, loại phòng và tên phòng. Bảng quoctich (quốc tịch) Bảng danh mục chứa thông tin quốc tịch bao gồm mã quốc tịch và tên nước. Bảng sudungdv (sử dụng dịch vụ) Bảng danh mục chứa thông tin sử dụng dịch vụ bao gồm mã sử dụng dịch vụ, số hợp đồng, mã dịch vụ, ngày sử dụng và số lượng. Bảng thanhvien (thành viên) Bảng chứa thông tin thành viên hệ thống bao gồm mã thành viên, tên đăng nhập, mật khẩu, quyền đăng nhập, họ, tên, địa chỉ, điện thoại, email. Bảng loaidv (loại dịch vụ) Bảng danh mục chứa thông tin loại dịch vụ bao gồm mã dịch vụ, tên dịch vụ, tiền dịch vụ và đơn vị tính. Bảng khach (khách) Bảng chứa thông tin khách thuê phòng bao gồm mã khách, số CMND, họ, tên, địa chỉ, điện thoại, email, giới tính và mã quốc tịch. 3 Mô hình quan hệ giữa các bảng 4 Một số thuật toán sử dụng trong chương trình 4.1 Thuật toán đăng nhập Khi một người đăng nhập trong phần login, thì hệ thống thông tin sẽ kiểm tra trong CSDL có hay không, nếu là có thì kiểm tra xem quyền của họ là gì, nếu là admin, thì chuyển tới trang admin, nếu là member chuyển tới trang member, còn nếu nhập sai thông báo lỗi nhập. BĐ Chuyển tới trang nào tuỳ theo sự cấp phép vào trang admin nếu là admin, trang member nếu là member. Kiểm tra tên và mật khẩu Đ Nhập tên và mật khẩu S KT Thông báo lỗi Thông báo đăng nhập thành công 4.2 Thuật toán cập nhật đơn đặt phòng Khi khách hàng có nhu cầu đặt phòng nghỉ, có thể điền vào form đặt phòng, trong form đáng chú ý là ngày đến và ngày đi, nếu 2 ngày này không hợp lệ, giả dụ như ngày đến >= ngày đi, hoặc ngày đến không thoả mãn thì hiện thông báo lỗi và bắt nhập lại nếu đã đúng thì hỏi xem có muốn lưu lại thông tin vào CSDL không. BĐ Nhập ngày đến ngày đi Lỗi Kiểm tra ghi KT Nhập tiếp các thông tin còn lại S Đ Thông báo S Kiểm tra ngày đến ngày đi Ghi vào CSDL 4.3 Thuật toán tìm kiếm dữ liệu : Đầu tiên hệ thống sẽ mở trang tìm kiếm, và cho chọn điều kiện tìm kiếm, sau đó hệ thống sẽ tìm trong CSDL, nếu có thì hiển thị dữ liệu tìm được và hỏi xem có muốn tìm tiếp hay không, nếu sai thì thông báo lỗi và cũng hỏi xem có muốn tìm tiếp hay không. S Đ Đ Hiển thị dữ liệu Quay trở lại trang chủ KT S Tìm kiếm Nhập điều kiệm tìm BĐ Mở trang tìm kiếm Chọn kiểu tìm kiếm Tìm thấy Tìm tiếp Thông báo không tìm thấy 4.4 Thuật toán hiện danh sách các tin tức : Đầu tiên hệ thống sẽ mở trang tin tức và bạn có thể nập điều kiện tìm kiếm và hệ thống sẽ kiểm tra nếu diều kiện tìm là đúng và trong CSDL có các tin này thì sẽ hiển thị kết quả, nếu sai thì thông báo lỗi sai. BĐ KT Mở trang tin tức Nhập điều kiện tìm Kiểm tra S Đ Hiện danh sách các tin tức Thông báo 5. Một số trang web của Website : 5.1 Trang tin tức : Thông tin mới nhất về các hoạt động trong khách sạn, các chương trình khuyến mãi đặc biệt, các phong trào trong công ty giúp cho khách hàng luôn có những thông tin mới nhất về khách sạn. 5.2 Trang du lịch lữ hành Cung cấp cho các khách hàng nhưng tua du lịch mà khách sạn đang quản lý với số ngày cụ thể và phương tiện di chuyển. 5.3 Trang tư vấn đầu tư quốc tế : Ngoài các dịch vụ khác trong khách sạn thì tư vấn đầu tư cũng là một loại dịch vụ có trong khách sạn, trang này sẽ cung cấp cho khách hàng những thông tin để có thể có những sự tư vấn từ phía khách sạn trong hoạt động đầu tư. 5.4 Trang các dịch vụ khác : Đây là trang giới thiệu về một số dịch vụ có trong khách sạn, đây là các loại dịch vụ ít khách hàng nhưng nếu khách hàng nào có nhu cầu thì khách sạn sẽ luôn đáp ứng. 5.5 Trang giới thiệu về khách sạn : Ở trang này bạn có thể tìm kiếm tất cả những thông tin từ khi thành lập đến nay vàmột số các thông tin khác sẽ giúp khách hàng hiểu về khách sạn Công Đoàn nhiều hơn. 5.6 Trang liên hệ : Đây là trang có tất cả những thông tin về khách sạn ở thời điểm hiện tai để khách hàng dễ dang hơn trong việc liên lạc với khách sạn. 5.7 Trang giới thiệu phòng nghỉ : Trang này sẽ cung cấp cho các bạn có cai nhìn trực quan về các loại phòng nghỉ, các loại giường có trong khách sạn, giá cả từng loại là bao nhiêu,… KẾT LUẬN Một số kết quả thu được sau khi hoàn thành Website : Về phía công ty nhu cầu thiết kế một trang web là phải bao quát nhiều vấn đề, tuy nhiên đây chỉ là giai đoạn thực tập tốt nghiệp em không có đủ thời gian và với một lượng kiến thức chưa rộng về vấn đề lập trình mạng và chưa có đầy đủ thông tin từ phía khách sạn do vấn đề bảo mật thông tin nên em chưa thể thực hiện hết những mong muốn như ban đầu. Trong Website mặc dù giao diện là một phần quan trọng trong việc thiết kế Web, em đã cố gắng dùng những phần chuyên biệt để thiết kế Website này, và phần nào đã mang đến một giao diện thân thiện cho ngưòi sử dụng. Có một số chức năng mặc dù em đã trình bày ra nhưng với khả năng và thời gian có hạn nên em chưa thể hiện trong Website. Những vấn đề này em sẽ nghiên cứu để sớm hoàn thiện Website đáp ứng yêu cầu ban đầu đặt ra. Hướng phát triển : - Trong thời gian tới em sẽ hoàn chỉnh phần giao diện và những tất cả những tính năng cho Website, đồng thời sửa chữa những lỗi chưa phát sinh. - Phiên bản tiếp theo sẽ có ít nhất là 2 ngôn ngữ là tiếng Anh và tiếng Việt để người dùng có thể tuỳ ý lựa chọn. - Có thêm những chức năng nữa như : Chuyển đổi tiền, giờ thế giới, các địa diểm du lịch bên cạnh khách sạn, dự báo nhiệt độ. Trong khuôn khổ thời gian thực tập hạn chế, mặc dù đã rất cố gắng để thực hiện tốt nhất đề tài này nhưng vẫn còn rất nhiều những thiếu xót rất mong sự nhận xét của thầy cô và các bạn để em sẽ hoàn thiện Website trong thời gian tới. Em xin gửi lời cảm ơn chân thành nhất đến KS Hồ Bích Hà giảng viên Khoa Tin học kinh tế, chú Trần Văn Hiền trưởng phòng thông tin và phó Giám Đốc chú Chu Ngọc thành đã luôn chỉ bảo tận tình, động viên em trong suốt quá trình thực tập tại khách sạn. TÀI LIỆU THAM KHẢO Việt Nam Giáo trình hệ thống thông tin quản lý – TS Trương Văn Tú & TS Nguyễn Thị Song Minh, Nhà xuất bản Thống kê Hà Nội năm 2000. Xây dựng ứng dụng thương mại điện tử - Phạm Hữu Khang, nhà xuất bản Lao Động Xã Hội tập 1, 2 - Năm 2005 Lập trình ứng dụng chuyên nghiệp SQL Server - Phạm Hữu Khang, nhà xuất bản Giáo dục- Năm 2002. Giáo trình cấu trúc dữ liệu và giải thuật, PGS, TS Hàn Viết Thuận, nhà xuất bản Thống Kê - Năm 2005. Tiếng Anh Web page Programing with HTML, DHTML & Javascript - APTECH Limited, 2005 Concept of RDMBS and SQL Server 2000, APTECH Limited, 2005 Inside Microsoft SQL Server 2000, Kalen Delaney, 2001 Microsoft SQL Server 7.0 Data Warehousing Training Kit, Microsoft Corporation, 2000 ASP in a nutshell, O'Reilly, 2001 Programing Active Server Page v2.0, Microsoft Press, 1997.

Các file đính kèm theo tài liệu này:

  • doc32301.doc