Nhập vào một danh s!ch liên kết đơn gồm n sinh viên n bất kỳ gồm c!c thông tin sau: Mã Sinh viên kiểu số nguyên, tên Sinh viên kiểu chuỗi ký tự, lớp kiểu chuỗi ký tự, điểm cuối kỳ kiểu s
Trang 1TRƯNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
BỘ MÔN CÔNG NGHỆ THÔNG TIN
BÁO CÁO CUỐI KỲ
Đa Nng – Th!ng 12/2024
GVHD: NGUYỄN THỊ THÙY TRANG Sinh viên: Nguyễn Thị Vy Hậu
Mã sinh viên: 23115053122311 Lớp học phần: 124TCSDL (T4_3_4)
Trang 2MỤC LỤC
BÀI BÁO CÁO CUỐI KỲ 1
Bài 1 : Viết chương trình sử dụng cấu trúc danh sách liên kết đơn: 1
1 Nhập vào một danh s!ch liên kết đơn gồm n sinh viên (n bất kỳ) gồm c!c thông tin sau: Mã Sinh viên (kiểu số nguyên), tên Sinh viên (kiểu chuỗi ký tự), lớp (kiểu chuỗi ký tự), điểm cuối kỳ (kiểu số thực), hạnh kiểm (Tốt, kh!, trung bình, yếu) 1
2 Hiển thị danh s!ch đã nhập ra màn hình dưới dạng cột 2
3 Liệt kê ra màn hình danh s!ch tất cả những Sinh viên thuộc lớp “23T3” 3
4 Scp sếp danh s!ch sinh viên theo điểm cuối kỳ tăng dần 4
5 Xóa sinh viên đầu khỏi danh s!ch 5
6 Hiển thị lại danh s!ch c!c sinh viên có hạnh kiểm yếu 6
7 Xóa toàn bộ danh s!ch 7
Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort áp dụng cho mảng các số nguyên được nhập từ bàn phím 7
1 Kết quả chạy thuật to!n Shell sort 10
2 Kết quả chạy thuật to!n Heap sort 11
3 Kết quả chạy thuật to!n Heap sort 11
Bài 3: Viết lại chương trình ở bài 1 với dữ liệu của mảng được nhập từ file t ext input.txt, xuất dữ liệu đã sắp xếp ra 1 file text output.txt 12
1 Đọc dữ liệu từ file input.txt 18
2 Scp xếp dữ liệu và ghi lại vào file output.txt 19
Trang 3BÀI BÁO CÁO CUỐI KỲ
Bài 1 Viết chương trình sử dụng cấu trúc danh sách liên kết đơn: :
Trang 4printf(" -\n");NUT *tam=H;
while (tam != NULL) {
NUT *min = tam;
NUT *nutKT = tam->tiep;
while (nutKT != NULL) {
Trang 5}
printf("===========================================\n");}
while(tam!=NULL)
{
if(strcmp(tam->sv.HanhKiem,"Yeu")==0)printf("%12d | %13s | %s | %.1f | %s\n",tam->sv.MaSV,tam-
>sv.TenSV,tam->sv.Lop,tam->sv.DCK,tam->sv.HanhKiem);tam=tam->tiep;
}
Trang 6printf("1 Tao danh sach lien ket\n");
printf("2 In danh sach sinh vien\n");
printf("3 Liet ke cac sinh vien lop 23T3\n");
printf("4 Sap xep ds sinh vien theo diem tang dan\n");
printf("5 Xoa sinh vien dau khoi ds\n");
printf("6 Hien thi ds sinh vien hanh kiem yeu\n");
printf("7 Xoa toan bo danh sach\n");
printf("8 Thoat chuong trinh\n");
H=H->tiep;
printf("Da xoa sinh vien dau ra khoi danh sach\n");
}break;
Trang 72 Hiển thị danh sách đã nhập ra màn hình dưới dạng cột.
Trang 83 Liệt kê ra màn hình danh sách tất cả những Sinh viên thuộc lớp “23T3”.
4 Sắp sếp danh sách sinh viên theo điểm cuối kỳ tăng d_n
Trang 95 Xóa sinh viên đ_u khỏi danh sách.
6 Hiển thị lại danh sách các sinh viên có hạnh kiểm yếu.
\
7 Xóa toàn bộ danh sách.
Trang 10Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort áp dụng cho mảng các số nguyên được nhập từ bàn phím.
Trang 12printf("1 Tao danh sach\n");
printf("2 In danh sach\n");
printf("3 Thuat toan sap xep chen (Shell sort)\n");
printf("4 Thuat toan sap xep vun dong (Heap sort)\n");
printf("5 Thuat toan sap xep tron (Merge sort)\n");
printf("6 Thoat chuong trinh\n");
Trang 131 Kết quả chạy thuật toán Shell sort
2. Kết quả chạy thuật toán Heap sort
Trang 143 Kết quả chạy thuật toán Heap sort
Bài 3: Viết lại chương trình ở bài 1 với dữ liệu của mảng được nhập từ file t ext input.txt, xuất dữ liệu đã sắp xếp ra 1 file text output.txt.
NUT *p = new NUT;
Trang 15printf(" -\n"); NUT *tam = H;
while (tam != NULL) {
printf("| %12d | %13s | %4s | %4.1f | %10s |\n",tam->sv.MaSV, tam->sv.TenSV, tam->sv.Lop, tam->sv.DCK, tam->sv.HanhKiem);
tam=tam->tiep;
}
printf("==========================================================\n");}
void HOANVI(SinhVien &a, SinhVien &b){
SinhVien tg;
tg=a;
a=b;
b=tg;
Trang 16NUT *SX(NUT* H) {
if (H != NULL && H->tiep != NULL){
while (tam != NULL) {
NUT *min = tam;
NUT *nutKT = tam->tiep;
while (nutKT != NULL) {
Trang 17printf(" -\n");
NUT *tam=H;
while(tam!=NULL){
if(strcmp(tam->sv.Lop,"23T3")==0)printf("%12d | %13s | %s | %.1f | %s\n",tam->sv.MaSV,tam-
>sv.TenSV,tam->sv.Lop,tam->sv.DCK,tam->sv.HanhKiem);tam=tam->tiep;
}
printf("=========================================================\n");}
Trang 18printf("Danh sach rong");
>sv.TenSV,tam->sv.Lop,tam->sv.DCK,tam->sv.HanhKiem);tam=tam->tiep;
}
printf("==============================================\n");}
else
printf("Khong co sinh vien hanh kiem yeu\n");
}
NUT *DocFile( NUT *H) {
FILE *file = fopen("C:\\Users\\WINDOWS\\Documents\\NTVH\\input.txt", "r");
Trang 19}
NUT *tam = H;
while (tam != NULL) {
SinhVien sv = tam->sv;
// Ghi thông tin sinh viên vào file
fprintf(file, "%5d %s %s %.2f %s\n", sv.MaSV, sv.TenSV, sv.Lop, sv.DCK, sv.HanhKiem); tam = tam->tiep;
printf("1 Doc du lieu tu file INPUT\n");
printf("2 Ghi du lieu vao file OUTPUT\n");
printf("3 In danh sach sinh vien\n");
printf("4 Liet ke cac sinh vien lop 23T3\n");
printf("5 Hien thi ds sinh vien hanh kiem yeu\n");
printf("6 Sap xep danh sach theo diem cuoi ky tang dan\n");
printf("7 Xoa sinh vien dau khoi ds\n");
printf("8 Xoa toan bo danh sach\n");
printf("9 Thoat chuong trinh\n");
Trang 211 Đọc dữ liệu từ file input.txt
*Dữ liệu trong file input.txt
Trang 222 Sắp xếp dữ liệu và ghi lại vào file output.txt
*Kết quả trong file output.txt