TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu về đề tài
1.1.1 Tầm quan trọng của phần mềm kế toán
Sự phát triển của khoa học kỹ thuật đã mang lại nhiều lợi ích cho quản trị kinh doanh, trong đó phần mềm kế toán là một công cụ phổ biến tại các doanh nghiệp Phần mềm kế toán tích hợp các nghiệp vụ của nhân viên kế toán, giúp giải quyết hiệu quả các vấn đề liên quan đến sổ sách, nhật ký công ty, khai thuế, thu nợ, xử lý tiền mặt, thanh toán nợ và trả lương cho nhân viên Ngoài ra, phần mềm còn hỗ trợ doanh nghiệp trong việc lập báo cáo tài chính và dự báo tiền mặt khi cần thiết.
Ngày nay, phần mềm kế toán ngày càng phổ biến trong các công ty nhờ vào những ưu điểm vượt trội của nó Phần mềm này không chỉ tăng tính chính xác cho các phép toán mà còn giúp đơn giản hóa quy trình kế toán, tiết kiệm thời gian và nâng cao hiệu quả làm việc Thay vì phải chi trả cho nhiều nhân viên kế toán, doanh nghiệp chỉ cần đầu tư một khoản tiền ban đầu để mua phần mềm và thuê một nhân viên quản lý, từ đó giảm thiểu chi phí Hơn nữa, phần mềm kế toán còn cung cấp khả năng lưu trữ dữ liệu hoàn hảo, giúp dễ dàng tra cứu và hạn chế rủi ro mất mát thông tin Cuối cùng, việc sử dụng phần mềm cũng hỗ trợ ban lãnh đạo đưa ra chiến lược kinh doanh chính xác dựa trên các số liệu dự báo mà phần mềm cung cấp.
1.1.2 Lý do chọn đề tài
Quản lý vật tư là quy trình quan trọng trong chuỗi cung ứng, bao gồm lập kế hoạch và thực hiện các hoạt động liên quan đến việc cung cấp nguyên liệu cho sản xuất Trong quy trình này, công ty sẽ lập danh sách và đặt hàng vật tư cần thiết, có thể thông qua các chức năng khác để tìm nguồn cung ứng Trách nhiệm chính của quản lý vật tư là xác định lượng nguyên liệu cần thiết tại từng địa điểm trong chuỗi cung ứng, thiết lập kế hoạch bổ sung nguyên liệu, và theo dõi mức tồn kho để đảm bảo đáp ứng kịp thời các yêu cầu vật chất trong suốt quá trình sản xuất.
Quản lý vật tư bao gồm các hoạt động như quản lý nguyên vật liệu, kiểm soát hàng tồn kho, phân tích kho và hoạch định vật liệu Mục tiêu chính là đảm bảo cung cấp nguyên liệu đầy đủ và duy trì mức tồn kho tối đa để phục vụ nhu cầu sản xuất, đồng thời giảm thiểu sự chênh lệch giữa kết quả thực tế và kế hoạch triển khai.
Kế toán vật tư đóng vai trò quan trọng trong việc quản lý nguồn nguyên vật liệu của doanh nghiệp, giúp tiết kiệm chi phí hiệu quả Khi thực hiện kế toán vật tư một cách chính xác, doanh nghiệp có thể nắm rõ thông tin số liệu, từ đó đưa ra các giải pháp hợp lý khi gặp rủi ro liên quan đến nguyên vật liệu Hơn nữa, kế toán vật tư còn giúp doanh nghiệp quản lý hàng hóa chặt chẽ, ngăn ngừa tình trạng thất thoát.
Nhận thức rõ tầm quan trọng của kế toán vật tư trong quản lý doanh nghiệp, nhóm chúng em đã chọn đề tài “Phần mềm kế toán” với sự hỗ trợ của thầy Nguyễn Công Hoan Mục tiêu của chúng em là ứng dụng công nghệ để phát triển phần mềm giúp đơn giản hóa quy trình kế toán vật tư, từ đó giảm bớt khó khăn và vất vả trong công tác này.
Khảo sát hiện trạng
Trên thị trường hiện nay, có nhiều phần mềm kế toán cho doanh nghiệp, nhưng hầu hết đều phức tạp với quá nhiều chức năng, gây khó khăn cho người mới sử dụng, đặc biệt là các doanh nghiệp vừa và nhỏ chỉ cần kế toán vật tư Một số phần mềm kế toán nổi tiếng hiện nay bao gồm MISA, LinkQ và Fast Accounting.
Sau khi dùng thử phần mềm kế toán MISA, chúng em nhận thấy một số hạn chế sau:
Phần mềm nặng nề do tích hợp quá nhiều chức năng và mã code chưa được tối ưu, dẫn đến tình trạng ứng dụng thường xuyên bị treo khi thực hiện các tác vụ.
Người dùng ít hiểu biết về kế toán thường gặp khó khăn khi sử dụng phần mềm kế toán vật tư, vì họ không biết bắt đầu từ đâu Để khắc phục vấn đề này và đáp ứng nhu cầu của người dùng, chúng tôi đã quyết định phát triển một phần mềm chuyên biệt chỉ tập trung vào kế toán vật tư, điểm khác biệt này sẽ giúp người dùng dễ dàng hơn trong việc thực hiện nghiệp vụ kế toán.
Đối tượng nghiên cứu
Đồ án này hướng đến nghiên cứu các đối tượng sau:
❖ Các công nghệ: o Window Presentation Foundation o NodeJS và Express.js o MySQL
❖ Đối tượng trong phạm vi đề tài hướng đến: o Các doanh nghiệp có nhu cầu kế toán vật tư
Phạm vi nghiên cứu
Đề tài nghiên cứu chuyên sâu về phần mềm kế toán vật tư của đơn vị, nhằm phát triển một mô hình phần mềm hỗ trợ hiệu quả cho công tác kế toán tại bộ phận vật tư Sản phẩm này sẽ cải thiện quy trình kế toán và nâng cao hiệu suất làm việc trong bộ phận.
Phương pháp nghiên cứu
Nhóm đã sử dụng các phương pháp nghiên cứu:
• Phương pháp đọc tài liệu
• Phương pháp phân tích các phần mềm hiện có
Nhiệm vụ của đề tài
Đề tài “Phần mềm kế toán” là một phần mềm chạy trên máy tính đáp ứng các yêu cầu sau:
Cung cấp thông tin chính xác, kịp thời và đầy đủ là yếu tố quan trọng giúp tối ưu hóa quá trình quản lý kho, đồng thời hỗ trợ hiệu quả cho các đội thi công.
- Hỗ trợ cho nhân viên kế toán vật tư và thủ kho trong việc quản lý nguyên liệu, vật liệu của công ty.
Cải thiện doanh thu và tiết kiệm chi phí cho công ty thông qua việc giảm bớt đội ngũ nhân công và giảm thiểu sai sót trong quản lý vật tư.
Mục tiêu của đề tài này là:
• Tìm hiểu cách xây dựng phần mềm máy tính
• Tìm hiểu về nghiệp vụ kế toán vật tư
• Xây dựng thành công phần mềm kế toán vật tư trên máy tính
CƠ SỞ LÝ THUYẾT
Tổng quan về công tác kế toán vật tư trong doanh nghiệp
2.1.1 Cơ sở thực tiễn để xây dựng phần mềm kế toán trong doanh nghiệp
2.1.1.1 Khái niệm, vai trò, đặc điểm và các thành phần của phần mềm kế toán a Khái niệm
Phần mềm kế toán là công cụ tự động hóa quá trình xử lý thông tin kế toán trên máy tính, bao gồm việc nhập chứng từ gốc, phân loại và xử lý thông tin theo quy trình kế toán Nó giúp in sổ kế toán, báo cáo tài chính và báo cáo kế toán quản trị, đóng vai trò quan trọng trong việc nâng cao hiệu quả quản lý tài chính.
Phần mềm kế toán không chỉ hỗ trợ công tác kế toán mà còn đóng vai trò quan trọng trong việc quản lý, giám sát và cung cấp thông tin về hoạt động tài chính của đơn vị Sự kết hợp giữa công nghệ thông tin và kế toán đã làm nổi bật vai trò của phần mềm kế toán qua nhiều khía cạnh khác nhau, giúp theo dõi và đo lường hiệu quả kinh tế một cách chính xác và hiệu quả hơn.
Việc tin học hóa công tác kế toán bằng phần mềm kế toán đã thay thế một phần hoặc toàn bộ công việc ghi chép, tính toán và xử lý thủ công của kế toán viên Điều này giúp tăng cường khả năng kiểm tra và giám sát tình hình sử dụng vốn cũng như khả năng huy động vốn vào sản xuất kinh doanh của doanh nghiệp một cách nhanh chóng và chính xác Dựa vào thông tin từ phần mềm kế toán, các nhà quản lý có thể đưa ra những quyết định kinh doanh hữu ích và điều chỉnh nhanh chóng bằng cách thay đổi số liệu trong phần dự toán, từ đó tạo ra nhiều giải pháp lựa chọn khác nhau.
Phần mềm kế toán đóng vai trò quan trọng trong việc số hóa thông tin, góp phần hình thành xã hội thông tin điện tử Thông tin kế toán được lưu trữ dưới dạng tập tin máy tính, giúp dễ dàng trao đổi qua các báo cáo trên mạng nội bộ hoặc Internet Điều này cho phép các nhà đầu tư dễ dàng truy cập thông tin doanh nghiệp thông qua các trang web chính thức của từng công ty.
Người sử dụng thông tin kế toán có thể truy cập dữ liệu dễ dàng qua máy tính, thay vì phải nhận thông tin qua bưu điện hoặc fax Việc sử dụng các công cụ trao đổi điện tử như email và Internet giúp tối ưu hóa quy trình truyền tải thông tin, đồng thời giảm thiểu việc sử dụng giấy tờ Đây là nền tảng quan trọng cho một xã hội thông tin điện tử, phục vụ cho việc trao đổi hiệu quả trong hiện tại và tương lai.
❖ Hoạt động của một phần mềm kế toán được chia làm 3 giai đoạn:
Giai đoạn 1: Nhận dữ liệu đầu vào
Trong giai đoạn này, người dùng cần tự phân loại các chứng từ phát sinh trong quá trình hoạt động kinh tế và nhập chúng thủ công vào hệ thống theo cách phân loại của từng phần mềm cụ thể Sau khi nhập, các chứng từ sẽ được lưu trữ trong cơ sở dữ liệu của máy tính dưới dạng một hoặc nhiều file vật lý.
Trong giai đoạn này, thông tin được lưu trữ và tổ chức, đồng thời tính toán các số liệu tài chính kế toán dựa trên chứng từ đã nhập ở giai đoạn trước Những thông tin này sẽ là cơ sở để tạo ra báo cáo, sổ sách và thống kê cho các công đoạn tiếp theo.
Sau khi người dùng quyết định ghi thông tin chứng từ vào nhật ký, phần mềm sẽ tự động trích lọc các thông tin cốt lõi để ghi vào các nhật ký và sổ chi tiết liên quan Đồng thời, phần mềm cũng thực hiện ghi các bút toán hạch toán lên sổ cái và tính toán kết quả cân đối thử cho từng tài khoản.
Giai đoạn 3: Kết xuất dữ liệu đầu ra
Dựa trên kết quả lưu trữ và tìm kiếm thông tin cũng như tính toán số liệu tài chính trong giai đoạn 2, phần mềm có khả năng xuất báo cáo tài chính, báo cáo thuế, sổ chi tiết và các báo cáo thống kê phân tích khác Người dùng có thể in ấn hoặc lưu trữ dưới dạng tệp để phục vụ cho phân tích thống kê hoặc kết nối với các hệ thống phần mềm khác Tùy vào nhu cầu và khả năng của từng phần mềm kế toán, người sử dụng có thể tùy chỉnh các báo cáo và phân tích để đáp ứng nhu cầu quản trị.
Mô hình hoạt động cho thấy rằng mặc dù các chứng từ có thể được nhập vào hệ thống, nhưng việc chúng có được hạch toán hay không hoàn toàn phụ thuộc vào quyết định của con người, điều này phản ánh gần gũi với quy trình ghi chép kế toán thủ công.
Phần mềm kế toán trên máy vi tính có những đặc trưng cơ bản như thực hiện công việc kế toán thông qua chương trình phần mềm, được thiết kế dựa trên nguyên tắc của một trong bốn hình thức kế toán hoặc kết hợp các hình thức này Mặc dù phần mềm không hiển thị toàn bộ quy trình ghi sổ kế toán, nhưng vẫn đảm bảo khả năng in ấn đầy đủ sổ kế toán và báo cáo tài chính theo quy định.
Các loại sổ kế toán trong hình thức kế toán trên máy vi tính được xác định bởi phần mềm kế toán sử dụng Tuy nhiên, các loại sổ này không nhất thiết phải hoàn toàn giống với mẫu sổ kế toán ghi tay.
Phần mềm kế toán bao gồm các thành phần chính như thông tin, phương pháp xử lý thông tin, máy tính và con người Những yếu tố này kết hợp với nhau để tạo ra một hệ thống kế toán hiệu quả.
❖ Các thành phần của phần mềm kế toán bao gồm:
(1) Con người: là yếu tố quyết định trong hệ thống, thực hiện các thủ tục để biến đổi dữ liệu nhằm tạo ra thông tin
Phần cứng máy tính điện tử là thiết bị có khả năng tổ chức và lưu trữ lượng lớn thông tin, đồng thời xử lý dữ liệu tự động với tốc độ nhanh và độ chính xác cao, mang lại thông tin hữu ích cho người dùng.
Chương trình là một tập hợp các lệnh được viết bằng ngôn ngữ lập trình mà máy tính có thể hiểu, nhằm hướng dẫn máy thực hiện các thao tác cần thiết theo thuật toán đã được xác định.
(4) Dữ liệu: bao gồm toàn bộ các số liệu, các thông tin phục vụ cho việc xử lý trong h ệ thống, trợ giúp các quyết định cho nhà quản lý
(5) Thủ tục là những chỉ dẫn của con người
2.1.1.2 Trình tự xây dựng phần mềm kế toán
Bước 1: Khảo sát nhu cầu
Tìm hiểu và làm sáng tỏ mục đích sử dụng, yêu cầu mức cao về ứng dụng của khách hàng Bước 2: Phân tích
Tổng quan về Windows Presentation Foundation (WPF)
WPF (Windows Presentation Foundation) là thư viện lập trình giao diện đồ họa trong Microsoft.NET Framework từ phiên bản 3.0, được xây dựng trên nền tảng Direct3D Nó tối ưu hóa sức mạnh xử lý của card đồ họa và hỗ trợ các cải tiến giao diện trên Windows Vista và Windows 7, đồng thời hoạt động độc lập với mọi độ phân giải màn hình WPF kế thừa và mở rộng các tính năng phát triển ứng dụng như XAML, điều khiển, tác hợp dữ liệu, đồ họa 2D và 3D, hoạt hình, kiểu dáng, mẫu, tài liệu, và đa phương tiện Ứng dụng WPF có thể chạy trên desktop hoặc qua các trình duyệt web phổ biến như IE, Firefox, và Safari, cho phép phát triển các ứng dụng web phong phú (Rich Internet Application - RIA) Hơn nữa, WPF cung cấp một mô hình lập trình nhất quán, tách biệt rõ ràng giữa giao diện người dùng và logic nghiệp vụ.
Windows Presentation Framework (WPF) là một giao diện người dùng tiên tiến, giúp phát triển ứng dụng với trải nghiệm người dùng phong phú WPF thuộc về NET Framework 3.0 và các phiên bản cao hơn Kiến trúc của WPF được xây dựng trên mô hình lớp quản lý, kết hợp với các lớp API không quản lý và Core.
❖ Lớp quản lý (Managed Layer)
Lớp quản lý trong WPF bao gồm hai thành phần chính: Presentation Framework và Presentation Core Presentation Framework cung cấp các chức năng thiết yếu để xây dựng ứng dụng WPF, bao gồm điều khiển, liên kết dữ liệu, kiểu dáng, hình dạng, tài liệu, chú thích và hình ảnh động Tập tin PresentationFamework.dll đảm nhiệm vai trò quan trọng này.
PresentationCore functions as a management wrapper around MILCore, offering a public interface for MIL It serves as the foundation for the WPF Visual System, providing classes essential for constructing the visual tree of applications The Visual System is responsible for generating this visual tree, with PresentationCore.dll playing a crucial role in this process.
❖ Lớp không được quản lý (Unmanaged Layer)
Lớp MilCore, hay còn gọi là Media tích hợp Thư viện Core, được viết bằng mã không quản lý để tích hợp chặt chẽ với DirectX Công nghệ DirectX nằm dưới WPF, cho phép hiển thị đồ họa hiệu quả thông qua phần cứng và phần mềm Hệ thống MIL tiếp nhận hướng dẫn vẽ từ Visual System và chuyển đổi thành dữ liệu mà DirectX có thể hiểu, giúp tối ưu hóa giao diện người dùng.
❖ Lớp API Lõi (Core API Layer)
Lớp hệ điều hành bao gồm các thành phần cốt lõi như hạt nhân, user32, GDI, và điều khiển thiết bị, cùng với card đồ họa Những thành phần này cho phép các ứng dụng truy cập các API mức thấp Đặc biệt, user32 đóng vai trò quan trọng trong việc quản lý bộ nhớ và quá trình tách.
2.2.3 Khái niệm thiết kế giao diện
WPF cung cấp 2 khái niệm Style và Template cho phép xây dựng các mẫu thuộc tính nhằm áp dụng cho nhiều đối tượng giao diện người dùng a Styling
Thành phần Style trong lập trình cho phép tạo ra một tập hợp các định dạng thuộc tính, lưu trữ trong Resource hoặc thư mục Resource của Project, tương tự như CSS trong lập trình Web Các thuộc tính quan trọng nhất của thành phần Style bao gồm BaseOn, TargetType, Setters và Triggers.
Trong XAML, tài nguyên Style được định nghĩa bằng thuộc tính khóa x:Key, cho phép các đối tượng tham chiếu đến Style này thông qua thuộc tính khóa Tất cả các file tài nguyên cần được khai báo trong file App.xaml của dự án.
Khai báo file tài nguyên trong App.xaml
Một Style có thể được kế thừa từ một Style khác và thừa hưởng các thuộc tính từ Style cơ sở
Style “ButtonMenu” kế thừa từ “ButtonStyle”
Thuộc tính TargetType của Style xác định loại đối tượng mà style sẽ ảnh hưởng đến Khi chọn TargetType là Control, tất cả các đối tượng control sẽ có thể áp dụng style này.
Khai báo một Style có thể dùng cho tất cả các đối tượng control
In styling, properties are assigned by specifying the property name and its corresponding value To set up an event, the EventSetter attribute is utilized to assign the event name and its handling function.
Thiết lập thuộc tính và sự kiện cho Style
Trong WPF đối tượng Trigger dùng để thay đổi thuộc tính giao diện khi những điều kiện nhất định được thỏa mãn
Thiết lập Triggers cho ButtonStyle khi click
Một số loại Triggers khác sử dụng trong Style:
- DataTrigger: Đối tượng DataTrigger sẽ thay đổi thuộc tính hoặc thực thi hành động khi dữ liệu liên kết thỏa mãn điều kiện định trước
- Multitrigger: Đối tượng Multitrigger có thể thiết lập nhiều điều kiện định trước để kích hoạt hành động
Trong WPF, lập trình viên có thể tùy chỉnh giao diện bằng cách sử dụng khái niệm Template, cho phép tạo ra các controls với hình dáng và cách trình bày riêng Có hai loại khuôn mẫu chính: ControlTemplate, dùng để định nghĩa cấu trúc hiển thị cho các điều khiển UI, và DataTemplate, dùng để xác định cách thức hiển thị dữ liệu.
Trong WPF, các thành phần của controls được phân chia theo:
• Logic: định nghĩa các trạng thái , sự kiện và thuộc tính
• Template: định nghĩa diện mạo của control
Sự kết nối giữa Logic và Template được thực hiện thông qua cơ chế DataBinding, trong đó mỗi control đều có một template mặc định Template của control thường được bao gồm trong một Style và liên kết với các thuộc tính thiết lập khác.
2.2.4 Các tính năng nổi bật
WPF data binding là một phương pháp hiệu quả để trình bày và tương tác với dữ liệu, cho phép các phần tử liên kết trực tiếp với nguồn dữ liệu từ biến giá trị Hơn nữa, DataBinding giúp tự động cập nhật dữ liệu giữa mô hình kinh doanh và giao diện người dùng, nâng cao tính linh hoạt và hiệu suất của ứng dụng.
DataBinding có thể hoạt động theo hai cách: một chiều (source → target hoặc target ← source) hoặc hai chiều (source ↔ target) Nguồn (source) của một databinding có thể là thuộc tính thông thường hoặc thuộc tính phụ thuộc, trong khi thuộc tính đích (target) của databinding phải là thuộc tính phụ thuộc.
• OneWay: Cập nhật target property theo source property
• TwoWay: Cập nhật hai chiều giữa target property và source property
• OneTime: Khởi tạo target property từ source property Sau đó việc cập nhật dữ liệu sẽ không được thực hiện
• OneWayToSource: Giống OneWay nhưng theo hướng ngược lại: cập nhật từ target property sang source property
Hướng binding trong lập trình phụ thuộc vào thuộc tính mục tiêu Nếu thuộc tính mục tiêu có thể được người dùng thay đổi giá trị, như TextBox.Text, thì kiểu binding sẽ là TwoWay; ngược lại, nếu không thể thay đổi, kiểu binding sẽ là OneWay.
Ví dụ binding dữ liệu giữa Textbox và Label
Khi 2 thuộc tính được binding với nhau, khi 1 bên thay đổi bên còn lại sẽ được update
2 chế độ Binding OneWay và TwoWay, thuộc tính Binding.UpdateSourceTrigger cho phép thiết lập thời điểm binding source sẽ được cập nhật Enum UpdateSourceTrigger gồm
• Default: Đa số các dependency property sẽ được dùng giá trị PropertyChanged, còn với property Text sẽ có giá trị là LostFocus
• PropertyChanged: Cập nhật binding source khi binding target property thay đổi
• LostFocus: Cập nhật binding source khi binding target mất focus
• Explicit: Cập nhật binding source chỉ khi bạn gọi phương thức UpdateSource
Tổng quan về NodeJS
NodeJS là một nền tảng mã nguồn mở, chạy trên môi trường JavaScript và được xây dựng trên V8 JavaScript engine của Chrome, cho phép thực thi mã JavaScript bên ngoài trình duyệt Được ra mắt vào năm 2009, NodeJS nổi bật với khả năng lập trình bất đồng bộ, khác biệt với chế độ đồng bộ, nơi mà từng dòng mã được thực thi lần lượt.
Khi bất đồng bộ thực thi tất cả dòng code cùng một lúc
NodeJS là nền tảng dựa trên JavaScript runtime của Chrome, được thiết kế để phát triển các ứng dụng mạng nhanh chóng và dễ mở rộng Với mô hình I/O lập trình theo sự kiện và non-blocking, NodeJS mang lại hiệu suất cao và tính nhẹ nhàng, trở thành công cụ lý tưởng cho các ứng dụng dữ liệu thời gian thực trên thiết bị phân tán.
NodeJS là một môi trường runtime mã nguồn mở, đa nền tảng, lý tưởng cho việc phát triển ứng dụng mạng và ứng dụng server-side Các ứng dụng NodeJS được lập trình bằng JavaScript và có khả năng chạy trên các hệ điều hành như OS X, Microsoft Windows và Linux.
NodeJS cung cấp một thư viện phong phú với nhiều module JavaScript, giúp đơn giản hóa quá trình phát triển ứng dụng web và giảm thiểu việc sử dụng quá mức Node.js.
2.3.2 Các tính năng của NodeJS
Lập trình hướng sự kiện và không đồng bộ là đặc điểm nổi bật của thư viện NodeJS, trong đó tất cả các API đều hoạt động không bị chặn Điều này có nghĩa là server sử dụng NodeJS sẽ không bao giờ chờ đợi phản hồi từ API, mà sẽ tiếp tục xử lý các yêu cầu khác một cách hiệu quả.
24 sang API kế tiếp sau khi gọi API đó và cơ chế thông báo của Events trong NodeJS giúp server nhận được phản hồi từ lần gọi API trước
• Cực kỳ nhanh chóng: Được xây dựng trên Công cụ JavaScript V8 của Google
Chrome, thư viện NodeJS có khả năng xử lý mã vô cùng nhanh
NodeJS hoạt động trên mô hình đơn luồng với vòng lặp sự kiện, cho phép máy chủ phản hồi không bị chặn và mở rộng khả năng xử lý tốt hơn so với các server truyền thống Với cơ chế này, NodeJS có thể phục vụ một lượng yêu cầu lớn hơn so với các máy chủ như Apache HTTP Server, nhờ vào khả năng xử lý đồng thời mà không cần tạo ra nhiều luồng.
Các ứng dụng NodeJS không sử dụng vùng nhớ tạm thời (buffer) cho dữ liệu, mà thay vào đó, chúng xuất dữ liệu theo khối một cách trực tiếp.
• License - NodeJS được phát hành theo giấy phép MIT
2.3.3 Đối tượng và ứng dụng của NodeJS
Các công ty đang sử dụng Node js có thể kể đến một số tên tuổi lớn như eBay, General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipin, Yahoo, và Yammer
• Hệ thống Notification - Giống như Facebook hay Twitter
• Websocket server - Các máy chủ web socket như là Online Chat, Game Server…
• Fast File Upload Client - Các chương trình upload file tốc độ cao
• Ad Server - Các máy chủ quảng cáo
• Cloud Services - Các dịch vụ đám mây
• RESTful API - Những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API
• Any Real-time Data Application - Bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực
• Ứng dụng Single Page Application (SPA) - Những ứng dụng này thường request rất nhiều đến server thông qua AJAX
• Ứng dụng truy vấn tới NoSQL database - Như MongoDB, CouchDB,…
• Ứng dụng CLI - Các công cụ sử dụng command-line
2.3.4 Một số ưu, nhược điểm của NodeJS
Nhận và xử lý nhiều kết nối chỉ với một thread duy nhất giúp hệ thống tiết kiệm RAM tối đa và hoạt động nhanh chóng, vì không cần tạo thread mới cho mỗi truy vấn.
• NodeJS tận dụng tối đa tài nguyên của server mà không tạo ra độ trễ vì áp dụng ưu điểm non-blocking I/O của Javascript
With its event-driven architecture, non-blocking I/O, and integration with JavaScript, this technology is an excellent choice for web services built using JSON.
NodeJS là lựa chọn lý tưởng cho việc xây dựng các ứng dụng Single Page Application nhờ khả năng xử lý nhiều yêu cầu đồng thời và thời gian phản hồi nhanh Điều này đặc biệt phù hợp cho các ứng dụng không muốn tải lại trang và cần đáp ứng nhanh chóng từ người dùng, như các ứng dụng thời gian thực, chat, và các dịch vụ mạng xã hội như Facebook, Twitter.
NodeJS tối ưu hóa hiệu suất bằng cách tận dụng hệ điều hành Unix, cho phép xử lý hàng nghìn tiến trình đồng thời Điều này giúp NodeJS đạt được hiệu quả hoạt động tối đa, mang lại trải nghiệm tuyệt vời cho người dùng.
Streaming Data: Các trang web thông thường gửi yêu cầu HTTP và nhận phản hồi (luồng dữ liệu) Khi cần xử lý một luồng dữ liệu khổng lồ, NodeJS sẽ xây dựng các Proxy để phân vùng các luồng dữ liệu, nhằm tối ưu hóa hiệu suất cho các luồng dữ liệu khác.
• Viết được cho cả 2 phía server và client Chạy đa nền tảng trên Windows, MAC hoặc Linux Hơn nữa cộng đồng NodeJS rất lớn và hoàn toàn miễn phí
NodeJS có những hạn chế khi được sử dụng để xây dựng các ứng dụng nặng và tốn tài nguyên Điều này là do NodeJS được phát triển bằng C++ và JavaScript, dẫn đến việc phải thông qua một trình biên dịch của NodeJS, làm tăng thời gian xử lý.
• Giống như hầu hết các công nghệ mới, việc triển khai NodeJS trên host không phải là điều dễ dàng
• Thiếu sự kiểm duyệt chất lượng các module NodeJS
2.3.5 So sánh NodeJS và PHP
- PHP từ lâu đã dễ dàng cài đặt và sử dụng ở phía server và được cung cấp bởi Zend engine
- NodeJS là một môi trường thực thi cho JavaScript ở phía server, được cung cấp bởi V8 JavaScript engine của Chrome
PHP là ngôn ngữ lập trình đồng bộ, tuy nhiên, một số API của nó hỗ trợ hoạt động không đồng bộ Ngôn ngữ này sử dụng I/O chặn đa luồng để thực hiện nhiều tác vụ song song.
- NodeJS về bản chất là bất đồng bộ, như vừa tìm hiểu ở trên
- PHP sử dụng các công nghệ cài đặt module như PEAR (framework và hệ thống phân phối cho các component PHP có thể sử dụng lại)
- NodeJS đi kèm với một hệ thống quản lý package được gọi là NPM (Node
PHP được hỗ trợ rộng rãi trên các hệ thống quản lý nội dung (CMS) phổ biến như Drupal, Joomla và WordPress, vì vậy nó thường được ưa chuộng để phát triển blog và ứng dụng web thương mại điện tử.
Tổng quan về ExpressJS
Express.js là một framework nhỏ gọn nhưng linh hoạt, được xây dựng trên nền tảng Node.js, cung cấp các tính năng mạnh mẽ cho việc phát triển ứng dụng web và di động.
Express.js là một framework mã nguồn mở với giấy phép cho phép sử dụng cho các ứng dụng thương mại, được hỗ trợ bởi một cộng đồng lớn Bạn có thể yên tâm sử dụng Express.js cho mọi loại dự án, từ nhỏ đến lớn.
Express.js cung cấp nhiều package hỗ trợ, giúp các lập trình viên dễ dàng làm việc với framework này mà không lo ngại về hiệu suất Nó còn bổ sung các tính năng hữu ích, nâng cao khả năng lập trình mà không làm giảm tốc độ của Node.js Hiện nay, nhiều framework nổi tiếng của Node.js đều sử dụng Express.js như một chức năng cốt lõi.
Express.js, được sáng lập bởi TJ Holowaychuk, lần đầu tiên được phát hành vào ngày 22 tháng 5 năm 2010 với phiên bản 0.12 trên GitHub Vào tháng 6 năm 2014, dự án này đã được StrongLoop mua lại, và sau đó StrongLoop trở thành một phần của IBM vào tháng 9 năm 2015 Đến tháng 1 năm 2016, quyền quản lý Express.js đã được chuyển giao cho Node.js Foundation.
Sơ đồ cấu trúc Expressjs
Các thành phần của cấu trúc:
• app.js chứa những thông tin về cấu hình, khai báo, định nghĩa,… để các ứng dụng của chúng ta chạy tốt nhất
• package.json có thể chứa các package cho ứng dụng chạy
• Folder routes chứa những route có trong các ứng dụng
• Folder view chứa các view/template cho ứng dụng
• Folder public chứa được các file css, js, images,… cho các ứng dụng
Một số chức năng chính của Expressjs :
• Hỗ trợ middleware để trả về các HTTP request
• Định ngữ route dựa trên các action của HTTP (CRUD)
• Nó cho phép trả về các trang HTML sử dụng các template engine
Express hướng tới sự linh động, nó chỉ những gì bạn cần thì bạn mới phải thêm vào
Không giống như các đối thủ như là Rails hay Django, hướng đến một cách cứng nhắc để có thể xây dựng ứng dụng
Express JS được sử dụng để xây dựng máy chủ web để xử lý các yêu cầu API
Express.js mở rộng tính năng của Node.js bằng cách cung cấp middlewares, giúp xử lý trung gian hiệu quả Điều này đơn giản hóa khả năng điều hướng ứng dụng và hỗ trợ tích hợp nhiều template engine, giúp việc tương tác với HTML trở nên dễ dàng hơn.
2.4.4 Tìm hiểu về Router trong Express
A router is an object that serves as a distinct instance of middleware and routes, combining the functionalities of both.
2, có thể gọi nó là một mini application
Applications built with Express.js come with an integrated Router feature The Router functions as an argument or can serve as an argument for other routers This allows us to utilize routers to create nested routes For instance, we can implement it using the syntax: app.use('/calendar', router).
2.4.5 Tìm hiểu về Middleware trong Express
Middleware là phần mềm hoạt động giữa hệ điều hành và các ứng dụng, nhằm quản lý dữ liệu và tối ưu hóa giao tiếp cho các ứng dụng phân tán.
Middleware trong Express.js là các thành phần quan trọng trong ứng dụng phân tán, cho phép các phần mềm chạy đồng thời trên nhiều máy tính trong cùng một hệ thống Những ứng dụng này thực hiện các nhiệm vụ cụ thể, đảm bảo sự tương tác và phối hợp hiệu quả giữa các hệ thống khác nhau.
Khi làm việc với express chúng ta thường xuyên sử dụng một loạt những middleware functions Middleware trong Expressjs là:
• Một loạt các functions được gọi bởi các router layer trước khi request cuối cùng được thực thi
• Function thực hiện nhận các request, response của 1 chu kỳ HTTP request/ response
• Function cũng có thể chỉnh sửa các request, response trước khi gửi đến next middleware function
• Cũng có thể update response hoặc chấm dứt nếu cần thiết
• Function nhận vào 3 tham số: đối tượng request, đối tượng response và next function
Middleware được dùng để làm các việc sau:
• Thực thi được bất kỳ đoạn code nào
• Làm kết thúc chu kỳ request – response
Hiện nay, các web framework đóng vai trò quan trọng trong việc kết nối các phần của ứng dụng Đặc biệt, việc sử dụng middleware trong các ứng dụng web giúp tối giản số lượng dòng code cần viết, mang lại hiệu quả cao cho quá trình phát triển.
Middleware là thành phần trung gian giữa các request và response, thực hiện các xử lý logic trên web server Trong các Framework ứng dụng web, Middleware bao gồm các hàm dùng để tiền xử lý và lọc request trước khi chúng được xử lý logic, cũng như điều chỉnh response trước khi gửi đến người dùng.
Công cụ mã nguồn mở phpMyAdmin
2.5.1 Giới thiệu phpMyAdmin là một công cụ với mã nguồn mở được tạo ra bằng ngôn ngữ PHP nhằm mục đích giúp người sử dụng quản trị cơ sở dữ liệu của MySQL thông qua một trình duyệt web thay vì sử dụng giao diện cửa sổ dòng lệnh (command line interface) Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi, thực hiện báo cáo SQL, hoặc quản lý người dùng và cấp phép
Sử dụng phpMyAdmin giúp nâng cao hiệu quả quản lý cơ sở dữ liệu, mang lại sự tiện lợi vượt trội so với việc sử dụng cửa sổ dòng lệnh PhpMyAdmin được thiết kế để thực hiện các tác vụ phổ biến như xem danh sách cơ sở dữ liệu, kiểm tra cấu trúc bảng, chèn dữ liệu và thay đổi cấu trúc bảng một cách nhanh chóng Giao diện trực quan của phpMyAdmin giúp người dùng dễ dàng thao tác và quản lý dữ liệu hiệu quả.
Công cụ mã nguồn mở phpMyAdmin
Giao diện này cho phép người dùng dễ dàng xem số lượng cơ sở dữ liệu được tạo ra trên máy chủ thông qua khung bên trái Ngoài ra, khi nhập dữ liệu, người dùng sẽ nhận biết được kiểu dữ liệu cần nhập cho từng trường, giúp tránh lỗi nhập liệu Những tính năng tiện ích này không có trong cửa sổ dòng lệnh.
phpMyAdmin không chỉ cung cấp giao diện thân thiện với người dùng mà còn sở hữu nhiều tính năng vượt trội so với cửa sổ dòng lệnh Người dùng có thể thực hiện các tác vụ quản lý cơ sở dữ liệu một cách dễ dàng thông qua phpMyAdmin Đặc biệt, phpMyAdmin cho phép người dùng xem thiết kế của cơ sở dữ liệu một cách trực quan, giúp nâng cao trải nghiệm quản lý dữ liệu.
2.5.2 Ưu điểm phpMyAdmin có những ưu điểm nổi bật sau:
- Tăng hiệu quả công tác quản lý cơ sở dữ liệu:
PhpMyAdmin là một công cụ mạnh mẽ không chỉ giúp duyệt cơ sở dữ liệu và thực hiện truy vấn SQL, mà còn quản lý đặc quyền người dùng, đồng thời cung cấp các tính năng quản trị toàn diện.
Sử dụng phpMyAdmin giúp bạn xử lý các tình huống bất ngờ như SQL injection, lỗi người dùng và các trường hợp hỏng hóc cơ sở dữ liệu khác Đặc biệt, phần mềm này còn hỗ trợ sao lưu MySQL tự động, mang lại sự tiện lợi và an toàn cho quản lý dữ liệu.
- Cộng đồng hỗ trợ rộng lớn
- Đa ngôn ngữ: Phần mềm hiện sẵn có 64 ngôn ngữ khác nhau
phpMyAdmin, như nhiều công cụ mã nguồn mở khác, được phát triển bởi cộng đồng lập trình viên toàn cầu, cho phép bất kỳ ai có kỹ năng lập trình đóng góp vào phần mềm Tuy nhiên, tính mở này cũng từng dẫn đến việc xuất hiện lỗi bảo mật trong các phiên bản trước, cho phép hacker truy cập vào cơ sở dữ liệu mà không cần mật khẩu Hiện tại, lỗi này đã được khắc phục và chưa có lỗi bảo mật nghiêm trọng nào được phát hiện Dù vậy, các quản trị viên cơ sở dữ liệu vẫn thường giới hạn quyền truy cập vào phpMyAdmin chỉ cho một số địa chỉ IP nhất định để giảm thiểu rủi ro đối với cơ sở dữ liệu.
Giới thiệu về chuỗi JSON
JSON, viết tắt của Javascript Object Notation, là một định dạng dữ liệu dễ đọc và sử dụng, được hầu hết các ngôn ngữ lập trình hỗ trợ Với khả năng lưu trữ linh hoạt trong file hoặc cơ sở dữ liệu, JSON trở nên phổ biến hơn XML nhờ vào cấu trúc đơn giản và khả năng truy vấn dễ dàng.
JSON là định dạng nhẹ để trao đổi dữ liệu văn bản, với cú pháp đơn giản bao gồm hai phần: key và value Trong cơ sở dữ liệu, key tương ứng với tên field, còn value là giá trị của nó trong một bản ghi cụ thể.
Chuỗi JSON được bao lại bởi dấu ngoặc nhọn {}
Các key, value của JSON bắt buộc phải đặt trong dấu nháy kép {"}
Khi làm việc với nhiều cặp key-value trong JSON, cần sử dụng dấu phẩy (,) để phân tách chúng Các key trong JSON nên được đặt bằng chữ cái không dấu, số, dấu gạch dưới (_) và không chứa khoảng trắng, với ký tự đầu tiên không phải là số Điều này tương tự như quy tắc đặt tên biến trong PHP.
2.6.3 Các trường nên dùng JSON
Lưu trữ dữ liệu đơn giản có thể thực hiện bằng cách lưu metadata trên server dưới dạng chuỗi JSON trong database, giúp dễ dàng giải mã khi cần thiết Với PHP, các hàm json_encode và json_decode hỗ trợ mã hóa và giải mã dữ liệu, tương tự như serialize và unserialize nhưng chỉ áp dụng cho dữ liệu cơ bản như chuỗi và số Việc sử dụng JSON thay vì serialize là lựa chọn tốt hơn vì tính tương thích cao với các ngôn ngữ lập trình khác JavaScript và ActionScript có thể được sử dụng để xử lý thông tin trả về từ server một cách nhanh chóng và dễ dàng.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Đặc tả yêu cầu
Dựa vào tình hình tồn kho và kế hoạch thi công, phòng kế hoạch sẽ lập kế hoạch mua vật tư với sự đồng ý của ban lãnh đạo Quá trình mua vật tư được thực hiện qua hợp đồng với nhà cung cấp Trước khi nhập kho, vật tư sẽ được kiểm tra chất lượng bởi ban kiểm nghiệm của công ty, và kết quả sẽ được ghi lại trong Biên bản Kiểm nghiệm vật tư Nếu vật tư không đạt yêu cầu, sẽ được trả lại cho nhà cung cấp Sau khi nhận hàng, bộ phận kế toán lập phiếu nhập kho dựa trên hợp đồng, biên bản kiểm nghiệm và hóa đơn, với bốn liên để lưu trữ và chuyển cho các bộ phận liên quan Thủ kho sẽ tiến hành nhập kho và viết thẻ kho dựa trên phiếu nhập kho.
Khi có nhu cầu xuất vật tư, nhân viên phụ trách công trình sẽ viết phiếu yêu cầu xuất kho và gửi cho ban lãnh đạo để ký duyệt Sau khi được phê duyệt, kế toán vật tư sẽ liên hệ với thủ kho để kiểm tra tình hình tồn kho và lập phiếu xuất kho có chữ ký của ban lãnh đạo Phiếu xuất kho được lập thành 3 liên: một liên dành cho kế toán vật tư, một liên cho thủ kho, và một liên cho người nhận vật tư để theo dõi tại công trình Trên phiếu xuất kho chỉ ghi số lượng vật tư xuất, và cuối kỳ, đơn giá bình quân sẽ được ghi thêm vào phiếu.
Cuối kỳ, thủ kho chuyển toàn bộ chứng từ nhập, xuất vật tư cho bộ phận kế toán để thực hiện hạch toán vật tư Kế toán phân loại chứng từ, tổng hợp số liệu và tính giá xuất kho cho từng vật tư, hoàn thiện các chỉ tiêu trên phiếu xuất kho và ghi sổ chi tiết vật tư Đồng thời, bộ phận này cung cấp bảng kê nhập - xuất - tồn vật tư để theo dõi lượng tồn kho, từ đó điều chỉnh hợp lý lượng mua vào và xuất ra.
Cuối kỳ, kế toán vật tư phối hợp với thủ kho và ban kiểm kê để tiến hành kiểm kê và đánh giá lại vật tư thực tế Dựa trên kết quả kiểm kê và bảng kê nhập - xuất - tồn, ban kiểm kê lập biên bản để nộp cho ban lãnh đạo Sau đó, dựa vào quyết định xử lý chênh lệch kiểm kê của ban lãnh đạo, kế toán vật tư thực hiện hạch toán điều chỉnh lại vật tư.
Cuối mỗi kỳ kế toán hoặc theo yêu cầu của ban lãnh đạo, kế toán vật tư sẽ lập các báo cáo tài chính liên quan đến vật tư.
3.1.2 Xác định yêu cầu bài toán
Để nâng cao hiệu quả quản lý và kế toán vật tư, cần xây dựng một hệ thống tự động thay thế công việc thủ công trước đây Hệ thống này phải đáp ứng các yêu cầu cụ thể để đảm bảo công tác kế toán vật tư được thực hiện một cách hiệu quả và chính xác.
Phản ánh nghiệp vụ kinh tế phát sinh thông qua nhập các chứng từ phiếu xuất kho, phiếu nhập kho,…
Từ đầu vào là các chứng từ trên thì đầu ra là:
- Sổ chi tiết vật tư
- Bảng kê nhập xuất tồn vật tư
- Báo cáo nhập xuất tồn vật tư
- Báo cáo tồn kho vật tư
Các hồ sơ thu thập được:
- Bảng Tài khoản (Số hiệu Tài khoản, tên tài khoản, loại tài khoản)
- Hợp đồng mua vật tư
- Biên bản kiểm nghiệm vật tư
- Hoá đơn giá trị gia tăng
- Phiếu yêu cầu xuất vật tư
- Biên bản kiểm kê, đánh giá lại vật tư
- Quyết định xử lý chênh lệch kiểm kê, đánh giá lại
- Bảng kê nhập - xuất - tồn
- Sổ chi tiết vật tư
- Báo cáo nhập – xuất – tồn
- Báo cáo tồn kho vật tư
- Báo cáo kiểm kê, đánh giá lại
- Báo cáo sử dụng vật tư
3.1.3 Mô tả nghiệp vụ bài toán
3.1.3.2 Biểu đồ phân rã chức năng
3.1.3.3 Mô tả chi tiết chức năng
- Nhận hợp đồng mua hàng: kế toán vật tư sẽ nhận hợp đồng mua hàng từ bộ phận kế hoạch của công ty
Kế toán vật tư sẽ nhận biên bản kiểm nghiệm từ ban kiểm nghiệm để đánh giá số lượng, quy cách, mẫu mã và chất lượng của vật tư, từ đó quyết định xem vật tư có đủ điều kiện nhập kho hay không.
- Nhận hóa đơn GTGT: kế toán vật tư nhận hóa đơn GTGT từ nhà cung cấp để làm căn cứ thanh toán sau này
- Viết phiếu nhập kho: Viết phiếu nhập kho theo số lượng thực nhận, giá trị vật liệu nhập kho ghi trên hoá đơn (ghi giá đích danh)
- Gửi bộ hồ sơ thanh toán: kế toán vật tư gửi hóa đơn GTGT và phiếu nhập kho cho bộ phận kế toán thanh toán
- Ghi thẻ kho: Dựa trên số lượng thực tế nhập kho (trên phiếu nhập)
- Nhận phiếu yêu cầu xuất vật tư: nhận từ bộ phận quản lý của đội thi công
Kế toán vật tư sẽ lập phiếu xuất kho dựa trên số lượng vật tư tồn kho thực tế và số lượng vật tư được yêu cầu, chọn số nhỏ hơn giữa hai đại lượng này để ghi vào cột yêu cầu xuất Thủ kho sẽ điền vào số lượng thực xuất.
- Ghi thẻ kho: Ghi vào thẻ kho dựa trên số lượng thực xuất
Cập nhật giá xuất kho là quy trình quan trọng, trong đó các bộ phận cần chuyển giao các hóa đơn chứng từ cần thiết như hóa đơn và phiếu nhập - xuất về phòng kế toán Kế toán vật tư sẽ thực hiện việc cập nhật dữ liệu vào phần mềm kế toán chi tiết vật tư, lưu trữ thông tin và tính toán giá xuất kho bình quân cuối kỳ để áp dụng vào các phiếu xuất trong kỳ.
Phần mềm kế toán giúp ghi sổ chi tiết vật liệu bằng cách xử lý số liệu và ghi nhận từng nghiệp vụ nhập, xuất vật tư theo từng loại.
Sau khi cập nhật dữ liệu vào phần mềm kế toán, kế toán vật tư có thể lập bảng kê Nhập - Xuất - Tồn vật tư Phần mềm sẽ tự động xử lý số liệu và cung cấp bảng kê chi tiết về tình hình nhập, xuất và tồn kho vật tư.
Cuối tháng hoặc khi có yêu cầu từ ban lãnh đạo, kế toán vật tư phối hợp với thủ kho và ban lãnh đạo thực hiện kiểm kê thực tế tình hình tồn kho của từng vật tư, bao gồm cả số lượng và giá trị Dựa vào kết quả kiểm kê và bảng kê nhập - xuất - tồn, biên bản kiểm kê và đánh giá lại sẽ được lập theo mẫu quy định.
Kế toán vật tư nhận quyết định xử lý chênh lệch kiểm kê và đánh giá lại từ ban giám đốc, từ đó thực hiện các điều chỉnh cần thiết để đảm bảo tính chính xác và minh bạch trong quản lý tài sản.
- Báo cáo N-X vật tư: Phần mềm kế toán sẽ xử lý số liệu, từ các chứng từ nhập, xuất vật tư để đưa ra báo cáo N-X vật tư
- Báo cáo N-X-T kho vật tư: Dựa vào bảng kê nhập - xuất - tồn để lập báo cáo theo chỉ tiêu số lượng (chỉ lấy ở cột số lượng)
Báo cáo chênh lệch và đánh giá lại được thực hiện dựa trên biên bản kiểm kê thực tế, nhằm lập báo cáo chính xác theo chỉ tiêu về số lượng và giá trị.
Phân tích logic nghiệp vụ
3.2.1 Sơ đồ tiến trình nhập kho
3.2.2 Sơ đồ tiến trình xuất kho
3.2.3 Sơ đồ tiến trình kiểm kê, đánh giá lại vật tư
3.2.4 Sơ đồ tiến trình báo cáo
Kiến trúc hệ thống
Tầng trình bày được phát triển bằng công nghệ NET, cụ thể là WPF, và áp dụng mô hình MVVM để thiết kế hệ thống phần mềm với các thành phần chính.
- View: thành phần giao diện phần mềm được mô tả bằng xaml giúp cho người dùng có thể tương tác được với hệ thống
ViewModel là thành phần chịu trách nhiệm đồng bộ hóa dữ liệu từ model lên view Mối quan hệ giữa View và ViewModel được thiết lập thông qua kỹ thuật binding, cho phép View được ánh xạ trực tiếp tới ViewModel.
Mô hình giúp phần mềm truy xuất và thao tác với dữ liệu từ dịch vụ, gửi yêu cầu đến dịch vụ qua giao thức HTTP (GET, POST, PUT, DELETE) đến một URL để xử lý dữ liệu.
❖ Business Logic Tier: được xây dựng bằng NodeJS Express, thiết kế theo dạng RESTful API
- Router: nhận request từ model ở Presentation Tier và gọi hàm thực thi tương ứng ở Controller
- Controller: nhận request từ router, xử lý các yêu cầu, tính toán cần thiết và trả dữ liệu về cho người dùng dưới dạng JSON
- Model: giúp service truy xuất và thao tác với dữ liệu ở phía server, gửi yêu cầu đến server bằng các SQL query
❖ Data Tier: sử dụng hệ quản trị MySQL trả dữ liệu về cho service dưới dạng JSON