NHIỆM VỤ VÀ NỘI DUNG - Khảo sát thực tế - Phân tích và thiết kế hệ thống - Trau dồi kiến thức lập trình Android - Tìm hiểu kiến thức về nền tảng NodeJS - Tìm hiểu về hệ quản trị cơ sở d
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN HUY VIỆT KHOA
XÂY DỰNG ỨNG DỤNG TÌM KIẾM CỬA HÀNG ĂN
TRÊN NỀN TẢNG ANDROID
Ngành/Chuyên ngành: Công nghệ thông tin
Giảng viên hương dẫn: ThS Nguyễn Thùy Linh
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Hà Nội - Năm 2016
Trang 2Hà Nội, ngày 21 tháng 04 năm 2016
NHIỆM VỤ CỦA ĐỒ ÁN TỐT NGHIỆP
Ngày, tháng, năm sinh: 17/06/1993 Nơi sinh: Hà Nội Chuyên ngành: Công nghệ thông tin Mã số: 12A10010196
1 TÊN ĐỀ TÀI
Xây dựng ứng dụng tìm kiếm cửa hàng ăn trên nền tảng Android
2 NHIỆM VỤ VÀ NỘI DUNG
- Khảo sát thực tế
- Phân tích và thiết kế hệ thống
- Trau dồi kiến thức lập trình Android
- Tìm hiểu kiến thức về nền tảng NodeJS
- Tìm hiểu về hệ quản trị cơ sở dữ liệu MongoDB
- Xây dựng hệ thống tìm kiếm cửa hàng ăn gồm 2 phần: Ứng dụng cho người dùng và quản trị hệ thống cho admin:
+ Đối với ứng dụng có các chức năng: Đăng ký, đăng nhập, tìm kiếm cửa hàng, tìm đường tới cửa hàng, kết bạn, gửi lời mời đi ăn đến người bạn của mình, thêm danh sách cửa hàng yêu thích, cập nhật thông tin tài khoản, bình luận, đánh giá về cửa hàng, thông báo tới người dùng khi đến giờ hẹn của lời mời
+ Đối với quản trị hệ thống bao gồm các chức năng: Cập nhật cửa hàng, duyệt, xóa bình luận, xóa tài khoản người dùng, tạo tài khoản đăng nhập cho admin
Trang 35 GIÁO VIÊN HƯỚNG DẪN
Thạc sĩ Nguyễn Thùy Linh
Nội dung và đề cương Đồ án đã được Hội đồng chuyên ngành thông qua
Ngày 21 tháng 04 năm 2016
Trang 4mỗi người cho nên việc phát triển ứng dụng di động là một lĩnh vực đầy tiềm năng đối với những nhà lập trình viên trẻ tuổi Trong các loại ứng dụng di động thì ứng dụng tìm kiếm địa điểm đang có sự bùng nổ lớn với sự xuất hiện của rất nhiều các ứng dụng dạng này Có rất nhiều loại ứng dụng tìm kiếm có thể là tìm kiếm trạm xe buýt, trạm xăng, cửa hàng ăn, nhưng chưa có ứng dụng nào thực sự thỏa mãn được yêu cầu của người dùng
Xuất phát từ thực tế trên cũng như sau thời gian học tập và nghiên cứu tại Viện Đại học Mở Hà Nội khoa Công nghệ thông tin, được sự giúp đỡ của thầy cô trong trường và đặc biệt là sự hướng dẫn tận tình của của ThS Nguyễn Thùy Linh, em đã
hoàn thành bản đồ án: “Xây dựng ứng dụng tìm kiếm cửa hàng ăn trên nền tảng Android”
Báo cáo đồ án gồm năm chương chính:
- Chương 1 – Khảo sát hệ thống: Khảo sát ứng dụng Lozi, từ những ưu nhược điểm phân tích được đưa ra ý tưởng cho hệ thống tìm kiếm cửa hàng trên nền tảng Angdroid
- Chương 2 – Cơ sở lý thuyết: Giới thiệu những công nghệ được sử dụng trong đề tài
- Chương 3 – Phân tích hệ thống: Mục đích chính của chương là phân tích
hệ thống từ đó đưa ra được sơ đồ phân cấp chức năng và sơ đồ luồng dữ liệu của hệ thống
- Chương 4 – Thiết kế hệ thống: Chương này trình bày quá trình thiết kế cơ
sở dữ liệu của hệ thống và thiết kế một số module chính của hệ thống
- Chương 5 – Hương dẫn sử dụng: Hướng dẫn sử dụng trang web quản trị cho admin và ứng dụng trên điện thoại Android cho người dùng
Do kiến thức còn hạn chế nên bản đồ án không tránh được những thiếu sót, em rất mong được sự góp ý của thầy cô để bản đồ án được hoàn thiện hơn
Trang 5Em xin cảm ơn các thầy cô trong khoa Công nghệ thông tin Viện Đại học Mở Hà Nội, đặc biệt là ThS Nguyễn Thùy Linh đã giúp đỡ em hoàn thành đồ án tốt nghiệp
Hà Nội, ngày 21/04/2016 Sinh viên thực hiện Nguyễn Huy Việt Khoa
Trang 6MỤC LỤC
Trang CHƯƠNG 1
KHẢO SÁT HỆ THỐNG
1.1 Khảo sát hệ thống hiện tại 1
1.2 Mô tả hệ thống 1
1.3 Phạm vi đề tài 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về Android 4
2.2 Giới thiệu về NodeJS 7
2.3 Giới thiệu về MongoDB 8
CHƯƠNG 3 PHÂN TÍCH HỆ THỐNG 3.1 Sơ đồ phân rã chức năng 9
3.1.1 Gom nhóm các chức năng 9
3.1.2 Sơ đồ phân rã chức năng 10
3.1.3 Đặc tả chức nănng 12
3.2 Sơ đồ luồng dữ liệu các mức 14
3.2.1 Sơ đồ luồng dữ liệu mức khung cảnh 14
3.2.2 Sơ đồ luồng dữ liệu mức đỉnh 16
3.2.3 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý tài khoản 17
3.2.4 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý cửa hàng 18
3.2.5 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bạn bè 19
3.2.6 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý lời mời 20
3.2.7 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bình luận đánh giá 21
3.2.8 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý danh mục 21
CHƯƠNG 4 THIẾT KẾ HỆ THỐNG 4.1 Thiết kế cơ sở dữ liệu 22
Trang 74.1.1 Xác định các tập thực thể 22
4.1.2 Xác định các mối liên kết giữa các tập thực thể 23
4.1.3 Mô hình thực thể liên kết E-R 26
4.1.4 Mô hình quan hệ 27
4.1.5 Các bảng cơ sở dữ liệu vật lý 28
4.2 Thiết kế Module 33
4.2.1 Module đăng nhập 33
4.2.2 Module đăng ký 34
4.2.3 Module quản lý cửa hàng 36
4.2.4 Module quản lý bình luận và đánh giá 44
4.2.5 Module quản lý bạn bè 47
4.2.6 Module quản lý lời mời 54
CHƯƠNG 5 HƯỚNG DẪN SỬ DỤNG HỆ THỐNG 5.1 Hướng dẫn sử dụng cho người dùng 62
5.1.1 Hướng dẫn đăng nhập 62
5.1.2 Hướng dẫn lấy lại mật khẩu 64
5.1.3 Hướng dẫn đăng ký 65
5.1.4 Hướng dẫn sử dụng không thông qua đăng nhập 66
5.1.5 Hướng dẫn sử dụng chức năng danh sách cửa hàng 67
5.1.6 Hướng dẫn sử dụng chức năng chi tiết cửa hàng 68
5.1.7 Hướng dẫn sử dụng bản đồ 69
5.1.8 Hướng dẫn sử dụng quản lý bạn bè 70
5.1.9 Hướng dẫn sử dụng chức năng cửa hàng yêu thích 71
5.1.10 Hướng dẫn sử dụng chức năng quản lý lời mời 72
5.1.11 Hướng dẫn sử dụng chức năng duyệt lời mời 73
5.2 Hướng dẫn sử dụng cho Admin 74
5.2.1 Hướng dẫn sử dụng chức năng nhập cửa hàng 74
5.2.2 Hướng dẫn sử dụng chức năng tìm kiếm cửa hàng 74
5.2.3 Hướng dẫn sử dụng chức năng nhập danh mục 75
5.2.4 Hướng dẫn sử dụng chức năng danh sách danh mục 76
5.2.5 Hướng dẫn sử dụng chức năng quản lý bình luận 76
Trang 85.2.6 Hướng dẫn sử dụng chức năng quản lý tài khoản người dùng 77
5.2.7 Hướng dẫn sử dụng chức năng tạo tài khoản admin 77
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80
Trang 9Họ và tên: Nguyễn Huy Việt Khoa
Cán bộ hướng dẫn: ThS Nguyễn Thùy Linh
Tên đề tài: Xây dựng ứng dụng tìm kiếm cửa hàng ăn trên nền tảng Android
Tóm tắt: Hệ thống được xây dựng giúp người dùng dễ dàng tìm được cửa
hàng ăn trong phạm vi Hà Nội Hệ thống sử dụng “Google Map APIs” để người dùng tìm đường tới cửa hàng một cách nhanh chóng và chính xác Ngoài ra, hệ thống còn cho phép người dùng kết bạn với nhau và gửi lời mời
đi ăn tới người bạn của mình Hệ thống còn nhắc người dùng khi lời mời đi
ăn đến giờ hẹn
Abstract: The system is built to help users easily find restaurants within
Hanoi The system uses "Google Map APIs" for users to find their way to shop quickly and accurately In addition, the system also allows user to make friends with each other and send an invitation to eat to his friends The system also prompts users when an invitation to eat about time
Trang 10Bảng 4.1 Bảng cơ sở dữ liệu Danh mục món ăn 27
Bảng 4.2 Bảng cơ sở dữ liệu Lời mời 27
Bảng 4.3 Bảng cơ sở dữ liệu Danh mục khu vực 28
Bảng 4.4 Bảng cơ sở dữ liệu Bạn bè 28
Bảng 4.5 Bảng cơ sở dữ liệu Người dùng 29
Bảng 4.6 Bảng cơ sở dữ liệu Đánh giá 29
Bảng 4.7 Bảng cơ sở dữ liệu Cửa hàng yêu thích 30
Bảng 4.8 Bảng cơ sở dữ liệu Bình luận 30
Bảng 4.9 Bảng cơ sở dữ liệu Cửa hàng 31
Bảng 4.10 Bảng cơ sở dữ liệu Ảnh 31
Bảng 4.11 Bảng cơ sở dữ liệu Admin 32
Trang 11Hình 3.2 Sơ đồ luồng dữ liệu mức ngữ cảnh 14
Hình 3.3 Sơ đồ luồng dữ liệu mức đỉnh 15
Hình 3.4 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý tài khoản 16
Hình 3.5 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý cửa hàng 17
Hình 3.6 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bạn bè 18
Hình 3.7 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý lời mời 19
Hình 3.8 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bình luận đánh giá 20
Hình 3.9 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý danh mục 20
Hình 4.1 Liên kết giữa hai tập thực thể Người dùng và Cửa hàng 22
Hình 4.2 Liên kết giữa hai tập thực thể Người dùng và Người dùng 22
Hình 4.3 Liên kết giữa hai tập thực thể Người dùng và Bình luận 22
Hình 4.4 Liên kết giữa hai tập thực thể Người dùng và Đánh giá 23
Hình 4.5 Liên kết gửi giữa hai tập thực thể Người dùng và Lời mời 23
Hình 4.6 Liên kết nhận giữa hai tập thực thể Người dùng và Lời mời 23
Hình 4.7 Liên kết giữa hai tập thực thể Cửa hàng và Bình luận 24
Hình 4.8 Liên kết giữa hai tập thực thể Cửa hàng và Đánh giá 24
Hình 4.9 Liên kết giữa hai tập thực thể Cửa hàng và Danh mục món ăn 24
Hình 4.10 Liên kết giữa hai tập thực thể Cửa hàng và Danh mục khu vực 24
Hình 4.11 Mô hình thực thể liên kết ER 25
Trang 12Hình 4.14 Sơ đồ khối module đăng ký 34
Hình 4.15 Sơ đồ khối module tìm cửa hàng 35
Hình 4.16 Sơ đồ khối module thêm cửa hàng 37
Hình 4.17 Sơ đồ khối module sửa cửa hàng 39
Hình 4.18 Sơ đồ khối module xóa cửa hàng 41
Hình 4.19 Sơ đồ khối module tìm đường 42
Hình 4.20 Sơ đồ khối module bình luận 44
Hình 4.21 Sơ đồ khối module đánh giá 45
Hình 4.22 Sơ đố khối module gửi lời mời kết bạn 47
Hình 4.23 Sơ đồ khối module duyệt lời mời kết bạn 48
Hình 4.24 Sơ đồ khối module tìm kiếm bạn bè 50
Hình 4.25 Sơ đồ khối module xóa bạn bè 51
Hình 4.26 Sơ đồ khối module cập nhật bạn thân thiết 52
Hình 4.27 Sơ đồ khối module gửi lời mời đi ăn 54
Hình 4.28 Sơ đồ khối module tìm kiếm lời mời 56
Hình 4.29 Sơ đồ khối module duyệt lời mời đi ăn 57
Hình 4.30 Sơ đồ khối module nhắc việc 59
Hình 5.1 Giao diện màn hình đăng nhập 62
Hình 5.2 Giao diện màn hình lấy lại mật khẩu 63
Hình 5.3 Giao diện màn hình đăng ký 64
Trang 13Hình 5.5 Giao diện màn hình danh sách cửa hàng 66
Hình 5.6 Giao diện màn hình chi tiết cửa hàng 67
Hình 5.7 Giao diện màn hình bản đổ 68
Hình 5.8 Giao diện màn hình bạn bè 69
Hình 5.9 Giao diện màn hình cửa hàng yêu thích 70
Hình 5.10 Giao diện màn hình lời mời 71
Hình 5.11 Giao diện màn hình duyệt lời mời 72
Hình 5.12 Giao diện màn hình nhập cửa hàng 73
Hình 5.13 Giao diện màn hình tìm kiếm cửa hàng 74
Hình 5.14 Giao diện màn hình nhập danh mục 74
Hình 5.15 Giao diện danh sách danh mục 75
Hình 5.16 Giao diện màn hình quản lý bình luận 75
Hình 5.17 Giao diện màn hình quản lý tài khoản người dùng 76
Hình 5.18 Giao diện màn hình tạo tài khoản admin 77
Trang 14CHƯƠNG 1 KHẢO SÁT HỆ THỐNG 1.1 Khảo sát hệ thống hiện tại
Ngày nay, gần như bất cứ ai cũng sở hữu một chiếc điện thoại thông minh Cùng với đó là các ứng dụng trên nền tảng di động nói chung và Android nói riêng có sự phát triển lớn về chất lượng lẫn số lượng, đặc biệt là các ứng dụng tìm kiếm Hiện nay trong lĩnh vực tìm kiếm địa điểm ăn uống, có một ứng dụng đang thu hút được một lượng lớn người sử dụng tại Việt Nam, đó là ứng dụng Lozi
Ứng dụng Lozi có được sự yêu thích đầu tiên là bởi nó có một giao diện bắt mắt, phù hợp với người trẻ tuổi Lozi không chỉ tập trung vào giao diện mà nhóm phát triển cũng xây dựng được các chức năng đáp ứng được nhu cầu của người dùng như chức năng định vị, tìm đường đến cửa hàng, cung cấp được các thông tin cần thiết về cửa hàng Ứng dụng không chỉ giúp người dùng tìm đường mà còn cho phép họ bình luận về các cửa hàng Số lượng cửa hàng mà ứng dụng cung cấp cũng phong phú và đa dạng
Lozi về cơ bản đã giải quyết được nhu cầu tìm kiếm của người dùng nhưng vẫn còn nhiều điều thiếu sót, chẳng hạn như vẫn thiếu các tương tác với người dùng hoặc giữa các người dùng với nhau Ứng dụng không có chức năng kết bạn, hay mời bạn đi ăn
1.2 Mô tả hệ thống
Xuất phát từ việc khảo sát về ưu nhược điểm của ứng dụng Lozi, em quyết định xây dựng hệ thống tìm kiếm cửa hàng ăn uống, không chỉ giải quyết các vấn đề
cơ bản như ứng dụng Lozi mà còn tăng tính tương tác với người dùng
Hệ thống em xây dựng gồm 3 đối tượng sử dụng: Người dùng, thành viên và admin
Đầu tiên là đối tượng người dùng, họ là những người sử dụng ứng dụng không thông qua đăng nhập Người dùng không đăng nhập thì chỉ có thể sử dụng một
số tính năng cơ bản như xem danh sách cửa hàng, tìm đường đến cửa hàng Khi
Trang 15muốn tìm cửa hàng, người dùng nhập tên cửa hàng lên thanh công cụ tìm kiếm Ngoài ra, họ có thể lựa chọn các tiêu chí để lọc như theo món ăn hoặc theo khu vực Người dùng muốn tìm đường, ấn vào nút dẫn đường, ứng dụng sẽ định vị
vị trí người dùng và hiển thị đường tới cửa hàng Nếu họ muốn sử dụng các chức năng khác thì họ cần dùng chức năng đăng ký để có tài khoản và sau đó đăng nhập bằng tài khoản đó
Đối tượng sử dụng tiếp theo là thành viên, đó là những người dùng có tài khoản
và đăng nhập để sử dụng ứng dụng Sau khi người dùng đăng nhập vào ứng dụng thì ngoài tính năng cơ bản là xem danh sách cửa hàng và tìm đường, họ có thể sử dụng các chức năng khác của ứng dụng Họ có thể để lại bình luận đánh giá về cửa hàng trên trang thông tin chi tiết về cửa hàng
Thành viên muốn thêm bạn cần nhập số điện thoại Khi hệ thống kiểm tra số điện thoại tồn tại, một lời mời kết bạn được gửi đi Lời mời kết bạn sẽ hiện trên danh sách bạn bè của người được mời để họ duyệt Nếu thành viên đó chấp nhận, hai người trở thành bạn bè của nhau Thành viên có thể tìm kiếm tên người bạn trong danh sách bạn bè Khi hai thành viên trở thành bạn của nhau,
họ có thể xóa người bạn của mình ra khỏi danh sách bạn bè
Sau khi kết bạn, thành viên có thể viết lời mời bạn mình đi ăn Khi đó, lời mời
sẽ được hiển thị trên danh sách lời mời cần duyệt của người được mời Nếu người được mời chấp nhận lời mời Lời mời được hiện trong danh sách lời mời của thành viên đó Thành viên có thể tìm kiếm lời mời trong danh sách lời mời
và danh sách lời mời cần duyệt Với lời mời được chấp nhận, thành viên có thể xóa lời mời đó nếu chưa đến giờ hẹn Khi đến giờ hẹn đi ăn, một thông báo đã đến giờ hẹn sẽ gửi tới thành viên
Thành viên khi gặp được một cửa hàng yêu thích có thể thêm cửa hàng đó vào danh sách yêu thích để dễ dàng tìm thấy trong những lần sau
Thành viên có thể cập nhật thông tin về tài khoản gồm tên và số điện thoại Đối tượng sử dụng cuối cùng của hệ thống là admin Admin cần đăng nhập vào
hệ thống để sử dụng Sau khi đăng nhập thành công, admin có thể tạo tài khoản
Trang 16admin khác Admin có quyền cập nhật thông tin cửa hàng, duyệt, xóa bình luận, xóa tài khoản thành viên
1.3 Phạm vi đề tài
Ứng dụng được xây dựng hỗ trợ người dùng tìm kiếm cửa hàng ăn trong phạm
vi nội thành thành phố Hà Nội
Trang 17CHƯƠNG 2
CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về Android
Ứng dụng Android được viết bằng ngôn ngữ lập trình Java Bộ công cụ SDK Android sẽ biên dịch mã của bạn - cùng với bất kỳ tệp dữ liệu và tài nguyên nào -vào một APK: một gói Android, đó là một tệp lưu trữ có hậu tố apk Một tệp APK chứa tất cả nội dung của một ứng dụng Android và là tệp mà các thiết bị dựa trên nền tảng Android sử dụng để cài đặt ứng dụng
Sau khi được cài đặt lên một thiết bị, từng ứng dụng Android sẽ ở bên trong hộp cát bảo mật của chính nó:
Hệ điều hành Android là một hệ thống Linux đa người dùng trong đó mỗi ứng dụng là một người dùng khác nhau
Theo mặc định, hệ thống gán cho từng ứng dụng một ID người dùng Linux duy nhất (ID chỉ được sử dụng bởi hệ thống và không xác định đối với ứng dụng) Hệ thống sẽ đặt quyền cho tất cả tệp trong một ứng dụng sao cho chỉ ID người dùng được gán cho ứng dụng đó mới có thể truy cập chúng
Mỗi tiến trình có máy ảo riêng của mình, vì thế mã của một ứng dụng sẽ chạy độc lập với các ứng dụng khác
Theo mặc định, mọi ứng dụng chạy trong tiến trình Linux của chính nó Android khởi động tiến trình khi bất kỳ thành phần nào của ứng dụng cần được thực thi, sau đó tắt tiến trình khi không còn cần nữa hoặc khi hệ thống phải khôi phục bộ nhớ cho các ứng dụng khác
Bằng cách này, hệ thống Android triển khai nguyên tắc đặc quyền ít nhất Cụ thể, theo mặc định, mỗi ứng dụng chỉ có thể truy cập vào các thành phần mà nó cần để thực hiện công việc của mình và không hơn Điều này tạo ra một môi trường rất bảo mật mà trong đó một ứng dụng không thể truy cập các bộ phận của hệ thống mà nó không được cấp quyền
Trang 18Tuy nhiên, có nhiều cách để một ứng dụng chia sẻ dữ liệu với các ứng dụng khác và
để một ứng dụng truy cập vào các dịch vụ của hệ thống:
Có thể sắp xếp để hai ứng dụng chia sẻ cùng ID người dùng Linux, trong trường hợp đó chúng có thể truy cập các tệp của nhau Để tiết kiệm tài nguyên của hệ thống, các ứng dụng có cùng ID người dùng cũng có thể sắp xếp để chạy trong cùng tiến trình Linux và chia sẻ cùng máy ảo (các ứng dụng cũng phải được ký bằng cùng chứng chỉ)
Một ứng dụng có thể yêu cầu quyền truy cập dữ liệu của thiết bị chẳng hạn như danh bạ của người dùng, tin nhắn SMS, thiết bị lưu trữ gắn được (thẻ SD), máy ảnh, Bluetooth và nhiều nữa Tất cả quyền ứng dụng đều phải được cấp bởi người dùng tại thời điểm cài đặt
Có bốn loại thành phần ứng dụng khác nhau Mỗi loại có một mục đích riêng và có một vòng đời riêng, xác định cách thành phần được tạo lập và hủy
Sau đây là bốn loại thành phần ứng dụng:
Hoạt động
Một hoạt động biểu diễn một màn hình đơn với một giao diện người dùng Ví dụ, một ứng dụng e-mail có thể có một hoạt động với chức năng hiển thị một danh sách e-mail mới, một hoạt động khác để soạn e-mail, và một hoạt động khác để đọc e-mail Mặc dù các hoạt động cùng nhau tạo thành một trải nghiệm người dùng gắn kết trong ứng dụng e-mail, mỗi hoạt động lại độc lập với nhau Như vậy, một ứng dụng khác có thể khởi động bất kỳ hoạt động nào trong số này (nếu ứng dụng e-mail cho phép nó) Ví dụ, một ứng dụng máy ảnh có thể khởi động hoạt động trong ứng dụng e-mail có chức năng soạn thư mới, để người dùng chia
sẻ một bức ảnh
Trang 19Dịch vụ
Một dịch vụ là một thành phần chạy ngầm để thực hiện các thao tác chạy lâu hoặc để thực hiện công việc cho các tiến trình từ xa Dịch vụ không cung cấp giao diện người dùng Ví dụ, một dịch vụ có thể phát nhạc dưới nền trong khi người dùng đang ở một ứng dụng khác, hoặc nó có thể tải dữ liệu qua mạng mà không chặn người dùng tương tác với hoạt động Một thành phần khác, chẳng hạn như một hoạt động, có thể khởi động dịch vụ và để nó chạy hoặc gắn kết với
nó để tương tác với nó
Trình cung cấp Nội dung
Một trình cung cấp nội dung sẽ quản lý một tập dữ liệu ứng dụng được chia sẻ Bạn có thể lưu trữ dữ liệu trong hệ thống tệp, một cơ sở dữ liệu SQLite, trên web, hay bất kỳ vị trí lưu trữ liên tục nào khác mà ứng dụng của bạn có thể truy cập Thông qua trình cung cấp nội dung, các ứng dụng khác có thể truy vấn hay thậm chí sửa đổi dữ liệu (nếu trình cung cấp nội dung cho phép) Ví dụ, hệ thống Android cung cấp một trình cung cấp nội dung có chức năng quản lý thông tin danh bạ của người dùng Như vậy, bất kỳ ứng dụng nào có các quyền phù hợp đều có thể truy vấn bất kỳ phần nào của trình cung cấp nội dung để đọc và ghi thông tin về một người cụ thể
Trình cung cấp nội dung cũng hữu ích với việc đọc và ghi dữ liệu riêng tư đối với ứng dụng của bạn và không được chia sẻ Ví dụ, ứng dụng mẫu Note Pad sử dụng một trình cung cấp nội dung để lưu các ghi chú
Trang 20sẵn để họ sử dụng Mặc dù các hàm nhận quảng bá không hiển thị giao diện người dùng, chúng có thể tạo một thông báo thanh trạng thái để cảnh báo người tiếp nhận khi xảy ra một sự kiện quảng bá Tuy nhiên trường hợp phổ biến hơn
đó là hàm nhận quảng bá chỉ là một "cổng kết nối" tới các thành phần khác và nhằm mục đích thực hiện lượng công việc rất ít Ví dụ, nó có thể khởi tạo một dịch vụ để thực hiện một số công việc dựa trên sự kiện
2.2 Giới thiệu về NodeJS
Node.js là một nền tảng mã nguồn mở chạy trên môi trường V8 JavaScript runtime
- một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt Chrome Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với các web server JavaScript suy cho cùng cũng chỉ là một ngôn ngữ - vậy thì không có lý do gì để nói nó không thể sử dụng trên môi trường server tốt như là trong trình duyệt của người dùng được
Một số đặc tính của NodeJS:
Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ
(none-blocking), nó chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả
dữ liệu về Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước (Realtime)
Chạy rất nhanh: NodeJ được xây dựng dựa vào nền tảng V8 Javascript
Engine nên việc thực thi chương trình rất nhanh
Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình
luồng duy nhất với sự kiện lặp, cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử
lý yêu cầu Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server
Trang 21 Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này
chủ yếu là đầu ra dữ liệu
2.3 Giới thiệu về MongoDB
MongoDB là một hệ thống CSDL mã nguồn mở được phát triển và hỗ trợ bởi 10gen dùng cơ chế NoSQL để truy vấn
Collection trong MongoDB là nhóm các tài liệu, nó tương đương với một bảng trong CSDL thông thường nên mỗi collection sẽ thuộc về một database duy nhất Tuy nhiên nó có một sực khác biệt đó là nó không có ràng buộc như các hệ quản trị CSDL khác nên việc truy xuất rất nhanh, chính vì thế mỗi collection có thể chứa nhiều thể loại khác nhau không giống như table trong hệ quản trị mysql là các trường cố định
Document trong MongoDB có cấu trúc tương tự như kiểu dữ liệu JSON, nghĩa là sẽ
có các cặp khóa và giá trị nên nó có tính năng động rất lớn Document ta có thể hiểu
nó giống như các bản ghi dữ liệu trong MYSQL, tuy nhiên nó có sự khác biệt là các cặp khóa và giá trị có thể không giống nhau ở mỗi document
Trang 22CHƯƠNG 3 PHÂN TÍCH HỆ THỐNG 3.1 Sơ đồ phân rã chức năng
3.1.1 Gom nhóm các chức năng
Qua quá trình tìm hiểu, em xin đề xuất hệ thống có 6 nhóm chức năng chính bao gồm: Quản lý tài khoản, quản lý cửa hàng, quản lý bạn bè, quản lý lời mời, quản lý bình luận đánh giá quản lý danh mục Gom nhóm chức năng mô tả như bảng 3.1
Bảng 3.1 Gom nhóm chức năng (1) Đăng nhập, đăng xuất
(8) Gửi lời mời đi ăn
(9) Duyệt lời mời đi ăn
(10) Tìm kiếm lời mời đi ăn
(11) Xóa lời mời đi ăn
(12) Nhắc việc
Quản lý lời mời
Trang 23(13) Gửi lời mời kết bạn
(14) Duyệt lời mời kết bạn
3.1.2 Sơ đồ phân rã chức năng
Từ phân tích ở mục 3.1.1, em xin đưa ra sơ đồ phân rã chức năng như hình 3.1
Trang 253.1.3 Đặc tả chức năng
Quản lý tài khoản:
Đăng nhập/ xuất: Đăng nhập được sử dụng bời người dùng và admin, cho phép
họ vào giao diện chính của hệ thống Người dùng, admin nhập tên tài khoản và mật khẩu tại màn hình đăng nhập, dữ liệu được gửi lên server để xác thực và trả lại kết quả đăng nhập thành công hay thất bại
Đăng xuất được sử dụng bởi thành viên và admin, cho phép họ thoát khỏi giao diện chính của hệ thống Thành viên, admin sau khi nhấn nút đăng xuất được đưa trở lại màn hình đăng nhập của hệ thống
Đăng ký: Chức năng này giúp người dùng, admin tạo tài khoản để đăng nhập vào hệ thống Người dùng muốn trở thành một thành viên của hệ thống sẽ điền các thông tin gồm tên, tên đăng nhập, mật khẩu, số điện thoại để đăng ký tài khoản mới Trong đó Tên đăng nhập Số điện thoại và Email phải là duy nhất Admin chỉ cần đăng ký tên đăng nhập và mật khẩu
Cập nhật tài khoản: Chức năng này cho phép thành viên thay đổi thông tin của tài khoản Thành viên dùng chức năng này có thể cập nhật lại số điện thoại và tên của tài khoản
Quản lý cửa hàng:
Tìm kiếm: Người dùng, thành viên và admin dùng chức năng này để tìm cửa hàng mong muốn Để dùng chức năng này, họ nhập tên cửa hàng muốn tìm, đối với người dùng và thành viên họ có thể chọn các tiêu chí để lọc bao gồm món
ăn và khu vực
Tìm đường: Chức năng này cho phép người dùng và thành viên xác định được đường đi từ vị trí của họ đến cửa hàng mong muốn Khi họ ấn nút định vị, hệ thống sẽ lấy thông tin vị trí Sau khi định vị được vị trí của họ, ứng dụng sẽ chỉ đường từ vị trí đó đến cửa hàng mong muốn trên bản đồ
Trang 26Cập nhật danh sách cửa hàng yêu thích: Chức năng này giúp thành viên thêm một cửa hàng vào danh sách riêng của mình Khi thành viên tìm thấy một cửa hàng phù hợp với mình và không muốn mất công tìm kiếm vào các lần sau, thành viên có thể cho cửa hàng đó vào danh sách cửa hàng yêu thích Ngoài ra, thành viên cũng có thể xóa cửa hàng đó ra khỏi danh sách
Cập nhật thông tin cửa hàng: Admin có thể thêm, sửa, xóa thông tin về cửa hàng
Quản lý bạn bè:
Tìm kiếm bạn bè: Chức năng này cho phép thành viên tìm kiếm trong danh sách bạn bè Thành viên nhập tên để tìm kiếm người bạn trong danh sách bạn bè của mình
Xóa bạn bè: Chức năng này cho phép thành viên xóa bạn bè khỏi danh sách bạn bè Thành viên chọn người bạn muốn xóa và ấn nút xóa để loại bỏ tên người bạn khỏi danh sách
Gửi lời mời kết bạn: Chức năng cho phép các thành viên kết bạn với nhau Khi muốn kết bạn với một thành viên khác, thành viên cần biết số điện thoại của họ,
và nhập số đó để gửi lời mời
Duyệt lời mời kết bạn: Chức năng cho phép thành viên duyệt lời mời kết bạn Khi có một yêu cầu kết bạn, thành viên có thể xem quyết định chấp nhận hay từ chối lời mời đó
Cập nhật bạn thân thiết: Chức năng cho phép thành viên cập nhật người bạn thành thân thiết Khi cập nhật một người bạn thân thiết, tên người đó sẽ hiển thị trong danh sách bạn thân thiết, giúp thành viên dễ dàng tìm thấy tên người bạn
đó
Trang 27 Quản lý lời mời:
Gửi lời mời: Chức năng cho phép thành viên gửi lời mời đi ăn tới bạn của mình Thành viên gửi lời mời đi ăn đến những thành viên khác có trong danh sách bạn
bè
Duyệt lời mời: Chức năng cho phép thành viên duyệt lời mời đi ăn được gửi cho mình Thành viên nhận được lời mời đi ăn, họ có thể đồng ý hoặc từ chối lời mời đó
Tìm kiếm: Chức năng cho phép thành viên tìm kiếm lời mời trong danh sách lời mời
Nhắc việc: Chức năng cho phép thành viên biết được đến giờ hẹn của lời mời
đã được chấp nhận Khi gần đến thời gian của một lời mời, ứng dụng sẽ thông báo thành viên
Xóa lời mời: Thành viên có thể xóa một lời mời đã được chấp nhận
Quản lý bình luận, đánh giá:
Cập nhật bình luận: Thành viên có thể thêm, sửa, xóa bình luận của mình về cửa hàng Admin có thể xóa, duyệt bình luận về cửa hàng
Cập nhật đánh giá: Thành viên có thể thêm, xóa đánh giá về cửa hàng
3.2 Sơ đồ luồng dữ liệu các mức
3.2.1 Sơ đồ luồng dữ liệu mức khung cảnh
Sau quá trình phân tích, em rút ra sơ đồ luồng dữ liệu mức khung cảnh như Hình 3.2
Trang 293.2.2 Sơ đồ luồng dữ liệu mức đỉnh
Thông tin tìm kiếm bạn bè
Thông tin bạn bè
Kết quả lời mời Lời mời kết bạn
Người dùng
Admin Thông tin cập nhật
Thông tin tìm kiếm
Kết quả lời mời
Lời mời
Người dùng
Thông tin cập nhật tài khoản
Thông tin đăng ký/ đăng nhập/ đăng xuất
Người dùng
Thông tin đăng nhập/ xuất
5 Quản lý bình luận đánh giá
1 Quản lý tài khoản
Kết quả đăng ký/ đăng nhập/ đăng xuất
Kết quả đăng nhập/ xuất
3 Quản lý bạn bè
Thông tin xóa bạn bè
4 Quản lý lời mời
Lời mời cần xóa
Kết quả bình luận Kết quả đánh giá
Kết quả cập nhật tài khoản
Kết quả xóa bạn bè
Kết quả xóa lời mời
Danh mục khu vực
Danh mục món ăn
Admin
6 Quản lý danh mục
Danh mục khu vực
Danh mục món ăn
Thông tin cập nhật khu vực Kết quả cập nhật khu vực
Thông tin cập nhật danh mục món ăn Kết quả cập nhật danh mục món ăn
Thông tin tìm kiếm Kết quả tìm kiếm
Trang 303.2.3 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý tài khoản
Người dùng
Thông tin đăng ký Người dùng
1.2 Đăng ký Kết quả đăng ký
Người dùng Thông tin đăng nhập / xuất 1.1 Đăng nhập/xuất
Kết quả đăng nhập / xuất
1.3 Cập nhật tài khoản Kết quả cập nhật tài khoản
Thông tin cập nhật
Admin Thông tin đăng nhập / xuất
Thông tin tài khoản Kết quả cập nhật
Thông tin đăng ký
Người dùng Kết quả lấy lại mật khẩu
Hình 3.4 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý tài khoản
Trang 313.2.4 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý cửa hàng
hàng Thông tin tìm kiếm cửa hàng
Cửa hàng
2.2 Tìm đường Thông tin đường đi
Admin
Thông tin cập nhật cửa hàng
Người dùng
2.3 Cập nhật cửa hàng yêu thích Thông tin cập nhật
Người dùng
2.4 Cập nhật thông tin cửa hàng
Danh mục món ăn
Hình 3.5 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý cửa hàng
Trang 323.2.5 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bạn bè
Người dùng
Số điện thoại
Kết quả gửi lời mời
3.1 Gửi lời mời kết bạn
Kết quả tìm kiếm
Bạn cần xóa
3.3 Xóa bạn bè
3.5 Cập nhật bạn bè thân thiết
Trang 333.2.6 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý lời mời
Thông tin tìm kiếm Kết quả tìm kiếm
4.5 Xóa lời mời Lời mời cần xóa
4.4 Nhắc việc
4.3Tìm kiếm lời mời
Kết quả gửi lời mời
Người dùng
Người dùng
Hình 3.7 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý lời mời
Trang 343.2.7 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý bình luận đánh giá
Thông tin đánh giá
Đánh giá Admin
Kết quả duyệt bình luận
Hình 3.8 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý
bình luận đánh giá 3.2.8 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý danh mục
Admin
6.1 Quản lý danh mục món ăn
Thông tin món ăn
Danh mục món ăn
6.2 Quản lý danh mục khu vực
Danh mục khu vực Kết quả danh mục khu vực
Thông tin tìm kiếm Kết quả tìm kiếm
Kết quả tìm kiếm
Hình 3.9 Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản lý danh mục
Trang 35CHƯƠNG 4 THIẾT KẾ HỆ THỐNG 4.1 Thiết kế cơ sở dữ liệu
4.1.1 Xác định các tập thực thể
Tập thực thể Người dùng bao gồm các thuộc tính: Mã người dùng, Tên, Số điện thoại, Tên đăng nhập, Mật khẩu, Email, trong đó thuộc tính Mã người dùng là khóa chính
Tập thực thể Cửa hàng bao gồm các thuộc tính: Mã cửa hàng, Địa chỉ, Số điện thoại, Mô tả, Kinh độ, Vĩ độ, Ảnh, trong đó thuộc tính Mã cửa hàng là khóa chính Thuộc tính Ảnh là thuộc tính đa trị
Tập thực thể Bình luận gồm các thuộc tính: Mã bình luận, Nội dung bình luận, Thời gian bình luận, Duyệt, trong đó Mã bình luận là khóa chính
Tập thực thể Đánh giá gồm các thuộc tính: Mã đánh giá, Số điểm cửa hàng đánh giá, trong đó Mã đánh giá là khóa chính
Tập thực thể Lời mời gồm các thuộc tính: Mã lời mời, Nội dung lời mời, Tên người gửi, Tên người nhận, Thời gian, Duyệt, trong đó Mã lời mời là khóa chính
Tập thực thể Danh mục khu vực bao gồm các thuộc tính: Mã khu vực, Tên khu vực, trong đó Mã khu vực là khóa chính
Tập thực thể Danh mục món ăn bao gồm các thuộc tính: Mã danh mục, Tên danh mục, trong đó Mã danh mục là khóa chính
Tập thực thể Admin bao gồm các thuộc tính: Mã admin, Tên đăng nhập, Mật khẩu, trong đó Mã admin là khóa chính
Trang 364.1.2 Xác định các mối liên kết giữa các tập thực thể
Duyệt
Hình 4.2 Liên kết giữa hai tập thực thể Người dùng với Người dùng Liên kết Kết bạn giữa tập thực thể Người dùng với Người dùng là N-N như hình 4.2, vì một người dùng có thể kết bạn với nhiều người dùng và một người dùng có thể là bạn của nhiều người dùng Liên kết kết bạn có thuộc tính là Bạn thân thiết và Duyệt
Gửi
Hình 4.3 Liên kết giữa hai tập thực thể Người dùng và Bình luận
Trang 37Liên kết Gửi giữa tập thực thể Người dùng và tập thực thể Bình luận là liên kết 1-N như hình 4.3, vì một người dùng có thể có nhiều bình luận nhưng một bình luận chỉ có thể của một người dùng
Gửi
Hình 4.4 Liên kết giữa hai tập thực thể Người dùng và Đánh giá
Liên kết Gửi giữa tập thực thể Người dùng và tập thực thể Đánh giá là 1-1 như hình 4.4, vì một người dùng có một đánh giá với một cửa hàng, và một đánh giá chỉ thuộc về một người dùng
Gửi
Hình 4.5 Liên kết gửi giữa gửi hai tập thực thể Người dùng và Lời mời Liên kết Gửi giữa tập thực thể Người dùng và tập thực thể Lời mời là liên kết là 1-N như hình 4.5, vì một người dùng có thể gửi nhiều lời mời nhưng một lời mời chỉ thuộc về một người dùng
Nhận
Hình 4.6 Liên kết nhận giữa nhận hai tập thực thể Người dùng và Lời mời Liên kết Nhận giữa tập thực thể Người dùng và tập thực thể Lời mời là liên kết
là 1-N như hình 4.6, vì một người dùng có thể nhận nhiều lời mời nhưng một lời mời chỉ thuộc về một người dùng
Trang 38Hình 4.7 Liên kết giữa hai tập thực thể Cửa hàng và Bình luận
Tập thực thể Cửa hàng và tập thực thể Bình luận có liên kết 1-N như hình 4.7,
vì một cửa hàng có thể có nhiều bình luận, nhưng một bình luận chỉ có thể thuộc về một cửa hàng
Gửi
Hình 4.8 Liên kết giữa hai tập thực thể Cửa hàng và Đánh giá
Tập thực thể Cửa hàng và tập thực thể Đánh giá có liên kết 1-1 như hình 4.8, vì một cửa hàng có thể có nhiều đánh giá, và một đánh giá chỉ thuộc về một cửa hàng
Thuộc
Hình 4.9 Liên kết giữa hai tập thực thể Cửa hàng và Danh mục món ăn Tập thực thể Danh mục món ăn và tập thực thể Cửa hàng có liên kết 1-N như hình 4.9, vì một danh mục món ăn có thể có nhiều cửa hàng, nhưng một cửa hàng chỉ có thể thuộc về một danh mục món ăn
Thuộc
Hình 4.10 Liên kết giữa hai tập thực thể Cửa hàng và Danh mục khu vực
Trang 39Tập thực thể Danh mục khu vực và tập thực thể Cửa hàng có liên kết 1-N như hình 4.10, vì một danh mục khu vực có thể có nhiều cửa hàng, nhưng một cửa hàng chỉ có thể thuộc về một danh mục khu vực
4.1.3 Mô hình thực thể liên kết E-R
Bạn thân thiết Duyệt
Danh mục khu vực
Danh mục món ăn
Thuộc
Thuộc
Admin
Hình 4.11 Mô hình thực thể liên kết ER
Trang 40Danh_Gia MaDanhGia SoDiem MaCuaHang(FK) MaNguoiDung(FK)
Ban_Be MaNguoiDung MaNguoiBan BanBeThanThiet Duyet
Danh_Muc_Mon_An MaDanhMuc TenDanhMuc
Admin MaAdmin TenDangNhap MatKhau
Hình 4.12 Mô hình quan hệ