Tại thư mục lib/app/locales/, bằng việc sử dụng package (thư viện)
Localization của Flutter, ứng dụng có thể hiển thị các nội dung chữ (label) ở nhiều ngôn ngữ khác nhau, các nội dung đó được định nghĩa trong các file
app_<language_code>.arb. Khi lập trình các giao diện, người lập trình sử
dụng các nội dung được định nghĩa trong các file này, thay vì gán cứng trong giao diện sẽ gây khó khăn cho việc chỉnh về sau. Trong hình dưới đây là 2 ngôn ngữ Vietnamese (app_en.arb) và English (app_vi.arb).
49
Hình 3.3. Các chuỗi được định nghĩa trong Tiếng Việt
50 3.3. Các màn hình chức năng
3.3.1. Đăng nhập
Để sử dụng được các chức năng khác có trong ứng dụng, trước hết người dùng cần định danh bản thân bằng việc đăng nhập. Với việc sử dụng dịch vụ Firebase Authentication, ứng dụng này sử dụng phương thức đăng nhập thông qua số điện thoại (OTP) để tăng tính bảo mật và loại bỏ việc phải nhớ mật khẩu cho người dùng.
Bước 1: Khởi động ứng dụng
51 Bước 2: Nhập số điện thoại và nhấn “Đăng nhập”. Màn hình xác thực Captcha sẽ hiện ra. Người dùng cần vượt qua màn hình captcha này để có thể tiếp tục.
52 Bước 3: Khi captcha được vượt qua, màn hình
hiển thị chờ người dùng nhập mã số OTP đã được gửi tới số điện thoại được nhập trước đó hiện lên. Người dùng cần kiểm tra hộp thư đến tin nhắn và nhập mã OTP vào ứng dụng.
Hình 3.7. Lỗi đăng nhập khi người dùng chưa có tài khoản trong hệ thống
53
54 3.3.2. Chức năng quản trị thông tin Sinh viên
Hình 3.10. Màn hình chính (home) của Người quản lý
3.3.2.1. Thêm thông tin hồ sơ sinh viên
Sinh viên khi nhập vào ở Ký túc xá sẽ được người quản lý nhập thông tin vào hệ thống, đồng thời chọn phòng cho sinh viên đó.
Người quản lý cần chọn Khu à Tầng à Phòng, sau đó nhập thông tin sinh viên cho phòng này.
55 Bước 1: Ở màn hình home, chọn mục Phòng, sau đó chọn phòng muốn thêm thông tin sinh viên
56 Bước 2: Chọn mục Sinh viên trong màn hình chờ của phòng
57 Bước 4: Chọn nút thêm ở góc trên-phải để mở màn hình thêm thông tin sinh viên
cho phòng hiện tại. Tiến hành nhập thông tin và nhấn Tiếp tục khi đã hoàn tất. Nếu số điện thoại đã được sinh viên khác sử dụng, một thông báo lỗi sẽ hiện lên.
58
59 3.3.2.2. Chuyển thông tin sinh viên sang phòng khác
Trong quá trình ở Ký túc xá, đôi khi sẽ có trường hợp phòng nào đó gặp sự cố và không thể ở được trong một thời gian, hoặc sinh viên mong muốn chuyển phòng, người quản lý có thể chuyển thông tin sinh viên từ phòng này sang một phòng khác trong hệ thống.
Bước 1: Tại màn hình sinh viên của phòng, chọn vào chi tiết sinh viên muốn
chuyển phòng. Hộp thoại quản trị thông tin sinh viên hiện lên, chọn Chuyển
phòng. Sau cùng, chọn phòng khác để chuyển thông tin sinh viên tới.
60
Hình 3.15. Chọn phòng mới cho sinh viên
Hình 3.16. Chuyển thông tin sinh viên thành công
61 3.3.2.3. Xóa thông tin sinh viên
Khi sinh viên không còn nhu cầu ở lại Ký túc xá, người quản lý có thể xóa thông tin hồ sơ của sinh viên để tránh những dữ liệu dư thừa không dùng tới.
Bước 1: Chọn vào chi tiết sinh viên của phòng, khi hộp thoại quản trị thông
62
Sau khi xóa thông tin hồ sơ sinh viên thành công.
63 3.3.3. Các chức năng quản trị thông tin Dịch vụ
Khi ở Ký túc xá, một phòng thường đi kèm với các dịch vụ như: điện, nước,
wifi… Người quản lý có thể cấu hình thêm/cập nhật thông tin của các dịch vụ
như tên, đơn giá theo thời điểm nhằm đáp ứng nhu cầu thực tế.
Bước 1: Tại màn hình home, chọn mục Dịch vụ.
64 Bước 2: Tại đây, người quản lý có thể chọn vào dịch vụ để quản trị, hoặc nhấn
65 3.3.4. Chức năng quản trị thông tin Tài sản
Trong Ký túc xá, ở mỗi phòng đều có sử dụng/gắn các tài sản ví dụ như:
Giường, bóng đèn điện, điều hòa, bồn lavabo…
Người quản lý có thể quản trị thông tin các tài sản như thêm/cập nhật thông tin, gán thông tin vào phòng/bỏ gán khỏi phòng.
3.3.4.1. Quản trị thông tin Danh mục tài sản Bước 1: Tại màn hình home, chọn mục Tài sản
66 Bước 2: Tại đây, người quản lý có thể nhấn giữ để chọn vào danh mục tài sản
muốn quản trị, hoặc nhấn nút thêm ở góc trên-phải để mở màn hình thêm thông tin danh mục tài sản (danh mục tài sản ở đây có nghĩa là nhóm các loại tài sản
lại với nhau theo mục đích sử dụng hoặc tính năng)
67 3.3.4.2. Quản trị thông tin Loại tài sản
Loại tài sản ở đây là những tài sản có cùng nhà cung cấp, cùng mẫu mã. Các loại tài sản cùng đặc tính thì nằm chung trong danh mục tài sản.
Bước 1: Khi nhấp vào thông tin danh mục tài sản, màn hình chi tiết các loại tài
sản sẽ hiện ra
Người quản lý có thể nhấn giữ lên mục muốn quản trị, hoặc nhấn nút thêm ở góc trên-phải để mở cửa sổ thêm thông tin loại tài sản.
68 3.3.4.3. Quản trị thông tin Mã tài sản
Mã tài sản là các tài sản đơn lẻ, cùng thuộc một loại tài sản. Mỗi mã tài sản sẽ được gán vào phòng nào đó để thể hiện việc phòng sử dụng tài sản.
Bước 1: Tại màn hình các loại tài sản, khi nhấp vào một loại tài sản, màn hình chi
tiết các mã tài sản của thuộc loại đó sẽ hiện ra
69 3.3.4.4. Gán/Gỡ thông tin Mã tài sản lên phòng
Bước 1: Tại màn hình các mã tài sản, chọn vào mã tài sản muốn quản trị. Khi màn hình quản trị thông tin mã tài sản hiện ra, chọn vào Gỡ/Gán thông tin.
70 Bước 2: Khi chọn Gán vào phòng, màn hình chọn phòng hiện ra, người quản lý
chọn phòng muốn gán để gán thông tin mã tài sản vào phòng mong muốn
71
Mã tài sản sau khi Gỡ khỏi phòng sẽ hiện dấu “?’ ngay dưới chuỗi mã tài sản (ght1 trong hình dưới).
Hình 3.25. Mã tài sản sau khi gỡ thông tin khỏi phòng
72 3.3.5. Chức năng quản trị thông tin Yêu cầu sửa chữa
Trong quá trình ở Ký túc xá sẽ không thể tránh khỏi những sự cố xảy ra trong một phòng, ví dụ khi hỏng bóng điện, hỏng ống nước…
Người quản lý và sinh viên đều có thể tạo thông tin yêu cầu sửa chữa thông qua ứng dụng để lưu lại trong hệ thống. Người quản lý dựa vào thông tin các yêu cầu để chuẩn bị phương án xử lý – chuẩn bị đồ nghề khi đến phòng giải quyết sự cố.
Bước 1: Tại màn hình sảnh chờ của một phòng, chọn mục Yêu cầu sửa
chữa/Các yêu cầu. tại đây các yêu cầu trước đó sẽ hiện ra. Người quản
lý/Sinh viên thuộc phòng có thể chọn vào mục muốn quản trị thông tin, hoặc nhấp vào nút thêm ở góc trên–phải để mở cửa sổ thêm thông tin yêu cầu sửa chữa cho phòng
73
Hình 3.28. Màn hình cập nhật thông tin yêu cầu sửa chữa
74 3.3.6. Chức năng quản trị thông tin Hóa đơn
Mỗi cuối tháng, người quản lý có nhiệm vụ đi tới từng phòng để ghi nhận thông tin các chỉ số điện nước, nhằm tổng hợp thông tin và ghi phiếu báo tiền dành cho mỗi phòng.
Người quản lý có thể tạo thông tin hóa đơn cho các phòng, chi tiết hóa đơn được tính dựa trên tổng đơn giá của các dịch vụ mà phòng đang sử dụng. Các dịch vụ “tịnh tiến” như điện, nước được ứng dụng tự động lấy thông
tin chỉ số cũ từ hóa đơn gần nhất, đảm bảo việc tự động hóa trong cách
sử dụng ứng dụng mà không cần tra cứu lại thông tin theo cách thủ công.
75 Bước 1: Tại màn hình sảnh chờ của một phòng, nhấp vào mục Thêm Hóa đơn. Nhập các thông tin cần thiết như: thời gian thu của hóa đơn, chỉ số
mới của dịch vụ, giảm giá dịch vụ, ghi chú... và nhấn dấu tích ở góc trên-
phải để lưu thông tin hóa đơn.
76
Sau khi thêm thông tin hóa đơn, có thể xem lại thông tin ở màn hình Hóa đơn tại sảnh chờ của phòng.
77 3.3.6.2. In thông tin hóa đơn
Thông tin hóa đơn sau khi được thêm vào phòng, có thể được in ra nhờ chức năng in của ứng dụng.
Bước 1: Tại màn hình các hóa đơn của một phòng, nhấp vào hóa đơn muốn
xem chi tiết. Khi màn hình chi tiết hóa đơn hiện ra, nhấp vào icon máy in ở góc trên-phải, thứ 2 từ phải qua để mở cửa sổ xem trước nội dung in.
78 3.3.6.3. Thêm thông tin thanh toán cho hóa đơn
Khi một hóa đơn được thêm thông tin vào phòng, người quản lý có thể thêm
thông tin thanh toán cho hóa đơn ấy. Chức năng nhằm giúp lưu thông tin khi
sinh viên nộp tiền cho hóa đơn.
Bước 1: Tại màn hình chi tiết của một hóa đơn, chọn thẻ Thông tin thanh
toán ở phần dưới màn hình. Tại đây chọn vào nút dấu cộng “+” để thêm thông
tin thanh toán cho hóa đơn. Mỗi thanh toán cần gán thông tin sinh viên (riêng lẻ) và số tiền muốn nộp.
79
Hình 3.33. Màn hình thêm thanh toán thành công
3.3.7. Chức năng quản trị Thông báo bảng tin
Khi sinh hoạt tại Ký túc xá, sẽ có trường hợp người quản lý cần gửi các thông báo đến toàn bộ sinh viên. Chức năng Bảng tin giúp người quản lý thêm/cập nhật thông tin các thông báo tới mọi người dùng trong hệ thống.
80 Bước 1: Tại màn hình home, chọn thẻ Bảng tin. Tại đây, chọn vào dấu
“…” của tin muốn quản trị, hoặc nhấn nút Soạn tin mới để thêm mới một tin
81
Nhờ việc sử dụng package Flutter Quill, ứng dụng cho phép người quản lý tạo các nội dung thông báo có nhiều định dạng, làm tăng tính thu hút, nhấn mạnh tới người đọc.
82 3.3.8. Chức năng xuất thông tin Excel
Các thông tin khi hiển thị trong ứng dụng tuy có tính trực quan, nhưng đối với việc thống kê thông tin hàng loạt/số lượng lớn thì giao diện điện thoại chưa đáp ứng được khả năng hiển thị tốt à Cần xuất thông tin cần thiết ra file excel để dễ dàng quan sát trên máy tính.
Bước 1: Tại màn hình home, chọn mục Báo cáo. Màn hình xuất thông tin
hiện ra, người dùng chọn vào mục muốn xuất và chờ ứng dụng tổng hợp thông tin để lưu lại dưới dạng file Excel
83 3.3.9. Chức năng thay đổi Giao diện sáng/tối
Bằng việc cấu hình các màu sắc cho 2 chế độ sáng/tối, ứng dụng giúp người dùng dễ dàng thay đổi giao diện để phù hợp với điều kiện ánh sáng, tránh gây mỏi hoặc nhức mắt.
Bước 1: Tại màn hình home, chọn thẻ Cá nhân. Màn hình thông tin cá
nhân hiện ra. Người dùng có thể chọn vào mục Giao diện để thay đổi màu sắc cho ứng dụng
84
85 CHƯƠNG 4. KẾT LUẬN
4.1. Kết quả đạt được
Xây dựng ứng dụng chạy trên 2 hệ điều hành di động phổ biến nhất hiện nay là Android và iOS, trong đó các chức năng đã hoàn thiện:
• Phía Người quản lí:
1. Quản trị được các thông tin: Dịch vụ, tài sản, sinh viên, hóa đơn, yêu cầu sữa chữa
2. Xuất thông tin báo cáo về: Sinh viên, hóa đơn, tài sản 3. Tạo thông báo broadcast tới toàn bộ sinh viên
• Phía Sinh viên:
1. Xem được các thông tin: Dịch vụ, tài sản, sinh viên cùng phòng, hóa đơn của phòng đang ở, yêu cầu sửa chữa
2. Xem thông báo broadcast được gửi từ Người quản lý 3. Tạo và cập nhật được thông tin của các Yêu cầu sửa chữa.
4.2. Hạn chế còn tồn đọng
Mặc dù có cơ hội tiếp cận Flutter từ trước đó, tuy nhiên với các chức năng trong ứng dụng có yêu cầu độ phức tạp tương đối, việc xây dựng ứng dụng này trải qua không ít khó khăn. Trong đó, hạn chế về kinh nghiệm thực tế là rào cản lớn khiến tôi chưa thể thực sự hoàn thành sản phẩm một cách trọn vẹn. Có thể kể đến một số hạn chế của ứng dụng:
- Giao diện: Do bản thân không có nhiều năng khiếu về thiết kế, dẫn tới
thiết kế của ứng dụng có giao diện chưa thật sự “thoáng”, vẫn còn những nơi giao diện bị cứng nhắc, khô khan và thiếu tính sáng tạo, mang nhiều thiên hướng của một ứng dụng hệ thống hơn là dành cho người dùng phổ thông
86
- Bảo mật: Mặc dù đã sử dụng Security Rules, tuy nhiên vẫn còn một số
trường hợp cần lưu ý như kiểm tra, ràng buộc dữ liệu khi được thêm vào, xóa đi. Vì FireStore không phải một CSDL có cấu trúc quan hệ như SQL, việc ràng buộc các trường dữ liệu hoàn toàn do người lập trình định nghĩa trong quá trình coding (xây dựng ứng dụng) và kết hợp với Security Rules
- Thiếu chức năng: Do thời gian có hạn cùng chưa tích lũy được nhiều
kinh nghiệm, ứng dụng chỉ dừng lại ở việc cho phép Người quản lí có thể quản trị được các thông tin cơ bản, và Sinh viên dừng lại ở việc xem và cập nhật một số thông tin nhất định. Một số chức năng còn thiếu có thể kể đến như: Xem màn hình thống kê – cho phép xuất nhiều thông tin
hơn, cho phép sinh viên thanh toán hóa đơn thông qua e-banking, chưa có thông báo đẩy (push notification), ...
4.3. Hướng phát triển trong tương lai
Hiện nay các trường đại học hầu hết chưa phổ biến các phần mềm di động dành cho sinh viên trong việc quản lí thông tin Ký túc xá, hoặc đã triển khai nhưng ứng dụng chưa đạt hiệu quả do còn nhiều lỗi trong quá trình vận hành.
Đây cũng là một tiềm năng cho ứng dụng này - BVU Dormitory có thể
được tiếp tục phát triển trong tương lai, với mục đích tăng tính ổn định trên môi trường thực tế cho sản phẩm, thêm các tính năng đầy đủ hơn và hướng tới những thay đổi nhất định trong quy trình vận hành nhằm thương mại hóa.
87 TÀI LIỆU THAM KHẢO
1. Flutter Firestore
https://firebase.flutter.dev/docs/firestore/usage/
2. Firestore Atomic Transaction
https://firebase.google.com/docs/firestore/manage-data/transactions
3. Firestore Security Rules
https://firebase.google.com/docs/firestore/security/get-started https://firebase.google.com/docs/firestore/security/rules-conditions https://firebase.google.com/docs/firestore/security/rules-fields
4. Firebase Phone Authentication
https://firebase.flutter.dev/docs/auth/phone/