1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng ứng dụng ôn thi lý thuyết lái xe B2 bằng Flutter

68 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng ôn thi lý thuyết lái xe B2 bằng Flutter
Tác giả Luân Quang Huy
Người hướng dẫn Th.S Nguyễn Văn Việt
Trường học Trường Đại học Công nghệ Thông tin và Truyền thông Thái Nguyên
Chuyên ngành Công nghệ Thông tin
Thể loại Báo cáo đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Thái Nguyên
Định dạng
Số trang 68
Dung lượng 3,94 MB
File đính kèm DoAnTotNghiep_LuanQuangHuy.rar (3 MB)

Cấu trúc

  • CHƯƠNG I: Cơ sở lý thuyết (5)
    • 1.1. Tìm hiểu về dart (5)
      • 1.1.1. Dart là gì (5)
      • 1.1.2. Tại sao lại chọn dart, những ưu điểm của dart (5)
      • 1.1.3. Học dart cơ bản (6)
    • 1.2. Tìm hiểu về flutter (9)
      • 1.2.1. Tổng quan về flutter (9)
      • 1.2.3. Lập trình mobile app với flutter (15)
    • 1.3. Tìm hiểu về sqlite (24)
  • CHƯƠNG II: Khảo sát thực trạng và phân tích thiết kế hệ thống (25)
    • 2.1. Khảo sát thực trạng (25)
    • 2.2. Khảo sát bài toán (25)
    • 2.3. Phân tích thiết kế hệ thống (26)
      • 2.3.1. Biểu đồ use case tổng quát (26)
      • 2.3.2. Danh sách các tác nhân và mô tả (28)
      • 2.3.3 Danh sách Usecase và mô tả (28)
      • 2.3.2. Biểu đồ trình tự (30)
      • 2.3.3. Biểu đồ hoạt động (41)
      • 2.3.4 Thiết kế cơ sở dữ liệu (52)
  • CHƯƠNG III: Xây dựng và cài đặt chương trình (54)
    • 3.1. Áp dụng kiến thức đã tìm hiểu xây dựng app moblie ôn thi GPLX B1 (54)
      • 3.1.1. Yêu cầu (54)
      • 3.1.2. Mục tiêu (54)
    • 3.2. Giao diện minh họa chức năng (55)
  • KẾT LUẬN (67)
    • 1. Kết luận (67)
    • 2. Hướng phát triển (67)

Nội dung

Để hoàn thành chuyên đề báo cáo thực tập này trước hết em xin gửi lời cảm ơn chân thành nhất đến quý thầy, cô giáo trong khoa Công Nghệ Thông Tin Đại Học Công Nghệ Thông Tin Và Truyền Thông Thái Nguyên đã luôn tận tình chỉ bảo, truyền đạt cho em những kiến thức quý báu trong suốt thời gian học ở trường. Đặc biệt, em xin gửi đến thầy Nguyễn Văn Việt người đã tận tình hướng dẫn, giúp đỡ em hoàn thành chuyên đề báo cáo đồ án tốt nghiệp này lời cảm ơn sâu sắc nhất.

Cơ sở lý thuyết

Tìm hiểu về dart

Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn Nó được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe) Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub Hiện nay Dart đã release phiên bản 2.2

1.1.2 Tại sao lại chọn dart, những ưu điểm của dart

Các nhà phát triển tại Google và các nơi khác sử dụng Dart để tạo các ứng dụng chất lượng cao, quan trọng cho iOS, Android và web Với các tính năng nhắm đến sự phát triển phía khách hàng, Dart rất phù hợp cho cả ứng dụng di động và web Dart giúp bạn tạo ra những trải nghiệm đẹp, chất lượng cao trên tất cả các màn hình, với:

 Một ngôn ngữ được tối ưu hóa cho client

Những ưu điểm của dart

Năng suất Cú pháp Dart rõ ràng và súc tích, công cụ của nó đơn giản nhưng mạnh mẽ Type-safe giúp bạn xác định sớm các lỗi tinh tế Dart có các thư viện cốt lõi và một hệ sinh thái gồm hàng ngàn package.

 Nhanh Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đoán hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.

 Di động Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript.

 Dễ gần Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định hướng đối tượng không gây ngạc nhiên của nó Nếu bạn đã biết C ++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày.

 Reactive Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh và GC Dart hỗ trợ lập trình không đồng bộ thông qua các tính năng ngôn ngữ và API sử dụng các đối tượng Future và Stream.

Biến và kiểu dữ liệu

Biến (Variable) là tên đại diện cho nơi lữu trự dữ liệu còn Kiểu dữ liệu (Data types) đơn giản là loại và kích thước của dữ liệu liện kết với biến và hàm.

Dart sử dụng từ khoá var để khai báo biến var name = 'Dart';

Từ khoá final và const được sử dụng để khai báo hằng số (constants) Như ví dụ dưới đây void main() { final a = 12; const pi = 3.14; print(a); print(pi);

Dart hỗ trợ các kiểu dữ liệu dưới đây, chúng ta không cần thiết phải khai báo kiểu dữ liệu cho biến

Numbers − Được sử dụng cho số – Integer và Double.

Strings − Được sử dụng cho chuỗi kí tự Giá trị của String được đặt trong dâu nháy đơn hoặc nháy kép.

Booleans − Được sử dụng cho giá trị Boolean đúng và sai

Lists and Maps − Được sử dụng cho nhóm đối tượng Điều kiện, vòng lặp

Một khối điều khiển (decision making block) đánh giá một điều kiện trước khi hướng dẫn thực thi Dart hỗ trợ các khối lênh If, If else và switch.

Vòng lặp được sử dụng để lặp lại một khối lệnh cho đến khi một điều kiện cụ thể được đáp ứng Dart hỗ trợ các vòng lặp for in, while và do while

Ví dụ đoạn code hiển thị các số từ 1 đến 10 void main() { for( var i = 1 ; i <= 10; i++ ) { if(i%2==0) { print(i);

Hàm là một nhóm các câu lệnh nhằm thực hiện một tác vụ nhất định Chúng ta cùng xem một ví dụ về hàm trong Dart dưới đây: void main() { add(3,4);

} void add(int a,int b) { int c; c = a+b; print(c);

Lập trình hướng đối tượng

Dart là một ngôn ngữ lập trình hướng đối tượng (object-oriented language) Nó hỗ trợ một số tính năng của lập trình hướng đối tượng như class, interface,

Mỗi một class (lớp) định nghĩa cho một loại đối tượng Một class bao gồm những nội dung sau đây:

- Các hàm Getter và setter

Cũng giống như các ngôn ngữ khác, nhưng dart có một vài điểm khác biệt trong các toán tử điều kiện. var a = 4; var b = 10; var d = (a > b) ? a : b;

Tìm hiểu về flutter

 Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên iOS và Android trong khoảng thời gian ngắn Flutter hoạt động với những code sẵn có được sử dụng bởi các lập trình viên, các tổ chức.

 Flutter hoàn toàn miễn phí và cũng là mã nguồn mở.

1.2.1.2 Tại sao lại là flutter

 Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụng Android, bạn nên cân nhắc thử Flutter của Google, một framework dựa trê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ới nhữ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.

 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ác chẳng hạn như React Native và Ionic Một số lí do khiến bạn có thể hứng thú với Flutter:

1 Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích như mixin, generic, isolate, và static type.

2 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ành phần giao diện người dùng, đều sẵn dùng, phù hợp với các nguyên tắc của Material Design.

3 Các ứng dụng Flutter có thể được phát triển bằng cách sử dụng IntelliJ IDEA,một IDE rất giống với Android Studio.

1 Fast Development: Tíng năng Hot Reload hoạt động trong milliseconds để hiện thị giao diện tới bạn Sử dụng tập hợp các widget có thể customizable để xây dựng giao diện trong vài phút Ngoài ra Hot Reload còn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gian hơn mà không cần phải thông qua máy ảo, máy android hoặc iOS

2 Expressive and Flexible UI: Có rất nhiều các thành phần để xây dựng giao diện của Flutter vô cùng đẹp mắt theo phong cách Material Design và Cupertino, hỗ trợ nhiều các APIs chuyển động, smooth scrolling

3 Native Performance: Các widget của fluter kết hợp các sự khác biệt của các nền tảng ví dụ như scrolling, navigation, icons, font để cung cấp một hiệu năng tốt nhất tới iOS và Android.

Bạn có thể cài đặt bằng cách clone Flutter repository từ Github về: git clone https://github.com/flutter/flutter.git

Tiếp theo bạn nên sử dụng công cụ chuẩn đoán của Flutter để kiểm tra các thành phần như Dart SDK, font Material Design: cd flutter/bin

Giao diện công cụ chuẩn đoán Flutter Doctor: Để xây dựng ứng dụng Android, bạn phải trỏ Flutter tới thư mục của Android Studio /flutter config android-studio-dir ~/android-studio

Cấu hình với IntelliJ hoặc Android Studio, chọn Configure->Plugins tại màn hình khởi động

Sau đó cài đặt plugin Dart

Tương tự với plugin Flutter

Sau khi cài Dart và Flutter bạn nên khởi động lại IDE

Bây giờ, bạn phải trỏ plugin Flutter đến thư mục mà bạn đã cài đặt Flutter Để làm như vậy, hãy chọn Configure > Settings trong màn hình chào mừng và trong hộp thoại bật lên, điều hướng đến Languages & Frameworks > Flutter Trong trường Flutter SDK path, gõ đường dẫn tuyệt đối của thư mục.

Sau khi cài Dart và Flutter bạn nên khởi động lại IDE

Bây giờ, bạn phải trỏ plugin Flutter đến thư mục mà bạn đã cài đặt Flutter Để làm như vậy, hãy chọn Configure > Settings trong màn hình chào mừng và trong hộp thoại bật lên, điều hướng đến Languages & Frameworks > Flutter Trong trường Flutter SDK path, gõ đường dẫn tuyệt đối của thư mục.

1.2.3 Lập trình mobile app với flutter

1.2.3.1 Tìm hiểu về widget, layout

Layout trong Flutter bao gồm một hệ thống phân cấp các widget với các widget bên ngoài thường xử lý sự liên kết và cấu trúc trong khi các yếu tố bên trong thường là các yếu tố hiển thị trên chính trang đó, như các button và image, v.v new Center( child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ new Text(

'You have pushed the button this many times:',

'$_counter', style: Theme.of(context).textTheme.display1,

-Trong flutter, mọi thứ đều là widget.

'Hello, World!', textAlign: TextAlign.center, style: new TextStyle(fontWeight: FontWeight.bold),

Văn bản có thể được căn chỉnh bằng cách sử dụng thuộc tính textAlign Thuộc tính kiểu cho phép tùy chỉnh văn bản bao gồm phông chữ, cỡ chữ, trọng lượng phông chữ,màu sắc, khoảng cách chữ và nhiều thứ khác.

Một widget Button cho phép người dùng thực hiện một số hành động khi nhấn. Flutter không có tiện ích trực tiếp "Button", mà thay vào đó nó có các loại nút như FlatButton và RaisedButton. new FlatButton( child: Text("Click here"), onPressed: () {

Tiện ích biểu tượng (icon) là một thùng chứa (container) cho một biểu tượng trong Flutter. new Icon(

Column là một widget sắp xếp tất cả các widget con của nó trong một ngăn xếp dọc.

Nó có thể khoảng trống các widget theo thuộc tính mainAxisAlocation và crossAxisAlocation Ở đây, trục chính main axis của đường trục chính là một trục dọc và trục chính của trục là một trục ngang.

Column( mainAxisAlignment: MainAxisAlignment.center, children: [

Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [

Tìm hiểu về sqlite

SQLite là một thư viện phần mềm mà triển khai một SQL Database Engine, không cần máy chủ, không cần cấu hình, khép kín và nhỏ gọn Nó là một cơ sở dữ liệu, không cần cấu hình, có nghĩa là giống như các cơ sở dữ liệu khác mà bạn không cần phải cấu hình nó trong hệ thống của mình.API (Application Programming Interface) là giao diện lập trình ứng dụng giúp tạo ra các phương thức kết nối với các thư viện và ứng dụng khác nhau.

Khảo sát thực trạng và phân tích thiết kế hệ thống

Khảo sát thực trạng

Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển mạnh mẽ c ủa xu hướng lập trình phần mềm ứng dụng cho các thiết bị di dộng Phần mềm ứng dụng cho điện thoại di động hiện nay rất da dạng và phổ biến: Android, IOS, J2MF, … Trong vài năm gần đây, nhu cầu sử dụng app mobile lại càng tăng cao, những ứng dụng càng ngày cần đảm bảo được việc phát triển giao diện người dùng được ưu tiên lên ahfng đầu cùng với việc phải thúc đẩy các dự án càng nhanh nhưng đi đôi với chất lượng Chính vì vậy React Navite hay Flutter bùng lên như một hiện tượng mới cho lập trình mobile. Chúng ta không còn phải dùng riêng Object C, Swift, hay Java, Kotlin cho từng nền tảng riêng Flutter có thể đảm bảo được độ chính xác của các ứng dụng đi đôi với việc hiệu quả trên mặt giao diện người dùng.

Nhận thấy cơ hội phát triển ứng dụng trên, đặt kèm với vấn đề giải quyết thực tế.Một ứng dụng cho phép người dùng có thể ôn thi GPLX tại bất kỳ đâu đều có thể sử dụng Các ứng dụng ôn thi GPLX hiện tại, đa phần là lấy từ các bộ đề đã cũ, hay chính việc trải nghiệm người dùng chưa được tốt, các tính năng chưa được nhiều và hiệu quả.Đây là một cơ hội để giải quyết vấn đề này.

Khảo sát bài toán

Hiện nay, nhu cầu ôn tập và đăng ký thi bằng lái của người dân tăng cao dẫn đến các trung tâm luyện thi và tổ chức thi cấp giấy phép lái xe trở nên quá tải.

Ngoài ra, người dân cũng không thể lúc nào cũng có thời gian đến các trung tâm luyện thi hoặc người dân nào cũng có máy tính, laptop để sử dụng các phần mềm ôn thi.

Chính vì những nhu cầu đó, việc phát triển một ứng dụng dùng cho các thiết bị di động thông minh như smartphone hay tablet giúp người dùng có thể tranh thủ những thời gian rảnh để ôn thi mà không mất nhiều thời gian và có thể sử dụng ở bất cứ đâu mà không bị ảnh hưởng quá nhiều đến những yếu tố bên ngoài.

Trên thực tế, để thi giấy phép lái xe người điều khiển phương tiện cần trải qua 2 phần thi: phần thi lý thuyết và phần thi thực hành lái xe.

Phần thi lý thuyết: đề thi lý thuyết gồm 30 câu hỏi, thời gian làm bài là 20 phút, tài liệu học gồm có 2 phần:

- Những khái niệm, quy tắc giao thông đường bộ

- Văn háo, đạo đức người lái xe

- Kỹ thuật lái xe ô tô

- Cấu tạo và sửa chữa xe ô tô

- Hệ thống biển báo hiệu đường bộ

Xây dụng ứng dụng di động giúp người dùng luyện thi lý thuyết lái xe và thi thử trước khi đăng ký thi trên thực tế Các câu hỏi được lấy trong bộ 600 câu hỏi lý thuyết lái xe do bộ ban hành bao gồm các câu lý thuyết, các câu về biển báo.

Phân tích thiết kế hệ thống

2.3.1 Biểu đồ use case tổng quát

2.3.1.1 Phân rã use case cho chức năng học

2.3.1.2 Phân rã use case cho chức năng ôn

2.3.2 Danh sách các tác nhân và mô tả

Tác nhân Mô tả tác nhân Ghi chú Người dùng Là người có nhu cầu học và ôn thi lái xe B2

Admin Là người quản trị của hệ thống

2.3.3 Danh sách Usecase và mô tả

ID Tên Use case Mô tả ngắn gọn Use case Chức năng Ghi chú

UC001 Đăng ký Thêm mới một tài khoản vào cơ sở dữ liệu

Dùng cho người dùng đăng ký tài khoản mới

UC002 Đăng nhập Đăng nhập một tài khoản vào hệ thống

Cho phép người dùng đăng nhập vào hệ thống

Thêm một người dùng vào hệ thống

Admin sử dụng xem danh sách người dùng đã đăng kí và thêm người dùng

Sửa một người dùng trên hệ thống

Admin sử dụng xem danh sách người dùng đã đăng kí và sửa người dùng

Xoá một người dùng trên hệ thống

Admin sử dụng xem danh sách người dùng đã đăng kí và xoá người dùng

Thêm một bài viết vào hệ thống

Người dùng sử dụng xem danh sách bài viết và thêm bài viết.

UC007 Sửa bài viết Sửa một bài viết Trên hệ Admin sử dụng xem danh thống sách bài viết và sửa bài viết

UC008 Xoá bài viết Xoá một bài viết trên hệ thống

Admin sử dụng xem danh sách bài viết và xoá bài viết.

UC009 Bình luận Thêm một địa điểm vào hệ thống

Admin sử dụng xem danh sách địa điểm và thêm địa điểm

UC010 Học Người dùng học câu hỏi thi

Người dùng sẽ được xem các câu hỏi và xem đáp án đúng

UC011 Ôn Người dùng ôn câu hỏi thi

Người dùng sẽ được xem các câu hỏi và chọn đáp án, sau khi trả lời kết thúc sẽ có bảng kết quả xuất hiện

2.3.2.1 Biểu đồ trình tự cho chức năng học

2.3.2.2 Biểu đồ trình tự cho chức năng ôn

2.3.2.3 Biểu đồ trình tự cho chức năng đăng ký

2.3.2.4 Biểu đồ trình tự cho chức năng đăng nhập

2.3.2.5 Biểu đồ trình tự cho chức năng thêm người dùng

2.3.2.6 Biểu đồ trình tự cho chức năng sửa người dùng

2.3.2.7 Biểu đồ trình tự cho chức năng xoá người dùng

2.3.2.8 Biểu đồ trình tự cho chức năng thêm bài viết

2.3.2.9 Biểu đồ trình tự cho chức năng sửa bài viết

2.3.2.10 Biểu đồ trình tự cho chức năng xoá bài viết

2.3.2.11 Biểu đồ trình tự cho chức năng bình luận

2.3.3.1 Biểu hoạt động cho chức năng học

2.3.3.2 Biểu hoạt động cho chức năng ôn

2.3.3.3 Biểu đồ hoạt động cho chức năng đăng ký

2.3.3.4 Biểu đồ hoạt động cho chức năng đăng nhập

2.3.3.5 Biểu đồ hoạt động cho chức năng thêm người dùng

2.3.3.6 Biểu đồ hoạt động cho chức năng sửa người dùng

2.3.3.7 Biểu đồ hoạt động cho chức năng xoá người dùng

2.3.3.8 Biểu đồ hoạt động cho chức năng thêm bài viết

2.3.3.9 Biểu đồ hoạt động cho chức năng sửa bài viết

2.3.3.9 Biểu đồ hoạt động cho chức năng xoá bài viết

2.3.3.10 Biểu dồ hoạt động chức năng bình luận

2.3.4 Thiết kế cơ sở dữ liệu

2.3.4.1 Cơ sở dữ liệu sử dụng cho server

2.3.4.2 Cơ sở dữ liệu sử dụng sqlite cho Android

Xây dựng và cài đặt chương trình

Áp dụng kiến thức đã tìm hiểu xây dựng app moblie ôn thi GPLX B1

 Áp dụng kiến thức design UI xây dựng UI cho ứng dụng.

 Áp dụng mô hình bloc pattern vào triển khai cho ứng dụng.

 Sử dụng sqlite làm database local.

 Áp dụng quy tắc solid vào lập trình ứng dụng.

 Xây dựng giao diện ứng dụng dễ nhìn, đẹp mắt, dễ sử dụng.

 Xử lý lập trình bất đồng bộ hợp lý hiệu quả.

 Thành công trong việc lấy dữ liệu database có sẵn, hiển thị lên màn hình.

 Phân chia các mục theo thể loại, bộ đề.

 Xây dựng hệ thống, server quản lý bộ đề trong tương lai.

Ngày đăng: 05/04/2024, 21:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w