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
803,54 KB
Nội dung
lOMoARcPSD|16911414 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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân DANH MỤC BẢNG Bảng 1.1 bảng thông tin khách hàng Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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: Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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(đ) Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 mảng 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 mảng 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 ) Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 3.9.4 Kết quả chạy dùng Interchange Sort Hình 3.20: Hình ả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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân 3.9.5 Kết quả chạy dùng Bubble Sort Hình 3.21: Hình ả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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 quả chạy dùng Insertion Sort Hình 3.22: Hình ảnh danh sách khách hàng sau xếp(dùng Insertion sort ) 49 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ á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 quả chạy dùng Quick Sort Hình 3.23: Hình ả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 Downloaded by Nguynhavy Ha Vy (Ntkphuong205@gmail.com) lOMoARcPSD|16911414 Đồ án Cấu Trúc Dữ Liệu Giải Thuật_Nguyễn Khánh Vân int menu() { int c; cout