


















Preview text:
lOMoAR cPSD| 45315597
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HTTT KINH TẾ VÀ TMĐT
BÀI TẬP LỚN CUỐI KÌ
Học phần: Lập trình với Python ĐỀ TÀI 1
Xây dựng chương trình quản lí kho hàng các sản phẩm sữa
của công ty sữa TH True Milk
Người thực hiện : Lớp : K59SN
Mã LHP : 231_INFO4511_03
Giáo viên hướng dẫn : CÙ NGUYÊN GIÁP lOMoAR cPSD| 45315597
BẢNG ĐÁNH GIÁ VÀ PHÂN CÔNG NHIỆM VỤ STT Họ và tên Mã sinh viên Nhiệm vụ Đánh giá 1 Doãn Hà Anh 23D192001
Vẽ sơ đồ khối, đóng góp ý A kiến và chỉnh sửa word 2 Phạm Mai Anh 23D192003
Viết chương trình, đóng
góp ý kiến và chỉnh sửa A word 3 Nguyễn Thu Nga 23D192027
Viết chương trình, đóng
góp ý kiến và chỉnh sửa A word 4 Nguyễn Phương Oanh 23D192029
Viết chương trình, đóng
góp ý kiến và chỉnh sửa A word 5 Nguyễn Thị Nhung 23D192068
Viết chương trình, đóng
góp ý kiến và chỉnh sửa A word lOMoAR cPSD| 45315597 LỜI CAM ĐOAN
Nhóm 01 chúng em gồm: Doãn Hà Anh, Phạm Mai Anh, Nguyễn Thu Nga,
Nguyễn Phương Oanh, Nguyễn Thị Nhung xin cam đoan bài tập lớn môn Lập trình với
Python với đề tài : “ XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÍ KHO HÀNG
CÁC SẢN PHẨM SỮA CỦA CÔNG TY SỮA TH TRUE MILK” là kết quả
nghiên cứu và công sức làm việc của cả nhóm. Các thông tin, số liệu được sử dụng là
trung thực, chính xác và là do nhóm em hoàn toàn thực hiện dưới sự phân công nhiệm
vụ rõ ràng. Nhóm em xin chịu mọi trách nhiệm cho các sai sót với các thông tin và sô
liệu đã sử dụng trong bài.
Bên cạnh đó, nhóm em cũng xin gửi lời cảm ơn đến thầy Cù Nguyên Giáp đã
luôn nhiệt tình hướng dẫn, giảng dạy và theo sát tiến độ làm bài của lớp. Nhờ những
kiến thức học tập trên lớp và sự tìm tòi tham khảo, nhóm em đã hoàn thành bài tập lớn
quan trọng này. Bài làm này có thể còn mắc phải nhiều thiếu sót, chúng em xin nhận
những ý kiến đóng góp chỉnh sửa của thầy để đề tài được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Hà Nội, ngày 24 tháng 12 năm 2023 LỜI MỞ ĐẦU
Cuộc cách mạng công nghệ 4.0 đã và đang phát triển đến trình độ nhất định,
chiếm một vị thế vô cùng quan trọng. Những kết quả và thành tựu mà nó đã đạt được
ảnh hưởng không nhỏ đến đời sống thường ngày, công việc cũng như học tập, rèn
luyện của mỗi người dân trên thế giới hiện nay. Một trong những yếu tố quan trọng
trong cuộc cách mạng lần thứ 4 này là Big Data, cho phép con người có thể thu thập,
chứa đựng được một lượng dữ liệu khổng lồ. Người ta có thể thu thập một lượng lớn
thông tin bao gồm cả thông cá nhân của từng khách hàng, giúp các doanh nghiệp nhận
ra các xu hướng, nhu cầu, mong muốn của người tiêu dùng một cách hiệu quả từ đó
mỗi doanh nghiệp có thể tạo ra những chiến lược đúng đắn trong mỗi giai đoạn kinh doanh.
Trong bối cảnh nền kinh tế ngày càng phát triển, quản lý và điều hành hiệu quả
các hệ thống kinh doanh là một trong những yếu tố quyết định sự thành công của mọi
doanh nghiệp, cho nên việc xây dựng một chương trình quản lý kho hàng một cách
chặt chẽ và linh hoạt trở thành nhiệm vụ cực kì quan trọng. Quản lí thông tin một cách
tối ưu cho phép tổ chức đạt được các mục tiêu khác nhau và những lợi ích đem lại có
tác động trên nhiều phương diện. Tuy nhiên với một lượng dữ liệu khổng lồ như vậy,
việc lưu trữ, bảo quản và duy trì chúng là một việc không hề dễ dàng. Bài tập lớn này
là một cơ hội để chúng em tiếp xúc và làm quen với công việc đó.
Hiểu được điều này, nhóm chúng em khi nhận được đề tài “XÂY DỰNG
CHƯƠNG TRÌNH QUẢN LÍ KHO HÀNG CÁC SẢN PHẨM SỮA CỦA
CÔNG TY SỮA TH TRUE MILK” đã sử dụng những kiến thức còn hạn chế của
bản thân và tìm hiểu của cả nhóm để hoàn thành đề tài một cách trọn vẹn nhất có thể,
xây dựng chương trình với tiêu chí: Bố cục rõ ràng, mạch lạc và dễ hiểu nhất.
Để xây dựng được chương trình, chúng em đã cùng nhau phân tích và chia bài
tập lớn thành các phần: lOMoAR cPSD| 45315597 I. Đặt bài toán II.
Phân tích bài toán bằng sơ đồ khối
III. Chương trình viết bằng ngôn ngữ Python IV. Kết luận I. Đặt bài toán
Công ty Sữa TH True Milk, với vị thế hàng đầu trong ngành công nghiệp sản
xuất và cung ứng sữa, đang đối mặt với những thách thức ngày càng lớn trong việc quản
lý hàng tồn kho và đảm bảo nguồn cung ổn định đối với thị trường ngày càng đa dạng
và khó tính. Chính vì vậy, việc xây dựng một chương trình quản lý kho hàng thông minh
và hiệu quả trở thành một phần quan trọng của chiến lược quản lý của công ty.
Các thông tin của sản phẩm khi nhập vào dữ liệu bao gồm:
- Mã sản phẩm: ma_san_pham
- Tên sản phẩm : ten_san_pham - Giá : gia - Số lượng: so_luong
- Ngày sản xuất: ngay_san_xuat
- Hạn sử dụng: han_su_dung
Trong đó mỗi sản phẩm sẽ có một mã sản phẩm riêng và mã này là mã duy nhất.
Khi thực hiện lệnh thêm sản phẩm, xoá sản phẩm, cập nhật thông tin, tìm kiếm sản
phẩm, hiển thị danh sách sản phẩm và lưu thông tin sản phẩm vào file, ta luôn nhập mã
sản phẩm hoặc tên sản phẩm và lấy đó làm cơ sở cho các bước tiếp theo. II.
Phân tích bài toán bằng sơ đồ khối
1. Sơ đồ khối nhập thông tin sản phẩm lOMoAR cPSD| 45315597 Bắt đầu Khai báo mảng nhap_thong_tin_san_pham
Nhập tên sản phẩm,giá sản
phẩm,số lượng sản phẩm,ngày
sản xuất,hạn sử dụng Thêm sản phẩm vào danh sách In danh sách sản phẩm Kết thúc
2. Sơ đồ khối hiển thị danh sách Bắt đầu Khai báo mảng hien_thi_danh_sach_san_pham In “Danh sách trống Đúng In danh sách sản phẩm Kết thúc lOMoAR cPSD| 45315597
3. Sơ đồ khối cập nhật thông tin sản phẩm Bắt đầu Khai báo mảng cap_nhat_thong_tin Nhập mã sản phẩm cần cập nhật i=0 Sai ii=i+1 sanpham Đúng [ ma_san_pha ] m == ma_san_pham Đúng Đúng Nhập lựa Lựa chọn(1,2,3,4,5,6) chọn 1 Tên sản phẩm Sai Đúng Lựa chọn 2 Giá thanh Sai Đúng Lựa chọn 3 Số lượng Sai Đúng Lựa chọn 4 Ngày sản xuất Sai Đúng Lựa Hạn sử dụng chọn 5 Sai Đúng Lựa Tất cả thông tin chọn 6 Sai Kết thúc lOMoAR cPSD| 45315597
4. Sơ đồ khối xóa bỏ sản phẩm Bắt đầu Khai báo mảng xoa_san_pham Nhập mã sản phẩm cần xóa i=0 Sai ii=i+1 _pham Đúng Xóa thông tin p[‘ma_san_pham’] sản phẩm khỏi == ma_san_pham danh sách Nhập lựa chọn(Yes/No) Đúng In ‘Xóa sản phẩm Yes thanh công’ Đúng No In ‘Hủy xóa sản phẩm’ Sai Kết thúc
5. Sơ đồ tìm kiếm thông tin sản phẩm lOMoAR cPSD| 45315597 Bắt đầu Khai báo mảng tim_kiem_san_pham Nhập lựa chọn(1,2) Đúng Lựa Nhập mã sản chọn 1 phẩm cần tìm Sai Đúng Lựa Nhập tên sản chọn 2 phẩm cần tìm Sai In ‘Lựa chọn không In kết quả tìm hợp lệ.Vui lòng kiếm chọn lại’ Kết thúc
6. Sơ đồ chương trình chính lOMoAR cPSD| 45315597 Bắt đầu Khai báo mảng toan cục Nhập lựa chọn(1,2,3,4,5,6,0 ) Đúng Lựa Thêm sản phẩm chọn 1 Sai Đúng Lựa chọn 2 Xóa sản phẩm Sai Đúng Lựa Cập nhật thông chọn 3 tin sản phẩm Sai Đúng Lựa Tìm kiếm thương chọn 4 tin sản phẩm Sai Đúng Lựa chọn 5 Hiển thị danh sách sản phẩm Sai Đúng Lựa Ghi dữ liệu ra chọn 6 file excel Sai Đúng Lựa
In ‘Lựa chọn không hợp chọn 0
lệ,vui lòng nhập lại’ Đúng Thoát chương trin h Kết thúc
III. Chương trình viết bằng ngôn ngữ Python
Trong chương trình quản lý kho hàng các sản phẩm sữa của công ty sữa TH lOMoAR cPSD| 45315597
True Milk, nhóm chúng em sử dụng modul ‘openpyxl’ và modul ‘datetime’
- Modul ‘openpyxl’: sử dụng để tạo và làm việc với file excel Cài đặt: + Bước 1: Chọn Terminal
+ Bước 2: Gõ lệnh pip install openpyxl
PS C:\Users\Admin\PycharmProjects\Quan_ly_kho_hang_sua_TH> pip install openpyxl
- Modul ‘datetime’ : là modul chứa các lớp và các hàm cung cấp các
phương thức để tạo, định dạng thời gian và ngày tháng => Dùng để kiểm
tra tính hợp lệ của ngày tháng nhập vào từ người dùng:
Cài đặt: gõ trên cửa sổ code: from datetime import datetime from datetime import datetime
Thêm thư viện vào chương trình: import openpyxl from datetime import datetime
1.Nhập thông tin sản phẩm # Hàm thêm sản phẩm
def them_san_pham_vao_danh_sach(ma_san_pham, ten_san_pham, gia, so_luong,
ngay_san_xuat, han_su_dung): san_pham = { "ma_san_pham": ma_san_pham,
"ten_san_pham": ten_san_pham, "gia": gia, "so_luong": so_luong,
"ngay_san_xuat": ngay_san_xuat, "han_su_dung": han_su_dung } lOMoAR cPSD| 45315597
danh_sach_san_pham.append(san_pham)
print(f"Sản phẩm có mã {ma_san_pham} đã được thêm vào danh sách.")
# Hàm nhập thông tin sản phẩm def
nhap_thong_tin_san_pham(): while True:
ma_san_pham = input("Nhập mã sản phẩm: ")
if kiem_tra_trung_ma_san_pham(ma_san_pham):
print("Sản phẩm đã tồn tại. Vui lòng nhập lại mã sản phẩm.") continue
ten_san_pham = input("Nhập tên sản phẩm: ") gia =
nhap_so_nguyen("Nhập giá sản phẩm: ") so_luong =
nhap_so_nguyen("Nhập số lượng sản phẩm: ") ngay_san_xuat =
nhap_ngay("Nhập ngày sản xuất (yyyy-mm-dd): ") han_su_dung =
nhap_ngay("Nhập hạn sử dụng (yyyy-mm-dd): ")
them_san_pham_vao_danh_sach(ma_san_pham, ten_san_pham, gia,
so_luong, ngay_san_xuat, han_su_dung) break
# Hàm kiểm tra tính hợp lệ của giá def
nhap_so_nguyen(message): while True: try: value = int(input(message)) return value except
ValueError: print("Vui lòng nhập một số nguyên.")
# Hàm kiểm tra tính hợp lệ của ngày tháng
def nhap_ngay(message): while True: try: ngay = input(message)
datetime.strptime(ngay, '%Y-%m-%d')
return ngay except ValueError: print("Ngày
tháng không hợp lệ. Vui lòng nhập lại.")
# Hàm kiểm tra tính trùng lặp mã sản phẩm def
kiem_tra_trung_ma_san_pham(ma_san_pham): for
san_pham in danh_sach_san_pham: if
san_pham['ma_san_pham'] == ma_san_pham: return True return False
# Hàm định dạng thông tin in ra màn hình
def format_san_pham(san_pham):
print("{:<15} {:<30} {:<20} {:<15} {:<20} {:<20}".format(
"Mã sản phẩm", "Tên sản phẩm", "Giá(VNĐ)", "Số lượng", "Ngày sản xuất", "Hạn sử dụng"))
print("{:<15} {:<30} {:<20} {:<15} {:<20} {:<20}".format(
san_pham['ma_san_pham'], san_pham['ten_san_pham'], san_pham['gia'], san_pham['so_luong'], san_pham['ngay_san_xuat'], san_pham['han_su_dung']))
Hàm “them_san_pham_vao_danh_sach” có chức năng thêm sản phẩm mới vào danh sách lOMoAR cPSD| 45315597 Mô tả: -
Chuỗi (str) “ma_san_ham , ten_san_pham, ngay_san_xuat, han_su_dung” là các
thông tin được nhập từ người dùng. Chúng đều là các chuỗi văn bản. -
Số nguyên (int) “gia, so_luong” là các thông tin về số lượng và giá sản phẩm.
Chúng đều là các số nguyên. -
Từ điển (dict) “san_pham” là đối tượng lưu trữ thông tin về một sản phẩm. Đối
tượng này có các thuộc tính là các chuỗi số nguyên.
Ngoài ra, còn các hàm con khác :
Nhập thông tin sản phẩm -
Hàm sử dụng kiểu dữ liệu dạng chuỗi (str), số nguyên (int) để mã hoá cho các giá trị của sản phẩm. -
Vòng lặp while được sử dụng để lặp lại quá trình nhập thông tin sản phẩm cho
đến khi người dùng nhập đúng mã sản phẩm.
Hàm “nhap_so_nguyen” và “nhap_ngay”
- Chuỗi (str) : ”message” là chuỗi văn bản chứa thông báo yêu cầu người dùng
nhập giá hoặc ngày tháng.
- Số nguyên (int) : “value” là số nguyên được trả về sau khi người dùng nhập giá hoặc ngày tháng.
- Vòng lặp while được sử dụng để lặp lại quá trình nhập giá hoặc ngày tháng cho
đến khi người dùng nhập đúng.
- “input()” được sử dụng để nhập giá hoặc ngày tháng từ người dùng.
- “int()” được sử dụng để chuyển giá hoặc ngày tháng sang số nguyên.
- “datetime.strptime()” được sử dụng để kiểm tra tính hợp lệ của ngày tháng.
Hàm sẽ trả về “None” nếu nhập ngày tháng không hợp lệ.
Hàm “kiem_tra_trung_ma_san_pham” -
Câu lệnh “if kiem_tra_trung_ma_san_pham(ma_san_pham)” : sử dụng cấu trúc
if - else để kiểm tra xem mã sản phẩm đã được nhập có tồn tại trong danh sách
hay không. Nếu mã sản phẩm đã tồn tại thì câu lệnh “print()” sẽ in ra thông báo
“ Sản phẩm đã tồn tại. Vui lòng lòng nhập lại mã sản phẩm” và vòng lặp while sẽ
tiếp tục. Nếu mã sản phẩm chưa tồn tại, thì các câu lệnh tiếp theo sẽ được thực thi. -
Câu lệnh “kiem_tra_trung_ma_san_pham(ma_san_pham)” sử dụng hàm
“kiem_tra_trung_ma-san_pham()” để kiểm tra xem san rphaamr được nhập có
tồn tại trong danh sách hay không. Hàm trả về “True” nếu mã sản phẩm đã tồn
tại và “False” nếu sản phẩm chưa tồn tại. Hàm “format_san_pham” -
Hàm nhận một đối số là san_pham, đại diện cho một sản phẩm, và thực hiện định
dạng thông tin của sản phẩm đó. -
Sử dụng chuỗi định dạng để xác định cách mỗi trường thông tin (mã sản phẩm,
tên sản phẩm, giá, số lượng, ngày sản xuất, hạn sử dụng) được hiển thị trên một dòng. -
In thông tin của sản phẩm ra màn hình theo định dạng đã xác định. 2. Xóa bỏ sản phẩm lOMoAR cPSD| 45315597
# Hàm xoá thông tin sản phẩm def xoa_san_pham(): print("Xóa sản phẩm")
ma_san_pham = input("Nhập mã sản phẩm cần xóa: ")
san_pham = next((san_pham for san_pham in danh_sach_san_pham if
san_pham['ma_san_pham'] == ma_san_pham), None)
if san_pham: print("Thông tin sản phẩm cần xóa:") format_san_pham(san_pham)
while True: confirm = input("Bạn có chắc chắn muốn xóa
sản phẩm này không? (yes/no): ").lower() if confirm == 'yes':
danh_sach_san_pham.remove(san_pham) print("Xóa sản phẩm thành công!") break elif confirm == 'no':
print("Hủy xóa sản phẩm.") break
else: print("Vui lòng nhập 'yes' hoặc
'no'.") else: print("Không tìm thấy sản phẩm cần xóa")
Hàm “xoa_san_pham” có chức năng xóa thông tin của một sản phẩm từ danh sách sản phẩm. Mô tả: •
Người dùng được yêu cầu nhập mã sản phẩm của sản phẩm mà họ muốn xóa. •
Sử dụng next và list comprehension để tìm kiếm sản phẩm trong danh sách dựa
trên mã sản phẩm nhập vào. •
Nếu sản phẩm được tìm thấy, in ra màn hình thông tin chi tiết của sản phẩm đó
bằng cách gọi hàm format_san_pham. •
Yêu cầu người dùng xác nhận việc xóa sản phẩm. Người dùng cần nhập đúng
‘yes’ hoặc ‘no’. Nếu không, cần nhập lại. -
Nếu người dùng xác nhận (confirm =='yes'), sản phẩm sẽ được xóa khỏi danh
sách bằng cách sử dụng remove(). -
Nếu người dùng không xác nhận (confirm == 'no'), quá trình xóa sẽ bị hủy.
Nếu sản phẩm không được tìm thấy trong danh sách, in thông báo "Không tìm
thấy sản phẩm cần xóa".
3. Cập nhật thông tin sản phẩm lOMoAR cPSD| 45315597
# Hàm cập nhật thông tin def cap_nhat_thong_tin():
ma_san_pham = input('Nhập mã sản phẩm cần cập nhật: ')
san_pham = None for i in danh_sach_san_pham:
if i['ma_san_pham'] == ma_san_pham: san_pham = i break
if san_pham: print("Thông tin cần cập nhật của sản phẩm: ")
print("1. Tên sản phẩm") print("2. Giá thành") print("3. Số lượng")
print("4. Ngày sản xuất") print("5. Hạn sử dụng")
print("6. Tất cả thông tin") while True: try: chon =
int(input("Chọn thông tin cần cập nhật: ")) if chon in range(1, 6): break else:
print("Chức năng không hợp lệ. Vui lòng chọn lại.") except
ValueError: print("Vui lòng nhập một số nguyên.") if chon == 1:
san_pham["ten_san_pham"] = input("Nhập tên sản phẩm mới: ") elif chon == 2:
san_pham["gia"] = nhap_so_nguyen("Nhập giá sản phẩm mới: ") elif chon == 3:
san_pham["so_luong"] = nhap_so_nguyen("Nhập số lượng mới: ")
elif chon == 4: san_pham["ngay_san_xuat"] = nhap_ngay("Nhập
ngày sản xuất mới (yyyy-mm-dd): ") elif chon == 5:
san_pham["han_su_dung"] = nhap_ngay("Nhập hạn sử dụng mới (yyyy-
mm-dd): ") elif chon == 6: san_pham["ten_san_pham"] =
input("Nhập tên sản phẩm mới: ") san_pham["gia"] =
nhap_so_nguyen("Nhập giá sản phẩm mới: ")
san_pham["so_luong"] = nhap_so_nguyen("Nhập số lượng mới: ")
san_pham["ngay_san_xuat"] = nhap_ngay("Nhập ngày sản xuất mới (yyyy-mm-dd): ")
san_pham["han_su_dung"] = nhap_ngay("Nhập hạn sử dụng mới (yyyymm-dd): ")
print(f"Thông tin sản phẩm có mã {ma_san_pham} đã được cập
nhật thành công!") format_san_pham(san_pham)
else: print(f"Mã sản phẩm {ma_san_pham} không tồn tại.")
Hàm “cap_nhat_thong_tin” có chức năng cập nhật thông tin sản phẩm. Mô tả: lOMoAR cPSD| 45315597 •
Định nghĩa hàm “cap_nhat_thong_tin”: được sử dụng để cập nhật thông tin sản
phẩm trong danh sách sản phẩm “danh_sach_san_pham”. •
Nhập mã sản phẩm cần cập nhập từ người dùng. •
Sử dụng vòng lặp for để tìm sản phẩm có mã tương ứng trong danh sách sản
phẩm. Nếu sản phẩm được tìm thấy: biến “san_pham” tạo ra sẽ gắn với thông tin
của sản phẩm đó và vòng lặp kết thúc. •
Sử dụng cấu trúc rẽ nhánh if, elif, else:
Nếu sản phẩm được tìm thấy: -
Menu sẽ được hiển thị cho phép người dùng lựa chọn theo thông tin cụ thể
mà họ muốn cập nhật. Các tùy chọn này sẽ bao gồm các chức năng từ 1 -
6 (tên sản phẩm, giá thành, số lượng, ngày sản xuất, hạn sử dụng hoặc tất cả thông tin). -
Nếu nhập ngoài các tùy chọn này, màn hình sẽ hiển thị không hợp lệ và
người dùng sẽ được yêu cầu nhập lại. -
Nếu nhập đúng từ 1 - 6, chương trình sẽ được tiếp tục và cập nhật thông
tin tương ứng của sản phẩm vào danh sách. Màn hình sẽ hiển thị cập nhật thông tin thành công
Nếu sản phẩm không được tìm thấy, màn hình hiển thị thông báo mã sản phẩm không tồn tại.
Hiển thị sau cập nhật: Sau khi cập nhật thông tin thành công. Chương trình
sẽ hiển thị lại thông tin của sản phẩm đã được cập nhật bằng cách gọi hàm format_san_pham. 4. Tìm kiếm sản phẩm
# Hàm tìm kiếm thông tin sản phẩm def tim_kiem_san_pham(): while
True: tim_kiem = input("Bạn muốn tìm kiếm theo (Mã (nhập '1')/ Tên (nhập '2')): ")
if tim_kiem == '1': ma_san_pham_can_tim = input("Nhập mã
sản phẩm cần tìm: ") san_pham_tim_kiem = [san_pham for san_pham
in danh_sach_san_pham if san_pham['ma_san_pham'] == ma_san_pham_can_tim] break elif tim_kiem == '2':
ten_san_pham_can_tim = input("Nhập tên sản phẩm cần tìm: ")
san_pham_tim_kiem = [san_pham for san_pham in danh_sach_san_pham if
ten_san_pham_can_tim.lower() in san_pham['ten_san_pham'].lower()] if not san_pham_tim_kiem:
print("Không tìm thấy sản phẩm cần tìm!") return
break else: print("Lựa chọn
không hợp lệ. Vui lòng chọn lại.")
print("Kết quả tìm kiếm:") for
san_pham in san_pham_tim_kiem: format_san_pham(san_pham)
Hàm “tim_kiem_san_pham” có chức năng tìm kiếm thông tin sản phẩm dựa trên mã sản
phẩm hoặc tên sản phẩm. Mô tả: lOMoAR cPSD| 45315597
Sử dụng một vòng lặp vô hạn (while True) để yêu cầu người dùng chọn phương thức
tìm kiếm theo mã sản phẩm hoặc tên sản phẩm. -
Nhập ‘1’ nếu muốn tìm theo mã sản phẩm. -
Nhập ‘2’ nếu muốn tìm theo tên sản phẩm. •
Dựa vào lựa chọn, người dùng sẽ nhập mã sản phẩm hoặc tên sản phẩm cần tìm. •
Sử dụng list comprehension để tạo danh sách san_pham_tim_kiem chứa các sản
phẩm thỏa mãn điều kiện tìm kiếm. -
Nếu không có sản phẩm nào thỏa mãn điều kiện, in thông báo "Không tìm thấy
sản phẩm cần tìm!" và kết thúc. -
Nếu có sản phẩm được tìm thấy, in thông báo "Kết quả tìm kiếm:" và hiển thị
thông tin chi tiết của các sản phẩm đó bằng cách gọi hàm format_san_pham.
5. Hiển thị danh sách sản phẩm
# Hàm hiển thị danh sách sản phẩm def
hien_thi_danh_sach_san_pham(): print('DANH SÁCH SẢN PHẨM:')
if not danh_sach_san_pham: print("Danh sách trống.")
else: print("{:<15} {:<30} {:<20} {:<15} {:<20} {:<20}".format(
"Mã sản phẩm", "Tên sản phẩm", "Giá(VNĐ)", "Số lượng", "Ngày sản
xuất", "Hạn sử dụng")) for san_pham in danh_sach_san_pham:
print("{:<15} {:<30} {:<20} {:<15} {:<20} {:<20}".format(
san_pham['ma_san_pham'], san_pham['ten_san_pham'], san_pham['gia'],
san_pham['so_luong'], san_pham['ngay_san_xuat'], san_pham['han_su_dung']))
Hàm “hien_thi_danh_sach_san_pham” có chức năng hiển thị danh sách sản phẩm ra màn hình. Mô tả: •
In ra màn hình thông báo "DANH SÁCH SẢN PHẨM:" để làm tiêu đề cho danh sách sản phẩm. •
Kiểm tra xem danh sách sản phẩm (danh_sach_san_pham) có rỗng hay không. -
Nếu danh sách trống, in thông báo "Danh sách trống." -
Nếu danh sách không trống, sử dụng chuỗi định dạng để hiển thị thông tin của
từng sản phẩm. In các trường thông tin của mỗi sản phẩm trên một dòng, bao
gồm mã sản phẩm, tên sản phẩm, giá, số lượng, ngày sản xuất, và hạn sử dụng.
6. Ghi dữ liệu vào file excel lOMoAR cPSD| 45315597
def ghi_du_lieu_vao_excel(danh_sach_san_pham): import
openpyxl if not danh_sach_san_pham:
print("Danh sách sản phẩm trống. Không thể ghi file Excel.") return
workbook = openpyxl.Workbook() sheet = workbook.active
sheet.append(["Mã sản phẩm", "Tên sản phẩm", "Giá
thành(VNĐ)", "Số lượng", "Ngày sản xuất", "Hạn sử dụng "])
for san_pham in danh_sach_san_pham:
sheet.append([san_pham['ma_san_pham'],
san_pham['ten_san_pham'], san_pham['gia'], san_pham['so_luong'], san_pham['ngay_san_xuat'], san_pham['han_su_dung']])
ten_file = input("Nhập tên file để lưu dữ liệu: ")
workbook.save(ten_file + ".xlsx")
print("Ghi dữ liệu thành công!")
Chức năng của hàm “ghi_du_lieu_vao_excel” là lưu thông tin về các sản phẩm từ danh
sách “danh_sach_san_pham” vào một tệp tin Excel (.xlsx). •
Kiểm tra Danh Sách Trống: Trước khi bắt đầu quá trình ghi dữ liệu, hàm kiểm
tra xem danh sách sản phẩm (danh_sach_san_pham) có trống không. Nếu danh
sách trống, hàm thông báo và không thực hiện ghi dữ liệu. •
Tạo Workbook và Sheet: Hàm tạo một workbook mới và truy cập sheet mặc định của workbook đó. •
Ghi Dòng Tiêu Đề: Một dòng tiêu đề được thêm vào sheet, chứa các nhãn cho
từng trường thông tin của sản phẩm, bao gồm mã sản phẩm, tên sản phẩm, giá
thành, số lượng, ngày sản xuất và hạn sử dụng. •
Ghi Dữ Liệu Sản Phẩm: Với mỗi sản phẩm trong danh sách
“danh_sach_san_pham”, một dòng mới được thêm vào sheet chứa thông tin chi
tiết của sản phẩm đó. •
Nhập Tên File: Hàm yêu cầu người dùng nhập tên cho tệp tin Excel sẽ được lưu
trữ, không bao gồm đuôi .xlsx. Nếu người dùng không nhập tên, hàm sẽ tiếp tục
yêu cầu đến khi nhận được một tên hợp lệ. •
Ghi Workbook vào File: Workbook được lưu vào một tệp tin có tên được nhập từ
bước trước, và có đuôi .xlsx. •
Thông Báo Kết Quả: Hàm in ra thông báo về việc ghi dữ liệu thành công hoặc
thông báo lỗi nếu có vấn đề xảy ra trong quá trình ghi file. 7. Chương trình chính lOMoAR cPSD| 45315597
# Chương trình chính def main(): while True:
print("-----------------------------------------")
print("| Chức năng muốn thực hiện |")
print("-----------------------------------------")
print("| Nhập 1: Thêm sản phẩm |")
print("| Nhập 2: Xóa sản phẩm |")
print("| Nhập 3: Cập nhật thông tin sản phẩm |")
print("| Nhập 4: Tìm kiếm thông tin sản phẩm |")
print("| Nhập 5: Hiển thị danh sách sản phẩm |")
print("| Nhập 6: Ghi dữ liệu ra file Excel |")
print("| Nhập 0: Thoát khỏi chương trình |")
print("-----------------------------------------")
try: action = int(input("Nhập chức năng bạn muốn
thực hiện: ")) except ValueError: print("Vui lòng
nhập một số nguyên.") continue if action == 0:
print("Thoát khỏi chương trình.") break elif action == 1: nhap_thong_tin_san_pham() elif action == 2: xoa_san_pham() elif action == 3: cap_nhat_thong_tin() elif action == 4: tim_kiem_san_pham() elif action == 5:
hien_thi_danh_sach_san_pham() elif action
== 6: ghi_du_lieu_vao_excel(danh_sach_san_pham)
else: print("Lựa chọn không hợp lệ, vui lòng nhập lại") if __name__ == "__main__": main() Mô tả: •
Danh sách sản phẩm (“danh_sach_san_pham”):
- Danh sách này chứa thông tin của các sản phẩm. Có thể là một danh sách của
các đối tượng sản phẩm hoặc một cấu trúc dữ liệu khác tùy thuộc vào danh sách triển khai chi tiết.
Hàm con trong chương trình: •
Thêm sản phẩm (“nhap_thong_tin_san_pham()”):
- Hàm này yêu cầu người dùng nhập thông tin của một sản phẩm mới và thêm sản
phẩm đó vào danh sách (“danh_sach_san_pham”). •
Xóa sản phẩm (“xoa_san_pham()”):
- Hàm này cho phép người dùng đăng nhập thông tin sản phẩm cần xóa và
xóasản phẩm đó khỏi danh sách. lOMoAR cPSD| 45315597 •
Cập nhập thông tin sản phẩm (“cap_nhat_thong_tin()”):
- Hàm này cho phép người dùng cập nhật thông tin cần cập nhật và sau đó
cậpnhật thông tin của sản phẩm đó trong danh sách. •
Tìm kiếm thông tin sản phẩm (“tim_kiem_san_pham()”):
- Hàm này cho phép người dùng nhập thông tin sản phẩm cần tìm kiếm vàhiển
thị thông tin của sản phẩm đó nếu tồn tại trong danh sách. •
Hiển thị danh sách sản phẩm (“hien_thi_danh_sach_san_pham()”):
- Hàm này in ra màn hình thông tin của tất cả sản phẩm trong danh sách. •
Ghi dữ liệu ra file Excel (“ghi_du_lieu_vao_excel ()”):
- Hàm này lưu thông tin của tất cả sản phẩm trong danh sách ra một tệp tin
Excel để lưu trữ hoặc chia sẻ thông tin.
Chương trình chính (“main”):
- Trong hàm “main”, một vòng lặp vô hạn được sử dụng để liên tục hiển
thịmenu hoặc chức năng cho người dùng và thực hiện chức năng tương ứng
dựa trên lựa chọn của họ. Để thoát chương trình người dùng có thể nhập 0. IV. Kết luận
Ngày nay, ứng dụng công nghệ trong doanh nghiệp là xu hướng tất yếu trong bối
cảnh cuộc cách mạng công nghiệp 4.0. Đặc biệt là công tác quản lý kho hàng, việc áp
dụng tin học đã mang lại nhiều lợi ích đáng kể giúp cải thiện hiệu suất doanh nghiệp và
đáp ứng nhanh chóng nhu cầu của thị trường. Để thực hiện tốt công việc quản lý thì việc
hoàn thiện và xây dựng một hệ thống thông tin là không thể thiếu.
Qua bài thảo luận trên, nhóm chúng em đã xây dựng được phần nào một hệ thống
thông tin quản lý sản phẩm cho công ty sữa TH-TrueMilk. Trong điều kiện kinh tế ngày
càng phát triển, khoa học kĩ thuật ngày càng hiện đại, công ty cần phải hoàn thiện công
tác quản lý sản phẩm để vừa mang tính khoa học, khách quan vừa tối ưu hóa chuỗi cung
ứng cũng như tăng khả năng thích nghi với thị trường đầy biến động. Từ đó, giúp công
ty dần khẳng định được lợi thế cạnh tranh của mình hơn so với các doanh nghiệp khác.
Do trình độ bản thân còn nhiều hạn chế và bước đầu áp dụng lý thuyết vào thực hành
nên bài báo cáo này không tránh khỏi những thiếu sót, hạn chế trong quá trình viết bài.
Nhóm em rất mong được sự đóng góp quý báu của thầy, các bạn để bài viết của nhóm được hoàn thiện hơn.
Nhóm em xin chân thành cảm ơn!