2.4.1. Chức năng kế thừa từ hệ thống SMS Gateway
2.4.1.1. Chức năng kết nối, ngắt kết nối
Thực hiện mở cổng giao tiếp với tham số giao tiếp nối tiếp xác định. Sau khi ngắt kết nối, hệ thống sẽ đóng cổng giao tiếp và giải phóng cổng.
2.4.1.2. Chức năng gửi tin nhắn
Chức năng này cho phép hệ thống gửi một tin nhắn văn bản (nội dung câu hỏi/đáp án) đến một thiết bị di động của người học thông qua phương thức SendSMS trong thư viện Mcore.
2.4.2. Chức năng đăng ký số điện thoại
Mỗi một người học sẽ đăng ký một số điện thoại để hệ thống lưu trữ trong cơ sở dữ liệu.
Người học đăng ký số điện thoại của mình bằng cách nhắn tin tới hệ thống yêu cầu đăng ký số điện thoại với thông tin là mã sinh viên của mình bằng cách soạn tin: DK [ ] MaSV tới hệ thống. Hệ thống gửi phản hồi thông báo đăng ký thành công hay thất bại thông qua tin nhắn SMS đến số điện thoại người dùng. Nếu thành công, số điện thoại của người đăng ký sẽ được lưu vào cơ sở dữ liệu để khi cần kiểm tra người dạy sẽ gửi đề thi tới số điện thoại đã đăng ký của người học.
2.4.3. Chức năng hủy số điện đã đăng ký
Nếu sinh viên muốn hủy số điện thoại đã đăng ký thì soạn tin: HUY [ ] MaSV. Hệ thống sẽ phản hồi thông báo hủy số điện thoại thành công hay thất bại bằng cách gửi tin nhắn SMS đến số điện thoại người dùng đã yêu cầu.
2.4.4. Chức năng kiểm tra
Khi tiến hành kiểm tra, người dạy học gửi câu hỏi kiểm tra tới người học thông qua hệ thống. Người học nhận câu hỏi sẽ thực hiện gửi tin nhắn trả lời câu hỏi theo cú pháp đã quy định. Hệ thống nhận được tin nhắn trả lời của người học thì sẽ lưu lại vào cơ sở dữ liệu để người dạy học xem kết quả làm bài của người học.
- Cú pháp tin nhắn trả lời câu hỏi như sau:
Khi nhận được câu hỏi từ hệ thống, người học sẽ trả lời theo cú pháp tin nhắn sau: TL X [ ] Y, trong đó: X là thứ tự câu hỏi, Y là phương án trả lời câu hỏi đó.
- Kịch bản tiến hành kiểm tra.
Khi muốn thực hiện kiểm tra học viên, giáo viên tiến hành kiểm tra qua hệ thống nhắn tin SMS theo kịch bản kiểm tra được trình bày ở bảng 2.2:
Bảng 2.1. Bảng mô tả kịch bản thực hiện kiểm tra qua tin nhắn SMS.
Sự kiện Ví dụ
1 Hệ thống gửi câu hỏi tới người học.
1) Để thoát khỏi một chương trình trong Windows, ta thường dùng tổ hợp phím nóng nào? A) Alt + F4 B) Ctrl + F4 C) Shift + F4 D) Tất cả đều sai 2 Người học gửi tin nhắn trả lời
theo cú pháp quy định: TL (cách) thứ tự câu hỏi (dấu cách) phương án trả lời.
Giả sử người học chọn phương án A thì sẽ soạn tin theo cú pháp: TL (cách) 1 (cách) A và gửi tới tổng đài.
3 Hệ thống xử lý tin nhắn và lưu thông tin vào cơ sở dữ liệu.
2.4.5. Chức năng cập nhật câu hỏi kiểm tra
Chức năng này cho phép người dạy học có thể thêm, sửa hoặc xóa các câu hỏi kiểm tra trong cơ sở dữ liệu sao cho phù hợp với chương trình học.
2.4.6. Chức năng báo cáo kết quả
Sau khi thực hiện kiểm tra xong, người dạy học có thể yêu cầu hệ thống cho xem kết quả trả lời của mỗi học viên theo từng môn học hoặc lịch sử gửi tin nhắn của mình. Chức năng “Báo cáo kết quả” sẽ thực hiện nhiệm vụ truy xuất kết quả trong sơ sở dữ liệu để đưa ra cho người dạy xem.
2.5. Phân tích và thiết kế chức năng hệ thống
2.5.1. Xây dựng biểu đồ phân cấp chức năng
Qua việc phân tích chức năng của hệ thống ta xây dựng được biểu đồ phân cấp chức năng biểu diễn trong hình 2.2:
Hình 2.2. Biểu đồ phân cấp chức năng.
2.5.2. Xây dựng biểu đồ luồng dữ liệu
2.5.2.1. Xây dựng biểu đồ luồng dữ liệu mức khung cảnh
Hình 2.3. Biểu đồ luồng dữ liệu mức khung cảnh.
Mô tả biểu đồ:
+ Để có thể thực hiện bài kiểm tra, người học cần phải nhắn tin đăng ký số điện thoại của mình, gửi tới hệ thống. Khi nhận được tin nhắn đăng ký của người học, hệ thống sẽ tự động gửi thông báo tới người học.
+ Khi muốn hủy số điện thoại đã đăng ký, người học cần nhắn tin hủy đăng ký tới hệ thống. Sau khi xóa số điện thoại đã đăng ký của người học, hệ thống sẽ tự động thông báo cho người học biết.
+ Khi thực hiện kiểm tra, hệ thống sẽ gửi câu hỏi tới người học, người học sẽ nhắn tin theo cú pháp quy định trước gửi tới hệ thống để trả lời câu hỏi.
● Tương tác giữa người dạy với hệ thống bao gồm:
+ Người dạy học sẽ gửi tới hệ thống câu hỏi kiểm tra phù hợp với chương trình học để hệ thống lưu vào cơ sở dữ liệu. Khi thực hiện kiểm tra, hệ thống sẽ lấy câu hỏi trong cơ sở dữ liệu để gửi tới người học.
+ Khi người dạy đưa ra yêu cầu xem lịch sử hay kết quả kiểm tra, hệ thống sẽ đưa ra thông tin mà người dạy yêu cầu.
2.5.2.2. Xây dựng biểu đồ luồng dữ liệu mức đỉnh
Hình 2.4. Biểu đồ luồng dữ liệu mức đỉnh.
Mô tả biểu đồ:
+ Khi người học gửi tin nhắn đăng ký số điện thoại tới hệ thống, chức năng “Đăng ký số điện thoại” của hệ thống sẽ tiếp nhận xử lý tin nhắn. Sau khi xử lý và lưu trữ số điện thoại của người học vào cơ sở dữ liệu, chức năng này sẽ phải tự động gửi thông báo tới người học.
+ Tin nhắn hủy số điện thoại đã đăng ký của người học gửi đến sẽ được chức năng “Hủy số điện thoại đã đăng ký” của hệ thống xử lý. Sau khi xóa số điện thoại đã đăng ký của người học, chức năng “Hủy số điện thoại đã đăng ký” sẽ gửi lại thông báo cho người học.
+ Chức năng “Cập nhật đề kiểm tra” thực hiện nhiệm vụ tiếp nhận câu hỏi mà người dạy học gửi tới hệ thống và lưu trữ vào cơ sở dữ liệu. Sau khi nhận câu hỏi, chức năng này sẽ thông báo lại người dạy đã nhậ câu hỏi.
+ Khi người dạy học đưa ra yêu cầu kiểm tra người học, chức năng “Kiểm tra” sẽ lấy câu hỏi trong cơ sở dữ liệu theo yêu cầu của người dạy và gửi đến người học. Khi người học gửi câu trả lời tới hệ thống, chức năng “Kiểm tra” nhận và lưu lại kết quả.
+ Sau khi kiểm tra xong, người dạy học có thể yêu cầu hệ thống cho xem kết quả làm bài của người học. Chức năng “Báo cáo kết quả” của hệ thống sẽ tự động lấy kết quả trong cơ sở dữ liệu và xuất ra màn hình cho người dạy học xem.
2.6. Thiết kế mô hình cơ sở dữ liệu
2.6.1. Xác định các thực thể
Qua việc phân tích hệ thống tương tác giữa người dạy với người học qua tin nhắn SMS ở trên ta thấy hệ thống cần lưu trữ những thực thể bao gồm các thuộc tính sau đây:
+ Sinh viên gồm các thuộc tính: Mã sinh viên, Họ tên sinh viên, Mã lớp. + Kết quả đăng ký gồm các thuộc tính: Mã sinh viên, Mã môn học, Mã đăng ký, Ngày đăng ký, Cải thiện.
+ Sinh viên_Số điện thoại gồm các thuộc tính: Mã sinh viên, Số điện thoại.
+ Câu hỏi kiểm tra gồm các thuộc tính: Mã câu hỏi, Mã môn học, Nội dung câu hỏi, Đáp án A, Đáp án B, Đáp án C, Đáp án D, Đáp án đúng.
+ Chi tiết kiểm tra gồm các thuộc tính: Mã môn học, Mã câu hỏi, Nội dung câu hỏi, Số điện thoại nhận, Thời gian gửi.
+ Kết quả kiểm tra gồm các thuộc tính: Mã sinh viên, Số điện thoại, Nội dung trả lời, Kết quả, Thời gian trả lời.
+ Tin nhắn xử lý gồm các thuộc tính: Số điện thoại, Nội dung, Ngày tháng, Trạng thái.
2.6.2. Mô hình thực thể liên kết
- Mối quan hệ giữa các thực thể:
+ Mối quan hệ giữa thực thể Sinh viên và thực thể Sinh viên_Số điện thoại là quan hệ 1-n (một - nhiều), tức là: Mỗi số điện được đăng ký bởi một sinh viên. Mỗi sinh viên có thể đăng ký nhiều số điện thoại khác nhau.
+ Mối quan hệ giữa thực thể Sinh viên và thực thể Kết quả đăng ký là quan hệ 1-n (một – nhiều): Mỗi kết quả đăng ký chỉ do một sinh viên đăng ký. Mỗi sinh viên có thể đăng ký một hay nhiều môn học nên có thể có một hay nhiều kết quả đăng ký khác nhau.
+ Mối quan hệ giữa thực thể Sinh viên_Số điện thoại và thực thể Tin nhận xử lý là quan hệ 1-n (một - nhiều), tức là: Mỗi tin nhắn chỉ do một số điện thoại gửi đến hệ thống. Mỗi sinh viên có thể gửi nhiều tin nhắn đến hệ thống bằng số điện thoại của mình.
+ Mối quan hệ giữa thực thể Câu hỏi kiểm tra và thực thể Chi tiết kiểm tra là quan hệ 1-n (một – nhiều): Mỗi câu hỏi kiểm tra có nhiều chi tiết kiểm
tra (mỗi câu hỏi được gửi nhiều lần, cho nhiều người). Mỗi chi tiết kiểm tra chỉ chứa một câu hỏi kiểm tra.
+ Mối quan hệ giữa thực thể Sinh viên_Số điện thoại và thực thể Chi tiết kiểm tra là quan hệ 1-n (một – nhiều): Mỗi số điện thoại có nhiều chi tiết kiểm tra (vì mỗi sinh viên thực hiện nhiều bài kiểm tra). Mỗi chi tiết kiểm tra chỉ do một số điện thoại thực hiện.
+ Mối quan hệ giữa thực thể Sinh viên_Số điện thoại và thực thể Kết quả kiểm tra là quan hệ 1-n (một - nhiều): Mỗi số điện thoại có nhiều kết quả kiểm tra (vì mỗi sinh viên thực hiện nhiều bài kiểm tra nên có nhiều kết quả). Mỗi kết quả kiểm tra chỉ do một số điện thoại gửi đến.
- Mô hình thực thể liên kết:
Từ việc xác định mối quan hệ giữa các thực thể ta có mô hình thực thể liên kết như hình 2.5:
Hình 2.5. Mô hình thực thể liên kết.
2.6.3. Thiết kế cơ sở dữ liệu
Để quản lý dữ liệu và thông tin của hệ thống cần xây dựng cơ sở dữ liệu như sau:
a) Bảng SinhVien
Mô tả: Bảng SinhVien (Sinh viên) – trình bày ở bảng 2.2, lưu trữ thông tin của sinh viên bao gồm: MaSV (mã sinh viên), HoTenSV (họ tên sinh viên), Malop (Mã lớp).
Bảng 2.2. Bảng lưu trữ thông tin sinh viên. tbl_SinhVien
Tên trường Kiểu dữ liệu Kích thước Ghi chú
MaSV varchar 50 Mã sinh viên
HoTenSV nvarchar 200 Họ tên sinh viên
b) Bảng KQDK
Mô tả: Bảng KQDK (Kết quả đăng ký) – trình bày ở bảng 2.3, lưu trữ thông tin các môn học mà sinh viên đăng ký bao gồm: MaSV (mã sinh viên), MaMH (mã môn học), MaDK (mã đăng ký), NgayDK (ngày đăng ký), CAITHIEN (cải thiện – thể hiện môn học là đăng ký mới hay cải thiện điểm).
Bảng 2.3. Bảng lưu trữ kết quả đăng ký. tbl_KQDK
Tên trường Kiểu dữ liệu Kích thước Ghi chú
Guid varchar 50 Guid
MaSV varchar 50 Mã sinh viên
MaMH varchar 50 Mã môn học
MaDK varchar 50 Mã đăng ký
NgayDK datetime Ngày đăng ký
CAITHIEN bit Cải thiện
c) Bảng SinhVien_SDT
Mô tả: Bảng SinhVien_SDT (Số điện thoại sinh viên) – trình bày ở bảng 2.4, lưu trữ số điện thoại cá nhân của từng sinh viên bao gồm: MaSV (mã sinh viên), SoDT (số điện thoại cá nhân của sinh viên).
Bảng 2.4. Bảng lưu trữ số điện thoại sinh viên. tbl_SinhVien_SDT
Tên trường Kiểu dữ liệu Kích thước Ghi chú
MaSV Varchar 50 Mã sinh viên
SoDT Char 11 Số điện thoại
d) Bảng CauHoi
Mô tả: Bảng CauHoi (Câu hỏi) – trình bày ở bảng 2.5, lưu trữ các câu hỏi kiểm tra, bảng CauHoi bao gồm các trường: MaCH (mã câu hỏi), MaMH (mã môn học), Noidung (nội dung câu hỏi), DA1 (phương án trả lời thứ nhất),
DA2 (phương án trả lời thứ hai), DA3 (phương án trả lời thứ 3), DA4 (phương án trả lời thứ 4), DAD (phương án đúng).
Bảng 2.5. Bảng lưu trữ câu hỏi kiểm tra. tbl_CauHoi
Tên trường Kiểu dữ liệu Kích thước Ghi chú
MaCH varchar 50 Mã câu hỏi
MaMH varchar 10 Mã môn học
Noidung nvarchar 500 Nội dung câu hỏi
DA1 nvarchar 500 Đáp án A DA2 nvarchar 500 Đáp án B DA3 nvarchar 500 Đáp án C DA4 nvarchar 500 Đáp án D DAD nvarchar 500 Đáp án đúng e) Bảng CTKT
Mô tả: Bảng CTKT (chi tiết kiểm tra) - trình bày ở bảng 2.6, lưu trữ thông tin khi thực hiện kiểm tra. Bảng CTKT bao gồm: MaMH (mã môn học), MaCH (mã câu hỏi), Noidung (nội dung câu hỏi), SoDT (số điện thoại nhận câu hỏi), TGgui (thời gian gửi tin nhắn).
Bảng 2.6. Bảng lưu trữ chi tiết kiểm tra. tbl_CTKT
Tên trường Kiểu dữ liệu Kích thước Ghi chú
MaMH varchar 50 Mã môn học
MaCH varchar 50 Mã câu hỏi
Noidung nvarchar 500 Nội dung câu hỏi SoDT nvarchar 20 Số điện thoại nhận câu hỏi TGgui nvarchar 50 Thời gian gủi tin nhắn
f) Bảng KetQua
Mô tả: Bảng KetQua (kết quả kiểm tra) – trình bày ở bảng 2.7, lưu trữ kết quả trả lời của sinh viên. Bảng KetQua bao gồm: MaKQ (mã kết quả - mã câu trả lời), MaCauHoi (mã câu hỏi kiểm tra), SoDT (số điện thoại của sinh viên trả lời câu hỏi), NoidungTL (nội dung câu trả lời), Ketqua (trạng thái thể hiện trả lời đúng hay sai), TGTL (thời gian nhận câu trả lời của sinh viên).
Bảng 2.7. Bảng lưu trữ kết quả kiểm tra. KetQua
Tên trường Kiểu dữ liệu Kích thước Ghi chú
MaKQ varchar 50 Mã câu trả lời
MaCH varchar 50 Mã câu hỏi
SoDT nvarchar 20 Số điện thoại
NoidungTL nvarchar 500 Nội dung câu trả lời Ketqua char 1 Tính đúng/sai của câu trả lời
TGTL nvarchar 50 Thời gian nhận câu trả lời g) Bảng TinNhanXuLy
-Mô tả: Bảng TinNhanXuLy (Tin nhận xử lý) – trình bày ở bảng 2.8, lưu trữ thông tin tin nhắn do người bình chọn gửi đến, bao gồm SoDT (Số điện thoại gửi tin nhắn), Noidung (Nội dung tin nhắn), NgayThang (Thời gian gửi tin nhắn), TrangThai (Trang thái tin nhắn, thể hiện tin nhắn được xử lý hay chưa).
Bảng 2.8. Bảng lưu trữ tin nhắn xử lý. TinNhanXuLy
Tên trường Kiểu dữ liệu Kích thước Ghi chú
IDTNXL bigint ID
SoDT char 20 Số điện thoại
NoiDung nvarchar 500 Nội dung
NgayThang datetime Ngày tháng
CHƯƠNG 3.
XÂY DỰNG PHẦN MỀM 3.1. Giới thiệu công cụ triển khai
3.1.1. Giới thiệu về ngôn ngữ C Sharp (C#)
● Giới thiệu về nền tảng . NET
.NET là một nền tảng chứ không phải là một sản phẩm đơn lẻ .NET được định nghĩa dưới dạng một khung ứng dụng. .NET cung cấp một khung cho những ứng dụng nào được xây dựng. Nó xác định những ứng dụng truy nhập các hàm như thế nào qua các hệ thống và các mạng. .Net cung cấp một nền tảng mà trên đó các giải pháp và các dịch vụ Web có thể được xây dựng, một nền tảng giải phóng những sự ràng buộc và tự bản thân nó giải phóng khỏi Microsoft Windows. Nói cách khác, .NET là một cách để xây dựng các ứng dụng và các dịch vụ mà nó hoạt động không phụ thuộc vào một nền tảng nào. Đây là một cách để tạo ra các trao đổi thông tin (truyền thông) giữa những hệ thống đa dạng và các ứng dụng cũng như tích hợp nhiều thiết bị vào trong việc trao đổi thông tin này.
.NET gồm có hai phần: Framework và Integrated Development Environment (IDE). Framework cung cấp tất cả những gì cần thiết căn bản. Chữ Framework có nghĩa là cái Khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc trôi chảy. Còn IDE cung cấp một môi trường giúp ta triển khai dễ dàng, nhanh chóng hơn. Framework là quan trọng nhất, còn IDE bất quá chỉ là một công cụ gắn lên phía trên Framework thôi.
● Giới thiệu ngôn ngữ lập trình C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft, chỉ bao gồm dấu số thường. Microsoft
phát triển C# dựa trên C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo từ nền tảng phát triển hơn. Microsoft bắt đầu với công việc trong C và C++ và thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn. Nhiều trong số những đặc tính này khá giống với nhưng đặc tính có trong ngôn ngữ Java. Không dừng lại ở đó, Microsoft đưa ra một số mục đích khi xây dựng ngôn ngữ này. Những mục đích này được tóm tắt như sau:
+ C# là ngôn ngữ đơn giản.
Vì C# loại bỏ một vài sự phức tạp của những ngôn ngữ như Java và C+