



















Preview text:
lOMoAR cPSD| 46342985
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HTTT KINH TẾ & THƯƠNG MẠI ĐIỆN TỬ
BỘ MÔN LẬP TRÌNH PYTHON BÀI TẬP LỚN
HỌC PHẦN: LẬP TRÌNH VỚI PYTHON
MÃ LỚP HỌC PHẦN: 2325INFO4511 GVGD: ĐINH THỊ HÀ NHÓM: 12 MÃ SỐ ĐỀ: 4
Họ và tên: Bạch Bùi Nguyệt Anh Ngày sinh: 10/06/2004
Mã sinh viên: 22D192002 Trường: Đại học Thương mại
Lớp hành chính: K58SN2 Số báo danh: 02
Hà Nội, ngày … tháng … năm 2023 Cán bộ chấm 1 Cán bộ chấm 2
(Ký & ghi rõ họ tên)
(Ký & ghi rõ họ tên)
HỌC KỲ 2 NĂM HỌC 2022 – 2023 lOMoAR cPSD| 46342985 MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................................ 1
CHƯƠNG 1: ĐẶT BÀI TOÁN .................................................................................... 1
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN ...................................................................... 2
2.1. Sơ đồ các chức năng của hệ thống .................................................................... 2
2.2. Mô tả chi tiết các chức năng .............................................................................. 3
2.2.1. Quy trình thực hiện của chức năng ........................................................... 3
2.2.2. Sơ đồ khối thực hiện của chức năng .......................................................... 4
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH ............................................................... 9
3.1. Mô tả cấu trúc của chương trình ...................................................................... 9
3.1.1. Tệp CSV........................................................................................................ 9
3.1.2. Thư viện Pandas ........................................................................................ 10
3.1.3. Module os ................................................................................................... 10
3.1.4. Module quanlysp ....................................................................................... 10
3.2. Mô tả chi tiết các hàm chính của chương trình ............................................. 10
3.2.1. Hàm taokho() ............................................................................................. 10
3.2.2. Hàm themsp()............................................................................................. 11
3.2.3. Hàm xoasp() ............................................................................................... 13
3.2.4. Hàm hienthisp() ......................................................................................... 15
3.2.5. Hàm capnhatsp() ....................................................................................... 15
3.2.6. Hàm timkiem() ........................................................................................... 19
3.2.7. Chương trình chính ................................................................................... 21
3.3. Kết quả chạy chương trình .............................................................................. 25
3.3.1. Tạo kho ....................................................................................................... 25
3.3.2. Truy cập kho .............................................................................................. 26
3.3.3. Thêm sản phẩm .......................................................................................... 27 lOMoAR cPSD| 46342985
3.3.4. Xóa sản phẩm ............................................................................................. 28
3.3.5. Hiển thị thông tin sản phẩm ..................................................................... 30
3.3.6. Cập nhật thông tin sản phẩm ................................................................... 30
3.3.7. Tìm kiếm thông tin sản phẩm................................................................... 32
KẾT LUẬN .................................................................................................................. 34
BIÊN BẢN HỌP NHÓM ............................................................................................ 35
BIÊN BẢN NGHIỆM THU ........................................................................................ 37 lOMoAR cPSD| 46342985 1 LỜI MỞ ĐẦU
Python là một ngôn ngữ lập trình đơn giản, có cú pháp sạch sẽ, dễ đọc, dễ học
nhưng lại mạnh mẽ và là ngôn ngữ cấp cao. Nó được sử dụng rộng rãi trong các lĩnh vực
như phát triển web, khoa học dữ liệu, trí tuệ nhân tạo và một số lĩnh vực khác. Python
cũng có một thư viện tiêu chuẩn phong phú và một cộng đồng lập trình viên lớn và năng động.
Quản lý kho hàng là một công việc đòi hỏi độ chính xác cao và khối lượng công
việc rất lớn. Ngày nay, đời sống con người ngày càng phát triển, nhu cầu mua sắm của
con người ngày càng tăng, do đó việc quản lý kho hàng của các đơn vị kinh doanh gặp
phải nhiều khó khăn và phức tạp. Vì vậy, việc áp dụng công nghệ thông tin vào việc
quản lý kho hàng là vô cùng cần thiết, nó giúp cho những người lãnh đạo có thể nắm
được thông tin một cách dễ dàng, nhanh chóng và chính xác, tiết kiệm thời gian và giảm
thiểu tối đa các sai sót có thể có so với khi làm việc thủ công.
Xuất phát từ nhu cầu thực tế đó, sau khi nghiên cứu học phần “Lập trình với
Python” cùng với sự hướng dẫn của giáo viên bộ môn, nhóm chúng em đã chọn đề tài:
“Xây dựng chương trình quản lý kho hàng các sản phẩm của nhà sách Trí Tuệ”
cho bài tập lớn này. Chúng em rất mong nhận được những lời nhận xét từ thầy cô.
Chúng em xin chân thành cảm ơn!
CHƯƠNG 1: ĐẶT BÀI TOÁN
Xây dựng chương trình quản lý kho hàng các sản phẩm của nhà sách Trí Tuệ là
một bài toán thực tế và có nhiều yêu cầu phức tạp. Mục tiêu của bài toán là thiết kế một
hệ thống có thể lưu trữ, theo dõi và cập nhật thông tin của các sản phẩm trong kho hàng
của nhà sách. Để giải quyết bài toán này, chúng ta cần phân tích các yếu tố sau: -
Đối tượng: các sản phẩm của nhà sách (sách, văn phòng phẩm, đồ chơi, quà tặng, ...) -
Dữ liệu: Các sản phẩm trong kho hàng của nhà sách có các thuộc tính như
tên,mã số, số lượng tồn kho, ngày nhập, nhà cung cấp, giá nhập, giá bán, tình trạng. -
Chức năng: Hệ thống quản lý kho hàng của nhà sách cần có các chức năngchính như sau: lOMoAR cPSD| 46342985 2 + Thêm sản phẩm + Xóa sản phẩm
+ Hiển thị thông tin sản phẩm
+ Cập nhật thông tin sản phẩm
+ Tìm kiếm thông tin sản phẩm
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN
2.1. Sơ đồ các chức năng của hệ thống
Hình 1: Sơ đồ các chức năng của hệ thống lOMoAR cPSD| 46342985 3
2.2. Mô tả chi tiết các chức năng
2.2.1. Quy trình thực hiện của chức năng
2.2.1.1. Tạo kho mới
Đầu tiên người dùng phải tạo kho để quản lý thông tin sản phẩm. Kho mới được
tạo sẽ ghi sẵn các tiêu đề của mỗi cột chính là từng thông tin của sản phẩm: tên, mã, số
lượng, ngày nhập, nhà cung cấp, giá nhập, giá bán, tình trạng sản phẩm. Sau khi tạo
xong, chương trình sẽ thông báo “Đã tạo kho” rồi quay trở lại màn hình ban đầu.
2.2.1.2. Truy cập kho
Tại chức năng này, chương trình sẽ hiện lên menu với các lựa chọn cho việc quản
lý sản phẩm như: thêm sản phẩm, xóa sản phẩm, hiển thị thông tin sản phẩm, cập nhật
thông tin sản phẩm, tìn kiếm thông tin sản phẩm. Nếu chưa tạo kho (kho không tồn tại)
thì chương trình sẽ thông báo cho người dùng để người dùng tạo kho.
2.2.1.3. Thêm sản phẩm
Khi người dùng lựa chọn phần thêm sản phẩm, chương trình sẽ yêu cầu nhập các
thông tin cần thiết của sản phẩm. Sau khi nhập xong, chương trình sẽ yêu cầu người
dùng kiểm tra lại thông tin trước khi lưu. Nếu thông tin đã nhập đúng, người dùng thực
hiện lưu thông tin và chương trình tự động quay lại menu. Nếu thông tin đã nhập chưa
đúng, chương tình sẽ yêu cầu nhập lại thông tin.
2.2.1.4. Xóa sản phẩm
Đối với chức năng xóa sản phẩm, chương trình sẽ yêu cầu nhập thông tin mã sản
phẩm cần xóa. Nếu mã sản phẩm không tồn tại, chương trình sẽ hiển thị “Không tìm
thấy sản phẩm cần xóa!” và quay lại menu. Nếu mã sản phẩm nhập vào tồn tại, chương
trình sẽ hiển thị thông tin sản phẩm tương ứng và xác nhận yêu cầu xóa sản phẩm của người dùng.
2.2.1.5. Hiển thị thông tin sản phẩm
Khi người dùng lựa chọn phần hiển thị thông tin sản phẩm, tất cả thông tin các sản
phẩm đã lưu sẽ được hiển thị trên màn hình dưới dạng bảng, giúp người dùng dễ nhìn,
dễ theo dõi được từng thông tin của từng sản phẩm trong kho. Sau khi hiện tất cả thông
tin, chương tình sẽ quay lại menu. lOMoAR cPSD| 46342985 4
2.2.1.6. Cập nhật thông tin sản phẩm
Ở chức năng cập nhật thông tin sản phẩm, chương trình sẽ yêu cầu người dùng
nhập mã của sản phẩm cần cập nhật. Nếu không có sản phẩm phù hợp với thông tin tìm
kiếm, chương trình sẽ đưa ra thông báo: “Không tìm thấy sản phẩm”. Ngược lại, nếu tồn
tại sản phẩm, chương trình sẽ đưa ra các mục để bạn lựa chọn để cập nhật các thông tin
cần thiết. Sau khi cập nhật xong, người dùng tiến hành lưu và quay lại menu.
2.2.1.7. Tìm kiếm thông tin sản phẩm
Khi người dùng lựa chọn tìm kiếm sản phẩm, chương trình sẽ yêu cầu người dùng
nhập lựa chọn của mình để thực hiện các hoạt động tìm kiếm. Sẽ có 3 lựa chọn tìm kiếm:
tìm kiếm theo tên, tìm kiếm theo mã và tìm kiếm theo khoảng giá. Tùy vào mong muốn
mà người dùng sẽ lựa chọn mục tìm kiếm phù hợp. Nếu không có sản phẩm nào có thông
tin trùng khớp với thông tin tìm kiếm, chương trình sẽ thông báo “Không tìm thấy sản
phẩm yêu cầu!”. Khi đó người dùng có thể lựa chọn các hoạt động tìm kiếm khác hoặc
thoát. Ngược lại, chương trình sẽ in ra các sản phẩm phù hợp rồi quay lại menu.
2.2.2. Sơ đồ khối thực hiện của chức năng
2.2.2.1. Tạo kho mới
Hình 2: Sơ đồ khối chức năng tạo kho mới lOMoAR cPSD| 46342985 5
2.2.2.2. Truy cập kho
Hình 3: Sơ đồ khối chức năng truy cập kho 2.2.2.3. Thêm sản phẩm
Hình 4: Sơ đồ khối chức năng thêm sản phẩm lOMoAR cPSD| 46342985 6
2.2.2.4. Xóa sản phẩm
Hình 5: Sơ đồ khối chức năng xóa sản phẩm lOMoAR cPSD| 46342985 7
2.2.2.5. Hiển thị thông tin sản phẩm
Hình 6: Sơ đồ khối chức năng hiển thị thông tin sản phẩm lOMoAR cPSD| 46342985 8
2.2.2.6. Cập nhật thông tin sản phẩm
Hình 7: Sơ đồ khối chức năng cập nhật thông tin sản phẩm lOMoAR cPSD| 46342985 9
2.2.2.7. Tìm kiếm thông tin sản phẩm
Hình 8: Sơ đồ khối chức năng tìm kiếm thông tin sản phẩm
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
3.1. Mô tả cấu trúc của chương trình
Chương trình quản lý kho hàng các sản phẩm của nhà sách Trí Tuệ sử dụng các
tệp, thư viện và module sau.
3.1.1. Tệp CSV
Tệp CSV là một loại tệp văn bản thuần túy sử dụng cấu trúc cụ thể để sắp xếp dữ
liệu dạng bảng. CSV là một định dạng phổ biến để trao đổi dữ liệu vì sự nhỏ gọn, đơn
giản và tính khái quát. Chương trình sử dụng tệp CSV để lưu trữ thông tin sản phẩm. lOMoAR cPSD| 46342985 10
3.1.2. Thư viện Pandas
Thư viện pandas là một thư viện mã nguồn mở trong Python dùng để xywr lý và
phân tích dữ liệu. Thư viện pandas cung cấp các cấu trúc dữ liệu và các công cụ mạnh
mẽ để thao tác với các bảng dữ liệu, các chuỗi thời gian và các đối tượng khác. Thư viện
pandas được sử dụng rộng rãi trong các lĩnh vực như khoa học dữ liệu, kinh tế học và thống kê.
Để sử dụng thư viện pandas trong Python, ta cần cài đặt nó trước. Ta có thể cài đặt
pandas bằng một số cách sau:
- Sử dụng pip: gõ lệnh pip install pandas
- Sử dụng conda: gõ lệnh conda install pandas
- Sử dụng Anaconda: Anaconda đã bao gồn pandas
- Sử dụng các lệnh khác phù hợp với hệ điều hành
3.1.3. Module os
Module os là một module tích hợp sẵn với Python, module này cho phép chúng ta
thao tác với tệp và thư mục.
3.1.4. Module quanlysp
Đây là module chứa các hàm người dùng tự định nghĩa với các chức năng tạo kho,
thêm, xóa, hiển thị, cập nhật và tìm kiếm sản phẩm. Tại chương trình chính ta chỉ cần
import quanlysp để có thể sử dụng được các hàm được định nghĩa trong đây.
3.2. Mô tả chi tiết các hàm chính của chương trình
3.2.1. Hàm taokho()
Mục đích: tạo một kho hàng là file CSV có tên KhoHang.csv và ghi một dòng dữ
liệu là tiêu đề của từng cột thông tin sản phẩm vào file đó. lOMoAR cPSD| 46342985 11 def taokho(): import csv with
open('KhoHang.csv','w',encoding = 'utf-8') as khohang:
writer = csv.writer(khohang, lineterminator = '\n')
writer.writerow(['Tên sản phẩm', 'Mã sản phẩm', 'Số lượng', 'Ngày nhập', 'Nhà
cung cấp', 'Giá nhập', 'Giá bán', 'Tình trạng sản phẩm']) print('Đã tạo kho!')
Nhập thư viện csv bằng lệnh import csv
Mở file KhoHang.csv ở chế độ ghi (w) với encoding là utf-8 và gán cho biến
khohang. Nếu file không tồn tại thì sẽ tạo file mới, nếu file đã tồn tại thì sẽ xóa hết dữ liệu của file cũ.
Tạo một đối tượng writer bằng hàm csv.writer() với tham số là file khohang và
lineterminator là '\n' để xuống dòng sau mỗi dòng ghi.
Ghi một dòng dữ liệu vào file bằng phương thức writerow() với tham số là một
list chứa các giá trị của các cột: ['Tên sản phẩm', 'Mã sản phẩm', 'Số lượng', 'Ngày nhập',
'Nhà cung cấp', 'Giá nhập', 'Giá bán', 'Tình trạng sản phẩm'] In ra màn hình thông báo
'Đã tạo kho!' bằng hàm print()
3.2.2. Hàm themsp()
Hàm themsp() được sử dụng với mục đích thêm sản phẩm. def themsp(): import csv while True:
ten = input('Nhập tên sản phẩm: ')
ma = input('Nhập mã sản phẩm: ') sl
= int(input('Số lượng sản phẩm: ')) lOMoAR cPSD| 46342985 12
nn = input('Ngày nhập: ') ncc
= input('Nhà cung cấp: ') gn =
int(input('Giá nhập: ')) gb =
int(input('Giá bán: ')) tt =
input('Tình trạng sản phẩm: ') print('''
Vui lòng kiểm tra lại thông tin trước khi lưu 1. Lưu 2.
Nhập lại thông tin''') n = input('Nhập tùy chọn: ') while n!='1' and n!='2':
n = input('Không hợp lệ. Nhập lại tùy chọn: ') if n == '1':
with open('KhoHang.csv', 'at', encoding = 'utf-8') as khohang:
writer = csv.writer(khohang, lineterminator =
'\n') writer.writerow([ten, ma, sl, nn, ncc, gn, gb,
tt]) print('Lưu thông tin thành công!') break else: pass
Đầu tiên, khai báo sử dụng thư viện csv để làm việc với file csv bằng câu lệnh import csv.
Phần while True: tạo một vòng lặp vô hạn để nhập thông tin sản phẩm cho đến khi
lưu thành công hoặc thoát chương trình.
Người dùng lần lượt nhập tên, mã, số lượng, ngày nhập, nhà cung cấp, giá nhập,
giá bán, tình trạng sản phẩm vào chương trình. Sau đó, chương trình sẽ lần lượt gán các
thông tin trên vào các biến: ten, ma, sl, nn, ncc, gn, gb, tt. Phần print('''
Vui lòng kiểm tra lại thông tin trước khi lưu 1. Lưu lOMoAR cPSD| 46342985 13 2.
Nhập lại thông tin'''): in ra màn hình các tùy chọn cho người dùng để kiểm tra
lại thông tin sản phẩm.
Phần n = input('Nhập tùy chọn: '): nhập tùy chọn tương ứng từ bàn phím, sau
đó gán vào biến n.
Sử dụng vòng lặp while n!='1' and n!='2': nếu tùy chọn không hợp lệ (không
phải 1 hoặc 2) thì yêu cầu nhập lại tùy chọn cho đến khi hợp lệ.
Nếu tùy chọn là 1 thì tiến hành lưu thông tin sản phẩm vào file csv.
Phần with open('KhoHang.csv', 'at', encoding = 'utf-8') as khohang dùng để
mở file KhoHang.csv ở chế độ append (thêm vào cuối file) với encoding utf-8 và gán vào biến khohang.
Tạo một đối tượng writer bằng lệnh csv.writer() với tham số là khohang và
lineterminator là ký tự xuống dòng để ghi dữ liệu vào file csv. Sau đó, ghi một dòng
dữ liệu vào file csv với các giá trị của các biến ten, ma, sl, nn, ncc, gn, gb, tt.
Sau đó, in ra màn hình thông báo lưu thông tin thành công rồi thoát khỏi vòng
lặp while và kết thúc chương trình.
Nếu tùy chọn là 2 thì không làm gì cả và quay lại vòng lặp while để nhập lại thông tin sản phẩm.
3.2.3. Hàm xoasp()
Hàm xoasp() được sử dụng để xóa sản phẩm. import pandas as pd
masp = str (input('Nhập mã sản phẩm cần xóa: '))
df = pd.read_csv('KhoHang.csv', dtype = {'Mã sản phẩm':
str}) sp_can_xoa = df.loc[(df['Mã sản phẩm'] == str(masp))] if sp_can_xoa.empty:
print("Không tìm thấy sản phẩm cần xóa!") else: print(sp_can_xoa) while True:
print('Bạn có chắc chắn muốn xóa sản phẩm trên không?') lOMoAR cPSD| 46342985 14 print('1. Có') print('2. Không')
a = input('Nhập lựa chọn: ') if a == '1':
df.drop(df[df['Mã sản phẩm'] == str(masp)].index, inplace =
True) df.to_csv('KhoHang.csv', index = False) print("Đã
xóa thành công sản phẩm!") break elif a == '2': break else:
print('Không hợp lệ. Vui lòng nhập lại!')
Đầu tiên, thư viện pandas được import vào chương trình
Nhập mã sản phẩm cần xóa vào biến ‘masp’
Sử dụng hàm “read_csv” từ thư viện Pandas để đọc file CSV có tên
“KhoHang.csv” vào Dataframe “df”. Đối số “dtype = {‘Mã sản phẩm’ : str}” được sử
dụng để định dạng kiểu dữ liệu của cột "Mã sản phẩm" là chuỗi (string).
Sử dụng phương thức ‘loc’ của DataFrame để lọc các hàng trong df có giá trị cột
"Mã sản phẩm" trùng với “masp’. Kết quả được gán vào ‘sp_can_xoa’.
Kiểm tra xem ‘sp_can_xoa’ có rỗng không. Nếu rỗng, tức là không tìm thấy sản
phẩm với mã ‘masp’. In ra màn hình “Không tìm thấy sản phẩm cần xóa!”
Ngược lại, in ra thông tin sản phẩm cần xóa tương ứng với mã sản phẩm phù hợp,
hiển thị thông tin các sản phẩm thỏa mãn yêu cầu.
Xác nhận lại yêu cầu của người dùng: 'Bạn có chắc chắn muốn xóa sản phẩm trên
không?’ (Có/Không). Nếu ‘Có’, sử dụng phương thức ‘drop’ của DataFrame để loại bỏ
hàng được chỉ định trong df. Sau đó sử dụng phương thức “to_csv” để xuất dữ liệu từ
DataFrame df ra file CSV. Nếu ‘Không’, không xóa thông tin sản phẩm và quay lại menu. lOMoAR cPSD| 46342985 15
3.2.4. Hàm hienthisp()
Hàm hienthisp() dùng để hiển thị tất cả thông tin các sản phẩm đã lưu trong kho. def hienthisp(): import pandas as pd
hienthi = pd.read_csv('KhoHang.csv') print(hienthi)
Đầu tiên, thư viện pandas được import vào chương trình.
Tiếp theo, gán biến hienthi bằng kết quả của hàm đọc file csv:
pd.read_csv('KhoHang.csv'). Sau đó, sử dụng hàm print để in ra nội dung của biến
hienthi, tức là nội dung các thông tin sản phẩm đã lưu.
3.2.5. Hàm capnhatsp()
Hàm capnhatsp() được dùng để cập nhật thông tin sản phẩm. def capnhatsp(): import pandas as pd
masp_can_thay_doi = input("Nhập mã sản phẩm cần cập nhật : ")
df = pd.read_csv('KhoHang.csv', dtype={'Mã sản phẩm': str})
san_pham_cap_nhat = df.loc[(df['Mã sản phẩm'] == str(masp_can_thay_doi))] if san_pham_cap_nhat.empty:
print("Không tìm thấy sản phẩm cần cập nhật.") else: print(san_pham_cap_nhat) while True: chon = input(''' Bạn muốn?
1. Cập nhật tên sản phẩm
2. Cập nhật mã sản phẩm
3. Cập nhật số lượng sản phẩm
4. Cập nhật ngày nhập sản phẩm
5. Cập nhật nhà cung cấp
6. Cập nhật giá nhập sản phẩm
7. Cập nhật giá bán sản phẩm lOMoAR cPSD| 46342985 16