Tác nhân kích hoạt User, Admin Tiền điều kiện Tồn tại tài khoản Các bước thực hiện Bước 1: Vào màn hình đăng nhập hoặc trang chủ Bước 2: Nhập Username/Email và Mật khẩu Bước 3: Nhấn b
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
ỨNG DỤNG RUBY ON RAILS XÂY
DỰNG WEBSITE COOKGRAM
GVHD: LÊ THỊ MINH CHÂU SVTH: TÔ NGỌC ÁNH MSSV:16126003
SVTH: MÃ NGỌC TÚ MSSV:16110254
Tp Hồ Chí Minh, tháng 07/2020
SKL 0 0 7 0 7 2
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Nghành: CÔNG NGHỆ THÔNG TIN
GVHD: THS LÊ THỊ MINH CHÂU
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
-*** -Tp Hồ Chí Minh, ngày tháng năm 2020
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên 1: Tô Ngọc Ánh MSSV1: 16126003
Họ và tên sinh viên 2: Mã Ngọc Tú MSSV2: 16110254
Nghành: Công Nghệ Thông Tin Lớp: 16110CLST4
Giảng viên hướng dẫn: ThS Lê Thị Minh Châu ĐT: 090.2200.557
Ngày nhận đề tài: 25/02/2020 Ngày nộp đề tài: 01/07/2020
1 Tên đề tài: Ứng dụng ruby on rails xây dựng website cookgram
2 Các số liệu, tài liệu ban đầu:
Đồ án phát triển dựa trên đề tài Tiểu luận chuyên ngành
3 Nội dung thực hiện đề tài:
- Ứng dụng Ruby on Rails xây dựng website chia sẻ công thức nấu ăn: Cải thiện, phát triển thêm chức năng và hoàn thiện sản phẩm đã có từ tiểu luận chuyên nghành
- Tìm hiểu và cài đặt thêm các chức năng như: Gợi ý món ăn, tìm kiếm và
chatbot để hỗ trợ người dùng
4 Sản phẩm:
Webistie Cookgram – website chia sẻ công thức nấu ăn
Trang 4CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
*****
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Họ và tên sinh viên 1: Tô Ngọc Ánh MSSV1: 16126003
Họ và tên sinh viên 2: Mã Ngọc Tú MSSV2: 16110254 Nghành: Công Nghệ Thông Tin
Tên đề tài: Ứng dụng ruby on rails xây dựng website cookgram
Họ và tên giảng viên hướng dẫn: ThS Lê Thị Minh Châu
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2020
Giảng viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 5CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
*****
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
Họ và tên sinh viên 1: Tô Ngọc Ánh MSSV1: 16126003
Họ và tên sinh viên 2: Mã Ngọc Tú MSSV2: 16110254 Nghành: Công Nghệ Thông Tin
Tên đề tài: Ứng dụng ruby on rails xây dựng website cookgram
Họ và tên giảng viên phản biện:
NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2020
Giảng viên phản biện
(Ký & ghi rõ họ tên)
Trang 6i
LỜI CẢM ƠN
Để hoàn thành tốt đề tài khóa luận tốt nghiệp này, ngoài sự nỗ lực từ chính bản thân, nhóm em còn nhận được sự quan tâm giúp đỡ, chỉ bảo tận tình của nhiều cá nhân, tập thể Người mà chúng em không quên gửi lời cảm ơn sâu sắc
Đầu tiên, nhóm em xin chân thành cảm ơn khoa Đào tạo Chất lượng cao – nghành Công nghệ thông tin, trường Đại học Sư Phạm Kỹ Thuật TP Hồ Chí Minh và thầy
Nguyễn Đăng Quang – trưởng nghành CNTT đã tạo điều kiện thuận lợi cho chúng
em thực hiện đề tài này
Chúng em cũng xin được gửi lời cảm ơn chân thành nhất đến cô Lê Thị Minh Châu,
người đã tận tình chỉ bảo và hướng dẫn nhóm em trong suốt quá trình thực hiện đề tài này
Bên cạnh đó, chúng em xin gửi lời cảm ơn đến các thầy cô giảng viên của trường Đại học Sư Phạm Kỹ Thuật TP Hồ Chí Minh nói chung cũng như các thầy cô giảng viên khoa Đào tạo Chất lượng cao, nhất là nghành Công nghệ thông tin nói riêng, những người đã giảng dạy, tích lũy cho chúng em những kiến thức quý báu trong những năm học vừa qua Đó là nền tảng giúp chúng em làm nên đề tài này và cũng là tiền đề giúp chúng em tiến xa hơn nữa trong tương lai
Dù đã cố gắng hoàn thành đề tài khóa luận đúng yêu cầu, nhưng do thời gian hạn hẹp và khả năng còn hạn chế nên chắc chắn nhóm sẽ không tránh khỏi nhiều thiếu sót Chúng em mong nhận được sự thông cảm và tận tình chỉ bảo của các thầy cô và các bạn
Nhóm chúng em một lần nữa xin chân thành cảm ơn
Trân trọng
Trang 7ii
TÓM TẮT ĐỒ ÁN TỐT NGHIỆP
Đề tài: ỨNG DỤNG RUBY ON RAILS XÂY DỰNG WEBSITE COOKGRAM
Ngày nay với sự phát triển của công nghệ thông tin, nhu cầu chia sẻ, cập nhật thông tin là không thể thiếu đối với con người trong cuộc sống hằng ngày Từ đó, một thế giới mang tên Mạng xã hội ra đời, đó là nơi mà mọi người, đặc biệt là giới trẻ rất yêu thích Và với xu hướng đó, nhóm chúng em đã tạo ra Cookgram – một mạng xã hội nho nhỏ chuyên về nấu ăn, dành cho những người có cùng sở thích bếp núc có thể cập nhật mọi công thức mới, chia sẻ, giao lưu, kết bạn
Trang 8iii
MỤC LỤC
TRANG
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ii
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN iii
LỜI CẢM ƠN i
TÓM TẮT ĐỒ ÁN TỐT NGHIỆP ii
MỤC LỤC iii
DANH MỤC CÁC TỪ VIẾT TẮT vi
DANH MỤC CÁC BẢNG BIỂU vii
DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH ix
CHƯƠNG 1: TỔNG QUAN 1
1.1 Tính cấp thiết của đề tài 1
1.1.1 Vấn đề đặt ra 1
1.1.2 Khảo sát hiện trạng 1
1.1.3 Hướng giải quyết 4
1.2 Mục tiêu đề tài 4
1.3 Đối tượng nghiên cứu 4
CHƯƠNG 2: YÊU CẦU HỆ THỐNG 5
2.1 Yêu cầu người dùng 5
2.2 Yêu cầu hệ thống 5
2.2.1 Yêu cầu chức năng 5
2.2.2 Yêu cầu phi chức năng 16
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 17
3.1 Tổng quan hệ thống 17
3.1.1 Mô hình MVC 17
3.1.2 Mô hình MVC trong Ruby on rails 17
3.1.3 Class Diagram 19
3.2 Database 20
3.2.1 ERD 20
Trang 9iv
3.2.2 Physical diagram 21
3.2.3 Đặc tả chi tiết database 21
3.3 Sequence diagram 25
3.3.1 SQ001_UC002 Đăng ký 25
3.3.2 SQ002_UC001a Đăng nhập 25
3.3.3 SQ003_UC005 Xem chi tiết món ăn 25
3.3.4 SQ004_ UC007 Quản lý tài khoản 26
3.3.5 SQ005_UC0011a Quản lý món ăn (user) 26
3.4 Đặc tả API 27
3.4.1 Graph API 27
3.5 Thiết kế giao diện 29
3.5.1 Giao diện Guest 29
3.5.2 Giao diện User 41
3.5.3 Giao diện Admin 52
CHƯƠNG 4: TRIỂN KHAI HỆ THỐNG 57
4.1 Nền tảng phát triển 57
4.1.1 Nền tảng công nghệ 57
4.1.2 Framework, thư viện 57
4.2 Công nghệ sử dụng 58
4.2.1 Ruby on rails 58
4.2.2 Database MySQL [2] 60
4.2.3 Google Dialogflow [3] 61
4.2.4 Recommendation systems [4] 62
4.2.5 Search engine elasticsearch [5] 64
CHƯƠNG 5: KIỂM THỬ VÀ CÀI ĐẶT HỆ THỐNG 67
5.1 Kiểm thử phần mềm 67
5.1.1 Kế hoạch kiểm thử 67
5.1.2 Thiết kế kiểm thử 67
5.1.3 Trường hợp kiểm thử 67
5.1.4 Kết quả kiểm thử 77
5.2 Cài đặt môi trường và hệ thống 79
Trang 10v
5.2.1 Cài đặt framework Ruby on Rails 79
5.2.2 Cài đặt Yarn 80
5.2.3 Cài đặt MySQL Server 80
5.2.4 Cấu hình và tích hợp chatbot 80
5.2.5 Cài đặt và chạy website Cookgram 81
CHƯƠNG 6: KẾT LUẬN 82
6.1 Tiến độ thực hiện 82
6.2 Kết quả đạt được 82
6.2.1 Kiến thức và thực nghiệm 82
6.2.2 Ưu điểm và nhược điểm 83
6.3 Thách thức 83
6.4 Kế hoạch phát triển trong tương lai 83
TÀI LIỆU THAM KHẢO
Trang 11vi
DANH MỤC CÁC TỪ VIẾT TẮT
Admin: Administration (Người quản trị)
MVC: Model-View-Controller
ERD: Entity Relationship Diagram
API: Application Programming Interface (Giao diện lập trình ứng dụng)
SQL: Structured Query Language
HTML: HyperText Markup Language
CRUD: Create – Read – Update – Delete
Trang 12vii
DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1 Bảng câu hỏi khảo sát Cookpad.com 2
Bảng 1.2 Bảng câu hỏi khảo sát Cooky.vn 3
Bảng 1.3 Bảng câu hỏi khảo sát CandyCanCook.com 3
Bảng 2.1 Yêu cầu người dùng 5
Bảng 2.2 Actor 5
Bảng 2.3 Chức năng actor Guest 5
Bảng 2.4 Chức năng actor User 6
Bảng 2.5 Chức năng actor Admin 6
Bảng 2.6 Bảng danh sách các use case 10
Bảng 2.7 Mô tả usecase UC001a.Đăng nhập 10
Bảng 2.8 Mô tả usecase UC001b.Đăng xuất 10
Bảng 2.9 Mô tả usecase UC002.Đăng ký 11
Bảng 2.10 Mô tả usecase UC003.Quên mật khẩu 11
Bảng 2.11 Mô tả usecase UC004.Xem danh sách món ăn 12
Bảng 2.12 Mô tả usecase UC005.Xem chi tiết món ăn 12
Bảng 2.13 Mô tả usecase UC006.Bình luận 12
Bảng 2.14 Mô tả usecase UC007.Quản lý tài khoản 13
Bảng 2.15 Mô tả usecase UC008.Quản lý bookmark 13
Bảng 2.16 Mô tả usecase UC009.Quản lý follow 14
Bảng 2.17 Mô tả usecase UC0010.Đánh giá món ăn 14
Bảng 2.18 Mô tả usecase UC0011a.Quản lý món ăn (User) 14
Bảng 2.19 Mô tả usecase UC0011b.Quản lý món ăn (Admin) 15
Bảng 2.20 Mô tả usecase UC0012.Quản lý user 15
Bảng 2.21 Yêu cầu phi chức năng 16
Bảng 3.1 Bảng User 21
Bảng 3.2 Bảng Relatioships 22
Bảng 3.3 Bảng Recipes 22
Bảng 3.4 Bảng Rates 22
Bảng 3.5 Bảng Comments 23
Bảng 3.6 Bảng Ingredients 23
Bảng 3.7 Bảng Steps 23
Bảng 3.8 Bảng Viewed_recipe 23
Bảng 3.9 Bảng Bookmarks 24
Bảng 3.10 Bảng Likes 24
Trang 13viii
Bảng 3.11 Bảng Notifications 24
Bảng 3.12 Danh sách màn hình của Guest 29
Bảng 3.13 Mô tả chi tiết màn hình GUEST001.Home 30
Bảng 3.14 Mô tả chi tiết màn hình GUEST002.Home-newfeed 31
Bảng 3.15 Mô tả chi tiết màn hình GUEST0003 Home- RecipeDetail 34
Bảng 3.16 Mô tả chi tiết màn hình GUEST004 Guest-ViewUsers 35
Bảng 3.17 Mô tả chi tiết màn hình GUEST006 Guest-Search 37
Bảng 3.18 Mô tả chi tiết màn hình GUEST007 SignUp 38
Bảng 3.19 Mô tả chi tiết màn hình GUEST008 Login 39
Bảng 3.20 Mô tả chi tiết màn hình GUEST008 Chatbot 40
Bảng 3.21 Danh sách màn hình User 41
Bảng 3.22 Mô tả chi tiết màn hình USER001 User-Home 41
Bảng 3.23 Mô tả chi tiết màn hình USER002 User-NewsFeed 43
Bảng 3.24 Mô tả chi tiết màn hình USER003 User-upRecipe 44
Bảng 3.25 Mô tả chi tiết màn hình USER004 User-Home-RecipeDetail 46
Bảng 3.26 Mô tả chi tiết màn hình USER005 Profile-About 47
Bảng 3.27 Mô tả chi tiết màn hình USER006 Profile-Followers 49
Bảng 3.28 Mô tả chi tiết màn hình USER007 Profile-Bookmarks 51
Bảng 3.29 Mô tả chi tiết màn hình USER008 Profile-Repcies 52
Bảng 3.30 Danh sách màn hình Admin 52
Bảng 3.31 Mô tả chi tiết màn hình ADM001.Dashboard 53
Bảng 3.32 Mô tả chi tiết màn hình ADM002.Like 54
Bảng 3.33 Mô tả chi tiết màn hình ADM004.Relationships 54
Bảng 3.34 Mô tả chi tiết màn hình ADM004.User 55
Bảng 3.35 Mô tả chi tiết màn hình ADM005 Recipe 56
Bảng 4.1 Nền tảng công nghệ sử dụng 57
Bảng 4.2 Framework, thư viện sử dụng 57
Bảng 4.3 Các phương pháp gợi ý 63
Bảng 5.1 Testcase đăng nhập 68
Bảng 5.2 Testcase Đăng công thức 71
Bảng 5.3 Testcase Chi tiết công thức 73
Bảng 5.4 Testcase Trang cá nhân 75
Bảng 6.1 Tiến độ công việc 82
Trang 14ix
DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH
Hình 1.1 Website Cookpad.com 2
Hình 1.2 Website Cooky.vn 2
Hình 1.3 Website CandyCanCook 3
Hình 2.1 Usecase diagram tổng quát 7
Hình 2.2 Usecase của actor User 8
Hình 2.3 Usecase của actor Guest 9
Hình 2.4 Usecase của actor Admin 9
Hình 3.1 Mô hình MVC 17
Hình 3.2 Mô hình MVC trong rails 18
Hình 3.3 Class Diagram 19
Hình 3.4 ERD 20
Hình 3.5 Physical diagram 21
Hình 3.6 SQ001_UC002 Đăng ký 25
Hình 3.7 SQ002_UC001a Đăng nhập 25
Hình 3.8 SQ003_UC005 Xem chi tiết món ăn 26
Hình 3.9 SQ004_UC007 Quản lý tài khoản 26
Hình 3.10 SQ005_UC0011a Quản lý món ăn (user) 27
Hình 3.11 Màn hình GUEST001.Home 30
Hình 3.12 Màn hình GUEST002.Home-newfeed 31
Hình 3.13 Màn hình Popup Repice Preview 32
Hình 3.14 Màn hình GUEST0003 Home-RecipeDetail 33
Hình 3.15 Màn hình GUEST004 Guest-ViewUsers 35
Hình 3.16 Màn hình GUEST006 Guest-Search 36
Hình 3.17 Màn hình GUEST007 SignUp 37
Hình 3.18 Màn hình GUEST008 Login 38
Hình 3.19 Màn hình Login Facebook 39
Hình 3.20 Màn hình GUEST009.Chatbot 40
Hình 3.21 Guest’s screen flow 40
Hình 3.22 Màn hình USER001 User-Home 41
Hình 3.23 Màn hình USER002 User-NewsFeed 42
Hình 3.24 Màn hình USER003 User-upRecipe 43
Hình 3.25 Màn hình USER004.User-Home- RecipeDetail 45
Hình 3.26 Màn hình USER005 Profile-About 47
Hình 3.27 Màn hình Cập nhật thông tin cá nhân 48
Trang 15x
Hình 3.28 Màn hình USER006 Profile-Followers 49
Hình 3.29 Màn hình USER007 Profile-Bookmarks 50
Hình 3.30 Màn hình USER008 Profile-Repcies 51
Hình 3.31 User’s screen flow 52
Hình 3.32 Màn hình ADM001.Dashboard 53
Hình 3.33 Màn hình ADM002.Likes 53
Hình 3.34 Màn hình ADM004.Relationships 54
Hình 3.35 Màn hình ADM004.Users 55
Hình 3.36 Màn hình ADM005 Recipes 55
Hình 3.37 Màn hình View Recipe từ Admin 56
Hình 4.1 Minh họa logo ngôn ngữ Ruby 58
Hình 4.2 Minh họa logo Ruby on Rails 59
Hình 4.3 Sơ đồ hoạt động của dialogflow 62
Hình 4.4 Logo công cụ Elasticsearch 64
Hình 5.1 Kết quả tổng quan về kiểm thử 77
Hình 5.2 Kết quả testcase Đăng nhập 77
Hình 5.3 Kết quả testcase Đăng công thức 78
Hình 5.4 Kết quả testcase Chi tiết công thức 78
Hình 5.5 Kết quả testcase Trang cá nhân 79
Trang 16Tuy nhiên, rất nhiều người vẫn thích tự nấu ăn, có niềm đam mê với nấu nướng, luôn muốn được học thêm nhiều kinh nghiệm, công thức mới để thực hành khi có cơ hội hoặc chia sẻ chiến tích nấu ăn của mình với nhiều người khác để có thể giao lưu, kết bạn với nhau
Thực ra với thời đại công nghệ số, công việc vào bếp đã đơn giản hơn rất nhiều khi xung quanh là các loại máy móc hỗ trợ Vì vậy, vấn đề đặt ra là chúng ta phải tổng hợp lại các công thức, tạo một nơi giao lưu, chia sẻ, kết bạn cho những người có cùng sở thích nấu nướng cũng như những người muốn vào bếp, học làm bếp,… thành một hội nhóm, mạng xã hội nho nhỏ đơn giản và dễ dàng truy cập
1.1.2 Khảo sát hiện trạng
Với thời đại công nghệ tiên tiến, việc vào bếp và nấu nướng đã trở nên khá dễ dàng Chỉ cần có Internet, chúng ta có thể truy cập vào bất kì trang Web nấu nướng nào hoặc tải về các ứng dụng dạy nấu ăn trên điện thoại, các bước tiếp theo đương nhiên
là chỉ cần làm theo hướng dẫn sẵn có Tuy nhiên, độ chính xác của các công thức hiện diện đấy là bao nhiêu phần trăm? Chúng ta có thể tin cậy công thức đấy và các món
ăn sẽ luôn được làm ra thành công chứ?
Thật ra nấu ăn là một công việc gần như là thường xuyên, được thực hiện hằng ngày Nhưng có vẻ các website về chủ đề nấu ăn trên thị trường Việt Nam lại khá ít:
Trang 172
1.1.2.1 Cookpad.com (https://cookpad.com/)
Hình 1.1. Website Cookpad.com
Bảng 1.1 Bảng câu hỏi khảo sát Cookpad.com
Câu hỏi khảo sát Có/ Không Khác
Bình luận về món ăn Có Theo kiểu đặt câu hỏi bài viết Thông báo, tin nhắn Có Tin nhắn từ hệ thống
Tính toán khẩu phần ăn theo số
- Đánh giá ưu điểm: Giao diện thân thiện, đơn giản, dễ sử dụng Có nhiều event nấu
ăn được tổ chức thường xuyên
- Đánh giá nhược điểm: Độ tương tác giữa người dùng với nhau còn thấp
1.1.2.2 Cooky.vn (https://www.cooky.vn/)
Hình 1.2 Website Cooky.vn
Trang 183
Bảng 1.2 Bảng câu hỏi khảo sát Cooky.vn
Câu hỏi khảo sát Có/ Không Khác
Bình luận về món ăn Có
Thông báo, tin nhắn Có Tin nhắn từ hệ thống
Tính toán khẩu phần ăn theo số
người Có Nhập vào số người để nhận số lượng nguyên liệu cần dùng
- Đánh giá ưu điểm: Giao diện sinh động Độ tương tác giữa tác giả với người đọc cao nên bạn có thể đánh giá các công thức cũng như thảo luận về món ăn Có nhiều event nấu ăn được tổ chức thường xuyên
- Đánh giá nhược điểm: Không có
1.1.2.3 Candycancook.com (https://candycancook.com/)
Hình 1.3 Website CandyCanCook Bảng 1.3 Bảng câu hỏi khảo sát CandyCanCook.com
Câu hỏi khảo sát Có/ Không Khác
Trang 194
Tính toán khẩu phần ăn theo số
người
Có Nhập vào số người để nhận số
lượng nguyên liệu cần dùng
- Đánh giá ưu điểm: giao diện sinh động Giao diện rất dễ nhìn, rõ ràng và sinh động Nhiều món ăn đa dạng đến từ các nước khác nhau trên trang web này
- Đánh giá nhược điểm: độ tương tác không cao giữa các người đọc
Nhìn chung, các trang web không có sự khác biệt nhiều về chức năng Mỗi website đều hướng đến đối tượng người dùng khác nhau nhưng đều chú trọng vào độ đơn giản nhưng sinh động trên giao diện Những trang web này chú trọng tối ưu tốc độ duyệt web rất tốt cho trải nghiệm người dùng
1.1.3 Hướng giải quyết
Để đáp ứng nhu cầu về việc gợi ý một bữa ăn hợp lý cũng như thỏa mãn nhu cầu giao lưu kết bạn của giới trẻ mà “Cookgram” ra đời
Với trang “Cookgram” không những là nơi giao lưu, kết bạn mà còn là nơi giúp các bạn trẻ có thể chia sẻ với nhau niềm yêu thích nấu ăn, các bí kíp nấu ăn nhanh, tiết kiệm thời gian mà lại đầy đủ dinh dưỡng, ngon như mẹ nấu,… Để việc nấu nướng không còn là nổi ám ảnh Ngoài ra “Cookgram” còn dành cho các mẹ nội trợ, mẹ bỉm sữa, những người luôn mong muốn có một bữa cơm đầy đủ cho cho gia đình mình
mà không phải mất quá nhiều thời gian việc suy nghĩ: Hôm nay ăn gì?
1.2 Mục tiêu đề tài
- Áp dụng ngôn ngữ và công nghệ Ruby on Rails trong lập trình Web application
- Nắm bắt những nghiệp vụ cần có khi triển khai xây dựng website, đặc biệt là mô hình mạng xã hội
- Phân tích, thiết kế và xây dựng ứng dụng web chia sẻ công thức nấu ăn dành cho những người dùng yêu thích và muốn học hỏi nấu ăn
- Tìm hiểu và tích hợp các công nghệ machine learning, chatbot vào để hỗ trợ website
1.3 Đối tượng nghiên cứu
- Ngôn ngữ ruby và framework ruby on rails
Trang 205
2.1 Yêu cầu người dùng
Bảng 2.1 Yêu cầu người dùng
STT Tiêu đề User story
1 Web Application Ứng dụng web hỗ trợ người dùng có thể:
- Tìm kiếm món ăn
- Chia sẻ công thức nấu ăn
- Tương tác bài viết (Yêu thích, chia sẻ và đánh giá)
- Tương tác người dùng (Theo dõi người dùng)
- Quản lý lượt tương tác, hành vi người dùng
2 API Sever - Hỗ trợ kênh đăng nhập khác cho người dùng
2.2 Yêu cầu hệ thống
2.2.1 Yêu cầu chức năng
2.2.1.1 Actor
Bảng 2.2 Actor
1 Guest (Khách) Người dùng ẩn danh truy cập vào website,
1 Đăng ký Guest sử dụng email để đăng ký tài khoản
Sau khi đăng ký thành công người dùng sẽ được chuyển tới homepage
2 Tìm kiếm món ăn Nhập tên món ăn hoặc nguyên liệu ở thanh
tìm kiểm để tìm món ăn
3 Xem danh sách món ăn Món ăn mới nhất được hiện thị trên trang
chủ cho người xem và món ăn của follower nếu user đã đăng nhập
Trang 216
4 Xem chi tiết món ăn Người dùng chọn một món ăn để hiển thị
thông tin về món ăn đó
2 Đăng xuất Đăng xuất tài khoản khỏi hệ thống
3 Quên mật khẩu User sẽ nhập email của tài khoản Sau đó
vào mail xác nhận để đổi mật khẩu
4 Quản lý tài khoản User có thể thực hiện các tác vụ:
- Sửa thông tin cá nhân
- Đổi mật khẩu
5 Bình luận User nhập nội dung và đăng tải bình luận
trên bài viết của món ăn đang xem
6 Đánh giá Chọn số sao ứng với cảm nhận của user
7 Thêm follower User có thể theo dõi
8 Quản lí follower User có thể xem danh sách đang được theo
dõi và hủy theo dõi user khác
9 Quản lý bài viết User có thể thực hiện các tác vụ:
- Sửa thông tin bài viết
- Xóa bài viết
10 Quản lý bookmark User có thể thực hiện các tác vụ:
- Lưu thông tin bài viết
- Xóa bài viết đã lưu
11 Thông báo Thông báo cho user khi có hoạt động mới từ
người dùng khác
2.2.1.2.3 Admin
Bảng 2.5 Chức năng actor Admin
1 Xem trang quản lí admin Người dùng phải có role admin Chứa các
tính năng quản lý của admin
2 Quản lý bài viết món ăn Admin có thể thực hiện các tác vụ CRUD
bài viết món ăn
Trang 238 2.2.1.3.1 Usecase User
Hình 2.2 Usecase của actor User
Trang 2510
2.2.1.4 Danh sách usecase
Bảng 2.6 Bảng danh sách các use case
STT Tên use case Usecase ID
12 Quản lý món ăn của user UC0011a
13 Quản lý món ăn của admin UC0011b
2.2.1.5 Đặc tả chi tiết usecase
2.2.1.5.1 UC001a.Đăng nhập
Bảng 2.7 Mô tả usecase UC001a.Đăng nhập
Usecase Đăng nhập Usecase ID UC001.1
Mô tả Kiểm tra và xác thực vai trò người dùng
Tác nhân kích hoạt User, Admin
Tiền điều kiện Tồn tại tài khoản
Các bước thực hiện Bước 1: Vào màn hình đăng nhập hoặc trang chủ
Bước 2: Nhập Username/Email và Mật khẩu Bước 3: Nhấn button Đăng nhập
Bước 4: Nếu thành công sẽ chuyển tới trang chủ Nếu thất bại sẽ quay lại bước chuyển tới màn hình đăng nhập
2.2.1.5.2 UC001b.Đăng xuất
Bảng 2.8 Mô tả usecase UC001b.Đăng xuất
Usecase Đăng xuất
Usecase ID UC001.2
Mô tả Người dùng đăng xuất tài khoản ra khỏi hệ thống và
Trang 2611
trình duyệt
Tác nhân kích hoạt User, Admin
Tiền điều kiện Đã tiến hành đăng nhập vào website
Các bước thực hiện Bước 1: Click vào button user, tùy chọn đăng xuất sẽ
hiện ra từ menu dropdown
Bước 2: Người dùng được chuyển về trang chủ sau khi đăng xuất
2.2.1.5.3 UC002.Đăng ký
Bảng 2.9 Mô tả usecase UC002.Đăng ký
Usecase Đăng ký
Usecase ID UC002
Mô tả Đăng ký tài khoản để đăng nhập vào website
Tác nhân kích hoạt Guest
Tiền điều kiện Không có
Các bước thực hiện Bước 1: Vào trang chủ
Bước 2 :Click vào button Tạo tài khoản để vào màn hình đăng ký
Bước 3: Nhập thông tin (Tên của bạn, Username, Email, Mật khẩu, Xác nhận Mật khẩu)
Bước 4: Click button Đăng ký để hoàn thành việc đăng
ký tài khoản Bước 5: Nếu đăng ký thành công sẽ được chuyển đến trang chủ Nếu thất bại thì quay lại bước 3
2.2.1.5.4 UC003.Quên mật khẩu
Bảng 2.10 Mô tả usecase UC003.Quên mật khẩu
Usecase Quên mật khẩu
Usecase ID UC003
Mô tả Người dùng quên mật khẩu và muốn lấy mật khẩu mới
Tác nhân kích hoạt User, Admin
Tiền điều kiện Không có
Các bước thực hiện Bước 1: Vào màn hình đăng nhập
Bước 2: Click vào button Quên mật khẩu Bước 3: Nhập Email của tài khoản
Bước 4: Vào Email để đổi mật khẩu
Trang 2712
2.2.1.5.5 UC004.Xem danh sách món ăn
Bảng 2.11 Mô tả usecase UC004.Xem danh sách món ăn
Use case Xem danh sách món ăn
Usecase ID UC004
Mô tả Xem danh sách món ăn tại màn hình trang chủ, người
dùng có thể xem các loại món ăn được thêm mới nhất theo mặc định
Tác nhân kích hoạt Guest, User
Tiền điều kiện Không có
Các bước thực hiện Truy cập vào trang chủ
2.2.1.5.6 UC005.Xem chi tiết món ăn
Bảng 2.12 Mô tả usecase UC005.Xem chi tiết món ăn
Usecase xem chi tiết món ăn
Usecase ID UC005
Mô tả Xem thông tin chi tiết về cách nấu món ăn
Tác nhân kích hoạt Guest, User
Tiền điều kiện Không có
Các bước thực hiện Bước 1: Vào màn hình trang chủ
Bước 2: Click vào một món ăn sẽ chuyển đến màn hình chi tiết món ăn
2.2.1.5.7 UC006.Bình luận
Bảng 2.13 Mô tả usecase UC006.Bình luận
Usecase Bình luận món ăn
Usecase ID UC006
Mô tả Bình luận, nhận xét món ăn
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập vào tài khoản
Các bước thực hiện Bước 1: Vào trang xem chi tiết món ăn
Bước 2: Nhập nội dung muốn bình luận ở phần thảo luận
Bước 3: Nhấn phím Enter hoặc Gửi trên bàn phím để
Trang 2813
đăng tải
2.2.1.5.8 UC007.Quản lý tài khoản
Bảng 2.14 Mô tả usecase UC007.Quản lý tài khoản
Usecase Quản lí tài khoản
Usecase ID UC007
Mô tả User quản lí tài khoản thông qua xem trang cá nhân
của tài khoản và có thể tiến hành chỉnh sửa thông tin hoặc đổi mật khẩu
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập thành công
Các bước thực hiện Bước 1: Chọn profile ở thanh Navigation
Bước 2: Người dùng vào trang cá nhân Bước 3a: Người dùng click vào icon setting để có thể tiến hành chỉnh sửa thông tin tài khoản
Bước 4a : Người dùng điền đầy đủ thông tin và bấm Lưu thay đổi để xác nhận chỉnh sửa thông tin
Bước 3b: Người dùng chọn đổi mật khẩu Bước 4b: Người dùng điền mật khẩu cũ và mật khẩu mới để tiến hành đổi mật khẩu
Bước 5b: Người dùng trở về trang cá nhân nếu đổi mật khẩu thành công
2.2.1.5.9 UC008.Quản lí bookmark
Bảng 2.15 Mô tả usecase UC008.Quản lý bookmark
Usecase Quản lí bookmark
Usecase ID UC008
Mô tả User quản lí bookmark đã lưu
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập thành công
Các bước thực hiện Bước 1: Click vào icon bookmark trên bài viết để tạo
Bước 2 : Click lại vào icon bookmark trên bài viết để xóa
Trang 2914
2.2.1.5.10 UC009.Quản lý follow
Bảng 2.16 Mô tả usecase UC009.Quản lý follow
Usecase Quản lí bookmark
Usecase ID UC009
Mô tả User quản lí follower đã lưu
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập thành công
Các bước thực hiện Bước 1: Click vào icon follow bên cạnh tên user để
follow
Bước 2: Click vào icon following bên cạnh tên user
để unfollow
2.2.1.5.11 UC0010.Đánh giá món ăn
Bảng 2.17 Mô tả usecase UC0010.Đánh giá món ăn
Usecase Đánh giá món ăn
Usecase ID UC0010
Mô tả User đánh giá món ăn theo số điểm dựa theo cảm
nhận
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập thành công
Các bước thực hiện Bước 1: User click vào số sao trên trang chi tiết món
ăn
Bước 2: Hệ thống sẽ tính lại số điểm của món ăn và gửi về browser
2.2.1.5.12 UC0011a.Quản lý món ăn của user
Bảng 2.18 Mô tả usecase UC0011a.Quản lý món ăn (User)
Usecase Quản lí món ăn (User)
Usecase ID UC0011a
Mô tả User quản lí những món ăn đã tạo ra và có thể thực
hiện hoạt động CRUD
Tác nhân kích hoạt User
Tiền điều kiện Đăng nhập thành công
Các bước thực hiện Bước 1: User truy cập vào trang cá nhân
Trang 3015
Bước 2: Danh sách món ăn được tạo ra bởi user sẽ được show lên màn hình
Bước 3: User click chọn món ăn cần quản lí
Bước 4.a: User chọn chỉnh sửa món ăn Bước 4a.1: User tiến hành chỉnh sửa món ăn Bước 4a.2: User click chọn Lưu món ăn Bước 4a.3: Nếu món ăn được lưu thành công, user sẽ trở về giao diện xem chi tiết món ăn
Bước 4b: User chọn delete món ăn Bước 4b.1: Pop-up hiện lên yêu cầu xác nhận
Bước 4b.2: Nếu user xác nhận, hệ thông sẽ xóa món
ăn và trở về giao diện danh sách món ăn
Bước 4c: User chọn tạo món ăn mới Bước 4c.1: User tiến hành tạo món ăn Bước 4c.2: User click chọn lưu món ăn Bước 4c.3: Nếu món ăn được lưu thành công, user sẽ trở về giao diện xem chi tiết món ăn
2.2.1.5.13 UC0011b.Quản lý món ăn của admin
Bảng 2.19 Mô tả usecase UC0011b.Quản lý món ăn (Admin)
Usecase Quản lí món ăn (Admin)
Usecase ID UC0011b
Mô tả Admin quản lí tất cả những món ăn đã tạo ra bởi tất
cả user và có thể thực hiện hoạt động CRUD
Tác nhân kích hoạt Admin
Tiền điều kiện Đăng nhập thành công và có quyền admin
Các bước thực hiện Bước 1: Admin truy cập vào trang admin
Bước 2: Admin chọn data Recipes từ table
Bước 3: Dữ liệu món ăn sẽ được hiện lên màn hình để admin thực hiện CRUD
2.2.1.5.14 UC0012.Quản lý user
Bảng 2.20 Mô tả usecase UC0012.Quản lý user
Usecase Quản lí user
Usecase ID UC0012
Mô tả Admin quản lí tất cả users đã tạo ra và có thể thực
hiện hoạt động CRUD
Tác nhân kích hoạt Admin
Trang 3116
Tiền điều kiện Đăng nhập thành công và có quyền admin
Các bước thực hiện Bước 1: Admin truy cập vào trang admin
Bước 2: Admin chọn data Users từ table
Bước 3: Dữ liệu users sẽ được hiện lên màn hình để admin thực hiện CRUD
2.2.2 Yêu cầu phi chức năng
Bảng 2.21 Yêu cầu phi chức năng
STT Chức năng Mô tả
1 Trực quan, tương
thích Giao diện phù hợp với từng trình duyệt web khác nhau
UX thân thiện người dùng, dễ sử dụng
2 Độ tin cậy Các thông tin được lưu trữ trong cơ sở dữ liệu là vĩnh
viễn
Bảo mật hệ thống và thông tin người dùng
3 Tính khả dụng Xử lý dữ liệu theo thời gian thực
4 Bảo trì Dễ dàng bảo trì và nâng cấp
Trang 3217
3 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.1 Tổng quan hệ thống
3.1.1 Mô hình MVC
Mô hình MVC là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong
kỹ thuật phần mềm Khi một phần mềm sử dụng mô hình này thì nó sẽ phải chia ra
thành ba phần chính Model-View-Controller (MVC) với ba nhiệm vụ khác nhau:
Hình 3.1 Mô hình MVC
- Model: Là thành phần chính và nó chỉ chứa nghiệp vụ logic, các phương thức xử
lý dữ liệu, truy xuất dữ liệu từ database và gửi đến Views Model độc lập với giao diện người dùng
- View: Là nới chứa những giao diện như một nút bấm, khung nhập, menu, hình ảnh… Nó đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúp người dùng tương tác với
hệ thống
- Controller: Là nới tiếp nhận những yêu cầu xử lý được gửi từ người dùng, nó sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lấy đúng dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp và hiển thị dữ liệu đó
ra cho người dùng nhờ lớp View
3.1.2 Mô hình MVC trong Ruby on rails
Model - Controller - View là nguyên tắc phân chia công việc của một ứng dụng thành
ba hệ thống con riêng biệt nhưng hợp tác chặt chẽ
Các thư mục models, view, controllers được đặt trong thư mục app với:
- app/controllers: Nó là bộ não controller trong MVC chứa tất cả các file contrller Việc đặt tên của file này bắt buộc phải theo quy tắt là số nhiều của tên model +
“_controller”
- app/models: Tất cả model sẽ nằm trong app/models Models đóng vai trò như đối tượng quan hệ sẽ mapping với database table chứa dữ liệu Quy tắt đặt model sẽ
Trang 33Ngoài ra, các file layout sẽ được đặt tại đây app/views/layouts Nó như là một layout tổng và được kế thừa ở các views khác
Hình 3.2 Mô hình MVC trong rails
Trang 3419
3.1.3 Class Diagram
Hình 3.3 Class Diagram
Trang 3520
3.2 Database
3.2.1 ERD
Hình 3.4 ERD.
Trang 3722
3 Encrypted_password Mật khẩu đã được mã
hóa của user
Varchar
4 Reset password_token Đổi mật khẩu Varchar
11 Created_at Ngày tạo tài khoản Datetime
12 Updated_at Ngày cuối cùng chỉnh
sửa tài khoản datetime
2 Follower_id Id của người theo dõi Int
3 Followed_id Id theo dõi Int
4 Created_at Ngày tạo theo dõi Datetime
5 Updated_at Ngày cuối cùng chỉnh sửa
4 Image Hình ảnh món ăn Varchar
5 Created_at Ngày tạo Datetime
6 Updated_at Ngày cuối cùng chỉnh sửa Datetime
Trang 3823
3 Reatable_id Id của công thức Int
4 Rateable_type Tên công thức Varchar
6 Created_at Ngày tạo Datetime
7 Updated_at Ngày cuối cùng chỉnh sửa Datetime
3 Recipe_id Id công thức Int
5 Created_id Ngày tạo datetime
6 Updated_at Ngày cuối cùng chỉnh sửa datetime
2 Recipe_id Id công thức Int
3 Name Tên nguyên liệu Varchar
4 Created_at Ngày tạo Datetime
5 Updated_at Ngày cuối cùng chỉnh sửa Datetime
2 Recipe_id Id công thức Int
4 Image Hình ảnh bước làm Varchar
5 Created_at Ngày tạo Datetime
6 Updated_at Ngày cuối cùng chỉnh sửa Datetime
3.2.3.8 Bảng Viewed_recipe
Bảng 3.8 Bảng Viewed_recipe
STT Tên cột Mô tả Kiểu dữ liệu Note
Trang 3924
Tự động tăng
2 User_id Id của user Int
3 Recipe_id Id công thức Int
4 Created_at Ngày tạo Datetime
5 Updated_at Ngày cuối cùng chỉnh sửa Datetime
2 User_id Id của user Int
3 Recipe_id Id công thức Int
4 Created_at Ngày tạo Datetime
5 Updated_at Ngày cuối cùng chỉnh sửa Datetime
2 User_id Id của user Int
3 Recipe_id Id công thức Int
4 Comment_id Id của bình luận Int
5 Created_at Ngày tạo Datetime
6 Updated_at Ngày cuối cùng chỉnh sửa Datetime
3 Actor_id Người được thông báo Int
4 Notifiable_id Người tạo ra thông báo Int
5 Notifiable_type Đối tượng được thông
9 Updated_at Ngày cuối cùng chỉnh sửa Datetime
Trang 4025
3.3 Sequence diagram
3.3.1 SQ001_UC002 Đăng ký
Hình 3.6 SQ001_UC002 Đăng ký 3.3.2 SQ002_UC001a Đăng nhập
Hình 3.7 SQ002_UC001a Đăng nhập 3.3.3 SQ003_UC005 Xem chi tiết món ăn