Thiết kế và xây dựng website Mimes Restaurant

CHƯƠNG I: Tổng Quan 1. Đặt vấn đề: 1.1. Giới thiệu lĩnh vực: ã Công nghệ thông tin phát triển muôn màu muôn vẻ. Hầu hết mọi lĩnh vực kinh tế, xã hội, văn hóa, giáo dục, y tế, đều ít nhiều ứng dụng các sản phNm IT (Information Technology) vào công việc của mình. ã Phát triển website không phải là hướng đi có triển vọng duy nhất trong công nghệ thông tin. Bên cạnh đó còn có những hướng đi khác như: Game Developing, System Management, Database Aministrator, N etwork, . Mỗi thể hiện đều có những lợi thế riêng. ã Xây dựng một trang Web cần một kiến thức tổng hợp về sáng tạo, công nghệ, sự khéo léo . N hưng không phải tất cả mọi người đều mạnh về mọi mặt, do vậy vấn đề đặt ra là chúng ta nên áp dụng như thế nào cho hợp lý. Có một số xu hướng thể hiện trang Web thiên về đồ họa, có xu hướng lại thiên về kĩ thuật. ã Ở đây em chọn xu hướng website thiên về đồ họa để thực hiện website Mines Restaurant. Bởi vì, website này chủ yếu phục vụ cho mục đích quảng bá hình ảnh doanh nghiệp. Tuy nhiên vẫn phải đảm bảo các chức năng kĩ thuật của một website thương mại. ã Website không còn xa lạ với nhiều người. Việc phát triển website không phải là chuyện quá khó. Hàng loạt website đua nhau xuất hiện, nhưng tính hiệu quả của nó đang là vấn đề nan giải. Làm thế nào để website của mình được nhiều người biết tới. Đầu tiên, bản thân nó phải đem lại sự ấn tượng cho người dùng. Hơn nữa các chức năng phải đáp ứng được yêu cầu, không có quá nhiều những nội dung không cần thiết, tính tiện lợi dễ dùng cũng rất quan trọng. ã Một website tốt phải có bố cục rõ ràng, trong sáng. Các chức năng đáp ứng được yêu cầu, dễ dàng thao tác. N ội dung đáng tin cậy và phải được cập nhật thường xuyên. ã Flex đang dần chứng tỏ được sức mạnh của nó trong việc thiết kế giao diện website. Điều đó sẽ được thể hiện ngay trong luân văn tốt nghiệp này. 1.2. Công việc sẽ làm: ã Thiết kế và xây dựng website Mimes Restaurant ã Viết tài liệu thiết kế ã Thiết kế cơ sở dữ liệu ã Đóng gói và chạy thử 2. Nhiệm vụ của đồ án: 2.1. Bài toán: ã Thiết kế giao diện website bằng Flex Builder 3 ã Thực hiện lớp xử lý nghiệp vụ (Business) bằng ASP.N ET 2.0 trên Visual Studio 2005 ã Thiết kế và lưu trữ dữ liệu trên Microsoft SQL2000 ã Liên lạc các thành phần trên lại với nhau dùng XML 2.2. Vấn đề cần giải quyết: 2.2 1. Chức năng cho dành cho người quản trị: ã Quản lý các thông tin hiện trên trang giới thiệu. ã Quản lý các hình ảnh và thông tin nổi bật về nhà hàng ( thông tin này hiện ở trang chủ và trang thông tin): nhà hàng có những món mới, đầu bếp mới, các thông tin khác . ã Quản lý các thực đơn, món và các thông tin liên quan. ã Thêm mới, xóa, sửa các thực đơn, món ăn, thông tin của món ăn (hình ảnh, thành phần, tác dụng ). ã Thay đổi vị trí của các thực đơn ã Thay đổi vị trí các món xuất hiện trong thực đơn ã Chuyển món ăn từ thực đơn này sang thực đơn khác ã Thêm, xóa, sửa các chương trình của nhà hàng (chương trình khuyến mãi, các hoạt động hằng đêm của nhà hàng ) ã Xem các báo cáo về danh sách khách đặt chỗ theo thời gian, các món được đặt nhiều nhất => Đưa ra chiến lược kinh doanh cho tương lai. ã Xem số liệu do người dùng gừi phản hồi theo dạng biểu đồ hình cột. 2.2 2. Chức năng cho dành cho người dùng: ã Tạo một phần giới thiệu tóm tắt về nhà hàng trước khi vào trang web chính. ã Xem thông tin về nhà hàng : hình ảnh, địa chỉ, điện thoại, các sự kiện, hệ thống thực đơn, món ăn. ã Tìm kiếm các món theo thực đơn, theo giá niêm yết. ã Đăng ký thành viên ã Quản lý thông tin cá nhân ã Xem những sự kiện của nhà hàng ã Sau khi đăng ký thành viên, khách có thể đặt món và dự toán chi phí ( sẽ dùng những món nào cho buổi tiệc và tốn bao nhiêu chi phí ). Thông tin về dự toán chi phí chỉ mang tính tham khảo chứ không được lưu lại và không bắt buộc khi đặt chỗ. ã Gửi thông tin phản hồi. ã Tạo lại mật khNu nếu quên (người dùng sẽ nhận e-mail xác nhận lai mật khNu) ã Xem thông tin về nhà hàng ( lịch sử, xu hướng kinh doanh, ) 2.2 3. Chức năng cho dành cho người duyệt đơn hàng: ã Quản lý đơn đặt hàng: Tiếp nhận danh sách khách đặt hàng và gán trạng thái: mới tiếp nhận, chấp nhận, chờ xử lý, không chấp nhận. 3. Cấu trúc đồ án: Chương I: Tổng quan 1. Đặt vấn đề: (giới thiệu lĩnh vực và công việc sẽ làm) 2. N hiệm vụ của đồ án: Bài toán cụ thể, vấn đề cần giải quyết 3. Cấu trúc đồ án: giới thiệu nội dung của từng chương Chương II: Lý thuyết Các phương pháp – lý thuyết – và công nghệ sử dụng để giải quyết nhiệm vụ. Chỉ trình bày các lý thuyết, công nghệ sẽ được sử dụng ở chương 3. Phần này không trình bày những kiến thức cơ bản đã được học. Chương III: Giải quyết bài toán. N êu chi tiết vấn đề cần giải quyết như: mô hình hệ thống, cấu trúc chương trình, các đoạn chương trình quan trọng. Chương IV: Kết quả thực nghiệm N êu các bước thực hiện, phần cài đặt Giải thích từng hình, từng bảng, từng chương trình.

pdf110 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2509 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thiết kế và xây dựng website Mimes Restaurant, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
triển ứng dụng Flex chỉ với Flex framework, ActionScript, notepad. Tuy nhiên, để đễ dàng hơn chúng ta sử dụng Flex Builder 3 do hãng Macromedia phát triển. IDE này cug cấp những chức năng thiết kế rất giống với Visual Studio .N ET. Hơn nữa, những lập trình viên đã từng quen thuộc với những chuNn như XML, SOAP, ECMAScript, E4X sẽ có mặt trong Flex 3 framework. 2. Tạo một ứng dụng đơn giản (Test Project) với Flex Builder 3: • Khởi động Flex Builder. • Để tạo N ew Flex Project, chọn N ew | Flex Project từ menu File. Trang: 13  • Hộp thoại N ew Flex Project hiện ra. N hập HelloWorld vào ô Project name. chọn N one trong drop-down list như hình II-2-1. N hấn N ext. Server technology chỉ được chọn nếu bạn tương tác với business logic layer. Hình II-2-1: Hộp thoại N ew Flex Project • Hộp thoại Configuration như hình II-2-2. Output folder là chọn nơi lưu những file sau khi được biên dịch (compile). Mặc định là thư mục bin trong project. N hấn N ext. Hình II-2-2: Configuration diaglog Trang: 14  • Hộp thoại như hình II-2-3 hiện ra. N hấn Finish sau khi đã thiết lập xong các thông số: ™ Main source folder: cho phép chọn nơi lưu trữ mã nguồn (source code). ™ Main application file: chọn file sẽ thực thi mặc định khi compile và chạy (run). Hình II-2-3: Source Path tab ™ Để thêm vào những thư viện ngoài ta chuyển qua tab Library path như hình II-2-4. Hình II-2-4: Library Path • Trở về cửa sổ chính của ứng dụng. Flex Builder tự động tạo workspace với cấu trúc thư mục đầy đủ. Mặc định khối lệnh MXML hiển thị trong vùng làm việc như hình II-2-5. Trang: 15  Hình II-2-5: Cửa sổ Main Flex Builder • Sửa lại đoạn code MXML lại như sau: • Chọn Run trên menu bar để chạy chương trình. N hấn OK để lưu lại những thay đổi. Kết quả thưc thi chương trình như hình II-2-6. Trang: 16  Hình II-2-6: Kết quả thực thi ứng dụng web HelloWord 3. Vai trò của MXML: • MXML trong ứng dụng Flex cũng tương tự như XHTML trong các trang web thông thường. Cả hai ngôn ngữ markup này đều đảm nhận vai trò làm giao diện người dùng. Bởi vì MXML là biến thể của XML nên cấu trúc của chúng cũng tương tự nhau. Một tài liệu MXML phải đúng dạng (well-formed) của tài liệu XML như sau: ™ Tài liệu MXML phải chứa một hoặc nhiều nút. ™ Tài liệu MXML phải chứa một nút gốc, thường là thẻ . ™ Đóng mở thẻ hợp lệ ™ Thẻ lồng nhau phải hợp lệ ™ Giá trị của Attribute phải nằm trong dấu nháy đơn (‘) hoặc nháy kép (“). • Tất cả tài liệu MXML phải bắt đầu với khai báo XML như sau: • N út gốc của tài liệu MXML thường là thẻ , mặc dù chúng ta có thể dùng những thẻ khác như , ,…. Thẻ gốc đóng vai trò là một Container chứa tất cả các thành phần khác. Trang: 17  • Thẻ gốc được tham chiếu tới namespace www.adobe.com/2006/mxml. Bạn có thể thấy nó xuất hiện như sau: • Chúng có thể đưa vào thêm những custom component, ví dụ như: . Trong trường hợp này chúng ta dùng tiền tố (prefix) là comp để phân biệt với các component có sẵn của Flex. • Đoạn mã lệnh sau là ví dụ đơn giản xây dựng giao diện Flex bằng MXML: Giao diện chỉ là một nút nhấn được tạo bằng thẻ . Gán thuộc tính (properties) cho đối tượng bằng cách dùng thuộc tính (attributes) bên trong thẻ. Lúc biên dịch ứng dụng, thì những thẻ MXML sẽ được dịch ra những class ActionScript tương ứng, trong trường hợp này là tạo button trong file SWF. • Tất cả các thẻ và tên lớp đều bắt đầu bằng ký tự in hoa, và nếu như tên có nhiều hơn một từ thì ký tự đầu tiên của mỗi từ phải viết hoa (vd: ComboBox). • N hư đã đề cập, những thành phần MXML được biên dịch để tạo ra file SWF. Trong quá trình này, những thẻ MXML được phân tích (parse) và được trình biên dịch sinh ra những class ActionScript khi cần thiết. Sau đó những lớp này được compile vào file SWF ở dạng mã nhị phân (bytecode). 4. ActionScript 3.0: • ActionScript 3.0 là phiên bản mới nhất của ngôn ngữ script này và nó là trái tim của Flex framework. Trang: 18  • ActionScript 3.0 chạy trên máy ảo AVM (ActionScript Vitual Machine) bên trong Flash Player 9. Không giống như những phiên bản trước đây, Flash Player 9 bao gồm cả 2 AVM, một cho ActionScript 3.0 (AVM2) và một cho các phiên bản trước đây (AVM1). ActionScript 3.0 thực thi nhanh hơn các phiên bản trước. Flex 3 chỉ làm việc với ActionScript 3.0. • ActionScript 3.0 bao gồm 2 phần chính: phần lõi của ngôn ngữ (core language) và Flash Player API. Phần lõi bao gồm những thành phần cơ bản của ngôn ngữ như kiểu dữ liệu (data type), biểu thức (expression), vòng lặp (loop), và điều kiện (condition). Flash Player API là những lớp tiện ích hỗ trợ lập trình viên viết mã dễ dàng và nhanh chóng hơn. • Chúng ta có thể dùng ActionScript 3.0 trong ứng dụng Flex bằng nhiều cách: ™ Thêm những câu lệnh ActionScript vào ngay trong những thẻ MXML ™ Thêm vào một khối lệnh bằng thẻ trong file MXML ™ Dùng file ActionScript bên ngoài bằng cách chỉ định source cho thẻ hoặc include file trong khối lệnh ActionScript. • Đoạn mã sau đây dùng ActionScript 3.0 để tạo ra giao diện giống như giao diện đã tạo bằng những thẻ MXML ở trên: Trang: 19  • Đoạn mã ActionScript trên đã được bao trong khối CDATA để báo cho trình biên dịch không phân tích (parse) nội dung của nó. N ếu không có khối CDATA thì trình biên dịch sẽ phân tích những lệnh ActionScript như là thành phần XML, như vậy sẽ không đúng dạng (well-form). • Một metadata tag rất thường dùng đó là [Bindable] với vị trí đặt như sau: Chúng ta có thể gán giá trị của nó trực tiếp cho widget (các đối tượng cơ sở) bằng cách: Kiểu gán này được dùng bởi vì khi giá trị biến thay đổi thì giá trị của nó sẽ được tự động cập nhật cho widget. 5. Thành phần xử lý trong ASP.NET: (Giới thiệu mô hình lập trình 3 lớp (3 layers)) Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền ở đâu phát cho nhân viên phòng Marketing thì không cần biết. Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Chúng ta nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng Trang: 20  không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi. Hình II-5: Mô hình 3 lớp (Three_tier) [17] 5.1. Tầng thể hiện (Presentation layer): Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .N ET thì Trang: 21  dùng Windows Forms, ASP.N ET hay Mobile Forms để hiện thực lớp này. Trong luận văn này dùng Flex làm lớp Presentation. Trong lớp này có 2 thành phần chính là User Interface Components và User Interface Process Components. UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. N hững thành phần này có thể là các TextBox, các Button, DataGrid... UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard... Lưu ý : lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi sử dụng trực tiếp như vậy, có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có. 5.2. Tầng xử lý ngiệp vụ (Business Logic layer): Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal...).Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface. Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông qua giao Trang: 22  diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào. Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Ví dụ trong ứng dụng này có đối tượng là tài khoản (Accounts). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access. Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic (constraints), các qui tắc nghiệp vụ (business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng. Trong ứng dụng Mimes Restaurant, lớp này sẽ chứa các thành phần là Accounts, Items,… làm nhiệm vụ cung cấp các dịch vụ quản lý tài khoản và các món ăn,…. (thêm, xóa, sửa, xem chi tiết,...). 5.3. Tầng tương tác cơ sở dữ liệu (Data Access layer): Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,... để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents. Data Access Logic Components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu như RDBMS, XML, File systems.... Trong .N ET Các DALC này thường được hiện thực bằng cách sử dụng thư viện ADO.N ET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL. Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại. 5.4. Cách hiện thực kiến trúc 3 lớp: Trang: 23  • Lớp Presentation: ™ Do dùng Flex cho lớp này nên muốn ASP.N ET bắt được dữ liệu của giao diện ta phải dùng cơ chế Request . Sau khi xử lý thì trả kết quả về cho Flex bằng cơ chế Response. Ta làm như sau: ™ Flex: //nhận dữ liệu private var params:Object = new Object(); [Bindable] private var login_result:String=null; public function resultHandler(event:ResultEvent):void { login_result = event.result.toString(); if(login_result=="ok") { //các xử lý khi đăng nhập thành công…. ……… } else Alert.show("Sai tên đăng nhập hoặc mật khNu!"); } // gửi dữ liệu public function check():void Trang: 24  { checkUser.removeEventListener(ResultEvent.RESULT,resultHandler); checkUser.addEventListener(ResultEvent.RESULT,resultHandler); checkUser.method = "POST"; params = {"task":"checkLogin","username":txtUsername.text,"password":txtPassword.text}; checkUser.cancel(); checkUser.send(params); } ™ ASP.N ET: string task = Request.Form["task"].ToString(); if (task.Equals("checkLogin")) { string username = Request.Form["username"].ToString(); string password = Request.Form["password"].ToString(); Business.Account a = new Business.Account(); a.Username = username; a.Password = password; a.Role = 0; if (a.checkLogin()) { Response.Write("ok"); } Trang: 25  else Response.Write("login fail"); } • Lớp Business Logic: // mã hóa mật khNu bằng thuật toán MD5 (business component) private string hashPass(String s) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile (s,"MD5"); } /// hàm cung cấp cho Presentation gọi (business interface) public bool checkLogin() { DataAccess.Account a=new DataAccess.Account(); if (a.checkLogin(this.Username,this.hashPass(this.Password),this.Role)) { return true; } return false; } //// getter / setter (business entity) private string username; Trang: 26  private string password; public string Username { set { this.username = value; } get { return this.username; } } public string Password { set { this.password = value; } get { return this.password; } } private int role; public int Role { set { this.role = value; } get { return this.role; } } • Lớp Data Access: // cung cấp phương thức cho lớp Business gọi, có nhiệm vụ tương tác với cơ sở dữ liệu vật lý public bool checkLogin(String username, String password, int role) { try Trang: 27  { SqlConnection cn = ConnectionInfo.Connection(); string s = "select * from Users where UserID=N '" + username + "' and Password=N '" + password + "' and Role='" + role + "'and Banned=0"; SqlCommand cm = new SqlCommand(s, cn); cn.Open(); if (cm.ExecuteScalar() != null) { cn.Close(); return true; } } catch (SqlException) { return false; } return false; } 6. SQL Server 2000 & Bảo mật thông tin: 6.1. Thuật toán MD5: MD để chỉ cho “message digest” (Lấy 2 chữ đầu). MD5 là một thuật tóan lấy một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu digest có chiều dài cố định (128-bit, 32 ký tự hexa), được làm ra từ 1 giá trị hexa (chú ý : mỗi ký tự Trang: 28  hex là 4 bit, do đó 128bit là 32 ký tự hex). N ói rõ hơn một chút : MD5 là cách căn bản để lấy chùm ký tự ( là digits, alphabeic hay gì khác ), được gọi là string nhập vào, và thay đổi chúng thành một chùm ký tự dài 32 ký tự , được gọi là tín hiệu digest (message digest) hay hashes của chuỗi được nhập vào, chuỗi 32 ký tự này được tạo ra từ các ký tự hexa ( những digits: 0-9 và các chữ a-f). Điều này có nghĩa là, với một chuỗi nhập vào có chiều dài bất kỳ , MD5 sẽ luôn luôn cài đặt “một vài thứ” để thành một chuổi string dài 32 ký tự, mà các ký tự là các ký tự hexa. Tín hiệu digest sẽ không có khỏang trống, hay dấu hoặc kép hay bất cứ thứ gì khác 0-9 và a-f trong tín hiệu hashes được xuất ra. MD5 hashes có tiện dụng là những hashes tạo ra trông khác nhau hòan tòan từ những tín hiệu nhập vào hơi hơi giống nhau. Ví dụ sau sẽ làm rõ hơn về điều này: • Kết quả MD5 hash của chuỗi jim là 5e027396789a18c37aeda616e3d7991b • Kết quả MD5 hash của chuỗi Jim là d54b3c8fcd5ba07e47b400e69a287966 • Kết quả MD5 hash của chuỗi Jimmy là 495b3121d23f5988b133882b36aa7214 N hư đã thấy, có ba tín hiệu nhập vào “hơi hơi giống nhau” nhưng các tín hiệu MD5 hashes xuất ra hòan tòan khác nhau. Ví dụ này cũng chứng minh hai ký tự j và J là 2 ký tự khác nhau. Ở đây cần chú ý thêm là trong ví dụ thứ 3 chỉ thêm vào 2 ký tự (my) ở cuối chuỗi của ví dụ 2 , và hashes của nó đã thay đổi hòan tòan. Vì vậy chúng ta không thể có hashes của chuỗi “Blehlo” từ hashes của chuỗi “Bleh” bằng cách “vá viếu” thêm vài ký tự - thay đổi trong chuỗi nhập vào thì tín hiệu hashes của nó cũng sẽ thay đổi hòan tòan. Và ở đây cũng nên chú ý với 3 chuỗi nhập vào có chiều dài không giống nhau nhưng các hash sinh ra đều có chiều dài là 32 ký tự (bao gồm các số 0-9 và a-f), ở ví dụ sau cùng ta cũng thấy chuỗi nhập vào dài hơn 2 ký tự so với 2 string trước nhưng chuỗi hash của nó cũng chỉ có 32 ký tự chữ số hex. Trang: 29  Điều quan trọng là chúng ta không thể dịch ngược chuỗi MD5 đã hash về lại chuỗi ban đầu được. Em sẽ ứng dụng điều này để mã hóa mật khNu khi đăng nhập vào hệ thống.  6.2. Stored Procedure: Stored Procedure có một số ưu điểm chính như sau: Performance (hiệu năng) : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra quyền (permission) xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. N ếu có nhiều câu lệnh như vậy gởi qua mạng có thể làm giảm đi tốc độ làm việc của server. SQL Server sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. N ếu stored procedure được gọi nhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn. N goài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi lưu nên nó không cần kiểm lại khi thực thi. Reuse (tái sử dụng) : Một khi stored procedure được tạo ra nó có thể được sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ việc thay đổi mã lệnh bên trong stored procedure mà thôi. N hững ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored procedure khác. Trang: 30  Security (bảo mật) : Giả sử chúng ta muốn giới hạn việc truy xuất dữ liệu trực tiếp của một user nào đó vào một số bảng, ta có thể viết một stored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể "đụng" đến các bảng đó một cách trực tiếp. N goài ra stored procedure có thể được mã hóa (encrypt) để tăng cường tính bảo mật. Ðể tạo ra một stored procedure ta dùng lệnh CREATE PROCEDURE theo sau là tên của nó. N ếu muốn encrypt thì dùng WITH EN CRYPTION trước chữ AS và các tham số nhập vào(input) hoặc tham số trả về (output). N ếu là output thì thêm keyword OUTPUT đằng sau tham số. Ta có thể cho giá trị mặc định (default) cùng lúc với khai báo kiểu dữ liệu của tham số. Kể từ sau chữ AS là phần thân của stored procedure. Trang: 31  CHƯƠNG 3: Giải Quyết Bài Toán 1. Mô hình hệ thống: 1.1. Mô hình chức năng dành cho người dùng: Hình III-1-1: Mô hình chức năng dành cho người dùng Trang: 32  Mô hình chức năng dành cho Quản trị và Duyệt đơn hàng: Hình III-1-2: Mô hình chức năng dành cho quản trị & người duyệt đơn hàng Trang: 33  1.2. Mô hình thự thể kết hợp - Entities Relation Diagram (ERD): Hình III-1-3: Mô hình thực thể kết hợp Trang: 34  1.3. Mô hình quan hệ - Relationship Diagram: Hình III-1-4: Mô hình quan hệ giữa các bảng Trang: 35  1.4. Cấu trúc các bảng: 1.4..1. Bảng Slideshow (giới thiệu): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú SlideID Int Không Tự tăng +1 Khóa chính Image_ID N varchar (50) Không Tham chiếu từ bảng Images Khóa ngoại Priority Int Có Thứ tự xuất hiện của ảnh 1: là xuất hiện đầu tiên 1.4..2. Bảng Images (hình ảnh): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Image_ID N varchar (50) Không Tên đại diện Khóa chính Path N varchar (50) Có Tên thật của ảnh 1.4..3. Bảng Events (sự kiện): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Event_ID Int Không Tự tăng +1 Khóa chính Intro N varchar (500) Không Mô tả ngắn gọn sự kiện Detail N varchar (1000) Không Mô tả đầy đủ sự kiện Image_ID N varchar(50) Không Tham chiếu từ bảng Image Khóa ngoại Date_from Varchar(50) Không N gày bắt đầu Date_to Varchar(50) Không N gày kết thúc HomePage int Có Cho phép hiện lên trang chủ 1: hiện 0: Nn Trang: 36  1.4..4. Bảng MainMenu (thực đơn): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú MainMenu_ID Int Không Tự tăng +1 Khóa chính N ame N varchar (50) Không Tên thực đơn Priority Int Có Thứ tự xuất hiện của thực đơn 1: là xuất hiện đầu tiên 1.4..5. Bảng SubMenu (thực đơn con): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú SubMenu_ID Int Không Tự tăng +1 Khóa chính N ame N varchar (50) Không Tên thực đơn Priority Int Có Thứ tự xuất hiện của thực đơn con 1: là xuất hiện đầu tiên MainMenu_ID Int Không Tham chiếu từ bảng MainMenu Khóa ngoại 1.4..6. Bảng Users (tài khoản): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú UserID N varchar (50) Không Tên đăng nhập Khóa chính Password N varchar (50) Không Mật khNu Role Int Không Quyền người dùng trên trang web 0: khách hàng 1: quản trị 2: duyệt đơn hàng Email N varchar (50) Có Địa chỉ email Fullname N varchar (50) Không Tên họ đầy đủ Address N varchar (50) Có Địa chỉ Phone varchar (20) Có Điện thoại Trang: 37  CellPhone varchar (20) Có Di động Sex N varchar (50) Có Giới tính Banned Int Có Khóa tài khoản 0: bình thường 1: khóa 1.4..7. Bảng Feedback (phản hồi): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Fb_ID Int Không Tự tăng +1 Khóa chính Present N varchar (10) Có Cách trình bày Serve N varchar (10) Có Thái độ phục vụ Price N varchar (10) Có Giá tốt chưa Delicious N varchar (10) Có Món ăn ngon không SpaceIn N varchar (10) Có Không gian nhà hàng Month varchar (10) Có Tháng Year varchar (10) Có N ăm 1.4..8. Bảng Items (món ăn): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Item_ID Int Không Tự tăng +1 Khóa chính Item_name N varchar (50) Không Tê món Recipe N varchar (1000) Có Thành phần Image_ID N varchar (50) Không Tham chiếu từ bảng Images Khóa ngoại Item_usage N varchar (2000) Có Công dụng, cách dùng SubMenu_ID Int Không Tham chiếu từ bảng Khóa ngoại Trang: 38  SubMenu Price varchar (30) Có Giá Origin N varchar (50) Có Vùng HomePage Int Có Hiện lên trang chủ 1: hiện 0: Nn Invisible Int Có Ẩn món 0: hiện 1: Nn 1.4..9. Bảng BookDetail (chi tiết đơn hàng): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú BookDetail_ID Int Không Tự tăng +1 Khóa chính BookID Int Không Tham chiếu từ bảng Booked Khóa ngoại Item_ID Int Không Tham chiếu từ bảng Items Khóa ngoại Quantity_Item Int Không Số lượng mỗi món 1.4..10. Bảng Booked (đặt hàng): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú BookID Int Không Tự tăng +1 Khóa chính UserID N varchar (50) Không Tham chiếu từ bảng Users Book_time varchar (30) Không Giờ khách đến Book_date Datetime Không N gày khách đến Pax int Không Số lượng khách Trang: 39  N ote N varchar (1000) Có Ghi chú Guest_name N varchar (50) Có Tên khách đến Guest_phone N varchar (50) Có Điện thoại khách đến Guest_Email N varchar (50) Có Di động khách đến 1: hiện 0: Nn Status_View varchar (50) Có Trạng thái đơn hàng N ew: chưa duyệt Accepted: đồng ý Waitting: chờ xử lý Deny: không chấp nhận Trang: 40  2. Cấu trúc chương trình: 2.1. Người dùng: 2.1..1. Đăng nhập: Hình III-2-1-1: Sơ đồ xử lý người dùng đăng nhập Trang: 41  2.1..2. Sửa thông tin tài khoản: Hình III-2-1-2: Sơ đồ xử lý người dùng chỉnh sửa thông tin tài khoản Trang: 42  2.1..3. Đổi mật khNu: Hình III-2-1-3: Sơ đồ xử lý người dùng đổi mật khNu 2.1..4. Quên mật khNu: Hình III-2-1-4: Sơ đồ xử lý người dùng lấy lại mật khNu Trang: 43  2.1..5. Xem giới thiệu: Hình III-2-1-5: Sơ đồ xử lý người dùng xem giới thiệu 2.1..6. Xem trang chủ: Hình III-2-1-6: Sơ đồ xử lý người dùng xem trang chủ Trang: 44  2.1..7. Xem món ăn: Hình III-2-1-7: Sơ đồ xử lý người dùng xem thực đơn Trang: 45  2.1..8. Đặt hàng: Hình III-2-1-8: Sơ đồ xử lý người dùng đặt món ăn 2.1..9. Xem sự kiện: Hình III-2-1-9: Sơ đồ xử lý người dùng xem sự kiện Trang: 46  2.1..10. Gửi phản hồi: Hình III-2-1-10: Sơ đồ xử lý người dùng gửi phản hồi Trang: 47  2.2. Quản trị & người duyệt đơn hàng: 2.2..1. Đăng nhập: Hình III-2-2-1: Sơ đồ xử lý Admin/Reviewer đăng nhập Trang: 48  2.2..2. Quản lý SlideShow (giới thiệu): • Xem: Hình III-2-2-2-1: Sơ đồ xử lý admin xem giới thiệu • Thêm: Hình III-2-2-2-2: Sơ đồ xử lý admin thêm giới thiệu Trang: 49  • Xóa: Hình III-2-2-2-3: Sơ đồ xử lý admin xóa giới thiệu • Sửa: Hình III-2-2-2-4: Sơ đồ xử lý admin sửa giới thiệu Trang: 50  2.2..3. Quản lý Accounts (tài khoản): • Ban (khóa tài khoản): Hình III-2-2-3-1: Sơ đồ xử lý admin khóa tài khoản • Grant (cấp quyền duyệt đơn hàng): Hình III-2-2-3-2: Sơ đồ xử lý admin cấp quyền Trang: 51  • ChangePass (đổi mật khNu): Hình III-2-2-3-3: Sơ đồ xử lý Admin/Reviewer đổi mật khNu 2.2..4. Quản lý Events (sự kiện): • Xem: Hình III-2-2-4-1: Sơ đồ xử lý admin xem sự kiện Trang: 52  • Thêm: Hình III-2-2-4-2: Sơ đồ xử lý admin thêm sự kiện • Xóa: Hình III-2-2-4-3: Sơ đồ xử lý admin xóa sự kiện Trang: 53  • Sửa: Hình III-2-2-4-4: Sơ đồ xử lý admin sửa sự kiện Trang: 54  2.2..5. Quản lý Menu (thực đơn): • Xem: Hình III-2-2-5-1: Sơ đồ xử lý admin xem thực đơn • Thêm: Hình III-2-2-5-2: Sơ đồ xử lý admin thêm thực đơn Trang: 55  • Xóa: Hình III-2-2-5-3: Sơ đồ xử lý admin xóa thực đơn • Sửa: Hình III-2-2-5-4: Sơ đồ xử lý admin sửa thực đơn Trang: 56  2.2..6. Quản lý Submenu (thực đơn con): • Xem: Hình III-2-2-6-1: Sơ đồ xử lý admin xem thực đơn con • Thêm: Hình III-2-2-6-2: Sơ đồ xử lý admin thêm thực đơn con Trang: 57  • Xóa: Hình III-2-2-6-3: Sơ đồ xử lý admin xóa thực đơn con • Sửa: Hình III-2-2-6-4: Sơ đồ xử lý admin sửa thực đơn con Trang: 58  2.2..7. Quản lý Items (món ăn): • Xem: Hình III-2-2-7-1: Sơ đồ xử lý admin xem món ăn • Thêm: Hình III-2-2-7-2: Sơ đồ xử lý admin thêm món ăn Trang: 59  • Xóa: Hình III-2-2-7-3: Sơ đồ xử lý admin xóa món ăn • Sửa: Hình III-2-2-7-4: Sơ đồ xử lý admin sửa món ăn Trang: 60  2.2..8. Quản lý Feedback (xem phản hồi): Hình III-2-2-8: Sơ đồ xử lý admin xem thông tin phản hồi Trang: 61  2.2..9. Quản lý Book (duyệt đơn hàng): Hình III-2-2-9: Sơ đồ xử lý reviewer xử lý đơn hàng 2.2..10. Quản lý Images (hình ảnh): • Xem: Hình III-2-2-10-1: Sơ đồ xử lý admin xem hình ảnh Trang: 62  • Thêm: Hình III-2-2-10-2: Sơ đồ xử lý admin thêm hình ảnh • Xóa: Hình III-2-2-10-3: Sơ đồ xử lý admin xóa hình ảnh Trang: 63  • Sửa: Hình III-2-2-10-4: Sơ đồ xử lý admin sửa hình ảnh 3. Các đoạn mã quan trọng: 3.1. Flex: 3.1..1. Tạo HTTPService gửi tham số: 3.1..2. Gửi tham số và nhận kết quả trả về từ ASP.N ET: Trang: 64  3.2. ASP.NET 3.2..1. N hận tham số & trả kết quả cho Flex: 3.2..2. Xử lý nghiệp vụ: Trang: 65  1.1.2. Tương tác cơ sở dữ liệu: Trang: 66  3.2..3. Tạo Connection theo cơ chế Singleton: 3.2..4. Cấu hình tập tin web.Config: Trang: 67  3.3. SQLServer 2000: 3.3..1. Tạo Stored Procedure: Trang: 68  CHƯƠNG 4: Kết Quả Thực Hiện 1. Cài đặt: 1.1. Yêu cầu hệ thống: Số tt Thành phần Mô tả 1 Hệ điều hành Windows 2000, XP, 2003, Vista 2 Cơ sở dữ liệu SQL Server 2000 3 Web server Internet Information Service 5.0 hoặc cao hơn 4 Trình duyệt Internet Explorer 7.x or Firefox 2.x hoặc cao hơn 5 Font Arial, Times N ew Roman, Tahoma 6 .N et Framework 2.0 7 Flash player 9.x Bản activeX cho IE, bản plugin cho firefox,…. 1.2. Cài đặt cho cơ sở dữ liệu: Bước 1: Chép thư mục mimes vào ổ đĩa D: Bước 2: Chọn Start/Microsoft SQL Server/Enterprise Manager, đăng nhập vào SQL Server 2000 (user: sa, password: rỗng). Bước 3: Chọn Microsoft SQL Servers/ SQL Server Group/ (Local) (WindowsN T), nhấn vào Database. Bước 4: N hấn chuột phải vào Database, chọn All Tasks/ Attach Database … Trang: 69  Bước 5: Chọn nút … , dẫn đến tâp tin Restaurant.mdf (database owner = sa;) từ C:\ mimes, nhấn OK 1.3. Cài đặt cho web trên web server: Bước 1: Vào thư mục mimes/ chép thư mục mimes vào C:\Inetpub\wwwroot\ Bước 2: Chọn Start/Administrative Tools/Internet Information Services hoặc Control Panel/ Administrative Tools/Internet Information Services. Bước 3: Từ panel bên trái, mở Local computer/Web sites/Default Web Site. Bước 4: N hấn phải lên mimes chọn Property. Trong thẻ Directory chọn Create. Đánh dấu vào tất cả các CheckBox như trong hình: Trang: 70  Bước 5: Trong thẻ ASP.N ET chọn ASP.N ET version: là 2.0.xxxx. N hấn OK 1.4. Cài đặt plugin: Bước 1: Vào thư mục mimes/ . N hấn vào tập tin: install_flash_player.exe để cài đặt. Trang: 71  Bước 2: N ếu máy chưa cài Visual Studio N et 2005 thì vào thư mục mimes. N hấn vào tập tin CRRedist2005_x86.msi để cài đặt thành phần hiển thị report. 1.5. Hoàn thành: Mở Internet Explorer 7 hoặc Firefox 2.x, gõ địa chỉ: chúng ta sẽ thấy: Trang: 72  2. Giải thích chương trình: 2.1. Phía người dùng: 2.1..1. Trang giới thiệu: Tên Kiểu Bẫy lỗi Sự kiện Hành động Mimes Image Không N hấn Mở trang chủ Ảnh Image Không N hấn Hiện ảnh đó lên bên trên Trang: 73  2.1..2. Trang bắt đầu: Tên Kiểu Bẫy lỗi Sự kiện Hành động Tên đăng nhập Textbox Không Mật khNu Textbox Không Đăng nhập Button Không N hấn Kiểm tra tài khoản đăng nhập Đăng ký Link Button Không N hấn Mở trang Đăng ký Quên mật khNu Link Button Không N hấn Mở trang Quên mật khNu Bắt đầu tại đây Image Không N hấn Mở trang chủ Trang chủ Button Không N hấn Mở trang chủ Thực đơn Button Không N hấn Mở trang thực đơn Sự kiện Button Không N hấn Mở trang sự kiện Thông tin Button Không N hấn Mở trang thông tin Phản hồi Button Không N hấn Mở trang phản hồi Trang: 74  2.1..3. Trang chủ: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh phần đặc biệt Image Không N hấn Mở trang thực đơn Ảnh phần sự kiện Image Không N hấn Mở trang sự kiện Trang: 75  2.1..4. Thực đơn: • Xem thực đơn: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh Image Không N hấn Mở trang chi tiết thực đơn Cây thư mục TreeView Không N hấn Mở thực đơn con Thanh trượt HSlider Không Kéo Lọc thực đơn theo giá Biểu tượng giỏ hàng Image Không N hấn Hiện phần giỏ hàng Biểu tượng kính lúp Image Không N hấn Hiện phần tìm kiếm Trang: 76  • Xem chi tiết thực đơn: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh nhỏ Image Không N hấn Hiện chi tiết món đó Ảnh nhỏ Image Không Kéo thả Bỏ vào giỏ hàng Biểu tượng giỏ hàng Button Không N hấn Bỏ vào giỏ hàng Biểu tượng 9 chấm Button Không N hấn Trở lại xem thực đơn Trang: 77  • Chọn thực đơn: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh nhỏ Image Không N hấn Hiện chi tiết món đó Ảnh nhỏ Image Không Kéo thả Bỏ vào giỏ hàng Biểu tượng giỏ hàng Button Không N hấn Bỏ vào giỏ hàng Biểu tượng 9 chấm Button Không N hấn Trở lại xem thực đơn Đặt hàng Button Giỏ hàng không rỗng N hấn Mở trang đặt hàng Trang: 78  2.1..5. Đặt hàng: Tên Kiểu Bẫy lỗi Sự kiện Hành động Tên khách đặt Textbox Phải đăng nhập Giờ đến Textbox hh:mmam/pm N gày đến DateFiel d Lớn hơn ngày hiện tại N hấn Mở lịch chọn Số người N umeric Stepper Từ 1 đến 10 N hấn Tăng / giảm 1 Tên khách dự Textbox Không rỗng, max=50 ký tự ĐT khách dự Textbox Max=20 ký tự Email khách dự Textbox Đúng dạng email Ghi chú TextAre a Max=1000 ký tự Đặt hàng Button Không N hấn Lưu vào database Trở lại Button Không N hấn Mở trang thực đơn Trang: 79  2.1..6. Sự kiện: 2.1..7. Thông tin: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh nhỏ Image Không N hấn Hiện chi tiết sự kiện đó Biểu tượng 9 chấm Button Không N hấn Trở lại xem sự kiện Trang: 80  2.1..8. Phản hồi: Tên Kiểu Bẫy lỗi Sự kiện Hành động Ảnh nhỏ Image Không N hấn Hiện ảnh lớn hơn bên dưới Mũi tên 2 bên Button Không N hấn Trượt danh sách ảnh nhỏ Tên Kiểu Bẫy lỗi Sự kiện Hành động Cách trình bày món ăn Combobox Không N hấn Chọn đánh giá Cách phục vụ Combobox Không N hấn Chọn đánh giá Giá cả Combobox Không N hấn Chọn đánh giá Độ ngon món ăn Combobox Không N hấn Chọn đánh giá Không gian nhà hàng Combobox Không N hấn Chọn đánh giá N hập dãy số Textbox Trùng dãy số bên trên Gửi đi Button Không N hấn Lưu vào database Hủy bỏ Button Không N hấn Quay về trang chủ Trang: 81  2.1..9. Đăng nhập thành công: 2.1..10. Đăng ký thành viên: Tên Kiểu Bẫy lỗi Sự kiện Hành động Tài khoản của tôi Link Button Không N hấn Hiển thị trang quản lý tài khoản Thoát Link Button Không N hấn Thoát phiên làm việc Trang: 82  Tên Kiểu Bẫy lỗi Sự kiện Hành động Tên đăng nhập Textbox Max=30 ký tự Kiểm tra Link Button Không N hấn Kiểm tra tên đăng nhập tồn tại chưa Mật khNu Texbox Max=30 ký tự N hập lại mật khNu Textbox Giống với ô mật khNu Tên họ Textbox Max=50 ký tự, không rỗng Địa chỉ Textbox Max=50 ký tự Điện thoại Textbox Max=20 ký tự Di động Textbox Max=20 ký tự Email: Textbox Không rỗng, đúng dạng email N hập dãy số Textbox Đúng dãy số bên trên Gới tính RadioButto n Không N hấn Chọn giới tính Tôi đồng ý Button Không N hấn Lưu vào database Xóa Button Không N hấn Xóa trống các textbox Thoát Button Không N hấn Trở về trang chủ Trang: 83  2.1..11. Xem tài khoản: 2.1..12. Sửa thông tin tài khoản: Tên Kiểu Bẫy lỗi Sự kiện Hành động Thoát Button Không Nhấn Trở về trang chủ Trang: 84  2.1..13. Đổi mật khNu: Tên Kiểu Bẫy lỗi Sự kiện Hành động Tên đăng nhập Textbox Max=30 ký tự Tên họ Textbox Max=50 ký tự, không rỗng Địa chỉ Textbox Max=50 ký tự Điện thoại Textbox Max=20 ký tự Di động Textbox Max=20 ký tự Email: Textbox Không rỗng, đúng dạng email Gới tính RadioButton Không N hấn Chọn giới tính Cập nhật Button Không N hấn Cập nhật vào database Hủy tác vụ Button Không N hấn Trở về tab xem tài khoản Trang: 85  2.2. Phía người quản trị & người duyệt đơn hàng: 2.2..1. Đăng nhập: Tên Kiểu Bẫy lỗi Sự kiện Hành động Mật khNu Textbox Max=30 ký tự, không rỗng N hập lại mật khNu Textbox Giống mật khNu Lưu thay đổi Button Không N hấn Cập nhật vào database Hủy tác vụ Button Không N hấn Trở về tab xem tài khoản Tên Kiểu Bẫy lỗi Sự kiện Hành động ID Textbox Không Password Textbox Không Grant ComboBox Không N hấn Chọn quyền Cancel Button Không N hấn Xóa trống các textbox Login Button không N hấn Kiểm tra tài khoản đăng nhập Trang: 86  2.2..2. Quản lý giới thiệu: • Xem danh sách: Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Delete Button Không N hấn Xóa 1 dòng trên datagrid & database Insert Button Không N hấn Mở trang Insert Update Button không N hấn Mở trang Update Trang: 87  • Thêm • Sửa Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Về trang xem giới thiệu Trang: 88  2.2..3. Quản lý tài khoản: • Cấp quyền & khóa tài khoản: Tên Kiểu Bẫy lỗi Sự kiện Hành động Priority Textbox Dạng số nguyên dương, max=10 Save Button Không N hấn Lưu thay đổi vào database Cancel Button Không N hấn Về trang xem giới thiệu Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Grant Button Không N hấn Cấp quyền Reviewer (duyệt đơn hàng) cho tài khoản chọn Ban N ick Button Không N hấn Khóa tài khoản đã chọn Cancel Button Không N hấn Bỏ chọn Trang: 89  • Đổi mật khNu: Tên Kiểu Bẫy lỗi Sự kiện Hành động Password Textbox Max=30 ký tự, không rỗng Retype Password Textbox Giống mật khNu Save Change Button Không N hấn Cập nhật vào database Cancel Button Không N hấn Xóa trắng các textbox Trang: 90  2.2..4. Quản lý sự kiện: • Xem danh sách: Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Delete Button Không N hấn Xóa 1 dòng trên datagrid & database Insert Button Không N hấn Mở trang Insert Update Button không N hấn Mở trang Update Trang: 91  • Thêm: Tên Kiểu Bẫy lỗi Sự kiện Hành động … Button Không N hấn Mở hộp thoại chọn hình Intro Textbox Không rỗng, max=500 ký tự Detail Textbox Không rỗng, max=1000 ký tự Date from DateField <= date to N hấn Mở lịch chọn Date to Datefield >=date from N hấn Mở lịch chọn Homepage Checkbox Không Check Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Xóa rỗng các textbox Finish Button Không N hấn Trở về trang xem sự kiện Trang: 92  • Sửa Tên Kiểu Bẫy lỗi Sự kiện Hành động … Button Không N hấn Mở hộp thoại chọn hình Intro Textbox Không rỗng, max=500 ký tự Detail Textbox Không rỗng, max=1000 ký tự Date from DateField <= date to N hấn Mở lịch chọn Date to Datefield >=date from N hấn Mở lịch chọn Homepage Checkbox Không Check Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem sự kiện Trang: 93  2.2..5. Quản lý đơn đặt hàng: Trang: 94  Tên Kiểu Bẫy lỗi Sự kiện Hành động Các radiobutton Radiobutto n Không Select Chọn trạng thái đơn hàng Search Button Không N hấn Tìm kiếm đơn hàng theo ngày, trạng thái trong database DataGrid Datagrid Không Select Chọn 1 dòng From date DateField <= date to N hấn Mở lịch chọn To date Datefield >=date from N hấn Mở lịch chọn Book date Datefield > ngày hiện tại N hấn Mở lịch chọn Book time Textbox hh:mmam/pm Cancel Button Không N hấn Xóa rỗng các textbox Exit Button Không N hấn Trở về trang dành cho Reviewer Guest name Textbox Max=50 ký tự Guestphone Textbox Max=20 ký tự Pax N umeric stepper Từ 1 đến 10 N hấn Tăng hoặc giảm 1 Email Textbox Đúng dạng email N ote Textarea Max=1000 ký tự Status ComboBox Không N hấn Chọn trạng thái cho đơn hàng Update Button Không N hấn Lưu thay đổi vào database Trang: 95  2.2..6. Quản lý thực đơn: • Xem danh sách: • Thêm: Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Delete Button Không N hấn Xóa 1 dòng trên datagrid & database Insert Button Không N hấn Mở trang Insert Update Button không N hấn Mở trang Update Trang: 96  • Sửa: Tên Kiểu Bẫy lỗi Sự kiện Hành động N ame Textbox Không rỗng, max=50 ký tự Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem thực đơn Tên Kiểu Bẫy lỗi Sự kiện Hành động N ame Textbox Không rỗng, max=50 ký tự Priority N umeric stepper Từ 1 đến 10 N hấn Tăng hoặc giảm 1 Save Button Không N hấn Lưu thay đổi vào database Cancel Button Không N hấn Trở về trang xem thực đơn Trang: 97  2.2..7. Quản lý thực đơn con: • Xem danh sách: • Thêm: Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Delete Button Không N hấn Xóa 1 dòng trên datagrid & database Insert Button Không N hấn Mở trang Insert Update Button không N hấn Mở trang Update Trang: 98  • Sửa: Tên Kiểu Bẫy lỗi Sự kiện Hành động Menu Combobo x Không Select Chọn 1 menu Refresh Button Không N hấn Load lại Combobox N ame Textbox Không rỗng, max=50 ký tự Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem thực đơn con Trang: 99  2.2..8. Quản lý món ăn: • Xem danh sách: Tên Kiểu Bẫy lỗi Sự kiện Hành động Menu Combobox Không Select Chọn 1 menu Refres h Button Không N hấn Load lại Combobox N ame Textbox Không rỗng, max=50 ký tự Priorit y N umeric stepper Từ 1 đến 10 N hấn Tăng hoặc giảm 1 Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem thực đơn con Trang: 100  • Thêm: Tên Kiểu Bẫy lỗi Sự kiện Hành động DataGrid DataGrid Không Select Chọn 1 dòng Delete Button Không N hấn Xóa 1 dòng trên datagrid & database Insert Button Không N hấn Mở trang Insert Update Button không N hấn Mở trang Update Trang: 101  Tên Kiểu Bẫy lỗi Sự kiện Hành động N ame Textbox Không rỗng, max=50 ký tự Recipe Textbox Không rỗng, max=1000 ký tự Usage Textbox Không rỗng, max=2000 ký tự Submenu Combobox Không Select Chọn 1 thực đơn con Price Textbox Không rỗng, dạng số Origin Textbox Không rỗng, max=50 ký tự … Button Không N hấn Mở hộp thoại chọn ảnh Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem món ăn Homepage Checkbox không Check Trang: 102  • Sửa: Trang: 103  Tên Kiểu Bẫy lỗi Sự kiện Hành động N ame Textbox Không rỗng, max=50 ký tự Recipe Textbox Không rỗng, max=1000 ký tự Usage Textbox Không rỗng, max=2000 ký tự Submenu Combobox Không Select Chọn 1 thực đơn con Price Textbox Không rỗng, dạng số Origin Textbox Không rỗng, max=50 ký tự … Button Không N hấn Mở hộp thoại chọn ảnh Save Button Không N hấn Lưu thay đổivào database Cancel Button Không N hấn Trở về trang xem món ăn Homepage Checkbox không Check Invisible Checkbox Không Check Trang: 104  2.2..9. Quản lý hình ảnh: • Chọn: Tên Kiểu Bẫy lỗi Sự kiện Hành động Datagrid Datagrid Không Select Chọn 1 dòng Select Button Không N hấn Chuyển dữ liệu tới nơi yêu cầu Cancel Button Không N hấn Trở về trang gọi nó Trang: 105  • Sửa: • Thêm: Tên Kiểu Bẫy lỗi Sự kiện Hành động Path Textbox Không rỗng, max=50 ký tự Save Button Không N hấn Lưu thay đổi vào database Cancel Button Không N hấn Trở về trang xem ảnh Test Button Không N hấn Kiểm tra đường đẫn Trang: 106  2.2..10. Xem phản hồi: Tên Kiểu Bẫy lỗi Sự kiện Hành động N ame Textbox Không rỗng, max=50 ký tự Path Textbox Không rỗng, max=50 ký tự Save Button Không N hấn Lưu vào database Cancel Button Không N hấn Trở về trang xem ảnh Test Button Không N hấn Kiểm tra đường đẫn Tên Kiểu Bẫy lỗi Sự kiện Hành động Month Combobox Không Select Chọn 1 tháng Year Textbox Không rỗng, dạng số nguyên từ 1900 đến 2500 Report Button Không N hấn Vẽ biểu đồ Trang: 107  KẾT LUẬN Sau ba tháng nghiên cứu và thực hiện xây dựng trang web Mimes Restaurant, tổng kết lại đã thu được những kết quả sau: • Hoàn thành đủ toàn bộ những yêu cầu bài toán đặt ra lúc ban đầu • Trang web thể hiện được hình ảnh nổi bật của nhà hàng, cách trình bày món ăn, thực đơn, sự kiện,… sinh động, đẹp mắt, gây được ấn tượng ban đầu. • Hỗ trợ khách hàng đặt món ăn một cách dễ dàng, thao tác đơn giản. • Phần quản trị trang web trình bày hợp lý, tạo thuận lợi cho việc cập nhật thông tin • Thông tin tài khoản được mã hóa và bảo mật tốt. • Trang web được xây dựng theo kiến trúc 3 lớp, tạo sự dễ dàng cho việc bảo trì và nâng cấp sau này. Tuy nhiên, do những lý do khách quan và thời gian có hạn nên trang web cũng có những hạn chế sau: • Chưa thực hiện được cơ chế tự động reset mật khNu và gửi email cho chủ tài khoản khi người dùng lỡ quên mật khNu. • Vài đoạn mã lệnh (code) chưa được tối ưu hóa tuyệt đối, chỉ ưu tiên chạy đúng trước. Bởi vì tài liệu về Flex 3 còn khan hiếm, hơn nữa công nghệ Flex chỉ mới bắt đầu phổ biến ở Việt N am nên việc học hỏi kinh nghiệm còn hạn chế. N hững phần em viết bằng Flex hoàn toàn là những kiến thức tự tìm hiểu trên internet, e-book và những tài liệu do giáo viên hướng dẫn cung cấp. N ếu được tài trợ và có nhiều thời gian hơn, em sẽ phát triển thêm những phần sau: • Xây dựng việc đa ngôn ngữ cho phần tương tác với người dùng • Xuất đơn đặt hàng đã được chấp nhận một cách tự động cho bộ phận nhà bếp và tiếp tân chuNn bị trước cho khách hàng • Quản lý thu chi, nguyên liệu tồn trong kho, nhân viên nhà hàng, quản lý thiết bị,…  Trang: 108  TÀI LIỆU THAM KHẢO [1] [2] [3] [4]  [5] [6] [7] [8] [9] [10] [11]    [12]getting_started_with_Flex3.pdf [13]Orelly-flex-cookbook.pdf [14]McGraw.Hill.Flex.3.A.Beginners.Guide.Mar.2008.pdf [15]FoundationFlexForDesignersJan2008.pdf [16]devguide_flex3.pdf [17] createcomps_flex3.pdf [18] compilerAPI_flex3.pdf [19]Professional ADO.N ET 2 Programming With SQL Server 2005, Oracle, & MySQL (2006).pdf [20] Trang: 109  PHỤ LỤC Hình II-1.3-1: Cơ chế request/response trong Flex ............................................................ 12 Hình II-2-1: Hộp thoại N ew Flex Project ........................................................................... 13 Hình II-2-2: Configuration diaglog .................................................................................... 13 Hình II-2-3: Source Path tab ............................................................................................... 14 Hình II-2-4: Library Path .................................................................................................... 14 Hình II-2-5: Cửa sổ Main Flex Builder .............................................................................. 15 Hình II-2-6: Kết quả thực thi ứng dụng web HelloWord ................................................... 16 Hình II-5: Mô hình 3 lớp (Three_tier) [17] ........................................................................ 20 Hình III-1-1: Mô hình chức năng dành cho người dùng .................................................... 31 Mô hình chức năng dành cho Quản trị và Duyệt đơn hàng: .............................................. 32 Hình III-1-2: Mô hình chức năng dành cho quản trị & người duyệt đơn hàng .................. 32 Hình III-1-3: Mô hình thực thể kết hợp .............................................................................. 33 Hình III-1-4: Mô hình quan hệ giữa các bảng .................................................................... 34 Hình III-2-1-1: Sơ đồ xử lý người dùng đăng nhập ........................................................... 40 Hình III-2-1-2: Sơ đồ xử lý người dùng chỉnh sửa thông tin tài khoản ............................. 41 Hình III-2-1-3: Sơ đồ xử lý người dùng đổi mật khNu ....................................................... 42 Hình III-2-1-4: Sơ đồ xử lý người dùng lấy lại mật khNu .................................................. 42 Hình III-2-1-5: Sơ đồ xử lý người dùng xem giới thiệu ..................................................... 43 Hình III-2-1-6: Sơ đồ xử lý người dùng xem trang chủ ..................................................... 43 Hình III-2-1-7: Sơ đồ xử lý người dùng xem thực đơn ...................................................... 44 Hình III-2-1-8: Sơ đồ xử lý người dùng đặt món ăn .......................................................... 45 Hình III-2-1-9: Sơ đồ xử lý người dùng xem sự kiện ........................................................ 45 Hình III-2-1-10: Sơ đồ xử lý người dùng gửi phản hồi ...................................................... 46 Hình III-2-2-1: Sơ đồ xử lý Admin/Reviewer đăng nhập .................................................. 47 Hình III-2-2-2-1: Sơ đồ xử lý admin xem giới thiệu .......................................................... 48 Hình III-2-2-2-2: Sơ đồ xử lý admin thêm giới thiệu ......................................................... 48 Hình III-2-2-2-3: Sơ đồ xử lý admin xóa giới thiệu ........................................................... 49 Trang: 110  Hình III-2-2-2-4: Sơ đồ xử lý admin sửa giới thiệu ........................................................... 49 Hình III-2-2-3-1: Sơ đồ xử lý admin khóa tài khoản ......................................................... 50 Hình III-2-2-3-2: Sơ đồ xử lý admin cấp quyền ................................................................. 50 Hình III-2-2-3-3: Sơ đồ xử lý Admin/Reviewer đổi mật khNu .......................................... 51 Hình III-2-2-4-1: Sơ đồ xử lý admin xem sự kiện ............................................................. 51 Hình III-2-2-4-2: Sơ đồ xử lý admin thêm sự kiện ............................................................ 52 Hình III-2-2-4-3: Sơ đồ xử lý admin xóa sự kiện ............................................................... 52 Hình III-2-2-4-4: Sơ đồ xử lý admin sửa sự kiện ............................................................... 53 Hình III-2-2-5-1: Sơ đồ xử lý admin xem thực đơn ........................................................... 54 Hình III-2-2-5-2: Sơ đồ xử lý admin thêm thực đơn .......................................................... 54 Hình III-2-2-5-3: Sơ đồ xử lý admin xóa thực đơn ............................................................ 55 Hình III-2-2-5-4: Sơ đồ xử lý admin sửa thực đơn ............................................................ 55 Hình III-2-2-6-1: Sơ đồ xử lý admin xem thực đơn con .................................................... 56 Hình III-2-2-6-2: Sơ đồ xử lý admin thêm thực đơn con ................................................... 56 Hình III-2-2-6-3: Sơ đồ xử lý admin xóa thực đơn con ..................................................... 57 Hình III-2-2-6-4: Sơ đồ xử lý admin sửa thực đơn con...................................................... 57 Hình III-2-2-7-1: Sơ đồ xử lý admin xem món ăn ............................................................. 58 Hình III-2-2-7-2: Sơ đồ xử lý admin thêm món ăn ............................................................ 58 Hình III-2-2-7-3: Sơ đồ xử lý admin xóa món ăn .............................................................. 59 Hình III-2-2-7-4: Sơ đồ xử lý admin sửa món ăn ............................................................... 59 Hình III-2-2-8: Sơ đồ xử lý admin xem thông tin phản hồi ............................................... 60 Hình III-2-2-9: Sơ đồ xử lý reviewer xử lý đơn hàng ........................................................ 61 Hình III-2-2-10-1: Sơ đồ xử lý admin xem hình ảnh ......................................................... 61 Hình III-2-2-10-2: Sơ đồ xử lý admin thêm hình ảnh ........................................................ 62 Hình III-2-2-10-3: Sơ đồ xử lý admin xóa hình ảnh .......................................................... 62 Hình III-2-2-10-4: Sơ đồ xử lý admin sửa hình ảnh ........................................................... 63

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

  • pdfThiết kế và xây dựng website Mimes Restaurant.pdf