lOMoARcPSD| 45315597
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
MÃ LỚP HỌC PHẦN: 242_INFO4511_07
NHÓM: 09
TÊN ĐỀ TÀI: Xây dựng chương trình quản lý dịch
vụ của ngân hàng ViettinBank
SBD
Họ và tên
Mã số sinh
viên
Lớp
hành
chính
nộp
Điểm bài tập
Ghi
chú
Chấm
1
2
Nguyễn Phan Anh
24D190095
K60S3
13
Bùi Duy Hiển
24D190105
K60S3
14
Đặng Thân Hoàng
24D190107
K60S3
33
Nguyễn Tuấn Long
24D190118
K60S3
37
Hoàng Gia Minh
24D190129
K60S3
56
Nguyễn Hải Trung
24D190135
K60S3
Hà Nội, ngày 08 tháng 06 năm 2025
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 2024 – 2025
lOMoARcPSD| 45315597
2
LỜI NÓI ĐẦU
Trong kỷ nguyên chuyển đổi số, công nghệ thông tin đã trở thành yếu tố then chốt
giúp các doanh nghiệp ngân hàng nâng cao năng lực quản dịch vụ, tối ưu hóa quy
trình vận hành gia tăng trải nghiệm khách hàng. Thay xử hồ tín dụng hay
giao dịch tài chính theo cách truyền thống mất nhiều thời gian, công nghệ thông tin cho
phép ngân hàng tự động hóa toàn bộ quy trình, từ tiếp nhận thông tin, xử lý dữ liệu đến
phản hồi kết quả trong thời gian thực. Điều này không chỉ giúp giảm thiểu sai sót và chi
phí vận hành còn mang đến sự minh bạch hiệu quả trong dịch vụ. Đồng thời, công
nghệ cũng tạo điều kiện để các ngân hàng thiết lập hệ thống quản tập trung, dễ dàng
giám sát hiệu suất làm việc, bảo mật thông tin khách hàng và đảm bảo tuân thủ các quy
định pháp luật.
Đặc biệt, việc ứng dụng các ngôn ngữ lập trình hiện đại như Python đang tạo ra
bước chuyển mạnh mẽ trong việc phát triển vận hành các dịch vụ ngân hàng số.
Python không chỉ giúp xây dựng các hệ thống backend vững chắc cho mobile banking
hay internet banking, còn hỗ trợ xử lý dữ liệu lớn, phân tích hành vi người dùng
xây dựng hình dự đoán rủi ro i chính. Python giúp các ngân hàng triển khai các
giải pháp AI machine learning trong quản doanh nghiệp, quản tín dụng, phân
tích thị trường, phát hiện những giao dịch bất thường và thậm chí tư vấn đầu tư cá nhân
hóa. Có thể nói, công nghệ thông tin kết hợp với lập trình Python không chỉ giúp doanh
nghiệp ngân hàng quản lý dịch vụ hiệu quả hơn, mà còn mở ra cơ hội đổi mới sáng tạo
phát triển bền vững trong thời đại số. Nắm bắt được tầm quan trọng của công nghệ
lập trình tiên tiến như Python trong việc quản hệ thống dịch vụ ngân hàng, nhóm 9
chúng em đã triển khai đề tài Xây dựng chương trình quản dịch vụ của ngân hàng
ViettinBank” với mong muốn giúp mọi người thể nhìn nhận khách quan quy trình
hoạt động trong nội bộ doanh nghiệp thông qua 3 chương:
Chương 1: Đặt bài toán.
Chương 2: Phân tích bài toán bằng sơ đồ khối.
Chương 3: Cài đặt chương trình.
MỤC LỤC
Trang
lOMoARcPSD| 45315597
3
LỜI NÓI ĐẦU ...................................................................................................... 2
Chương 1. ĐẶT BÀI TOÁN ................................................................................. 4
1.1. Tính cấp thiết của đề tài .............................................................................. 4
1.2. Mục tiêu và phạm vi triển khai đề tài .......................................................... 4
1.3. Phân tích các chức năng, yêu cầu kỹ thuật và dữ liệu .................................. 4
1.4. Ý nghĩa thực tiễn và giới hạn đề tài ............................................................. 5
Chương 2. PHÂN TÍCH BÀI TOÁN BẰNG SƠ ĐỒ KHỐI .............................. 6
2.1. Chương trình chính ..................................................................................... 6
2.2. Chức năng thêm dịch vụ ............................................................................. 7
2.3. Chức năng xóa dịch vụ ............................................................................... 8
2.4. Chức năng cập nhật thông tin dịch vụ ....................................................... 11
2.5. Chức năng tìm kiếm thông tin dịch vụ ...................................................... 12
Chương 3. CÀI ĐẶT CHƯƠNG TRÌNH .......................................................... 13
3.1. Giới thiệu khái quát về ngôn ngữ Python và Visual Studio Code .............. 13
3.2. Xây dựng chương trình trên ứng dụng Visual Studio Code ....................... 14
3.2.1. Kiến trúc hệ thống chương trình ........................................................ 14
3.2.2. Xây dựng các hàm chức năng và các kịch bản kiểm thử ..................... 14
3.1.2.1. Tạo file và hàm lưu dữ liệu .............................................................. 14
3.1.2.2. Tạo chương trình chính .................................................................... 17
3.1.2.3. Tạo chương trình chức năng thêm dịch vụ ....................................... 19
3.1.2.4. Tạo chương trình chức năng xóa dịch vụ ......................................... 21
3.1.2.5. Tạo chương trình chức năng cập nhật thông tin dịch vụ ................... 23
3.1.2.6. Tạo chương trình chức năng thông tin tìm kiếm ............................... 24
3.1.2.7. Tạo chương trình chức năng hiển thị danh sách dịch vụ hiện có....... 26
KẾT LUẬN ......................................................................................................... 27
TÀI LIỆU THAM KHẢO .................................................................................. 28
DANH MỤC BẢNG VÀ HÌNH ẢNH ................................................................ 29
BẢNG PHÂN CHIA CÔNG VIỆC .................................................................... 30
BIÊN BẢN CUỘC HỌP ..................................................................................... 31
BIÊN BẢN NGHIỆM THU ................................................................................ 34
Chương 1 ĐẶT BÀI TOÁN
1.1 Tính cấp thiết của đề tài
lOMoARcPSD| 45315597
4
Trong bối cảnh cạnh tranh gay gắt giữa các ngân hàng và sự phát triển nhanh chóng
của công nghệ thông tin, việc quản dịch vụ một cách thủ công, phân tán không
đồng bộ đang trở thành rào cản lớn đối với hiệu quả hoạt động của nhiều ngân hàng
truyền thống. Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank)
một trong những đơn vdanh mục dịch vụ đa dạng, phục vụ hàng triệu khách hàng
trên toàn quốc. Tuy nhiên, việc quản thông tin dịch vụ còn gặp nhiều bất cập: thông
tin chưa tập trung, khó truy xuất, thiếu cập nhật theo thời gian thực, và tiềm ẩn nguy cơ
sai sót trong quá trình xử nghiệp vụ.... Do đó, việc xây dựng một chương trình quản
dịch vụ là cấp thiết, nhằm công nghệ hóa quy trình nghiệp vụ, nâng cao năng suất làm
việc và cải thiện chất lượng phục vụ khách hàng.
1.2. Mục tiêu và phạm vi triển khai đề tài
Mục tiêu chính của đtài xây dựng một chương trình đơn giản nhưng hiệu quả,
cho phép quản các dịch vụ ngân hàng VietinBank một cách dễ dàng thông qua các
thao tác cơ bản như thêm mới, cập nhật, tìm kiếm và xóa bỏ dịch vụ. Mỗi dịch vụ trong
hệ thống sẽ được định danh bằng các thuộc tính bản như: dịch vụ, tên dịch vụ,
loại dịch vụ, tả mức phí ơng ứng. Hệ thống cần đảm bảo tính trực quan, dễ thao
tác và có khả năng mở rộng trong tương lai nếu triển khai trên quy mô lớn hơn.
Phạm vi chủ thể của đề tài tập trung vào cấp đơn vị nội bộ trong VietinBank, cụ thể
là các phòng ban nghiệp vụ hoặc các chi nhánh, nơi thường xuyên thực hiện cả tiến và
thay đổi các dịch vụ khác hàng. Chương trình hướng đến người quản trị nghiệp vụ dịch
vụ ngân hàng ở cấp đơn vị hoặc sinh viên thực hành tin học quản lý. Đây là phiên bản
mô phỏng, chưa triển khai trong môi trường nghiệp vụ thực tế.
1.3. Phân tích các chức năng, yêu cầu kỹ thuật và dữ liệu
Về các chức năng chính và vai trò cụ thể:
- Thêm dịch vụ: chương trình cho phép người dùng thêm thông tin của dịch
vụ mới và lưu lại vào hệ thống.
- Xóa dịch vụ: chương trình cho phép người dùng xóa thông tin của dịch
vụ.
- Cập nhật dịch vụ: chương trình cho phép người dùng cập nhật thông tin
của dịch vụ dựa trên mã dịch vụ và lưu lại vào hệ thống.
lOMoARcPSD| 45315597
5
- Tìm kiếm dịch vụ: chương trình cho phép người dùng tìm kiếm dịch vụ
dựa trên mã dịch vụ hoặc tên dịch vụ, trả về thông tin của dịch vụ.
Về yêu cầu kỹ thuật:
- Sử dụng ngôn ngữ Python để xây dựng chương trình.
- Sử dụng cấu trúc dữ liệu phù hợp để lưu trữ thông tin về dịch vụ, hàm và
lớp để tổ chức chương trình một cách logic và dễ bảo trì, sửa đổi.
- Giao diện dòng lệnh đơn giản, chưa yêu cầu giao diện đồ họa.
- Bảo đảm kiểm tra lỗi và xử lý các trường hợp ngoại lệ.
Các thông tin cần quản lý của một dịch vụ:
Tên thuộc
tính
Kí hiệu
Kiểu
dữ liệu
Mô tả
Ràng buộc
Mã dịch vụ
ma_dv
Chuỗi (String)
Mã định danh của dịch vụ
Duy nhất, không rỗng
Tên dịch vụ
ten_dv
Chuỗi (String)
Tên gọi của dịch vụ
Không rỗng
Loại dịch vụ
loai_dv
Chuỗi (String)
Loại của dịch vụ
Không
Mô tả
mo_ta
Chuỗi (String)
tả ngắn gọn về chức
năng dịch vụ
Không
Phí dịch vụ
phi_dv
Số thực (Float)
Mức tính phí cho dịch vụ
(đơn vị VNĐ)
Là số, >= 0
Bảng 2.1: Các thông tin cần quản lý.
1.4. Ý nghĩa thực tiễn và giới hạn đề tài
Đề tài tuy mang tính chất mô phỏng ở mức cơ bản nhưng thể hiện được đầy đủ các
thao tác thường gặp trong nghiệp vụ quản thông tin dịch vụ của ngân hàng. Từ đây,
chương trình hoàn toàn có thể được mở rộng tích hợp vào hệ thống lớn, sử dụng giao
diện đồ họa hoặc kết nối sở dữ liệu thực tế. Trong xu thế chuyển đổi số, những ứng
dụng nhỏ như thế này đóng vai trò tiền đề để phát triển các hệ thống thông minh hơn,
góp phần nâng cao chất lượng dịch vụ và năng lực vận hành của ngân hàng.
Chương 2 PHÂN TÍCH BÀI TOÁN BẰNG SƠ ĐỒ KHỐI
2.1. Chương trình chính
lOMoARcPSD| 45315597
6
Hình 2.1: Sơ đồ khối chương trình chính.
Mô tả sơ đồ khối: khi chương trình bắt đầu sẽ hiển hiển thị menu với các lựa chọn
(0, 1, 2, 3, 4, 5). Nếu lựa chọn của người dùng 0 thì sẽ thoát chương trình. Nếu lựa
chọn của người dùng 1 thì sẽ chuyển tới chức năng nhập thông tin dịch vụ. Nếu lựa
chọn của người dùng 2 thì sẽ chuyển tới chức năng xóa dịch vụ. Nếu lựa chọn của
người dùng 3 thì sẽ chuyển tới chức năng cập nhật thông tin dịch vụ. Nếu lựa chọn
lOMoARcPSD| 45315597
7
của người dùng 4 thì sẽ chuyển tới chức năng tìm kiếm thông tin dịch vụ. Nếu lựa
chọn của người dùng 5 thì sẽ chuyển tới chức năng hiển thị danh sách dịch vụ hiện
có. Nếu lựa chọn của người dùng khác với những lựa chọn trên thì sẽ in “Lựa chọn
không hợp lệ” để người dùng chọn lại. Sau khi thực hiện các chức năng thì chương
trình sẽ kết thúc.
2.2. Chức năng thêm dịch vụ
Mô tả sơ đồ khối:
Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu có rồi thì sang bước 4.
- Nếu chưa có thì sang bước 5.
Bước 4: in “Mã dịch vụ đã tồn tại” rồi sang bước 10.
Bước 5: nhập tên dịch vụ, loại dịch vụ, mô tả, phí dịch vụ.
Bước 6: kiểm tra thỏa mãn các ràng buộc về dữ liệu chưa.
- Nếu không thì sang bước 7.
- Nếu có thì sang bước 8.
Bước 7: in các ràng buộc tương ứng rồi sang bước 10 Bước
8: thêm dịch vụ mới nhập vào danh sách dịch vụ.
Bước 9: in danh sách dịch vụ hiện tại.
Bước 10: kết thúc.
lOMoARcPSD| 45315597
8
Hình 2.2: Sơ đồ khối chức năng thêm dịch vụ.
2.3. Chức năng xóa dịch vụ
lOMoARcPSD| 45315597
9
Hình 2.3: Sơ đồ khối chức năng xóa dịch vụ.
Mô tả sơ đồ khối:
Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
lOMoARcPSD| 45315597
10
- Nếu chưa có thì sang bước 4.
- Nếu có thì sang bước 5.
Bước 4: in “Thông tin dịch vụ không có trên hệ thống” rồi sang bước 10.
Bước 5: in thông tin dịch vụ.
Bước 6: xác nhận xóa thông tin dịch vụ (Yes/No).
- Nếu Yes thì sang bước 8.
- Nếu No hoặc các ký tự các thì sang bước 7.
Bước 7: in “Hủy thao tác” rồi sang bước 10.
Bước 8: xóa thông tin dịch vụ trong danh sách dịch vụ.
Bước 9: in thông tin các dịch vụ còn lại.
Bước 10: kết thúc.
2.4. Chức năng cập nhật thông tin dịch vụ
Hình 2.4: Sơ đồ khối chức năng cập nhật thông tin dịch vụ.
Mô tả sơ đồ khối:
Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu chưa có thì sang bước 4.
lOMoARcPSD| 45315597
11
- Nếu có thì sang bước 5.
Bước 4: in “mã dịch vụ không có trên hệ thống” rồi sang bước 7.
Bước 5: nhập thông tin mới (bỏ trống nếu không đổi).
Bước 6: in danh sách dịch vụ hiện tại.
Bước 7: kết thúc.
2.5. Chức năng tìm kiếm thông tin dịch vụ
Hình 2.5: Sơ đồ khối chương trình tìm kiếm thông tin dịch vụ.
Mô tả sơ đồ khối:
Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu có rồi thì sang bước 4.
- Nếu chưa có thì sang bước 5.
Bước 4: in thông tin dịch vụ rồi sang bước 6.
Bước 5: in “Mã dịch vụ không có trên hệ thống” rồi sang bước 6.
lOMoARcPSD| 45315597
12
Bước 6: kết thúc.
Chương 3 CÀI ĐẶT CHƯƠNG TRÌNH
3.1. Giới thiệu khái quát về ngôn ngữ Python và Visual Studio Code
Python ngôn ngữ lập trình hiện đại, dễ học, pháp ngắn gọn nhưng mạnh mẽ,
được ứng dụng rộng rãi trong trí tuệ nhân tạo, phân tích dữ liệu, web tự động hóa.
Với triết "rõ ràng hơn phức tạp", Python lựa chọn tưởng cho cả người mới bắt
đầu lẫn lập trình viên chuyên nghiệp. Visual Studio Code trình soạn thảo nguồn
miễn phí, nhẹ linh hoạt, do Microsoft phát triển, công cụ tưởng để viết, chạy
quản dự án Python một cách hiệu quả. Việc sử dụng Visual Studio Code trong quá
trình cài đặt chương trình quản lý dịch vụ tại VietinBank mang lại nhiều lợi ích rõ rệt:
Thứ nhất, Visual Studio Code giao diện trực quan, môi trường lập trình thân
thiện, dễ sử dụng, htrợ màu pháp tự động hoàn thành mã, giúp việc viết
chương trình nhanh hơn và ít lỗi hơn.
Thứ hai, với việc tích hợp trình gỡ lỗi trong quá trình cài đặt kiểm thử các chức
năng như thêm, sửa, xóa, tìm kiếm dịch vụ, Visual Studio Code cho phép lập trình viên
dễ dàng kiểm tra sửa lỗi theo từng bước. Ngoài ra, khả năng đặt breakpoint (điểm
dừng) và theo dõi giá trị biến theo thời gian thực giúp sinh viên rèn luyện kỹ năng phân
tích logic chương trình một cách bài bản và khoa học.
Thứ ba, việc tích hợp Git Terminal giúp theo dõi phiên bản nguồn chạy
chương trình Python trực tiếp trong Visual Studio Code giúp tiết kiệm thời gian, tăng
hiệu quả lập trình và đảm bảo sự đồng bộ trong quá trình phát triển phần mềm.
Thứ tư, Visual Studio Code còn khả năng đồng bộ hóa cài đặt giữa các thiết bị
thông qua tài khoản Microsoft hoặc GitHub. Điều này cực kỳ hữu ích trong môi trường
học tập linh hoạt hiện nay, khi sinh viên thể làm việc tại phòng máy, tại nhà, hoặc
thậm chí trên máy tính cá nhân của bạn bè không mất thời gian thiết lập lại toàn bộ
môi trường làm việc.
Tóm lại, việc kết hợp Python – ngôn ngữ lập trình phổ biến, và Visual Studio Code
môi trường phát triển hiện đại, đã tạo điều kiện thuận lợi để nhóm sinh viên thể
triển khai một dự án quản dịch vụ ngân hàng một cách khoa học, ràng sát với
thực tế công việc sau này.
lOMoARcPSD| 45315597
13
3.2. Xây dựng chương trình trên ứng dụng Visual Studio Code
3.2.1. Kiến trúc hệ thống chương trình
Nhóm đã tiến hành xây dựng dự án QUANLYDICHVU trên Visual Studo Code
chứa các module để dễ dàng quản lý, mở rộng và bảo trì như sau:
Tên module
Vai trò chính
main.py
Hiển thị menu, nhận lựa chọn người dùng, điều hướng đến các chức
năng tương ứng.
dulieu.py
Quản file dữ liệu (dulieu.txt) bao gồm: đọc file vào danh sách
tai_du_lieu(), và ghi danh sách ngược vào file (uu_du_lieu().
themdv.py
Thêm dịch vụ mới.
xoadv.py
Xóa dịch vụ theo mã.
capnhatdv.py
Cập nhật thông tin dịch vụ.
timkiemdv.py
Tìm kiếm theo mã dịch vụ.
hienthidv.py
Hiển thị danh sách dịch vụ.
Bảng 3.1: Các module chính và vai trò.
3.2.2. Xây dựng các hàm chức năng và các kịch bản kiểm thử
chương trìnhTrong chương trình quản dịch vụ, dữ liệu về các dịch vụ như ,
tên, loại, mô tả và phí dịch vụ cần được lưu trữ và cập nhật thường xuyên. Để thực hiện
điều này, nhóm đã xây dựng cơ chế lưu trữ dưới dạng file văn bản dulieu.txt và viết các
hàm xử đọc, ghi dữ liệu trong module dulieu.py trong đó cấu trúc dữ liệu file dulieu.txt
mỗi dòng tương ứng với một dịch vụ, các thuộc tính được phân tách với nhau bởi dấu |
theo thứ tự: ma_dv| ten_dv| loai_dv| mo_ta| phi_dv. Hàm tai_du_lieu() đóng vai t kiểm
tra sự tồn tại của file dulieu.txt, đọc từng dòng trong file, phân tách thành các trường và
định dạng, lưu vào danh sách các dịch vụ dưới dạng dictionary.
Quy trình thực hiện:
Biến FILE_PATH được sử dụng để xác định chính xác đường dẫn tới file dulieu.txt.
Việc sử dụng os.path.join() kết hợp với os.path.dirname(__file__) giúp chương trình có
thể hoạt động ổn định trên nhiều hệ điều hành khác nhau và tránh lỗi đường dẫn tương
đối. Đây là cách làm an toàn và hiệu quả trong các chương trình có thao tác với file.
lOMoARcPSD| 45315597
14
Hàm tai_du_lieu() nhiệm vụ đọc dữ liệu từ file vào chương trình. Cụ thể, quá
trình thực hiện gồm các bước sau:
- Kiểm tra sự tồn tại của file: Nếu file dulieu.txt chưa tồn tại, chương trình sẽ tự
động tạo một file rỗng để tránh lỗi khi đọc.
- Mở đọc dữ liệu: file được mở chế độ đọc với hóa UTF-8 hỗ trợ tiếng
Việt. - Tách xử từng dòng: mỗi ng dữ liệu được tách thành 5 trường: dịch
vụ, tên, loại, mô tả và phí. Nếu đủ 5 trường, dữ liệu sẽ được đưa vào một dictionary.
- Kiểm tra định dạng: trường phí dịch vụ được ép kiểu sang int. Nếu ép kiểu thất
bại (ví dụ nhập sai định dạng), dòng đó sẽ bị loại bỏ khỏi danh sách và in ra cảnh báo.
- Trả về danh sách: toàn bộ dịch vụ hợp lệ được lưu vào một danh sách trả về
để sử dụng trong chương trình.
Hàm luu_du_lieu(ds) thực hiện nhiệm vụ ghi danh sách dịch vụ từ bộ nhớ vào lại
file dulieu.txt. Các bước thực hiện như sau:
- Mở file chế độ ghi đè: tức toàn bộ nội dung sẽ bị thay thế bằng dữ liệu
mới. - Duyệt danh sách dịch vụ: mỗi dịch vụ được định dạng lại theo đúng cấu trúc ban
đầu (các trường cách nhau bởi dấu “|”).
- Ghi từng dòng vào file: Dữ liệu được ghi tuần tự từng dòng tương ứng với từng
dịch vụ.
Việc ghi đè toàn bộ file giúp đảm bảo dữ liệu luôn nhất quán, tuy nhiên, cũng có thể
cân nhắc thêm cơ chế sao lưu phòng lỗi khi phát triển hệ thống lớn hơn.
Ngay khi chương trình bắt đầu chạy, lệnh danh_sach_dich_vu = tai_du_lieu() sẽ
được thực hiện nhằm nạp dữ liệu dịch vụ vào bộ nhớ. Biến toàn cục này đóng vai trò
trung m, được dùng trong hầu hết các chức năng như thêm, sửa, xóa, tìm kiếm hoặc
hiển thị dịch vụ.
Nhìn chung, đoạn trong dulieu.py được viết ràng, dễ hiểu thực hiện đầy
đủ các thao tác cơ bản với file văn bản. Mặc dù chương trình sử dụng phương thức lưu
trữ thủ công qua file .txt, nhưng với quy ứng dụng phỏng cấp độ sinh viên,
cách tiếp cận này hợp lý dễ triển khai. Đặc biệt, đoạn thể hiện được một số yếu
tố lập trình tốt như: Tự động kiểm tra tạo file nếu chưa tồn tại, xử lỗi định dạng
đầu vào. tổ chức dữ liệu dưới dạng danh sách các từ điển, thuận tiện cho việc truy xuất.
lOMoARcPSD| 45315597
15
có thể dễ dàng mở rộng lên sở dữ liệu thực như SQLite, MySQL trong tương lai. Với
vai trò là module xử lý dữ liệu, đoạn mã này giúp hệ thống hoạt động trơn tru, tránh lỗi
khi đọc ghi file và duy trì tính liên tục của dữ liệu trong suốt quá trình sử dụng chương
trình rõ ràng, kiểm tra lỗi và xử lý đầy đủ giúp chương trình chạy ổn định và dễ bảo
trì.
Hình 3.1: Toàn bộ nội dung file dulieu.py.
3.2.2.2. Tạo chương trình chính: Input
(từ bàn phím): số từ 0 đến 5.
Input (từ chương trình): danh_sach_dich_vu trong dulieu, them_dich_vu trong
themdv, xoa_dich_vu từ xoadv, cap_nhat_dich_vu trong capnhatdv, tim_kiem_dich_vu
trong timkiemdv, hien_thi_dich_vu trong hienthidv.
Output: hiển thị menu tương ứng với số người dùng chọn tương ứng 1 là thêm
thông tin dịch vụ mới, 2 là xóa thông tin dịch vụ, 3 là cập nhật thông tin dịch vụ, 4 là
tìm kiếm thông tin dịch vụ, 5 là hiển thị danh sách dịch vụ hiện có, 0 là thoát chương
lOMoARcPSD| 45315597
16
trình và in “Chương trình kết thúc”. Nếu người dùng chọn các số hoặc ký tự khác thì in
“Lựa chọn không hợp lệ. Vui lòng chọn từ 0 đến 5.” và để người dùng chọn lại.
Hình 3.2: Toàn bộ nội dung file main.py
lOMoARcPSD| 45315597
17
- Bước 1: gọi hàm chuong_trinh_chinh() từ khối if __name__ == "__main__" để
bắt đầu chạy chương trình.
- Bước 2: hàm hien_thi_menu() in ra danh sách các chức năng cho người dùng.
- Bước 3: sử dụng lệnh input() để nhập một chuỗi lựa chọn từ người dùng (giá trị
từ "0" đến "5"), loại bỏ khoảng trắng bằng .strip() để tránh lỗi nhập thừa dấu cách.
Vòng lặp tiếp tục chạy cho đến khi người dùng chọn "0" để kết thúc chương trình.
Kịch bản khi kiểm thử:
Tờng hợp 1: nhập lựa chọn 5. Hiển thị danh sách dịch vụ hiện có.
Hình 3.3. Kết quả khi nhập lựa chọn 5.
Tơng hợp 2: nhập lựa chọn khác từ 0 đến 5:
Hình 3.4. Kết quả khi nhập lựa chọn khác từ 0 đến 5.
3.2.2.3. Tạo chương trình chức năng thêm dịch vụ
Input (từ bàn phím): ma_dv, ten_dv, loai_dv, mo_ta, phi_dv.
Input (từ chương trình): danh_sach_dich_vu và luu_du_lieu trong dulieu.
lOMoARcPSD| 45315597
Quy trình thực hiện:
18
Output: danh sách dịch vụ hiện tại hoặc báo lỗi.
Hình 3.5: Toàn bộ nội dung file themdv.py.
Bước 1: nhập ma_dv.
Bước 2: kiểm tra các ràng buộc ma_dv.
- Nếu ma_dv đã tồn tại hoặc rỗng thì sang bước 9.
lOMoARcPSD| 45315597
19
- Nếu ma_dv thỏa mãn các ràng buộc thì sang bước 3.
Bước 3: nhập ten_dv
Bước 4: kiểm tra các ràng buộc ten_dv.
- Nếu ten_dv rỗng thì sang bước 9.
- Nếu ten_dv thỏa mãn các ràng buộc thì sang bước 5.
Bước 5: nhập loai_dv, mo_ta, phi_dv.
Bước 6: kiểm tra ràng buộc phi_dv.
- Nếu phi_dv nhỏ hơn 0 hoặc không phải là số thì sang bước 9.
- Nếu phi_dv thỏa mãn các ràng buộc thì sang bước 7.
Bước 7: lưu dịch vụ vào danh sách rồi lưu vào file dulieu.txt.
Bước 8: in thông báo “Đã thêm dịch vụ thành công!” và thông tin các dịch vụ hiện
tại và kết thúc.
Bước 9: in thông báo không thỏa mãn ràng buộc tương ứng và kết thúc.
Kịch bản khi kiểm thử:
Tờng hợp 1: thêm dịch vụ thành công.
Hình 3.6. Kết quả khi thêm dịch vụ thành công.
Tờng hợp 2: thêm dịch vụ không thành công do không thỏa mãn ràng buộc.
Hình 3.7. Kết quả khi thêm dịch vụ không thành công.
lOMoARcPSD| 45315597
Quy trình thực hiện:
20
3.2.2.4. Tạo chương trình chức năng xóa dịch vụ
Input (từ bàn phím): ma_dv, y hoặc n hoặc ký tự khác.
Input (từ chương trình): danh_sach_dich_vu luu_du_lieu trong dulieu. Output:
danh sách dịch vụ hiện tại hoặc báo lỗi.
Hình 3.8. Toàn bộ nội dung file xoadv.py.
Bước 1: nhập ma_dv.
Bước 2: kiểm tra ma_dv tồn tại hay không. Nếu thì sang bước 3, nếu không
thì sang bước 8.
Bước 3: In thông tin dịch vụ và “Bạn có chắc chắn muốn xóa dịch vụ này? (y/n)”.
Bước 4: nhập y hoặc n hoặc các ký tự khác.

Preview text:

lOMoAR cPSD| 45315597
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
MÃ LỚP HỌC PHẦN: 242_INFO4511_07 NHÓM: 09
TÊN ĐỀ TÀI: Xây dựng chương trình quản lý dịch
vụ của ngân hàng ViettinBank SBD Họ và tên Mã số sinh Lớp
Ký Điểm bài tập Điểm Ghi viên hành nộp Chấm kết chú Chấm chính 1 2 luận 2 Nguyễn Phan Anh 24D190095 K60S3 13 Bùi Duy Hiển 24D190105 K60S3 14 Đặng Thân Hoàng 24D190107 K60S3
33 Nguyễn Tuấn Long 24D190118 K60S3 37 Hoàng Gia Minh 24D190129 K60S3 56 Nguyễn Hải Trung 24D190135 K60S3
Hà Nội, ngày 08 tháng 06 năm 2025
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 2024 – 2025 lOMoAR cPSD| 45315597 LỜI NÓI ĐẦU
Trong kỷ nguyên chuyển đổi số, công nghệ thông tin đã trở thành yếu tố then chốt
giúp các doanh nghiệp ngân hàng nâng cao năng lực quản lý dịch vụ, tối ưu hóa quy
trình vận hành và gia tăng trải nghiệm khách hàng. Thay vì xử lý hồ sơ tín dụng hay
giao dịch tài chính theo cách truyền thống mất nhiều thời gian, công nghệ thông tin cho
phép ngân hàng tự động hóa toàn bộ quy trình, từ tiếp nhận thông tin, xử lý dữ liệu đến
phản hồi kết quả trong thời gian thực. Điều này không chỉ giúp giảm thiểu sai sót và chi
phí vận hành mà còn mang đến sự minh bạch và hiệu quả trong dịch vụ. Đồng thời, công
nghệ cũng tạo điều kiện để các ngân hàng thiết lập hệ thống quản lý tập trung, dễ dàng
giám sát hiệu suất làm việc, bảo mật thông tin khách hàng và đảm bảo tuân thủ các quy định pháp luật.
Đặc biệt, việc ứng dụng các ngôn ngữ lập trình hiện đại như Python đang tạo ra
bước chuyển mạnh mẽ trong việc phát triển và vận hành các dịch vụ ngân hàng số.
Python không chỉ giúp xây dựng các hệ thống backend vững chắc cho mobile banking
hay internet banking, mà còn hỗ trợ xử lý dữ liệu lớn, phân tích hành vi người dùng và
xây dựng mô hình dự đoán rủi ro tài chính. Python giúp các ngân hàng triển khai các
giải pháp AI và machine learning trong quản lý doanh nghiệp, quản lý tín dụng, phân
tích thị trường, phát hiện những giao dịch bất thường và thậm chí tư vấn đầu tư cá nhân
hóa. Có thể nói, công nghệ thông tin kết hợp với lập trình Python không chỉ giúp doanh
nghiệp ngân hàng quản lý dịch vụ hiệu quả hơn, mà còn mở ra cơ hội đổi mới sáng tạo
và phát triển bền vững trong thời đại số. Nắm bắt được tầm quan trọng của công nghệ
lập trình tiên tiến như Python trong việc quản lý hệ thống dịch vụ ngân hàng, nhóm 9
chúng em đã triển khai đề tài “Xây dựng chương trình quản lý dịch vụ của ngân hàng
ViettinBank” với mong muốn giúp mọi người có thể nhìn nhận khách quan quy trình
hoạt động trong nội bộ doanh nghiệp thông qua 3 chương:
Chương 1: Đặt bài toán.
Chương 2: Phân tích bài toán bằng sơ đồ khối.
Chương 3: Cài đặt chương trình. MỤC LỤC Trang 2 lOMoAR cPSD| 45315597
LỜI NÓI ĐẦU ...................................................................................................... 2
Chương 1. ĐẶT BÀI TOÁN ................................................................................. 4
1.1. Tính cấp thiết của đề tài .............................................................................. 4
1.2. Mục tiêu và phạm vi triển khai đề tài .......................................................... 4
1.3. Phân tích các chức năng, yêu cầu kỹ thuật và dữ liệu .................................. 4
1.4. Ý nghĩa thực tiễn và giới hạn đề tài ............................................................. 5
Chương 2. PHÂN TÍCH BÀI TOÁN BẰNG SƠ ĐỒ KHỐI .............................. 6
2.1. Chương trình chính ..................................................................................... 6
2.2. Chức năng thêm dịch vụ ............................................................................. 7
2.3. Chức năng xóa dịch vụ ............................................................................... 8
2.4. Chức năng cập nhật thông tin dịch vụ ....................................................... 11
2.5. Chức năng tìm kiếm thông tin dịch vụ ...................................................... 12
Chương 3. CÀI ĐẶT CHƯƠNG TRÌNH .......................................................... 13
3.1. Giới thiệu khái quát về ngôn ngữ Python và Visual Studio Code .............. 13
3.2. Xây dựng chương trình trên ứng dụng Visual Studio Code ....................... 14
3.2.1. Kiến trúc hệ thống chương trình ........................................................ 14
3.2.2. Xây dựng các hàm chức năng và các kịch bản kiểm thử ..................... 14
3.1.2.1. Tạo file và hàm lưu dữ liệu .............................................................. 14
3.1.2.2. Tạo chương trình chính .................................................................... 17
3.1.2.3. Tạo chương trình chức năng thêm dịch vụ ....................................... 19
3.1.2.4. Tạo chương trình chức năng xóa dịch vụ ......................................... 21
3.1.2.5. Tạo chương trình chức năng cập nhật thông tin dịch vụ ................... 23
3.1.2.6. Tạo chương trình chức năng thông tin tìm kiếm ............................... 24
3.1.2.7. Tạo chương trình chức năng hiển thị danh sách dịch vụ hiện có....... 26
KẾT LUẬN ......................................................................................................... 27
TÀI LIỆU THAM KHẢO .................................................................................. 28
DANH MỤC BẢNG VÀ HÌNH ẢNH ................................................................ 29
BẢNG PHÂN CHIA CÔNG VIỆC .................................................................... 30
BIÊN BẢN CUỘC HỌP ..................................................................................... 31
BIÊN BẢN NGHIỆM THU ................................................................................ 34
Chương 1 ĐẶT BÀI TOÁN
1.1 Tính cấp thiết của đề tài 3 lOMoAR cPSD| 45315597
Trong bối cảnh cạnh tranh gay gắt giữa các ngân hàng và sự phát triển nhanh chóng
của công nghệ thông tin, việc quản lý dịch vụ một cách thủ công, phân tán và không
đồng bộ đang trở thành rào cản lớn đối với hiệu quả hoạt động của nhiều ngân hàng
truyền thống. Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank) là
một trong những đơn vị có danh mục dịch vụ đa dạng, phục vụ hàng triệu khách hàng
trên toàn quốc. Tuy nhiên, việc quản lý thông tin dịch vụ còn gặp nhiều bất cập: thông
tin chưa tập trung, khó truy xuất, thiếu cập nhật theo thời gian thực, và tiềm ẩn nguy cơ
sai sót trong quá trình xử lý nghiệp vụ.... Do đó, việc xây dựng một chương trình quản
lý dịch vụ là cấp thiết, nhằm công nghệ hóa quy trình nghiệp vụ, nâng cao năng suất làm
việc và cải thiện chất lượng phục vụ khách hàng.
1.2. Mục tiêu và phạm vi triển khai đề tài
Mục tiêu chính của đề tài là xây dựng một chương trình đơn giản nhưng hiệu quả,
cho phép quản lý các dịch vụ ngân hàng VietinBank một cách dễ dàng thông qua các
thao tác cơ bản như thêm mới, cập nhật, tìm kiếm và xóa bỏ dịch vụ. Mỗi dịch vụ trong
hệ thống sẽ được định danh bằng các thuộc tính cơ bản như: mã dịch vụ, tên dịch vụ,
loại dịch vụ, mô tả và mức phí tương ứng. Hệ thống cần đảm bảo tính trực quan, dễ thao
tác và có khả năng mở rộng trong tương lai nếu triển khai trên quy mô lớn hơn.
Phạm vi chủ thể của đề tài tập trung vào cấp đơn vị nội bộ trong VietinBank, cụ thể
là các phòng ban nghiệp vụ hoặc các chi nhánh, nơi thường xuyên thực hiện cả tiến và
thay đổi các dịch vụ khác hàng. Chương trình hướng đến người quản trị nghiệp vụ dịch
vụ ngân hàng ở cấp đơn vị hoặc sinh viên thực hành tin học quản lý. Đây là phiên bản
mô phỏng, chưa triển khai trong môi trường nghiệp vụ thực tế.
1.3. Phân tích các chức năng, yêu cầu kỹ thuật và dữ liệu
Về các chức năng chính và vai trò cụ thể: -
Thêm dịch vụ: chương trình cho phép người dùng thêm thông tin của dịch
vụ mới và lưu lại vào hệ thống. -
Xóa dịch vụ: chương trình cho phép người dùng xóa thông tin của dịch vụ. -
Cập nhật dịch vụ: chương trình cho phép người dùng cập nhật thông tin
của dịch vụ dựa trên mã dịch vụ và lưu lại vào hệ thống. 4 lOMoAR cPSD| 45315597 -
Tìm kiếm dịch vụ: chương trình cho phép người dùng tìm kiếm dịch vụ
dựa trên mã dịch vụ hoặc tên dịch vụ, trả về thông tin của dịch vụ. Về yêu cầu kỹ thuật: -
Sử dụng ngôn ngữ Python để xây dựng chương trình. -
Sử dụng cấu trúc dữ liệu phù hợp để lưu trữ thông tin về dịch vụ, hàm và
lớp để tổ chức chương trình một cách logic và dễ bảo trì, sửa đổi. -
Giao diện dòng lệnh đơn giản, chưa yêu cầu giao diện đồ họa. -
Bảo đảm kiểm tra lỗi và xử lý các trường hợp ngoại lệ.
Các thông tin cần quản lý của một dịch vụ: Tên thuộc Kí hiệu Kiểu Mô tả Ràng buộc tính dữ liệu Mã dịch vụ
ma_dv Chuỗi (String) Mã định danh của dịch vụ Duy nhất, không rỗng Tên dịch vụ
ten_dv Chuỗi (String) Tên gọi của dịch vụ Không rỗng
Loại dịch vụ loai_dv Chuỗi (String) Loại của dịch vụ Không Mô tả
mo_ta Chuỗi (String) Mô tả ngắn gọn về chức Không năng dịch vụ Phí dịch vụ
phi_dv Số thực (Float) Mức tính phí cho dịch vụ Là số, >= 0 (đơn vị VNĐ)
Bảng 2.1: Các thông tin cần quản lý.
1.4. Ý nghĩa thực tiễn và giới hạn đề tài
Đề tài tuy mang tính chất mô phỏng ở mức cơ bản nhưng thể hiện được đầy đủ các
thao tác thường gặp trong nghiệp vụ quản lý thông tin dịch vụ của ngân hàng. Từ đây,
chương trình hoàn toàn có thể được mở rộng và tích hợp vào hệ thống lớn, sử dụng giao
diện đồ họa hoặc kết nối cơ sở dữ liệu thực tế. Trong xu thế chuyển đổi số, những ứng
dụng nhỏ như thế này đóng vai trò tiền đề để phát triển các hệ thống thông minh hơn,
góp phần nâng cao chất lượng dịch vụ và năng lực vận hành của ngân hàng.
Chương 2 PHÂN TÍCH BÀI TOÁN BẰNG SƠ ĐỒ KHỐI
2.1. Chương trình chính 5 lOMoAR cPSD| 45315597
Hình 2.1: Sơ đồ khối chương trình chính.
Mô tả sơ đồ khối: khi chương trình bắt đầu sẽ hiển hiển thị menu với các lựa chọn
(0, 1, 2, 3, 4, 5). Nếu lựa chọn của người dùng là 0 thì sẽ thoát chương trình. Nếu lựa
chọn của người dùng là 1 thì sẽ chuyển tới chức năng nhập thông tin dịch vụ. Nếu lựa
chọn của người dùng là 2 thì sẽ chuyển tới chức năng xóa dịch vụ. Nếu lựa chọn của
người dùng là 3 thì sẽ chuyển tới chức năng cập nhật thông tin dịch vụ. Nếu lựa chọn 6 lOMoAR cPSD| 45315597
của người dùng là 4 thì sẽ chuyển tới chức năng tìm kiếm thông tin dịch vụ. Nếu lựa
chọn của người dùng là 5 thì sẽ chuyển tới chức năng hiển thị danh sách dịch vụ hiện
có. Nếu lựa chọn của người dùng khác với những lựa chọn trên thì sẽ in “Lựa chọn
không hợp lệ” và để người dùng chọn lại. Sau khi thực hiện các chức năng thì chương trình sẽ kết thúc.
2.2. Chức năng thêm dịch vụ Mô tả sơ đồ khối: Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu có rồi thì sang bước 4.
- Nếu chưa có thì sang bước 5.
Bước 4: in “Mã dịch vụ đã tồn tại” rồi sang bước 10.
Bước 5: nhập tên dịch vụ, loại dịch vụ, mô tả, phí dịch vụ.
Bước 6: kiểm tra thỏa mãn các ràng buộc về dữ liệu chưa.
- Nếu không thì sang bước 7.
- Nếu có thì sang bước 8.
Bước 7: in các ràng buộc tương ứng rồi sang bước 10 Bước
8: thêm dịch vụ mới nhập vào danh sách dịch vụ.
Bước 9: in danh sách dịch vụ hiện tại. Bước 10: kết thúc. 7 lOMoAR cPSD| 45315597
Hình 2.2: Sơ đồ khối chức năng thêm dịch vụ.
2.3. Chức năng xóa dịch vụ 8 lOMoAR cPSD| 45315597
Hình 2.3: Sơ đồ khối chức năng xóa dịch vụ. Mô tả sơ đồ khối: Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa. 9 lOMoAR cPSD| 45315597
- Nếu chưa có thì sang bước 4.
- Nếu có thì sang bước 5.
Bước 4: in “Thông tin dịch vụ không có trên hệ thống” rồi sang bước 10.
Bước 5: in thông tin dịch vụ.
Bước 6: xác nhận xóa thông tin dịch vụ (Yes/No).
- Nếu Yes thì sang bước 8.
- Nếu No hoặc các ký tự các thì sang bước 7.
Bước 7: in “Hủy thao tác” rồi sang bước 10.
Bước 8: xóa thông tin dịch vụ trong danh sách dịch vụ.
Bước 9: in thông tin các dịch vụ còn lại. Bước 10: kết thúc.
2.4. Chức năng cập nhật thông tin dịch vụ
Hình 2.4: Sơ đồ khối chức năng cập nhật thông tin dịch vụ. Mô tả sơ đồ khối: Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu chưa có thì sang bước 4. 10 lOMoAR cPSD| 45315597
- Nếu có thì sang bước 5.
Bước 4: in “mã dịch vụ không có trên hệ thống” rồi sang bước 7.
Bước 5: nhập thông tin mới (bỏ trống nếu không đổi).
Bước 6: in danh sách dịch vụ hiện tại. Bước 7: kết thúc.
2.5. Chức năng tìm kiếm thông tin dịch vụ
Hình 2.5: Sơ đồ khối chương trình tìm kiếm thông tin dịch vụ. Mô tả sơ đồ khối: Bước 1: bắt đầu.
Bước 2: nhập mã dịch vụ.
Bước 3: kiểm tra mã dịch vụ đã có trên hệ thống chưa.
- Nếu có rồi thì sang bước 4.
- Nếu chưa có thì sang bước 5.
Bước 4: in thông tin dịch vụ rồi sang bước 6.
Bước 5: in “Mã dịch vụ không có trên hệ thống” rồi sang bước 6. 11 lOMoAR cPSD| 45315597
Bước 6: kết thúc.
Chương 3 CÀI ĐẶT CHƯƠNG TRÌNH
3.1. Giới thiệu khái quát về ngôn ngữ Python và Visual Studio Code
Python là ngôn ngữ lập trình hiện đại, dễ học, cú pháp ngắn gọn nhưng mạnh mẽ,
được ứng dụng rộng rãi trong trí tuệ nhân tạo, phân tích dữ liệu, web và tự động hóa.
Với triết lý "rõ ràng hơn phức tạp", Python là lựa chọn lý tưởng cho cả người mới bắt
đầu lẫn lập trình viên chuyên nghiệp. Visual Studio Code là trình soạn thảo mã nguồn
miễn phí, nhẹ và linh hoạt, do Microsoft phát triển, công cụ lý tưởng để viết, chạy và
quản lý dự án Python một cách hiệu quả. Việc sử dụng Visual Studio Code trong quá
trình cài đặt chương trình quản lý dịch vụ tại VietinBank mang lại nhiều lợi ích rõ rệt:
Thứ nhất, Visual Studio Code có giao diện trực quan, môi trường lập trình thân
thiện, dễ sử dụng, có hỗ trợ tô màu cú pháp và tự động hoàn thành mã, giúp việc viết
chương trình nhanh hơn và ít lỗi hơn.
Thứ hai, với việc tích hợp trình gỡ lỗi trong quá trình cài đặt và kiểm thử các chức
năng như thêm, sửa, xóa, tìm kiếm dịch vụ, Visual Studio Code cho phép lập trình viên
dễ dàng kiểm tra và sửa lỗi theo từng bước. Ngoài ra, khả năng đặt breakpoint (điểm
dừng) và theo dõi giá trị biến theo thời gian thực giúp sinh viên rèn luyện kỹ năng phân
tích logic chương trình một cách bài bản và khoa học.
Thứ ba, việc tích hợp Git và Terminal giúp theo dõi phiên bản mã nguồn và chạy
chương trình Python trực tiếp trong Visual Studio Code giúp tiết kiệm thời gian, tăng
hiệu quả lập trình và đảm bảo sự đồng bộ trong quá trình phát triển phần mềm.
Thứ tư, Visual Studio Code còn có khả năng đồng bộ hóa cài đặt giữa các thiết bị
thông qua tài khoản Microsoft hoặc GitHub. Điều này cực kỳ hữu ích trong môi trường
học tập linh hoạt hiện nay, khi sinh viên có thể làm việc tại phòng máy, tại nhà, hoặc
thậm chí trên máy tính cá nhân của bạn bè mà không mất thời gian thiết lập lại toàn bộ môi trường làm việc.
Tóm lại, việc kết hợp Python – ngôn ngữ lập trình phổ biến, và Visual Studio Code
– môi trường phát triển hiện đại, đã tạo điều kiện thuận lợi để nhóm sinh viên có thể
triển khai một dự án quản lý dịch vụ ngân hàng một cách khoa học, rõ ràng và sát với
thực tế công việc sau này. 12 lOMoAR cPSD| 45315597
3.2. Xây dựng chương trình trên ứng dụng Visual Studio Code
3.2.1. Kiến trúc hệ thống chương trình
Nhóm đã tiến hành xây dựng dự án QUANLYDICHVU trên Visual Studo Code
chứa các module để dễ dàng quản lý, mở rộng và bảo trì như sau: Tên module Vai trò chính main.py
Hiển thị menu, nhận lựa chọn người dùng, điều hướng đến các chức năng tương ứng. dulieu.py
Quản lý file dữ liệu (dulieu.txt) bao gồm: đọc file vào danh sách
tai_du_lieu(), và ghi danh sách ngược vào file (uu_du_lieu(). themdv.py Thêm dịch vụ mới. xoadv.py Xóa dịch vụ theo mã. capnhatdv.py
Cập nhật thông tin dịch vụ. timkiemdv.py
Tìm kiếm theo mã dịch vụ. hienthidv.py
Hiển thị danh sách dịch vụ.
Bảng 3.1: Các module chính và vai trò.
3.2.2. Xây dựng các hàm chức năng và các kịch bản kiểm thử
chương trìnhTrong chương trình quản lý dịch vụ, dữ liệu về các dịch vụ như mã,
tên, loại, mô tả và phí dịch vụ cần được lưu trữ và cập nhật thường xuyên. Để thực hiện
điều này, nhóm đã xây dựng cơ chế lưu trữ dưới dạng file văn bản dulieu.txt và viết các
hàm xử lý đọc, ghi dữ liệu trong module dulieu.py trong đó cấu trúc dữ liệu file dulieu.txt
mỗi dòng tương ứng với một dịch vụ, các thuộc tính được phân tách với nhau bởi dấu |
theo thứ tự: ma_dv| ten_dv| loai_dv| mo_ta| phi_dv. Hàm tai_du_lieu() đóng vai trò kiểm
tra sự tồn tại của file dulieu.txt, đọc từng dòng trong file, phân tách thành các trường và
định dạng, lưu vào danh sách các dịch vụ dưới dạng dictionary. Quy trình thực hiện:
Biến FILE_PATH được sử dụng để xác định chính xác đường dẫn tới file dulieu.txt.
Việc sử dụng os.path.join() kết hợp với os.path.dirname(__file__) giúp chương trình có
thể hoạt động ổn định trên nhiều hệ điều hành khác nhau và tránh lỗi đường dẫn tương
đối. Đây là cách làm an toàn và hiệu quả trong các chương trình có thao tác với file. 13 lOMoAR cPSD| 45315597
Hàm tai_du_lieu() có nhiệm vụ đọc dữ liệu từ file vào chương trình. Cụ thể, quá
trình thực hiện gồm các bước sau:
- Kiểm tra sự tồn tại của file: Nếu file dulieu.txt chưa tồn tại, chương trình sẽ tự
động tạo một file rỗng để tránh lỗi khi đọc.
- Mở và đọc dữ liệu: file được mở ở chế độ đọc với mã hóa UTF-8 hỗ trợ tiếng
Việt. - Tách và xử lý từng dòng: mỗi dòng dữ liệu được tách thành 5 trường: mã dịch
vụ, tên, loại, mô tả và phí. Nếu đủ 5 trường, dữ liệu sẽ được đưa vào một dictionary.
- Kiểm tra định dạng: trường phí dịch vụ được ép kiểu sang int. Nếu ép kiểu thất
bại (ví dụ nhập sai định dạng), dòng đó sẽ bị loại bỏ khỏi danh sách và in ra cảnh báo.
- Trả về danh sách: toàn bộ dịch vụ hợp lệ được lưu vào một danh sách và trả về
để sử dụng trong chương trình.
Hàm luu_du_lieu(ds) thực hiện nhiệm vụ ghi danh sách dịch vụ từ bộ nhớ vào lại
file dulieu.txt. Các bước thực hiện như sau:
- Mở file ở chế độ ghi đè: tức là toàn bộ nội dung cũ sẽ bị thay thế bằng dữ liệu
mới. - Duyệt danh sách dịch vụ: mỗi dịch vụ được định dạng lại theo đúng cấu trúc ban
đầu (các trường cách nhau bởi dấu “|”).
- Ghi từng dòng vào file: Dữ liệu được ghi tuần tự từng dòng tương ứng với từng dịch vụ.
Việc ghi đè toàn bộ file giúp đảm bảo dữ liệu luôn nhất quán, tuy nhiên, cũng có thể
cân nhắc thêm cơ chế sao lưu phòng lỗi khi phát triển hệ thống lớn hơn.
Ngay khi chương trình bắt đầu chạy, lệnh danh_sach_dich_vu = tai_du_lieu() sẽ
được thực hiện nhằm nạp dữ liệu dịch vụ vào bộ nhớ. Biến toàn cục này đóng vai trò
trung tâm, được dùng trong hầu hết các chức năng như thêm, sửa, xóa, tìm kiếm hoặc hiển thị dịch vụ.
Nhìn chung, đoạn mã trong dulieu.py được viết rõ ràng, dễ hiểu và thực hiện đầy
đủ các thao tác cơ bản với file văn bản. Mặc dù chương trình sử dụng phương thức lưu
trữ thủ công qua file .txt, nhưng với quy mô ứng dụng mô phỏng ở cấp độ sinh viên,
cách tiếp cận này là hợp lý và dễ triển khai. Đặc biệt, đoạn mã thể hiện được một số yếu
tố lập trình tốt như: Tự động kiểm tra và tạo file nếu chưa tồn tại, xử lý lỗi định dạng
đầu vào. tổ chức dữ liệu dưới dạng danh sách các từ điển, thuận tiện cho việc truy xuất. 14 lOMoAR cPSD| 45315597
có thể dễ dàng mở rộng lên cơ sở dữ liệu thực như SQLite, MySQL trong tương lai. Với
vai trò là module xử lý dữ liệu, đoạn mã này giúp hệ thống hoạt động trơn tru, tránh lỗi
khi đọc ghi file và duy trì tính liên tục của dữ liệu trong suốt quá trình sử dụng chương
trình rõ ràng, có kiểm tra lỗi và xử lý đầy đủ giúp chương trình chạy ổn định và dễ bảo trì.
Hình 3.1: Toàn bộ nội dung file dulieu.py.
3.2.2.2. Tạo chương trình chính: Input
(từ bàn phím): số từ 0 đến 5.
Input (từ chương trình): danh_sach_dich_vu trong dulieu, them_dich_vu trong
themdv, xoa_dich_vu từ xoadv, cap_nhat_dich_vu trong capnhatdv, tim_kiem_dich_vu
trong timkiemdv, hien_thi_dich_vu trong hienthidv.
Output: hiển thị menu tương ứng với số người dùng chọn tương ứng 1 là thêm
thông tin dịch vụ mới, 2 là xóa thông tin dịch vụ, 3 là cập nhật thông tin dịch vụ, 4 là
tìm kiếm thông tin dịch vụ, 5 là hiển thị danh sách dịch vụ hiện có, 0 là thoát chương 15 lOMoAR cPSD| 45315597
trình và in “Chương trình kết thúc”. Nếu người dùng chọn các số hoặc ký tự khác thì in
“Lựa chọn không hợp lệ. Vui lòng chọn từ 0 đến 5.” và để người dùng chọn lại.
Hình 3.2: Toàn bộ nội dung file main.py 16 lOMoAR cPSD| 45315597
- Bước 1: gọi hàm chuong_trinh_chinh() từ khối if __name__ == "__main__" để
bắt đầu chạy chương trình.
- Bước 2: hàm hien_thi_menu() in ra danh sách các chức năng cho người dùng.
- Bước 3: sử dụng lệnh input() để nhập một chuỗi lựa chọn từ người dùng (giá trị
từ "0" đến "5"), loại bỏ khoảng trắng bằng .strip() để tránh lỗi nhập thừa dấu cách.
Vòng lặp tiếp tục chạy cho đến khi người dùng chọn "0" để kết thúc chương trình.
Kịch bản khi kiểm thử:
Trường hợp 1: nhập lựa chọn 5. Hiển thị danh sách dịch vụ hiện có.
Hình 3.3. Kết quả khi nhập lựa chọn 5.
Trương hợp 2: nhập lựa chọn khác từ 0 đến 5:
Hình 3.4. Kết quả khi nhập lựa chọn khác từ 0 đến 5.
3.2.2.3. Tạo chương trình chức năng thêm dịch vụ
Input (từ bàn phím): ma_dv, ten_dv, loai_dv, mo_ta, phi_dv.
Input (từ chương trình): danh_sach_dich_vu và luu_du_lieu trong dulieu. 17 lOMoAR cPSD| 45315597 Quy trình thực hiện:
Output: danh sách dịch vụ hiện tại hoặc báo lỗi.
Hình 3.5: Toàn bộ nội dung file themdv.py. Bước 1: nhập ma_dv.
Bước 2: kiểm tra các ràng buộc ma_dv.
- Nếu ma_dv đã tồn tại hoặc rỗng thì sang bước 9. 18 lOMoAR cPSD| 45315597
- Nếu ma_dv thỏa mãn các ràng buộc thì sang bước 3. Bước 3: nhập ten_dv
Bước 4: kiểm tra các ràng buộc ten_dv.
- Nếu ten_dv rỗng thì sang bước 9.
- Nếu ten_dv thỏa mãn các ràng buộc thì sang bước 5.
Bước 5: nhập loai_dv, mo_ta, phi_dv.
Bước 6: kiểm tra ràng buộc phi_dv.
- Nếu phi_dv nhỏ hơn 0 hoặc không phải là số thì sang bước 9.
- Nếu phi_dv thỏa mãn các ràng buộc thì sang bước 7.
Bước 7: lưu dịch vụ vào danh sách rồi lưu vào file dulieu.txt.
Bước 8: in thông báo “Đã thêm dịch vụ thành công!” và thông tin các dịch vụ hiện tại và kết thúc.
Bước 9: in thông báo không thỏa mãn ràng buộc tương ứng và kết thúc.
Kịch bản khi kiểm thử:
Trường hợp 1: thêm dịch vụ thành công.
Hình 3.6. Kết quả khi thêm dịch vụ thành công.
Trường hợp 2: thêm dịch vụ không thành công do không thỏa mãn ràng buộc.
Hình 3.7. Kết quả khi thêm dịch vụ không thành công. 19 lOMoAR cPSD| 45315597 Quy trình thực hiện:
3.2.2.4. Tạo chương trình chức năng xóa dịch vụ
Input (từ bàn phím): ma_dv, y hoặc n hoặc ký tự khác.
Input (từ chương trình): danh_sach_dich_vu và luu_du_lieu trong dulieu. Output:
danh sách dịch vụ hiện tại hoặc báo lỗi.
Hình 3.8. Toàn bộ nội dung file xoadv.py. Bước 1: nhập ma_dv.
Bước 2: kiểm tra ma_dv có tồn tại hay không. Nếu có thì sang bước 3, nếu không thì sang bước 8.
Bước 3: In thông tin dịch vụ và “Bạn có chắc chắn muốn xóa dịch vụ này? (y/n)”.
Bước 4: nhập y hoặc n hoặc các ký tự khác. 20