Do đó chúng em đã dựa trên hệ thông đặt vé của Vietravel đê xây dựng lên một chương trình quản lý khách hàng trên ngôn ngữ Python với những chức năng cơ bản: thêm, tìm kiếm, xóa, sửa thô
Trang 1TRƯỜ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
BAI TAP LON HOC PHAN: LAP TRINH VOI PYTHON LOP HOC PHAN:
GVGD: DINH THI HA
Hà Nội, ngày tháng năm 2023
(Ký & ghi rõ họ tên) (Ký & ghi rõ họ tên)
HOC KY 1 NAM HOC 2023 — 2024
Trang 2h1 0 2 |
0900009670000 3
CHƯƠNG I: ĐẶT BÀI TOÁN - 5 5S E3 tr ghe 4
CHƯƠNG 2: PHẦN TÍCH BÀI TOÁN St rtrhtthhhrre 5
2.1 Sơ đồ chức năng hệ thống -. - + 52t S‡ESE+EvExexerkerErrsrrrerererererrreree 5 2.2 Mô tả chỉ tiết chức năng .-. +: 5c SE xxx vekrvrerkrkrererkerrerrrree 5
2.2.3 Thêm thông tỉ khich HÀHg, TT nh khe Hee 8 2.2.4 Xóa thông tì khích HÀHG, Tnhh kh HH kh kh Hà 9 2.2.5 Sửa thông tỉ Khúc] HÀHG, ào son HH khe 10
2.2.6 Xem tổng số khách lùng c5 cccc nghe 12
2.2.7 Xem toàn bộ thông tiH khúch HÀ on nh Tnhh ren 13
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH . - 5 555cc Sececercererrrrrreres 14
3.1 Các khái niệm liên quan: SG - IS nọ vi 14
8/17 nh ẰẮa 3-ddđjg}đ 14
Š.3 MOdHIG DD(ÍGÍ[THC QQQ QQH nnnn K eee eee aa nee eee 14
3.2 Mô tả chỉ tiết các hàm - c5 tt th HH gưệg 15
3.2.1 Ham gioithieu() va huongdan() 0 0ccccccc cece ee ene 15 3.2.2 Het (a0 filE() occ 6 nnn nnn nn nn ni ini iii ia na aaa 15
S24 Fetraa they itt org) oeeecceccccccc cece cece eee eens caee eae aaaaeaaaaaaaaeaaaeaaaeesaeeaeeeeseeeseeeeeneees 17
Trang 33.2.5 HÀ XACHỈHHH()Q QQQQQQ SG S SH nọ HT BE ETh 18 3.2.0 HÀm timmakhh (Mak hy) Q QQQQQQQQQS SH HH Họ Họ ki kh 19 3.2.7 HÀm tHHHÍOfGPH(ÏDO,fCHH) so QQ ST SH BE Er* 19 S0 .1 0n rr rrr nr nn nn nnn nnn nn nn nn niin inn iii ia nana 21 3.2.9 HAIN XOA(C) ceccccccccctt ttt tr rr EE EE EEE EEE EEE EH IE IE i In nnn niin iii 22
3.2 1I HÀHH (ÍGHH()L QQQQQ SG ST nọ TT TT ĐT ĐT 32 3.2.12 Het 18 0n ng cố ố 32
SE .1 janố.ẻốốe 34
3.3 Chạy chương trình - sex Error! Bookmark not defined 3.3.1 Thêm khetch NAng ccccccccccccceececceeeeeeeeeee sete Error! Bookmark not defined 3.3.2 Tìm khách hàng theo mã kh Error! Bookmark not defined 3.3.3 Tìm khách hàng theo họ và tÊH Error! Bookmark not defined 3.3.3 Xóa khách HàHNg ao «khe ke Error! Bookmark not defined 3.3.4 Sửa thông tí khách ào ằằà«eee Error! Bookmark not defined 3.3.5 Dém sé [HH L QQQQQQQS SH kh Error! Bookmark not defined 3.3.6 Hiển thị toàn bộ dữ liệu khách hàng trong file Error! Bookmark not defined
BIÊN BẢN HỌP NHÓM -7ccccccc<ce- Error! Bookmark not defined BIÊN BẢN NGHIỆM THU 5-5-5555 Error! Bookmark not defined
Trang 4LOI MO DAU
Python là một ngôn ngữ lập trình bậc cao, đa năng, dễ đọc, dễ học và dễ nhớ Nó được
sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm: Phát triển web, phát triển phần mềm, khoa học đữ liệu, máy học, tự động hóa, nghiên cứu và một số lĩnh vực khác Python
có một kho thư viện vô cùng lớn và được cập nhập liên tục Chính vì những lợi ích đó
mà Python có một cộng đồng người dùng khá lớn và tích cực
Quản lý khách hàng là một công việc quan trọng đối với mọi doanh nghiệp, đặc biệt là các doanh nghiệp hoạt động trong lĩnh vực du lịch, nhất là trong bối cảnh nhu cầu du lịch ngày càng tăng Công việc này đòi hỏi độ chính xác cao và khối lượng dữ liệu rất lớn Điều mà việc quản lý truyền thống bằng phương pháp thủ công không thê đáp ứng được Chính vì vậy mà việc áp dụng công nghệ thông tin vào quản lý khách hàng là vô cùng hữu ích Công nghệ thông tin giúp doanh nghiệp tự động hóa các tác vụ, tăng cường độ chính xác, cập nhập thông tin đễ dàng, nhanh chóng và tiết kiệm thời gian Công ty Du lịch Vietravel, là một trong những công ty du lịch hàng đầu tại Việt Nam, với số lượng lên tới 600.000 lượt khách hàng trong năm 2015 Do đó chúng em đã dựa trên hệ thông đặt vé của Vietravel đê xây dựng lên một chương trình quản lý khách hàng trên ngôn ngữ Python với những chức năng cơ bản: thêm, tìm kiếm, xóa, sửa thông tin khách hàng
Chúng em xin trân trọng bày tỏ lòng biết ơn đối với giảng viên Đinh Thị Hà —Trường
Đại học Thương Mại đã tận tình hướng dẫn và giúp đỡ chúng em trong suốt quá trình thực hiện bài thảo luận Chương trình còn nhiều hạn chế và thiếu sót, chung em xin tiép
nhận mọi ý kiến, đánh giá từ phía thầy cô đề hoàn thiện chương trình hơn
Xin chân thành cảm ơn!
Trang 5CHUONG I: ĐẶT BÀI TOÁN
Xây dựng chương trình quản lý khách hàng của Vietravel 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ữ, tìm kiếm, xóa và cập nhật thông tin khách hàng trong danh sách khách hàng của Vietravel; bên cạnh đó, có thể xem tong SỐ lượng khách hàng vả hiển thị toàn bộ danh sách sách khách hàng đã lưu ra màn hình Đề 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: Khách hàng đặt vé qua Vietravel
-_ Dữ liệu: Mỗi khách hàng sẽ gồm những thuộc tính sau: mã khách hàng, họ, tên đệm
và tên, ngày sinh, danh xưng, địa chỉ, số di động, e-mail
-_ Chức năng: Hệ thống quản lý khách hàng cần có các chức năng chính như sau: + Lưu trữ thông tin
+ Thêm thông tin khách hàng
+ Tìm thông tin khách hàng
+ Xóa thông tin khách hàng
+ Sửa thông tin khách hàng
+ Xem tông số lượng khách hàng
+ Xem toản bộ danh sách thông tin khách hang
Trang 6CHUONG 2: PHAN TICH BÀI TOÁN
2.1 Sơ đồ chức năng hệ thống
=—* Thêm khách hàng
— Tìm khách hàng
bị Sửa thông tin
Đếm số lượng khách hang
Hién thị toàn bộ danh
Output: File co dong tiêu đề
BI: Kiểm tra ñle có tồn tại hay không?
+ Đúng => Chuyển sang B3
+ Sai => Chuyên sang B2
B2: Tạo file mới
B3: Kiểm tra ñle đã có dòng tiêu đề chưa?
+ Đúng => Chuyển sang B5
+ Sai => Chuyên sang B4
B4: Ghi dòng tiêu đề vào ñle
B5: Quay về menu => Kết thúc
Trang 8ƒ Kiểm tra có`_ / Hiểnthị /
s L eC trong danh sách `, Đ_——z/ thôngtin /
Y N Kết thúc )
Hình 3: Sơ đồ khối chức năng tìm khách hàng Khi người dùng lựa chọn chức năng tìm kiếm thông tin khách hàng, chương trình sẽ yêu cầu người dùng chọn lựa chọn tìm kiếm Chương trình có hai lựa chọn, đó là tìm kiếm theo mã khách và tìm kiếm theo họ và tên Chương trình sẽ chạy tủy vào lựa chọn của khách hàng Nếu không có thông tin khách hàng nào trùng khớp với thông tin tìm kiểm mà người dùng đã nhập, chương trình sẽ thông báo “Không có khách hàng!” và chương trình sẽ tự động quay về menu đề người dùng lựa chọn các chức năng khác Nếu có thông tin khách hàng trùng khớp với thông tin tìm kiếm mà người dùng đã nhập, chương trình sẽ ¡n ra thông tin khách hàng theo đúng thông tin mà người dùng tìm kiếm roi quay vé menu
Trang 92.2.3 Thêm thông tin khách hàng
menu
| Kếtthúc — )
Z ⁄
Hình 4: Sơ đồ khối chức năng thêm khách hàng Khi người dùng lựa chọn chức năng thêm thông tin khách hàng, chương trình sẽ yêu cầu nhập mã khách hàng và thông tin cá nhân của khách hàng Sau khi nhập xong các thông tin, chương trình sẽ tự động lưu thông tin và tự động quay lại menu
Trang 10
Xóa khách hàng
Trang 11dùng Nếu người dùng lựa chọn xóa toàn bộ danh sách, chương trình sẽ xác nhận lai va
tự động xóa hết rồi quay về menu Nếu người dùng lựa chọn xóa nhiều khách hàng, chương trình sẽ yêu cầu người dùng nhập mã khách hàng muốn xóa Trong trường hợp
mã khách hàng không trùng với bất kỳ mã khách hàng nào trong danh sách, chương trình sẽ thông báo “Không có mã khách hàng!” và yêu cầu nhập lại mã khách hàng Trong trường hợp mã khách hàng trùng với mã đã có trong danh sách, chương trình sẽ yêu cầu xác nhận có tiếp tục xóa tiếp, nếu lựa chọn dừng lại thì chương trình sẽ tự động quay về menu và ngược lại chương trình sẽ xóa thông tin khách hàng theo yêu cầu của người dùng rôi quay về menu
2.2.3 Sửa thông tin khách hàng
— Input: Những mã khách hàng, những lựa chọn thông tin muốn sửa, thông tin mới về khách hàng đang sửa và xác nhận hành động
— Output: Thông tin khách hàng sau khi sửa
BI: Nhập những mã khách hàng muốn sửa
B2: Gán I=l
B3: Kiểm tra ¡ có lớn hơn số lượng mã khách hàng đã nhập vào không?
+ Đúng => Chuyên sang B19
+ Sai => Chuyên sang B4
B4: Kiểm tra mã khách hàng thứ ¡ có tồn tại không?
+ Đúng => Chuyển sang B7
+ Sai => Chuyên sang B5
B5: Thông báo mã khách hàng không tồn tại
B6: Nhập lại mã khách hàng thay thế => Trở lại B4
B7: Hiển thị thông tin khách hàng muốn sửa và menu thông tin có thé stra
B8: Nhập lựa chọn những thông tin cần sửa
B9: Gán a=[l
10
Trang 12BI0: Kiểm tra a có lớn hơn số lượng những lựa chọn ở menu sửa đã nhập ở trên không? + Đúng => Chuyên sang B16
+ Sai => Chuyên sang BII
BI1: Kiểm tra lựa chọn đó có ở trong menu sửa không?
+ Dung =>Chuyén sang B14
+ Sai => Chuyén sang B12
B12: Hién thi thông báo lựa chọn không tồn tại
B13: Nhập lại lựa chọn thay thế => Trở về BII
B14: Nhập những thông tin mới dựa theo lựa chọn đang xét
B15: a=atl => Trở lại BLO
B16: Kiém tra lại ý định đồng ý thực hiện hành động không?
+ Đúng => Chuyển sang B17
+ Sai => Chuyên sang BI§
B17: Thực hiện sửa thông tin khách hàng
B18: i=1+1 => Trở lại B3
BI9: Quay về lại menu => Kết thúc
11
Trang 132.2.6 Xem tông số lượng khách hàng
Thông báo số lượng ;
khách hàng ra màn |——> = C me hình
Hình 7: Sơ đồ khối chức năng xem tông số lượng khách hàng
Khi người dùng lựa chọn chức năng xem tông số khách hàng, chương trình sẽ hiện thị
ra tông số khách hàng có trong danh sách
12
Trang 142.2.7 Xem toàn bộ thông tín khách hàng
màn hình
Quay về menu
13
Trang 15CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
3.1 Các khái niệm liên quan
3.1.1 Tép txt
Tép TXT là một tệp văn bản thuần túy chứa văn bản chưa được định dạng Đây là loại tài liệu cơ bản nhất có thê được tạo và được hỗ trợ bởi hầu hết các ứng dụng soạn thảo văn bản và xử lý văn bản Các tệp TXT có thể được sử dụng đề lưu trữ thông tin như ghi chú, mã nguồn, dữ liệu cấu hình hoặc bất ky dữ liệu văn bản thuần túy nào khác 3.1.2 Module Pandas
Thư viện pandas là một thư viện mã nguồn mở trong Python dùng đề xử lý và phân tích đữ liệu Thư viện pandas cung cấp các cấu trúc đữ 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:
- Su dung pip: g6 lénh pip install pandas
- Su dung conda: gõ lénh conda install pandas
- Str dung Anaconda: Anaconda da 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 Datetime
Module datetine trong Python cung cấp các đối tượng và phương thức đề làm việc với ngày giờ với nhiều lớp khác nhau để biểu diễn và thao tác ngày và giờ, cũng như để định dạng và phân tích ngày và giờ theo nhiều định dạng khác nhau:
- Lép date: Dai diện cho một ngày
-_ Lớp time: Đại diện cho một thời gian
- Lép datetime: Dai dién cho một ngày và thời gian
- Lép timedelta: Dai dién cho khoảng thời gian
14
Trang 16print(" Vietravel - Công ty lữ hành hàng đầu Chau A")
print(" Khách hàng - Người tạo nên thương hiệu của doanh nghiệp ")
printf1 1 Tìm thông tin knach hang{:>22}" format('l’))
print("l 2 Thém thong tin knach hang{:>21}".format('l'))
print("| 3 Xóa thông tin khách hang {:>22}" format('|'))
print("| 4 Sửa thông tin khách hàng{:>22}".format(|'))
print("| 5 Xem tổng số khách hàngƒ:>24}".format(|))
prmt("| 6 Xem toàn bộ thông tin khach hang {:>14}".format('|'))
print("| Nhân 0 đề thoát chương trình quản lý khách hàng! {:>I}".format(|))
print(+{:-<12} + {:-^19} +{:->12)+'format(r","" "1 end=wMn)
Trang 17In ra dòng thông báo “Nhân 0 để thoát chương trình quản lý khách hàng!” bằng hàm print()
Sw dung ham format() dé tao khung cho menu
Nếu không phải thì mở lại tệp ở chế độ ghi đè (w) xóa hết dữ liệu trong file cũ và
encoding là utf-8 đề ghi tiếng Việt Sử dụng lệnh write() dé ghi vào file | dong lam tiéu
đề cho các trường đữ liệu cần sử dụng với tham số là L list có tên ttkh: ['Ma’, 'Phân loạt, Danh xưng', 'Họ', "Tên, 'Ngày sinh’, ‘Dia chi’, 'Số đi động', 'E-mail']
3.2.3 Ham kiemtrakh(f,makh)
Hàm kiemtrakh(f,makh) có mục đích chính kiểm tra mã khách hàng có trong file f hay không cùng với đó để trả lại dữ liệu của khách hàng đó hoặc danh sách khách hàng của toàn bộ file f
16
Trang 18
nho theo ky ty ‘\t’ (1 tab) bang split()
Thêm phân tử list đ vào cuối biến dskh bằng phương thức append()
Kiểm tra xem makh có bằng phân tử đầu tiên của list d hay không Nếu đúng thì trả lại
1 list gồm giá trị True và list d
Nếu chạy hết vòng lặp for mà makh không bằng với giá trị đầu tiên trong list đ nào của từng dòng trong file thì trả lại | list gồm giá trị False và list dskh
Trong đó fvà makh là tham số được nhập từ ngoài hàm
Trang 19Sử dụng vòng lặp for dé chạy từng giá trị trong list d
Kiểm tra xem từng giá trị có phải rỗng hay không Nếu giá trị ấy rỗng thì sẽ thay thế giá trị ây bằng “Không có”
Sau khi thay thế hết giá trị rỗng trong list đ bằng lệnh d[d.index()] thì trả lại list đ mới
print("Bạn có chắc chắn muốn thực hiện hành động này?")
print("0 Dung lai")
In ra màn hình câu hỏi xác nhận và lựa chọn
Lựa chọn của người dùng sẽ là I (Tiếp tục) và 0 (Ding lại) được gán vào biến xn Kiểm tra xem người dùng có nhập chính xác giá trị được yêu cầu hay không Nếu không phải
sẽ thông báo “Không có lựa chọn này!” và yêu cầu người dùng nhập lại
Kiểm tra lựa chọn của người dùng là | hay 0 Nếu là l hàm sẽ trả lại giá trị True, không phải sẽ trả lại giá trị False
18
Trang 20
if kiemtrakh(Quanlykhachhang.txt’", makh)[0] == True and
kiemtrakh(danhsachtim.txt, makh)[0] == False:
with open(‘danhsachtim.ixt’" 'a', encoding="'utf-8') as ds:
ds.write(\t'.join(kiemtrakh(‘(Quanlykhachhang.txt', makh)[1]) + '\n') else:
return makh
Kiém tra makh có trong file “Quanlykhachhang.txt” hay không băng việc sử dụng hàm kiemtrakh(f,makh) với f là file “Quanlykhachhang.txt” và tham số makh được nhập từ ngoai hàm Nếu băng True thì makh có tồn tại trong file
“Quanlykhachhang.txt”
Dong thoi kiém tra makh nay citing dA c6 trong file “danhsachtim.txt” hay chua bang việc sử dụng lại hàm kiemtrakh(f,makh) với f la file “danhsachtim.txt” Néu gia tri trả lại bằng False thì mã khách hàng với biển makh chưa có trong le
“danhsachtim.txt” còn nếu giá trị bằng True thì makh đã được tìm trong những makh
đã nhập trước đó
Nếu makh có trong ñle “Quanlykhachhang.txf° và chưa tồn tai trong file
“danhsachtim.txt” thi mo file “danhsachtim.txt” 6 ché d6 ghi nối đuôi (a) và encoding=°utf-8° để ghi tiếng Việt Sau do str dung write() dé viết thông tin của makh
đó vào file “danhsachtim.tx£”
Nếu không phải thì trả lại makh
Trong đó makh được nhập từ ngoài hàm