Tải bản đầy đủ (.docx) (21 trang)

BÁO CÁO THỰC TẬP CÔNG NHÂN ĐỀ TÀI Phần mềm QUẢN LÝ NHÀ HÀNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (680.73 KB, 21 trang )

TRƯỜ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ÀI

Phần mềm
QUẢN LÝ NHÀ HÀNG

Đà Nẵng, 05/2017


MỤC LỤC

MỞ ĐẦU
1.

Tổng quan về đề tài

Phần
mềm
2


Quản lý nhà hàng là một ứng dụng Ruby dựa trên nền tảng framework Rails, Quản lý
nhà hàng là một phần mềm với những chức năng cơ bản trong việc quản lý, phân
quyền giám sát, thay đổi nội dung các bộ phận cấu tạo nên nhà hàng,.. trong công tác
quản lý, giới thiệu nhà hàng.
2. Mục đích và ý nghĩa của đề tài
2.1. Mục đích


Cho phép khách hàng dễ dàng tương tác với các thành phần của nhà hàng, giúp tiết
kiệm thời gian, công sức, tiền bạc trong việc quản lý cũng như phát triển nhà hàng.
Giúp kết nối nhà hàng đến với người người dùng, phát triển nhà hàng theo hướng
chuyên nghiệp.

2.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ầu cầ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, cũng như thu
hút những người yêu ẩm thực khắp mọi nơi.

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


Kết luận và hướng phát triển.

4



CHƯƠ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ền web một cách nhanh nhất có
thể. Rails bao gồm web server, các hỗ trợ kết nố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

Kiến trúc RoR
Kiến trúc của RoR có những đặc điểm sau:


Kiến trúc MVC



Representational Sate Transfer (REST) cho các web services
REST viết tắt của Representational State Transfer. REST là một sự thay thế cho web
service, chứ SOAP và WSDL. RESTful web service thích hợp khi mà các service
web có tính chất phi trạng thái, bandwith bị giới hạn (Nó rất phù hợp cho các thiết bị
mobile vì nó không sử dụng nhiều tài nguyên như là các giao thức khác như SOAP)



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
5




Sử dụng các quy ước thay vì phải cấu hinh



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 email text đơ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 email với các template cũng giống
như Action View sử dụng nó để render các trang 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 trong tầng controller và sau đó các
action này sẽ render view hiển thị lên trình duyệt. Action Pack được chia thành 3 mô
đun con, đó là:



Action Dispatch:



Action Controller:



Action View: Được gọi bởi Action Controller. Nó render các view khi có yêu cầu,

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…
Sau khi Action Dispatch xử lý request nó sẽ routing các
request đến các controller tương ứng, Mô đun này cung cấp các base controller tất để các
controller khác có thể kế thừa từ nó. Action Controller chứa các action để điều khiển
model và view, thêm vào đó nó quản lý các session ngườ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 cung cấp các master layouts, templates và các view helpers , các thành
phần này hỗ trợ việc sinh tự động ra phần khung cho các trang 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êm cá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 AJAX functionality.


Active Model
Định nghĩa interface giữa mô đun Action Pack và Active Record. Giao diện Action
Record có thể được dùng bên ngoài Rails, cung cấp các chức năng Object – relational
6


mapping (ORM). ORM là một kỹ thuật lập trình giúp chuyển đổi dữ liệu giữa các thệ
thống không tương thích được viết bởi các ngôn ngữ hướng đối tượng


Active Record
Được sử dụng để quản lý dữ liệu trong các cơ sở dữ liệu quan hệ thông qua cá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úp kết nối các bảng database với
các lớp tương ứng trong các lớp Ruby. Rails cung 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ên kết giữa các model. Active Records có những quy ước rất chặt chẽ bắt các
developer 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ạ đến cá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. Active Resource á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ột RESTful 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ẽ được parse 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ình phát
triển ứng dụng vì nó bao gồm rất nhiều sự hỗ trợ cho các multi-bytes string,
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 code của Rails.
Rake là một trong những lệnh được sử dụng để thực hiện các task database, triển
khai, tài liệu, testing và cleanups.
7



Mô hình MVC
RoR sử dụng các mẫu kiến trúc Model – View – Controller(MVC) để tăng cường khả
năng bảo trì và phát triển của ứng dụng. MVC cho phép chúng ta chia ứng dụng
thành các tầng sử lý logic, nghiệp vụ và giao diện người dùng mộ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ác thà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 file HTML được
nhúng cùng với các đoạn mã Ruby. Các đoạn mã Ruby được nhúng trong HTML file
là khá đơn giản, thường chỉ gồm các vòng lặp và các lệnh điều kiện rẽ nhánh, nó
được sử dụng để hiện thị dữ liệu lên form của view.

Controller

8


Controller 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 đầu tiê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 danh sách các thư

mục và tập tin cho bạn. Ruby on Rails Framework gợi ý một cấ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ấu trú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ác mục định khác nhau.
Thư Mục app

Thư mục này chứa các controllers, models, views, helpers, mailers và assets cho ứng
dụng. Trong đó:


controllers: các tập tin controller dùng để điều hướng luồng chạy của ứng dụng.



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ối tớ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 components

Các components giống như một ứng dung
các models, views và controllers của riêng nó.

mini







thể

chứa

Thư Mục bin

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



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

Tập Tin config.ru
Tập tin này dùng để cấu hình cho Rack server nếu bán sử dụng Rack để chạy ứng
dụng.
Thư Mục db

Thư mục này chứa các tập tin dùng để tạo cấu trúc schema cho database và các tập
tin migrations.
Tập Tin Gemfile và Gemfile.lock

Tập tin Gemfile dùng để liệt kê những gem nào dùng trong
và Gemfile.lock dùng để ghi lại thông tin về quá trình cài đặt các gem.

ứng

dụng

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ện nà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.
Thư Mục log


Chứa các bản ghi log các thông tin trong quá trình cài đặt, khởi động, chạy hay
ngừng ứng dụng.
Thư Mục public

Nội dung của các tập tin đặt trong thư mục này sẽ có thể được tải trực tiếp về trình
duyệt. Ví dụ ứng dụng của bạn được truy cập thông qua tên miền
là hoclaptrinh.org thì khi bạn để một tập tin có tên là logo.png trong thư mục này,
bạn có thể truy cập trực tiếp tập tin trên qua đường dẫn hoclaptrinh.org/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
10


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 README.rdoc
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ọn mục đích
của ứng dụng, phiên bản ứng dụng, thông tin tác giả viết ứng dụng hay 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.
Thư Mục

tmp


Lưu các tập tin tạm thời thường là các tập tin cache, pid hay sessions.
Thư Mục

vendor

Thư mục này chứa các thư viện của bên thứ 3 được sử dụng trong ứng dụng.
Trên đây là danh sách các thư mục và tập tin được sử dụng trong ứng dụng Rubu on
Rails và mô tả ngắn gọn nội dung của chúng. Thông qua bài viết này hy vọng bạn có
được cái nhìn tổng quan về cấu trúc của một ứng dụng Ruby on Rails.

11


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

12


CHƯƠ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ài khoả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ày dựa theo cuốn
sách Ruby On Rails Tutorial (Rails 5). Trong đó bao gồm các chức năng: User có thể tạo
mới, đăng nhập, xem thông tin cá nhân, và tiện ích điều hướ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ọi quyề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ất nhiê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ều menu – trước. Category có
thể dược (thêm-đọc-sửa-xóa) bởi admin. Upload ảnh cho mỗi category chúng em dùng gem
CarrierWave. Tiếp theo tạo chức năng Menu tươ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ại vớ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

Category
-

Content: string
ImageUrl: string

has_many

MenuItem
- Name: string

belongs_to

- Price: integer
- Description: text

- Thao tác của 2 model trên giới hạn với User với access
control hỗ trợstring
bởi rails. User chỉ
- ImageUrl:

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 đến chính trang hiện
tại tuy nhiên thêm query param (tham số) chính là chuỗi cần tìm kiế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).
- 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
13


nào? mỗi món đặt bao nhiêu? tổng giá mỗi món? tổng giá order? đặt khi 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 đó. Order này sao chép thông tin từ TempOrder đã xác nhận. Sau đó ta
clear lại TempOrder củ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 User chỉ
has_one thay vì has_many, ngoài ra ta bỏ isAccepted? (đã được chấp nhận chưa)

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ủa nhân viên
như: tên, tuổi, địa chỉ, mô tả, hình ảnh. Cũng tương tự như menu. Tuy nhiên chỉ Admin mới
có thể thao tác với Staff được.

Staf
- name: string
-

age: integer
address: text
description: text
imageUrl: string
15


2.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ính năng sau này.

16


CHƯƠNG 3: MÔI TRƯỜNG CÀI ĐẶT VÀ ĐÁNH GIÁ
3.1


MÔI TRƯỜNG CÀI ĐẶT

Để 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ần mề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ên má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ặc má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, Linux Mint,...Trong ứng dụng
web Quản lí nhà hàng này , ta cài đặt trên môi trường Ubuntu.

Ubuntu

3.2 KẾT QUẢ TRIỂN KHAI.
Một số hình ảnh kết quả ứng dụng quản lí nhà hàng :
Home 1.1
Home 1.2
Home 1.3
Login
Menu
Foods
Jobs Management
Staffs Management

17



Review

Order
Ứ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 .
+ Có thể đánh giá nhà hàng.
18


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

19


KẾ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ụng cô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ới yê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àng trê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.


20


TÀI LIỆU THAM KHẢO
Tiếng Anh
Internet

/>
21



×