ÂAÛI HOAÛC ÂAÌ NÀÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Khoa Đa Phương Tiện o0o Báo Cáo Cuối kì Môn Lập Trình Hướng Đối Tượng C++ Tên đề tài QUẢN LÝ NHẬP HÀNG 2 MỤC LỤC 1 Class HangHoa 4 1 1 Thuộ.
Class HangHoa
Thuộc tính
MAHANG: là chuỗi có độ dài 10 kí tự
SOLG: số lượng hàng hóa có độ dài 3
DONGIABAN: đơn giá bán có độ dài 5 kí tự
TRANGTHAI: trạng thái có một trong các giá trị sau:
= 0: Mặt hàng đã ngừng kinh doanh
= 2: Hàng tạm ngừng bán (vì tạm hết)
Các phương thức
1.2.1 Hàm khởi tạo Đây là constructor khởi tạo mặc định
Hàm này xuất thông tin cho 1 hàng hóa dưới dạng bảng
1.2.3 Hàm khởi tạo có tham số
Hàm khởi tạo có các tham số là mã hàng hóa, tên hàng hóa, số lượng, đơn giá, trạng thái
1.2.4 Các hàm getter các thuộc tính
Các hàm này trả về thông tin các thuộc tính
1.2.5 Các hàm setter các thuộc tính
Các hàm này sẽ đặt các giá trị cho các thuộc tính
class NhapHang
Thuộc tính
Mã đơn nhập (MADONNHAP) có độ dài 10 ký tự, giúp xác định duy nhất mỗi đơn hàng trong hệ thống Mã nhà cung cấp (MANCC) cũng có độ dài 10 ký tự, thể hiện rõ nguồn cung cấp hàng hóa Ngày nhập (NGAYNHAP) định dạng yyyymmdd, cho phép theo dõi thời gian thực hiện đơn hàng chính xác Tổng tiền (TONGTIEN) là số nguyên thể hiện tổng số tiền của đơn hàng, giúp quản lý chi phí hiệu quả.
Phương thức
2.2.1 Hàm khởi tạo có tham số
2.2.2 Hàm khởi tạo không có tham số
Hàm này trả về định dạng dd/mm/yyyy từ chuỗi có định dạng yyyyMMdd
Ví dụ chuỗi vào: 20220103 hàm này sẽ trả về là 03/01/2022
Hàm này sẽ tiến hành hiển thị 1 NhapHang trên 1 dòng
Class NhapChiTiet
Các thuộc tính
MÃ HÀNG: mã hàng hóa có độ dài 10 kí tự
SOLGNHAP: Số lượng nhập có 3 kí tự
THANHTIEN: thành tiền = Số lượng nhập x đơn giá nhập
Các phương thức
3.2.1 Hàm khởi tạo không tham số
3.2.3 Hàm khởi tạo có tham số
Hàm này sẽ xuất ra thông tin dưới dạng dòng
Hàm main
Hàm checkMAHANG
- Đầu vào là danh sách hàng hóa ds, số lượng hàng hóa n và mã hàng hóa cần kiểm tra
- Đầu ra là kiểu true hoặc false:
+ Nếu mã hàng không phải 10 kí tự thì trả vê false
+ Nếu mã hàng đã có trong danh sách bằng cách so sánh tuần tự mã hàng cần tìm với các mã hàng trong danh sách thì trả về false
+ Nếu thỏa mãn điều kiện thì trả về true
Hàm checkMAHANG_1
Hàm này trả về true nếu tìm thấy mã hàng trong danh sách ngược lại trả về false
Hàm checkMADONNHAP
Hàm này đầu vào là danh sách NhapHang, số lượng trong danh sách nhập hàng n và mã cần so sánh
- Đầu ra là kiểu true hoặc false:
+ Nếu mã đơn nhập không phải 10 kí tự thì trả vê false
Nếu mã đơn nhập đã tồn tại trong danh sách, hệ thống sẽ so sánh tuần tự mã hàng cần tìm với các mã đơn nhập đã có để kiểm tra trùng lặp Trong trường hợp phát hiện mã đã có trong danh sách, hàm sẽ trả về kết quả là false để tránh ghi nhận các đơn nhập trùng lặp, đảm bảo tính chính xác của dữ liệu Điều này giúp duy trì tính nhất quán và tránh lỗi trong quá trình xử lý đơn hàng.
+ Nếu thỏa mãn điều kiện thì trả về true.
Hàm checkMANCC
Hàm này check mã nhà cung cấp có đủ 10 kí tự không, nếu đủ 10 kí tự thì trả về true ngược lại trả về false
Hàm checkNGAY
Hàm này check một ngày có đủ 8 kí tự theo định dạng yyyymmdd hay không
Hàm themMoiHH
Hàm này sẽ nhập mới một hàng hóa vào danh sách
+ Nhập vào mã hàng và kiểm tra nhập mã hàng
+ Nhập vào Đơn giá bán
+ Thêm vào cuối danh sách đồng thời tăng số lượng n lên 1 đơn vị
Hàm nhapHang
Hàm này thực hiện việc thêm mới lần nhập hàng, bao gồm tạo đơn nhập hàng và chi tiết các mặt hàng trong đơn Đồng thời, quá trình thêm dữ liệu cũng tự động cập nhật số lượng hàng hóa trong file hh.txt, phản ánh chính xác số lượng được nhập cho từng mặt hàng trong chi tiết đơn nhập.
Trong một đơn nhập hàng, có thể có nhiều chi tiết khác nhau, tất cả đều cùng chung mã đơn nhập Các chi tiết này bao gồm các mặt hàng đa dạng, phản ánh quá trình nhập hàng phong phú và đa dạng Tổng tiền của mã đơn nhập sẽ được tính dựa trên tổng các chi tiết nhập này, phản ánh chính xác giá trị thực tế của đơn hàng Việc hiểu rõ cấu trúc này giúp quản lý kho hàng và thanh toán hiệu quả hơn, tối ưu hóa quy trình nhập hàng trong doanh nghiệp.
Hàm THONGKESOTONCUACACMATHANG
Hàm này giúp thống kê số lượng tồn kho của các mặt hàng trong hệ thống Thông tin về số lượng tồn (SOLG) sẽ được lấy từ file hàng hóa và hiển thị dưới dạng bảng rõ ràng, dễ theo dõi Việc này giúp quản lý tồn kho chính xác, hỗ trợ các quyết định kinh doanh hiệu quả.
TONGTIENTRACHO1NCC
Dựa vào thông tin trong file nhap.txt, chương trình sẽ xác định các mã nhà cung cấp khác nhau và tính tổng số tiền cho từng nhà cung cấp đó Các kết quả sẽ được trình bày dưới dạng bảng, thể hiện rõ tổng tiền của từng nhà cung cấp riêng biệt Quá trình này giúp tổng hợp rõ ràng các khoản chi phí theo từng nhà cung cấp, hỗ trợ quản lý tài chính hiệu quả hơn.
Hàm tinhsoluongnhapcuamotmahang
- Đầu vào là danh sách chi tiết nhập, số lượng chi tiết nhập
Chức năng này cho phép người dùng nhập vào mã hàng để kiểm tra và đếm số lượng của mã hàng đó trong hệ thống Sau khi nhập mã hàng, hệ thống sẽ xác nhận và đếm tổng số lượng sản phẩm đã được nhập Cuối cùng, chương trình sẽ hiển thị ra màn hình tổng số lượng mã hàng đã nhập, giúp người dùng dễ dàng theo dõi tồn kho một cách chính xác và hiệu quả.
Hàm readFileHH
- Hàm này sẽ đọc file hh.txt
File hh.txt có định dạng như yêu cầu là
Sau khi đọc từng dòng thông tin, mỗi dòng sẽ tương ứng với một hàng hóa và được lưu trữ vào danh sách hàng hóa Đồng thời, biến n cũng được gán bằng số lượng của từng mặt hàng, giúp quản lý kho hiệu quả hơn Việc xử lý dữ liệu theo cách này đảm bảo danh sách hàng hóa luôn cập nhật chính xác về số lượng và loại hàng tồn kho.
Hàm ReadFileNhap
Hàm này đọc file nhap.txt
File nhap.txt có định dạng
Sau khi đọc từ file các thông tin về nhaphang sẽ được lưu vào trong danh sach nhaphang
Hàm ReadFileNhapChiTiet
Hàm này sẽ tiến hành đọc file Nhapchitiet.txt có định dạng
Sau khi đọc xong sẽ được lưu trữ trong danh sách nhapchitiet
Hàm saveFileHH
Hàm này lưu danh sách hàng hóa ra file Hh.txt theo định dạng mỗi hàng hóa lưu trên 1 dòng
Hàm saveFileNhap
Hàm này lưu danh sách NhapHang ra file Nhap.txt
Hàm saveFileNhapChiTiet
Hàm này lưu danh sách NhapChiTiet ra file Nhapchitiet.txt theo định dạng
Hàm menu
Hàm này hiển thị các thông tin cho người dùng lựa chọn từ 0->6
Hàm main
Kết quả khi chạy chương trình
Chức năng thoat chuong trinh
Khi người dùng nhân thoát thì sẽ có thông báo là “Ban chon thoat” và tiến hành thoát chương trình.
Chức năng 1 Them mới hàng hóa
Nhập vào mã hàng đã tồn tại trong danh sách thì sẽ thông báo là 1 mã hàng đa tồn tại và bắt người dùng nhập mới
Khi nhập thành công thì sẽ thông báo là thêm mới hàng hóa thành công
Chức năng 2 thêm mới lần nhập hàng
Khi người dùng nhập một mã đơn nhập đã có trong danh sách hoặc không đúng điều kiện thì thông báo và bắt người dùng nhập lại:
Sau khi nhập thành công sẽ có thông báo là nhập thành công thông tin sẽ được cập nhật và lưu lại.
Chức năng 3 Thống kê số tồn của các mặt hàng
Khi nhấn chọn 3 từ menu chính
Chương trình sẽ hiển thị bảng thông tin về số lượng tồn của các mặt hàng cho người dùng.
Chức năng 4 Tổng tiền đã chi cho 1 nhà cung cấp
Chức năng hiển thị
Hiển thị danh sách hàng hóa
26 Hiển thị danh sách nhập
Hiển thị danh sách nhập chi tiêt
Tính kế thừa
Trong bài đã tổ chức thành 3 Class là Class HangHoa, Class NhapHang và Class NhapChiTiet
Class NhapChiTiet được kế thừa từ class NhapHang
Tính trừu tượng
Trừu tượng hóa dữ liệu (Data abstraction) là quá trình chỉ cung cấp thông tin cần thiết ra bên ngoài và ẩn đi các chi tiết phức tạp của cơ sở dữ liệu hoặc hệ thống Điều này giúp biểu diễn thông tin một cách tối giản, rõ ràng trong chương trình mà không tiết lộ các chi tiết kỹ thuật hay cấu trúc bên trong Data abstraction nâng cao khả năng quản lý dữ liệu, cho phép phát triển phần mềm dễ dàng hơn và tối ưu hóa hiệu suất hệ thống.
Trong dự án, các đối tượng được trừu tượng thành ba lớp dữ liệu chính, trong đó hàng hóa gồm các thông tin quan trọng như mã hàng hóa, tên hàng hóa, số lượng, đơn giá bán và trạng thái Điều này giúp xây dựng hệ thống quản lý hàng hóa một cách rõ ràng và hiệu quả Việc phân chia dữ liệu thành các lớp dễ dàng cho việc duy trì và mở rộng chức năng của dự án Áp dụng trừu tượng hóa dữ liệu giúp tối ưu hóa quy trình xử lý và tăng tính tổ chức của hệ thống quản lý hàng hóa.
Tính đóng gói
Trong lớp HangHoa, tính đóng gói thể hiện qua các thuộc tính như MAHANG, SOLG, DONGIABAN, TRANGTHAI, và TEN, cùng với các phương thức getter, setter để kiểm soát truy cập dữ liệu Các thuộc tính này được khai báo là private nhằm đảm bảo tính bảo mật và tránh bị truy cập trực tiếp từ bên ngoài lớp Người dùng chỉ có thể truy cập hoặc chỉnh sửa dữ liệu thông qua các phương thức công khai, giúp duy trì tính toàn vẹn của dữ liệu trong quá trình lập trình hướng đối tượng Điều này giúp nâng cao khả năng bảo trì và mở rộng của mã nguồn trong phát triển phần mềm.
Tính đóng gói (Encapsulation) là cơ chế che giấu dữ liệu (Data Hiding) trong lập trình hướng đối tượng, khi lớp (class) che giấu các dữ liệu, hàm và phương thức ở dạng private để bảo vệ thông tin Nhờ đó, dữ liệu chỉ có thể được truy cập và sử dụng đúng mục đích qua các hàm và phương thức public mà class cung cấp, giúp đảm bảo tính toàn vẹn và an toàn của dữ liệu Vì vậy, từ bên ngoài lớp, bạn không thể truy cập trực tiếp vào các thuộc tính hoặc gọi các phương thức private của class.
Tính đa hình
Đa hình (polymorphism) đề cập đến khả năng tồn tại nhiều hình thái khác nhau trong lập trình hướng đối tượng Đây là hiện tượng xuất hiện khi một cấu trúc cấp bậc của các lớp liên kết với nhau thông qua tính kế thừa, giúp tăng tính linh hoạt và mở rộng trong quá trình phát triển phần mềm.
Trong lớp NhapHang Có định nghĩa hàm Xuat()
Lớp NhapChiTiet được kế thừa từ lớp nhập hàng và định nghĩa lại hàm Xuat này như sau:
Hay trong class HangHoa có các phương thức khởi tạo có tham số và không có tham số đây cũng là một dạng của đa hình: