Action Controller chứacác action để điều khiển model và view, thêm vào đó nó quản lý các sessionngười dùng , luồng chảy ứng dụng, caching, mô đun helper và các thực thi các bộ lọc trong
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CÔNG NHÂN
ĐỀ TÀIPhần mềm QUẢN LÝ NHÀ HÀNG
Trang 2MỤC LỤC
MỞ ĐẦU 2
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 4
1.1 NỘI DUNG LÝ THUYẾT 4
1.2 MÔ TẢ YÊU CẦU 10
1.3.KẾT CHƯƠNG 10
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 11
2.1 PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ HỆ THỐNG: 11
2.2KẾT CHƯƠNG 13
CHƯƠNG 3: MÔI TRƯỜNG CÀI ĐẶT VÀ ĐÁNH GIÁ 14
3.1 MÔI TRƯỜNG CÀI ĐẶT 14
3.2 KẾT QUẢ TRIỂN KHAI 15
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 21
1) KẾT QUẢ ĐẠT ĐƯỢC 21
2) HƯỚNG PHÁT TRIỂN 21
Trang 32.2 Ý nghĩa
Công cụ quản lý hiệu quả, đơn giản, chuyên nghiệp Đáp ứng những yêu cầucần thiết để xây dựng một hệ thống nhà hàng chặt chẽ, đề cao tính sáng tạo,
Trang 43 Phương pháp thực hiện
Gợi ý các phương pháp:
Phương pháp phân tích tổng hợp từ tài liệu: sử dụng tài liệu
Phương pháp phân tích thiết kế hệ thống
4 Bố cục của đề tài
Báo cáo đề tài bao gồm các nội dung sau:
Mở đầu
Chương 1: trình bày Tổng quan về đề tài
Chương 2: trình bày Phân tích và thiết kế hệ thống
Chương 3: trình bày Môi trường cài đặt và đánh giá
Kết luận và hướng phát triển.
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 NỘI DUNG LÝ THUYẾT
Ruby on Rails (RoR) là một web framework được viết bằng ngôn ngữ Ruby
và tất cả các ứng dụng trong Rails sẽ được viết bằng Ruby Ruby on Railsđược tạo ra để hỗ trợ các lập trình viên việc phát triển các phần mềm nềnweb một cách nhanh nhất có thể Rails bao gồm web server, các hỗ trợ kếtnối cơ sở dữ liệu và nhiều thứ khác nữa.
a) Một số nội dung liên quan đến Rails
Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu lớn như MySQL, Oracle, MS SQL, PostgreSQL…
Ngôn ngữ script Ruby được viết bên phía Server
Trang 6 Có các bộ sinh script để tự động thực hiện các task
Tương ứng với các đặc điểm trên RoR gồm các thành phần sau:
Action Mailer
Mô đun này chịu trách nhiên cung cấp các dịch vụ email Nó xử lý các emailđến và cho phép tao mới các email Mô đun này có thể xử lý từ những emailtext đơn giản đến những email có các định dạng phức tạp Action Mailerđược kế thừa từ Action Controller, nó cung cấp các phương thức để tao emailvới các template cũng giống như Action View sử dụng nó để render cáctrang lên trình duyệt
Action Pack
Mô đun Action Pack cung cấp các lớp ở tầng controller và view trong môhình MVC Những mô đun này tiếp nhận request từ client và sau đó ánh xạchúng đến các action tương ứng những action này được định nghĩa trongtầng controller và sau đó các action này sẽ render view hiển thị lên trìnhduyệt Action Pack được chia thành 3 mô đun con, đó là:
Action Dispatch: xử lý routing các request, nó parse các request và xử lýmột vài quá trình liên quan đến giao thức HTTP như xử lý cookies, session…
Action Controller: Sau khi Action Dispatch xử lý request nó sẽ routingcác request đến các controller tương ứng, Mô đun này cung cấp các basecontroller tất để các controller khác có thể kế thừa từ nó Action Controller chứacác action để điều khiển model và view, thêm vào đó nó quản lý các sessionngười dùng , luồng chảy ứng dụng, caching, mô đun helper và các thực thi các
bộ lọc trong các quá trình tiền xử lý
Action View: Được gọi bởi Action Controller Nó render các view khi cóyêu cầu, Action View cung cấp các master layouts, templates và các viewhelpers , các thành phần này hỗ trợ việc sinh tự động ra phần khung cho cáctrang HTML hay các định dạng khác Có 3 template trong Rails là : rhtml, rxml
và rjs Định dạng rhtml sinh ra các view HTML cho người dùng có nhúng thêmcác đoạn code Ruby (ERB), rxml được sử dụng để xây dựng các tài liệu XML,rjs cho phép tạo ra các đoạn mã động JavaScript để thực thi các AJAXfunctionality
Active Model
Định nghĩa interface giữa mô đun Action Pack và Active Record Giao diệnAction Record có thể được dùng bên ngoài Rails, cung cấp các chức năngObject – relational mapping (ORM) ORM là một kỹ thuật lập trình giúpchuyển đổi dữ liệu giữa các thệ thống không tương thích được viết bởi cácngôn ngữ hướng đối tượng
Trang 7 Active Record
Được sử dụng để quản lý dữ liệu trong các cơ sở dữ liệu quan hệ thông quacác đối tượng Trong RoR mô đun Active Record cung cấp object –relational mapping đến các class Mô đun này xây dựng nên tầng model,giúpkết nối các bảng database với các lớp tương ứng trong các lớp Ruby Railscung cấp các công cụ để thực thi chức năng CRUD mà không phải cấu hình.CRUD cho phép tạo mới, đọc, cập nhật và xóa các bản ghi trong cơ sở dữliệu thông qua các đối tượng Ruby Thêm vào đó, nó cũng cung cấp các khảnăng tìm kiếm thông minh và khả năng tạo ra các mối quan hệ hay các liênkết giữa các model Active Records có những quy ước rất chặt chẽ bắt cácdeveloper phải tuân thủ theo như : phải đặt tên lớp, các bảng, các khóa chính
và khóa ngoài như thế nào
Mô đun này được sử dụng để tạo ra các lớp trong tầng Model, chúng chứađựng phần logic nghiệp vụ, xử lý validate và các mối quan hệ, ánh xạ đếncác bảng và hỗ trợ kết nối đến các hệ quản trị cơ sở dữ liệu khác nhau
Active Resource
Quản lý các kết nối giữa RESTful web services và các đối tượng nghiệp vụ,làm giảm số lượng code cần viết để ánh xạ đến các tài nguyên ActiveResource ánh xạ model class đến các tài nguyên REST ở xa cũng giống nhưcách mà Active Record ánh xạ từ model class đến các bảng cơ sở dữ liệu Nócũng cung cấp các cơ chế proxy giữa Active Resource (client) và mộtRESTful service Khi một có một request cần truy cập đến các tài nguyên ở
xa, một REST XML được sinh ra và được truyền đi, sau đó kết quả sẽ đượcparse sang các đối tượng Ruby
Active Support
Là một bộ tiện ích và các thư viện chuẩn của Ruby, nó hữu ích cho quá trìnhphát triển ứng dụng vì nó bao gồm rất nhiều sự hỗ trợ cho các multi-bytesstring, internationalization, time zones và testing
Railties
Đảm nhiệm kết nối tất các các mô đun ở trên với nhau, thêm vào đó nó xử lýquá trình mồi cho ứng dụng, giao diện dòng lệnh, và cung cấp bộ sinh codecủa Rails Rake là một trong những lệnh được sử dụng để thực hiện các taskdatabase, triển khai, tài liệu, testing và cleanups
Trang 8Mô hình MVC
RoR sử dụng các mẫu kiến trúc Model – View – Controller(MVC) để tăngcường khả năng bảo trì và phát triển của ứng dụng MVC cho phép chúng tachia ứng dụng thành các tầng sử lý logic, nghiệp vụ và giao diện người dùngmột cách rõ ràng, điều này cũng gúp cho việc kiểm thử và tái sử dụng codeđược dễ ràng hơn
Model
Tầng Model xử lý các nghiệp vụ của ứng dụng và trực tiếp thao tác với dữliệu Trong RoR, tầng model thường được sử dụng để tương tác với cácthành phần tương ứng với chúng trong cơ sở dữ liệu và validate dữ liệu
View
Tầng view hiển thị giao diện người dùng, trong RoR các view là các fileHTML được nhúng cùng với các đoạn mã Ruby Các đoạn mã Ruby đượcnhúng trong HTML file là khá đơn giản, thường chỉ gồm các vòng lặp và cáclệnh điều kiện rẽ nhánh, nó được sử dụng để hiện thị dữ liệu lên form củaview
Controller
Trang 9Controller tương tác với model và view Các request đến từ trình duyệt sẽđược xử lý bởi controller, sau đó controller có thể sẽ tương tác với model đểlấy dữ liệu sau đó trả về cho view để hiển thị thông tin.
Cấu Trúc Thư Mục Của Ruby on Rails
Sau khi sử dụng các lệnh có trong Ruby on Rails để tạo ra ứng dụng blog đầutiên thì bạn sẽ thấy trên thư mục gốc của ứng dụng Rails đã tạo sẵn một danhsách các thư mục và tập tin cho bạn Ruby on Rails Framework gợi ý mộtcấu trúc thư mục cho các lập trình viên khi phát triển ứng dụng Hầu hết tất
cả các ứng dụng được viết dựa trên Ruby on Rails thường tuân theo một cấutrúc thư mục thống nhất với mỗi thư mục khác nhau sẽ được sử dụng với cácmục định khác nhau
models: các tập tin models được dùng để tương tác với database trong
ứng dụng (hoặc dùng để mô phỏng một đối tượng mà không cần kết nốitới database)
helpers: các tập tin helpers chứa các hàm (hoặc các lớp) hỗ trợ và được
sử dụng bởi controllers, models hay views.
views: các tập tin views được sử dụng bởi controller dùng để hiển thị nội
dung của trang
mailers: bao gồm các template mẫu dùng để gửi email.
assets: bao gồm các tập tin như ảnh, css, javascripts
Thư mục này bao gồm các đoạn mã script để khởi động ứng dụng Rails hoặc
dùng để thiết lập hay deploy ứng dụng
Thư Mục config
Thư mục này dùng để cấu hình ứng dụng như cấu hình các thông số của
database, định nghĩa các routes
Trang 10Tập Tin Gemfile và Gemfile.lock
Tập tin Gemfile dùng để liệt kê những gem nào dùng trong ứng dụng
và Gemfile.lock dùng để ghi lại thông tin về quá trình cài đặt các gem
Thư Mục lib
Bao gồm các thư viện được dùng trong ứng dụng Thông thường các thư việnnày được viết bởi chính những lập trình viên tham gia vào viết ứng dụng.Các thư viện của bên thứ 3 thường không được đặt ở trong thư mục này mà
sẽ để trong thư mục vendor mà tôi sẽ đề cập ở phần dưới đây.
logo.png Thông thường chúng ta sẽ để chứa các tập tin css, javascript hay
hình ảnh trong thư mục này
Tập Tin Rakefile
Tập tin Rakefile được Rails sử dụng để tìm kiếm các tác vụ mà chúng có thể được thực thi trên cửa sổ dòng lệnh thông qua rake Bạn không nên định nghĩa trực tiếp các tác vụ này trong Rakefile mà việc định nghĩa các tác vụ này được thực hiện thông qua các tập tin trong thư mục lib/tasks.
Tập tin này chứa các thông tin tổng quan về ứng dụng như mô tả ngắn gọnmục đích của ứng dụng, phiên bản ứng dụng, thông tin tác giả viết ứng dụnghay loại giấy phép phát hành ứng dụng
Thư Mục test
Thư mục này dùng để chứa các test case sử dụng trong ứng dụng bao
gồm unit tests, fixture tests và các loại test khác có trong Ruby on Rails.
Trang 111.2 MÔ TẢ YÊU CẦU
1.3.KẾT CHƯƠNG
Chương này trình bày tổng quan về phần mềm quản lý nhà hàng
Trang 12CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ HỆ THỐNG:
- Điều trước hết của hệ thống quản lý nhà hàng là phải có 1 hệ thống quản lý tàikhoản có phân quyền (người dùng và admin) Cơ bản của hệ thống tài khoản nàydựa theo cuốn sách Ruby On Rails Tutorial (Rails 5) Trong đó bao gồm các chứcnăng: User có thể tạo mới, đăng nhập, xem thông tin cá nhân, và tiện ích điềuhướng; Chỉ có duy nhất 1 tài khoản Admin được cấp lúc khởi động website, cónghĩa là không thể tạo mới cũng như xóa tài khoản Admin, admin có tất cả mọiquyền hành thao tác với các User: xem, thay đổi , xóa,…
- Các chức năng của website nhà hàng chủ yếu là thao tác với menu nên tấtnhiên tiếp theo phải làm chức năng menu Tuy nhiên để thuận lợi cho việc thay đổi
dữ liệu và tránh gặp lỗi thì làm chức năng Categories – mỗi category chứa nhiềumenu – trước Category có thể dược (thêm-đọc-sửa-xóa) bởi admin Upload ảnh chomỗi category chúng em dùng gem CarrierWave Tiếp theo tạo chức năng Menutương tự Category Chức năng bổ sung với menu là có thể search (tìm kiếm), vàPagination (phân trang) để tránh đổ hết dữ liệu một lúc Sau đó kết nối 2 model lạivới nhau với quan hệ: Category chứa nhiều menu – mỗi menu chỉ thuộc về duy nhất
1 Category
- Hình dưới đây là sơ đồ quan hệ giữa 2 model Category và MenuItem
- Thao tác của 2 model trên giới hạn với User với access control hỗ trợ bởi rails.User chỉ có thể xem, tìm kiếm
- Nói rõ hơn về chức năng tìm kiếm Cách thực hiện như sau: tạo một search box(html form) để nhập chuỗi tìm kiếm Trong sự kiện submit form điều hướng đếnchính trang hiện tại tuy nhiên thêm query param (tham số) chính là chuỗi cần tìmkiếm) Tại controller thêm code xử lý thay vì trả về các MenuItem theo thứ tự thìnếu có param thì chỉ trả về các MenuItem có name chứa chuỗi tham số (chuỗi đãnhập vào form)
Trang 13- Mục đích của quản lý nhà hàng online không chỉ để user xem menu mà còn có thểorder trực tuyến Mỗi order phải trả lời được các câu hỏi như: bàn nào? user nàođặt? đặt món nào? mỗi món đặt bao nhiêu? tổng giá mỗi món? tổng giá order? đặtkhi nào? được chấp nhận chưa? thời gian lúc tạo order? Để thuận lợi cho user cóthể thoải mái thay đổi order trước khi xác nhận order, mỗi user sẽ has_one (có một)một bộ đệm order – TempOrder – giống như giỏ hàng sẽ chứa các thông tin nhưOrder trừ thông tin đã được chấp nhận bởi admin Sau khi User xác nhận Order –chính là TempOrder – thì sẽ có một Order được tạo mới của chính User đó Ordernày sao chép thông tin từ TempOrder đã xác nhận Sau đó ta clear lại TempOrdercủa User đó.
- Hình dưới đây là quan hệ giữa các model liên quan đến chức năng Order
- Với TempOrder (giống như giỏ hàng) quan hệ tương tự Order nhưng Userchỉ has_one thay vì has_many, ngoài ra ta bỏ isAccepted? (đã được chấp nhận chưa)
Trang 14- Với Order mà không đặt món thì coi như chỉ đặt bàn.
- Chỉ admin mới có thể toàn quyền thao tác trên model Order
- Ta có thể tạo trang xem các Order mới nhất dựa vào thời gian tạo Order
- Ta có quan hệ Table has_many Order – Order belongs_to Table Vì thế từ table cóthể xuất ra các Order mà đặt Table đó
- Mỗi Order ta coi như một bill Dùng access control của rails để chỉ Admin mới cóthể xem, chỉnh sửa, xóa bill (Order)
- Để quản lý nhân viên (Staff), ta tạo model Staff chứa các thông tin cần thiết củanhân viên như: tên, tuổi, địa chỉ, mô tả, hình ảnh Cũng tương tự như menu Tuynhiên chỉ Admin mới có thể thao tác với Staff được
Trang 152.2 KẾT CHƯƠNG
Chương này trình bày các bước phân tích yêu cầu và thiết kế các chức năng cơbản của hệ thống quản lý nhà hàng Đây là nền tảng để dễ dàng bổ sung các tínhnăng sau này
Trang 16CHƯƠNG 3: MÔI TRƯỜNG CÀI ĐẶT VÀ ĐÁNH GIÁ
Để có thể sử dụng Ruby on Rails chúng ta cần cài đặt trên máy tính các phầnmềm sau:
1/Ruby: Ngôn ngữ lập trình sử dụng bởi Ruby on Rails
2/RubyGems: Chương trình quản lý thư viện Ruby (còn được gọi là gem) trênmáy tính (hoặc máy chủ)
3/Ruby on Rails: Khác với một số framework khác, Ruby on Rails frameworkđược sử dụng như một phần mềm và do đó ta cần cài đặt Rails trên máy tính (hoặcmáy chủ)
4/SQLite3: Phần mềm quản trị cơ sở dữ liệu dùng trong ứng dụng Rails có thể
sử dụng với nhiều chương trình quản trị cơ sở dữ liệu khác nhau
Ruby là ngôn ngữ đa nền tảng và có thể được cài đặt trên các hệ điều hành phổbiến như Windows, Mac OS, và các phiên bản của Linux như Ubuntu, LinuxMint, Trong ứng dụng web Quản lí nhà hàng này , ta cài đặt trên môi trườngUbuntu
Trang 18Home 1.3
Login
Trang 19Foods
Trang 20Jobs Management
Staffs Management
Trang 21OrderỨng dụng quản lí nhà hàng thể hiện được rõ các tính năng như:
Đối với người dùng:
+ Có thể xem menu, tìm kiếm và đặt món ăn
+ Có thể đặt bàn và quyết định đặt các món ăn cùng lúc hoặc không
Trang 22Đối với người quản trị:
+ Quản lí menu : thêm , xóa, chỉnh sửa, sắp xếp theo ngày, tháng
+ Quản lí phân loại : thêm, xóa, chỉnh sửa các loại đồ ăn, đồ uống
+ Quản lí nhân viên: thêm, xóa, chỉnh sửa thông tin nhân viên
+ Quản lí công việc: thêm, xóa, chỉnh sửa các dạng công việc
+ Quản lí bill: tạo, thêm, xóa, chỉnh sửa các hóa đơn (theo bàn, khách hàng, nhan viên)
+ Quản lí bàn: kiểm tra việc đặt bàn của khách hàng
Trang 23KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 KẾT QUẢ ĐẠT ĐƯỢC
Trong thời gian tìm hiểu, nghiên cứu cơ sở lý thuyết và triển khai ứng dụngcông nghệ, đề tài đã đạt được những kết quả sau:
Về mặt lý thuyết, đề tài đã đạt được khá đầy đủ kiến thức về
Ruby,web-framework Rails, HTML, CSS, Jquery căn bản cũng như thiết kế database đúng vớiyêu cầu đề tài
Về mặt thực tiễn ứng dụng, đề tài đáp ứng được nhu cầu của người dùng cũng
như người quản trị nhà hàng Cả người dùng và quản trị đều có thể thao tác dễ dàngtrên website Ứng dụng Quản lí nhà hàng rất tiện dụng và thích hợp cho việc quản lícác nhà hàng vừa và nhỏ, giúp việc điều hành được hoạt động tiện lợi , nhanh chóng
và có tổ chức hơn
Tuy nhiên, đề tài còn tồn tại các vấn đề như sau:
Việc tính toán thu nhập, chi tiêu của nhà hàng vẫn còn chưa thực hiệnđược
Việc tương tác với khách hàng thông qua email vẫn chưa thực hiện được
2 HƯỚNG PHÁT TRIỂN
Một số số hướng phát triển của đề tài như sau:
Sửa chữa được những thiếu sót trong các vấn đề tồn tại