You are on page 1of 24

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

....................................................................................................................................

Hà Nội, ngày … tháng … năm 2022

Giảng viên hướng dẫn


LỜI NÓI ĐẦU

Chúng em xin gửi lời cảm ơn đến thầy Vũ Song Tùng đã hướng dẫn nhóm em
trong kì học này, giúp chúng em tìm hiểu về lập trình hướng đối tượng, vẽ các biểu đồ
diagram và ứng dụng nó vào làm bài tập lớn chon môn học này. Với vốn kiến thức còn
hạn chế và thời gian có hạn, bài tập lớn của chúng em chắc chắn còn nhiều sai sót,
chúng em rất mong nhận được sự góp ý từ thầy để bài tập lớn của chúng em được
hoàn thiện hơn.
MỤC LỤC

Mụ c lụ c
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN.............................................................1
LỜI NÓI ĐẦU.....................................................................................................................2
MỤC LỤC............................................................................................................................3
DANH MỤC HÌNH VẼ....................................................................................................13
DANH MỤC BẢNG BIỂU.................................................................................................2
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI..................................................................................3
1. Đặt vấn đề....................................................................................................................3
2. Mô tả đề tài..................................................................................................................3
3. Sơ đồ khối của project................................................................................................4
4. Công cụ sử dụng.........................................................................................................4
CHƯƠNG 2. THIẾT KẾ CHI TIẾT.................................................................................6
1. Công cụ đăng kí dịch vụ (Register service tool).....................................................6
2. Công cụ phân tích tin nhắn SMS Banking(deparse tool)......................................9
3. Ứng dụng hiển thị trên điện thoại.........................................................................11
CHƯƠNG 3. KIỂM THỬ................................................................................................13
CHƯƠNG 4. KẾT LUẬN.................................................................................................14
PHỤ LỤC: TÀI LIỆU THAM KHẢO............................................................................15
DANH MỤC HÌNH VẼ

Hình 1: Sơ đồ khối của project

Hình 2: Minh họa cho cách tổ chức cơ sở dữ liệu trên server

Hình 3: Giao diện dashboard

Hình 4: Giao diện đăng kí

Hình 5: Email thông báo kết quả đăng kí

Hình 6: Kết nối giữa module sim và vi điều khiển ESP32

Hình 7: Code sử dụng arduino và thư viện ESP-IDF

Hình 8: Giao diện deparse tool

Hình 9: Chuyển dịch giữa các màn hình.

Hình 10: Màn hình chính

4
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI

1. Đặt vấn đề
Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin từ một tiềm
năng thông tin đã trở thành một tài nguyên thực sự, trở thành sản phẩm hàng hoá trong
xã hội, tạo ra một sự thay đổi to lớn trong lực lượng sản xuất, cơ sở hạ tầng, cấu trúc
kinh tế, tính chất lao động và cả cách thức quản lý trong các lĩnh vực của xã hội.Với sự
phát triển Internet nó được xem là một trong những thành tựu khoa học kỹ thuật vĩ đại
trong lịch sử loài người và là nguồn tài nguyên thông tin lớn nhất, đa dạng nhất của thế
giới hiện nay.Internet giúp mọi người có thể trao đổi thông tin trong sinh hoạt hàng
ngày, thu thập, tìm kiếm các thông tin mới nhất ở khắp mọi nơi trên toàn thế giới, giao
dịch thương mại, cộng tác trong nghiên cứu khoa học…Vì vậy trên con đường công
nghiệp hóa, hiện đại hóa đất nước ta hiện nay, việc đưa Internet đến mọi người là một
xu thế tất yếu. Vấn đề đặt ra là làm sao cho Internet thực sự phục cho con người một
cách có hiệu quả trên mọi lĩnh vực.

Từ đó nhóm chúng em đề xuất bài tập lớn “ Quản lý dịch vụ thu phí”. Hệ thống này
sẽ giúp giáo viên và sinh viên thuận lợi hơn trong việc đăng ký thí nghiệm, phúc tra
điểm, …

2. Mô tả đề tài
Hệ thống giúp sinh viên đăng kí phúc khảo điểm, đăng kí thí nghiệm môn học và
đăng kí cấp bảng điểm. Sau khi hệ thống nhận được tin nhắn banking thì hệ thống sẽ
tính toán, phân tích tin nhắn để biết đó là do sinh viên nào đăng kí, đã nộp đủ tiền
chưa. Ngoài ra, sau khi đăng kí thành công dịch vụ thì hệ thống sẽ gửi một email thông
báo cho sinh viên.

3. Sơ đồ khối của project


Dưới đây là sơ đồ các khối của hệ thống:

5
Hình 1: Sơ đồ khối của project

- Khối register service tool: Chức năng chính là tạo các form đăng kí cho sinh
viên sau đó gửi dữ liệu đó lên server. Sau khi gửi thì nó sẽ gửi mail thông báo
kết quả tới người đăng kí.
- Khối deparse tool: Chức năng chính là đọc dữ liệu từ module sim thông qua
cổng serialPort. Dữ liệu nhận được chính là tin nhắn SMS banking. Tin nhắn
này cần được phân tách để lấy ra những giá trị quan trọng như số tiền giao dịch,
mã số sinh viên, họ tên sinh viên và dịch vụ đăng kí. Dữ liệu sau khi phân tách
cũng sẽ được đẩy lên server để phục vụ cho register service tool xử lý.
- Khối display data app: Thực hiện chức năng hiển thị những sinh viên đã đăng kí
các dịch vụ. Ngoài ra thì nó còn cho phép sửa chữa các sai xót do sinh viên
đăng kí sai khi điền form.

4. Công cụ sử dụng
 C# Winforms
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ
kỹ sư của Microsoft vào năm 2000. C# là ngôn ngữ lập trình hiện đại, hướng đối tượng
và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Winforms là một công nghệ của Microsoft cho phép lập trình các ứng dụng
Windows bằng ngôn ngữ C#. Nhờ hỗ trợ các tiện ích, dễ code, giao diện được thiết kế
một cách đơn giản, … Winforms đã được sử dụng để phát triển rất nhiều ứng dụng
 Android Studio
Có nhiều công cụ để phát triển Android nhưng đến nay công cụ chính thức và mạnh
mẽ nhất là Android Studio. Đây là IDE (Môi trường phát triển tích hợp) chính thức cho

6
nền tảng Android, được phát triển bởi Google và được sử dụng để tạo phần lớn các
ứng dụng mà bạn có thể sử dụng hàng ngày.
Chức năng của Android Studio là cung cấp giao diện để tạo các ứng dụng và xử lý
phần lớn các công cụ quản lý file phức tạp được viết bằng ngôn ngữ Java.
 Firebase
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực được cung cấp bởi Google và
hoạt động trên nền tảng đám mây. Nó giúp các lập trình phát triển nhanh các ứng dụng
di động bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Với việc sử dụng Firebase, developer có thể tập trung vào việc phát triển
application mà không cần lo về việc sản phẩm của mình sẽ hoạt động và được quản lý
thể nào ở phía Backend.
 ESP IDF
ESP-IDF là   IoT Development Framework chính thức của Espressif cho dòng SoC
ESP32, ESP32-S và ESP32-C. Nó cung cấp một SDK tự cung cấp cho bất kỳ sự phát
triển ứng dụng chung nào trên các nền tảng này, sử dụng các ngôn ngữ lập trình như C
và C ++. ESP-IDF hiện cung cấp năng lượng cho hàng triệu thiết bị trong lĩnh vực này
và cho phép xây dựng nhiều sản phẩm kết nối mạng khác nhau, từ bóng đèn và đồ chơi
đơn giản đến các thiết bị lớn và thiết bị công nghiệp.

7
CHƯƠNG 2. THIẾT KẾ CHI TIẾT

Thừa hưởng những thiết kế về đối tượng trong môn OOAD của thầy Vũ Song
Tùng, nhóm chúng em tiếp tục triển khai thiết kế chi tiết và đã thu được một số kết quả
nhất định.

1. Công cụ đăng kí dịch vụ (Register service tool)


Chức năng chính của công cụ này đó là đăng kí các dịch vụ như: cấp bảng điểm,
phúc tra, đăng kí thí nghiệm bù. Dữ liệu sẽ được gửi lên server và lưu trữ dưới dạng cơ
sở dữ liệu NoSQL. Nhóm chúng em sử dụng giao thức HTTPS(phương thức get) để
truyền nhận dữ liệu với server.

HTTPS đảm bảo liên lạc an toàn giữa hai bên bằng cách sử dụng giao thức mã hóa
có tên TLS (Transport Layer Security) - kế thừa của SSL. TLS giúp hai bên (Máy
khách và Máy chủ) sẽ đàm phán kết nối có trạng thái bằng cách sử dụng quy trình bắt
tay. Trong giai đoạn này, một khóa phiên phải được tạo để mã hóa tất cả các gói tin
trong phiên giao tiếp.

Dữ liệu trên server sẽ được tổ chức dưới dạng NoSQL, các bản đăng kí của các
dịch vụ tương ứng được xếp vào các child tương ứng. Trong mỗi child sẽ có các thành
phần con khác mang mã số sinh viên của người đăng kí. Khi dữ liệu gửi lên ta sẽ phải
cung cấp cho nó địa chỉ của child và thành phần con cụ thể. Tương tự khi lấy dữ liệu
về cũng vậy.

8
Hình 2: Minh họa cho cách tổ chức cơ sở dữ liệu trên server

Các tính năng và giao diện cụ thể của công cụ này được thiết kế trên C# winforms.
Sau khi khởi chạy app, giao diện dashboard sẽ hiện ra như hình số 3. Nếu người dùng
click vào biểu tượng các tab đăng kí thì hệ thống sẽ chuyển sang hình số 4

Dưới đây là kết quả phát triển của công cụ:

Hình 3: Giao diện dashboard

9
Tại hình 4, người dùng điền các thông tin chính xác vào các trường tương ứng(Nếu
tồn tại một trường trống thì hệ thống sẽ báo lỗi và không thực hiện gửi đăng kí). Sau
khi điền xong, người dùng tiến hành thanh toán phí. Nếu giao dịch thành công và
chính xác thì hệ thống sẽ cho phép gửi đăng kí và thông báo về mail như hình số 5 còn
không thì không thể gửi.

Hình 4: Giao diện đăng kí

Hình 5: Email thông báo kết quả đăng kí

2. Công cụ phân tích tin nhắn SMS Banking(deparse tool)


Chức năng chính của công cụ này đó là phân tích tin nhắn SMS banking. Vì
mỗi một ngân hàng lại có một cấu trúc tin nhắn SMS Banking khác nhau cho nên

10
nhóm em xin giới hạn trong dự án lần này là SMS Banking của Viettel Money –
ngân hàng được nhà trường sử dụng hiện nay.

Tin nhắn gửi về sẽ có những thông tin cần thiết như số giao dịch, nội dung giao
dịch, số tiền. Nội dung giao dịch sẽ được thống nhất theo cú pháp: MSSV_Service

Ví dụ: 20182723_PointTable

Sau khi nhận được tin nhắn, phần cứng sẽ gửi tín hiệu đến moniter thông qua
SerialPort. Ứng dụng nhận được tin nhắn và tiến hành phân tích tin nhắn ở đây.
Nếu số tiền, ID, dịch vụ đăng kí là chính xác thì hệ thống sẽ gửi một tin nhắn tới
server để thông báo là sinh viến đó đã thanh toán tiền cho dịch vụ A.

Để đọc được tin nhắn SMS Banking và gửi nó tới máy tính xử lý thì nhóm
chúng em đã sử dụng ESP32 để giao tiếp với module Sim S800L.

Hình 6: Kết nối giữa module sim và vi điều khiển ESP32

11
Hình 7: Code sử dụng arduino và thư viện ESP-IDF

Các tính năng và giao diện cụ thể của công cụ này được thiết kế trên C# winforms.
Sau khi khởi chạy app, giao diện sẽ hiện ra như hình 8. Người dùng chỉ việc chọn cổng
COM, cài đặt baudrate và nhấn kết nối. Dữ liệu nhận được từ module sim sẽ được gửi
thẳng lên tool để xử lý

Hình 8: Giao diện deparse tool

12
3. Ứng dụng hiển thị trên điện thoại
Thực hiện chức năng hiển thị những sinh viên đã đăng kí các dịch vụ. Ngoài ra
thì nó còn cho phép sửa chữa các sai xót do sinh viên đăng kí sai khi điền form. Dữ
liệu trên server sẽ được lấy về và hiển thị ra màn hình. Danh sách các sinh viên
đăng kí sẽ được hiển thị dưới dạng RecyclerView. Để hiển thị được nhiều thông tin
của sinh viên hơn thì chúng em đã sử dụng chức năng custom Recycer. Đầu tiên sẽ
xây dựng các class tương ứng với các dịch vụ như PointTable, CheckExam,.. sau
đó sẽ xây dựng adapter để đổ ra màn hình.

Ứng dụng được phát triển bằng công cụ android studio. Dưới đây là mô tả sự
chuyển dịch giữa các màn hình.

Edit Delete

Hình 9: Chuyển dịch giữa các màn hình.

13
1 6

Hình 10: Màn hình chính

14
 Mô tả các items trên màn hình chính
Bảng 1: Mô tả các items trên màn hình chính

TT Tên Loại Mô tả

1 Tên tab Action Hiển thị tên tab đang thao tác. Nếu Click
Bar một trong những tab ở mục số 5 thì tên tab
sẽ được cập nhật lại tương ứng

2 Tên ứng dụng Textview Chỉ hiển thị tên ứng dụng

3 Danh sách đ.kí Recycler Hiển thị thông tin người đăng kí
view
Danh sách được cập nhật liên tục theo dữ
liệu trên server

4 Mục trong danh Item Hiển thị thông tin người đăng kí. Nếu click
sách vào item thì item sẽ thay đổi nền để đánh
dấu đã giải quyết yêu cầu của sinh viên

Nếu long click item thì sẽ mở hộp thoại để


người dùng lựa chọn giữa việc xóa hoặc
sửa lại thông tin người dùng

5 Menu chuyển tab Menu Khi click vào tên tab, menu sẽ điều hướng
navigation đến tab tương ứng. Cập nhật lại tên tab ở
mục 1 và danh sách đăng kí ở mục 3

6 Tìm kiếm Menu Khi click vào biểu tượng tìm kiếm, bàn
phím sẽ xuất hiện. Người dùng nhập tên
sinh viên hoặc mã số sinh viên để tìm
kiếm. Mỗi lần nhập thêm 1 kí tự hệ thống
sẽ cập nhật kết quả tìm kiếm.

15
CHƯƠNG 3. KIỂM THỬ

Kiểm thử phần mềm là quá trình thực thi 1 chương trình với mục đích tìm ra
lỗi, giúp nhà phát triển đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và
đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đề đã đặt ra.

Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phần mềm,
điều này cho phép việc đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm. Bảng
2 cung cấp một số test case và kết quả đạt được khi test trên hệ thống

Bảng 2: Danh sách các test case

ID Tên TC Điều kiện Các bước Kỳ vọng Kết quả Đánh


giá

A, Register Service Tool

1 grammar N/A N/A Không có Không có OK


lỗi ngữ lỗi ngữ
pháp, chính pháp, chính
tả tả

2 Giao diện N/A N/A Kích thước Kích thước OK


các UI đúng các UI đúng
với yêu cầu với yêu cầu
đề ra ban đề ra ban
đầu đầu

3 Chuyển N/A Nhấn vào Dịch Dịch chuyển OK


giao giữa các tab để chuyển mượt mà
các màn chuyển qua mượt mà
hình lại

4 Không điền Đang thao Bước 1: Báo lỗi Báo lỗi OK


đầy đủ tác trên tab Điền thông ERR01 và ERR01 và

16
thông tin Bảng điểm tin vào các không cho không cho
vào các và đã tiến trường khác, gửi lên gửi lên
trường ở hành thanh để trống một server server
tab bảng toán phí dịch trương duy
điểm vụ thành nhất
công Bước 2:
Nhấn apply

Bước 3: Lặp
lại Bước 1
cho các
trường khác

5 Không Đang thao Bước 1: Báo lỗi Báo lỗi OK


điền đầy đủ tác trên tab Điền thông ERR01 và ERR01 và
thông tin Phúc tra và tin vào các không cho không cho
vào các đã tiến hành trường khác, gửi lên gửi lên
trường ở thanh toán để trống một server server
tab phúc phí dịch vụ trương duy
tra thành công nhất

Bước 2:
Nhấn apply

Bước 3: Lặp
lại Bước 1
cho các
trường khác

6 Không điền Đang thao Bước 1: Báo lỗi Báo lỗi OK


đầy đủ tác trên tab Điền thông ERR01 và ERR01 và
thông tin đăng kí thí tin vào các không cho không cho
vào các nghiệm và đã trường khác, gửi lên gửi lên
trường ở tiến hành để trống một server server

17
tab đăng kí thanh toán trương duy
thí nghiệm phí dịch vụ nhất
thành công Bước 2:
Nhấn apply

Bước 3: Lặp
lại Bước 1
cho các
trường khác

7 Gửi đăng Điền đúng Nhấn apply Thông báo Thông báo OK
kí đến form và đã gửi lên gửi lên
server thanh toán server thành server thành
công công

Gửi email Gửi email


thông báo thông báo
đăng kí đăng kí
thành công thành công

8 Gửi đăng Điền đúng Nhấn apply Không làm Không làm OK
kí đến form gì cả gì cả
server
nhưng
chưa thanh
toán phí

9 Điền thông Điền đầy đủ Nhập chuỗi Thông báo Không báo Not
tin đầy đủ form nhưng kí tự cho sai kiểu dữ gì cả good
nhưng sai kiểu dữ mục số điện liệu
không liệu thoại, nhập
đúng đinh tên vào ô ID
dạng

18
10 Gửi đăng Điền đúng Nhấn apply Hiện Hiện OK
kí đến form ERR02, ERR02,
server không cho không cho
nhưng gửi yêu cầu gửi yêu cầu
thanh toán
chưa đủ phí

B, Deparse Tool

11 Chọn sai Trên máy Chọn sai port Không gửi Không gửi OK
port để kết tính cắm rồi nhấn gì đến gì đến server
nối nhiều hơn 1 connect server
ngoại vi
dùng giao
tiếp serial

12 Phân tích Đã kết nối Chọn đúng Gửi kết quả Gửi kết quả OK
SMS phần cứng port rồi nhấn lên server lên server
banking connect
của viettel
money

13 Kết nối với N/A Chọn đúng Phát hiện ra Không phát Not
một bộ port rồi thiết bị là hiện ra good
phân tích connect giả và từ
dữ liệu tin chối kết nối
nhắn giả

14 Phân tích Đã kết nối Chọn đúng Kiểm tra Kiểm tra OK
SMS phần cứng port rồi nhấn định dạng định dạng
banking connect tin nhắn và tin nhắn và
của ngân không xử lý không xử lý
hàng khác nếu sai nếu sai

19
15 Phân tích Đã kết nối Chọn đúng Kiểm tra Kiểm tra OK
SMS phần cứng port rồi nhấn định dạng định dạng
banking connect tin nhắn và tin nhắn và
với nội hiện ERR03 hiện ERR03
dung
chuyển
khoản sai

C, Display data application

16 Tắt wifi N/A Mở app Không có Không có OK


trước khi data để hiển data để hiển
mở ứng thị thị
dụng

17 Xóa thông Tồn tại ít Long click Xóa thông Xóa thông OK
tin đăng kí nhất một vào tên sinh tin đăng kí tin đăng kí
của sinh sinh viên viên sau đó trên cả giao trên cả giao
viên đăng kí chọn delete diện lẫn diện lẫn
server server

18 Sửa thông Tồn tại ít Long click Cập nhật lại Cập nhật lại OK
tin đăng kí nhất một vào tên sinh thông tin thông tin
của sinh sinh viên viên sau đó đăng kí trên đăng kí trên
viên đăng kí chọn edit cả giao diện cả giao diện
lẫn server lẫn server

19 Hủy thao Tồn tại ít Long click Thao tác bị Thao tác bị OK
tác xóa và nhất một vào tên sinh hủy hủy
sửa sinh viên viên sau đó
đăng kí nhấn ra
ngoài

20 Tìm kiếm Tồn tại từ 5 Chạm vào Hiển thị Hiển thị OK

20
đăng kí đăng kí trở biểu tượng danh sách danh sách
lên tìm kiếm sau kết quả tìm kết quả tìm
đó nhập tên kiếm nếu có kiếm nếu có
hoặc ID bất

21
CHƯƠNG 4. KẾT LUẬN

Qua thời gian học tập và tự tìm hiểu, nghiên cứu dưới sự hướng dẫn của
thầy, chúng em đã học thêm được thêm nhiều kiến thức về hướng đối tượng và
thiết kế hướng đối tượng, được rèn luyện kỹ năng lập trình, thiết kế và kiểm thử
sản phẩm cũng như kỹ năng viết báo cáo.
Dù đã có nhiều cố gắng ôn lại các kiến thức đã được học tập từ trước, kết
hợp với tìm hiểu các tài liệu trên mạng và các tài liệu chuyên ngành nhưng do
hạn chế về mặt thời gian, kinh nghiệm và quá trình dịch bệnh nên các thành viên
chỉ có thể liên lạc với nhau qua internet nên báo cáo vẫn còn nhiều sai sót.
Chúng em đã rất nỗ lực để cố gắng hoàn thành tốt bài tập lớn lần này, cũng
mong nhận được sự góp ý từ phía thầy để có kinh nghiệm trong việc làm các bài
tập lớn các môn khác.
Do vốn kiến thức còn hạn chế nên trong báo cáo bài tập lớn của chúng em
chắc chắn sẽ không tránh khỏi những thiếu sót. Mặc dù đã cố gắng phần nào
thiết kế và tính toán chi tiết mạch, các thông số nhưng đôi khi sản phẩm còn
mang tính lý thuyết, chưa thực tế. Vì vậy, chúng em rất mong nhận được những
góp ý của thầy để báo cáo của chúng em có thể hoàn thiện hơn.
Lời cuối cùng, chúng em xin kính chúc thầy thật nhiều sức khỏe, hạnh
phúc và thành công.

22
PHỤ LỤC: TÀI LIỆU THAM KHẢO

A, Link code

- Register service tool:

https://github.com/PhamTrongPhung20182723/RegisterServiceTool/tree/master

- Deparse tool:
https://github.com/PhamTrongPhung20182723/DeparseTool/tree/master

- Display data application:

https://github.com/PhamTrongPhung20182723/DisplayDataApp/tree/master

- Microcontroller:

https://github.com/PhamTrongPhung20182723/DeparseTool/blob/main/
MODULE_SIM800L_SMS_1.ino

B, Tài liệu

[1]  P.P.Trong, “viblo.asia.com,” [Trực tuyến]. Available:


https://viblo.asia/p/firebase-la-gi-giai-thich-nhung-chuc-nang-co-ban-cua-
firebase-bWrZn0jQ5xw

[2]  Bài giảng và tài liệu của thầy Vũ Song Tùng

[3]  Microsoft, “C# tutorial” [Trực tuyến]. Available:


https://docs.microsoft.com/vi-vn/dotnet/csharp/

[4]  Google, “Android development guide” [Trực tuyến]. Available:


https://developer.android.com/guide.

C, Message Error

TT Tên Nội dung

1 ERR01 Điền đầy đủ thông tin vào tất cả các trường!!!

2 ERR02 Bạn chưa thanh toán đủ phí

3 ERR03 Nội dung chuyển khoản không chính xác

23
24

You might also like