Bài toán quản lý cửa hàng thú nuôiCùng với sự phát triển của công nghệ thông tin, các chương trình phục vụ cho việcquản lý nhà hàng, khách sạn, cửa hàng, …đã không còn xa lạ đối với doan
MÔ TẢ BÀI TOÁN
Lý do chọn bài toán
1.1.1 Công nghệ thông tin hiện nay
Trong những thập kỉ gần đây, công nghệ nói chung đang phát triển rất nhanh chóng và đạt được nhiều thành tựu vượt bậc trong nhiều lĩnh vực khác nhau, một trong số đó phải kể đến lĩnh vực công nghệ thông tin Ngày nay, công nghệ thông tin đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày, nó được sử dụng rộng rãi như một công cụ quan trọng, giúp nâng cao hiệu quả và tăng độ chính xác trong công việc. Phân tích và thiết kế hệ thống thông tin quản lý là một phần quan trọng của công nghệ thông tin Nó giúp con người có thể quản lý cơ sở dữ liệu một cách hiệu quả, đơn giản và nhanh chóng hơn, giúp tiết kiệm thời gian và nguồn nhân lực.
1.1.2 Bài toán quản lý cửa hàng thú nuôi
Cùng với sự phát triển của công nghệ thông tin, các chương trình phục vụ cho việc quản lý nhà hàng, khách sạn, cửa hàng, …đã không còn xa lạ đối với doanh nghiệp và nhà kinh doanh.
Tuy nhiên, trên thực tế, tại một số nhà hàng, cửa hàng, trong đó có các cửa hàng thú nuôi, các nghiệp vụ quản lý và thanh toán vẫn được thực hiện thủ công, điều này có thể dẫn đến những vấn đề như nhầm lẫn, chậm trễ và gây phiền toái cho khách hàng Mặt khác, số ít khác cũng đã áp dụng các chương trình quản lý vào kinh doanh nhưng vẫn chưa thực sự đạt hiệu quả cao Để giải quyết vấn đề trên, các cửa hàng cần áp dụng công nghệ thông tin vào quản lý và thanh toán hoá đơn cho khách hàng Việc sử dụng một phần mềm chuyên nghiệp trong các nghiệp vụ của cửa hàng sẽ làm tăng khả năng quản lý, đồng thời cũng tăng độ chính xác, tránh nhầm lẫn và tiết kiệm thời gian hơn trong thanh toán Vì vậy, nhóm chúng em đã quyết định giải quyết bài toán “Xây dựng chương trình quản lí cửa hàng thú nuôi” Tuy nhiên, do kiến thức còn hạn chế nên không thể tránh khỏi có những thiếu sót, mong cô sẽ đóng góp ý kiến để bài tập lớn của nhóm em được hoàn chỉnh hơn.
Phát biểu bài toán
Bài toán hướng tới quản lý 4 đối tượng, gồm:
Kho (tên kho, thông tin thú nuôi, thông tin mặt hàng, địa chỉ)
- Hóa đơn mua (mã hóa đơn mua, tên khách hàng, địa chỉ, mặt hàng, số lượng, dơn giá, thành tiền, ngày/tháng/năm mua)
- Hóa đơn nhập (mã hóa đơn nhập, mã nhà cung cấp, tên nhà cung cấp, địa chỉ, mặt hàng, số lượng, giá nhập, thành tiền, ngày/tháng/năm nhập)
Khách hàng (mã khách hàng, tên khách hàng, địa chỉ, số điện thoại, năm sinh)
Nhà cung cấp (mã nhà cung cấp, tên nhà cung cấp, địa chỉ, số điện thoại)
Với mỗi đối tượng thì chương trình quản lí cưả hàng thú nuôi sẽ:
Người quản lí: quản lí doanh thu, quản lí khách hàng, quản lí nhân viên, quản lí việc nhập, mua các loại mặt hàng và thú nuôi, quản lý giá nhập và giá bán
Thủ kho: quản lí việc mua, nhập các loại mặt hàng và thú nuôi, kiểm tra số lượng tồn kho của các loại mặt hàng và thú nuôi đó.
Thu ngân: nhập thông tin khách hàng và tạo các hóa đơn nhanh chóng, tiết kiệm thời gian.
Xác định bài toán
Thông tin các kho và các mặt hàng, thú nuôi có trong kho
Thông tin của hóa đơn nhập và hóa đơn mua
Thông tin của khách hàng
Thông tin của nhà cung cấp
Thống kê doanh thu theo tháng và năm
Thống kê tổng số khách hàng của cửa hàng
Thống kê tổng số nhà cung cấp của cửa hàng
Những công nghệ, kĩ thuật, giải pháp sử dụng:
Phần mềm hỗ trợ lập trình: Dev C++
Phần mềm hỗ trợ thực hiện báo cáo: Microsoft word, Microsoft Powerpoint,Canva.
PHÂN TÍCH CÁC CHỨC NĂNG CỦA BÀI TOÁN
Quản lí kho
Quản lý kho trong cửa hàng thú nuôi là quá trình tổ chức và điều phối các hoạt động liên quan đến nhập, xuất, và duy trì hàng tồn kho của các sản phẩm thú cưng, thức ăn, phụ kiện và các dịch vụ khác Mục tiêu chính của quản lý kho là đảm bảo sẵn có đủ hàng hóa để đáp ứng nhu cầu của khách hàng trong khi tối ưu hóa chi phí và quản lý hiệu suất.
Nhập thông tin kho: nhập thông tin về kho hàng, các mặt hàng trong kho, chủng loại thú nuôi và số lượng mặt hàng Thông tin này sẽ được sử dụng để theo dõi và quản lí sản phẩm trong kho. o Nhập thông tin chi tiết về kho hàng: tên kho, địa chỉ o Nhập thông tin chủng loại thú nuôi: số lượng, giá cả thú nuôi o Nhập thông tin mặt hàng: tên mặt hàng, số lượng, giá cả mặt hàng
In thông tin trong kho: thông tin kho hàng, thông tin thú nuôi và thông tin mặt hàng o In thông tin kho hàng: tên kho, địa chỉ o In thông tin thú nuôi: chủng loại, tên, số lượng, giá cả thú nuôi o In thông tin mặt hàng: tên, số lượng, giá cả mặt hàng
Quản lí hóa đơn
Hóa đơn mua hàng của cửa hàng thú nuôi là một tài liệu quan trọng thể hiện thông tin về giao dịch mua sắm giữa cửa hàng và khách hàng.
Nhập hóa đơn mua hàng: mã hóa đơn, tên khách hàng, địa chỉ, mặt hàng, số lượng, đơn giá và ngày mua hàng
In hóa đơn mua hàng: mã hóa đơn, tên khách hàng, địa chỉ, mặt hàng, số lượng, đơn giá, ngày mua hàng, thành tiền
Ghi file hóa đơn mua hàng
Đọc file hóa đơn mua hàng
Hóa đơn nhập hàng là một tài liệu quan trọng trong quản lý kho và ghi chép giao dịch mua sắm sản phẩm từ nhà cung cấp.
Nhập hóa đơn nhập hàng: mã hóa đơn, mã nhà cung cấp, tên nhà cung cấp, địa chỉ, mặt hàng, số lượng, ngày nhập hàng và giá nhập
In hóa đơn nhập hàng: mã hóa đơn, mã nhà cung cấp, tên nhà cung cấp, địa chỉ, mặt hàng, số lượng, giá nhập, ngày nhập hàng và thành tiền
Ghi file hóa đơn nhập hàng
Đọc file hóa đơn nhập hàng
Quản lí khách hàng
Quản lý khách hàng là một phần quan trọng trong hoạt động của cửa hàng thú nuôi, giúp theo dõi thông tin về khách hàng, tạo mối quan hệ và cung cấp dịch vụ tốt nhất.
Nhập thông tin khách hàng: mã, tên, địa chỉ, số điện thoại, năm sinh của khách hàng
Thêm, sửa, xóa khách hàng: o Ghi chú thông tin chi tiết về khách hàng khi họ tạo tài khoản hoặc mua hàng lần đầu. o Cho phép cập nhật thông tin của khách hàng khi có sự thay đổi, ví dụ như địa chỉ hoặc số điện thoại. o Cho phép xóa thông tin của khách hàng nếu họ yêu cầu hoặc không muốn duy trì tài khoản.
Duyệt danh sách khách hàng đã thêm: mã khách hàng, tên khách hàng, địa chỉ, số điện thoại, năm sinh
Lưu thông tin khách hàng vào file
In thông tin khách hàng từ file: mã khách hàng, tên khách hàng, địa chỉ, số điện thoại, năm sinh
Quản lý khách hàng không chỉ giúp cửa hàng duy trì mối quan hệ tốt với khách hàng mà còn tối ưu hóa quy trình kinh doanh và tăng cường khả năng tiếp cận và hiểu biết về thị trường.
Quản lí nhà cung cấp
Quản lý nhà cung cấp giúp đảm bảo sản phẩm đầy đủ, duy trì mối quan hệ đối tác vững chắc và đảm bảo nguồn cung sản phẩm liên tục và chất lượng.
Nhập thông tin nhà cung cấp: nhập mã, tên, địa chỉ, số điện thoại của nhà cung cấp
Thêm, sửa, xóa nhà cung cấp:
- Sử dụng vòng lặp while để kiểm tra năm sinh, nếu năm sinh nhập vào nhỏ hơn
1100, yêu cầu nhập lại cho đến khi năm sinh lớn hơn 1100
- Tạo một node mới Node mới này sẽ chứa thông tin về khách hàng và có con trỏ next trỏ đến NULL
- Gán thông tin về khách hàng vừa nhập vào node vừa tạo Đảm bảo rằng con trỏ next của node mới trỏ đến NULL Trả về node mới vừa tạo.
Void themkhachhang(): Thêm khách hàng mới vào danh sách
- Gọi hàm makeNode(khach) để tạo một node mới chứa thông tin về khách hàng mới
- Thực hiện nhập các thông tin của khách hàng.
Void duyetkhachhang(): Duyệt thông tin của khách hàng vừa nhập
- Sử dụng vòng lặp while để duyệt qua danh sách liên kết khách hàng. Vòng lặp sẽ được thực hiện cho đến khi con trỏ đến cuối danh sách.
- Mỗi lần lặp, in ra màn hình thông tin chi tiết về một khách hàng, bao gồm mã khách hàng, tên khách hàng, địa chỉ, số điện thoại, và năm sinh.
Void suaKHang(): Sửa thông tin của khách hàng đã có
- Thực hiện nhập mã khách hàng cần sửa thông tin.
- Sử dụng vòng lặp while để duyệt qua danh sách liên kết và tìm khách hàng có mã trùng khớp với mã được nhập Nếu tìm thấy, hiển thị thông tin chi tiết về khách hàng và yêu cầu nhập thông tin mới Thông tin mới này sẽ được gán trực tiếp vào node tương ứng trong danh sách liên kết Ngược lại, thông báo “Không tìm thấy khách hàng cần sửa”.
Void xoakhachhang(): Xóa khách hàng ra khỏi danh sách
- Thực hiện nhập mã khách hàng cần xóa.
- Xóa luôn node đầu tiên nếu mã được nhập vào trùng khớp Ngược lại, thực hiện xóa các node khác trong danh sách bằng cách sử dụng vòng lặp while để kiểm tra mã khách hàng trùng khớp với mã được nhập Mỗi khi xóa, giải phóng bộ nhớ cho node được xóa.
Void khachInFile(): Ghi thông tin khách hàng vào file
- Tạo một đối tượng ‘fstream’ với tên ‘fout2’ để ghi dữ liệu vào file có tên là
- Kiểm tra xem việc mở file có thành công hay không Sau đó, sử dụng vòng lặp để duyệt qua danh sách liên kết khách hàng Sau mỗi lần lặp, thông tin về khách hàng từ node hiện tại được ghi vào file.
- Sau khi ghi xong, đóng file để đảm bảo dữ liệu được lưu trữ Thông báo lỗi nếu không mở được file.
Void khachOutFile(): Đọc thông tin khách hàng từ file
- Tạo một đối tượng ‘fstream’ với tên ‘fin2’ để đọc dữ liệu từ file có tên là
- Kiểm tra xem việc mở file có thành công hay không Sau đó, sử dụng vòng lặp để đọc từng bản ghi khách hàng từ file Sau mỗi lần đọc, thông tin chi tiết về khách hàng được xuất ra màn hình.
- Sau khi đọc xong, đóng file để giải phóng tài nguyên Thông báo lỗi nếu không mở được file.
3.2.4 Chương trình con quản lý nhà cung cấp
nccNode* makenode(): Nhập thông tin của nhà cung cấp
- Thực hiện nhập mã nhà cung cấp, tên nhà cung cấp, địa chỉ, số điện thoại
- Tạo một node mới Node mới này sẽ chứa thông tin về nhà cung cấp và có con trỏ next trỏ đến NULL
- Gán thông tin về nhà cung cấp vừa nhập vào node vừa tạo Đảm bảo rằng con trỏ next của node mới trỏ đến NULL Trả về node mới vừa tạo.
Void themNCC(): Thêm nhà cung cấp vào danh sách
- Gọi hàm makenode để tạo một nút mới chứa thông tin về nhà cung cấp mới.
- Thực hiện nhập các thông tin của nhà cung cấp.
Void duyetncc(): Duyệt thông tin của nhà cung cấp vừa nhập
- Sử dụng vòng lặp while để duyệt qua danh sách liên kết nhà cung cấp. Vòng lặp sẽ được thực hiện cho đến khi con trỏ đến cuối danh sách.
- Mỗi lần lặp, in ra màn hình thông tin chi tiết về một nhà cung cấp, bao gồm mã nhà cung cấp, tên nhà cung cấp, địa chỉ, số điện thoại.
Void suaNcc(): Cập nhật lại thông tin của nhà cung cấp đã có
- Thực hiện nhập mã nhà cung cấp cần sửa thông tin.
- Sử dụng vòng lặp while để duyệt qua danh sách liên kết và tìm nhà cung cấp có mã trùng khớp với mã được nhập Nếu tìm thấy, hiển thị thông tin chi tiết về nhà cung cấp và yêu cầu nhập thông tin mới Thông tin mới này sẽ được gán trực tiếp vào node tương ứng trong danh sách liên kết Ngược lại, thông báo
“Không tìm thấy nhà cung cấp cần sửa”.
Void xoaNcc(): Xóa nhà cung cấp ra khỏi danh sách
- Thực hiện nhập mã nhà cung cấp cần xóa.
- Xóa luôn node đầu tiên nếu mã nhà cung cấp được nhập vào trùng khớp. Ngược lại, thực hiện xóa các node khác trong danh sách bằng cách sử dụng vòng lặp while để kiểm tra mã khách hàng trùng khớp với mã được nhập Mỗi khi xóa, giải phóng bộ nhớ cho node được xóa.
Void nhaccInFile(): Lưu thông tin nhà cung cấp vào file
- Tạo một đối tượng ‘fstream’ với tên ‘fout3’ để ghi dữ liệu vào file có tên là
- Kiểm tra xem việc mở file có thành công hay không Sau đó, sử dụng vòng lặp để duyệt qua danh sách liên kết nhà cung cấp Sau mỗi lần lặp, thông tin về nhà cung cấp từ node hiện tại được ghi vào file.
- Sau khi ghi xong, đóng file để đảm bảo dữ liệu được lưu trữ Thông báo lỗi nếu không thể mở file.
Void nhaccOutFile(): Đọc thông tin nhà cung cấp từ file
- Tạo một đối tượng ‘fstream’ với tên ‘fin3’ để đọc dữ liệu từ file có tên là
- Kiểm tra xem việc mở file có thành công hay không Sau đó, sử dụng vòng lặp để đọc từng bản ghi khách hàng từ file Sau mỗi lần đọc, thông tin chi tiết về nhà cung cấp được xuất ra màn hình.
- Sau khi đọc xong, đóng file để giải phóng tài nguyên Thông báo lỗi nếu không thể mở file.
3.2.5 Chương trình con thống kê
tkNode*makenode(): Nhập doanh thu theo tháng và năm
- Thực hiện nhập năm và doanh thu của năm đó Sử dụng vòng lặp while để kiểm tra năm nhập vào có nằm trong khoảng từ 2015 đến nay 2023 không Nếu không, yêu cầu nhập lại.
- Sử dụng vòng lặp for để nhập doanh thu cho mỗi tháng từ 1 đến 12.
- Tạo node mới, gán thông tin doanh thu vừa nhập cho node.
Void themthongke(): Thêm doanh thu theo tháng và theo năm
- Gọi hàm makenode để tạo một nút mới và nhập thông tin doanh thu.
- Thực hiện nhập doanh thu theo tháng và năm.
Void tkeInFile(): Ghi thông tin doanh thu vào file
- Tạo một đối tượng ‘fstream’ với tên ‘fout’ để ghi dữ liệu vào file có tên là
THIẾT KẾ CẤU TRÚC DỮ LIỆU DÙNG CHO BÀI TOÁN
Các chương trình con
4.1 Khai báo các cấu trúc dữ liệu
Hình 1: Khai báo các thư viện
Hình 2: Khai báo cấu trúc cho thú nuôi
Hình 3: Khai báo cấu trúc cho mặt hàng
Hình 4: Khai báo cấu trúc cho thời gian trong thống kê
THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH
Khai báo các cấu trúc dữ liệu
Hình 1: Khai báo các thư viện
Hình 2: Khai báo cấu trúc cho thú nuôi
Hình 3: Khai báo cấu trúc cho mặt hàng
Hình 4: Khai báo cấu trúc cho thời gian trong thống kê
Hình 5: Khai báo cấu trúc kho hàng
Hình 6: Khai báo cấu trúc hóa đơn nhập
Hình 7: Khai báo cấu trúc hóa đơn mua
Hình 8: Khai báo cấu trúc khách hàng
Hình 9: Khai báo node khách hàng
Hình 10: Khai báo cấu trúc nhà cung cấp
Hình 11: Khai báo node nhà cung cấp
Hình 12: Khai báo cấu trúc thống kê
Hình 13: Khai báo node thống kê
4.2 Xây dựng các chương trình
Void menuTong(): Giao diện chính
- Quản lý hóa đơn nhập
- Quản lý hóa đơn mua
- Quản lý nhà cung cấp
Hình 14: Code giao diện chính
Void menuhdn(): Quản lý hóa đơn nhập
- Nhập hóa đơn mua hàng
- In hóa đơn nhập hàng
- Ghi thông tin hóa đơn nhập vào file
- In thông tin hóa đơn nhập từ file
Hình 16: Code menu hóa đơn nhập
Hình 17: Giao diện menu hóa đơn nhập hàng
Hình 18: Code nhập thông tin hóa đơn nhập
Hình 18: Code in thông tin hóa đơn nhập
Hình 19: Code ghi thông tin hóa đơn nhập vào file
Hình 20: Code in thông tin hóa đơn nhập từ file
Void menuhdm(): Quản lý hóa đơn mua
- Nhập hóa đơn mua hàng
- In hóa đơn mua hàng
- Ghi thông tin hóa đơn mua hàng vào file
- In thông tin hóa đơn mua hàng từ file
Hình 21: Code menu hóa đơn mua
Hình 22: Giao diện menu hóa đơn mua
Hình 23: Code nhập thông tin hóa đơn mua hàng
Hình 24: Code in thông tin hóa đơn mua hàng
Hình 25: Code ghi thông tin hóa đơn mua hàng vào file
Hình 26: Code in hóa đơn mua từ file
Void menukho(): Quản lý kho
Hình 27: Code menu quản lý kho hàng
Hình 28: Giao diện menu quản lý kho hàng
Hình 29: Code nhập thông tin kho hàng
Hình 30: Code in thông tin kho hàng
Hình 31: Code ghi thông tin kho hàng vào file
Hình 32: Code in thông tin kho hàng từ file
Void menukhach(): Quản lý khách hàng
- Duyệt danh sách khách hàng
- Sửa thông tin khách hàng
- Lưu thông tin khách hàng vào file
- In thông tin khách hàng từ file
Hình 33: Code menu quản lý khách hàng
Hình 34: Giao diện menu quản lý khách hàng
Hình 35: Code nhập thông tin khách hàng
Hình 36: Code thêm khách hàng mới vào danh sách
Hình 37: Code duyệt danh sách khách hàng
Hình 38: Code sửa thông tin khách hàng
Hình 39: Code xóa khách hàng
Hình 40: Code ghi thông tin khách hàng vào file
Hình 41: Code in thông tin khách hàng từ file
Void menuncc(): Quản lý nhà cung cấp
- Sửa thông tin nhà cung cấp
- In danh sách nhà cung cấp
- Ghi thông tin nhà cung cấp vào file
- In thông tin nhà cung cấp từ file
Hình 42: Code menu quản lý nhà cung cấp
Hình 43: Giao diện menu quản lý nhà cung cấp
Hình 44: Code nhập thông tin nhà cung cấp
Hình 45: Code thêm mới thông tin nhà cung cấp
Hình 46: Code sửa thông tin nhà cung cấp
Hình 47: Code xóa nhà cung cấp
Hình 48: Code duyệt danh sách nhà cung cấp
Hình 49: Code ghi thông tin nhà cung cấp vào file
Hình 50: Code in thông tin nhà cung cấp từ file
- Thống kê tổng số khách hàng
- Thống kê tổng số nhà cung cấp
Hình 51: Code menu thống kê
Hình 52: Giao diện menu thống kê
Hình 53: Code tính tông số khách hàng của cửa hàng
Hình 54: Code tính tổng số nhà cung cấp của cửa hàng
Hình 55: Code ghi thông tin doanh thu vào file
Hình 56: Code in thông tin doanh thu từ file