lOMoARcPSD| 46342985
/
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HỆ THỐNG THÔNG TIN KINH TẾ - THƯƠNG MẠI ĐIỆN TỬ
----
----
HỌC PHẦN:
Lập trình với Python
GVHD:
Nguyễn Hưng Long
NHÓM:
23
TÊN ĐỀ TÀI:
Xây dựng chương trình quản lý thông
tin ô tô của công ty Honda Việt Nam
Số
báo
danh
Họ và tên
Mã số SV
Lớp
hành
chính
nộp
Điểm bài tập
Ghi
chú
Chấm 1
Chấm 2
Hà Nam, ngày 10 tháng 6 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
lOMoARcPSD| 46342985
2
LỜI MỞ ĐẦU
Ngày nay, sự phát triển của khoa học công nghệ cũng như công nghệ thông tin
đã trở thành một phần không thể thiếu trong mọi lĩnh vực hoạt động đời sống của con
người. Và trong các lĩnh vực đó không thể không kể đến là kinh tế, đặc biệt trong
công tác quản lý thông tin sản phẩm ở các công ty và doanh nghiệp.
Tớc đây, việc quản lý chủ yếu dựa trên giấy tờ sổ sách, thực hiện một cách
thủ công, tốn thời gian, thiếu chính xác đồng thời gây ảnh hưởng tới việc quản lý
thông tin sản phẩm hàng hóa. Tuy nhiên, trong những năm gần đây, với sự bùng n
của công nghệ thông tin thì nó đang dần thay thế những công việc thủ công đó và
ngày càng khẳng định vai trò quan trọng của mình. Với sự phát triển của kinh tế toàn
cầu hiện nay, mỗi công ty doanh nghiệp đang phải hằng ngày xử lý lượng dữ liệu
khổng lồ từ những hoạt động như sản xuất, mua – bán hàng hóa,… Do vậy, việc ứng
dụng công nghệ thông tin vào công việc quản lý hàng hóa (như cập nhật – tìm kiếm –
xóa thông tin hàng hóa) của các công ty doanh nghiệp là rất cần thiết, đặc biệt là hệ
thống hóa các dữ liệu và thông tin về sản phẩm trên những phần mềm quản lý mà ta
có thể tạo ra bằng việc lập trình, tối ưu code, qua đó giúp doanh nghiệp dễ dàng quản
lý và nắm bắt dữ liệu của hàng hóa một cách chính xác và tường minh.
Vì thế sau khi nghiên cứu bộ môn “Lập trình với Python”, chúng em nhận thức
được tầm quan trọng của một hệ thống quản lý thông tin sản phẩm là rất cần thiết cho
một doanh nghiệp kinh doanh và được đảm nhận đề tài “Xây dựng chương trình quản
lý thông tin ô tô của công ty Honda Việt Nam” cho bài tập lớn này. Nhóm chúng em
rất mong nhận được những lời góp ý của thầy cô.
Chúng em xin chân thành cảm ơn!
LỜI CẢM ƠN
Nhóm 23 chúng em xin được gửi lời cảm ơn chân thành đến Trường Đại học
Thương Mại nói chung cũng như Giảng viên Nguyễn Hưng Long nói riêng đã giảng
dạy và đồng hành cùng với chúng em trong suốt quá trình học tập với học phần Lập
trình với Python tại cơ sở Hà Nam. Qua quá trình học, chúng em đã tiếp thu được các
kiến thức mới mẻ và bổ ích, điều này cũng hỗ trợ chúng em rất nhiều trong việc học
tập các năm học tới cũng như công việc sau này.
lOMoARcPSD| 46342985
3
Tuy nhiên thời gian còn hạn chế, vẫn còn nhiều kiến thức chúng em chưa hiểu
sâu được và khó tránh khỏi nhiều thiếu sót khi làm bài tập lớn này. Mong thầy xem
xét và góp ý để bài tập nhóm chúng em được hoàn thiện hơn ạ.
Chúng em xin chân thành cảm ơn!
LỜI CAM ĐOAN
Chúng em xin cam đoan rằng bài thảo luận với đề tài: “ Xây dựng chương trình
quản lý thông tin ô tô của công ty Honda Việt Nam” là công trình nghiên cứu của cả
tập thể nhóm 23 và cũng như là của tất cả thành viên trong nhóm. Trong trường hợp
có bất cứ thông tin nào sai sự thật, chúng em xin hoàn toàn chịu trách nhiệm và chịu
mọi hình phạt kỷ luật từ phía bộ môn và nhà trường đề ra.
Nam, ngày 10 tháng 6 năm 2023
Tập thể nhóm 23
MỤC LỤC
LỜI MỞ ĐẦU..............................................................................................................2
LỜI CẢM ƠN..............................................................................................................3
LỜI CAM ĐOAN........................................................................................................3
BIÊN BẢN PHÂN CHIA VÀ NGHIỆM THU CÔNG VIỆC..................................4
NỘI DUNG..................................................................................................................6
I. PHÂN TÍCH BÀI TOÁN QUẢN LÝ THÔNG TIN VÀ SƠ ĐỒ KHỐI...........6
1.1. Đặt bài toán và mô tả bài toán quản lý........................................................6
1.1.1. Đặt bài toán quản lý:................................................................................6
1.1.2. Mô tả bài toán quản lý:............................................................................6
lOMoARcPSD| 46342985
4
1.2. Phân tích bài toán quản lý bằng sơ đồ khối.................................................8
1.2.1. Sơ đồ khối quy trình chung:....................................................................8
1.2.2. Sơ đồ khối thao tác thêm thông tin:.........................................................9
1.2.3. Sơ đồ khối thao thác xóa thông tin:.......................................................10
1.2.4. Sơ đồ khối thao tác tìm thông tin:.........................................................11
1.2.5. Sơ đồ khối sửa thông tin:.......................................................................12
1.2.6. Sơ đồ khối hiển thị thông tin:................................................................13
II. CÀI ĐẶT CHƯƠNG TRÌNH.........................................................................14
2.1. Đọc thông tin từ file.....................................................................................14
2.2. Lưu thông tin vào file..................................................................................15
2.3. Xây dựng chương trình thêm thông tin theo hàm.....................................16
2.4. Xây dựng chương trình tìm kiếm thông tin theo hàm..............................21
2.5. Xây dựng chương trình sửa thông tin theo hàm.......................................23
2.6. Xây dựng chương trình xóa thông tin theo hàm.......................................25
2.7. Hiển thị toàn bộ danh sách thông tin trong file.........................................27
2.8. Các chương trình (menu) chính:................................................................28
III. KẾT LUẬN......................................................................................................30
NỘI DUNG
I. PHÂN TÍCH BÀI TOÁN QUẢN LÝ THÔNG TIN VÀ SƠ ĐỒ KHỐI
I.1. Đặt bài toán và mô tả bài toán quản lý
I.1.1. Đặt bài toán quản lý:
Trong lĩnh vực kinh doanh nói chung cũng như công ty Honda Việt Nam nói
riêng, công tác quản lý thông tin hàng hóa là rất cần thiết và tương đối phức tạp. Công
ty Honda Việt Nam là công ty hàng đầu Việt Nam trong lĩnh vực sản xuất, nhập khẩu
và phân phối xe gắn máy, ô tô với chất lượng và dịch vụ mới nhất. Vì thế, để giải
quyết công việc kinh doanh một cách tốt nhất thì việc có một hệ thống quản lý thông
tin sản phẩm rất quan trọng và mang tính quyết định. Đảm bảo cho doanh nghiệp nắm
bắt được tình trạng hàng hóa của mình một cách chính xác và thống nhất tuyệt đối
mỗi lần xuất - nhập khẩu, bán, hay tìm kiếm – cập nhật thông tin hàng hóa. Từ đó
giúp cho Honda Việt Nam kiểm soát sản phẩm của mình, góp phần tạo lập những kế
hoạch nhằm thúc đẩy doanh số bán hàng, phát triển doanh nghiệp của mình.
lOMoARcPSD| 46342985
5
Vì thế việc có một hệ thống quản lý thông tin sản phẩm với các thao tác như
nhập thông tin, cập nhật – xóa – tìm kiếm thông tin sẽ giúp doanh nghiệp Honda Việt
Nam tối ưu được các hoạt động kinh doanh.
Do đó bài toán đặt ra là: Xây dựng chương trình quản lý thông tin của công ty
Honda Việt Nam
I.1.2. Mô tả bài toán quản lý:
a. Mô tả bài toán
Input: ID ô tô, tên ô tô, giá ô tô, thời gian bảo hành Output: Chương
trình đưa ra các chức năng sau:
Thêm thông tin ô tô: cho phép nhập thông tin ô tô mới và lưu trữ vào
sở dữ liệu
Cập nhật thông tin ô tô: cho phép cập nhật thông tin oto qua ID oto, thay
đổi thông tin oto
Xóa thông tin ô tô: cho phép xoá thông tin ô tô dựa vào ID
Tìm kiếm thông tin ô tô: cho phép tìm kiếm thông tin ô tô thông qua ID
và tên đã nhập
Ràng buộc:
- ID ô tô là duy nhất và không trùng lặp
- Các thao tác xoá và cập nhật thông tin ô tô được thực hiện nếu thông tin của ô
tó đó có tồn tại trong hệ thống
- Dữ liệu thông tin của các ô tô phải được lưu trữ bảo mật an toàn , truy xuất một
cách hiệu quả và hợp lý Giải pháp:
- Xây dựng chương trình quản lí thông tin ô tô của công ty Honda Việt Nam
thông qua ngôn ngữ lập trình python.
- Triển khai các hàm và phương thức để thực hiện các chức năng yêu cầu
- Tạo cấu trúc dữ liệu phù hợp để lưu trữ thông tin ô tô
b. Xác định kiểu dữ liệu cho trường dữ liệu
TRƯỜNG DỮ LIỆU
KIỂU DỮ LIỆU
ID ô tô (id)
string
lOMoARcPSD| 46342985
6
Tên ô tô (name)
string
Giá ô tô (cost)
integer
Thời gian bảo hành (warranty)
string
I.2. Phân tích bài toán quản lý bằng sơ đồ khối
I.2.1. Sơ đồ khối quy trình chung:
lOMoARcPSD| 46342985
7
I.2.2. Sơ đồ khối thao tác thêm thông tin:
I.2.3. Sơ đồ khối thao thác xóa thông tin:
lOMoARcPSD| 46342985
8
I.2.4. Sơ đồ khối thao tác tìm thông tin:
lOMoARcPSD| 46342985
9
I.2.5. Sơ đồ khối sửa thông tin:
lOMoARcPSD| 46342985
10
I.2.6. Sơ đồ khối hiển thị thông tin:
lOMoARcPSD| 46342985
11
II. CÀI ĐẶT CHƯƠNG TRÌNH II.1. Đọc thông tin từ file
Code:
lOMoARcPSD| 46342985
12
import io
# cung cấp các hàm và các biến được sử dụng để thao tác các phần khác nhau của
môi trường chạy Python.
listoto = []
def read_oto():
file_name = "oto_data.txt"
try: with io.open(file_name, 'r')
as file:
data = file.read().splitlines()
if len(data) == 0:
print("No oto data found.")
return new_list_oto = [] for oto_data
in data: splitted_oto_data =
oto_data.split(',') temp_oto = {}
temp_oto['id'] = splitted_oto_data[0]
temp_oto['name'] = splitted_oto_data[1]
temp_oto['cost'] = splitted_oto_data[2]
temp_oto['warranty'] = splitted_oto_data[3]
new_list_oto.append(temp_oto) global listoto
listoto = new_list_oto
except FileNotFoundError:
lOMoARcPSD| 46342985
13
print("Không có dữ liệu ô tô.")
Đoạn code này có chức năng đọc dữ liệu từ tệp “oto_data.txt” và lưu trữ dữ liệu
vào một danh sách các đối tượng ô tô. Đầu tiên, mở tệp “oto_data.txt” và đọc
dữ liệu từ tệp. Nếu không có dữ liệu nào được tìm thấy trong tệp, chương trình
sẽ in ra thông báo “No oto data found.” và kết thúc. Nếu có dữ liệu được tìm
thấy trong tệp, chương trình sẽ phân tích dữ liệu và lưu trữ chúng vào một danh
sách các đối tượng ô tô. Mỗi đối tượng ô tô được lưu trữ trong một từ điển với
các khóa ‘id’, ‘name’, ‘cost’ và ‘warranty’. Sau khi phân tích xong dữ liệu,
danh sách các đối tượng ô tô được gán cho biến toàn cục “listoto”. Có thể sử
dụng biến “listoto” để truy cập các đối tượng ô tô trong danh sách.
II.2. Lưu thông tin vào file
Code:
def write_oto():
data = [] for oto_data in listoto:
id = oto_data['id'] name =
oto_data['name'] cost =
oto_data['cost'] warranty =
oto_data['warranty'] line =
f'{id},{name},{cost},{warranty}'
data.append(line)
# Save data to a text file
file_name = "oto_data.txt" with
io.open(file_name, 'w') as file:
file.write('\n'.join(data))
lOMoARcPSD| 46342985
14
print(f"dữ liệu dc chuyển vào {file_name}.")
Đoạn code này có chức năng ghi dữ liệu từ danh sách các đối tượng ô tô vào tệp
“oto_data.txt”. Đầu tiên, tạo một danh sách các chuỗi dữ liệu từ danh sách các
đối tượng ô tô. Mỗi chuỗi dữ liệu được tạo bằng cách lấy các giá trị của các
thuộc tính ‘id’, ‘name’, ‘cost’ và ‘warranty’ của mỗi đối tượng ô tô và nối
chúng thành một chuỗi bằng cách sử dụng dấu phẩy để ngăn cách các giá trị.
Sau đó, danh sách các chuỗi dữ liệu được ghi vào tệp “oto_data.txt” bằng cách
sử dụng hàm “write” của đối tượng file. Nếu tệp đã tồn tại, nội dung của nó sẽ
bị ghi đè bởi nội dung mới. Nếu tệp không tồn tại, một tệp mới sẽ được tạo ra
với nội dung mới.
II.3. Xây dựng chương trình thêm thông tin theo hàm
Code:
def add_oto():
"""Hàm thêm một loại ô tô"""
print("*** THÊM Ô TÔ ***") # Cấu
trúc lưu trữ một loại ô tô infor = {
'id' : '',
'name' : '',
'cost' :'',
'warranty':''
}
lOMoARcPSD| 46342985
15
# Nhập ID, có kiểm tra trùng ID thì nhập lại
print("Nhập ID ô tô:") id = str(input())
while True:
oto = check_oto(id) if oto != False:
print("ID này đã tồn tại, vui lòng nhập lại:")
id = str(input()) else: break
infor['id'] = id
# Nhập tên print("Nhập
tên ô tô:") infor['name'] =
str(input())
# Nhập giá print( "Nhập giá ô
tô") infor['cost']= int(input())
#Nhập thời gian bảo hành
print("Nhập thời gian bảo hành")
infor['warranty'] =str(input())
# Lưu vào danh sách oto
listoto.append(infor)
write_oto()
lOMoARcPSD| 46342985
16
print('thêm thông tin thành công')
def check_oto(id): """Hàm kiểm
tra một loại ô tô""" for i in
range(0, len(listoto)): if
listoto[i]['id'] == id:
# Trả về mảng gồm 2 phần tử,
# 0 là vị trí tìm thấy và 1 là dữ liệu return [i, listoto[i]]
return False
write_oto()
Kết quả chạy chương trình:
Sau khi chọn chức năng thêm thông tin ô tô, chương trình hiển thị một thông
báo để yêu cầu nhập thông tin về loại ô tô mới. Sau đó, kiểm tra xem ID của loại ô tô
mới có bị trùng với ID của một loại ô tô đã có trong danh sách hay không. Nếu ID bị
trùng, đoạn code sẽ yêu cầu người dùng nhập lại ID. Nếu ID không bị trùng, đoạn
code sẽ yêu cầu người dùng nhập thông tin về tên, giá và thời gian bảo hành của loại ô
tô mới. Sau khi nhập đầy đủ thông tin, đoạn code sẽ lưu thông tin về loại ô tô mới vào
danh sách các đối tượng ô tô và ghi danh sách này vào tệp “oto_data.txt” bằng cách sử
dụng hàm “write_oto()”. Nếu quá trình thêm thông tin thành công, đoạn code sẽ in ra
thông báo “thêm thông tin thành công”.
lOMoARcPSD| 46342985
17
lOMoARcPSD| 46342985
18
Sau khi nhập thông tin, dữ liệu thu được trong file oto_data.txt như sau:
lOMoARcPSD| 46342985
19
II.4. Xây dựng chương trình tìm kiếm thông tin theo hàm
Code:
def find_oto():
"""Hàm tìm thông tin ô tô""" print("***Thông tin
ô tô***") find = input("Tìm kiếm theo tên hay
id(name /id): ") if find == "name":
name = input("Nhập tên: ")
a = False for oto in listoto: if
name.lower() in oto["name"].lower():
# Hàm lower chuyển đổi chữ hoa sang chữ thường
print( f"Ô TÔ - id: {oto['id']}, Tên: {oto['name']}, Giá:
{oto['cost']}, Bảo hành: {oto['warranty']}")
a = True
if not a:
lOMoARcPSD| 46342985
20
print("Không tìm thấy ô tô")
elif find== 'id':
maid =str(input('Nhập id:
')) for oto in listoto:
if maid == oto['id']:
print( f"Ô TÔ - id: {oto['id']}, Tên: {oto['name']}, Giá:
{oto['cost']}, Bảo hành: {oto['warranty']}")
else:
print(" Không tìm thấy ôtô")
break
Kết quả chạy chương trình:
Khi chức năng tìm kiếm thông tin về một loại ô tô trong danh sách các đối tượng ô tô,
chương trình sẽ hiển thị một thông báo để yêu cầu người dùng nhập phương thức tìm
kiếm (theo tên hay ID). Sau đó, nó sử dụng vòng lặp “for” để duyệt qua danh sách các
đối tượng ô tô và in ra thông tin về từng đối tượng ô tô nếu tên hoặc ID của đối tượng
ô tô chứa chuỗi ký tự được nhập vào. Nếu không có đối tượng ô tô nào chứa chuỗi ký
tự được nhập vào, chương trình sẽ in ra thông báo “Không tìm thấy ô tô”.

Preview text:

lOMoAR cPSD| 46342985 /
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HỆ THỐNG THÔNG TIN KINH TẾ - THƯƠNG MẠI ĐIỆN TỬ ---- ---- BÀI TẬP LỚN
HỌC PHẦN: Lập trình với Python
GVHD: Nguyễn Hưng Long NHÓM: 23
TÊN ĐỀ TÀI: Xây dựng chương trình quản lý thông
tin ô tô của công ty Honda Việt Nam Số Họ và tên Mã số SV Lớp Điểm bài tập Ghi báo hành nộp chú danh chính
Chấm 1 Chấm 2
Hà Nam, ngày 10 tháng 6 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 LỜI MỞ ĐẦU
Ngày nay, sự phát triển của khoa học công nghệ cũng như công nghệ thông tin
đã trở thành một phần không thể thiếu trong mọi lĩnh vực hoạt động đời sống của con
người. Và trong các lĩnh vực đó không thể không kể đến là kinh tế, đặc biệt trong
công tác quản lý thông tin sản phẩm ở các công ty và doanh nghiệp.
Trước đây, việc quản lý chủ yếu dựa trên giấy tờ sổ sách, thực hiện một cách
thủ công, tốn thời gian, thiếu chính xác đồng thời gây ảnh hưởng tới việc quản lý
thông tin sản phẩm hàng hóa. Tuy nhiên, trong những năm gần đây, với sự bùng nổ
của công nghệ thông tin thì nó đang dần thay thế những công việc thủ công đó và
ngày càng khẳng định vai trò quan trọng của mình. Với sự phát triển của kinh tế toàn
cầu hiện nay, mỗi công ty doanh nghiệp đang phải hằng ngày xử lý lượng dữ liệu
khổng lồ từ những hoạt động như sản xuất, mua – bán hàng hóa,… Do vậy, việc ứng
dụng công nghệ thông tin vào công việc quản lý hàng hóa (như cập nhật – tìm kiếm –
xóa thông tin hàng hóa) của các công ty doanh nghiệp là rất cần thiết, đặc biệt là hệ
thống hóa các dữ liệu và thông tin về sản phẩm trên những phần mềm quản lý mà ta
có thể tạo ra bằng việc lập trình, tối ưu code, qua đó giúp doanh nghiệp dễ dàng quản
lý và nắm bắt dữ liệu của hàng hóa một cách chính xác và tường minh.
Vì thế sau khi nghiên cứu bộ môn “Lập trình với Python”, chúng em nhận thức
được tầm quan trọng của một hệ thống quản lý thông tin sản phẩm là rất cần thiết cho
một doanh nghiệp kinh doanh và được đảm nhận đề tài “Xây dựng chương trình quản
lý thông tin ô tô của công ty Honda Việt Nam” cho bài tập lớn này. Nhóm chúng em
rất mong nhận được những lời góp ý của thầy cô.
Chúng em xin chân thành cảm ơn! LỜI CẢM ƠN
Nhóm 23 chúng em xin được gửi lời cảm ơn chân thành đến Trường Đại học
Thương Mại nói chung cũng như Giảng viên Nguyễn Hưng Long nói riêng đã giảng
dạy và đồng hành cùng với chúng em trong suốt quá trình học tập với học phần Lập
trình với Python tại cơ sở Hà Nam. Qua quá trình học, chúng em đã tiếp thu được các
kiến thức mới mẻ và bổ ích, điều này cũng hỗ trợ chúng em rất nhiều trong việc học
tập các năm học tới cũng như công việc sau này. 2 lOMoAR cPSD| 46342985
Tuy nhiên thời gian còn hạn chế, vẫn còn nhiều kiến thức chúng em chưa hiểu
sâu được và khó tránh khỏi nhiều thiếu sót khi làm bài tập lớn này. Mong thầy xem
xét và góp ý để bài tập nhóm chúng em được hoàn thiện hơn ạ.
Chúng em xin chân thành cảm ơn! LỜI CAM ĐOAN
Chúng em xin cam đoan rằng bài thảo luận với đề tài: “ Xây dựng chương trình
quản lý thông tin ô tô của công ty Honda Việt Nam” là công trình nghiên cứu của cả
tập thể nhóm 23 và cũng như là của tất cả thành viên trong nhóm. Trong trường hợp
có bất cứ thông tin nào sai sự thật, chúng em xin hoàn toàn chịu trách nhiệm và chịu
mọi hình phạt kỷ luật từ phía bộ môn và nhà trường đề ra.
Hà Nam, ngày 10 tháng 6 năm 2023 Tập thể nhóm 23 MỤC LỤC
LỜI MỞ ĐẦU..............................................................................................................2
LỜI CẢM ƠN..............................................................................................................3
LỜI CAM ĐOAN........................................................................................................3
BIÊN BẢN PHÂN CHIA VÀ NGHIỆM THU CÔNG VIỆC..................................4
NỘI DUNG..................................................................................................................6
I. PHÂN TÍCH BÀI TOÁN QUẢN LÝ THÔNG TIN VÀ SƠ ĐỒ KHỐI...........6 1.1.
Đặt bài toán và mô tả bài toán quản lý........................................................6
1.1.1. Đặt bài toán quản lý:................................................................................6
1.1.2. Mô tả bài toán quản lý:............................................................................6 3 lOMoAR cPSD| 46342985 1.2.
Phân tích bài toán quản lý bằng sơ đồ khối.................................................8 1.2.1.
Sơ đồ khối quy trình chung:....................................................................8
1.2.2. Sơ đồ khối thao tác thêm thông tin:.........................................................9
1.2.3. Sơ đồ khối thao thác xóa thông tin:.......................................................10 1.2.4.
Sơ đồ khối thao tác tìm thông tin:.........................................................11
1.2.5. Sơ đồ khối sửa thông tin:.......................................................................12 1.2.6.
Sơ đồ khối hiển thị thông tin:................................................................13 II.
CÀI ĐẶT CHƯƠNG TRÌNH.........................................................................14 2.1.
Đọc thông tin từ file.....................................................................................14 2.2.
Lưu thông tin vào file..................................................................................15
2.3. Xây dựng chương trình thêm thông tin theo hàm.....................................16
2.4. Xây dựng chương trình tìm kiếm thông tin theo hàm..............................21
2.5. Xây dựng chương trình sửa thông tin theo hàm.......................................23
2.6. Xây dựng chương trình xóa thông tin theo hàm.......................................25
2.7. Hiển thị toàn bộ danh sách thông tin trong file.........................................27
2.8. Các chương trình (menu) chính:................................................................28
III. KẾT LUẬN......................................................................................................30 NỘI DUNG I.
PHÂN TÍCH BÀI TOÁN QUẢN LÝ THÔNG TIN VÀ SƠ ĐỒ KHỐI I.1.
Đặt bài toán và mô tả bài toán quản lý
I.1.1. Đặt bài toán quản lý:
Trong lĩnh vực kinh doanh nói chung cũng như công ty Honda Việt Nam nói
riêng, công tác quản lý thông tin hàng hóa là rất cần thiết và tương đối phức tạp. Công
ty Honda Việt Nam là công ty hàng đầu Việt Nam trong lĩnh vực sản xuất, nhập khẩu
và phân phối xe gắn máy, ô tô với chất lượng và dịch vụ mới nhất. Vì thế, để giải
quyết công việc kinh doanh một cách tốt nhất thì việc có một hệ thống quản lý thông
tin sản phẩm rất quan trọng và mang tính quyết định. Đảm bảo cho doanh nghiệp nắm
bắt được tình trạng hàng hóa của mình một cách chính xác và thống nhất tuyệt đối
mỗi lần xuất - nhập khẩu, bán, hay tìm kiếm – cập nhật thông tin hàng hóa. Từ đó
giúp cho Honda Việt Nam kiểm soát sản phẩm của mình, góp phần tạo lập những kế
hoạch nhằm thúc đẩy doanh số bán hàng, phát triển doanh nghiệp của mình. 4 lOMoAR cPSD| 46342985
Vì thế việc có một hệ thống quản lý thông tin sản phẩm với các thao tác như
nhập thông tin, cập nhật – xóa – tìm kiếm thông tin sẽ giúp doanh nghiệp Honda Việt
Nam tối ưu được các hoạt động kinh doanh.
Do đó bài toán đặt ra là: Xây dựng chương trình quản lý thông tin của công ty Honda Việt Nam
I.1.2. Mô tả bài toán quản lý: a. Mô tả bài toán
• Input: ID ô tô, tên ô tô, giá ô tô, thời gian bảo hành  Output: Chương
trình đưa ra các chức năng sau:
• Thêm thông tin ô tô: cho phép nhập thông tin ô tô mới và lưu trữ vào cơ sở dữ liệu
• Cập nhật thông tin ô tô: cho phép cập nhật thông tin oto qua ID oto, thay đổi thông tin oto
• Xóa thông tin ô tô: cho phép xoá thông tin ô tô dựa vào ID
• Tìm kiếm thông tin ô tô: cho phép tìm kiếm thông tin ô tô thông qua ID và tên đã nhập • Ràng buộc:
- ID ô tô là duy nhất và không trùng lặp
- Các thao tác xoá và cập nhật thông tin ô tô được thực hiện nếu thông tin của ô
tó đó có tồn tại trong hệ thống
- Dữ liệu thông tin của các ô tô phải được lưu trữ bảo mật an toàn , truy xuất một
cách hiệu quả và hợp lý  Giải pháp:
- Xây dựng chương trình quản lí thông tin ô tô của công ty Honda Việt Nam
thông qua ngôn ngữ lập trình python.
- Triển khai các hàm và phương thức để thực hiện các chức năng yêu cầu
- Tạo cấu trúc dữ liệu phù hợp để lưu trữ thông tin ô tô
b. Xác định kiểu dữ liệu cho trường dữ liệu TRƯỜNG DỮ LIỆU KIỂU DỮ LIỆU ID ô tô (id) string 5 lOMoAR cPSD| 46342985 Tên ô tô (name) string Giá ô tô (cost) integer
Thời gian bảo hành (warranty) string I.2.
Phân tích bài toán quản lý bằng sơ đồ khối
I.2.1. Sơ đồ khối quy trình chung: 6 lOMoAR cPSD| 46342985
I.2.2. Sơ đồ khối thao tác thêm thông tin:
I.2.3. Sơ đồ khối thao thác xóa thông tin: 7 lOMoAR cPSD| 46342985
I.2.4. Sơ đồ khối thao tác tìm thông tin: 8 lOMoAR cPSD| 46342985
I.2.5. Sơ đồ khối sửa thông tin: 9 lOMoAR cPSD| 46342985
I.2.6. Sơ đồ khối hiển thị thông tin: 10 lOMoAR cPSD| 46342985
II. CÀI ĐẶT CHƯƠNG TRÌNH II.1.
Đọc thông tin từ file  Code: 11 lOMoAR cPSD| 46342985 import io
# cung cấp các hàm và các biến được sử dụng để thao tác các phần khác nhau của môi trường chạy Python. listoto = [] def read_oto(): file_name = "oto_data.txt"
try: with io.open(file_name, 'r') as file:
data = file.read().splitlines() if len(data) == 0: print("No oto data found.")
return new_list_oto = [] for oto_data in data: splitted_oto_data =
oto_data.split(',') temp_oto = {}
temp_oto['id'] = splitted_oto_data[0]
temp_oto['name'] = splitted_oto_data[1]
temp_oto['cost'] = splitted_oto_data[2]
temp_oto['warranty'] = splitted_oto_data[3]
new_list_oto.append(temp_oto) global listoto listoto = new_list_oto except FileNotFoundError: 12 lOMoAR cPSD| 46342985
print("Không có dữ liệu ô tô.")
 Đoạn code này có chức năng đọc dữ liệu từ tệp “oto_data.txt” và lưu trữ dữ liệu
vào một danh sách các đối tượng ô tô. Đầu tiên, mở tệp “oto_data.txt” và đọc
dữ liệu từ tệp. Nếu không có dữ liệu nào được tìm thấy trong tệp, chương trình
sẽ in ra thông báo “No oto data found.” và kết thúc. Nếu có dữ liệu được tìm
thấy trong tệp, chương trình sẽ phân tích dữ liệu và lưu trữ chúng vào một danh
sách các đối tượng ô tô. Mỗi đối tượng ô tô được lưu trữ trong một từ điển với
các khóa ‘id’, ‘name’, ‘cost’ và ‘warranty’. Sau khi phân tích xong dữ liệu,
danh sách các đối tượng ô tô được gán cho biến toàn cục “listoto”. Có thể sử
dụng biến “listoto” để truy cập các đối tượng ô tô trong danh sách.
II.2. Lưu thông tin vào file  Code: def write_oto():
data = [] for oto_data in listoto: id = oto_data['id'] name = oto_data['name'] cost = oto_data['cost'] warranty = oto_data['warranty'] line =
f'{id},{name},{cost},{warranty}' data.append(line) # Save data to a text file
file_name = "oto_data.txt" with
io.open(file_name, 'w') as file: file.write('\n'.join(data)) 13 lOMoAR cPSD| 46342985
print(f"dữ liệu dc chuyển vào {file_name}.")
 Đoạn code này có chức năng ghi dữ liệu từ danh sách các đối tượng ô tô vào tệp
“oto_data.txt”. Đầu tiên, tạo một danh sách các chuỗi dữ liệu từ danh sách các
đối tượng ô tô. Mỗi chuỗi dữ liệu được tạo bằng cách lấy các giá trị của các
thuộc tính ‘id’, ‘name’, ‘cost’ và ‘warranty’ của mỗi đối tượng ô tô và nối
chúng thành một chuỗi bằng cách sử dụng dấu phẩy để ngăn cách các giá trị.
Sau đó, danh sách các chuỗi dữ liệu được ghi vào tệp “oto_data.txt” bằng cách
sử dụng hàm “write” của đối tượng file. Nếu tệp đã tồn tại, nội dung của nó sẽ
bị ghi đè bởi nội dung mới. Nếu tệp không tồn tại, một tệp mới sẽ được tạo ra với nội dung mới.
II.3. Xây dựng chương trình thêm thông tin theo hàm  Code: def add_oto():
"""Hàm thêm một loại ô tô"""
print("*** THÊM Ô TÔ ***") # Cấu
trúc lưu trữ một loại ô tô infor = { 'id' : ' , 'name' : '', 'cost' :' , 'warranty':'' } 14 lOMoAR cPSD| 46342985
# Nhập ID, có kiểm tra trùng ID thì nhập lại
print("Nhập ID ô tô:") id = str(input()) while True:
oto = check_oto(id) if oto != False:
print("ID này đã tồn tại, vui lòng nhập lại:") id = str(input()) else: break infor['id'] = id # Nhập tên print("Nhập
tên ô tô:") infor['name'] = str(input())
# Nhập giá print( "Nhập giá ô
tô") infor['cost']= int(input())
#Nhập thời gian bảo hành
print("Nhập thời gian bảo hành")
infor['warranty'] =str(input()) # Lưu vào danh sách oto listoto.append(infor) write_oto() 15 lOMoAR cPSD| 46342985
print('thêm thông tin thành công')
def check_oto(id): """Hàm kiểm
tra một loại ô tô""" for i in range(0, len(listoto)): if listoto[i]['id'] == id:
# Trả về mảng gồm 2 phần tử,
# 0 là vị trí tìm thấy và 1 là dữ liệu return [i, listoto[i]] return False write_oto()
 Kết quả chạy chương trình:
Sau khi chọn chức năng thêm thông tin ô tô, chương trình hiển thị một thông
báo để yêu cầu nhập thông tin về loại ô tô mới. Sau đó, kiểm tra xem ID của loại ô tô
mới có bị trùng với ID của một loại ô tô đã có trong danh sách hay không. Nếu ID bị
trùng, đoạn code sẽ yêu cầu người dùng nhập lại ID. Nếu ID không bị trùng, đoạn
code sẽ yêu cầu người dùng nhập thông tin về tên, giá và thời gian bảo hành của loại ô
tô mới. Sau khi nhập đầy đủ thông tin, đoạn code sẽ lưu thông tin về loại ô tô mới vào
danh sách các đối tượng ô tô và ghi danh sách này vào tệp “oto_data.txt” bằng cách sử
dụng hàm “write_oto()”. Nếu quá trình thêm thông tin thành công, đoạn code sẽ in ra
thông báo “thêm thông tin thành công”. 16 lOMoAR cPSD| 46342985 17 lOMoAR cPSD| 46342985
Sau khi nhập thông tin, dữ liệu thu được trong file oto_data.txt như sau: 18 lOMoAR cPSD| 46342985
II.4. Xây dựng chương trình tìm kiếm thông tin theo hàm  Code: def find_oto():
"""Hàm tìm thông tin ô tô""" print("***Thông tin
ô tô***") find = input("Tìm kiếm theo tên hay
id(name /id): ") if find == "name":
name = input("Nhập tên: ")
a = False for oto in listoto: if
name.lower() in oto["name"].lower():
# Hàm lower chuyển đổi chữ hoa sang chữ thường
print( f"Ô TÔ - id: {oto['id']}, Tên: {oto['name']}, Giá:
{oto['cost']}, Bảo hành: {oto['warranty']}") a = True if not a: 19 lOMoAR cPSD| 46342985
print("Không tìm thấy ô tô") elif find== 'id': maid =str(input('Nhập id: ')) for oto in listoto: if maid == oto['id']:
print( f"Ô TÔ - id: {oto['id']}, Tên: {oto['name']}, Giá:
{oto['cost']}, Bảo hành: {oto['warranty']}") else:
print(" Không tìm thấy ôtô") break
 Kết quả chạy chương trình:
Khi chức năng tìm kiếm thông tin về một loại ô tô trong danh sách các đối tượng ô tô,
chương trình sẽ hiển thị một thông báo để yêu cầu người dùng nhập phương thức tìm
kiếm (theo tên hay ID). Sau đó, nó sử dụng vòng lặp “for” để duyệt qua danh sách các
đối tượng ô tô và in ra thông tin về từng đối tượng ô tô nếu tên hoặc ID của đối tượng
ô tô chứa chuỗi ký tự được nhập vào. Nếu không có đối tượng ô tô nào chứa chuỗi ký
tự được nhập vào, chương trình sẽ in ra thông báo “Không tìm thấy ô tô”. 20