Bối cảnh và vấn đề nghiên cứu
Tại Việt Nam, phần lớn các cơ sở bán lẻ dược phẩm quy mô vừa và nhỏ vẫn duy trì phương thức quản lý thủ công thông qua sổ sách ghi chép tay hoặc sử dụng các công cụ văn phòng rời rạc như Microsoft Word và Microsoft Excel. Thực trạng này phát sinh nhiều bất cập trong quá trình vận hành: khó khăn trong việc tra cứu vị trí và công dụng thuốc, khó kiểm soát hạn sử dụng dẫn đến nguy cơ thuốc hết hạn không được xử lý kịp thời, không nắm bắt chính xác số lượng tồn kho để lập kế hoạch nhập hàng, cũng như dễ xảy ra sai sót khi tính toán doanh thu và đối soát sổ sách thu chi định kỳ.
Nhằm giải quyết các hạn chế trên, đề tài "Xây dựng phần mềm bán thuốc tây" (Báo cáo Dự án 1) được thực hiện bởi nhóm sinh viên chuyên ngành Ứng dụng phần mềm thuộc Trường Cao đẳng FPT Polytechnic dưới sự hướng dẫn của giảng viên Đặng Quang Minh. Nghiên cứu đặt ra 3 mục tiêu cụ thể:
- Nhanh chóng và hiệu quả: Số hóa toàn bộ thao tác quản lý và giao dịch trên máy tính, rút ngắn thời gian xử lý đơn hàng và giảm thiểu thời gian chờ đợi của khách hàng.
- Chính xác và đầy đủ: Đảm bảo việc cập nhật thông tin thuốc, giá bán, hóa đơn và dữ liệu tồn kho được thực hiện chính xác, loại bỏ nhầm lẫn do ghi chép giấy tờ thủ công.
- Dễ dàng quản lý: Cho phép người quản lý tra cứu kho dữ liệu tức thì, theo dõi xuất nhập tồn, quản lý thu chi và lập báo cáo tài chính một cách đồng bộ.
Đối tượng nghiên cứu của đề tài là quy trình nghiệp vụ quản lý bán lẻ dược phẩm (quản lý danh mục thuốc, quản lý lô - hạn dùng, quy trình bán hàng, nhập hàng, đổi trả hàng và quản lý tài chính thu chi). Phạm vi áp dụng của phần mềm hướng tới các cửa hàng, quầy thuốc bán lẻ có quy mô vừa và nhỏ.
Cơ sở lý thuyết và phương pháp
Quy trình phát triển phần mềm
Dự án áp dụng mô hình phát triển phần mềm dạng Thác nước (Waterfall Model) được công bố bởi Tiến sĩ Winston W. Royce vào năm 1970. Mô hình này vận hành theo quy trình tuyến tính tuần tự qua các giai đoạn độc lập: khảo sát hiện trạng, phân tích yêu cầu, thiết kế cơ sở dữ liệu, phân tích hệ thống, lập trình, kiểm thử và tổng kết chuyển giao. Mô hình được lựa chọn do đề tài đã xác định rõ ràng yêu cầu nghiệp vụ và lộ trình chức năng ngay từ giai đoạn khởi tạo.
Phương pháp khảo sát và nguồn dữ liệu thực tế
Nhóm nghiên cứu thu thập dữ liệu thông qua phương pháp phỏng vấn trực tiếp chủ cơ sở và khảo sát quy trình vận hành thực tế tại 2 nhà thuốc trên địa bàn quận Nam Từ Liêm, Hà Nội:
- Nhà thuốc Bình An (Địa chỉ: 166 Nguyễn Đổng Chi, Cầu Diễn, Nam Từ Liêm, Hà Nội - Đại diện: Chú An): Cơ sở quy mô 1 điểm bán tại nhà, ghi chép sổ tay, phân loại thuốc theo kệ và hủy thuốc hết hạn định kỳ mỗi tháng; bán thuốc theo đơn hoặc tư vấn bệnh nhẹ; đổi trả hàng nguyên hộp trong ngày; tổng hợp thu chi hàng tối và tính lợi nhuận theo tháng.
- Nhà thuốc Ngọc Vân 2 (Địa chỉ: Số 3 Nguyễn Đổng Chi, Cầu Diễn, Nam Từ Liêm, Hà Nội - Đại diện: Chị Vân): Cơ sở sử dụng Excel để lưu trữ danh mục thuốc và theo dõi đơn nhập - xuất; kiểm tra hạn dùng hàng tuần; chính sách đổi trả trong vòng 2 ngày đối với sản phẩm nguyên vẹn; có nhu cầu quản lý chi tiết thông tin thuốc, thay đổi giá trực tiếp và kết xuất thống kê doanh số theo tháng/năm.
Cơ sở thiết kế hệ thống và dữ liệu
Hệ thống được chuẩn hóa dữ liệu quan hệ theo các cấp độ 1NF (loại bỏ thuộc tính đa trị và nhóm lặp, xác định khóa chính) và 2NF (tách các thuộc tính không phụ thuộc đầy đủ vào khóa chính thành các bảng chi tiết giao dịch). Mô hình hóa hệ thống sử dụng các chuẩn UML gồm sơ đồ Thực thể - Mối quan hệ (ERD), sơ đồ Use Case (Use Case Diagram), sơ đồ Hoạt động (Activity Diagram) và sơ đồ Lớp (Class Diagram).
Thiết kế và triển khai hệ thống
Môi trường vận hành và ràng buộc kỹ thuật
Hệ thống được thiết kế dưới dạng ứng dụng máy tính cục bộ (Desktop Application) không phụ thuộc vào kết nối Internet, đáp ứng các tiêu chuẩn kỹ thuật:
| Thành phần |
Yêu cầu kỹ thuật |
| Ngôn ngữ lập trình |
Java (JDK 8 trở lên) |
| Công nghệ giao diện |
Java Swing |
| Hệ quản trị CSDL |
Microsoft SQL Server 2012 trở lên (RDBMS) |
| Hệ điều hành |
Windows XP trở lên hoặc macOS X 10.8 trở lên |
| Phần cứng tối thiểu |
RAM tối thiểu 1GB, CPU Pentium V trở lên |
| Công cụ phát triển |
NetBeans, Figma, Draw.io (App diagram), GitHub, SQL Server Management Studio |
Thiết kế cơ sở dữ liệu quan hệ
Sau quá trình chuẩn hóa 1NF và 2NF, hệ thống xây dựng cấu trúc gồm 18 bảng dữ liệu nhằm đảm bảo tính toàn vẹn và tối ưu hóa truy vấn:
NhomThuoc (ID_NhomThuoc, TenNhom, TrangThai)
DonViTinh (ID_DonVitinh, Ten_DVT, TrangThai)
TuThuoc (ID_Tu, Ten_Tu, TrangThai)
NhaCungCap (ID_NhaCC, Ten_NCC, SDT_NCC, Email_NCC, DiaChi_NCC, NgayTao, TrangThai)
NguoiDung (Ma_ND, Ten_ND, Sdt, Email_ND, VaiTro, MatKhau, TrangThai)
Thuoc (ID_Thuoc, Ten_Thuoc, ID_DVT, CachDung, HamLuong, HoatChat, DongGoi, NoiSanXuat, ID_NhomThuoc, TrangThai)
ThuocChiTiet (Ma_Thuoc, ID_Thuoc, ID_NhaCC, ID_Tu, HanSuDung, GiaNhap, GiaBan, SoLuongTon, TrangThai)
KhachHang (SDT_KH, Ten_KH, Email_KH, DiaChi)
HoaDonNhap (ID_HDN, ID_NhaCC, TongTienHang, NgayLap_HD, NguoiTao)
HDN_CT (ID_HDN, ID_Thuoc, SoLuong, GiaNhap, HanSuDung)
HoaDonBan (ID_HDB, SDT_KH, TongTien, NgayLap_HD, NguoiTao)
HDB_CT (ID_HDB, Ma_Thuoc, SoLuong, GiaBan)
HoaDonTraHang (ID_HDTH, ID_HDB, TienCanTra, NgayLap_HD, NguoiTao, MoTa)
PhieuThu (Ma_PT, NgayThu, NguoiThu, TienThu)
PhieuThuCT (Ma_PT, ID_HDB, HDB_Tien)
PhieuChi (Ma_PC, NgayLapPC, NguoiLap, TienNhapThuoc, TienTraHang, TongTienChi)
PCTraThuocCT (Ma_PC, ID_HDTH, HDTH_Tien)
PCNhapHangCT (Ma_PC, ID_HDN, HDN_Tien)
Phân quyền người dùng và kiểm thử
Hệ thống thiết lập ma trận phân quyền dựa trên 2 vai trò chính:
- Quản lý (Admin): Toàn quyền truy cập tất cả các chức năng của hệ thống (quản lý tài khoản người dùng, thiết lập giá bán, quản lý danh mục thuốc, nhà cung cấp, khách hàng, tủ thuốc, nhóm thuốc, đơn vị tính, lập/xem phiếu thu - chi và xem báo cáo thống kê doanh thu theo tháng/năm).
- Nhân viên: Quyền hạn giới hạn trong việc xem và tìm kiếm thông tin thuốc, tạo và tra cứu hóa đơn bán hàng, lập hóa đơn đổi trả hàng, lập phiếu nhập hàng và tra cứu thông tin khách hàng/nhà cung cấp.
Nội dung chính theo từng chương
Phần I: Giới thiệu đề tài – hệ thống
Phần này trình bày lý do lựa chọn đề tài xuất phát từ nhu cầu thực tiễn của các quầy thuốc vừa và nhỏ. Nội dung bao gồm quy ước văn bản, bảng giải thích thuật ngữ chuyên ngành (Coder, Tester, Designer, 1NF, 2NF, 3NF, ERD, Use Case, Activity Diagram, Class Diagram), mục tiêu và cấu trúc tài liệu. Trọng tâm của phần này là toàn bộ kết quả khảo sát thực tế tại Nhà thuốc Bình An và Nhà thuốc Ngọc Vân 2, từ đó phân tích các nghiệp vụ then chốt: quản lý danh mục thuốc, quản lý hạn sử dụng, quy trình nhập - bán thuốc, quy trình đổi trả hàng và quản lý doanh thu. Nhóm thiết lập cơ cấu nhân sự gồm 3 thành viên (Nguyễn Quang Thìn - Trưởng nhóm/Back-end/Database; Phan Hà Quân - Thiết kế/Document/Back-end; Đào Hữu Nghĩa - Tester/Back-end) cùng bộ quy tắc vận hành có cơ chế thưởng phạt cụ thể. Phần này cũng đặc tả 15 nhóm chức năng chính, các yêu cầu phi chức năng (vận hành offline, an toàn dữ liệu nội bộ, hiệu suất cao) và ràng buộc môi trường thực thi.
Phần II: Thiết kế cơ sở dữ liệu
Phần II tập trung vào quá trình xây dựng kiến trúc dữ liệu cho phần mềm. Bắt đầu từ việc xác định 13 thực thể ban đầu, nhóm tiến hành xây dựng sơ đồ thực thể ER. Để loại bỏ các sai lệch và dư thừa dữ liệu, quy trình chuẩn hóa được thực hiện qua 2 bước: chuẩn hóa 1NF nhằm đảm bảo các thuộc tính đạt giá trị nguyên tố đơn trị và xác định khóa chính; chuẩn hóa 2NF thông qua việc tách các bảng giao dịch phức hợp (HoaDonBan, HoaDonNhap, PhieuThu, PhieuChi) thành các bảng giao dịch chính và bảng chi tiết tương ứng (HDB_CT, HDN_CT, PhieuThuCT, PCTraThuocCT, PCNhapHangCT). Phần này cung cấp bảng từ điển dữ liệu chi tiết cho toàn bộ 18 bảng sau chuẩn hóa, quy định rõ tên trường, kiểu dữ liệu (varchar, nvarchar, int, money, date, bit), độ dài, ràng buộc khóa và mục đích sử dụng.
Phần III: Phân tích nội dung và thiết kế hệ thống
Phần III triển khai phân tích chi tiết hành vi và giao diện hệ thống. Nội dung bao gồm ma trận phân quyền người dùng và hệ thống sơ đồ Use Case hoàn chỉnh: sơ đồ tổng quát và 5 sơ đồ phân hệ chi tiết (giao dịch - thống kê - thu chi; quản lý người dùng - nhà cung cấp; quản lý sản phẩm - thông tin thuốc; quản lý nhóm thuốc - đơn vị tính; quản lý tủ thuốc - khách hàng). Đi kèm sơ đồ là tài liệu đặc tả Use Case chi tiết cho từng hành động (tên use case, actor, tiền điều kiện, hậu điều kiện, luồng sự kiện chính và luồng ngoại lệ). Phần này cũng thể hiện cấu trúc Class Diagram và hệ thống bản vẽ thiết kế Mockup giao diện người dùng tương ứng với các màn hình: đăng nhập, đổi/quên mật khẩu, bán hàng, nhập hàng, trả hàng, quản lý thuốc, quản lý đối tác và báo cáo thống kê doanh số.
Phần IV: Kiểm thử
Phần IV ghi nhận quy trình kiểm tra chất lượng phần mềm (do thành viên Đào Hữu Nghĩa phụ trách). Quy trình kiểm thử tập trung vào việc xác minh tính chính xác của các luồng nghiệp vụ trên giao diện người dùng, kiểm tra ràng buộc dữ liệu đầu vào, khả năng xử lý tính toán hóa đơn, kiểm tra tính toàn vẹn dữ liệu khi ghi nhận vào Microsoft SQL Server và phát hiện các lỗi phát sinh để lập trình viên hiệu chỉnh trước khi đóng gói sản phẩm.
Phần V: Tổng kết
Phần tổng kết đánh giá toàn diện quá trình thực hiện dự án:
- Thời gian phát triển và mức độ hoàn thành: Dự án hoàn thành toàn bộ các mốc tiến độ và các module chức năng đã đề ra trong kế hoạch ban đầu.
- Khó khăn, rủi ro và cách giải quyết: Nhóm xử lý các vướng mắc phát sinh về nghiệp vụ nhà thuốc và chuẩn hóa cơ sở dữ liệu thông qua các buổi họp nội bộ thống nhất yêu cầu và tham vấn ý kiến giảng viên hướng dẫn.
- Bài học kinh nghiệm: Nâng cao kỹ năng phân tích hệ thống thực tế, kỹ thuật thiết kế cơ sở dữ liệu quan hệ và năng lực phối hợp làm việc nhóm theo mô hình Waterfall.
- Kế hoạch phát triển trong tương lai: Mở rộng và nâng cấp các tính năng quản lý nâng cao cho hệ thống.
Kết quả và đóng góp
Kết quả chính
Dự án đã hoàn thành tài liệu đặc tả kỹ thuật dày 173 trang và xây dựng hệ thống phần mềm quản lý bán thuốc tây với các kết quả cụ thể:
- Số hóa 15 module chức năng: Đăng nhập, đổi mật khẩu, quên mật khẩu, quản lý thông tin thuốc, quản lý sản phẩm thuốc, quản lý đơn vị tính, quản lý nhóm thuốc, quản lý tủ thuốc, quản lý nhà cung cấp, quản lý người dùng, quản lý khách hàng, quản lý bán hàng, quản lý nhập hàng, quản lý phiếu thu/chi và thống kê doanh thu.
- Thiết kế hệ thống cơ sở dữ liệu đạt chuẩn 2NF gồm 18 bảng liên kết chặt chẽ, tối ưu hóa khả năng lưu trữ thông tin thuốc (hoạt chất, hàm lượng, cách dùng, quy cách đóng gói, vị trí tủ, hạn dùng và giá nhập/xuất).
- Xây dựng giao diện ứng dụng trên Java Swing kết hợp tích hợp khả năng đọc mã vạch, hỗ trợ tìm kiếm thuốc và tính toán hóa đơn tự động.
Đóng góp thực tiễn
- Đề tài cung cấp giải pháp chuyển đổi phương thức vận hành cho các cửa hàng thuốc nhỏ lẻ từ ghi chép thủ công/Excel sang hệ thống phần mềm có cấu trúc, giúp hạn chế sai sót và thất thoát dữ liệu.
- Thiết lập quy trình quản lý dược phẩm chặt chẽ theo hạn sử dụng và phân loại theo vị trí tủ thuốc, đáp ứng các yêu cầu cơ bản trong nghiệp vụ kinh doanh dược.
- Tự động hóa quá trình lập báo cáo thu chi, giúp chủ cơ sở theo dõi dòng tiền và lợi nhuận kinh doanh định kỳ một cách chính xác.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Phần mềm hoạt động theo cơ chế ứng dụng máy tính đơn lẻ (Local Application), dữ liệu lưu trữ cục bộ trên từng máy tính, chưa có cơ chế đồng bộ trực tuyến hoặc quản lý theo mô hình chuỗi nhiều chi nhánh.
- Giao diện và môi trường vận hành phụ thuộc vào nền tảng Java Swing và hệ quản trị Microsoft SQL Server cài đặt trực tiếp trên máy trạm.
Hướng nghiên cứu và phát triển tiếp
- Nâng cấp hệ thống để kết nối mạng diện rộng hoặc chuyển đổi sang nền tảng web/đám mây, hỗ trợ quản lý chuỗi nhà thuốc tập trung.
- Tích hợp thêm các tính năng thông minh như cảnh báo tự động khi thuốc sắp hết hạn sử dụng hoặc khi tồn kho chạm ngưỡng tối thiểu.
- Mở rộng các tiện ích xuất nhập báo cáo dưới nhiều định dạng và tích hợp các phương thức thanh toán điện tử hiện đại.
Giá trị tham khảo
Tài liệu là nguồn tư liệu thực hành hữu ích cho:
- Sinh viên ngành Công nghệ thông tin và Ứng dụng phần mềm: Tham khảo cấu trúc chuẩn của một báo cáo dự án học phần (Dự án 1), phương pháp khảo sát thực địa, kỹ thuật chuẩn hóa CSDL từ mô hình ER sang lược đồ quan hệ 2NF và cách thức đặc tả Use Case chi tiết.
- Lập trình viên Java Desktop: Tham khảo kiến trúc ứng dụng kết hợp Java Swing và Microsoft SQL Server trong bài toán quản lý bán hàng thực tế.
- Chủ cơ sở và nhân viên quầy thuốc vừa và nhỏ: Tham khảo quy trình số hóa nghiệp vụ bán lẻ dược phẩm, quản lý tồn kho và đối soát dòng tiền thu chi.
Câu hỏi thường gặp
1. Dự án sử dụng phương pháp khảo sát nào và thực hiện tại những địa điểm cụ thể nào?
Dự án sử dụng phương pháp phỏng vấn trực tiếp chủ cơ sở kết hợp quan sát quy trình bán hàng tại 2 địa điểm: Nhà thuốc Bình An (166 Nguyễn Đổng Chi, Cầu Diễn, Nam Từ Liêm, Hà Nội - Đại diện: Chú An) và Nhà thuốc Ngọc Vân 2 (Số 3 Nguyễn Đổng Chi, Cầu Diễn, Nam Từ Liêm, Hà Nội - Đại diện: Chị Vân).
2. Công nghệ và môi trường kỹ thuật chính được lựa chọn để phát triển phần mềm là gì?
Phần mềm được xây dựng bằng ngôn ngữ Java (JDK 8 trở lên) trên nền tảng giao diện Java Swing, sử dụng hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server 2012 trở lên và hoạt động trên hệ điều hành Windows XP+ hoặc macOS X 10.8+.
3. Tại sao cơ sở dữ liệu của dự án phải chuẩn hóa từ 1NF sang 2NF?
Tại mức 1NF, các bảng giao dịch như HoaDonBan, HoaDonNhap, PhieuThu và PhieuChi tồn tại sự phụ thuộc hàm bộ phận (chứa các thuộc tính không phụ thuộc hoàn toàn vào khóa chính). Do đó, nhóm đã phân rã thành các bảng chính và bảng chi tiết (HDB_CT, HDN_CT, PhieuThuCT, PCTraThuocCT, PCNhapHangCT) để đạt chuẩn 2NF, loại bỏ dư thừa dữ liệu.
4. Sự khác biệt về quyền hạn giữa vai trò Quản lý và Nhân viên trong phần mềm là gì?
Quản lý (Admin) có toàn quyền thao tác trên hệ thống bao gồm quản trị người dùng, thay đổi giá thuốc, quản lý đối tác, quản lý danh mục, lập phiếu thu chi và xem thống kê doanh thu. Nhân viên chỉ được xem/tìm kiếm thông tin thuốc, tủ thuốc, đơn vị tính, tra cứu khách hàng/nhà cung cấp và thực hiện nghiệp vụ lập hóa đơn bán hàng, hóa đơn trả hàng và phiếu nhập hàng.
5. Nhóm phát triển đề tài gồm những thành viên nào và phân công nhiệm vụ ra sao?
Nhóm gồm 3 thành viên thuộc Nhóm 6: Nguyễn Quang Thìn (Trưởng nhóm - Phân tích hệ thống, thiết kế Database, Lập trình Back-End), Phan Hà Quân (Thiết kế giao diện/Mockup, biên soạn tài liệu Document, hỗ trợ Back-End) và Đào Hữu Nghĩa (Kiểm thử Tester, hỗ trợ Back-End).
Kết luận
Báo cáo Dự án 1 "Xây dựng phần mềm bán thuốc tây" của nhóm sinh viên Trường Cao đẳng FPT Polytechnic là một công trình thiết kế và phát triển phần mềm hoàn chỉnh, bám sát các yêu cầu thực tế từ quá trình khảo sát quầy thuốc bán lẻ. Đề tài đã giải quyết hiệu quả các hạn chế của phương pháp quản lý thủ công thông qua việc số hóa toàn diện quy trình quản lý danh mục thuốc, quản lý lô hạn, bán hàng, đổi trả và đối soát thu chi. Kiến trúc hệ thống với cơ sở dữ liệu chuẩn hóa 2NF trên nền tảng Java Swing và Microsoft SQL Server đảm bảo tính ổn định, chính xác và có giá trị ứng dụng thực tiễn cao cho các nhà thuốc quy mô vừa và nhỏ.