Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
2,36 MB
Nội dung
BỘ TÀI CHÍNH TRƯỜNG ĐẠI HỌC TÀI CHÍNH MARKETING KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN XÂY DỰNG CHỨC NĂNG TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC VÀ DANH SÁCH LIÊN KẾT THEO CHỦ ĐỀ ĐƯỢC CHỌN Giảng viên hướng dẫn: Thầy Nguyễn Quốc Thanh Sinh viên thực hiện: 2121012043_Nguyễn Khánh Vân Mã lớp học phần: 2121112001208 TP.HCM, ngày: tháng: năm 2022 0 TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING KHOA CƠNG NGHỆ THƠNG TIN NGUYỄN KHÁNH VÂN ĐỒ ÁN XÂY DỰNG CHỨC NĂNG TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC VÀ DANH SÁCH LIÊN KẾT THEO CHỦ ĐỀ ĐƯỢC CHỌN CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN QUẢN LÝ NGƯỜI HƯỚNG DẪN: THS.NGUYỄN QUỐC THANH TP.HCM, ngày: tháng: năm:2022 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân MỤC LỤC Table of Contents DANH MỤC BẢNG DANH MỤC HÌNH ẢNH .4 CHƯƠNG GIỚI THIỆU 1.1 Gi i thi u ệ đềề 1.2 Cấấu trúc 1.3 D liữ uệmấẫu (>=10 thông tn đôấi t ượ ng cấền xử lý) 1.4 Các ch ức ( li ệt kề ch ức sẽẫ xấy dựng) CHƯƠNG 2.1 Nh ập danh sách khách hàng Chương trình Kếết chạy 11 2.1.1 2.1.2 2.2 Xuấất danh sách khách hàng 11 Chương trình 11 Kếết chạy 12 2.2.1 2.2.2 2.3 Tìm thơng tn khách hàng thẽo mã khách hàng ( dùng Linẽar Sẽarch Binary Sẽarch) 13 Chương trình 13 Kếết chạy 14 Kếết chạy 16 2.3.1 2.3.2 2.3.3 2.4 Săấp xềấp danh sách khách hàng thẽo mã khách hàng: 16 Kếết qu ả ch aưsắếp xếếp: 16 Chương trình 16 Kết chạ y dùng Shaker Sort 18 Kếết chạ y dùng Selecton Sort 19 Kếết chạ y dùng Interchange Sort 21 Kếết chạ y dùng Bubble Sort 22 Kếết chạ y dùng Inserton Sort 23 Kếết chạ y dùng Quick Sort 25 Kếết chạ y dùng Merge Sort .28 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5 Đ ể ki ểm tra ch ương trình ta dùng hàm: 28 CHƯƠNG 3.1 3.1.1 3.2 TÌM KIẾẾM VÀ SẮẾP XẾẾP TRẾN M ẢNG CẤẾU TRÚC TÌM KIẾẾM VÀ SẮẾP XẾẾP TRẾN DANH SÁCH LIẾN KẾẾT 35 Định nghĩa phần tử danh sách 35 Chương trình 35 Định nghĩa danh sách 35 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 3.2.1 3.3 Chương trình 35 Khởi tạo danh sách .35 3.3.1 3.4 Chương trình 35 Tạo phần tử danh sách 36 3.4.1 3.5 Chương trình 36 Nhập danh sách khách hàng .36 3.5.1 3.5.2 3.6 Chương trình 36 kết chạy 37 Xuất danh sách khách hàng 38 3.6.1 3.6.2 3.7 Chương trình 38 Kết chạy 39 Đếm số khách hàng có danh sách 39 3.7.1 3.7.2 3.8 Chương trình 39 Kết chạy 40 Tìm kiếm thơng tin khách hàng có danh sách 40 3.8.1 3.8.2 3.9 Chương trình 40 kết chạy 41 xếp danh sách khách hàng theo mã khách hàng 41 3.9.1 3.9.2 3.9.3 chương trình 41 Danh sách chưa xếp: 42 Kết chạy dùng Selection Sort 43 3.9.4 Kết chạy dùng Interchange Sort 45 3.9.5 Kết chạy dùng Bubble Sort 47 3.9.6 Kết chạy dùng Insertion Sort 49 3.9.7 3.10 Kết chạy dùng Quick Sort .51 Kiểm tra chương trình 51 3.10.1 3.10.2 CHƯƠNG Để kiểm tra chương trình ta sử dụng hàm: .51 kết chạy 55 KẾT LUẬN 56 4.1 Các chức làm 56 4.2 Các chức chưa làm 56 CHƯƠNG TÀI LIỆU THAM KHẢO 58 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân DANH MỤC BẢNG Bkng 1.1 bkng thông tin khách hàng 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân DANH MỤC HÌNH ẢNH Hình 2.1: Hình ảnh kết chạy chương trình nhập danh sách khách hàng 11 Hình 2.2: Hình ảnh kết chạy chương trình xuất danh sách khách hàng 12 Hình 2.3: Hình ảnh kết chạy chương trình linear search theo mã khách hàng 14 Hình 2.4: hình ảnh kết chạy chương trình binary search theo mã khách hàng 16 Hình 2.5: Hình ảnh danh sách khách hàng chưa xếp 16 Hình 2.6: Hình ảnh danh sách khách hàng sau xếp ( dùng shaker sort ) theo mã khách hàng .18 Hình 2.7: Hình ảnh danh sách khách hàng sau xếp ( dùng Selection Sort ) theo mã khách hàng 19 Hình 2.8: Hình ảnh danh sách khách hàng sau xếp ( dùng Interchange Sort ) theo mã khách hàng 21 Hình 2.9: Hình ảnh danh sách khách hàng sau xếp ( dùng Bubble Sort ) theo mã khách hàng 22 Hình 2.10: Hình ảnh danh sách khách hàng sau xếp ( dùng Insertion Sort ) theo mã khách hàng 23 Hình 2.11: Hình ảnh danh sách khách hàng sau xếp ( dùng QuickSort Sort ) theo mã khách hàng 25 Hình 2.12: Hình ảnh danh sách khách hàng sau xếp ( dùng Merge Sort ) theo mã khách hàng 28 Hình 2.13: Hình ảnh kết chạy liệt kê chức chương trình kiểm tra 34 Hình 3.1: Hình ảnh kết chạy hàm nhập danh sách khách hàng 38 Hình 3.2: HÌnh ảnh kết chạy xuất danh sách khách hàng 39 Hình 3.3: Hình ảnh kết chạy đếm số khách hàng có danh sách 40 Hình 3.4: hình ảnh kết chạy chức tìm kiếm khách hàng theo mã khách hàng 41 Hình 3.5: Hình ảnh danh sách khách hàng chưa xếp 42 Hình 3.6: Hình ảnh danh sách khách hàng sau xếp ( dùng selection sort ) 43 Hình 3.7: Hình ảnh danh sách khách hàng sau xếp (dùng Interchange sort ) 45 Hình 3.8: Hình ảnh danh sách khách hàng sau xếp ( dùng Bubble sort ) 47 Hình 3.9: Hình ảnh danh sách khách hàng sau xếp(dùng Insertion sort ) 49 Hình 3.10: Hình ảnh danh sách khách hàng sau xếp ( dùng quick sort ) .51 Hình 3.11: Hình ảnh kết chạy liệt kê chức chương trình kiểm tra 55 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân CHƯƠNG GIỚI THIỆU 1.1 Giới thiệu đề Xây dựng chức tìm kiếm xếp cấu trúc danh sách liên kết hỗ trợ quản lý thông tin khách hàng thân thiết bao gồm: Mã khách hàng(MaKH), Họ (Ho), Tên (Ten), Năm (Nam), Điểm tích luỹ có (Diem), Doanh số mua hàng (Doanhso) 1.2 Cấu trúc Thông tin khách hàng cần quản lý gồm: MaKH: Mã khách hàng, gồm chuỗi ký tự số có chiều dài ký tự Ho: Họ tên chữ lót, định quản lý tên tiếng Việt với chiều dài chữ khoảng ký tự Ten: Tên, gồm chữ Việt với chiều dài tối đa khoảng ký tự Nam: Năm, gồm chuỗi ký tự số có chiều dài ký tự Diem: Điểm tích luỹ có, ghi nhận điểm tích luỹ khách hàng Doanhso: Doanh số mua hàng, ghi nhận doanh số mua hàng khách hàng Tính theo đơn vị Việt Nam đồng( ngàn đồng ) Cấu trúc liệu hỗ trợ quản lý thông tin khách hàng: MaKH: chuỗi gồm ký tự số Ho: chuỗi tối đa 30 ký tự Ten: Chuỗi tối đa ký tự Nam: chuỗi gồm ký tự số Diem: số nguyên không âm (Diem>=0) Doanhso: số thực dương ( ngàn đồng ) Định nghĩa cấu trúc khách hàng: 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân struct KhachHang { char MaKH[5]; char Ho[30]; char Ten[8]; char Nam[5]; int Diem; float Doanhso; }kh; 1.3 Dữ liệu mẫu (>=10 thông tin đối tượng cần xử lý) Bảng 1.1 bảng thông tin khách hàng STT MaKH Họ đệm Tên Năm Điểm Doanh số 2101 Le Tran Thuy 2019 15 8000(đ) 2104 Nguyen Binh An 2018 17 15000(đ) 2205 Tran Thi Chau 2021 14 6000(đ) 1999 Cao Thanh Than 2022 16 11000(đ) h 2108 Nguyễn Quỳnh Như 2021 19 12500(đ) 2213 Lâm thị Hà 2017 17 13450(đ) 2097 Đoàn Như Trúc 2018 18 20000(đ) 1978 Vũ Khánh Linh 2019 20 17000(đ) 2053 Hồ Hoàng Mai 2022 14 13000(đ) 10 2212 Nguyễn Văn Sơn 2017 16 15672(đ) 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 1.4 Các chức ( liệt kê chức xây dựng) Các chức mkng cấu trúc Nhập danh sách khách hàng Xuất danh sách khách hàng Tìm thơng tin khách hàng theo mã khách hàng ( dùng Linear Search Binary Search) Sắp xếp danh sách theo mã khách hàng ( dùng Shaker Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Selection Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Interchange Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Bubble Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Insertion Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Quick Sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Merge Sort ) Các chức mkng dslk Nhập danh sách khách hàng Xuất danh sách khách hàng Đếm số khách hàng có danh sách Tìm thơng tin khách hàng Sắp xếp thông tin khách hàng ( dùng Selection Sort ) Sắp xếp thông tin khách hàng ( dùng Quick Sort ) 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân Sắp xếp danh sách theo mã khách hàng ( dùng Interchange Sort ): // ctc sap xep danh sach theo ma khach hang dung interchangesort void InterchangeSortList(danhsachkh *khlist) { khnodetype* p, *q; //con trỏ p duyệt qua DSLK //Con trỏ q phối hợp tìm nghịch p p = khlist->head; while (p != khlist->tail) { q = p->next; while (q != NULL) { //gặp nghịch p q hốn vị if (strcmp(q->infor->MaKH, p->infor->MaKH) < 0) swap(q->infor, p->infor); q = q->next; } p = p->next; } } 44 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 3.9.4 Kết quk chạy dùng Interchange Sort H2nh 3.20: H2nh ảnh danh sách khách hàng sau xếp (dùng Interchange sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Bubble Sort ): // ctc sap xep danh sach theo ma khach hang dung bubblesort void BubbleSortList(danhsachkh* khlist) { khnodetype* p1, *p2, *q1, *q2; p1 = khlist->head; p2 = khlist->tail; while (p1 != p2) { 45 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân q1 = p1; q2 = q1->next; while (q2 != NULL) { if (strcmp(q1->infor->MaKH , q2->infor->MaKH)>0) swap(q1->infor, q2->infor); if (q2 != p2) { q1 = q1->next; q2 = q2->next; } else q2 = NULL; } p2 = q1; } } 46 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 3.9.5 Kết quk chạy dùng Bubble Sort H2nh 3.21: H2nh ảnh danh sách khách hàng sau xếp ( dùng Bubble sort ) Sắp xếp danh sách theo mã khách hàng ( dùng Insertion Sort ): Để xếp danh sách khách hàng, cần xây dựng chương trình gồm: void InsertSortkh(danhsachkh* khlist, khnodetype* n) void InsertionSortList(danhsachkh* khlist) void InsertSortkh(danhsachkh* khlist, khnodetype* n) { khnodetype* p; p = khlist->head; //ktra danh sách rỗng phải chèn đầu 47 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân if (p == NULL || strcmp((p->infor->MaKH) , (n->infor->MaKH))>0) addfirst(khlist, n); else { //dị vị trí chèn while (p->next != NULL && strcmp(p->next->infor->MaKH , n->infor>MaKH)next; //chèn n->next = p->next; p->next = n; } } // ctc sap xep danh sach theo ma khach hang dung insertionsort void InsertionSortList(danhsachkh* khlist) { danhsachkh* c; c = new danhsachkh; init_list(c); khnodetype * p, *q; p = khlist->head; 48 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân while (p != NULL) { //Tro q giu phan DSLK sau truoc diaw phan tu dau vao res q = p->next; p->next = NULL; InsertSortkh(c, p); p = q; } khlist->head = c->head; khlist->tail = c->tail; } 3.9.6 Kết quk chạy dùng Insertion Sort H2nh 3.22: H2nh ảnh danh sách khách hàng sau xếp(dùng Insertion sort ) 49 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân Sắp xếp danh sách theo mã khách hàng ( dùng QuickSort Sort ): // ctc sap xep danh sach khach hang dung quicksort void QuickSort(danhsachkh *khlist) { khnodetype *p, *x; danhsachkh *l1, *l2; if (khlist->head!=khlist->tail) { l1 = new danhsachkh; l1->head=NULL;l1->tail=NULL; l2 = new danhsachkh; l2->head=NULL;l2->tail=NULL; x = khlist->head; khlist->head = x->next; //tach list l1 va l2 while (khlist->head != NULL) { p = khlist->head; khlist->head = p->next; p->next = NULL; if (strcmp(p->infor->MaKH, x->infor->MaKH) head!=NULL) { khlist->head = l1->head; l1->tail->next = x; } else khlist->head = x; x -> next = l2->head; if (l2 ->head != NULL) 50 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân { khlist->tail = l2->tail; } else { khlist->tail = x; } } } 3.9.7 Kết quk chạy dùng Quick Sort H2nh 3.23: H2nh ảnh danh sách khách hàng sau xếp ( dùng quick sort ) 3.10 Kiểm tra chương trình 3.10.1 Để kiểm tra chương trình ta sử dụng hàm: int menu(): liệt kê chức có chương trình int main(): chương trình dùng để kiểm tra chương trình 51 0 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân int menu() { int c; cout