Ứng dụng gồm 6 chức năng: Thi sát hạch: Hỗ trợ người dung thi thử với cấu trúc, quy tắc thi tương tự như thi thực tế. Biển báo: hỗ trợ việc tra cứu biển báo và vạch kẻ đường giúp người dùng hiểu thêm về ý nghĩa, loại biển báo,… Lý thuyết: tóm tắt một cách ngắn gọn lý thuyết lái xe, các quy định khái niệm, quy tắc giao thông,.. Hướng dẫn: Hướng dẫn dùng App sao cho hiệu quả cao nhất. Thực hành: Hỗ trợ việc đi đúng vạc kẻ và một số kinh nghiệm khi thi thực hành. Lịch sử bài thi: Hỗ trợ việc xem lại bài thi đã từng làm và đáp án những câu đã từng làm.
KHẢO SÁT HỆ THỐNG
Khảo sát bài toán
Nhu cầu ôn tập và đăng ký thi bằng lái xe đang gia tăng do việc kiểm tra và rà soát luật giao thông được siết chặt trên toàn quốc Điều này đã khiế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, không phải ai cũng có thời gian để đến các trung tâm luyện thi, và không phải ai cũng sở hữu máy tính hay laptop để sử dụng các phần mềm ôn thi.
Để đáp ứng nhu cầu học tập linh hoạt, việc phát triển ứng dụng cho smartphone trở nên cần thiết, giúp người dùng tận dụng thời gian rảnh để ôn thi hiệu quả Ứng dụng này cho phép người dùng học mọi lúc, mọi nơi mà không bị ảnh hưởng bởi các yếu tố bên ngoài.
Ứng dụng hiện đã có mặt trên thị trường, tuy nhiên vẫn còn thiếu một số chức năng quan trọng để người dùng có thể tiếp cận sâu hơn Bên cạnh đó, giao diện của ứng dụng chưa thực sự thân thiện, cần được cải thiện để nâng cao trải nghiệm người dùng.
Mội trường hoạt động của ứng dụng
- Ứng dụng được chạy trên nền tẳng Android thuận tiền cho người sử dụngSmartphone hiện tại
Ưu nhược điểm của hệ thống cũ
1.3.1 Ưu điểm của hệ thống cũ.
- Đáp ứng được một số chức năng thiết yếu cho người sử dụng như: Làm
- Giao diện người dùng và biểu tượng dễ sử dụng.
1.3.2 Nhược điểm của hệ thống cũ.
- Không có lịch sử làm đề thi để cho người dùng kiểm tra lại những câu mình đã từng làm.
- Không có chức năng giới thiệu thực hành và một số lưu ý khi thi thực hành.
- Giao diện người dùng tuy dễ sử dụng nhưng không được mềm mại qua các biểu tượng.
- Chức năng Học biển báo giao thông không được chọn lọc từng loại biển báo.
Yêu cầu đề tài
Yêu chính của đề tài là xây dựng ứng dụng giúp mọi người dùng luyện thi lái xe và thi thử trước khi đăng ký thi trên thực tế.
Khắc phục một số nhược điểm trên hệ thống cũ chưa đáp ứng nhiều cho người sử dụng.
Xây dựng một số chức năng mới để người dùng tiếp cận sát hơn những nội dung thi thực tế.
Giao diện người dùng được cải tiến hơn bắt mắt cho người sử dụng.
Bài viết này đề cập đến 150 câu hỏi thi lý thuyết lái xe do bộ Giao thông vận tải ban hành, bao gồm các câu hỏi lý thuyết, biển báo và sa hình Đề thi được tạo ra dựa trên loại bằng lái mà người dùng chọn, và các câu hỏi được lấy ngẫu nhiên để đảm bảo tính khách quan và đa dạng.
Công cụ lập trình
1.5.1 Giới thiệu về Hệ điều hành Android
Hình 1.5.1 Giới thiệu về hệ điều hành Android
Android là hệ điều hành dựa trên Linux, được thiết kế cho thiết bị di động như smartphone và tablet Ban đầu phát triển bởi Tổng công ty Android với sự hỗ trợ tài chính từ Google, hệ điều hành này đã được Google mua lại vào năm 2005 Android chính thức ra mắt vào năm 2007 cùng với việc thành lập Liên minh thiết bị cầm tay mở, nhằm thúc đẩy tiêu chuẩn mở cho thiết bị di động Chiếc điện thoại đầu tiên chạy Android được giới thiệu vào tháng 10 năm 2008.
Android là hệ điều hành mã nguồn mở do Google phát hành theo Giấy phép Apache, cho phép các nhà phát triển tự do điều chỉnh và phân phối Sự linh hoạt này đã thu hút một cộng đồng lập trình viên đông đảo, chuyên phát triển ứng dụng bằng ngôn ngữ lập trình Java Từ Google Play, cửa hàng ứng dụng chính của Android, đã có khoảng 25 tỷ lượt tải ứng dụng, mở rộng chức năng cho thiết bị.
Android đã trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới từ quý 4 năm 2010, nhờ vào sự nhẹ nhàng, khả năng tùy chỉnh và chi phí thấp, khiến các công ty công nghệ ưu tiên lựa chọn Mặc dù được thiết kế cho điện thoại và máy tính bảng, Android đã mở rộng ra TV, máy chơi game và nhiều thiết bị điện tử khác Tính mở của Android khuyến khích sự tham gia của đông đảo lập trình viên và người đam mê, tạo ra các dự án mã nguồn mở phong phú, bổ sung tính năng cao cấp cho người dùng và đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác.
1.5.2 Giới thiệu về Android Studio. Để phát triển các ứng dụng mobile chạy trên hệ điều hành Android thì bạn cần một máy tính trên đó có cài đặt Android Studio
Android Studio là phần mềm phát triển ứng dụng mạnh mẽ cho hệ điều hành Android, bao gồm nhiều công cụ như code editor, debugger, và performance tools Nó cung cấp hệ thống build/deploy cùng với trình giả lập để mô phỏng môi trường thiết bị, giúp lập trình viên dễ dàng phát triển ứng dụng từ đơn giản đến phức tạp.
Việc xây dựng ứng dụng di động đòi hỏi nhiều công đoạn khác nhau, bắt đầu từ việc viết code trên máy tính Sau đó, cần build ứng dụng để tạo file cài đặt, và cuối cùng là sao chép file này vào thiết bị di động để cài đặt và kiểm thử Nếu phải thực hiện từng bước này mỗi khi viết một dòng code, sẽ rất tốn thời gian và công sức Android Studio ra đời để giải quyết vấn đề này, cho phép thực hiện tất cả các quy trình trên cùng một máy tính và tối ưu hóa quy trình phát triển ứng dụng.
Tiếp theo chúng ta sẽ tìm hiểu cách cài đặt Android Studio trên Windows, Mac OSX và Linux.
Cài đặt Android Studio trên Windows rất dễ dàng Sau khi tải xong, chỉ cần nhấp đúp vào file cài đặt để bắt đầu quá trình Quá trình cài đặt diễn ra đơn giản và bạn có thể tự thực hiện Khi hoàn tất, máy tính sẽ tự động khởi động Android Studio, giúp bạn bắt đầu phát triển ứng dụng đầu tiên.
Cài đặt Android Studio trên Mac OS X cũng rất đơn giản, tương tự như trên Windows Sau khi tải file DMG, bạn chỉ cần nhấp đúp vào nó và kéo Android Studio vào thư mục Applications Tiếp theo, hãy nhấp đúp vào biểu tượng Android Studio để bắt đầu quá trình cài đặt, mà không có bất kỳ bước nào phức tạp, bạn có thể tự hoàn tất dễ dàng.
Hệ Điều Hành Linux Để cài đặt Android Studio trên Linux thì sau khi tải tập tin zipvề máy bạn thực hiện các bước sau:
Để bắt đầu, hãy giải nén tập tin đã tải về bằng cách nhấp đúp vào tập tin đó Chương trình Archive Manager có sẵn trên Ubuntu sẽ tự động khởi động để giúp bạn thực hiện việc giải nén một cách dễ dàng.
Bước 2: Chép thư mục vừa được giải nén vào bên trong thư mục /usr/local hoặc /opt.
Bước 3: Mở cửa sổ dòng lệnh terminal (sử dụng tổ hợp phím tắt Ctrl + Alt + T).
Di chuyển vào thư mục android-studio/bin trong thư mục vừa giải nén, hiện nằm trong /usr/local hoặc /opt.
Bước 5: Chạy tập tin studio.sh trong thư mục bin trên bằng cách nhập tên tập tin này và gõ Enter.
Sau bước 5, máy tính sẽ khởi động chương trình cài đặt Android Studio Setup
Wizard và bạn có thể dễ dàng thực hiện các công đoạn còn lại để cài Android
Sau khi cài đặt Android Studio trên hệ điều hành Linux 64-bit, bạn cần thực hiện thêm một bước để bổ sung các thư viện cần thiết cho phần mềm này.
Với các máy tính chạy phiên bản 64-bit của Ubuntu thì chúng ta sẽ cần chạy câu lệnh sau: sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2- 1.0:i386
Với các máy tính chạy phiên bản 64-bit của Fedora thì chúng ta sẽ cần chạy câu lệnh sau: sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686
SQLite là một thư viện phần mềm cung cấp một SQL Database Engine, hoạt động mà không cần máy chủ và không yêu cầu cấu hình Với thiết kế khép kín và nhỏ gọn, SQLite cho phép người dùng sử dụng cơ sở dữ liệu một cách dễ dàng mà không cần phải thực hiện các bước cấu hình phức tạp như với các hệ thống cơ sở dữ liệu khác.
SQLite không hoạt động như một quy trình độc lập như các cơ sở dữ liệu khác, mà có thể được liên kết tĩnh hoặc động với ứng dụng của bạn tùy theo nhu cầu Nó truy cập trực tiếp vào các file lưu trữ của mình.
Tại sao lại là SQLite?
SQLite không yêu cầu một quy trình hoặc hệ thống máy chủ riêng biệt để hoạt động.
SQLite không cần cấu hình, có nghĩa là không cần thiết lập hoặc quản trị.
Một cơ sở dữ liệu SQLite hoàn chỉnh được lưu trữ trong một file disk đa nền tảng (cross-platform disk file).
SQLite rất nhỏ và trọng lượng nhẹ, dưới 400KiB được cấu hình đầy đủ hoặc dưới 250KiB với các tính năng tùy chọn bị bỏ qua.
SQLite là khép kín (self-contained), có nghĩa là không có phụ thuộc bên ngoài.
Các transaction trong SQLite hoàn toàn tuân thủ ACID, cho phép truy cập an toàn từ nhiều tiến trình (process) hoặc luồng (thread).
SQLite hỗ trợ hầu hết các tính năng ngôn ngữ truy vấn (query language) được tìm thấy trong tiêu chuẩn SQL92 (SQL2).
SQLite được viết bằng ANSI-C và cung cấp API đơn giản và dễ sử dụng.
SQLite có sẵn trên UNIX (Linux, Mac OS-X, Android, iOS) và Windows (Win32, WinCE, WinRT).
Tóm tắt lịch sử của SQLite
2000 - D Richard Hipp đã thiết kế SQLite cho mục đích không yêu cầu quản trị để vận hành chương trình.
2000 - Vào tháng 8, SQLite 1.0 được phát hành với trình quản lý cơ sở dữ liệu GNU.
2011 - Hipp tuyên bố bổ sung giao diện UNQl vào SQLite DB và phát triển UNQLite (Cơ sở dữ liệu hướng tài liệu - Document oriented database).
Một số tính năng của SQL92 không được hỗ trợ trong SQLite được liệt kê trong bảng sau:
STT Đặc điểm Mô tả
JOIN Chỉ có LEFT OUTER JOIN được thực hiện.
2 FULL OUTER JOIN Chỉ có LEFT OUTER JOIN được thực hiện.
Các biến thể RENAME TABLE và ADD COLUMN của lệnh ALTER TABLE được hỗ trợ DROP COLUMN, ALTER
COLUMN, ADD CONSTRAINT không được hỗ trợ.
4 Trigger support Trigger FOR EACH ROW được hỗ trợ nhưng không hỗ trợ FOR EACH STATEMENT.
VIEWs trong SQLite là chỉ đọc Bạn không thể thực thi câu lệnh DELETE, INSERT hoặc UPDATE trên một view.
Các quyền truy cập duy nhất có thể được áp dụng là các quyền truy cập file thông thường(normal file) của hệ điều hành.
Các lệnh tiêu chuẩn của SQLite để tương tác với cơ sở dữ liệu quan hệ tương tự như SQL bao gồm CREATE, SELECT, INSERT, UPDATE, DELETE và DROP Những lệnh này có thể được phân loại thành các nhóm dựa trên tính chất hoạt động của chúng.
DDL - Ngôn ngữ định nghĩa dữ liệu (Data Definition Language)
CREATE Tạo mới một bảng, view của bảng hoặc đối tượng khác trong cơ sở dữ liệu.
ALTER Sửa đổi một đối tượng cơ sở dữ liệu đang tồn tại, chẳng hạn như bảng.
DROP Xóa toàn bộ bảng, view của bảng hoặc đối tượng khác trong cơ sở dữ liệu.
DML - Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)
INSERT Tạo một bản ghi (record)
UPDATE Sữa một bản ghi (record)
DELETE Xóa một bản ghi (record)
DQL - Ngôn ngữ truy vấn dữ liệu (Data Query Language)
SELECT Lấy một số bản ghi nhất định từ một hoặc nhiều bảng.
PHÂN TÍCH HỆ THỐNG
Phân tích chức năng hệ thống
Ứng dụng gồm 6 chức năng:
- Thi sát hạch: Hỗ trợ người dung thi thử với cấu trúc, quy tắc thi tương tự như thi thực tế.
- Biển báo: hỗ trợ việc tra cứu biển báo và vạch kẻ đường giúp người dùng hiểu thêm về ý nghĩa, loại biển báo,…
- Lý thuyết: tóm tắt một cách ngắn gọn lý thuyết lái xe, các quy định khái niệm, quy tắc giao thông,
- Hướng dẫn: Hướng dẫn dùng App sao cho hiệu quả cao nhất.
- Thực hành: Hỗ trợ việc đi đúng vạc kẻ và một số kinh nghiệm khi thi thực hành.
- Lịch sử bài thi: Hỗ trợ việc xem lại bài thi đã từng làm và đấp án những câu đã từng làm.
2.1.1 Sơ đồ phân rã chức năng.
Hình 2.1.1 Sơ đồ phân rã chức năng
2.1.2 BLD Mức khung cảnh (mức 0).
Hình 2.1.2 BLD Mức khung cảnh
2.1.4 BLD Mức dưới đỉnh chức năng thi sát hạch.
Hình 2.1.4 BLD Mức dưới đỉnh chức năng thi sát hạch
2.1.5 BLD Mức dưới đỉnh chức năng lý thuyết.
Hình 2.1.5 BLD Mức dưới đỉnh chức năng lý thuyết
2.1.6 BLD Mức dưới đỉnh chức năng biển báo.
Hình 2.1.6 BLD Mức dưới đỉnh chức năng biển báo
2.1.7 BLD Mức dưới đỉnh chức năng hướng dẫn.
Hình 2.1.7 BLD Mức dưới đỉnh chức năng hướng dẫn
2.1.8 BLD Mức dưới đỉnh chức năng thực hành.
Hình 2.1.8 BLD Mức dưới đỉnh chức năng thực hành
2.1.9 BLD Mức dưới đỉnh chức năng lịch sử bài thi.
Hình 2.1.9 BLD Mức dưới đỉnh chức năng lịch sử bài thi.
Phân tích dữ liệu chức năng
2.2.1 Xác định thực thể và thuộc tính
CAUHOI (Nội dung câu hỏi) ANH(Ảnh)
2.2.2 Mô hình thực thể liên kết
Hình 2.2.2 Mô hình thực thể liên kết.
ĐẶC TẢ YÊU CẦU
Các Usecase
Hình 3.1.1 Biểu đồ Usecase tổng thể
Tên Use case Truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn ứng dụng
Mục đích sử dụng Cho phép người dùng sử dụng hệ thống
Thực hiện bởi Hành động
1 Người dùng Chọn ứng dụng trên màn hình chính của smartphone
2 Hệ thống Hiển thị màn hình chính của ứng dụng
3.1.3 Phân rã Usecase Thi sát hạch
Hình 3.1.3 Biểu đồ Phân rã Usecase Thi sát hạch
Tiền điều kiện Đã truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn chức năng thi sát hạch
Mục đích sử dụng Cho phép người dùng thi thử sát hạch
Thực hiện bởi Hành động
1 Người dùng Chọn chức năng thi sát hạch
2 Hệ thống Hiển thị thông báo Chọn bắt đầu thi hoặc Cancel để không thi nữa
3 Người dùng Chọn bắt đầu thi
4 Hệ thống Chuyển sang màn hình hiển thị câu hỏi và đáp án để người dùng lựa chọn đáp án
5 Người dùng Chọn đáp án của mình và nhấn tiếp để chuyển câu hỏi tiếp theo
6 Hệ thống Sau mỗi lần nhấn tiếp màn hình chuyển đổi câu hỏi cho đến khi người dùng đến câu 20 thông báo kết thúng bài thi hiện lên
Hệ thống chuyển đổi kết quả thi xác định rằng thí sinh đạt từ 16/20 điểm trở lên sẽ được xem là đỗ, trong khi điểm dưới 16/20 sẽ bị trượt Thí sinh có hai lựa chọn sau khi nhận kết quả: xem lại đáp án của mình hoặc làm một bộ đề thi khác.
9 Người dùng Chọn Xem lại đáp án
10 Hệ thống Hiển thị 20 câu đã làm và đáp án của 20 câu
11 Người dùng Chọn Làm bộ đề thi khác
12 Hệ thống Hiển thị màn hình thi sát hạch như lúc đầu
3.1.4 Phân rã Usecase Biển báo
Hình 3.1.4 Biểu đồ Phân rã Usecase Biển báo
Tên Use case Biển báo
Tiền điều kiện Đã truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn chức năng biển báo
Mục đích sử dụng Cho phép người dùng học biển báo
Thực hiện bởi Hành động
1 Người dùng Chọn chức năng biển báo
2 Hệ thống Hiển thị danh sách biển báo và ý nghĩa của chúng
3 Người dùng Chọn biểu tượng menu
4 Hệ thống Hiển thị những loại biển báo
5 Người dùng Chọn loại biển báo
6 Hệ thống Lọc ra đúng loại biển báo và hiển thị lên màn hình
3.1.5 Phân rã Usecase Lý thuyết
Hình 3.1.5 Biểu đồ Phân rã Usecase Lý thuyết
Tên Use case Lý thuyết
Tiền điều kiện Đã truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn chức năng lý thuyết
Mục đích sử dụng Cho phép người dùng học lý thuyết
T Thực hiện bởi Hành động
1 Người dùng Chọn chức năng lý thuyết
2 Hệ thống Hiển thị danh sách câu lý thuyết và đáp án đúng
3 Người dùng Chọn tiếp để chuyển qua những câu tiếp theo
4 Hệ thống Hiển thị những câu tiếp theo
5 Người dùng Chọn trước để quay lại những câu vừa coi
6 Hệ thống Hiển thị lại những câu trước đó
3.1.6 Phân rã Usecase Hướng dẫn
Hình 3.1.6 Biểu đồ Phân rã Usecase Hướng dẫn
Tên Use case Hướng dẫn
Tiền điều kiện Đã truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn chức năng Hướng dẫn
Mục đích sử dụng Cho phép người dùng xem hướng dẫn để đạt được kết quả cao nhất
Thực hiện bởi Hành động
1 Người dùng Chọn chức năng hướng dẫn
2 Hệ thống Hiển thị mục hướng dẫn
3 Người dùng Chọn nút bắt đầu sử dụng
4 Hệ thống Chuyển về màn hình chính của ứng dụng
3.1.7 Phân rã Usecase Thực hành
Hình 3.1.7 Biểu đồ Phân rã Usecase Kinh nghiệm thi
Tên Use case Thực hành
Tiền điều kiện Đã truy cập ứng dụng
Sự kiện kích hoạt Người dùng chọn chức năng thực hành
Mục đích sử dụng Cho phép người dùng xem nội dung thi thực hành và kinh nghiệm khi thi thực hành
Thực hiện bởi Hành động
1 Người dùng Chọn chức năng thực hành
2 Hệ thống Hiển thị sơ đồ thi sát hạch và nội dung 4 bài sa hình sát hạch lái xe
3 Người dùng Chọn kinh nghiệm thi
4 Hệ thống Hiển thị nội dung kinh nghiệm thi thực hành
3.1.8 Phân rã Usecase Lịch sử bài thi
Hình 3.1.8 Biểu đồ Phân rã Usecase Lịch sử bài thi
Tên Use case Lịch sử bài thi
Tiền điều kiện Đã truy cập ứng dụng và thi xnog bài thi sát hạch
Sự kiện kích hoạt Người dùng chọn chức năng lịch sử bài thì
Mục đích sử dụng Cho phép người dùng xem lại bài thi đã thi và đáp án đúng
Thực hiện bởi Hành động
1 Người dùng Chọn chức năng lịch sử bài thi
2 Hệ thống Hiển thị danh sách bài thi đã từng làm
3 Người dùng Chọn số đề
4 Hệ thống Hiển thị số câu hỏi và đáp án đề đã từng làm
THIẾT KẾ HỆ THỐNG
Thiết kế cơ sở dữ liệu
Hình 4.1.2 Bảng dữ liệu ứng dụng
4.1.1 Phân tích cơ sở dữ liệu
Dữ liệu lưu trữ bao gồm các câu hỏi, biển báo.
Dữ liệu phải đảm bảo đáp ứng tối thiểu được những yêu cầu sau:
Xác định nội dung, yêu cầu của câu hỏi.
Nội dung các đáp án và đáp án đúng dành cho từng câu hỏi.
Hình ảnh đối với câu hỏi về biển báo, sa hình.
Xác định loại biển báo.
Xác định tên, ý nghĩa của biển báo.
Hình ảnh mimnh họa cho biển báo.
4.1.2 Cấu trúc cơ sở dữ liệu
Cơ sở dữ liệu bao gồm 2 bảng với các trường dữ liệu sau:
Hình 4.1.2 Bảng dữ liệu câu hỏi
- BIEN BAO: anh, noidung, loaibien.
Hình 4.1.2 Bảng dữ liệu Biển báo
Chú thích các trường dữ liệu:
Bảng biển báo (BIENBAO): Lưu trữ thông tin về biển báo.
Loaibienbao: loại biển báo (cấm, hiệu lệnh, chỉ dẫn, nguy hiểm, vạch kẻ đường, phụ).
Bảng câu hỏi (CAUHOI): lưu trữ thông tin các câu hỏi trong bộ 450 câu hỏi
CAUHOI: nội dung câu hỏi.
ANH: hình ảnh của những câu hỏi về biển báo, sa hình.
DAPAN: đáp án đúng cho câu hỏi
Định hướng người dùng
Sau khi sử dụng ứng dụng, người dùng đạt được một số mục tiêu sau:
- Thi thử với cấu trúc đề thi tương tự thực tế.
- Ôn thi các câu hỏi trong bộ đề 450 câu.
- Nhận biết được một số biển báo hiệu đường bộ.
- Biết thêm một số kiến thức về luật giao thông đường bộ.
Thiết kế giao diện
Hình 4.3.2 Trang Thi sát hạch
Hình 4.3.5 Trang Hướng dẫn sử dụng