lOMoARcPSD| 58583460
Báo cáo đồ án giữa kì lần 2
---
Bài 1:
Báo cáo Chương trình Quản lý Sách
1. Khởi tạo cấu trúc dữ liệu và hàm khởi tạo
- Cấu trúc dữ liệu `sach`: Định nghĩa các thuộc tính `name`,
`code`, và `rate` để lưu trữ thông tin của sách.
- Cấu trúc dữ liệu `LIST`: Sử dụng mảng tĩnh `arr` với kích
thước cố định `Length` để lưu trữ các sách, và biến `size` để
theo dõi số lượng sách hiện có.
- Hàm `Init`: Đặt `size` của danh sách là 0, khởi tạo danh sách
trống.
2. Các hàm kiểm tra trạng thái danh sách
- Hàm `Empty`: Kiểm tra xem danh sách có rỗng không.
- Hàm `Full`: Kiểm tra xem danh sách có đầy không.
3. Các thao tác với danh sách
- Hàm `Input`:Nhập thông tin cho `size` sách trong danh sách
từ người dùng.
- Hàm `addLast`:Thêm sách vào cuối danh sách nếu danh sách
chưa đầy.
lOMoARcPSD| 58583460
- Hàm `addFirst`: Thêm sách vào đầu danh sách nếu danh sách
chưa đầy.
- Hàm `desFirst`: Xóa sách đầu tiên của danh sách nếu danh
sách không rỗng.
- Hàm `desLast`: Xóa sách cuối cùng của danh sách nếu danh
sáchkhông rỗng.
4. Các thao tác tìm kiếm và hiển thị
- Hàm `findname`: Tìm kiếm sách theo tên trong danh sách.
Trả về`true` nếu tìm thấy sách, ngược lại trả về `false`.
- Hàm `display`: Hiển thị thông tin toàn bộ sách trong danh
sách.
5. Các hàm sắp xếp
- Hàm `selectionSort`:Sắp xếp danh sách theo `rate` của sách
bằngthuật toán Selection Sort.
- Hàm `quickSort`: Sắp xếp danh sách theo `rate` của sách
bằng thuật toán Quick Sort. Sử dụng hàm `partition` để xác
định chỉ số pivot.
6. Các hàm thao tác đặc biệt
- Hàm `reverse`: Đảo ngược thứ tự các sách trong danh sách.
- Hàm `deleteAllByrate`: Xóa toàn bộ sách có `rate` bằng với
giá trị đầu vào.
lOMoARcPSD| 58583460
- Hàm `sumValues`: Tính tổng các `rate` của tất cả sách trong
danh sách.
7. Hàm `main` và menu điều khiển
- Menu điều khiển: Hiển thị danh sách các chức năng, cho
phép người dùng chọn và thực hiện các thao tác như thêm,
xóa, tìm kiếm, sắp xếp, hiển thị, đảo ngược, kiểm tra trạng
thái danh sách.
- Các tùy chọn từ 1 đến 13: Bao gồm các thao tác đã định
nghĩa trong các hàm trên.
Bài 2:
Báo cáo chương trình quản lý sách danh sách liên kết đơn
1. Cấu trúc Dữ liệu:
- `sach`: Cấu trúc này định nghĩa thông tin của một cuốn sách
bao gồm tên sách (`name`), mã sách (`code`), và mức độ hài
lòng (`rate`).
- `Node`: Cấu trúc này định nghĩa một nút trong danh sách liên
kết, bao gồm dữ liệu sách và con trỏ đến nút tiếp theo
(`next`).
- `LIST`: Cấu trúc này định nghĩa danh sách liên kết, bao gồm
contrỏ đến đầu danh sách (`head`) và kích thước của danh
sách (`size`).
2. Khởi tạo Danh sách:
- `Init(LIST &lst)`: Hàm khởi tạo danh sách liên kết, thiết lập
`head` là `nullptr` và `size` là 0.
lOMoARcPSD| 58583460
3. Tạo Nút Mới:
- createNode(const sach &value)`: Hàm tạo và trả về một nút
mới chứa thông tin sách.
4. Kiểm tra Tính Rỗng:
- `Empty(const LIST &lst)`: Hàm kiểm tra xem danh sách có
rỗng hay không.
5. Thêm Sách:
- `addFirst(LIST &lst, sach value)`: Thêm một cuốn sách mới
vào đầu danh sách.
- `addLast(LIST &lst, sach value)`: Thêm một cuốn sách mới
vào cuối danh sách.
6. Xóa Sách:
- `desFirst(LIST &lst)`: Xóa cuốn sách đầu tiên trong danh
sách.
- desLast(LIST &lst)`: Xóa cuốn sách cuối cùng trong danh
sách.
7. Tìm Kiếm Sách:
- `findname(const LIST &lst, const string &name)`: Kiểm tra
xem một cuốn sách với tên nhất định có trong danh sách hay
không.
lOMoARcPSD| 58583460
8. Hiển Thị Danh Sách:
- `display(const LIST &lst)`: Hiển thị tất cả thông tin sách
trong danh sách.
9. Sắp Xếp Sách:
- `selectionSort(LIST &lst)`: Sắp xếp danh sách sách theo mức
độ hài lòng bằng thuật toán sắp xếp chọn (Selection Sort).
- `quickSort(LIST &lst)`: Sắp xếp danh sách sách theo mức độ
hàilòng bằng thuật toán QuickSort.
10. Đảo Ngược Danh Sách:
- `reverse(LIST &lst)`: Đảo ngược thứ tự các cuốn sách trong
danh sách.
11. Xóa Tất Cả Sách Theo Mức Độ Hài Lòng:
- `deleteAllByrate(LIST &lst, int rate)`: Xóa tất cả cuốn sách
có mức độ hài lòng nhất định khỏi danh sách.
12. Tính Tổng Mức Độ Hài Lòng:
- `sumValues(const LIST &lst)`: Tính tổng mức độ hài lòng
của tất cả cuốn sách trong danh sách.
13. Giao Diện Người Dùng:
- `main()`: Phần này cung cấp giao diện người dùng cho phép
người dùng thực hiện các thao tác như thêm, xóa, tìm kiếm,
lOMoARcPSD| 58583460
sắp xếp, và hiển thị sách trong danh sách thông qua menu
tương tác.
Kết luận
Bài 3.1:
---
Báo cáo Chương trình Quản lý Sách Sử Dụng Danh Sách Liên
Kết Đôi
1. Khởi tạo cấu trúc dữ liệu và hàm khởi tạo
- Cấu trúc dữ liệu `sach`: Định nghĩa các thuộc tính `name`,
`code`, và `rate` để lưu trữ thông tin sách.
- Cấu trúc dữ liệu `Node`: Chứa thông tin sách và con trỏ tới
nút kế tiếp (`next`) và nút trước đó (`prev`) trong danh sách
liên kết đôi.
- Cấu trúc dữ liệu `DLIST`: Bao gồm con trỏ tới nút đầu
(`head`), nút cuối (`tail`), và biến `size` để theo dõi số lượng
sách hiện có.
- Hàm `Init`: Khởi tạo danh sách liên kết đôi với `head` và
`tail` bằng `nullptr` và kích thước là 0.
2. Các hàm kiểm tra trạng thái danh sách
- Hàm `Empty`: Kiểm tra xem danh sách có rỗng không.
lOMoARcPSD| 58583460
3. Các thao tác với danh sách
- Hàm `addFirst`: Thêm sách vào đầu danh sách. Nếu danh
sách rỗng, sách sẽ trở thành cả đầu và cuối.
- Hàm `addLast`: Thêm sách vào cuối danh sách. Nếu danh
sách rỗng, sách sẽ trở thành cả đầu và cuối.
- Hàm `desFirst`: Xóa sách đầu tiên của danh sách. Nếu danh
sách chỉ có một sách, cả `head` và `tail` sẽ trở thành `nullptr`.
- Hàm `desLast`: Xóa sách cuối cùng của danh sách. Tương tự
nhưhàm `desFirst`, nếu danh sách chỉ có một sách, cả `head`
và `tail` sẽ trở thành `nullptr`.
4. Các thao tác tìm kiếm và hiển thị
- Hàm `findname`: Tìm kiếm sách theo tên trong danh sách.
Trả về`true` nếu tìm thấy sách, ngược lại trả về `false`.
- Hàm `displayForward`: Hiển thị thông tin toàn bộ sách từ đầu
đến cuối danh sách.
- Hàm `displayBackward`: Hiển thị thông tin toàn bộ sách từ
cuối đến đầu danh sách.
5. Các hàm sắp xếp
- Hàm `selectionSort`:Sắp xếp danh sách theo `rate` của sách
bằngthuật toán Selection Sort.
6. Các hàm thao tác đặc biệt
lOMoARcPSD| 58583460
- Hàm `reverse`: Đảo ngược thứ tự các nút trong danh sách.
- Hàm `deleteAllByrate`: Xóa toàn bộ sách có `rate` bằng với
giá trị đầu vào.
- Hàm `sumValues`: Tính tổng các `rate` của tất cả sách trong
danh sách.
7. Hàm QuickSort
- Hàm `partition`: Định nghĩa phân vùng cho thuật toán
QuickSort. Phân vùng danh sách dựa trên giá trị `rate`.
- Hàm `quickSortRecur`: Hàm đệ quy để thực hiện QuickSort
trên danh sách.
- Hàm `quickSort`:Hàm khởi động QuickSort cho danh sách.
8. Hàm `main` và menu điều khiển
- Menu điều khiển:Hiển thị danh sách các chức năng, cho phép
người dùng chọn và thực hiện các thao tác như thêm, xóa, tìm
kiếm, sắp xếp, hiển thị, đảo ngược, kiểm tra trạng thái danh
sách.
- Các tùy chọn từ 1 đến 13: Bao gồm các thao tác đã định
nghĩa trong các hàm trên.
.

Preview text:

lOMoAR cPSD| 58583460
Báo cáo đồ án giữa kì lần 2 --- Bài 1:
Báo cáo Chương trình Quản lý Sách
1. Khởi tạo cấu trúc dữ liệu và hàm khởi tạo
- Cấu trúc dữ liệu `sach`: Định nghĩa các thuộc tính `name`,
`code`, và `rate` để lưu trữ thông tin của sách.
- Cấu trúc dữ liệu `LIST`: Sử dụng mảng tĩnh `arr` với kích
thước cố định `Length` để lưu trữ các sách, và biến `size` để
theo dõi số lượng sách hiện có.
- Hàm `Init`: Đặt `size` của danh sách là 0, khởi tạo danh sách trống.
2. Các hàm kiểm tra trạng thái danh sách
- Hàm `Empty`: Kiểm tra xem danh sách có rỗng không.
- Hàm `Full`: Kiểm tra xem danh sách có đầy không.
3. Các thao tác với danh sách
- Hàm `Input`:Nhập thông tin cho `size` sách trong danh sách từ người dùng.
- Hàm `addLast`:Thêm sách vào cuối danh sách nếu danh sách chưa đầy. lOMoAR cPSD| 58583460
- Hàm `addFirst`: Thêm sách vào đầu danh sách nếu danh sách chưa đầy.
- Hàm `desFirst`: Xóa sách đầu tiên của danh sách nếu danh sách không rỗng.
- Hàm `desLast`: Xóa sách cuối cùng của danh sách nếu danh sáchkhông rỗng.
4. Các thao tác tìm kiếm và hiển thị
- Hàm `findname`: Tìm kiếm sách theo tên trong danh sách.
Trả về`true` nếu tìm thấy sách, ngược lại trả về `false`.
- Hàm `display`: Hiển thị thông tin toàn bộ sách trong danh sách.
5. Các hàm sắp xếp
- Hàm `selectionSort`:Sắp xếp danh sách theo `rate` của sách
bằngthuật toán Selection Sort.
- Hàm `quickSort`: Sắp xếp danh sách theo `rate` của sách
bằng thuật toán Quick Sort. Sử dụng hàm `partition` để xác định chỉ số pivot.
6. Các hàm thao tác đặc biệt
- Hàm `reverse`: Đảo ngược thứ tự các sách trong danh sách.
- Hàm `deleteAllByrate`: Xóa toàn bộ sách có `rate` bằng với giá trị đầu vào. lOMoAR cPSD| 58583460
- Hàm `sumValues`: Tính tổng các `rate` của tất cả sách trong danh sách.
7. Hàm `main` và menu điều khiển
- Menu điều khiển: Hiển thị danh sách các chức năng, cho
phép người dùng chọn và thực hiện các thao tác như thêm,
xóa, tìm kiếm, sắp xếp, hiển thị, đảo ngược, kiểm tra trạng thái danh sách.
- Các tùy chọn từ 1 đến 13: Bao gồm các thao tác đã định nghĩa trong các hàm trên. Bài 2:
Báo cáo chương trình quản lý sách danh sách liên kết đơn
1. Cấu trúc Dữ liệu:
- `sach`: Cấu trúc này định nghĩa thông tin của một cuốn sách
bao gồm tên sách (`name`), mã sách (`code`), và mức độ hài lòng (`rate`).
- `Node`: Cấu trúc này định nghĩa một nút trong danh sách liên
kết, bao gồm dữ liệu sách và con trỏ đến nút tiếp theo (`next`).
- `LIST`: Cấu trúc này định nghĩa danh sách liên kết, bao gồm
contrỏ đến đầu danh sách (`head`) và kích thước của danh sách (`size`).
2. Khởi tạo Danh sách:
- `Init(LIST &lst)`: Hàm khởi tạo danh sách liên kết, thiết lập
`head` là `nullptr` và `size` là 0. lOMoAR cPSD| 58583460 3. Tạo Nút Mới:
- createNode(const sach &value)`: Hàm tạo và trả về một nút
mới chứa thông tin sách.
4. Kiểm tra Tính Rỗng:
- `Empty(const LIST &lst)`: Hàm kiểm tra xem danh sách có rỗng hay không. 5. Thêm Sách:
- `addFirst(LIST &lst, sach value)`: Thêm một cuốn sách mới vào đầu danh sách.
- `addLast(LIST &lst, sach value)`: Thêm một cuốn sách mới vào cuối danh sách. 6. Xóa Sách:
- `desFirst(LIST &lst)`: Xóa cuốn sách đầu tiên trong danh sách.
- desLast(LIST &lst)`: Xóa cuốn sách cuối cùng trong danh sách. 7. Tìm Kiếm Sách:
- `findname(const LIST &lst, const string &name)`: Kiểm tra
xem một cuốn sách với tên nhất định có trong danh sách hay không. lOMoAR cPSD| 58583460
8. Hiển Thị Danh Sách:
- `display(const LIST &lst)`: Hiển thị tất cả thông tin sách trong danh sách. 9. Sắp Xếp Sách:
- `selectionSort(LIST &lst)`: Sắp xếp danh sách sách theo mức
độ hài lòng bằng thuật toán sắp xếp chọn (Selection Sort).
- `quickSort(LIST &lst)`: Sắp xếp danh sách sách theo mức độ
hàilòng bằng thuật toán QuickSort.
10. Đảo Ngược Danh Sách:
- `reverse(LIST &lst)`: Đảo ngược thứ tự các cuốn sách trong danh sách.
11. Xóa Tất Cả Sách Theo Mức Độ Hài Lòng:
- `deleteAllByrate(LIST &lst, int rate)`: Xóa tất cả cuốn sách
có mức độ hài lòng nhất định khỏi danh sách.
12. Tính Tổng Mức Độ Hài Lòng:
- `sumValues(const LIST &lst)`: Tính tổng mức độ hài lòng
của tất cả cuốn sách trong danh sách.
13. Giao Diện Người Dùng:
- `main()`: Phần này cung cấp giao diện người dùng cho phép
người dùng thực hiện các thao tác như thêm, xóa, tìm kiếm, lOMoAR cPSD| 58583460
sắp xếp, và hiển thị sách trong danh sách thông qua menu tương tác. Kết luận Bài 3.1: ---
Báo cáo Chương trình Quản lý Sách Sử Dụng Danh Sách Liên Kết Đôi
1. Khởi tạo cấu trúc dữ liệu và hàm khởi tạo
- Cấu trúc dữ liệu `sach`: Định nghĩa các thuộc tính `name`,
`code`, và `rate` để lưu trữ thông tin sách.
- Cấu trúc dữ liệu `Node`: Chứa thông tin sách và con trỏ tới
nút kế tiếp (`next`) và nút trước đó (`prev`) trong danh sách liên kết đôi.
- Cấu trúc dữ liệu `DLIST`: Bao gồm con trỏ tới nút đầu
(`head`), nút cuối (`tail`), và biến `size` để theo dõi số lượng sách hiện có.
- Hàm `Init`: Khởi tạo danh sách liên kết đôi với `head` và
`tail` bằng `nullptr` và kích thước là 0.
2. Các hàm kiểm tra trạng thái danh sách
- Hàm `Empty`: Kiểm tra xem danh sách có rỗng không. lOMoAR cPSD| 58583460
3. Các thao tác với danh sách
- Hàm `addFirst`: Thêm sách vào đầu danh sách. Nếu danh
sách rỗng, sách sẽ trở thành cả đầu và cuối.
- Hàm `addLast`: Thêm sách vào cuối danh sách. Nếu danh
sách rỗng, sách sẽ trở thành cả đầu và cuối.
- Hàm `desFirst`: Xóa sách đầu tiên của danh sách. Nếu danh
sách chỉ có một sách, cả `head` và `tail` sẽ trở thành `nullptr`.
- Hàm `desLast`: Xóa sách cuối cùng của danh sách. Tương tự
nhưhàm `desFirst`, nếu danh sách chỉ có một sách, cả `head`
và `tail` sẽ trở thành `nullptr`.
4. Các thao tác tìm kiếm và hiển thị
- Hàm `findname`: Tìm kiếm sách theo tên trong danh sách.
Trả về`true` nếu tìm thấy sách, ngược lại trả về `false`.
- Hàm `displayForward`: Hiển thị thông tin toàn bộ sách từ đầu đến cuối danh sách.
- Hàm `displayBackward`: Hiển thị thông tin toàn bộ sách từ
cuối đến đầu danh sách.
5. Các hàm sắp xếp
- Hàm `selectionSort`:Sắp xếp danh sách theo `rate` của sách
bằngthuật toán Selection Sort.
6. Các hàm thao tác đặc biệt lOMoAR cPSD| 58583460
- Hàm `reverse`: Đảo ngược thứ tự các nút trong danh sách.
- Hàm `deleteAllByrate`: Xóa toàn bộ sách có `rate` bằng với giá trị đầu vào.
- Hàm `sumValues`: Tính tổng các `rate` của tất cả sách trong danh sách. 7. Hàm QuickSort
- Hàm `partition`: Định nghĩa phân vùng cho thuật toán
QuickSort. Phân vùng danh sách dựa trên giá trị `rate`.
- Hàm `quickSortRecur`: Hàm đệ quy để thực hiện QuickSort trên danh sách.
- Hàm `quickSort`:Hàm khởi động QuickSort cho danh sách.
8. Hàm `main` và menu điều khiển
- Menu điều khiển:Hiển thị danh sách các chức năng, cho phép
người dùng chọn và thực hiện các thao tác như thêm, xóa, tìm
kiếm, sắp xếp, hiển thị, đảo ngược, kiểm tra trạng thái danh sách.
- Các tùy chọn từ 1 đến 13: Bao gồm các thao tác đã định nghĩa trong các hàm trên. .