



















Preview text:
  lOMoAR cPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á 
KHOA: CÔNG NGHỆ THÔNG TIN    BÀI TẬP LỚN 
HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 
ĐỀ TÀI 17: ỨNG DỤNG DANH SÁCH LIÊN KẾT KÉP  
VÀO QUẢN LÝ ĐIỂM SINH VIÊN 
Sinh viên thực hiện  Lớp  Khoá  Phạm Minh Quang  CNTT 14.10   14  Trần Long Vũ  CNTT 14.10   14  Nguyễn Hồng Hoàng  CNTT 14.10   14  Bắc Ninh, năm 2024    lOMoAR cPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á 
KHOA: CÔNG NGHỆ THÔNG TIN  BÀI TẬP LỚN 
HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT  Nhóm: 3 
ĐỀ TÀI 17: ỨNG DỤNG DANH SÁCH LIÊN KẾT KÉP  
VÀO QUẢN LÝ ĐIỂM SINH VIÊN  Mã sinh  Điểm bằng  Điểm bằng  STT 
Sinh viên thực hiện  viên  số  chữ  1  Phạm Minh Quang  20233842      2  Trần Long Vũ  20233780      3  Nguyễn Hồng Hoàng  20234070        CÁN BỘ CHẤM 1  CÁN BỘ CHẤM 2   
(Ký và ghi rõ họ tên) 
 (Ký và ghi rõ họ tên)      lOMoAR cPSD| 60729183   MỤC LỤC 
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ........................................................................ 4 
1.1. Giới thiệu ...................................................................................................................... 4 
1.2. Phân công công việc ..................................................................................................... 6 
CHƯƠNG 2. LƯU ĐỒ THUẬT TOÁN VÀ BỘ MẪU DỮ LIỆU ................................. 7 
2.1. Lưu đồ thuật toán .......................................................................................................... 7 
2.2. Bộ dữ liệu mẫu ............................................................................................................ 14 
CHƯƠNG 3. CÀI ĐẶT ................................................................................................... 17 
3.1. Module 1: Cấu trúc môn học, điểm, thông tin cho sinh viên, cấu trúc cho danh sáchliên 
kết kép................................................................................................................................ 17 
3.2. Module 2. Thêm sinh viên, nhập thông tin sinh viên và hiển thị thông tin sinh viên 30 
3.3. Module 3. Sắp xếp theo điểm toán ............................................................................. 31 
3.4. Module 4. Sắp xếp theo điểm trung bình ................................................................... 32 
3.5. Module 5. Tìm sinh viên có điểm trung bình Max/Min ............................................. 32 
3.6. Module 6. In ra môn học có điểm trung bình Max/Min ............................................. 33 
3.7. Kết quả ........................................................................................................................ 35 
KẾT LUẬN ....................................................................................................................... 36 
1. Kết quả đạt được ............................................................................................................ 36 
2. Hướng phát triển ............................................................................................................ 37 
DANH MỤC TÀI LIỆU THAM KHẢO ....................................................................... 38              lOMoAR cPSD| 60729183
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ   Số  hiệu  Tên  Trang  1 
Bảng 1: Bảng phân công công việc  5  2 
Hình 1: Lưu đồ thuật toán thêm sinh viên  6  3 
Hình 2: Lưu đồ thuật toán nhập thông tin của nhiều sinh viên  7  4 
Hình 3: Lưu đồ thuật toán nhập hiển thị thông tin tất cả sinh viên  8  5 
Hình 4: Lưu đồ thuật toán sắp xếp sinh viên theo điểm môn toán  9  6 
Hình 5: Lưu đồ thuật toán sắp xếp danh sách sinh viên theo điểm trung bình  10  7 
Hình 6: Lưu đồ thuật toán tìm sinh viên có điểm trung bình Max/Min  11  8 
Hình 7: Lưu đồ thuật toán tìm sinh viên có điểm trung bình Max/Min  12  9 
Hình 8: Lưu đồ thuật toán chính của chương trình  13 
10 Bảng 2.1. Nhập danh sách tên, môn học  14 
11 Bảng 2.2. Sắp xếp danh sách theo chiều tăng dần của điểm Toán  14 
12 Bảng 2.3. Sắp xếp danh sách theo chiều tăng dần điểm trung bình  14 
13 Bảng 2.4. Tìm sinh viên có điểm trung bình Max/Min  15      lOMoAR cPSD| 60729183          
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI    1.1. Giới thiệu 
Ứng dựng danh sách liên kết kép vào quản lý điểm sinh viên. Viết chương trình để 
quản lý điểm của sinh viên: 
 Mỗi node quản lý thông tin cá nhân, các môn học: Toán, Vật lý, Tiếng anh, 
CTDL>. Trong đó môn học cũng là môt cấu trúc gồṃ tên môn, số tín chỉ. Điểm 
cũng là môt cấu trúc bao gồm Mã sinḥ viên, mã môn học. 
 Nhập 1 danh sách cho đến khi nhập dấu “$” vào tên đối tượng. 
 Sắp xếp danh sách theo chiều tăng dần của điểm toán. 
 Sắp xếp danh sách theo chiều tăng dần của điểm trung bình. 
 Tìm sinh viên có điểm trung bình Max/Min 
 In ra môn học có điểm trung bình Max/Min    
 Ứng dựng danh sách liên kết kép vào quản lý điểm sinh viên 
 Danh sách liên kết kép: Là cấu trúc dữ liệu bao gồm các node liên kết với nhau. Mỗi 
node chứa dữ liệu và hai con trỏ: một trỏ đến node trước và một trỏ đến node sau. 
 Node: Chứa thông tin về sinh viên (Mã sinh viên, Tên sinh viên, Điểm) và các con  trỏ. 
 Danh sách liên kết kép: Chứa các node và các chức năng để thao tác với danh sách. 
 Node quản lý thông tin cá nhân, các môn học: Toán, Vật lý, Tiếng anh, 
CTDL>. Trong đó môn học cũng là môt cấu trúc gồm tên môn, số tín chỉ.̣ 
Điểm cũng là môt cấu trúc bao gồm Mã sinh viên, mã môn học ̣ 
 Cấu trúc Node: Chứa thông tin sinh viên (Mã sinh viên, Tên sinh viên) và một danh 
sách các môn học cùng điểm của từng môn học. 
 Cấu trúc môn học: Chứa tên môn học và số tín chỉ. 
 Cấu trúc điểm: Bao gồm mã sinh viên, mã môn học và điểm. 
 Nhập 1 danh sách cho đến khi nhập dấu “$” vào tên đối tượng 
Nhập thông tin sinh viên và điểm các môn học: 
 Người dùng sẽ nhập thông tin sinh viên: Mã sinh viên, Tên sinh viên.      lOMoAR cPSD| 60729183
 Người dùng sẽ nhập thông tin các môn học: Tên môn học, Số tín chỉ, Điểm. 
 Dừng việc nhập khi tên sinh viên là dấu "$". 
Lưu trữ và quản lý thông tin sinh viên: 
 Sử dụng danh sách liên kết kép (doubly linked list) để lưu trữ thông tin sinh viên và  điểm các môn học. 
 Sắp xếp danh sách theo chiều tăng dần của điểm toán 
 Dữ liệu đầu vào: Danh sách sinh viên, mỗi sinh viên có danh sách các môn học và  điểm của họ. 
 Môn Toán: Mỗi sinh viên sẽ có một môn Toán trong danh sách các môn học của  mình. 
 Sắp xếp danh sách: Sử dụng thuật toán sắp xếp như sắp xếp nổi bọt (bubble sort), 
sắp xếp chọn (selection sort), sắp xếp chèn (insertion sort) hoặc sắp xếp nhanh 
(quick sort) để sắp xếp danh sách sinh viên theo điểm môn Toán. 
 Sắp xếp danh sách theo chiều tăng dần của điểm trung bình 
 Tính điểm trung bình: 
 Điểm trung bình của mỗi sinh viên được tính bằng cách lấy tổng điểm của bốn môn 
Toán, Vật lý, Tiếng anh, CTDL> chia cho 4.   Sắp xếp danh sách: 
 Sử dụng thuật toán sắp xếp để sắp xếp danh sách sinh viên theo điểm trung bình. 
 Tìm sinh viên có điểm trung bình Max/Min 
 Dựa vào điểm trung bình đã tính ở phần Sắp xếp danh sách theo chiều tăng dần của  điểm trung bình. 
 Tìm sinh viên có điểm trung bình cao nhất và thấp nhất: 
 Duyệt qua danh sách sinh viên, tính điểm trung bình của từng sinh viên và tìm ra sinh 
viên có điểm trung bình cao nhất và thấp nhất. 
 In ra môn học có điểm trung bình Max/Min 
 Tính điểm trung bình của mỗi môn học: 
Điểm trung bình của mỗi môn học được tính bằng cách lấy tổng điểm của tất cả các 
sinh viên trong môn học đó chia cho tổng số sinh viên đã tham gia môn học đó. 
 Tìm môn học có điểm trung bình cao nhất và thấp nhất: 
Duyệt qua tất cả các môn học của tất cả các sinh viên, tính điểm trung bình của mỗi 
môn học và tìm ra môn học có điểm trung bình cao nhất và thấp nhất.      lOMoAR cPSD| 60729183
1.2. Phân công công việc 
Bảng 2: Bảng phân công công việc  Công việc  Tên đầu  STT  chia đến nhỏ  Người thực hiện  Đánh giá  Kết luận  việc  nhất  Nhập, khởi    Viết hàm  1  tạo danh  Trần Long Vũ  80%  sách  nhập  Tạo danh    2  sách sinh  Phạm Minh Quang  92%  viên.    Câu trúc sinh  3  Phạm Minh Quang  84%  viên    4  Nhập điểm  Nguyễn Hồng Hoàng  90%    Sắp xếp  5  Sắp điểm  Nguyễn Hồng Hoàng  80%  thông tin    Hiển thị &  6  Trần Long Vũ  90%  xuất thông tin    7  Lên ý tưởng  Phạm Minh Quang  90%  Báo cáo  bài tập lớn    Trần Long Vũ  80%  8  Thực hiện  Nguyễn Hồng Hoàng  85%      lOMoAR cPSD| 60729183
CHƯƠNG 2. LƯU ĐỒ THUẬT TOÁN VÀ BỘ MẪU DỮ LIỆU 
2.1. Lưu đồ thuật toán 
2.1.1. Lưu đồ thuật toán thêm sinh viên   
Hình 2: Lưu đồ thuật toán thêm sinh viên      lOMoAR cPSD| 60729183
2.1.2. Lưu đồ thuật toán nhập thông tin của nhiều sinh viên   
Hình 2: Lưu đồ thuật toán nhập thông tin của nhiều sinh viên        lOMoAR cPSD| 60729183
2.1.3. Lưu đồ thuật toán hiển thị thông tin tất cả sinh viên   
Hình 3: Lưu đồ thuật toán nhập hiển thị thông tin tất cả sinh viên      lOMoAR cPSD| 60729183
2.1.4. Lưu đồ thuật toán sắp xếp sinh viên theo điểm môn toán   
Hình 4: Lưu đồ thuật toán sắp xếp sinh viên theo điểm môn toán      lOMoAR cPSD| 60729183
2.1.5. Lưu đồ thuật toán sắp xếp danh sách sinh viên theo điểm trung bình   
Hình 5: Lưu đồ thuật toán sắp xếp danh sách sinh viên theo điểm trung bình      lOMoAR cPSD| 60729183
2.1.6. Lưu đồ thuật toán tìm và trả về sinh viên có điểm trung bình Max/Min   
Hình 6: Lưu đồ thuật toán tìm và trả về sinh viên có điểm trung bình Max/Min      lOMoAR cPSD| 60729183
2.1.7. Lưu đồ thuật toán tìm và trả về môn học có điểm trung bình Max/Min   
Hình 7: Lưu đồ thuật toán tìm và trả về sinh viên có điểm trung bình Max/Min      lOMoAR cPSD| 60729183
2.1.8. Lưu đồ thuật toán chính của chương trình   
Hình 8: Lưu đồ thuật toán chính của chương trình 
 2.2. Bộ dữ liệu mẫu. 
Bảng 3: Bảng dữ liệu mẫu 
Bảng 2.1. Nhập danh sách tên, môn học      lOMoAR cPSD| 60729183 Họ Tên: Trần Long      Mã Sinh Viên: 20233 780  Môn học  Điểm  Mã môn học  Tín Chỉ  Toán  6  01  3  Vật Lý  7  02  3  Tiếng Anh  9  03  2  CTDL & GT  8  04  4  Điểm Trung Bình: 7.5      Tổng Tín Chỉ: 12 
Bảng 2.2. Sắp xếp danh sách theo chiều tăng dần của điểm Toán  Số tín  Mong muốn  Kết quả  Tính  Bộ  Điểm  Mã môn  chỉ  hiến thị  chương trình  đúng  1  7  01  3  7  01  3  7  01  3  Đúng  2  8  01  4  8  01  4  01  4  8  Sai 
Bảng 2.3. Sắp xếp danh sách theo chiều tăng dần điểm trung bình  Mong muốn hiển  Kết quả chương  Tính  Bộ  a  b  c  d  thị  trình  đúng  1  5  4  7  9  4,5,7,9  4,5,7,9  Đúng  2  3  4  6  7  3,4,6,7  3,6,7,4  Sai 
Bảng 2.4. Tìm sinh viên có điểm trung bình Max/Min  ĐTB  ĐTB  ĐTB  ĐTB  Mong Muốn hiển  Kết quả chương  Tính  Bộ  1  2  3  4  thị  trình  đúng  ĐTB 1, ĐTB 2,  ĐTB 1, ĐTB 2,  1  5  6  7  8  ĐTB 3  ĐTB 3  Đúng      lOMoAR cPSD| 60729183 ĐTN 2, ĐTB 6,  ĐTN 2, ĐTB 4,  2  4  5  6  5  Sai  ĐTB 4  ĐTB 6          lOMoAR cPSD| 60729183
CHƯƠNG 3. CÀI ĐẶT 
3.1. Module 1: Cấu trúc môn học, điểm, thông tin cho sinh viên, cấu trúc cho 
danh sách liên kết kép    /   /  C ấ u  t r ú c  c h o  m ô n  h ọ c  t y p e d e f  s t r u c t  {  c h a r  n a m e     lOMoAR cPSD| 60729183 [ 3 0 ] ;    i n t  c r e d i t s ;  }  S u b j e c t ;  / /  C ấ u  t r ú c  c h o  đ i ể & m  c