Tính cấp thiết của đề tài khóa luận ASP.NET là một nền tảng ứng dụng web Web Applicationframework được xây dựng, phát triển bởi tập đoàn Microsoft, cho phép các lập trình viên tạo ra nh
Trang 1TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-
LÊ KHƯƠNG DUY
XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC LẬP TRÌNH ASP.NET TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Ngành Công Nghệ Thông Tin
Phú Thọ, (2017)
Trang 2TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-
LÊ KHƯƠNG DUY
XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC
LẬP TRÌNH ASP.NET TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công Nghệ Thông Tin
NGƯỜI HƯỚNG DẪN: ThS NGUYỄN THỊ THU HƯƠNG
Phú Thọ, 2017
Trang 3Em xin gửi lời cảm ơn chân thành tới giáo viên hướng dẫn cô giáo Nguyễn Thị Thu Hương - Bộ môn Công nghệ phần mềm - Khoa Kỹ thuật - Công nghệ - Trường Đại Học Hùng Vương đã tận tình giúp đỡ em trong suốt quá trình làm khóa luận tốt nghiệp Trong thời gian làm việc cùng cô giáo, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, đó là những điều rất cần thiết cho em trong quá trình học tập và làm việc sau này
Trong thời gian nghiên cứu và hoàn thành khóa luận không tránh khỏi những thiếu sót, em rất mong được sự đóng góp ý kiến từ quý thầy cô và các bạn để đề tài được hoàn thiện hơn
Em xin chân thành cảm ơn!
Việt Trì, tháng 5 năm 2017
Sinh viên
Lê Khương Duy
Trang 4DANH MỤC ẢNH
Hình 1.1 Biểu tượng Android 5.1 Lollipop 5
Hình 1.2 Quá trình thực thi 9
Hình 1.3 Mô hình xử lý ASP.NET 12
Hình 1.4 Vòng đời của một activity 16
Hình 1.5 Sơ đồ chuyển trạng thái của service 18
Hình 2.1 Biểu đồ UserCase về chức năng 24
Hình 2.2 Mô hình xử lý đăng ký 25
Hình 2.3 Mô hình xử lý đăng nhập 25
Hình 2.4 Mô hình xử lý học bằng video 26
Hình 2.5 Mô hình xử lý học lý thuyết 27
Hình 2.6 Mô hình xử lý bài tập minh họa 27
Hình 2.7 Mô hình xử lý chức năng tìm kiếm câu hỏi 28
Hình 2.8 Mô hình xử lý chấm điểm và lưu bài thi 29
Hình 2.9 Mô hình lớp của chương trình 32
Hình 3.1 Màn hình giới thiệu đầu 35
Hình 3.2 Màn hình đăng nhập 36
Hình 3.3 Màn hình đăng ký 37
Hình 3.4 Màn hình chính 38
Hình 3.5 Màn hình bài giảng 39
Hình 3.6 Màn hình nội dung bài giảng 40
Hình 3.7 Màn hình chọn bài tập 41
Hình 3.8 Màn hình hiển thị nội dung bài tập 42
Hình 3.9 Màn hình chọn video 43
Hình 3.10 Màn hình chọn video 44
Hình 3.11 Màn hình lựa chọn bộ câu hỏi trắc nghiệm 45
Hình 3.12 Màn hình hiển thị câu hỏi trắc nghiệm 46
Hình 3.13 Màn hình hiển thị điểm 47
Hình 3.13 Màn hình hiển thị điểm 48
Trang 5Hình 3.14 Màn hình giới thiệu 49
Hình 3.15 Điện thoại Samsung Galaxy S7 Edge 50
Hình 3.16 Điện thoại Sony Xperia Z3 50
Hình 3.17 Icon ứng dụng trên điện thoại Samsung Galaxy S7 Edge 51
Hình 3.18 Màm hình menu chính trên điện thoại 52
Hình 3.19 Menu trái của ứng dụng 52
Trang 6DANH MỤC BẢNG
Bảng 2.1 Danh sách các thực thể 30
Bảng 2.2 Bảng Account 30
Bảng 2.3 Bảng câu hỏi 31
Bảng 2.4 Bảng Điểm 31
Bảng 3.1 Danh sách các màn hình 34
Bảng 3.2 Mô tả chi tiết màn hình giới thiệu 35
Bảng 3.3 Mô tả chi tiết màn hình đăng nhập 36
Bảng 3.4 Mô tả chi tiết màn hình đăng ký 37
Bảng 3.5 Mô tả chi tiết màn hình chính 38
Bảng 3.6 Mô tả chi tiết màn hình bài giảng 39
Bảng 3.7 Mô tả chi tiết màn hình hiển thị nội dung bài giảng 40
Bảng 3.8 Mô tả chi tiết màn hình hiển thị bài tập 41
Bảng 3.9 Mô tả chi tiết màn hình hiển thị nội dung bài tập 42
Bảng 3.10 Mô tả chi tiết màn hình chọn video 43
Bảng 3.11 Mô tả chi tiết màn hình hiển thị video 44
Bảng 3.12 Mô tả chi tiết màn hình chọn bộ đề thi 45
Bảng 3.13 Mô tả chi tiết màn hình câu hỏi trắc nghiệm 46
Bảng 3.14 Mô tả chi tiết màn hình hiển thị điểm 47
Trang 7MỤC LỤC
LỜI CẢM ƠN i
DANH MỤC ẢNH ii
DANH MỤC BẢNG iv
MỤC LỤC v
MỞ ĐẦU 1
CHƯƠNG I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID, NGÔN NGỮ LẬP TRÌNH JAVA, HỌC PHẦN LẬP TRÌNH ASP.NET 4
1.1 Khái niệm, lịch sử hình thành và phát triển hệ điều hành Android 4
1.1.1 Khái niệm hệ điều hành Android 4
1.1.2 Lịch sử hình thành và phát triển của hệ điều hành Android 5
1.2 Tổng quan về ngôn ngữ Java 8
1.2.1 Giới thiệu ngôn ngữ Java 8
1.2.2 Các đặc trưng của Java 9
1.3 Tổng quan về học phần lập trình ASP.NET 11
1.3.1 Ưu điểm của ASP.NET 12
1.3.2 Nội dung của học phần lập trình ASP.NET 13
1.4 Lập trình ứng dụng trên hệ điều hành Android 14
1.4.1 Công cụ lập trình ứng dụng trên Android 14
1.4.2 Các thành phần của một ứng dụng Android 15
CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CỦA ỨNG DỤNG HỖ TRỢ HỌC LẬP TRÌNH ASP.NET 23
2.1 Xác định yêu cầu 23
2.1.1 Các chức năng của chương trình 23
2.1.2 Biểu đồ Usercase 23
2.2 Phân tích và thiết kế 24
2.2.1 Phân tích mô hình xử lý các chức năng 24
2.2.2 Thiết kế cơ sở dữ liệu 30
2.2.3 Thiết kế mô hình lớp 32
Trang 8CHƯƠNG III: XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC LẬP TRÌNH
ASP.NET 34
3.1 Giao diện ứng dụng 34
3.1.1 Danh sách các màn hình 34
3.1.2 Chi tiết các màn hình 35
3.2 Cài đặt ứng dụng thử nghiệm 49
3.3 Hướng dẫn sử dụng 51
KẾT LUẬN CHUNG 53
1 Kết quả đạt được 53
2 Hạn chế 53
3 Hướng phát triển 53
TÀI LIỆU THAM KHẢO 54
PHỤ LỤC 55
Phụ lục A: Chi tiết MainActivity.java 55
Phụ lục B: Chi tiết HomeFragment.java 62
Trang 9MỞ ĐẦU
1 Tính cấp thiết của đề tài khóa luận
ASP.NET là một nền tảng ứng dụng web (Web Applicationframework) được xây dựng, phát triển bởi tập đoàn Microsoft, cho phép các lập trình viên tạo ra những trang web động, những ứng dụng web và những dịch vụ web Vào tháng 2 năm 2002, phiên bản đầu tiên được đưa ra thị trường cùng với phiên bản 1.0 của NET framework, ASP.NET là công nghệ nối tiếp của công nghệ Microsoft's Active Server Pages (ASP) trước đó, được biên dịch dưới dạng Common Language Runtime (CLR), cho phép những người lập trình viết mã ASP.NET với bất kỳ ngôn ngữ nào (C#, VB.NET, ) được hỗ trợ bởi NET framework
Với xu hướng các ứng dụng web được phát triển mạnh mẽ, ngày càng có nhiều ứng dụng viết bằng ASP.NET, rất nhiều công ty đang chọn ASP.NET làm ngôn ngữ phát triển website cho khách hàng cũng như sản phẩm của riêng
họ nên việc nắm vững và sử dụng thành thạo về công nghệ web nói chung và chuyên sâu về ASP.NET nói riêng sẽ là một lợi thế cho các sinh viên và các lập trình viên ứng dụng web
Cùng với đó, sự phát triển của công nghệ di động đã bùng nổ trong vài năm qua Các thiết bị di động đã trở nên mạnh mẽ và phổ biến Trong vài năm trở lại đây, hệ điều hành Android ra đời và trở thành nền tảng điện thoại thông minh phổ biến mất thế giới, với sự kế thừa những ưu việt của các hệ điều hành
ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay
Những ưu điểm dễ thấy nhất của Android chính là khả năng tùy biến nhanh chóng, dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng cả các nhà sản xuất Đồng thời Android có mã nguồn mở đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên được điều chỉnh và phân phối Android một cách tự do
Vấn đề đặt ra có được một ứng dụng hỗ trợ học tập là không hề đơn giản
vì đa số các ứng dụng hỗ trợ học đều phải mất phí hoặc việc sử dụng còn một
Trang 10số hạn chế Bởi vậy trước nhu cầu về môn học Lập trình ASP.NET và những
ưu điểm của hệ điều hành Android, em đã chọn đề tài “Xây dựng ứng dụng hỗ trợ học Lập trình ASP.NET trên thiết bị di động” làm khóa luận tốt nghiệp cho
mình Để tạo ra một ứng dụng cho sinh viên ngành công nghệ thông tin có một ứng dụng học lập trình ASP.NET trên thiết bị động chạy hệ điều hành Android
2 Ý nghĩa khoa học và thực tiễn
Ứng dụng lý thuyết, phương pháp, kỹ thuật lập trình trên hệ điều hành Android để xây dựng ứng dụng hỗ trợ học tập học phần Lập trình ASP.NET
trên thiết bị di động
3 Mục tiêu khóa luận
Xây dựng thành công ứng dụng hỗ trợ học phần Lập trình ASP.NET trên thiết bị đi động
4 Nhiệm vụ nghiên cứu
Tìm hiểu về hệ điều hành Android bằng cách thu thập, đọc tài liệu, nghiên cứu sử dụng ngôn ngữ Java và các thư viện trong Android để lập trình ứng dụng
Nghiên cứu các thuật toán được sử dụng trong ứng dụng học lập trình ASP.NET
Lập trình, cài đặt hoàn thiện ứng dụng hỗ trợ học lập trình ASP.NET
5 Phương pháp nghiên cứu
Phương pháp nghiên cứu tự luận: đọc và nghiên cứu tài liệu, giáo trình có liên quan đến việc lập trình game Android rồi phân hóa, hệ thống các kiến thức
Phương pháp tổng kết kinh nghiệm: qua việc nghiên cứu, tham khảo tài liệu, giáo trình từ đó rút ra kinh nghiệm để áp dụng vào việc nghiên cứu
Phương pháp lấy ý kiến chuyên gia: lấy ý kiến của giảng viên trực tiếp hướng dẫn, các giảng viên khác để hoàn thiện về mặt nội dung và hình thức của khóa luận
Trang 116 Đối tượng và phạm vi nghiên cứu
Đối tượng: Ứng dụng hỗ trợ học Lập trình ASP.NET trên thiết bị di động
Phạm vi: Dùng ngôn ngữ lập trình Java dành cho hệ điều hành Android
Trang 12CHƯƠNG I TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID, NGÔN NGỮ LẬP
Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình Tính đến tháng 8 năm 2013, có hơn 975.000 ứng dụng dành cho Android trên cửa hàng Google Play, và số lượng ứng dụng tải
về từ Cửa hàng Play ước tính đạt gần 30 tỷ Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng bộ công cụ phát triển phần mềm Android Software Development Kit (SDK)
Google công bố hầu hết các mã nguồn mở của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng mã, 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu dòng mã Java và 1.75 triệu dòng mã C++
Bất kỳ một hãng sản xuất phần cứng nào cũng có thể sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị ấy đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G,…) Ra đời tháng 11/2007, hệ điều hành Android đã trải qua nhiều lần cập nhật với phiên bản gần đây nhất là Android 5.1 Lollipop như hình 1.1 nhằm giúp cải thiện tính
ổn định và bổ sung một số tính năng mới như hỗ trợ các thiết bị nhiều thẻ sim,
hỗ trợ khả năng thoại HD trên điện thoại, tính năng bảo mật cho phép bảo vệ thiết bị bằng cách chỉ cho đăng nhập bằng tài khoản Google, kết nối nhanh chóng với mạng WiFi hay thiết bị Bluetooth từ menu Quick Settings, hỗ trợ
Trang 13hình động mới cho ứng dụng đồng hồ,…
Hình 1.1 Biểu tượng Android 5.1 Lollipop
Bộ công cụ Android SDK cung cấp các công cụ và bộ thư viện các hàm giao diện chương trình ứng dụng (Application Programming Interface hay API) cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình Java
1.1.2 Lịch sử hình thành và phát triển của hệ điều hành Android
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto, California vào tháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập Tổng công ty Viễn thông Wildfire), Nick Sears (từng là Phó giám đốc T-Mobile), và Chris White (trưởng thiết kế và giao diện tại WebTV) để phát triển, theo lời của Rubin, “các thiết bị di động thông minh hơn có thể biết được vị trí và sở thích của người dùng” [9] Dù những người thành lập và nhân viên đều là những người có tiếng tăm, tổng công ty Android hoạt động một cách âm thầm, chỉ tiết lộ rằng họ đang làm phần mềm dành cho điện thoại di động Công ty này sau đó được Google mua lại vào ngày
17 tháng 8 năm 2005 và bắt đầu xây dựng Android Platform Các thành viên chủ chốt tại Android Inc gồm có: Andy Rubin, Rich Miner, Nick Sears, and Chris White
Đến cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay Mã Nguồn mở (Open Handset Alliance) gồm các thành viên nổi bật trong ngành viễn thông và thiết bị cầm tay như: Texas Instrument, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia…
Trang 14Electronics, Sprint Nextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp and Vodafone Group,…
Mục tiêu của liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho nhu cầu của người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất, các nhà khai thác và các lập trình viên thiết bị cầm tay Android là hệ thống nền tảng các phần mềm dành cho điện thoại di động bao gồm hệ điều hành, các phần tử giao tiếp trung gian (midleware) và các ứng dụng chính (key application)
Nền tảng di động Android của Google ngày càng trở nên hiện thực và đang là một đối thủ nặng ký cho những gã khổng lồ như Microsoft, Apple, RIM,…Cuộc chiến đã rõ ràng hơn khi mà Google tung ra bộ công cụ phát triển phần mềm cho Android (SDK) Bộ SDK sẽ giúp các nhà phát triển phần mềm hiểu rõ hơn về Android và tạo nên các sản phẩm phần mềm cho dòng thiết bị này Bộ SDK được thiết kế để cho phép các nhà phát triển “mở rộng, thay thế, tái sử dụng” các thành phần phần mềm, có nhiều công cụ debug, thư viện, dự
án mẫu Có một plug-in tích hợp SDK với nền tảng để phát triển Eclipse (từ Eclipse 3.2 trở về sau)
Phiên bản SDK đầu tiên ra phát hành vào tháng 11 năm 2007, hãng TMobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc TMobile G1, chiếc smartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0 Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform
Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc của nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể
sử dụng lại các thành phần từ những ứng dụng khác Việc tái sử dụng không chỉ cho các dịch vụ mà nó còn được áp dụng cho cả các thành phần dữ liệu và giao diện người dùng
Trang 15Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi
là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng buộc vào các nhà cung cấp mạng điện thoại di động Mục tiêu của thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết
bị có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên bản
vá lỗi 1.1 của hệ điều hành này Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý Android
cố định vấn đề này bằng cách phát hành SDK 1.5 vào tháng Tư năm 2009, cùng với một số tính năng khác Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vận dụng và các thư mục hiện tại (live folder) Chiếc điện thoại chạy Android đầu tiên được bán ra là HTC Dream, phát hành ngày 22 tháng 10 năm
2008 Biểu trưng của hệ điều hành Android mới là một con rôbốt màu xanh lá cây do hãng thiết kế Irina Blok tại California vẽ
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến
hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hành trước Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái,
theo tên của một món ăn tráng miệng; Ví dụ như phiên bản 1.5 Cupcake (bánh bông lan nhỏ có kem) tiếp nối bằng phiên bản 1.6 Donut (bánh vòng) Phiên
bản mới nhất hiện nay là 5.1 Lollipop Vào năm 2010, Google ra mắt loạt thiết
bị Nexus một dòng sản phẩm bao gồm điện thoại thông minh và máy tính bảng chạy hệ điều hành Android, do các đối tác phần cứng sản xuất HTC đã hợp tác
từ đó nhiều thiết bị mới hơn đã gia nhập vào dòng sản phẩm này, như điện thoại Nexus 4 và máy tính bảng Nexus 10, lần lượt do LG và Samsung sản xuất Google xem điện thoại và máy tính bảng Nexus là những thiết bị Android chủ lực của mình, với những tính năng phần cứng và phần mềm mới nhất của Android
Trang 161.2 Tổng quan về ngôn ngữ Java
1.2.1 Giới thiệu ngôn ngữ Java
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++ Do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như Tivi, máy giặt, lò nướng, … Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU
Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt
Vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 được đổi tên thành Java Mặc dù mục tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết
bị nên Java đã trở thành ngôn ngữ lập trình cho Internet
Java là ngôn ngữ lập trình hướng đối tượng, do vậy không thể dùng Java
để viết một chương trình hướng chức năng
Java là ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồn được biên dịch bằng công cụ JAVAC để chuyển thành dạng ByteCode Sau đó được thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch Mục tiêu của các nhà thiết kế Java là cho phép người lập trình viết chương trình một lần nhưng có thể chạy trên bất cứ phần cứng cụ thể
Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên Internet Nó là ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành Nó không chỉ dùng để viết các ứng dụng chạy đơn lẻ hay trong mạng mà còn để xây dựng các trình điều khiển thiết bị cho điện thoại
di động, PDA,
Trang 171.2.2 Các đặc trưng của Java
Đơn giản:
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số người lập trình Do vậy Java được loại bỏ các đặc trưng phức tạp của C và C++ như thao tác con trỏ, thao tác nạp đè (overload),… Java không sử dụng lệnh “goto” cũng như file header (.h) Cấu trúc “struct” và
“union” cũng được loại bỏ khỏi Java
Hướng đối tượng
Java được thiết kế xoay quanh mô hình hướng đối tượng Vì vậy trong Java, tiêu điểm là dữ liệu và các phương pháp thao tác lên dữ liệu đó Dữ liệu
và các phương pháp mô tả trạng thái và cách ứng xử của một đối tượng trong Java
Ở mức nhị phân, một chương trình đã biên dịch có thể chạy trên nền khác
mà không cần dịch lại mã nguồn Tuy vậy cần có phần mềm máy ảo Java (sẽ
đề cập đến ở phần sau) hoạt động như một trình thông dịch tại máy thực thi
Trình biên dịch sẽ chuyển các chương trình viết bằng C, C++ hay ngôn ngữ khác thành mã máy nhưng phụ thuộc vào CPU Nên khi muốn chạy trên
Hình 1.2 Quá trình thực thi
Trang 18loại CPU khác, chúng ta phải biên dịch lại chương trình
Môi trường phát triển của Java được chia làm hai phần: Trình biên dịch
và trình thông dịch Không như C hay C++, trình biên dịch của Java chuyển mã nguồn thành dạng bytecode độc lập với phần cứng mà có thể chạy trên bất kỳ CPU nào
Nhưng để thực thi chương trình dưới dạng bytecode, tại mỗi máy cần phải có trình thông dịch của Java hay còn gọi là máy ảo Java Máy ảo Java chuyển bytecode thành mã lệnh mà CPU thực thi được
Trong lớp thứ hai, trình biên dịch kiểm soát để đảm bảo mã an toàn Lớp thứ ba được đảm bảo bởi trình thông dịch Chúng kiểm tra xem bytecode có đảm bảo các qui tắc an toàn trước khi thực thi Lớp thứ tư kiểm soát việc nạp các lớp lên bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống
Phân tán
Java có thể dùng để xây dựng các ứng dụng có thể làm việc trên nhiều phần cứng, hệ điều hành và giao diện đồ họa Java được thiết kế cho các ứng dụng chạy trên mạng Vì vậy chúng được sử dụng rộng rãi trên Internet
Trang 19 Đa luồng
Chương trình Java sử dụng kỹ thuật đa tiến trình (Multithread) để thực thi các công việc đồng thời Chúng cũng cung cấp giải pháp đồng bộ giữa các tiến trình Đặc tính hỗ trợ đa tiến trình này cho phép xây dựng các ứng dụng trên mạng chạy uyển chuyển
Động
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường mở Các chương trình Java bổ sung các thông tin cho các đối tượng tại thời gian thực thi Điều này cho phép khả năng liên kết động các mã
1.3 Tổng quan về học phần lập trình ASP.NET
Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng dụng Web động trên máy chủ sử dụng hệ điều hành Windown ASP đã thể hiện được những ưu nhược điểm của mình với mô hình lập trình thủ tục đơn giản, sử dụng hiệu quả các đối tượng COM: ADO (ActiveX Data Object) – xử lý dữ liệu, FSO (File System Object) làm việc với hệ thống tập tin , đồng thời, ASP cũng hỗ trợ nhiều ngôn ngữ: VBScript, JavaScript Chính những ưu điểm đấy, ASP đã được yêu thích trong một thời gian
Đầu năm 2002 Microsoft giới thiệu một kỹ thuật lập trình Web khá mới
mẻ với tên gọi ban đầu là ASP+, tên chính thức sau này là ASP.NET Với ASP.NET, không những không cần đòi hỏi người dùng phải biết các tag HTML, thiết kết Web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web
ASP.NET là kỹ thuật lập trình và phát triển ứng dụng Web ở phía Server dựa trên nền tảng của Microsoft NET Framework
Hầu hết những người mới đến với lập trình Web đều bắt đầu tìm hiểu những kỹ thuật ở phía Client như: HTML, Java Script, CSS Khi Web browser yêu cầu một trang web, Web Server tìm trang web mà Client yêu cầu, sau đó gửi
về cho Client Client nhận kết quả trả về từ Server và hiển thị lên màn hình
ASP.NET sử dụng kỹ thuật lập trình ở phía Server thì hoàn toàn khác,
Trang 20mã lệnh ở phía Server sẽ được biên dịch và thi hành tại Web Server Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang HTML/JavaScript/CSS và trả về cho Client Tất cả các sử lý lệnh ASP.NET đều được thực hiện tại Server và do đó, gọi là kỹ thuật lập trình ở phía Server
1.3.1 Ưu điểm của ASP.NET
ASP.NET cho phép người dùng lựa chọn một trong các ngôn ngữ lập trình mà người dùng yêu thích: Visual Basic.Net, J#,C#,…
Trang ASP.NET được biên dịch trước Thay vì phải đọc và thông dịch mỗi khi trang Web được yêu cầu, ASP.NET biên dịch những trang Web động thành những tập tin DLL mà Server có thể thi hành nhanh chóng
và hiệu quả Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuật thông dịch của ASP
Hình 1.3 Mô hình xử lý ASP.NET
ASP.NET hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của NET Framework, làm việc với XML, Web Service, truy cập cơ sở dữ liệu qua ADO.Net,…
ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng
ASP.NET sử dụng phong cách lập trình mới: Code behind Tách code riêng, giao diện riêng dễ đọc, dễ quản lý và bảo trì
Kiến trúc lập trình giống như ứng dụng trên Windows
Trang 211.3.2 Nội dung của học phần lập trình ASP.NET
CHƯƠNG 1: Tổng quan về ASP.NET
1.1 Tìm hiểu về ASP.NET
1.2 Những ưu điểm của ASP.NET
1.3 Tìm hiểu về NET Platform và NET Framework 1.4 Cách thức web server thực thi ứng dụng asp.net 1.5 Tạo ứng dụng ASP.NET đầu tiên
CHƯƠNG 2: ASP.NET Server Controls
2.1 Điều khiển Label
2.2 Điều khiển TextBox
2.3 Điều khiển Image
2.4 Điều khiển Button, ImageButton, LinkButton 2.5 Điều khiển HyperLink
2.6 Điều khiển CheckBox và RadioButton
CHƯƠNG 3: Các điều khiển liên kết dữ liệu
3.1 Điều khiển GridView
3.2 Điều khiển DataList
3.3 Điều khiển Repeater
3.4 Điều khiển DataGrid
3.5 Điều khiển DetailView và FormView
CHƯƠNG 4: Xử lý dữ liệu với ADO.NET
4.1 Tìm hiểu về ADO.NET
4.2 Các namespace của ADO.NET
4.3 Các đối tượng trong ADO.NET
4.3 Các đối tượng trong ADO.NET
CHƯƠNG 5: Quản lý trạng thái
Trang 225.1 Vấn đề trạng thái
5.2 Xem trạng thái và chuyển thông tin giữa các trang
5.3 Đối tượng Cookies và Session
5.4 Đối tượng Application
5.5 Tập tin Global.asax và Web.config
1.4 Lập trình ứng dụng trên hệ điều hành Android
1.4.1 Công cụ lập trình ứng dụng trên Android
Android SDK(Android Software Development Kit): Bộ công cụ phát triển
Android bao gồm các công cụ riêng lẻ như: debugger, các thư viện, trình giả lập điện thoại Android, các tài liệu hỗ trợ và code mẫu Hiện Android cung cấp bộ công cụ này trên nhiều nền tảng hệ điều hành khác nhau (Windows, Linux, Mac, ) yêu cầu cài sẵn Java Development Kit, Apache Ant và Python2.2 trở lên
IDE (Integrated Development Environment): Môi trường phát triển tích
hợp Eclipse phiên bản 3.2 trở lên với plugin ADT (Android Development Tools), Netbeans Tuy nhiên, người lập trình có thể sử dụng bất kỳ 1 IDE hay trình soạn thảo văn bản nào để viết code Java và XML rồi biên dịch nên ứng dụng hoàn chỉnh bằng cách sử dụng dòng lệnh (command lines- dòng lệnh) Eclipse hỗ trợ tốt hơn Netbeans nên được sử dụng làm công cụ phát triển chính thức
Một số công cụ hỗ trợ lập trình Android tiêu biểu:
- SQLite Manager: là một addon của Firefox giúp quản lí SQLite
- DroidDraw: giúp thiết kế file XML giao diện ứng dụng
- Balsamiq Mockups và AdobeFireworks: giúp nhanh chóng phác thảo ý tưởng và giao diện sơ bộ của ứng dụng
- StarUML: vẽ các lược đồ UML hỗ trợ phân tích thiết kế
Trang 23 Activity
- Khái niệm:
Một hoạt động là một giao diện người dùng trực quan mà người dùng có thể thực hiện trên đó mỗi khi được kích hoạt Một ứng dụng có thể có nhiều hoạt động và chúng có thể gọi qua lại lẫn nhau Mỗi Activity là một dẫn xuất của lớp android.app.Activity
Mỗi hoạt động có một cửa sổ để vẽ lên Thông thường cửa sổ này phủ đầy màn hình, ngoài ra nó cũng có thể có thêm các cửa sổ con khác như là hộp thoại…Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp bậc các View (là đối tượng của lớp Views)
- Vòng đời hoạt động (circle activities)
Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi
Một Activity có 3 trạng thái chính:
- Active hoặc running khi nó ở trên nhất màn hình và nhận tương tác người dùng
- Paused khi Activity không còn là trọng tâm trên màn hình nhưng vẫn hiện thị trước người dùng
- Stopped khi một Activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái
Trang 24Stopped Tuy nhiên, nó vẫn còn lưu trữ toàn bộ thông tin trạng thái Và
nó thường bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ
Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với các bước chuyển:
- void onCreate(Bundle savedInstanceState)
Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau:
Hình 1.4 Vòng đời của một activity
Trang 25Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới phương thức onCreate(Bundle) tới lời gọi phương thức onDestroy() Trong quá trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong phương thức onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi
Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi Toàn bộ các tài nguyên đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu giữ, người dùng có thể thấy giao diện nhưng không tương tác được với hoạt động
do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh
Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi
có lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause() Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng
Service
Một dịch vụ (Service) là các đoạn mã được thực thi ngầm bởi hệ thống
mà người sử dụng không thấy được Mỗi service đều được mở rộng từ lớp cơ
sở là service trong gói android.app Có thể kết nối tới hoặc kích hoạt một Service thông qua interface mà Service đưa ra.Ví dụ như một chương trình chơi nhạc, sẽ có vài hoạt động cho phép người dùng duyệt danh sách các bài hát và lựa chọn bài nào để phát Tuy nhiên, chức năng chơi nhạc không được thiết kế như một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài nhạc vẫn tiếp tục được chơi Trong trường hợp này, ứng dụng chơi nhạc sẽ khởi tạo một dịch vụ bằng cách sử dụng phương thức:
Context.startService()
Một ứng dụng có thể dễ dàng thực hiện liên kết tới một dịch vụ đang chạy (thậm chí khởi động nếu nó chưa thực thi) bằng phương thức Context.bindService() Khi đó dịch vụ này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông qua giao diện gọi là IBinder (đối với dịch vụ chơi nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp)
Trang 26- Vòng đời của một dịch vụ được hiểu là quá trình hoạt động từ khi nó được tạo ra cho tới khi bị loại khỏi hệ thống Có hai cách thức để một dịch vụ có thể được chạy trong hệ thống
- Khi hệ thống có lời gọi tới phương thức Context.startService() Trong trường hợp này, dịch vụ sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức Context.stopService()
Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với dịch vụ (dịch vụ sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động) Ứng dụng sẽ nhận được một đối tượng IBinder do dịch vụ trả lại
để có thể gọi các phương thức Callback phù hợp để truy cập tới các trạng thái của dịch vụ Nếu do lời gọi Context.bindService() mà dịch vụ được khởi tạo thì nó sẽ được thực thi cho tới khi nào kết nối trên vẫn còn tồn tại
Hình 1.5 Sơ đồ chuyển trạng thái của service
Bộ nhận quảng bá (Broadcast Receivers)
Bộ nhận quảng bá là một thành phần không làm gì cả nhưng nó nhận và phản hồi lại các thông báo quảng bá Nhiều quảng bá có nguồn gốc từ mã hệ thống, ví dụ thông báo thay đổi múi giờ, pin yếu, ảnh đã chụp hay thay đổi ngôn ngữ Các ứng dụng có thể khởi động quảng bá, ví dụ để các ứng dụng khác biết rằng dữ liệu đã được tải về xong trên thiết bị và sẵn sàng sử dụng
Trang 27Một ứng dụng có thể có bất kỳ số lượng bộ nhận quảng bá nào để nhận những thông báo quan trọng với nó Tất cả các bộ nhận quảng bá được kế thừa
từ lớp BroadcastReceiver
Bộ nhận quảng bá không có giao diện Tuy nhiên, chúng có thể khởi động một hoạt động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử dụng NotificationManager để thông báo người dùng biết Các thông báo có thể được sự chú ý của người dùng theo các cách các nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy… Thông thường, chúng đặt thông báo trên thanh trạng thái, nơi người dùng có thể nhận được thông báo
Content Provider
Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng cơ sở dữ liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một tập hợp các phương thức cho phép một ứng dụng có thể lưu trữ và lấy
dữ liệu được quản lý bởi content provider đó
Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng dụng có thể chia sẻ dữ liệu với nhau một cách dễ dàng
Các Intent
Content Provider được kích hoạt khi chúng được gọi từ một ContentResolver
Ba thành phần khác (hoạt động, dịch vụ và bộ nhận quảng bá) được kích hoạt bởi thông điệp không đồng bộ từ các Intent Một Intent là một đối tượng có kiểu Intent chứa nội dung của thông điệp Với các hoạt động và dịch vụ, nó gọi tên hành động được yêu cầu và xác định URI của dữ liệu tác động tới ở giữa
Ví dụ, nó có thể truyền tải một yêu cầu cho một hoạt động hiển thị một ảnh cho người dùng hay cho phép người dùng sửa văn bản Với bộ nhận quảng bá, đối tượng Intent gọi tên của hành động được thông báo Ví dụ, bộ nhận quảng bá có thể thông báo các phần nó quan tâm là nút chụp ảnh đã được bấm
Có vài phương thức cho việc kích hoạt mỗi thành phần: Một hoạt động được khởi chạy thông qua một đối tượng Intent Context.startActivity() hay Activity.startActivityForResult() Hoạt động đáp lại có thể theo dõi Intent được tạo ra đó bằng phương thức getIntent() và cập nhật thông qua phương thức
Trang 28setIntent(Intent) Android gọi phương thức onNewIntent() để bỏ qua các Intent đến trước nó
Một hoạt động thường bắt đầu hoạt động khác Nếu nó muốn trả lại kết quả hoạt động nó đã khởi chạy, nó sẽ gọi phương thức:
startActivityForResult() thay cho phương thức startActivity() Ví dụ, nếu nó khởi chạy một hoạt động mà cho phép người dùng lấy một ảnh, nó có thể muốn lấy kết quả của ảnh được chọn Kết quả được trả về trong một đối
tượng Intent thông qua phương thức onActivityResult()
Một dịch vụ được bắt đầu thông qua một đối tượng Intent là :
Context.startService() Android gọi phương thức onStart() của dịch vụ và thông qua đối tượng Intent của nó
Tương tự, một Intent có thể thông qua Context.bindService() để thiết lập một kết nối liên tục giữa các thành phần và dịch vụ đích Dịch vụ nhận đối tượng Intent qua lời gọi onBind() (nếu dịch vụ chưa được chạy, bindService()
có thể chọn bắt đầu nó) Cho ví dụ, một hoạt động có thể thiết lập kết nối với dịch vụ chơi nhạc đề cập ở phần trước để nó có thể cung cấp cho người dùng giao diện sử dụng để điều khiển chơi lại Hoạt động sẽ gọi bindService để thiết lập kết nối và sau đó gọi phương thức đã định nghĩa bởi dịch vụ để áp dụng chơi lại ca khúc
Một ứng dụng có thể khởi tạo một quảng bá thông qua đối tượng Intent bằng phương thức như: Context.setBroadcast(),Context.setOrderedBroadcast()và Context.sendStickyBroadcast() Android chuyển những Intent tới tất cả các bộ nhận quảng bá nào quan tâm bằng việc gọi phương thức onReceive() của nó
Tập tin khai báo (Manifest File)
Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng dụng bao gồm những thành phần nào Thêm nữa, các ứng dụng khai báo các thành phần của nó trong một tập tin khai báo để đóng gói lại vào trong gói Android (tập tin apk chứa các mã nguồn, tập tin và tài nguyên) Tập tin này có cấu trúc của tập tin XML và luôn có tên là AndroidManifest.xml trong mọi ứng dụng Tập tin này thực hiện một số chức năng như thêm và khai báo các thành
Trang 29phần của ứng dụng, tên các thư viện ứng dụng cần liên kết tới (ngoài thư viện chuẩn của Android) và xác định các quyền cho ứng dụng
Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần của ứng dụng Một hoạt động có thể được khai báo như sau:
Thuộc tính “name” của phần tử <activity> là tên các lớp con lớp Activity
đã được cài đặt, thuộc tính “icon” và “label” trỏ đến tập tin tài nguyên chứa biểu tượng và nhãn được hiển thị cho người dùng
Các thành phần khác được khai báo theo cách tương tự: <service> dịch
vụ, <receiver> bộ nhận quảng bá và <provider> content provider Các hoạt động, dịch vụ và content provider có thể cùng được khai báo trong tập tin khai báo hoặc có thể được tạo tự động trong mã (như đối tượng BroadcastReceiver)
và được đăng ký với hệ thống bằng cách gọi Context.registerReceiver()
Bộ lọc Intent
Một đối tượng Intent có thể có tên rõ ràng trong thành phần đích Nếu
có, Android sẽ tìm thành phần đó (dựa trên khai báo trong tập tin khai báo) và kích hoạt nó Nhưng nếu đích có tên không rõ ràng, Android phải xác định thành phần nào thích hợp nhất để đáp lại intent Nó thực hiện so sánh đối tượng Intent với bộ lọc intent trong các đích có khả năng Một thành phần của bộ lọc intent cho Android biết loại intent thành phần nào cần xử lý Giống các thông
Trang 30tin cơ bản, chúng được khai trong tập tin khai báo Đây là một ví dụ để thêm hai bộ lọc intent cho một hoạt động
Bộ lọc thứ hai được khai báo để hoạt động có thể thực thi trên một kiểu
dữ liệu đặc biệt
Một thành phần có thể có bao nhiêu số bộ lọc intent tùy thích, mỗi một cái lại được khai báo khác nhau cho các khả năng Nếu nó không có một bộ lọc nào, nó có thể được được kích hoạt bởi các intent khác gọi đến
Để tạo và đăng ký một bộ nhận quảng bá trong mã nguồn, bộ lọc intent tạo thẳng một đối tượng giống đối tượng IntentFilter Tất cả các bộ lọc khác đều được cài đặt trong tập tin khai báo
Trang 31CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CỦA ỨNG DỤNG
HỖ TRỢ HỌC LẬP TRÌNH ASP.NET
2.1 Xác định yêu cầu
Bài toán của chúng ta ở đây là xây dựng được một công cụ hỗ trợ học tập dưới dạng một ứng dụng trên thiết bị sử dụng hệ điều hành mã nguồn mở Android Như vậy có nghĩa là ứng dụng phải hỗ trợ tất cả những thiết bị chạy
hệ điều hành Android và có đầy đủ các chức năng của một ứng dụng hỗ trợ học tập
2.1.1 Các chức năng của chương trình
Học lý thuyết: Cho phép người dùng lựa chọn bài giảng của từng chương và hiển thị nội dung bài giảng đó lên màn hình
Bài tập minh họa: Cho phép người dùng chọn bài tập minh họa của từng chương và hiển thị nội dung bài và cách làm đó lên màn hình
Học bằng video: Cho phép người dùng chọn một video bài giảng của chương
đó và hiển thị nội dung video đó lên màn hình
Làm bài tập trắc nghiệm:
lên mành hình
o Khi kết thức phần thi trắc nghiệm thì hiển thị kết quả làm bài thi và điểm số của người dùng
Ngoài ra còn một số chức năng khác: Đăng ký, đăng nhập tài khoản, màn hình intro khi cài đặt phần mềm, chức năng giới thiệu, tìm kiếm câu hỏi
2.1.2 Biểu đồ Usercase
Biểu đồ Usercase thể hiện số lượng chức năng mà người sử dụng có thể tương tác trực tiếp với chương trình Sau khi chương trình hoạt động, người sử dụng sẽ có thể sử dụng một số chức năng nhất định sau:
Trang 32Hình 2.1 Biểu đồ UserCase về chức năng
2.2 Phân tích và thiết kế
2.2.1 Phân tích mô hình xử lý các chức năng
Mô hình xử lý đăng ký
Bước 1: User nhập vào input, client kiểm tra input trước khi gửi đến hàm
đăng ký Nếu input sai thì hiện thông báo nhập lại
Bước 2: Gửi thông tin đăng ký đến hàm đăng ký Hàm này kiểm tra
username có tồn tại trong database chưa Nếu username tồn tại thì hiện thông báo lỗi và quay lại bước 1 Nếu username không tồn tại đến bước 3
Bước 3: Xử lý đăng kí và thêm dữ liệu vào database Gửi trả kết quả lại
Trang 33Hình 2.2 Mô hình xử lý đăng ký
Mô hình xử lý đăng nhập
Bước 1: User gửi username, password Nếu có lỗi input thì hiển thị thông báo Bước 2: Truyền username và password vào hàm login, xử lý Nếu
username hoặc password không đúng thì hiển thị lỗi và quay lại bước 1
Bước 4: Đăng nhập thành công tiếp tục sử dụng chương trình
createUser()
Msg Success Success
Trang 34 Mô hình xử lý chức năng học bằng video
Bước 1: Người dùng gửi groupPosition và childPosition Có lỗi input thì
hiển thị thông báo
Bước 2: Truyền groupPosition và childPosition vào hàm checkPosition
để xử lý
Bước 3: Hàm checkPosition trả lại nội dung của video cho người dùng
Hình 2.4 Mô hình xử lý học bằng video
Mô hình xử lý chức năng học lý thuyết
Bước 1: Người dùng gửi groupPosition và childPosition Có lỗi input thì
hiển thị thông báo
Bước 2: Truyền groupPosition và childPosition vào hàm checkPosition
Trang 35Hình 2.5 Mô hình xử lý học lý thuyết
Mô hình xử lý chức năng bài tập minh họa
Bước 1: Người dùng gửi groupPosition và childPosition Có lỗi input thì
hiển thị thông báo
Bước 2: Truyền groupPosition và childPosition vào hàm checkPosition
để xử lý
Bước 3: Hàm checkPosition trả lại nội dung của bài tập kèm hướng dẫn
giải cho người dùng
Hình 2.6 Mô hình xử lý bài tập minh họa
Trang 36 Mô hình xử lý chức năng tìm kiếm câu hỏi
Bước 1: Người dùng gửi từ khóa đến hàm CheckInput() Có lỗi input thì
hiển thị thông báo
Bước 2: Truyền từ khóa tìm kiếm vào hàm checkSearchQuestion() để xử lý Bước 3: Hàm checkSearchQuestion trả lại nội dung câu hỏi và đáp án
đúng của câu hỏi đó cho người dùng
Hình 2.7 Mô hình xử lý chức năng tìm kiếm câu hỏi
Mô hình xử lý làm trắc nghiệm và chấm điểm
Bước 1: User gửi mã đề thi vào hàm getCauhoi() và trả lại danh sách câu
hỏi lên màn hình
Bước 2: Người dùng làm bài thi trắc nghiệm và gửi đáp án vào hàm
chamDiem() và trả lại kết quả điểm và số câu trả lời
Bước 3: Lưu lại điểm của của người dùng vào CSDL
Trang 37Hình 2.8 Mô hình xử lý chấm điểm và lưu bài thi
Chọn bộ đề getCauhoi()
chamDiem()
Danh sách câu hỏi Làm bài thi
Hiển thị kết quả
Lưu điểm luuDiem()
Msg Success Success