MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH 2 ĐỀ TÀI XÂY DỰNG ỨNG DỤNG ĐA NỀN TẢNG TAXI APP Sinh viên thực hiệ[.]
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT - HÀN
BÁO CÁO ĐỒ ÁN CHUYÊN
NGÀNH 2
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐA NỀN TẢNG
TAXI APP
Sinh viên thực hiện : LÊ ĐÌNH TRỌNG
PHẠM ANH TÚ
Giảng viên hướng dẫn : TS LÊ TÂN
Lớp : 17IT3
Đà nẵng, tháng 05 năm 2021
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT - HÀN
BÁO CÁO ĐỒ ÁN CHUYÊN
NGÀNH 2
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐA NỀN TẢNG
TAXI APP
Đà Nẵng, tháng 05 năm 2021
Trang 3LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, sự giúp đỡ dù ít hay nhiều, dù là trực tiếp hay gián tiếp của người khác Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của Thầy Cô, gia đình và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến Thầy Cô ở Trường Đại Học Công Nghệ Thông Tin và Truyền Thông Việt -Hàn đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em
Em xin chân thành cám ơn thầy TS Lê Tân đã tận tình hướng dẫn em trong quá trình làm đồ án, những điều cần chú ý khi làm ứng dụng Trong thời gian làm đồ án em đã có được nhiều kiến thức và kinh nghiệm trong lập trình, dưới sự hướng dẫn của thầy hướng dẫn, chúng em không những thu được rất nhiều kiến thức bổ ích, mà còn tích lũy được nhiều kinh nghiệm hữu ích cho công việc sau này.
Mặc dù đã rất cố gắng hoàn thiện bản báo cáo đồ án với tất
cả sự nỗ lực, tuy nhiên, do chưa có nhiều kinh nghiệm trong việc làm ứng dụng di động, cũng như thời gian có hạn, kiến thức còn hạn chế nên bản báo cáo này chắc chắn sẽ không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được sự quan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn
để bản báo cáo này ngày càng hoàn thiện hơn.
Sau cùng, em xin kính chúc các thầy cô trong Trường Đại Học Công Nghệ Thông Tin và Truyền Thông Việt - Hàn dồi dào sức khỏe để tiếp tục truyền đạt kiến thức cho thế hệ mai sau.
Trang 4MỞ ĐẦU
Hiện nay, sự phát triển của công nghệ thông tin ở nước ta đang bước vào thời kỳ mới với việc triển khai rộng rãi các ứng dụng tin học vào mỗi nhu cầu của người dân Khồng ai còn nghi ngờ gì về vai trò của công nghệ thông tin trong đời sống, trong khoa học kĩ thuật, kinh doanh, cũng như trong mọi mặt của xã hội, ngay cả đối với một cá nhân.
Trong cuộc sống hiện nay việc sử dụng những ứng dụng điện thoại di động đang ngày càng trở nên phổ biến, từ những ứng dụng trò chơi đến những ứng dụng, phục vụ cho nhu cầu cuộc sống hàng ngày như mua sắm, đọc báo, xem phim… Hiện nay việc đi lại bằng phương tiện công cộng đang ngày càng trở nên phổ biến, đặc biệt là đi taxi và một ứng dụng kết nối hành khách
và lái xe sẽ giúp việc đi lại trở nên dễ dàng và thuận tiện hơn là rất cần thiết, giúp nhu cầu cuộc sống của con người được nâng cao.
Được sự đồng ý của nhà trường và giáo viên hướng dẫn em
đã được thực hiện đồ án chuyên ngành 2 là: Xây dựng ứng dụng gọi xe taxi Ứng dụng này giúp cho người dùng có thể tìm xe, gọi
xe, cũng như biết được chi phí khi đi là bao nhiêu Là ứng dụng có thể tính tiền bằng quãng đường đi được thông qua google maps và nhiều tiện ích khác.
Bằng sự cố gắng nỗ lực của bản thân đặc biệt là sự giúp đỡ tận tình, chu đáo của thầy TS Lê Tân em đã hoàn thành đồ án đúng thời hạn Do thời gian làm đồ án có hạn và trình độ còn nhiều hạn chế nên không thể tránh khỏi những thiếu sót Em rất mong nhận dược sự đóng góp của các thầy cô để bài đồ án này được hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 5NHẬN XÉT (Của giảng viên hướng dẫn)
Trang 6
MỤC LỤC
Chương 1 PHÁT BIỂU BÀI TOÁN 1
1.1 Giới thiệu về đề tài xây dựng ứng dụng gọi xe 1
1.1.1 Quy trình nghiệp vụ 1
1.1.2 Những khó khăn, thuận lợi 1
1.1.3 Bài toán quản lý hệ thống gọi xe 2
1.2 Những công nghệ áp dụng 3
Chương 2 TỔNG QUAN 4
2.1 Giới thiệu về đề tài: 4
2.2 Mục đích nghiên cứu: 5
2.3 Phương pháp nghiên cứu: 6
Chương 3 CƠ SỞ LÝ THUYẾT 7
3.1 Flutter 7
3.1.1 Giới thiệu về Flutter: 7
3.1.2 Mô hình cấu tạo nên một project Flutter 8
3.1.3 Ưu điểm của Flutter 9
3.1.4 Các thành phần quan trọng trong Flutter 9
3.2 Dart 11
3.2.1 Giới thiệu ngôn ngữ Dart 11
3.2.2 Đặc điểm của ngôn ngữ Dart: 12
3.2.3 Những ưu điểm của Dart: 12
3.2.4 Cài đặt Dart 12
Chương 4 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 13
4.1 Khảo sát và phân tích bài toán 13
4.1.1 Khảo sát và phân tích hiện trạng 13
4.1.2 Phân tích bài toán 15
4.1.3 Đặc tả yêu cầu hệ thống 15
4.1.4 Biểu đồ 16
4.1.5 Mô tả chức năng 17
4.1.6 Phân tích yêu cầu (Mô hình xử lý DFD) 18
Chương 5 THIẾT KẾ ỨNG DỤNG 21
5.1 Welcome Page 21
5.2 Login Pages 22
5.3 Sign Up Pages 23
5.4 Lưu thông tin lên Firebase 23
5.5 Home Pages, Menu 24
5.6 Lộ trình đi 25
5.7 Tính cước đường đi 25
Chương 6 KẾT LUẬN 26
6.1 Kết quả đạt được của đề tài 26
6.2 Hạn chế của đề tài 26
6.3 Hướng phát triển của đề tài 26
Trang 7DANH MỤC HÌNH
Hình 1 Mô hình cấu tạo nên một project Flutter 8
Hình 2 Biểu đồ ngữ cảnh 16
Hình 3 Biểu đồ phân rã chức năng 17
Hình 4 Sơ đồ luồng mức đỉnh 18
Hình 5 Quản lý khách hàng 19
Hình 6 Quản lý tài xế 19
Hình 7 Quản lý chuyến đi 20
Hình 8 Quản lý thanh toán 20
Hình 9 Welcome Page 21
Hình 10 Login Page 22
Hình 11 Sign Up Page 23
Hình 12 Lưu dữ liệu Firebase 23
Hình 13 Home Page Hình 14 Menu 24
Hình 15 Lộ trình 25
Hình 16 Phí cước 25
Trang 8Chương 1 PHÁT BIỂU BÀI TOÁN
1.1 Giới thiệu về đề tài xây dựng ứng dụng gọi xe.
Trong cuộc sống hiện nay việc sử dụng những ứng dụng điện thoại di động đang ngày càng trở nên phổ biến, từ những ứng dụng trò chơi đến những ứng dụng phục vụ cho nhu cầu cuộc sống hàng ngày như mua sắm, đọc báo, xem phim… và em muốn giới thiệu một ứng dụng phục vụ cho nhu cầu đi lại của còn người Giúp nhu cầu cuộc sống của con người được nâng cao
Ứng dụng này giúp cho người dùng có thể tìm xe, gọi xe, cũng như biết được chi phí khi đi là bao nhiêu Là ứng dụng có thể tính tiền bằng quãng đường
đi đượcthông qua Google maps và nhiều tiện ích khác Mặc dù đã cố gắng nhưng
do hạnchế về mặt thời gian và trình độ nên ứng dụng còn nhiều sai sót và chưa hoàn chỉnh, mong thầy cô thông cảm và góp ý cho em
1.1.1 Quy trình nghiệp vụ.
Hệ thống gọi xe và đi xe taxi theo kiểu truyền thống là khi khách hàng có nhu cầu đi lại bằng taxi Thì phải gọi điện đến số tổng đài của một hãng xe taxi nào mà khách hàng biết Khi khách hàng gọi đến tổng đài thì tổng đài viên sẽ tiếp nhận yêu cầu của khách hàng và tổng đài viên sẽ thông báo đến tất cả các xe của hãng thông tin có khách hàng tại địa chỉ của khách hàng
Khi đó, lái xe nào chấp nhận thì sẽ xácnhận lại với tổng đài viên, tổng đài viên chấp nhận thì lái xe sẽ đến địa chỉ được cung cấp để đón khách Lái xe đến đón khách và đi đến vị trí mà khách yêu cầu Số tiền được tính bằng đồng hồ trên
xe theo số km thực tế đi được nhân với giá của từng quãng đường cộng với giá
mở cửa
1.1.2 Những khó khăn, thuận lợi.
Những khó khăn:
o Quy trình gọi xe theo hệ thống cũ gây khó khăn cho việc gọi xe và đi lại
Khi khách hàng gọi điện lên tổng đài để đặt xe thì sẽ làm cho khách hàng mất thêm tiền điện thoại, đồng thời cũng sẽ tốn thời gian cho
cả khách hàng và lái xe sẽ được chọn khi phải thông qua tổng đài
để đặt xe
Khách hàng không có nhiều loại xe và hạng xe để chọn
Khách hàng không thể so sánh giá của các hạng xe với nhau để có thể chọn được xe có giá phù hợp với nhu cầu của mình
1
Trang 9 Khách hàng không thể biết được số tiền mà mình có thể phải trả cho quãng đường mà mình đi cũng như thời gian đi và số km
Hành khách sẽ không thể thấy được là có lái xe nào đang đến chỗ mình không
Lái xe không thể thấy được thông tin hành khách cũng như không biết được vị trí điểm đón và điểm đến của khách hàng cũng như thông tin liên hệ với hành khách, mà phải thông qua tổng đài
Lái xe, hành khách cũng không thể thấy được cung đường đi mà mình sẽ đi
Quy trình gọi xe theo hệ thống gọi xe trên ứng dụng được xây dựng trên nền tảngandroid sẽ có những khó khăn như: Khó khăn cho việc tính toán thời gian, quãng đường, vị trí hiện tại của hành khách và lái xe thông qua Google
Những thuận lợi:
o Đáp ứng nhu cầu của khách hàng một cách nhanh nhất có thể
o Tiếp kiệm chi phí, thời gian cho khách hàng
o Giúp lái xe thuận tiện hơn khi đón khách, và có nhiều cơ hội có khách hàng hơn
o Có nhiều ưu đãi, khuyến mãi hơn cho cả khách hàng và lái xe
1.1.3 Bài toán quản lý hệ thống gọi xe
Hệ thống gọi xe trên nền tảng android là khi khách hàng có nhu cầu đi lại Khách hàng chỉ cần mở ứng dụng lên chọn điểm đón, điểm đến và nhấn nút yêu cầu xe, là có thể có xe để đi Đồng thời khách hàng còn có thể xem trước giá cước theo ước tính của từng hạng xe
Khách hàng có thể chọn với nhiều hạng xe khác nhau Mỗi loại lại gồm nhiều loại xe để chọn Khách hàng có thể xem trực tiếp thông tin lái xe, thông tin
về cước của hạng xe mà mình chọn và còn có thể thấy những xe nào đang ở gần mình để có thể chọn trực tiếp hạng xe và lái xe mà mình thích, nếu xe đó đang bận thì hệ thống sẽ tự động gọi một xe khác
Đồng thời khách hàng còn có thể xem được cước ước tính, thời gian ước tính cũng như quãng đường ngắn nhất theo google map Lái xe cũng có thể thấy được thông tin của khách hàng khi khách hàng yêu cầu xe và lái xe có thể đến điểm đón mà khách hàng đã chọn để đón khách Sau khi đón được khách và đi đến địa chỉ mà khách hàng chọn thì lái xe sẽ bấm vào nút hoàn tất chuyến đi để kết thúc chuyến Khi đó thì một màn hình thanh toán sẽ được hiển thị lên cho lái
2
Trang 10xe Màn hình thanh toán sẽ bao gồm thông tin về số tiền tính theo số km đo được bằng google map, và các phí khác nếu có như phí cầu đường
Sau đó lái xe sẽ yêu cầu thanh toán và biên lai thanh toán sẽ được hiển thị lên cho khách hàng, khách hàng xem thông tin và thanh toán bằng tiền mặt cho lái xe Bài toán quản lý của hệ thống gọi xe sẽ là phải làm sao khắc phục được những khó khăn của quá trình gọi xe theo hệ thống cũ Như hệ thống sẽ phải giải quyết được bài toán làm sao để không gây tốn thời gia cho cả khách hàng và lái
xe Giảm thiểu chi phí cho khách hàng, cho phép khách hàng có nhiều lựa chọn trong việc đi lại như có nhiều hạng xe và loại xe Cung cấp thông tin của những lái xe và hành khách yêu cầu xe để đảm bảo an toàn, và sự an tâm của hành khách Cung cấp thông tin vê bảng giá của từng hạng xe, cước ước tính trong quãng đường mà hành khách chọn đối với từng hạng xe Làm sao để hiển thị được vị trí hành khách, lái xe,thời gian, số km một cách trực quan
1.2 Những công nghệ áp dụng
Để lập trình được ứng dụng trên nền tảng android ta cần sử dụng những công nghệ phần mềm sau:
Dart: một ngôn ngữ lập trình hướng đối tượng do Google phát
triển(OOP)
Flutter: một UI framework của Google tạo ra các giao diện chất lượng
cao
Android studio: là môi trường phát triển tích hợp (IDE) chính thức
dành chophát triển nền tảng Android được cung cấp miễn phí bởi google
Firebase.
3
Trang 11Chương 2 TỔNG QUAN
2.1 Giới thiệu về đề tài:
Tại sao chọn Flutter mà không phải là ngôn ngữ khác?
Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụngAndroid, bạn nên cân nhắc thử Flutter của Google, một framework dựatrên ngôn ngữ lập trình Dart
Các ứng dụng được xây dựng với Flutter hầu như không thể phân biệt vớinhững ứng dụng được xây dựng bằng cách sử dụng Android SDK, cả vềgiao diện và hiệu suất Hơn nữa, với những tinh chỉnh nhỏ, chúng có thểchạy trên thiết bị iOS
Phát triển ứng dụng thống nhất: Flutter có các công cụ và thư viện đểgiúp bạn dễ dàng đưa ý tưởng của mình vào cuộc sống trên iOS vàAndroid Nếu bạn chưa có kinh nghiệm phát triển trên thiết bị di động, thìFlutter là một cách dễ dàng và nhanh chóng để xây dựng các ứng dụng diđộng tuyệt đẹp Nếu bạn là một nhà phát triển iOS hoặc Android có kinhnghiệm, bạn
có thể sử dụng Flutter cho các View của bạn và tận dụngnhiều code Java / Kotlin / ObjC / Swift hiện có của bạn
Framework hiện đại và reactive: Dễ dàng tạo giao diện người dùng củabạn với framework hiện đại, reactive của Flutter và tập hợp các platform,layout
và widget phong phú Giải quyết các thách thức giao diện ngườidùng khó khăn của bạn với các API mạnh mẽ và linh hoạt cho 2D,animation, gesture, hiệu ứng và hơn thế nữa
UI đẹp và biểu cảm: Thỏa mãn người dùng của bạn với các widget built-in đẹp mắt của Flutter theo Material Design và Cupertino (iOS-flavor),các API chuyển động phong phú, scroll tự nhiên mượt mà và tự nhận thứcđược nền tảng
Chạy ở 60 fps, giao diện
Người dùng được tạo ra với Flutter thực thi tốt hơn nhiều so với nhữngứng dụng được tạo ra với các framework phát triển đa nền tảng khácchẳng hạn như React Native và Ionic Một số lí do khiến bạn có thể hứngthú với Flutter:
o Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng vớinhiều tính năng hữu ích như mixin, generic, isolate, và static type
o Flutter có các thành phần UI của riêng nó, cùng với một cơ chế đểkết xuất chúng trên nền tảng Android và iOS Hầu hết các thànhphần giao
4
Trang 12diện người dùng, đều sẵn dùng, phù hợp với các nguyêntắc của Material Design
o Các ứng dụng Flutter có thể được phát triển bằng cách4 sử dụngIntelliJ IDEA, một IDE rất giống với Android Studio
Hiện nay có rất nhiều ngôn ngữ hổ trợ đa nền tảng một cái tên lớn phải nhắc đến là React Native Các công ty lớn như UberEats, Discord
và Facebook đã chuyển sang React Native – như một phần tất yếu của sự dịch chuyển công nghệ Nhưng Google cũng không chịu thua Họ đã nhận thấy độ phủ sóng của React Native Sau 2 năm nghe ngóng, Google cho ra mắt phiên bản alpha của Flutter
Hỗ trợ hot reload:
Thông thường với lập trình Android bằng Android Studio Mỗi lần chúng tathay đổi một dòng code thì đều phải build và chạy lại ứng dụng.Hot reload sẽ giúp chúng ta không phải build lại ứng dụng và chỉ reload lạimàn hình đã thay đổi code mà thôi Điều này sẽ tiết kiệm rất nhiều thời giancho developer
Code structure:
Ngược với React Native, Flutter không tách biệt data, style, và templates.Mình biết bạn có thể cảm thấy kì lạ nếu như bạn đã quen với React native.Tuy nhiên, cách tiếp cận này cũng thuận tiện và được khá nhiều người chấp thuận Flutter không cần thêm ngôn ngữ tạo giao diện như JSX hoặc XMLhay các công cụ đặc biệt để tạo layout.Khi sử dụng Flutter, bạn có thể tiết kiệm thời gian khi không cần phảichuyển từ chế độ thiết kế sang code và ngược lại Flutter cho phép bạn làmmọi thứ trong cùng một màn hình Ngoài ra, tất cả các công cụ cần thiết đềucó thể truy cập từ cùng một vị trí
Cài đặt môi trường phát triển:
Flutter được đơn giản hóa quá trình cài đặt Framework này cũng cung cấpmột công cụ hữu ích để kiểm tra lỗi hệ thống được gọi là ” Flutter doctor”
Hiệu suất sử dụng:
Flutter là kiến trúc cho phép chúng ta xây dựng các ứng dụng native, cóhiệu suất nhanh Bởi vì Flutter không cần cầu nối, nó có thể hoạt độngnhanh hơn nhiều Do đó, Flutter có thể chạy animation với 60 khung hình/giây
2.2 Mục đích nghiên cứu:
Cũng cố và nắm chắc kiến thức về lập trình di động
Tạo ra một phần mềm ứng dụng vào thực tế
Phương pháp để xây dựng một ứng dụng
Biết được cách để tiếp cận một ngôn ngữ mới
5