- Hỗ trợ kế toán trưởng khi thanh kiểm tra thuế, bảo hiểm.- Thanh toán lương, thưởng, phụ cấp cho các phòng ban theo lệnh của Tổng Giámđốc; thanh toán BHXH, BHYT, BHTN cho người lao động
TÌM HIỂU HỆ THỐNG QUẢN LÝ KẾ TOÁN CỦA CÔNG TY CỔ PHẦN ĐẠI THÀNH VINH
GIỚI THIỆU VỀ CÔNG TY CỔ PHẦN ĐẠI THÀNH VINH
1.1.1 Thông tin cơ bản về Công ty Cổ phần Đại Thành Vinh
Tên công ty: CÔNG TY CỔ PHẦN ĐẠI THÀNH VINH
Giám đốc: Trịnh Ngọc Loan
Địa chỉ: 17 Đường 5A, Phường Bình Trị Đông B, Quận Bình Tân, Tp HCM.
Chúng tôi chuyên sản xuất và cung cấp số lượng lớn hạt nhựa PP, PE tái sinh với chất lượng ổn định và đạt tiêu chuẩn an toàn, nhằm đáp ứng nhu cầu đa dạng của khách hàng trên thị trường.
Sản xuất và phân phối các sản phẩm làm bằng nhựa: bàn ghế, đồ gia dụng, đồ dùng công nghiệp,
Cung cấp hạt nhựa cho các doanh nghiệp sản xuất đồ nhựa
Tư vấn, thiết kế và sản xuất đồ nhựa: bàn ghế, đồ đa dụng theo yêu cầu
Hình thức buôn bán: Bán lẻ tại Website, các trang mạng xã hội
Doanh nghiệp, công ty chuyên sản xuất đồ nhựa
Các cửa hàng chuyên buôn bán đồ nhựa, đồ gia dụng bằng nhựa
1.1.4 Tổ chức bộ máy kế toán
1.1.4.1 Bộ máy kế toán tập trung
Công ty Cổ phần Đại Thành Vinh đã tổ chức bộ máy kế toán theo mô hình tập trung, trong đó Phòng kế toán đảm nhận trách nhiệm tiếp nhận và xử lý chứng từ, luân chuyển tài liệu, ghi sổ kế toán và lập báo cáo tài chính.
Các đơn vị phụ thuộc như xí nghiệp, phân xưởng, tổ, đội không có bộ máy kế toán riêng Thay vào đó, chỉ có một số nhân viên đảm nhiệm nhiệm vụ hạch toán ban đầu, thu nhận và kiểm tra chứng từ, sau đó định kỳ gửi các tài liệu này về phòng kế toán.
Mô hình tổ chức bộ máy kế toán tập trung giúp đảm bảo sự thống nhất và chặt chẽ trong chỉ đạo công tác kế toán, từ đó hỗ trợ đơn vị kiểm tra và chỉ đạo sản xuất kịp thời Ngoài ra, mô hình này còn chuyên môn hóa cán bộ, giảm nhẹ biên chế và tạo điều kiện thuận lợi cho việc ứng dụng các phương tiện tính toán tiện ích.
1.1.4.2 Sơ đồ bộ máy kế toán tập trung của công ty
Hình 1 1 Sơ đồ kế toán Công ty Đại Thành Vinh (Nguồn: Tác giả)
Kế toán trưởng đóng vai trò quan trọng không chỉ trong việc tư vấn mà còn trong việc kiểm tra và giám sát các hoạt động tài chính của doanh nghiệp Thực hiện tốt vai trò này giúp bộ máy kế toán hoạt động hiệu quả và phát huy đầy đủ các chức năng của kế toán.
Kế toán trưởng là người đứng đầu bộ phận kế toán trong công ty, chịu trách nhiệm quản lý và điều hành tất cả các hoạt động kế toán của đơn vị.
- Tố chức bộ máy kể toán trong công ty
- Lựa chọn chế độ kế toán, thiết lập các tính toán;
- Đào tạo, hướng dẫn các kế toán thành viên;
- Cập nhật, phổ biến kiến thức mới;
- Phân công, kiêm tra, rà soát công việc;
- Báo cáo, tham mưu cho giám đốc về kế toán tài chính;
- Làm việc với các cơ quan chức năng, cơ quan thuế
Là người đứng ngay sau kế toán trưởng, chịu trách nhiệm:
- Xử lý và tổng hợp số liệu kế toán từ các phần hành; hướng dẫn và quản lý chung.
- Ghi bút toán tổng hợp cuối tháng, hỗ trợ quyết toán hợp đồng Lập và phân tích chi phí/giá thành
Hỗ trợ kế toán trưởng trong việc làm việc trực tiếp với cơ quan thuế và ngân hàng liên quan đến quyết toán công trình Thực hiện kiểm tra hóa đơn đầu vào và đầu ra, đồng thời đảm bảo báo cáo thuế được thực hiện theo đúng quy định.
Hướng dẫn kịp thời các bộ phận kế toán thực hiện và ghi nhận chính xác các chi phí là rất quan trọng Đồng thời, cần đôn đốc bộ phận kế toán công nợ để tránh tình trạng nợ xấu, nhằm bảo vệ tài sản của công ty.
Kế toán thanh toán và công nợ
Chịu trách nhiệm về các khoản thu – chi và công nợ phải thu – công nợ phải trả
Theo dõi và quản lý thu – chi tiền mặt bằng VND và các ngoại tệ khác là rất quan trọng Cần thực hiện báo cáo định kỳ về tình hình thu – chi tiền mặt và tham gia vào quá trình kiểm kê quỹ Đồng thời, việc theo dõi các khoản tiền gửi và vay tại ngân hàng cũng cần được thực hiện chặt chẽ Hợp tác với kế toán công nợ phải thu sẽ giúp báo cáo tình hình công nợ một cách chính xác và hiệu quả.
- Kế toán công nợ bao gồm:
+ Hạch toán chi tiết cho mỗi đối tượng phải thu, phải trả từng khoản nợ và những lần thanh toán
+ Thực hiện kiểm tra và thu hồi công nợ phải thu một cách nhanh nhất Xây dựng kế hoạch thanh toán công nợ phải trả thuận lợi nhất.
+ Báo cáo tình hình công nợ phải thu/phải trả và thời hạn thanh toán.
Công việc liên quan đến các khoản phải thu – phải trả với người lao động trong công ty:
- Xây dựng thang bảng lương để tính và nô Žp cho cơ quan bảo hiểm
- Hỗ trợ kế toán trưởng khi thanh kiểm tra thuế, bảo hiểm.
Thanh toán lương, thưởng và phụ cấp cho các phòng ban theo chỉ đạo của Tổng Giám đốc; thực hiện thanh toán bảo hiểm xã hội (BHXH), bảo hiểm y tế (BHYT) và bảo hiểm thất nghiệp (BHTN) cho người lao động theo quy định; theo dõi việc trích lập và sử dụng quỹ lương của công ty; và quản lý thanh toán các khoản thu, chi của công đoàn.
Kế toán tiền mặt và tiền tạm ứng
Những công việc chính của kế toán tiền mặt và tiền tạm ứng:
- Lập các chứng từ thu, chi khi có phát sinh.
- Hạch toán các nghiệp vụ phát sinh liên quan đến tiền mặt: sử dụng một đơn vị tiền tệ để hạch toán là đồng Việt Nam
- Nhận báo cáo quỹ kèm theo các chứng từ gốc từ thủ quỹ hàng ngày.
- Kiểm tra đối chiếu số liệu trên chứng từ với số liệu trên sổ quỹ.
- Định khoản và ghi vào sổ kế toán tổng hợp.
- Lưu giữ chứng từ liên quan tiền mặt theo quy định và quy chế của Công ty.
Kế toán kho là một vị trí quan trọng của công ty, kế toán ở vị trí này cần thực hiện các công việc sau:
- Kiểm tra, đối chiếu và hạch toán hàng hóa nhập xuất kho vào hệ thống phần mềm kế toán/quản lý công ty.
- Lập báo cáo hàng tồn kho, báo cáo xuất nhập tồn.
- Tham gia công tác kiểm kê định kỳ.
Các công việc chính của thủ quỹ trong doanh nghiệp:
- Quản lý toàn bộ tiền mặt trong két sắt công ty
- Đảm bảo tiền mặt được an toàn
- Phân loại và kiểm tra chất lượng tiền mặt
- Phát hiện tiền giả và báo cáo để giải quyết vấn đề về tiền giả.
- Thực hiện việc thanh toán tiền mặt hàng ngày theo quy trình thanh toán của doanh nghiệp.
- Thực hiện kiểm tra lần cuối về tính hợp pháp và hợp lý của chứng từ trước khi xuất, nhập tiền khỏi quỹ.
- Thực hiện kiểm kê đối chiếu quỹ hàng ngày
- Lưu trữ chứng từ thu chi tiền.
- Thực hiện các báo cáo định kỳ cho doanh nghiệp về quỹ tiền của doanh nghiệp và trình lên cấp trên.
GIỚI THIỆU PHẦN MỀM QUẢN LÝ KẾ TOÁN TRONG DOANH NGHIỆP – MISA AMIS KẾ TOÁN
Trong bối cảnh xã hội phát triển, việc ứng dụng công nghệ vào quản lý và làm việc ngày càng trở nên phổ biến, đặc biệt trong lĩnh vực kế toán Để nâng cao năng suất và hiệu quả công việc, MISA AMIS đã phát triển phần mềm AMIS Kế Toán, phần mềm kế toán hàng đầu hiện nay AMIS Kế Toán đáp ứng đầy đủ các nghiệp vụ kế toán cho nhiều lĩnh vực kinh doanh, cho phép người dùng làm việc mọi lúc, mọi nơi, kết nối với hệ thống ngân hàng, thuế, hóa đơn điện tử và các hệ thống khác, từ đó nâng cao hiệu quả công việc.
Hình 1 3 Những giải thưởng AMIS Kế Toán đã đạt được (Nguồn: MISA website)
Hình 1 4 Những doanh nghiệp đã tin tưởng và lựa chọn sử dụng AMIS Kế Toán (Nguồn:
Màn hình làm việc của người dùng thường gồm có 4 phần:
Hình 1 5 Giao diện của phần mềm AMIS Kế toán (Nguồn: MISA website)
Cho phép người dùng thực hiện các chức năng sau:
Thêm tính năng cho phép người dùng khai báo một bản ghi mới, có thể là tiềm năng, chiến dịch, cơ hội, báo giá hoặc hợp đồng.
- Xem: Cho phép xem thông tin của một bản ghi đã khai báo trên hệ thống
- Sửa: Cho phép sửa lại các thông tin đã khai báo của một bản ghi trên hệ thống
- Xóa: Cho phép xóa thông tin đã khai báo của một bản ghi trên hệ thống
Nạp dữ liệu cho phép người sử dụng cập nhật thông tin mới nhất từ hệ thống Tại đây, người dùng có thể chọn nạp các bản ghi cá nhân, nhóm hoặc bộ phận được phân quyền trên cây cơ cấu tổ chức Ngoài ra, hệ thống cũng cung cấp tùy chọn hiển thị các bản ghi đã ngừng theo dõi.
- Giúp: Cho phép người dùng xem thông tin hướng dẫn sử dụng với những giao diện hay tính năng có liên quan
Tùy vào nghiệp vụ, thanh tác nghiệp hiển thị các con số báo cáo thống kê nhanh về tình hình bán hàng hoặc các tính năng thường dùng.
Quản lý thông tin các bản ghi cho từng nghiệp vụ dễ dàng thông qua các chức năng như thêm, sửa, xóa, nhân bản, nhập khẩu, xuất khẩu, sửa hàng loạt, bàn giao công việc, gửi email và gửi SMS chỉ bằng cách nhấn chuột phải.
Các tab thông tin liên quan
Cho phép khai báo và quản lý các thông tin liên quan đến từng bản ghi đã được khai báo trên màn hình danh sách.
1.2.2 Lợi ích khi sử dụng AMIS Kế Toán
Phần mềm Amis Kế Toán tự động hạch toán từ hóa đơn, chứng từ và bảng Excel, giúp tổng hợp báo cáo thuế và BCTC một cách chính xác và nhanh chóng Điều này không chỉ tiết kiệm thời gian và công sức so với phương pháp truyền thống mà còn giảm thiểu rủi ro và sai sót trong quá trình nhập liệu cho doanh nghiệp.
Quản trị tài chính tức thời
Phần mềm này cung cấp báo cáo tài chính và phân tích chi tiết, giúp doanh nghiệp có cái nhìn tổng quan về tình hình tài chính Nó hỗ trợ theo dõi giao dịch thu chi, hóa đơn và thanh toán, từ đó nâng cao khả năng quản lý tài chính Giám đốc và quản lý có thể dễ dàng nắm bắt các chỉ số quan trọng như doanh thu, lợi nhuận, chi phí, dòng tiền, công nợ và tồn kho mọi lúc, mọi nơi, giúp họ ra quyết định điều hành kịp thời.
Làm việc Online mọi lúc, mọi nơi
Phần mềm Amis Kế Toán hỗ trợ nhiều người làm việc đồng thời, giúp quản lý dữ liệu trực tuyến và giảm thiểu rủi ro mất mát thông tin do sự cố máy tính Khi xảy ra sự cố ngoài giờ làm việc, nhân viên kế toán có thể dễ dàng xử lý trực tuyến mà không cần đến công ty Đặc biệt, với một chiếc laptop và kết nối Internet, Amis Kế Toán mang đến sự tiện lợi và nhanh chóng cho người dùng, ngay cả khi đang công tác ở xa.
Khi sử dụng Amis Kế Toán, bạn sẽ tiết kiệm thời gian vì không cần cài đặt phần mềm Amis Kế Toán cung cấp hướng dẫn sử dụng chi tiết, giúp người dùng dễ dàng thao tác Nếu bạn gặp khó khăn trong việc làm quen với phần mềm, Amis Kế Toán còn có khóa học hướng dẫn sử dụng hiệu quả, nâng cao năng suất công việc Giao diện trực quan của phần mềm cũng giúp người dùng tiếp cận dễ dàng hơn.
1.2.3 Những tính năng vượt trội của AMIS Kế Toán
Đầy đủ các nghiệp vụ kế toán, đáp ứng 30+ ngành nghề
AMIS Kế Toán là giải pháp kế toán toàn diện, đáp ứng 20 nghiệp vụ kế toán theo Thông Tư 133 và Thông Tư 200 Phần mềm này hỗ trợ quản lý Quỹ, Ngân hàng, Mua hàng, Bán hàng, Kho, Hóa đơn, Thuế, Giá thành và nhiều nghiệp vụ khác, mang đến hệ thống kế toán đa dạng và linh hoạt cho người dùng.
Hình 1 6 Minh họa cho sự đáp ứng được đa dạng các nghiệp vụ và ngành nghề của
AMIS Kế Toán (Nguồn: MISA website)
MISA AMIS hỗ trợ hơn 30 ngành nghề, bao gồm thương mại, dịch vụ, sản xuất và xây lắp, giúp doanh nghiệp không phụ thuộc vào lĩnh vực cụ thể nào có thể tối ưu hóa quy trình kế toán và đảm bảo tuân thủ các quy định kế toán hiện hành.
Tự động nhập liệu thông minh
Tính năng “Tự động nhập liệu thông minh” của MISA AMIS Kế Toán mang lại sự tiện lợi và hiệu quả cho quản lý tài chính, nhờ khả năng tự động nhập liệu từ hóa đơn điện tử và nhập khẩu dữ liệu từ Excel Điều này giúp giảm thiểu thời gian và sai sót trong quá trình nhập chứng từ, đồng thời tăng cường độ chính xác và nâng cao hiệu suất làm việc, khiến cho quá trình kế toán trở nên dễ dàng và hiệu quả hơn.
Hình 1 7 Khả năng nhập dữ liệu thông minh từ Excel của AMIS Kế toán (Nguồn: MISA website)
Hỗ trợ kiểm soát chứng từ hợp lệ
Tính năng “hỗ trợ kiểm soát chứng từ hợp lệ” của AMIS Kế Toán, thông qua sự tích hợp MInebot, mang lại sự thuận tiện và độ chính xác trong quản lý tài chính MInebot tự động phân tích thông tin hóa đơn đầu vào, kiểm tra chữ ký số và trạng thái hoạt động của người bán, giúp người dùng xác nhận tính toàn vẹn và tính hợp lệ của chứng từ một cách nhanh chóng và hiệu quả, đồng thời ngăn chặn rủi ro từ thông tin không chính xác hoặc giao dịch không hợp lệ.
Hình 1 8 Khả năng phát hiện sai sót trong chứng từ của AMIS Kế toán (Nguồn: MISA website)
Tính năng “cảnh báo thông minh” của AMIS Kế Toán hỗ trợ doanh nghiệp trong quản lý tài chính hiệu quả Hệ thống tự động nhắc nhở về hạn kê khai và nộp thuế, giúp tránh phạt do quên hạn quan trọng Ngoài ra, cảnh báo về tồn kho và công nợ đến hạn giúp doanh nghiệp kiểm soát tình hình tài chính và quản lý rủi ro thanh toán tốt hơn.
Hình 1 9 AMIS Kế Toán đưa ra các gợi ý, nhắc nhở có trong ngày cho người dùng
Quy trình phê duyệt tiện lợi
Giúp doanh nghiệp xây dựng và thực hiện quy trình đề xuất và phê duyệt tạm ứng một cách linh hoạt và hiệu quả, phần mềm cho phép người dùng dễ dàng tạo và theo dõi các đề xuất trực tuyến, tiết kiệm thời gian so với quy trình truyền thống Việc tự động hóa phê duyệt tạm ứng giảm thiểu các bước thủ công, nâng cao tính chính xác và hiệu suất trong quản lý tài chính.
Hình 1 10 Minh họa quy trình phê duyệt tiện lợi của MISA Kế toán (Nguồn: MISA website)
Tự động hóa việc lập báo cáo
Tính năng “Tự động hóa việc lập báo cáo” là công cụ mạnh mẽ giúp doanh nghiệp tiết kiệm thời gian và nâng cao độ chính xác trong nộp báo cáo Hệ thống tự động tổng hợp số liệu và tạo báo cáo thuế, báo cáo tài chính, đảm bảo doanh nghiệp nộp báo cáo đúng hạn và đáp ứng yêu cầu pháp lý Điều này không chỉ giảm áp lực cho nhân viên kế toán mà còn nâng cao hiệu suất toàn diện của quá trình lập báo cáo tài chính.
Hình 1 11 AMIS Kế Toán cung cấp khả năng tự động hóa việc lập báo cáo (Nguồn:
Đầy đủ các mẫu báo cáo quản trị
THIẾT KẾ HỆ THỐNG MƯỢN, TRẢ SÁCH CHO THƯ VIỆN TRƯỜNG PTITHCM
ĐẶC TẢ BÀI TOÁN
Thư viện Học viện Công nghệ Bưu chính Viễn thông đang hướng tới việc xây dựng một hệ thống thông tin tin học hóa nhằm quản lý hiệu quả số lượng đầu sách ngày càng tăng.
Hệ thống thông tin quản lý thư viện bao gồm nhiều phân hệ, trong đó có phân hệ quản lý mượn và trả sách Quy trình này bắt đầu khi đọc giả cần mượn sách và sử dụng máy tính để tra cứu mã số của đầu sách mong muốn Để hoàn tất việc mượn, đọc giả phải điền thông tin vào phiếu mượn sách, bao gồm các thông tin như mã độc giả, ngày mượn, mã số sách, mã số chuyên ngành, mã số tác giả, thời hạn mượn và thời hạn trả.
Thiết kế một hệ thống quản lý mượn và trả sách cho thư viện bằng Excel hoặc ngôn ngữ lập trình khác sẽ giúp độc giả tìm kiếm sách nhanh chóng và hiệu quả Hệ thống này nên được tối ưu hóa cho khoảng 120 đầu sách, đảm bảo dễ sử dụng và truy cập thông tin một cách thuận tiện.
Dựa trên đề bài, có thể rút ra những yêu cầu cụ thể về hệ thống quản lý mượn/trả sách của thư viện như sau:
Tra cứu thông tin sách
- Hệ thống cần cung cấp khả năng tra cứu thông tin sách một cách nhanh chóng và hiệu quả.
- Phải hỗ trợ việc tìm kiếm sách theo mã số sách, tên sách, chuyên ngành, tác giả, hoặc các tiêu chí khác.
Trên phiếu mượn sách, cần ghi đầy đủ thông tin bao gồm mã độc giả, ngày mượn, mã số sách, mã chuyên ngành, mã tác giả, thời hạn mượn, thời hạn trả, và trạng thái mượn/trả để đảm bảo quản lý hiệu quả.
Quản lý thông tin độc giả:
Hệ thống cần lưu trữ thông tin về độc giả, bao gồm mã độc giả và tên độc giả.
Quản lý số lượng đầu sách:
Với giả định thư viện có khoảng 120 đầu sách, hệ thống phải có khả năng quản lý thông tin chi tiết về từng đầu sách.
Chức năng tìm kiếm và lọc:
Hệ thống phải cung cấp chức năng tìm kiếm và lọc, giúp độc giả dễ dàng xác định sự có mặt của sách trong thư viện, theo dõi tình trạng mượn/trả, và biết thời gian trả sách.
Nhanh chóng và dễ sử dụng:
Giao diện hệ thống cần thiết kế sao cho đơn giản, dễ sử dụng và hiểu, giúp đọc giả có thể thao tác một cách thuận tiện.
Theo dõi trạng thái mượn/trả sách:
Hệ thống cần theo dõi trạng thái của sách, đảm bảo việc quản lý mượn/trả sách diễn ra hiệu quả.
Bảo đảm an toàn và bảo mật thông tin cá nhân của độc giả và thông tin quan trọng khác trong hệ thống.
Tính linh hoạt và mở rộng:
Hệ thống cần linh hoạt để mở rộng và thích ứng với sự thay đổi trong quy mô thư viện cũng như nhu cầu sử dụng mới.
Các yêu cầu này sẽ tạo nền tảng cho việc thiết kế và triển khai hệ thống quản lý mượn/trả sách, đảm bảo hiệu quả và phù hợp với nhu cầu của thư viện.
PHÂN TÍCH HỆ THỐNG
2.2.1 Phân tích các yếu tố của bài toán Động từ + bổ ngữ Danh từ Nhận xét Đăng ký + mượn sách Thư viện Tra cứu + sách Độc giả Tác nhân
Ghi vào + phiếu mượn Hệ thống HSDL
Quản lý mượn + sách Sách HSDL
Quản lý trả + sách Phiếu mượn HSDL
Cập nhật + sách Nhà cung cấp Tác nhân
Xây dựng + hệ thống Điền + thông tin
Bảng 2 1 Bảng phân tích các yếu tố của hệ thống mượn/trả sách
2.2.2 Phân tích các tác nhân và xác định tương tác
Hệ thống quản lý thư viện tại Học viện Công nghệ Bưu chính Viễn thông được thiết kế để phục vụ cho hai tác nhân chính: thủ thư và độc giả Các chức năng quan trọng của hệ thống này bao gồm việc quản lý sách, giúp độc giả dễ dàng tiếp cận tài liệu và hỗ trợ thủ thư trong việc tổ chức và quản lý kho sách hiệu quả.
Qua mô tả bài toán ta tìm được 7 luồng thông tin:
- 4 luồng từ độc giả đến hệ thống
- 2 luồng từ hệ thống đến độc giả
- 1 luồng từ hệ thống đến nhà cung cấp
- 1 luồng từ nhà cung cấp đến hệ thống
Qua đó ta xác định được sơ đồ ngữ cảnh của hệ thống như sau:
Hình 2 1 Sơ đồ ngữ cảnh của hệ thống (Nguồn: Tác giả)
2.2.3 Xây dựng biểu đồ phân cấp chức năng
Nhóm 3 đã phát triển một hệ thống thông tin cho thư viện Học viện Công Nghệ Bưu Chính Viễn Thông tại Thành phố Hồ Chí Minh, nhằm đáp ứng các yêu cầu của bài toán Hệ thống này sẽ hỗ trợ quản lý và tra cứu tài liệu một cách hiệu quả, phục vụ nhu cầu học tập và nghiên cứu của sinh viên và giảng viên.
Quản lý lịch sử mượn trả sách
Cảnh báo quá hạn và cấm mượn sách
Thống kê sách còn, mượn, quá hạn
Những chức năng trên sẽ được chia vào 3 nhóm chức năng chính như sau:
Các chức năng của Hệ Thống thông tin thư viện phân theo các nhóm chức năng được thể hiện qua bảng:
Chức năng chi tiết Nhóm chức năng
Quản lý sách Nhập sách
Quản lý mượn trả sách
Quản lý lịch sử mượn trả sách
Quản lý thời gian mượn trả và cấm mượn
Trả sách Thống kê số lượng sách còn lại
Thống kê số lượng sách mượn
Thống kê số lượng sách quá hạn
Bảng 2 2 Các chức năng của hệ thống thông tin thư viện theo các nhóm chức năng
Sơ đồ phân cấp chức năng:
Hình 2 2 Sơ đồ phân cấp chức năng (Nguồn: Tác giả)
2.2.4 Mô tả chi tiết các chức năng
Khi sinh viên muốn mượn sách, họ chỉ cần cung cấp tên sách cho thủ thư, người sẽ nhập tên vào ô “Tìm sách” Không cần nhập đầy đủ tên sách, chỉ cần một vài từ, hệ thống sẽ hiển thị tất cả sách có tên chứa ký tự tương ứng Nếu nhập đúng tên sách, hệ thống sẽ chỉ hiển thị một quyển sách duy nhất Ngược lại, nếu nhập sai, hệ thống sẽ thông báo “Không có sách”.
Ví dụ: Bạn nhập từ “Toán” vào ô Tìm Kiếm, kết quả cho ra là “Toán cao cấp 1”,
“Toán cao cấp 2”, “Bài tập Toán cao cấp”
Khi Thư viện cần thêm sách, Thủ thư truy cập vào mục “Quản lý sách” và chọn “Thêm sách” Tại đây, Thủ thư sẽ điền thông tin vào các mục như Tên sách, Tác giả, năm xuất bản, số lượng và ngày nhập Sau khi hoàn tất, Thủ thư nhấn thêm sách Để xác nhận việc nhập sách thành công, Thủ thư có thể quay lại menu tìm sách và kiểm tra tên sách vừa thêm.
Phiếu mượn đóng vai trò quan trọng trong việc quản lý mượn trả sách, vì nó ghi nhận các thông tin cần thiết như tên người mượn, MSSV, tên sách mượn, ngày mượn và ngày trả Ngoài ra, phiếu mượn còn giúp tra cứu lịch sử mượn trả sách tại thư viện.
Khi sinh viên mượn sách, phiếu mượn sẽ được tạo tự động với tên các cuốn sách đã mượn Sinh viên cần cung cấp MSSV cho Thủ thư để nhập vào phiếu Nếu MSSV chính xác, hệ thống sẽ tra cứu thông tin từ Danh sách sinh viên của trường để hoàn thiện phiếu Ngược lại, nếu MSSV sai, hệ thống sẽ thông báo “MSSV sai” và không có dữ liệu nào được điền Để hoàn tất phiếu mượn, sinh viên cần cung cấp ngày trả sách và chọn “Hoàn thành”.
Khi sinh viên muốn mượn sách, chỉ cần thông báo tên sách cho thủ thư, người này sẽ tra cứu vị trí kệ sách trên hệ thống Sinh viên sau đó tự đi lấy sách và trở lại bàn thủ thư để cung cấp MSSV và ngày trả sách như trong quy trình tạo phiếu mượn Sau khi hoàn tất, sách sẽ được mượn và thông tin của sinh viên cùng cuốn sách sẽ được lưu trữ trong hệ thống.
2.2.4.5 Cảnh báo quá hạn và cấm mượn
Nếu sinh viên chưa trả sách đúng hạn, hệ thống sẽ cảnh báo bằng cách tô đỏ ngày trả trên giao diện tra cứu phiếu mượn Khi sách được trả muộn, hệ thống sẽ tự động thiết lập ngày tái mượn mới, được tính bằng ngày sinh viên trả sách cộng với thời gian quy định.
7 ngày Điều này có nghĩa, sinh viên trả sách quá hạn sẽ bị cấm mượn 1 tuần
Một khi sinh viên đã bị cấm mượn, sinh viên khi sẽ không thể tìm được bất kỳ một cuốn sách nào trong ô Tìm sách.
Khi sinh viên trả sách, họ cần cung cấp mã số sinh viên (MSSV) cho Thủ thư Thủ thư sẽ truy cập vào phần Trả sách và nhập MSSV Hệ thống sau đó sẽ hiển thị danh sách các cuốn sách mà sinh viên đã mượn Thủ thư sẽ kiểm tra tình trạng sách và thực hiện thao tác trả sách.
2.2.4.7 Quản lý lịch sử mượn trả sách
Hệ thống quản lý phiếu mượn cung cấp thông tin chi tiết về việc mượn và trả sách, cho phép Thủ thư theo dõi ai đã mượn sách, tình trạng trả sách của sinh viên, và thời gian mượn Thủ thư có thể dễ dàng xác định sinh viên nào đã mượn sách vào ngày nào, hạn trả là khi nào, và cuốn sách cụ thể nào đang được mượn Tất cả thông tin này được hiển thị rõ ràng trong bảng "Quản lý phiếu mượn".
2.2.4.8 Thống kê số sách mượn, còn lại, quá hạn
Bằng cách sử dụng hàm trong SQL, chúng ta có thể dễ dàng thống kê số lượng sách đang cho mượn, số sách còn tồn kho và số sách đã cho mượn bị quá hạn.
2.2.5 Biểu đồ luồng dữ liệu
2.2.5.1 Biểu đồ luồng dữ liệu ngữ cảnh (DFD mức 0) Ở sơ đồ luồng dữ liệu ở mức ngữ cảnh, chức năng chung của của cả hệ thống thư viện là quản lý thư viện và các tác nhân bên ngoài thư viện có thể kể đến Sinh viên và nhà cung cấp sách.
Dựa vào luồng trao đổi dữ liệu giữa hệ thống với các tác nhân bên ngoài ta có sơ đồ luồng dữ liệu ngữ cảnh sau:
Hình 2 3 Biểu đồ luồng dữ liệu ngữ cảnh (Nguồn: Tác giả)
2.2.5.2 Biểu đồ luồng dữ liệu mức đỉnh (DFD mức 1) Ở biểu đồ luồng dữ liệu mức đỉnh, chức năng của hệ thống được làm rõ hơn biểu đồ luồng dữ liệu ở mức 0 Hệ thống ở DFD mức 1 sẽ có 3 chức năng chính bao gồm:
Quản lý mượn trả sách
Biểu đồ luồng dữ liệu mức đỉnh cho thấy sự xuất hiện của 3 kho dữ liệu mới: Đọc giả, Phiếu mượn, và Kho sách Các luồng dữ liệu vào và ra không chỉ đi qua 3 chức năng chính mà còn tương tác với 3 kho dữ liệu này Sự phân chia từ 7 luồng thông tin trong biểu đồ luồng dữ liệu ngữ cảnh đã được chi tiết hóa và mở rộng hơn nhiều.
Hình 2 4 Biểu đồ luồng dữ liệu mức đỉnh (Nguồn: Tác giả)
Một số đặc điểm nổi bật ở biểu đồ luồng dữ liệu mức 1:
Xuất hiện thêm 3 kho dữ liệu là Đọc giả, Phiếu mượn, Kho sách
Hệ thống ở mức ngữ cảnh được phân rã chi tiết hơn lấy 3 chức năng chính làm mức đỉnh cho sơ đồ luồng dữ liệu mức 1
Các tác nhân bên ngoài là Sinh viên và Nhà cung cấp sách vẫn được giữ nguyên.
2.2.5.3 Biểu đồ luồng dữ liệu mức dưới đỉnh (DFD mức 2) Ở sơ đồ luồng dữ liệu ở mức dưới đỉnh, 2 chức năng chính của hệ thống sẽ được phân rã thành nhiều chức năng con:
THIẾT KẾ HỆ THỐNG MỚI
Thiết kế cơ sở dữ liệu
CREATE TABLE Sach ( ID INTEGER AUTO_INCREMENT, MaSach
CHAR(4), STT INTEGER, TenSach NVARCHAR(255), TacGia NVARCHAR(255), MaTacGia CHAR(3), NamXuatBan INTEGER, Vitri NVARCHAR(255), NgayNhapSach DATETIME, SoLuong INTEGER,
Ta dùng câu lệnh CREATE TABLE Sach để tạo bảng “Sach” với các thuộc tính ID, MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan, ViTri, NgayNhapSach, SoLuong.
Dựa vào kiểu dữ liệu ở Bảng vật lý Sach, ta thêm dữ kiểu dữ liệu và kích thước vào câu lệnh:
- Các kiểu dữ liệu: Char, Integer, NVarchar, Datetime
Ta cũng xác định khóa chính của bảng Sach là ID -PRIMARY KEY (ID)
CREATE TABLE Docgia (MaDocGia Char(10), TenDocGia NVarchar(255), MaChuyenNganh Varchar(10), NgayTaiMuon DATETIME, PRIMARY KEY
Ta dùng câu lệnh CREATE TABLE Docgia để tạo bảng “Docgia” với các thuộc tính MaDocGia, TenDocGia, MaChuyenNganh, NgayTaiMuon.
Dựa vào kiểu dữ liệu ở Bảng vật lý Sach, ta thêm dữ kiểu dữ liệu và kích thước vào câu lệnh:
- Các kiểu dữ liệu: Char, NVarchar, Varchar, Datetime
Ta cũng xác định khóa chính của bảng Docgia là MaDocGia – PRIMARY KEY
CREATE TABLE Phieumuon ( MaPhieuMuon Varchar(10), IDSach Integer, MaDocGia Char(10), SoLuong INTEGER, NgayMuon Datetime, NgayTra
Datetime, SoLuongDaTra INTEGER, PRIMARY KEY (MaPhieuMuon),
FOREIGN KEY (MaDocGia) REFERENCES Docgia(MaDocGia), FOREIGN KEY (IDSach) REFERENCES Sach(ID));
Ta dùng câu lệnh CREATE TABLE Phieumuon để tạo bảng “Phieumuon” với các thuộc tính MaPhieuMuon, IDSach, MaDocGia, SoLuong, NgayMuon, NgayTra.
Dựa vào kiểu dữ liệu ở Bảng vật lý Sach, ta thêm dữ kiểu dữ liệu và kích thước vào câu lệnh:
- Các kiểu dữ liệu: Varchar, Integer, Char, Datetime.
Ta cũng xác định khóa chính của bảng Phieumuon là MaPhieuMuon - PRIMARY KEY (MaPhieuMuon)
Ta cũng xác định thêm 2 khóa ngoại là:
- MaDocGia tham chiếu đến Bảng Docgia - FOREIGN KEY (MaDocGia)
- IDSach tham chiếu đến Bảng Sach - FOREIGN KEY (IDSach) REFERENCES
3.1.2 Thiết kế các chức năng
3.1.2.1 Các chức năng quản lý sách a) Tìm sách theo từ khóa:
Ta dùng câu lệnh SELECT DISTINCT MaSach, STT, TenSach, TacGia, MaTacGia,NamXuatBan, Vitri FROM Sach để lấy ra những giá trị khác biệt ở từng cột của BảngSách.
Khi tìm kiếm sách, bạn không cần phải nhập đầy đủ tên sách; chỉ cần một từ hoặc vài từ trong tên cũng đủ để hệ thống đề xuất sách phù hợp Để thực hiện điều này, bạn cần sử dụng câu lệnh Tensach.
Nhưng khi tìm kiếm những cuốn sách trong kho đã hết hay có nghĩa số lượng bằng 0 Vì vậy ta cần áp dụng câu lệnh Soluong > 0.
Vậy cuối cùng ta dùng câu lệnh sau để tìm kiếm sách theo từ khóa: SELECT DISTINCT MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan, Vitri FROM Sach WHERE
Tensach LIKE '%toán%'AND Soluong > 0; b) Nhập sách
Ta dùng câu lệnh INSERT INTO Tên Bảng VALUES (Giá trị); để thêm dữ liệu vào trong các bảng
Chúng ta sử dụng cú pháp trên để thêm vào bảng Sach 3 quyển sách: Giáo trình Toán Cao Cấp, Giáo trình Toán Cao Cấp 2, và Giáo trình Toán Cao Cấp 3, với các giá trị tương ứng.
INSERT INTO Sach(MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan,
Vitri, NgayNhapSach, SoLuong) VALUES ('A001', 1, N'Giáo trình toán cao cấp', N'Đỗ Xuân Chợ', '010', 2023, N'Kệ sách 105', '2023-01-11', 3);
INSERT INTO Sach(MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan,
Vitri, NgayNhapSach, SoLuong) VALUES ('A002', 1, N'Giáo trình toán cao cấp 2', N'Đỗ Xuân Chợ', '010', 2023, N'Kệ sách 105', '2023-01-11', 1);
INSERT INTO Sach(MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan,
Vitri, NgayNhapSach, SoLuong) VALUES ('A003', 1, N'Giáo trình toán cao cấp 3', N'Đỗ Xuân Chợ', '010', 2023, N'Kệ sách 105', '2023-01-11', 0);
Tương tự ta có thể thêm các quyển sách khác.
Mặc dù chúng ta có thể sử dụng các câu lệnh để thêm dữ liệu vào bảng, nhưng do người dùng hệ thống không phải là chuyên gia kỹ thuật, nên việc nhập dữ liệu sẽ được thực hiện thông qua giao diện trực quan.
3.1.2.2 Các chức năng mượn trả sách a) Mượn sách - Tạo phiếu mượn
Chức năng mượn sách bao gồm việc tạo phiếu mượn, yêu cầu thủ thư tạo phiếu trong bảng PhieuMuon mỗi khi sinh viên cần mượn sách Để thực hiện điều này, chúng ta sử dụng câu lệnh: INSERT INTO Phieumuon VALUES (Giá trị), giúp thêm thông tin cần thiết vào bảng Phiếu mượn để tiến hành quy trình mượn sách.
Ví dụ ta cần mượn quyển sách Toán cao cấp 1, ta sẽ dùng câu lệnh sau:
INSERT INTO Phieumuon(MaPhieuMuon, IDSach, MaDocGia, SoLuong, NgayMuon, NgayTra, TrangThai) VALUES ('PM001', , 1 'N21DCMR008', ,2
NOW(), DATE_ADD NOW( (), INTERVAL DAY 7 ), 0);
'PM001': Giá trị đầu tiên là MaPhieuMuon (ID vé mượn) và được đặt thành 'PM001'.
1: Giá trị thứ hai là IDSach (ID sách) và được đặt thành 1.
'N21DCMR008': Giá trị thứ ba là MaDocGia (ID Reader) và được đặt thành 'N21DCMR008'.
2: Giá trị thứ tư là SoLuong (Số lượng) và được đặt thành 2.
NOW(): Giá trị thứ năm là NgayMuon (Ngày mượn) và được đặt thành ngày giờ hiện tại.
DATE_ADD(NOW(), INTERVAL 7 DAY): Giá trị thứ sáu là NgayTra (Ngày trả về) và được đặt thành ngày giờ hiện tại cộng thêm 7 ngày.
0: Giá trị thứ bảy là TrangThai (Trạng thái) và được đặt thành 0.
Câu lệnh SQL chèn phiếu mượn mới vào bảng Phieumuon với giá trị đã chỉ định, sử dụng hàm NOW() để lấy ngày giờ hiện tại và DATE_ADD để thêm 7 ngày cho ngày trả về Trạng thái (TrangThai) được thiết lập là 0, biểu thị sách chưa được trả lại Để quản lý lịch sử mượn trả sách, cần liệt kê phiếu mượn với các thuộc tính như MaPhieuMuon, TenDocGia, TenSach, NgayMuon và NgayTra Câu lệnh SELECT được sử dụng để truy xuất thông tin từ bảng Phieumuon và kết hợp với bảng DocGia.
ON p.MaDocGia = d.MaDocGia, JOIN Sach s ON p.IDSach = s.ID;
Câu lệnh SQL trên đã sử dụng các phép JOIN để kết hợp thông tin từ ba bảng:
`SELECT p.MaPhieuMuon, d.TenDocGia, s.TenSach, p.NgayMuon, p.NgayTra`: Chọn các cột bạn muốn hiển thị trong kết quả.
`FROM Phieumuon p`: Bảng chính là `Phieumuon`, được viết tắt là `p`.
`JOIN DocGia d ON p.MaDocGia = d.MaDocGia`: Kết hợp với bảng `DocGia` thông qua trường `MaDocGia`.
`JOIN Sach s ON p.IDSach = s.ID`: Kết hợp với bảng `Sach` thông qua trường
Câu lệnh này sẽ trả về một bảng kết quả gồm các cột: `MaPhieuMuon`, `TenDocGia`,
Chức năng quản lý thời gian mượn trả và cấm mượn trong hệ thống thông tin thư viện là rất quan trọng, vì nó giúp theo dõi lịch sử mượn trả sách Kết quả hiển thị thông tin về phiếu mượn, bao gồm tên độc giả, tên sách, ngày mượn và ngày trả, từ đó dễ dàng quản lý Để hiệu quả hơn trong việc này, cần thiết lập biến Ngày Quá Hạn để theo dõi thời gian mượn sách chính xác.
SELECT DATEDIFF NOW( (), NgayTra) FROM phieumuon where IDSach = 1
SET @NGAY_QUA_HAN = (SELECT DATEDIFF NOW( (), NgayTra) FROM phieumuon where IDSach = 1 AND MaDocGia = 'N21DCMR008');
SELECT DATEDIFF NOW( (), NgayTra) FROM phieumuon where IDSach = 1 AND
The `DATEDIFF(NOW(), NgayTra)` function is utilized to calculate the number of days between two dates Specifically, it computes the difference in days between the current date (`NOW()`) and the `NgayTra` field in the `phieumuon` table.
`FROM phieumuon`: Xác định bảng dữ liệu từ nơi cần trích xuất thông tin.
`WHERE IDSach = 1 AND MaDocGia = 'N21DCMR008'`: Lọc các bản ghi với điều kiện rằng `IDSach` bằng 1 và `MaDocGia` bằng 'N21DCMR008'.
Câu lệnh này sẽ trả về một bảng kết quả với một cột duy nhất, thể hiện số ngày giữa ngày hiện tại và `NgayTra` cho các phiếu mượn có `IDSach = 1`.
SET @NGAY_QUA_HAN = (SELECT DATEDIFF NOW( (), NgayTra) FROM phieumuon where IDSach = 1 AND MaDocGia = 'N21DCMR008');
`SET @NGAY_QUA_HAN = `: Gán giá trị từ câu lệnh SELECT vào biến
`@NGAY_QUA_HAN` Biến bắt đầu bằng ký tự `@` trong MySQL.
Câu lệnh này thực hiện hai công việc: nó tính toán số ngày giữa ngày hiện tại và
`NgayTra`, sau đó gán giá trị này vào biến `@NGAY_QUA_HAN`.
Sau khi thực hiện cả hai câu lệnh, biến `@NGAY_QUA_HAN` sẽ lưu trữ số ngày giữa ngày hiện tại và `NgayTra` cho các phiếu mượn cụ thể.
CREATE PROCEDURE SetNgayTaiMuon () BEGIN IF @NGAY_QUA_HAN
> 0THEN SET @NGAY_TAI_MUON = DATE_ADD(NOW(), INTERVAL 7 DAY UPDATE); Docgia SET NgayTaiMuon = @NGAY_TAI_MUON where
MaDocGia = 'N21DCMR008'; END IF;END;CALL SetNgayTaiMuon();Giải thích:
CREATE PROCEDURE SetNgayTaiMuon (): Bắt đầu quá trình tạo một thủ tục lưu trữ có tên `SetNgayTaiMuon`.
IF @NGAY_QUA_HAN > 0 THEN: Kiểm tra điều kiện Nếu biến
`@NGAY_QUA_HAN` lớn hơn 0, thì thực hiện các câu lệnh bên trong khối
SET @NGAY_TAI_MUON = DATE_ADD NOW( (), INTERVAL 7DAY): Nếu điều kiện đúng, gán giá trị mới cho biến `@NGAY_TAI_MUON` bằng ngày hiện tại cộng thêm 7 ngày.
UPDATE Docgia SET NgayTaiMuon = @NGAY_TAI_MUON where
MaDocGia = 'N21DCMR008': Cập nhật trường `NgayTaiMuon` trong bảng
`Docgia` cho độc giả có `MaDocGia = 'N21DCMR008'` bằng giá trị mới của biến
Gọi thủ tục SetNgayTaiMuon() để lưu trữ dữ liệu vừa được tạo Thủ tục này sẽ kiểm tra các điều kiện cần thiết và thực hiện các hành động cập nhật nếu các điều kiện đó được thỏa mãn.
Sau khi đã có được 2 biến Ngày Quá Hạn và Ngày Tái Mượn ta tiến hành thực hiện chức năng cấm mượn với câu lệnh sau:
SET @NGAY_TAI_MUON = (SELECT NgayTaiMuon from Docgia WHERE
MaDocGia = 'N21DCMR008'); SET @CHO_PHEP_MUON DATEDIFF NOW( (), @NGAY_TAI_MUON) >= 0; SELECT DISTINCT
MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan, Vitri FROM Sach
WHERE Tensach LIKE '%toán%' AND Soluong > 0 AND
SET @NGAY_TAI_MUON = (SELECT NgayTaiMuon from Docgia WHERE
MaDocGia = 'N21DCMR008'): Lấy giá trị trường `NgayTaiMuon` từ bảng
`Docgia` với điều kiện `MaDocGia = 'N21DCMR008'` Gán giá trị này cho biến
SET @CHO_PHEP_MUON = DATEDIFF NOW( (), @NGAY_TAI_MUON) >0; : Sử dụng hàm `DATEDIFF` để tính toán số ngày giữa ngày hiện tại và
`@CHO_PHEP_MUON`, kiểm tra xem ngày tại mượn có hợp lệ để mượn sách không.
SELECT DISTINCT MaSach, STT, TenSach, TacGia, MaTacGia, NamXuatBan,
Vitri FROM Sach WHERE Tensach LIKE '%toán%' AND Soluong > 0 AND
Câu lệnh @CHO_PHEP_MUON cho phép tìm kiếm sách theo từ khóa và kết hợp với chức năng phiếu cấm mượn Khi biến ChoPhepMuon được thiết lập là đúng, hàm Select sẽ được thực thi; ngược lại, quá trình tìm kiếm sách sẽ không thể diễn ra.
Nếu sinh viên trả sách quá hạn, họ sẽ bị cấm mượn sách trong 7 ngày, trong thời gian này không thể tìm kiếm sách Để hoàn tất việc trả sách, cần thêm một biến là Số Lượng Đã Trả.
SET @SO_LUONG_DA_TRA = (SELECT SoLuongDaTra FROM Phieumuon
WHERE IDSach = 1 AND MaDocGia = 'N21DCMR008');UPDATE Phieumuon
SET SoLuongDaTra = @SO_LUONG_DA_TRA + 1 Where IDSach = 1 and
SET @SO_LUONG_DA_TRA = (SELECT SoLuongDaTra FROM Phieumuon
WHERE IDSach = 1 AND MaDocGia = 'N21DCMR008');: Lấy giá trị trường
`SoLuongDaTra` từ bảng `Phieumuon` với điều kiện `IDSach = 1 AND MaDocGia
= 'N21DCMR008'` Gán giá trị này cho biến `@SO_LUONG_DA_TRA’.
UPDATE Phieumuon SET SoLuongDaTra = @SO_LUONG_DA_TRA + 1
Trong bài viết này, chúng ta sẽ thực hiện câu lệnh cập nhật trong bảng `Phieumuon` để tăng giá trị trường `SoLuongDaTra` lên 1 cho bản ghi có `IDSach = 1` và `MaDocGia = 'N21DCMR008'`.
Câu lệnh này cập nhật thông tin số lượng sách đã trả trong bảng `Phieumuon` cho sách có 'IDSach' và 'MaDocGia' phù hợp với dữ liệu trong Phiếu Mượn.
3.1.2.3 Các chức năng thống kê a) Thống kê số sách còn lại Để thống kê số sách còn lại, ta dùng các câu lệnh sau:
SELECT s.ID AS MaSach, s.TenSach, s.SoLuong AS SoLuongTong,
COALESCE(s.SoLuong - COALESCE(pm.SoLuongDaMuon, 0) +
COALESCE(pm.SoLuongDaTra, 0), s.SoLuong) AS SoLuongConLai FROM
Sach LEFT JOIN (SELECT IDSach, SUM(CASE WHEN TrangThai = 0
THEN ELSE END AS 1 0 ) SoLuongDaMuon, SUM(CASE WHEN TrangThai 1 THEN 1 ELSE 0 END) AS SoLuongDaTra FROM Phieumuon GROUP
BY IDSach) pm ON s.ID = pm.IDSach;
- Tạo Bảng Thống Kê (`pm`)
Sử dụng câu lệnh LEFT JOIN để kết hợp bảng `Sach` và một bảng thống kê tạm thời (`pm`) từ bảng `Phieumuon`.
Bảng `pm` chứa thông tin về số lượng sách đã mượn (`SoLuongDaMuon`) và số lượng sách đã trả (`SoLuongDaTra`) cho mỗi sách.
- Tính Toán Số Lượng Sách Còn Lại
Sử dụng COALESCE để đảm bảo rằng nếu có giá trị `NULL` (không có dữ liệu trong bảng `Phieumuon`), thì giá trị sẽ được coi là 0.
Tính toán số lượng sách còn lại bằng cách trừ đi số lượng đã mượn và cộng thêm số lượng đã trả từ số lượng tổng của mỗi sách.
Câu lệnh này sẽ tạo ra một bảng thống kê với các cột MaSach, TenSach, SoLuongTong và SoLuongConLai, trong đó SoLuongConLai thể hiện số sách còn lại Để thống kê số lượng sách đang cho mượn, bạn có thể sử dụng các hàm sau đây.
SELECT s.ID AS MaSach, s.TenSach, COUNT(p.ID) AS SoLuongMuon FROM
Sach s INNER JOIN Phieumuon p ON s.ID = p.IDSach WHERE p.TrangThai 0 GROUP BY s.ID, s.TenSach;
Sử dụng INNER JOIN để kết hợp thông tin từ bảng `Sach` và `Phieumuon` dựa trên điều kiện `s.ID = p.IDSach`.
Điều Kiện Trạng Thái Mượn (`p.TrangThai = 0`):
Sử dụng điều kiện WHERE p.TrangThai = 0 để chỉ lấy các bản ghi có trạng thái mượn (TrangThai = 0).
Đếm Số Lượng Sách Đã Mượn COUNT(p.ID):
Sử dụng hàm COUNT để đếm số lượng sách đã mượn cho mỗi sách.
Nhóm Theo Mã Sách và Tên Sách (`GROUP BY s.ID, s.TenSach`):
Sử dụng GROUP BY để nhóm kết quả theo Mã Sách và Tên Sách.
Thiết kế giao diện
Giao diện của Hệ thống quản lý thư viện sẽ được thiết kế dưới dạng một website, cho phép người dùng truy cập dễ dàng Hệ thống này hoạt động hiệu quả mà không cần kết nối internet, chỉ cần kết nối với Cơ sở dữ liệu.
Giao diện hệ thống được tối ưu hóa để phục vụ hiệu quả cho Thủ thư và sinh viên mượn sách, yêu cầu sinh viên cung cấp thông tin cần thiết để Thủ thư thực hiện các thao tác mượn sách.
Website của hệ thống sẽ có trang chủ với trang con: Mượn sách, Trả sách, Quản lý sách và Tra cứu phiếu mượn.
Hình 3 1 Giao diện trang chủ của hệ thống quản lý thư viện (Nguồn: Tác giả)
Trang chủ có một ảnh nền hình kệ sách
Trang chủ thể hiện rõ tên “Hệ thống quản lý thư viện”
Trang chủ có 4 button chưa liên kết dẫn đến các trang tương ứng là Mượn sách,Trả sách, Quản lý sách, Tra cứu phiếu mượn.
Câu lệnh: import React from "react";import HeroImage from
The Home component features a visually appealing layout with a hero image and a text container It prominently displays a title, "Hệ Thống Quản Lý Thư," emphasizing its focus on a management system The design is enhanced by using a structured class naming convention for styling, ensuring a cohesive user experience.
The library offers essential functions for users, including options to borrow and return books Users can also manage their book collections and check their borrowing tickets for easy access to their transactions.
Trong phần mượn sách, hệ thống tích hợp 3 chức năng để phục vụ cho việc mượn sách là
“Tra cứu sách, Tạo phiếu mượn và Cấm mượn.
Hình 3 2 Giao diện phần Tra cứu sách (Nguồn: Tác giả)
Khi click vào button “Mượn sách” ở trang chủ, thủ thư sẽ được đưa đến giao diện như trên.
Thủ thư sử dụng chức năng “Tra cứu sách” để tìm kiếm quyển sách cần mượn.
Thủ thư chỉ cần nhập 1 từ khóa trong tên sách, hệ thống sẽ cho ra tất cả sách có tên liên quan
Hình 3 3 Giao diện tra cứu sách theo từ khoá (Nguồn: Tác giả)
Sau khi đã có được sách cần tìm, Thủ thư cần tick vào ô trước Mã Sách để chọn sách.
Hình 3 4 Giao diện hiển thị sách cần tìm (Nguồn: Tác giả)
Sau khi chọn sách, hệ thống sẽ hiển thị danh sách các quyển sách mà thủ thư đã chọn để mượn Thủ thư cần kiểm tra lại tên các quyển sách này trước khi xác nhận mượn.
Thủ thư sẽ truy cập vào giao diện tạo phiếu mượn, nơi cần nhập MSSV của sinh viên để thực hiện quy trình mượn sách.
Hình 3 5 Giao diện phần phiếu mượn (Nguồn: Tác giả)
Nếu Thủ thư nhập sai MSSV, Hệ thống sẽ không truy xuất được dữ liệu và sẽ cảnh báo
Hình 3 6 Giao diện phiếu mượn nếu nhập sai thông tin (Nguồn: Tác giả)
Sau khi đã hoàn thành các thông tin về MSSV, Ngày trả Thủ thư bấm hoàn tất và kết thúc quá trình mượn.
Khi sinh viên mượn sách, họ cần lưu ý rằng việc trả sách quá hạn sẽ dẫn đến việc bị cấm mượn sách tiếp theo Trong trường hợp này, thủ thư sẽ không thể hoàn tất quy trình mượn sách.
" /assets/borrow.jpg";import { createBorrowTicket, getReaderInfo } from
In a React application, the useState hook is employed to manage various states, including reader ID, reader name, borrow date formatted as "YYYY-MM-DD," and return date The useEffect hook is utilized to retrieve selected books from local storage, and if books are found, they are set in the state; otherwise, the user is redirected to a different page.
To enhance user experience, the application allows users to change the reader ID dynamically When the reader ID input changes, it resets any existing messages By fetching reader information asynchronously, the system retrieves data based on the provided reader ID If the data is found, it updates the displayed reader name; otherwise, it shows an error message indicating that no student information was found Additionally, there is a function to create a ticket, ensuring efficient ticket management within the application.
{const promisesArr = [];books.map((book) =>
The borrowing process involves creating a borrowing ticket using the book ID and reader ID, followed by capturing the borrow and return dates Once all tickets are created, the results are processed to check for success If successful, a notification is displayed indicating the successful creation of the borrowing ticket, and the user is navigated to the homepage Conversely, if any ticket creation fails, an error notification is shown The borrow container includes an image and a form prompting users to fill in their borrowing information, ensuring a smooth borrowing experience.
"italic" }} {>msg}
< className="label1">MSSV:< type="text"value readerId onChange onChangeReaderId onBlur getReader={ } ={ } ={ }/The article discusses a borrowing system, featuring a date input for the borrowing date and a separate input for the return date It includes a section for entering the reader's name, which is displayed as disabled Additionally, it presents a table listing books with columns for the book code, title, author, and location, dynamically populated with data from a list of books Each book entry is associated with its unique ID for identification purposes.
"flex",justifyContent: "center",marginTop: "30px",}}>HOÀN
TẤT);};export default Borrow;
Hình 3 7 Giao diện phần Trả sách (Nguồn: Tác giả)
Để trả được sách, thủ thư cần nhập MSSV của sinh viên mượn sách.
Nếu nhập đúng MSSV, hệ thống sẽ hiển thị các quyển sách mà sinh viên đó mượn
Hình 3 8 Giao diện hiện thị các sách mà sinh viện đã mượn (Nguồn: Tác giả)
Nếu muốn trả quyển sách nào thủ thư chỉ cần chọn vào những quyển sách đó và xác nhận trả sách
Hình 3 9 Giao diện chọn sách để trả (Nguồn: Tác giả)
Câu lệnh: import React, { useEffect, useState } from "react";import BorrowImage from" /assets/borrow.jpg";import {getBorrowingTicketByReaderId, returnBookByTicketId,
} from " /api/user"; import moment from "moment";import { Modal notification, } from
The code snippet defines a React functional component using hooks for managing state It initializes state variables for search text, tickets, messages, selected tickets, and modal visibility The `onChange` function updates the search text based on user input The `search` function retrieves borrowing tickets by reader ID asynchronously, displaying a message if no tickets are found Additionally, the `onCheck` function processes the selection of tickets based on user interactions.
{setSelectedTickets(selectedTickets.filter((book) => book.ID !== bookId.ID));}}; const returnBook = async () {=> const promises = selectedTickets.map((ticket)
To successfully return a book using its ticket ID, the system processes the return by executing a function that takes the ticket ID, book ID, reader ID, and return date as parameters After all return promises are resolved, a success notification is displayed if the operation is successful; otherwise, an error notification is shown The interface includes a search bar for entering the student ID to view borrowed book information, and it dynamically displays a table of tickets with relevant details such as ticket ID, student ID, borrower name, book title, borrow date, return date, and status Users can check the status of each ticket, and any relevant messages will be highlighted in red for visibility.
"#fff" }}onChange onCheck checked selectedTickets={ } ={ some((ticket2)
The ticket details include the borrowing reference number, reader ID, reader name, book title, and borrowing date formatted as DD/MM/YYYY The return date is highlighted in red and bold if it is overdue The status of the ticket indicates whether the book is currently borrowed or has been returned.
&& (
DANH SÁCH SÁCH TRẢ{selectedTickets.map((book) (=>
SÁCH)}
{returnBook();}} onCancel={() => setIsModalOpen(false } cancelText="Huỷ bỏ") okText="Đồng ý">Bạn muốn trả lại các cuốn sách sau về thư viện?
{selectedTickets.map((book) => (
{book TenSach } p>))}