Hiện nay, đời sống của con người ngày càng cao, các dịch vụ tiện ích ngày mới ngày càng được sinh ra. Hơn thế nữa trong tình hình dịch bệnh căng thẳng thì các dịch vụ, tiện ích làm hạn chế con người tiếp xúc nơi đông người lại càng được đặt lên hàng đầu dịch vụ đặt đồ ăn trực tuyến là một trong số đó. Không những giải quyết bài toán mùa dịch của toàn nhân loại, mà đây có thể coi như một sàn thương mai ẩm thực giúp các quán ăn, nhà hàng có thể về đồ ăn giúp quảng bá những món ăn đến gần với khách hàng hơn. Với những kiến thức mà thầy Nguyễn Thanh Bình đã chỉ dạy, nhóm chúng em đã phát triển ứng dụng “Đặt đồ ăn” trên thiết bị android. Vì kinh nghiệm còn hạn chế nên phần mềm chưa được hoàn chỉnh, mong thầy sẽ giúp đỡ và cho chúng em thêm những ý kiến để chúng em tiếp tục phát triển thêm
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG BÁO CÁO LẬP TRÌNH NÂNG CAO Đề tài: THIẾT KẾ ỨNG DỤNG ĐẶT ĐỒ ĂN TRÊN THIẾT BỊ ANDROID Giảng viên hướng dẫn: ThS Nguyễn Thanh Bình Sinh viên thực hiện: STT HỌ VÀ TÊN MSSV Đinh Hữu Đức Hiếu 20182508 Nguyễn Văn Quyền 20182749 Đặng Văn Tuấn 20182855 Bùi Hoàng Hiệp 20182503 Nguyễn Bá Huy 20182582 LỜI MỞ ĐẦU Hiện nay, đời sống người ngày cao, dịch vụ tiện ích sinh Hơn tình hình dịch bệnh căng thẳng dịch vụ, tiện ích làm hạn chế người tiếp xúc nơi đông người lại đặt lên hàng đầu dịch vụ đặt đồ ăn trực tuyến số Khơng giải tốn mùa dịch tồn nhân loại, mà coi sàn thương mai ẩm thực giúp quán ăn, nhà hàng đồ ăn giúp quảng bá ăn đến gần với khách hàng Với kiến thức mà thầy Nguyễn Thanh Bình dạy, nhóm chúng em phát triển ứng dụng “Đặt đồ ăn” thiết bị android Vì kinh nghiệm cịn hạn chế nên phần mềm chưa hoàn chỉnh, mong thầy giúp đỡ cho chúng em thêm ý kiến để chúng em tiếp tục phát triển thêm MỤC LỤC LỜI MỞ ĐẦU DANH MỤC BẢNG DANH MỤC HÌNH VẼ CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Đề xuất hệ thống .6 1.3 Phân tích tính khả thi .7 1.3.1 Khả thi kỹ thuật 1.4 Các công cụ ngôn ngữ sử dụng 1.4.1 Java 1.4.2 Andorid Studio 1.4.3 Fire Base 13 CHƯƠNG PHÂN TÍCH HỆ THỐNG 17 2.1 Phân tích hệ thống 17 2.1.1 Yêu cầu chức 17 2.1.2 Yêu cầu phi chức 17 2.2 Sơ đồ Use Case tổng quan hệ thống 18 2.3 Mô tả Use Case hệ thống 18 2.3.1 Use case quản lý danh sách sản phẩm 18 2.3.2 Use case quản lý đơn hàng 20 2.3.3 Use case đăng nhập .21 2.3.4 Use case đăng ký 21 2.3.5 Use case đặt 22 2.3.6 Use case Cập nhật thông tin cá nhân 22 2.4 Sơ đồ Class diagram .23 CHƯƠNG THIẾT KẾ HỆ THỐNG 24 3.1 Thiết kế tổng thể 24 3.2 Thiết kế lớp .24 3.3 Thiết kế sở liệu 25 3.3.1 Thực thể khách hàng 25 3.3.2 Thực thể chi tiết đơn hàng .26 3.3.3 Thực thể ăn .26 3.3.4 Thực thể đơn hàng 26 3.3.5 Sơ đồ ERD 27 3.4 Thiết kế giao diện 28 3.4.1 Đối với khách hàng 28 3.4.2 Đối với cửa hàng 31 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 35 DANH MỤC BẢNG Bảng Use case quản lý danh sách sản phẩm Bảng Use case quản lý đơn hàng Bảng Use case đăng nhập Bảng Use case đăng ký Bảng Use case đặt Bảng Use case Cập nhật thông tin cá nhân Bảng Thiết kế lớp DANH MỤC HÌNH VẼ Hình Cấu trúc project Android studio Hình Thư mục quản lý file giao diện đồ họa Hình Sơ đồ use case hệ thống Hình Sơ đồ Class diagram Hình Sơ đồ ERD Hình Giao diện mở ứng dụng Hình Giao diện đăng nhập khách hàng Hình Giao diện đăng ký khách hàng Hình Giao diện danh sách ăn Hình 10 Giao diện danh sách ăn đặt Hình 11 Giao diện danh sách ăn giao Hình 12 Giao diện thông tin khách hàng Hình 13 Giao diện đăng nhập với cửa hàng Hình 14 Giao diện quản lý danh sách ăn đặt Hình 15 Giao diện danh sách ăn giao Hình 16 Giao diện quản lý danh sách ăn menu CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề − Hiện nay, đời sống người ngày cao, dịch vụ tiện ích sinh Hơn tình hình dịch bệnh căng thẳng dịch vụ, tiện ích làm hạn chế người tiếp xúc nơi đông người lại đặt lên hàng đầu ,dịch vụ đặt đồ ăn trực tuyến số − Khơng giải tốn mùa dịch tồn tồn cầu, mà coi sàn thương mai ẩm thực giúp quán ăn, nhà hàng đồ ăn giúp quảng bá ăn đến gần với khách hàng 1.2 Đề xuất hệ thống − Từ những khảo sát ban đầu đề xuất hệ thống được đưa sau: Tên dự án: Ứng dụng đặt đồ ăn thiết bị android Tính cấp thiết: Như tình hình dịch bệnh hạn chế tụ tập nơi đơng người, phần mềm hỗ trợ khác hàng đặt đồ ăn, hỗ trợ cửa hàng mở rộng thị trường, phạm vi bán hàng Người dùng: Khách hàng (người đặt đồ ăn), Cửa hàng( Đơn vị cung cấp đồ ăn giao đồ ăn) − Các chức năng: + Đối với khách hàng: Đăng kí tài khoản Đăng nhập tài khoản Cập nhật thông tin cá nhân Các chức năng: đặt, hủy đơn hàng, xác nhận nhận đồ ăn thành công + Đối với cửa hàng: Đăng nhập tài khoản Quản lí đơn hàng: Xem danh sách đơn hàng chờ xác nhận Xác nhận đơn hàng đặt Xem danh sách đơn hàng hoàn thành Quản lí danh sách ăn : Xem danh sách ăn cửa hàng Chỉnh sửa thơng tin ăn có danh sách Thêm ăn vào danh sách ăn 1.3 Phân tích tính khả thi 1.3.1 Khả thi kỹ thuật − Việc phân tích tính khả thi kỹ thuật nhằm giúp nhóm đảm bảo việc mở rộng hay xây dựng hệ thống thiết kế, phát triển cài đặt thành công Tính khả thi về mặt kỹ thuật được xác định dựa các yếu tố sau: − Hiểu rõ ứng dụng: Thơng qua u cầu hệ thống trình bày phần trước, chúng em xác định lí xây dựng hệ thống giá trị mà hệ thống mang lại Việc xây dựng ứng dụng đặt đồ ăn ứng dụng Android cần thiết Do chúng em phát triển ứng dụng để khắc phục vấn đề − Hiểu rõ cơng nghệ: Hệ thống hồn tồn khả thi với công nghệ công cụ phần mềm phát triển ứng dụng tảng Mobile hồn tồn có sẵn để tận dụng − Quy mơ dự án: Nhóm phát triển gồm thành viên, thành viên giao nhiệm vụ phân tích, phát triển cho chức phục vụ hệ thống để hoàn thành dự án 1.4 Các công cụ ngôn ngữ sử dụng 1.4.1 Java 1.4.1.1 Lịch sử hình thành Ngơn ngữ lập tình Java ban đầu phát triển Sun Microsystems James Gosling khởi xướng phát hành vào năm 1995 (Java 1.0 [J2SE]) Tại thời điểm phiên sử dụng nhiều Với ưu đa tảng (multiplatform) Java lúc ứng dụng rộng rãi nhiều thiết bị từ máy tính đến mobile nhiều thiết bị phần cứng khác 1.4.1.2 Java gì? Là ngơn ngữ lập trình huớng đối tượng (OOP) dựa lớp (class).Khác với phần lớn ngơn ngữ lập trình thơng thường, thay biên dịch mã nguồn thành mã máy thông dịch mã nguồn chạy, Java thiết kế để biên dịch mã nguồn thành bytecode,bytecode sau mơi trường thực thi (runtime environment) chạy 1.4.1.3 Đặc điểm Java ngơn ngữ lập trình hướng đối tượng nên có đặc điểm chung ngơn ngữ hướng đối tượng Tính trừu tượng (Abstraction): tiến trình xác định nhóm thuộc tính,các hành động liên quan đến thực thể đặc thù, xét mối tương quan với ứng dụng phát triển Tính đa hình (Polymorphism): cho phép phương thức có tác động khác nhiều loại đối tượng khác Với tính đa hình, phương thức ứng dụng cho đối tượng thuộc lớp khác đưa đến kết khác Bản chất việc phương thức bao gồm số lượng tham số Tính kế thừa (Inheritance): Điều cho phép dối tượng chia sẻ hay mở rộng đặc tính sẵn có mà khơng phải tiến hành định nghĩa lại Tính đóng gói (Encapsulation): tiến trình che giấu việc thực thi chi tiết đối tượng với người sử dụng đối tượng Bên cạnh java cịn có nột số đặc tính khác: Độc lập (Write Once, Run Anywhere):Không Giống nhiều ngơn ngữ lập trình khác C C++, Java biên dịch, khơng biên dịch sang mã máy cụ thể, mà thay vào dó mã bytecode chạy máy ảo Java (JVM) Điều đồng nghĩa với việc thiết bị có cài đặt JVM thực thi chương trình Java Đơn giản:học Java thật dễ nhiều so với C/C++, bạn quen với ngơn ngữ lập trình hướng đối tượng việc học Java dễ dàng Java trở nên đơn giản so với C/C++ loại bỏ tính đa kế thừa phép tốn trỏ từ C/C++ Bảo mật: Java hỗ trợ bảo mật tốt thuật tốn mã hóa mã hóa chiều (oneway hasing) mã hóa cơng cộng (public key) Đa luồng: Với tính đa luồng Java viết chương trình thực thi nhiều task lúc Tính thường xử dụng nhiều lâp trình game Hiêu suất cao nhờ vào trình thu gom rác (garbage collection), giải phóng nhớ đối tượng khơng dùng đến Linh hoạt: Java xem linh hoạt C,C++ thiết kế để thích ứng với môi trường phát triển 1.4.2 Andorid Studio 1.4.2.1 Giới thiệu Android Studio lần công bố hội nghị Google I/O vào năm2013 phát hành cho công chúng vào năm 2014 sau nhiều phiên beta khác Trước phát hành, nhà phát triển Android thường sử dụng công cụ Eclipse IDE, IDE Java chung hỗ trợ nhiều ngơn ngữ lập trình khác Có nhiều cơng cụ để phát triển Android đến cơng cụ thức vàmạnh mẽ Android Studio Đây IDE (Mơi trường phát triển tích hợp) thức cho tảng Android, phát triển Google sử dụng để tạo phần lớn ứng dụng mà bạn sử dụng hàng ngày 1.4.2.2 Các thành phần Test Modules: Những modules chứa mã để kiểm tra ứng dụng xây dựng bên ứng dụng kiểm tra mà chạy thiết bị Mặc định, Android studio tạo androidTest module chèn JUnit tests Library Modules: Những modules chứa mã nguồn chia sẻ ứng dụng Android nguồn tài nguyên ta tham chiếu đến dự án Android Điều hữu ích muốn sử dụng lại mã nguồn Library modules không cài đặt thiết bị, nhiên chúng nhúng tập tin apk thời điểm build tập tin apk App Engine Module: Dùng để hêm thuộc tính điện tốn đám mây đến Thuộc tính cho phép áp dụng chức lưu liệu người dùng tới điện toán đám mây, nội dung máy chủ tới thiết bị di động, tương tác thời gian thực - Các tập tin ứng dụng android: idea: Thư mục đặt IntelliJ IDEA app :Thư mục chứa modules tệp tin build :Thư mục lưu trữ đầu build cho tất modules dự án gradle : Chứa tệp tin gradler-wrapper gitigrone :Sẽ bỏ qua tệp tin mà Git nên bỏ qua build.gradle :Cho phép chỉnh sửa thuộc tính cho hệ thống build thư viện +gradle.properties :Tệp tin để cài đặt chế độ build ứng dụng thư viện + grandlew :Khởi động cài đặt tệp tin gradle cho Unix 10