Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

Bài thi Thực hành cuối kỳ

Cấu trúc dữ liệu và giải thuật


Thời gian làm bài: 90p
QUY ĐỊNH (1.0 đ)
- Bài nộp đặt trong file nén. Đặt tên file nén là MSSV.
- Trong file source, có ghi chú ở đầu mỗi file, nội dung ghi chú: Họ tên, MSSV,
và những câu đã làm được trong bài.
- Trừ việc đọc/ghi file (nếu có) và thao tác trên string (nếu có), sinh viên phải tự
khai báo cấu trúc dữ liệu, không sử dụng thư viện có sẵn.
- Nếu sử dụng Visual Studio, nộp các file Solution và Project liên quan, không
nộp các file Debug.
- Có nộp các file input và output trong file nén.
- Chú ý: việc đạo văn, giống source code giữa các sinh viên sẽ là 0 điểm cả quá
trình Thực hành cho tất cả các sinh viên liên quan.

NỘI DUNG (9.0 đ)


Hãy xây dựng cấu trúc dữ liệu danh sách liên kết đơn (DSLK) để quản lý các
tài khoản khách hàng cá nhân của một Ngân hàng ABC. Thông tin mỗi tài khoản gồm:
số tài khoản (dãy các số gồm 9 chữ số từ 000000001 đến 999999999), tên khách hàng
(không quá 50 ký tự, tiếng Việt in hoa không dấu, có thể có ký hiệu khoảng cách),
giới tính (M&F, tượng trưng cho male-nam và female-nữ), ngày sinh
(DDMMYYYY), số tiền trong tài khoản (số dư tài khoản, số nguyên dương), loại
khách hàng (SVIP, VIP, Normal) – với SVIP là tài khoản có số dư trên 1 triệu, VIP là
tài khoản có số dư từ 65,000 đến 1 triệu, Normal là những tài khoản còn lại.
Hãy viết chương trình cho phép người quản lý nghiệp vụ của Ngân hàng ABC
thực hiện các thao tác sau:
1. Đọc file input.txt và thêm vào DSLK. Xuất ra màn hình số lượng node, kèm
số tài khoản và tên theo thứ tự (1.0 đ)
2. Tạo thông tin một khách hàng mới (nhập từ bàn phím). Thêm tài khoản này
vào cuối DSLK. (1.0 đ)
3. Xuất ra màn hình số lượng và danh sách tên khách hàng VIP có số tài khoản
từ 200000000 đến 500000000 và có số dư tài khoản >= 500,000 (năm trăm
ngàn) (1.0 đ)
4. Xuất ra màn hình thông tin của khách hàng nữ có tuổi nhỏ nhất. Nếu có
nhiều tài khoản có tuổi trùng nhau thì chọn tài khoản có số dư lớn nhất. Nếu
vẫn trùng thì xuất ra tất cả (1.0 đ)
5. Sử dụng thuật toán Quick Sort, hãy sắp xếp danh sách tài khoản theo thứ tự
giảm dần của số dư, nếu hai tài khoản có số dư bằng nhau thì tài khoản nào có
số tuổi nhỏ hơn sẽ xếp trước, nếu số tuổi cũng bằng nhau thì sắp theo thứ tự
bảng chữ cái của tên khách hàng. Sau đó xuất ra thông tin các tài khoản (bao
gồm số tài khoản, họ tên, ngày sinh, số dư) ứng với thứ tự trên. (1.5đ)
Lưu ý: việc sắp xếp phải được tiến hành bằng cách đổi liên kết giữa các node.
KHÔNG đổi dữ liệu giửa các node.
6. Xóa tất cả các tài khoản có số dư = 0. (0.5đ)
7. Ghi danh sách thông tin các tài khoản sau khi đã thực hiện các câu trên vào
output file (output.txt) (1.0đ) Cấu trúc file output tương tự file input.
8. Giả sử người nhập đã nhập sai tất cả số dư tài khoản bị ngược (Ví dụ:
3000017 thay vì đúng sẽ là 7100003, riêng số tiền là 0 vẫn là 0), hãy viết hàm
sửa lại số tiền cho đúng, kiểm tra và sửa lại loại khách hàng (nếu có thay đổi)
và xuất kết quả ra output file (output1.txt). (2.0đ)
Mẫu ví dụ của input.txt
input.txt (example)
10
000000009, NGUYEN VAN AN, M, 19012000, 0, Normal
210345000, LE THI BONG, F, 27072000, 555001, VIP
321000008, TRAN THI CUC, F, 01022004, 700009, VIP
432000007, PHAM THI HONG DUNG, F, 01032004, 700003, VIP
480000056, HUYNH HOANG VUONG NGOC DIEM, F, 01032004, 2005, Normal
520000098, PHAN DANG MINH DUC, M, 19051998, 2000008, SVIP
200000009, VU THI GIANG, F, 19012000, 0, Normal
320000008, DANG HOANG HAI, M, 20101974, 3000001, SVIP
320000009, BUI VAN HAI, M, 20101979, 3000017, SVIP
390000009, DO VAN KHAI, M, 23111979, 3000019, SVIP

You might also like