KHÓA LUẬN TỐT NGHIỆPĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ‘ÔN THI GIẤY PHÉP LÁI XE’ TRÊN NỀN TẢNG IOS Người thực hiện: CHU THÁI DƯƠNG... Vũ Thị Lưu, cơ quan nơi thực tập, em đã quyết định lựa chọn
Trang 1KHÓA LUẬN TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ‘ÔN THI GIẤY
PHÉP LÁI XE’ TRÊN NỀN TẢNG IOS
HÀ NỘI – 2018
Trang 2KHÓA LUẬN TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ‘ÔN THI GIẤY
PHÉP LÁI XE’ TRÊN NỀN TẢNG IOS
Người thực hiện: CHU THÁI DƯƠNG
Trang 3LỜI CẢM ƠN
Lời đầu tiên em xin chân thành cảm ơn cô giáo ThS.Vũ Thị Lưu, người đãtận tình hướng dẫn, giúp đỡ em hoàn thành đồ án tốt nghiệp trong thời gian vừaqua
Em cũng bày tỏ lòng biết ơn sâu sắc đến cha mẹ, những người đã có côngsinh thành, dưỡng dục và luôn ở bên động viên tinh thần, giúp em vượt qua mọikhó khăn, thử thách trong học tập
Em xin chân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin nóiriêng và các thầy cô trường Học Viện Nông Nghiệp Việt Nam nói chung đãtrang bị cho em những kiến thức quý báu trong những năm học vừa qua
Ngoài ra, em cũng chân thành cảm ơn các bạn, các anh chị trong BkitSofware, Công ty cổ phần Appota đã giúp đỡ, trao đổi kiến thức, động viên emtrong suốt thời gian học tập và nghiên cứu
Mặc dù đã cố gắng hoàn thành khóa luận tốt nghiệp trong phạm vi và khảnăng cho phép Thêm vào đó do kiến thức còn hạn hẹp và thời gian hoàn thành
đồ án gấp rút nên không thể tránh được sai sót và hạn chế, em kính mong nhậnđược sự cảm thông và tận tình chỉ bảo từ phía quý thầy cô và các bạn
Em xin chân thành cảm ơn!
Hà Nội, ngày tháng năm
Sinh viên
Chu Thái Dương
Trang 4MỤC LỤC
MỤC LỤC ii
DANH MỤC BẢNG BIỂU, SƠ ĐỒ, HÌNH VẼ iv
DANH MỤC TỪ VIẾT TẮT v
PHẦN I: MỞ ĐẦU 1
1.1 Tên đề tài: 1
1.2 Đặt vấn đề 1
1.3 Mục đích, yêu cầu: 1
1.3.1 Mục đích nghiên cứu: 1
1.3.2 Yêu cầu: 2
PHẦN II: TỔNG QUAN TÌNH NGHIÊN CỨU TRONG & NGOÀI NƯỚC 3 2.1 Tình hình nghiên cứu trong nước 3
2.2 Tình hình nghiên cứu ngoài nước 3
2.3 Nêu tên đề tài và tính thời sự, tầm quan trọng của đề tài 4
PHẦN III: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 5 3.1 Địa điểm và thời gian nghiên cứu 5
3.1.1 Địa điểm nghiên cứu 5
3.1.2 Thời gian nghiên cứu 5
3.2 Nội dung nghiên cứu 5
3.3 Phương pháp nghiên cứu 5
PHẦN IV: KẾT QUẢ VÀ THẢO LUẬN 6 4.1 Khảo sát thực tế 6
4.1.1 Hiện trạng 6
4.1.2 Phần thi lý thuyết ở các trung tâm sát hạch 6
4.2 Phân tích và thiết kế hệ thống 8
4.2.1 Tổng quan ứng dụng 8
4.2.2 Các biểu đồ 8
4.3 Thiết kế cơ sở dữ liệu 12
4.3.1 Xác định các thực thể 12
Trang 54.3.2 Các bảng dữ liệu 13
4.4 Cài đặt và chạy chương trình 18
4.4.1 iOS và hệ điều hành iOS 18
4.4.2 Ngôn ngữ Swift 18
4.4.3 Hệ quản trị cơ sở dữ liệu SQLite 20
4.4.4 Giới thiệu tổng quan về công cụ Xcode 21
4.4.5 Tìm hiểu về Bitbucket và Source Tree 24
4.4.6 Xây dựng tổ chức phần mềm 26
PHẦN V: KẾT LUẬN VÀ KIẾN NGHỊ 34 5.1 Kết luận 34
5.2 Kiến nghị 34
PHẦN VI: TÀI LIỆU THAM KHẢO 35 6.1 Tài liệu sách 35
6.2 Tài liệu internet 35
Trang 6DANH MỤC BẢNG BIỂU, SƠ ĐỒ, HÌNH VẼ
1 Bảng 1: Bảng thể hiện thông tin của từng loại bằng 6
2 Bảng 2: Bảng thể hiện chủ đề có trong loại bằng (dấu ‘x’ thể hiện là có) 7
14 Hình 3: Biểu đồ luồng dữ liệu chức năng quản lý ứng dụng 9
15 Hình 4: Biểu đồ luồng dữ liệu chức năng chọn bằng 10
16 Hình 5: Biểu đồ luồng dữ liệu chức năng ôn thi 10
17 Hình 6: Biểu đồ luồng dữ liệu chức năng thi 11
24 Hình 13: Giao diện chức năng quản lý ứng dụng 28
Trang 7DANH MỤC TỪ VIẾT TẮT
Từ viết tắt tiếng việt
STT Từ viết tắt Giải nghĩa
Từ viết tắt tiếng anh
STT Từ viết tắt Giải nghĩa
Isolation, Durability
Interface
Trang 8Cùng với sự tăng trưởng của Smartphone và các hệ điều hành chạy trên diđộng, số lượng ứng dụng, trò chơi,…cho các hệ điều hành này cũng lớn mạnhnhanh chóng, tính đến hết năm 2017, số lượng ứng dụng iOS trên App Store là2.1 triệu ứng dụng, trên Google Play là 3.7 trệu ứng dụng Theo thống kê củaApp Store, những ứng dụng có lượt tải về nhiều nhất thuộc mảng Giáo dục (cụthể là những ứng dụng liên quan đến việc dạy, học, ôn tập,…).
Nắm bắt được tình hình trên và được sự đồng ý của ban Chủ nhiệm khoaCông nghệ thông tin, Bộ môn Khoa học máy tính, giáo viên hướng dẫn ThS Vũ
Thị Lưu, cơ quan nơi thực tập, em đã quyết định lựa chọn đề tài: “Xây dựng ứng
dụng ‘Ôn thi giấy phép lái xe’ trên nền tảng iOS”.
1.3 Mục đích, yêu cầu:
1.3.1 Mục đích nghiên cứu:
Nhằm nâng cao khả năng làm việc cũng như để học tập một ngôn ngữ mới,tạo điều kiện để phát triển và tìm kiếm công việc sau khi ra trường, em đã lựachọn đề tài xây dựng một ứng dụng trên nền tảng iOS Qua tìm hiểu từ thực tiễncũng như yêu cầu công việc từ phía công ty nơi thực tập, việc tạo ra một ứngdụng nhằm phục vụ việc ôn thi giấy lái xe cho mọi người là cần thiết Khi ứng
Trang 9dụng được đưa vào thực tế, sẽ trợ giúp rất đặc lực việc ôn thi lý thuyết bằng lái
xe, sẽ giảm bớt tỷ lệ trượt từ đó giảm bớt kinh phí cũng như rút ngắn thời gianhọc lại, thi lại cho mọi người Ngoài ra, ứng dụng còn giúp người dùng làm quenvới hình thức thi trắc nhiệm mới của các trung tâm sát hạch bằng lái xe, tránh bỡngỡ khi lần đầu đi thi, giúp người dùng đạt được kết quả tốt nhất Bên cạnh đó,ứng dụng còn cung cấp nhiều tiện ích đi kèm, tạo cho người dùng trải nhiệmthoải mái nhất
1.3.2 Yêu cầu:
- Tìm hiểu cách thức lập trình mô phỏng với bộ công cụ Xcode để tạo ứngdụng chạy trên hệ điều hành iOS
- Tìm hiểu và vận dụng ngôn ngữ Swift để viết ứng dụng trên Xcode
- Nắm rõ được quy trình phát triển phần mềm trong một dự án thực tiễn,cũng như cách phân tích thiết kế một ứng dụng
- Xây dựng thành công và đưa vào sử dụng ứng dụng ‘Ôn thi giấy phép láixe’
Trang 10PHẦN II: TỔNG QUAN TÌNH NGHIÊN CỨU TRONG & NGOÀI NƯỚC
2.1 Tình hình nghiên cứu trong nước
Từ năm 2009 đến nay, Việt Nam đã và đang dần chứng minh năng lực củamình trong lĩnh vực Công nghệ thông tin Chỉ trước đó 5 năm Việt Nam còn bị
bỏ xa bởi các nước trong khu vực, nhưng đến nay Việt Nam đã dần thu hẹpđược khoảng cách khi vượt qua cả In-đô-nê-xi-a và nhiều quốc gia Đông Nam Átrên một số lĩnh vực như truy cập Internet và công nghệ thông tin Trong nhữngnăm qua, nền công nghệ thông tin ở nước ta có tốc độ phát triển cao cũng nhưgặt hái được nhiều thành công Việt Nam là một trong những quốc gia có tiềmlực công nghệ thông tin mạnh mẽ, có đủ khả năng để phát triển, sản xuất nhữngsản phẩm, dịch vụ công nghệ thông tin đáp ứng cho nhu cầu trong nước cũngnhư quốc tế
Việc tìm hiểu các công cụ lập trình trên Hệ điều hành iOS và xây dựng,phát triển các ứng dụng trên thiết bị di động sao cho phù hợp với người sử dụng
là yêu cầu tất yếu đối với các nhà phát triển
Về đề tài lựa chọn, hiện nay cũng không ít ứng dụng đã được xây dựng dựatrên đề tài này Tuy nhiên, đa số còn chưa tối ưu cũng như chưa bám sát thựctiễn, cách sử dụng còn khó khăn cũng như không trực quan cho người sử dụng
Bộ câu hỏi chưa được đầy đủ và đúng với nội dung thi thực tế
2.2 Tình hình nghiên cứu ngoài nước
Lập trình iOS đang là một trong những lĩnh vực lập trình di động phổ biếnnhất hiện nay, với mức thu nhập bình quân nhỉnh hơn so với những ngôn ngữkhác Số thiết bị chạy iOS cũng ngày càng tăng nhanh, đi theo đó là lượng ứngdụng có trên App Store Những ứng dụng liên quan tới giáo dục, ngoại ngữ luônđược người dùng chú ý và quan tâm đến Nguồn nhân sự chất lượng cao phục vụcho lĩnh vực lập trình iOS ở khắp các quốc gia trên thế giới luôn thiếu hụt vì vậyđây là cơ hội là rất lớn
Sự phát triển ngày càng nhanh chóng, đa dạng của các ứng dụng trên cácthiết bị thông minh đã tạo ra cuộc cách mạng công nghệ thông tin trên toàn thế
Trang 11giới, thể hiện trên nhiều lĩnh vực khác nhau như kinh tế, xã hội, giải trí, giáodục Mọi người trên thế giới cũng đang chú trọng về việc phát triển và sử dụngcác ứng dụng trên các thiết bị thông minh khi nhận thấy tiềm năng to lớn củachúng đem lại
2.3 Nêu tên đề tài và tính thời sự, tầm quan trọng của đề tài
- Đề tài: Xây dựng ứng dụng ‘Ôn thi giấy phép lái xe’ trên nền tảng iOS
- Hằng năm, nhu cầu đăng ký thi giấy phép lái xe mới ở Việt Nam là rấtlớn Tuy nhiên, không phải ai cũng tự tin đăng ký thi mà không cần đến
sự trợ giúp Vì vậy, mọi người thường tìm đến cách giải pháp trống trượtmột cách tốn kém và đây cũng là một trong những nguyên nhân dẫn đếnviệc vi phạm luật giao thông ở nước ta luôn ở mức cao khi mà hầu hếtmọi người đều lựa chọn cách chạy bằng tiền và không chịu nắm rõ luật
- Một ứng dụng cho phép người dùng có thể ôn thi giấy phép lái xe mọi lúc,mọi nơi, ngay trên những thiết bị di động của mình là rất thiết thực Ứngdụng sẽ là giải pháp cho những ai muốn thi giấy phép lái xe mà chưa đủ
tự tin cũng như kinh nghiệm đi thi
Trang 12PHẦN III: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1 Địa điểm và thời gian nghiên cứu
3.1.1 Địa điểm nghiên cứu
- Học viện Nông nghiệp Việt Nam
- Công ty cổ phần Appota - Tòa nhà số 11, ngõ 71, phố Láng Hạ, PhườngThành Công, Quận Ba Đình, Thành phố Hà Nội
3.1.2 Thời gian nghiên cứu
- Từ ngày 15/08/2018 - 25/12/2018
3.2 Nội dung nghiên cứu
- Tìm hiểu ngôn ngữ lập trình Swift 4.0 – ngôn ngữ lập trình ứng dụng diđộng iOS
- Tìm hiểu và sử dụng Xcode - công cụ giúp lập trình ứng dụng trên cácthiết bị của Apple: Iphone, Ipad, Apple Watch,
- Tìm hiểu về các ứng dụng tương tự, luồng hoạt động và cơ sở dữ liệu liênquan
- Tìm hiểu và sử dụng công cụ quản lý code Git, Bitbuket, Sourcetree
- Tìm hiểu và vận dụng những bộ thư viện có sẵn trên GitHub để lập trình
và làm giao diện
- Xây dựng chương trình
- Kiểm tra lỗi, khắc phục và tải ứng dụng lên App Store
3.3 Phương pháp nghiên cứu
- Tham khảo các giáo trình, tài liệu liên quan đến nội dung đề tài (ebook,các bài viết, bài học trên các website, …)
- Tiếp nhận ý kiến của giáo viên hướng dẫn, định hướng
- Tham khảo tài liệu chuyên môn
- Tham khảo các dự án đã có ở công ty
- Kiểm tra và khắc phục lỗi
Trang 13PHẦN IV: KẾT QUẢ VÀ THẢO LUẬN
4.1 Khảo sát thực tế
4.1.1 Hiện trạng
Hiện nay, rất nhiều ứng dụng lấy đề tài ôn thi giấy phép lái xe đã được xâydựng và tải lên AppStore, CH-Play Tuy nhiên phần nhiều chưa bám sát nộidung thi, giao diện chưa bắt mắt và khó sử dụng Một vài ứng dụng còn chậm, bịtrễ tạo cho người dùng cảm giác sử dụng không được tốt Chính vì thế, đề tài:Xây dựng ứng dụng ‘Ôn thi giấy phép lái xe’ trên nền tảng iOS của em, dưới sựhướng dẫn của cô ThS Vũ Thị Lưu sẽ là một giải pháp cho vấn đề này
4.1.2 Phần thi lý thuyết ở các trung tâm sát hạch
- Hình thức thi: Từ ngày 1/7/2013 thi theo hình thức mới trên máy tính với
Số lượng câucần đạt
Thời gian thi(phút)
Trang 14- Phân loại câu hỏi: Các câu hỏi sẽ được phân vào những chủ đề chính baogồm:
Khái niệm quy tắc
Biển báo giao thông
Sa hình
Văn hóa giao thông
Nghiệp vụ vận tải
Kỹ thuật lái xe
Cấu tạo sửa chữa
Bảng 2: Bảng thể hiện chủ đề có trong loại bằng (dấu ‘x’ thể hiện là có)
Kháiniệmquy tắc
Biểnbáo Sa hình
Vănhóagiaothông
Nghiệp
vụ vậntải
Kỹthuậtlái xe
Cấutạosửachữa
Trang 15 Mô hình phân cấp chức năng
Hình 1: Biểu đồ phân cấp chức năng
Làm lạiHiển thị kếtquả thi
Trang 16 Sơ đồ UseCase tổng quát
Hình 2: Sơ đồ UseCase tổng quát
Biểu đồ luồng dữ liệu:
- Luồng dữ liệu chức năng quản lý ứng dụng
Hình 3: Biểu đồ luồng dữ liệu chức năng quản lý ứng dụng
Trang 17- Luồng dữ liệu chức năng chọn bằng
Hình 4: Biểu đồ luồng dữ liệu chức năng chọn bằng
- Luồng dữ liệu chức năng ôn thi
Hình 5: Biểu đồ luồng dữ liệu chức năng ôn thi
Trang 18- Luồng dữ liệu chức năng thi
Hình 6: Biểu đồ luồng dữ liệu chức năng thi
Trang 194.3 Thiết kế cơ sở dữ liệu
4.3.1 Xác định các thực thể
- ONTHI(id, loaibang, chude, socau)
- ZLICENSE(id, numberOfCorrectQues, numberOfQues, numberOfTest,
duration, content, name )
- CAUHOI(id, question_type, include_A1, include_A2, include_A3A4,
include_B1, is_learned, answer_state, true_answer, user_answer, image, tip, option1, option2, option3, option4, quest_content)
- TEST(id, test_name, license, current_ques, current_time, total_ques,
total_true_ques, isFinish)
- USERANSWER(id, test_id, question_id, true_answer, user_answer,
state)
- TIP(id, category, content)
- DETHIA1A2(id, khainiem_quytac, bienbao, sahinh)
- DETHIA3A4(id, khainiem_quytac, bienbao, sahinh, Nvvt)
- DETHIB1B2C(id, khainiem_quytac, vanhoa, ktlx, ctsc, bienbao, sahinh)
Trang 204.3.2 Các bảng dữ liệu
Bảng 3: Bảng ONTHI
Bảng 4: Bảng ZLICENSE
2 numberOfCorrectQues Integer Không Số câu đúng để qua
3 numberOfQues Integer Không Số câu hỏi trong 1 đề thi
4 numberOfTest Integer Không Số đề thi của 1 loại bằng
Trang 21Bảng 5: Bảng CAUHOI
2 question_type Integer Không Kiểu chủ đề ôn thi
7 is_learned Integer Có Trạng thái câu hỏi đã học chưa?
8 answer_state Integer Có Trạng thái câu hỏi đúng hay sai?
9 true_answer Integer Không Đáp án câu hỏi
17 quest_content Text Không Nội dung câu hỏi
Trang 22Bảng 6: TEST
2 test_name Integer Không Mã đề thi của từng loại bằng
4 current_ques Integer Không Câu hiện tại
5 current_time Integer Không Thời gian hiện tại
7 total_true_ques Integer Có Tổng số câu đúng
Bảng 7: USERANSWER
Trang 23Bảng 8: TIP
2 khainiem_quytac Text Không Mã câu hỏi trong “Khái niệm và quy tắc”
2 khainiem_quytac Text Không Mã câu hỏi trong “Khái niệm và quy tắc”
5 Nvvt Text Không Mã câu hỏi trong “Nghiệp vụ vận tải”
Trang 242 khainiem_quytac Text Không Mã câu hỏi trong “Khái niệm và quy tắc”
4 ktlx Text Không Mã câu hỏi trong “Kỹ thuật lái xe”
5 ctsc Text Không Mã câu hỏi trong “Cấu tạo sửa chữa”
Trang 254.4 Cài đặt và chạy chương trình
4.4.1 iOS và hệ điều hành iOS
- iOS (trước đây là iPhone OS) là hệ điều hành trên các thiết bị di động củaApple Đây là hệ điều hành chạy trên các sản phẩm iPhone, iPad, iWatch
và iPod Touch và là hệ điều hành phổ biến thứ 2 trên toàn cầu, sauAndroid
- Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ phát triển phầnmềm đang được xây dựng và họ dự định sẽ đưa nó đến "tay của các nhàphát triển vào tháng 2 Ngày 6 tháng 3 năm 2008, Apple đã phát hành bảndùng thử đầu tiên, cùng với một cái tên mới cho hệ điều hành, đó là
- Swift cung cấp các phiên bản riêng của tất cả các kiểu C và Objective-C
cơ bản, bao gồm Int các số nguyên Double và Float các giá trị dấu phẩyđộng, Bool cho các giá trị Boolean, và String cho dữ liệu văn bản Swiftcũng cung cấp phiên bản mạnh mẽ của ba loại bộ sưu tập chính, Array,Set, và Dictionary
- Giống như C, Swift sử dụng các biến để lưu trữ và tham chiếu đến các giátrị bằng một tên nhận dạng Swift cũng sử dụng rộng rãi các biến có giá trịkhông thể thay đổi Chúng được gọi là hằng số, và mạnh hơn nhiều hằng
số trong C Hằng số được sử dụng trong suốt Swift để làm cho mã an toànhơn và rõ ràng hơn khi làm việc với các giá trị không cần thay đổi
- Swift là một ngôn ngữ type-safe, có nghĩa là ngôn ngữ giúp hiểu rõ về cácloại giá trị mà người lập trình có thể phải xử lý khi làm việc
- Ưu điểm:
Trang 26 Khả năng phát triển ứng dụng và kiểm tra kết quả theo thời gianthực giúp quá trình viết ứng dụng nhanh và dễ kiểm soát hơn nhiều.
Cú pháp rất ngắn và dễ đọc giúp đẩy nhanh quá trình phát triển ứngdụng cũng như tăng hiệu quả cho việc bảo trì, debug
Swift có thể làm việc liền mạch với Objective-C nên ta có thể viếtứng dụng bằng cả 2 ngôn ngữ
Swift sử dụng phần cứng hiệu quả hơn
Là một ngôn ngữ khá chặt chẽ về việc sử dụng kiểu giá trị, loại bỏnhững cú pháp thừa (Ví dụ như ; kết thúc mỗi câu lệnh), và kế thừađược những cú pháp của của các ngôn ngữ bậc cao
- Nhược điểm:
Tuổi đời non trẻ nên cộng đồng hỗ trợ chưa nhiều
Do dễ học, phát triển ứng dụng nhanh sẽ dẫn tới sinh ra nhiều ứngdụng chất lượng kém hoặc rác do những lập trình viên mới vàonghề tạo ra