Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
3,12 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN HỌC - LUẬN VĂN TỐT NGHIỆP CỬ NHÂN NGÀNH CƠNG NGHỆ THƠNG TIN ĐỀ TÀI: TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH SINH VIÊN: CHU THỊ THANH VÂN LỚP: 1OCNTT4 CÁN BỘ HƯỚNG DẪN: TH.S NGƠ ĐÌNH THƯỞNG ĐÀ NẴNG, 5/2014 LỜI CẢM ƠN Em chân thành cảm ơn thầy cô khoa Tin Học trường Đại học Sư Phạm, Đại học Đà Nẵng, truyền đạt kiến thức quý báu cho em năm học vừa qua tạo điều kiện thuận lợi cho em học tập thực đề tài tốt nghiệp Đặc biệt, em xin chân thành cảm ơn thầy giáo Th.s Ngơ Đình Thưởng trực tiếp, tận tình giúp đỡ hướng dẫn em suốt thời gian thực đề tài Mặc dù có nhiều cố gắng để hoàn thành đồ án phạm vi khả cho phép chắn đồ án khơng tránh khỏi thiếu sót Em mong nhận thơng cảm, góp ý tận tình bảo quý thầy cô bạn Một lần em xin chân thành cảm ơn! Đà Nẵng, ngày 10 tháng năm 2014 Sinh viên thực Chu Thị Thanh Vân LỜI CAM ĐOAN Tôi xin cam đoan: Những nội dung luận văn em thực hướng dẫn trực tiếp thầy Th.s Ngơ Đình Thưởng Mọi tham khảo dùng luận văn trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm Sinh viên Chu Thị Thanh Vân Mục Lục LỜI CẢM ƠN LỜI CAM ĐOAN LÝ DO CHỌN ĐỀ TÀI 1 Bối cảnh đề tài: Mục đích đề tài CHƯƠNG I I.1 CƠ SỞ LÝ THUYẾT GIỚI THIỆU NODE.JS I.1.1 Javascript lập trình Server I.1.2 Node.JS I.1.3 Giới thiệu Blocking Non-Blocking I.1.4 Socket.io I.1.5 10 lý nên sử dụng Node JS: I.2 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU NoSQL 10 I.2.1 Giới thiệu NoSQL 10 I.2.2 Xác định NoSQL có phù hợp 12 I.2.3 Tìm hiểu CouchDB 13 CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 18 II.1 PHÂN TÍCH YÊU CẦU 18 II.1.1 Mô tả toán quản lý cửa hàng bán thức ăn nhanh trực tuyến 18 II.1.2 Phân tích yêu cầu toán 18 II.1.3 Xác định chức hệ thống 19 II.2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG : 21 II.2.1 Tác nhân hệ thống 21 II.2.2 Biểu đồ UseCase sử dụng 21 II.2.1 Phân tích thiết kế chức đăng ký 26 II.2.2 Phân tích thiết kế chức đăng nhập 28 II.2.3 Phân tích thiết kế chức chủ cửa hàng quản lý việc đặt hàng khách hàng 30 II.2.4 Phân tích thiết kế chức chủ cửa hàng xem danh sách tất ăn, tất nhân viên, tất khách hàng 31 II.2.5 Phân tích thiết kế chức chủ cửa hàng thêm ăn, thêm nhân viên 32 II.2.6 Phân tích thiết kế chức chủ cửa hàng chỉnh sửa thông tin ăn (nhân viên) 34 II.2.7 Phân tích thiết kế chức chủ cửa hàng xóa ăn, xóa nhân viên, xóa khách hàng 37 II.2.8 Phân tích thiết kế chức chủ cửa hàng tìm kiếm thơng tin ăn, nhân viên, khách hàng 39 II.2.9 Phân tích thiết kế chức khách hàng xem danh sách ăn 40 II.2.10 Phân tích thiết kế chức khách hàng thực việc đặt hàng trực tuyến 42 II.3 Phân tích thiết kế sở liệu 44 II.3.1 Thiết kế doc 44 II.3.2 Thiết kế View :(hiên thị thông tin cần thiết lấy từ doc) 46 CHƯƠNG III TRIỂN KHAI CHƯƠNG TRÌNH … 49 III.1 CÁC CÔNG CỤ SỬ DỤNG 49 III.2 MỘT SỐ THƯ VIỆN MỞ RỘNG 49 III.3 KỸ THUẬT VÀ CÔNG NGHỆ SỬ DỤNG 49 III.4 CÀI ĐẶT MÔI TRƯỜNG 49 III.4.1 Cài đặt node.js 49 III.4.2 Cài đặt couchdb 49 III.5 DEMO 50 KẾT LUẬN 58 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH DANH MỤC HÌNH VẼ Hình 1: Mơ tả blocking Hình : Mơ tả non-blocking Hình : Mô tả event loop Hình : UseCase tổng quát 22 Hình : UseCase Đăng ký, đăng nhập 22 Hình : UseCase Quản lý danh sách thực đơn 23 Hình 7: UseCase chủ cửa hàng quản lý danh sách nhân viên 24 Hình : UseCase chủ cửa hàng quản lý danh sách khách hàng 24 Hình : UseCase chủ cửa hàng quản lý đặt hàng 24 Hình 10 : UseCase khách hàng xem lịch sử đặt hàng 25 Hình 11 : UseCase khách hàng xem danh sách thực đơn 25 Hình 12: UseCase khách hàng đặt hàng 25 Hình 13 : Biểu đồ hoạt động đăng ký 27 Hình 14 : Biểu đồ - Đăng kí 27 Hình 15: Biểu đồ hoạt động - Đăng nhập 29 Hình 16: Biểu đồ - Đăng nhập 29 Hình 17 : Biểu đồ hoạt động quản lý đặt hàng 30 Hình 18 : Biểu đồ chủ cửa hàng quản lý đặt hàng 31 Hình 19: Biểu đồ hoạt động – danh sách thực đơn 32 Hình 20 : Biểu đồ hoạt động đăng nhập 32 Hình 21: Biểu đồ hoạt động – Thêm ăn 33 Hình 22 : Biểu đồ chủ cửa hàng thêm ăn 34 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 23: Biểu đồ hoạt động chủ cửa hàng chỉnh sửa thơng tin ăn 35 Hình 24 : Biểu đồ tuần chủ cửa hàng chỉnh sửa thơng tin ăn 36 Hình 25: Biểu đồ hoạt động chủ cửa hàng quản lý thực đơn 38 Hình 26 : Biểu đồ chủ cửa hàng xóa ăn 38 Hình 27 : Biểu đồ tìm kiếm ăn 40 Hình 28 : Biểu đồ hoạt động khách hàng xem danh sách thực đơn 41 Hình 29 : Biểu đồ khách hàng xem danh sách thực đơn 42 Hình 30 : Biểu đồ hoạt động khách hàng đặt hàng 43 Hình 31: Biểu đồ khách hàng đặt hàng 43 Hình 32: Trang đăng nhập 50 Hình 33: Trang đăng ký tài khoản 53 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH DANH MỤC BẢNG BIỂU Bảng : Bảng chức đăng ký, đăng nhập 19 Bảng : Bảng chức chủ cửa hàng quản lý việc đặt hàng khách hàng 19 Bảng : Bảng chức chủ cửa hàng quản lý danh sách thực đơn ăn 20 Bảng : Bảng chức chủ cửa hàng quản lý danh sách nhân viên 20 Bảng : Bảng chức chủ cửa hàng quản lý danh sách khách hàng 20 Bảng : Bảng chức khách hàng xem danh sách thực đơn ăn 21 Bảng : Bảng chức khách hàng thực hiên việc đặt hàng 21 Bảng : Doc Users 44 Bảng : Doc thực đơn 45 Bảng 10 : Doc nhân viên 45 Bảng 11 : Doc nhân viên 46 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH LÝ DO CHỌN ĐỀ TÀI Bối cảnh đề tài: Ngày với kỉ ngun cơng nghệ bùng nổ, thời kì mạng xã hội khiến cho số lượng người dùng truy cập vào hệ thống ngày tăng.Điển Facebook ngày phục vụ 1000 tỉ lượt xem với khoảng 800 triệu lượt khách vào tháng ta hình dung bùng nổ thông tin nào.Để giải vấn đề bùng nổ mở rộng hệ thống máy chủ siêu lớn, phân thành nhiều cụm đặt khắp nơi giới.Nhưng với tốc độ tăng trưởng theo cấp số việc tăng số lượng máy chủ lên thơi có lẽ không đủ.Ta cần xem xét nâng cấp giải pháp xây dựng web cho tương lai Đầu tiên mặt ngôn ngữ máy chủ.Các websever hay với cách truyền thống phục vụ theo luồng tự giới hạn khả máy chủ cho việc đáp ứng số lượng yêu cầu đến từ người dùng khơng tốt cho tồn cần tính tốn thời gian thực Giải pháp hướng kiện nodeJS khả trường hợp này.Nó giảm số luồng hoạt động máy chủ xuống, giảm thời gian trễ nên đáp ứng tốt ứng dụng thời gian thực hiên Thứ hai mặt sở liệu.Với hệ thống với số lượng lên đến hàng triệu hàng tỉ việc hiệu tốt việc bắt buộc.Hệ thống máy chủ sở liệu đòi hỏi phải mạnh mẽ không máy chủ bị tải.Ngôn ngữ SQL ngôn ngữ thông dịch với ràng buộc bảng khiến cho hiệu thực hệ thống sở liệu thực thi ì ạch với hệ thống lớn kể trên.Chưa kể với hệ thống lớn vấn đề phân tán liệu, tính tồn vẹn liệu việc quan trọng.NoSQL đáp ứng tất yêu cầu này.Với tốc độ nhanh qua câu truy vấn SQL, có tính sẵn sàng, phân tán cao độ ổn định tuyệt vời.Rất thích hợp cho hệ thống có lượt truy vấn lớn.Ở khóa luận tôi, nghiên cứu NoSQL phổ biến - CouchDB.Với khả chịu lỗi tốt tính ổn định cao, đồng thiết bị tốt, hỗ trợ phiên offline tốt.CouchDB xứng đáng sở liệu đáng tin cậy SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Loai Text “điểm tâm” “hambuger” “đồ uống Ten Text Số lương Number Nơi đặt Text Tght Datetime Thời gian đặt hàng Tgg Datetime Thời gian giao hàng Bảng 11 : Doc nhân viên II.3.2 Thiết kế View :(hiên thị thông tin cần thiết lấy từ doc) Hiên thị tất thông tin đặt hàng Hiển thị tất doc có table ”dathang” Key view tên khách hàng, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==='dathang') emit(doc.tenkh, doc); } Hiển thị thông tin thực đơn Hiển thị thông tin thực đơn điểm tâm Hiển thị tất doc có table ”thucdon” loại “điểm tâm Key view loại, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==="thucdon"&&doc.loai==="điểm tâm") emit(doc.loai, doc); } SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 46 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hiển thị thông tin thực đơn hambuger Hiển thị tất doc có table ”thucdon” loại “hambuger” Key view loại, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==="thucdon"&&doc.loai==="hambuger") emit(doc.loai, doc); } Hiển thị thông tin thực đơn đồ uống Hiển thị tất doc có table ”thucdon” loại “đồ uống” Key view loại, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==="thucdon"&&doc.loai==="đồ uống") emit(doc.loai, doc); } Hiển thị thông tin tất thực đơn Hiển thị tất doc có table ”thucdon” Key view loại, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==="thucdon") emit(doc.loai, doc); } Hiển thị thông tin tất nhân viên Hiển thị tất doc có table ”nhanvien” Key view tên nhân viên, value tất thông tin doc Code couchdb: function(doc) { if(doc.table==="nhanvien") SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 47 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH emit(doc.tennhanvien, doc); Hiển thị thông tin user Hiển thị thông tin người dùng admin(chủ cửa hàng) Hiển thơng tất doc có table “user” role “admin” Key view username, value tất thông tin doc function(doc) { if(doc.table==="user" && doc.role==="admin") emit(doc.username, doc); } Hiển thị thông tin người dùng khách hàng Hiển thông tất doc có table “user” role “khách hàng” Key view username, value tất thông tin doc function(doc) { if(doc.table==="user" && doc.role==="admin") emit(doc.username, doc); SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 48 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH CHƯƠNG III TRIỂN KHAI CHƯƠNG TRÌNH Chương trình bày công cụ, thư viện, ngôn ngữ sử dụng cho việc triển khai chương trình kết hệ thống xây dựng III.1 CÁC CÔNG CỤ SỬ DỤNG Webstorm 6.0.2 CouchDB 1.3.1 Nodejs 0.10.19 III.2 MỘT SỐ THƯ VIỆN MỞ RỘNG Felix-CouchDB Socket.io III.3 KỸ THUẬT VÀ CÔNG NGHỆ SỬ DỤNG Sử dụng cơng nghệ Node.JS Sử dụng kỹ thuật lập trình theo mơ hình MVC III.4 CÀI ĐẶT MƠI TRƯỜNG III.4.1 Cài đặt node.js Vào trang web nodejs.org Bấm vào Downloads III.4.2 Cài đặt couchdb Vào trang couchdb.apache.org Download cài đặt Với hệ điều hành ubuntu sử dụng lệnh cài đặt: sudo apt-get install couchdb SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 49 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH III.5 DEMO Hình 32: Trang đăng nhập Ví dụ models - Đầu tiên phần View, form Login có action doLogin, phần code giao diện, xử lí tác vụ phụ javascripst lượt bỏ Đăng Nhập SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 50 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Remember me Đăng ký - Nhờ liên kết FrameWork Express thông tin từ phần View đưa hàm doLogin file login_controllers.js thư mục controller sau function doLogin(app){ app.post('/doLogin', function(req, res){ var user = req.body.login_user; var pwd = req.body.login_pwd; login_models.getLogin(user, pwd, function(success,detail){ req.session.user = true; if(success&&detail.role==='admin'){ req.session.user = detail; res.redirect('/qlNhanVien'); } else if(success&&detail.role==='khachhang'){ req.session.user = detail; res.redirect('khachhang/trangchu'); } else{ detail = detail == undefined ? {} : detail; _goLogin('false', res); } }) }) - Hàm doLogin phần controller xử lý điều hướng trang cách gọi models đâu login_models.getLogin cụ thể sau function getLogin(user,pwd,callback){ SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 51 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH db.view('viewrole', 'admin', {key : user}, function(err, data){ if(err || data.rows.length === 0){ db.view('viewrole','khachhang',{key:user},function(err,data){ if(err || data.rows.length === 0) return callback(false); else{ if((pwd === data.rows[0].value.password) &&('khachhang'===data.rows[0].value.role)){ return callback(true,data.rows[0].value); }else{ return callback(false); } } }) }else{ if((pwd === data.rows[0].value.password) &&('admin'===data.rows[0].value.role)){ return callback(true,data.rows[0].value); }else{ console.log(data.rows[0].value.password) ; console.log("nhap sai pass"); return callback(false); } } }); } - Như ta vừa xử lý chức đăng nhập theo mơ hình MVC, chức lại xử lý tương tự SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 52 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 33: Trang đăng ký tài khoản Hình 34 : Trang quản lý nhân viên SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 53 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 35: Trang thêm nhân viên Hình 36: Trang thơng tin chi tiết nhân viên SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 54 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 37: Trang quản lý thực đơn Hình 38: Trang thêm ăn SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 55 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 39: Trang chi tiết ăn Hình 40 : Trang quản lý khách hàng SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 56 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Hình 41 : Trang danh sách thực đơn Hình 42 : Trang khách hàng đặt hàng SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 57 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH KẾT LUẬN Những điều đạt I Trong thời gian học tập nghiên cứu làm đồ án tốt nghiệp, nhận nhiều giúp đỡ nhiệt tình thầy bạn sinh viên để hoàn thành đề tài, qua trình làm đồ án tốt nghiệp tìm hiểu nodejs,couch db, xây dựng hệ thống đặt hàng trực tuyến thu kết sau: o Hiểu Node.JS o Hiểu sở liệu phi quan hệ couchDB o Xây dựng hệ thống quản lý bán thức ăn nhanh trực tuyến II Những điều chưa đạt Tuy đạt kết định, hệ thống có hạn chế: Giao diện chưa đẹp Hệ thống Server trình xây dựng Client web III Hướng phát triển Triển khai ứng dụng vào thực tế Hoàn thiện hệ thống Server Xây dựng ứng dụng đa tảng Hoàn thiện ứng dụng thêm chức quản lý việc giao hàng nhân viên SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 58 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Qua buổi báo cáo khóa luận tốt nghiệp ngày 28/5/2014 vừa qua em tiếp thu nhận xét phản biện giáo viên phản biện chỉnh sửa theo yêu cầu giáo viên phản biên để hoàn chỉnh báo cáo Em xin chân thành cảm ơn giáo viên hướng dẫn, giáo viên phản biện góp ý chân thành cho em sửa chữa lỗi báo cáo Đà Nẵng ngày tháng năm 2014 Giáo viên phản biện SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 59 TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH TÀI LIỆU THAM KHẢO [1] Mick Thompson Getting Started with GEO,CouchDB & Node.js.2010.66 [2] Pedro Teixeira PROFESSIONAL NODE.JS Building Javascript Based Scalable Software 2011.412tr [3] Trang web https://github.com/felixge/node-couchdb [4] Trang web: http://www.w3schools.com/js/default.asp [5] Trang web : http://forum.nodejs.vn/ Một số đề tài tốt nghiệp anh chị khác mà em tìm hiểu mạng SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 60 ... 16 TÌM HIỂU NODE. JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH SVTH: Chu Thị Thanh Vân – 10CNTT4 Trang 17 TÌM HIỂU NODE. JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC... quan hệ NoSQL, couchDB Xây dựng ứng dụng bán thức ăn nhanh Các bước thực Tìm tài liệu ,tìm hiểu NodeJS CouchDB Phân tích yêu cầu hệ thống bán thức ăn nhanh trực tuyến Xây dựng sở liệu CouchDB,... 10CNTT4 Trang 18 TÌM HIỂU NODE. JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG QUẢN LÝ BÁN THỨC ĂN NHANH Công nghệ Các cơng nghệ sử dụng chương trình Nodejs 0.10.19 Hệ quản trị sở liệu CouchDB HTML,CSS,