1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ á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

60 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Á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
Tác giả Nguyễn Khánh Vân
Người hướng dẫn ThS. Nguyễn Quốc Thanh
Trường học Trường Đại Học Tài Chính - Marketing
Chuyên ngành Hệ Thống Thông Tin Quản Lý
Thể loại Đồ án
Năm xuất bản 2022
Thành phố TP.HCM
Định dạng
Số trang 60
Dung lượng 2,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DANH MỤC HÌNH ẢNHHình 2.1: Hình ảnh kết quả chạy của chương trình con nhập danh sách khách hàng...11 Hình 2.2: Hình ảnh kết quả chạy của chương trình con xuất danh sách khách hàng...12 H

Trang 1

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

Trang 2

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

Trang 3

MỤC LỤC

Table of Contents

DANH M C B NG Ụ Ả 3

DANH M C HÌNH NH Ụ Ả 4

CH ƯƠ NG 1 GI I THI U Ớ Ệ 6

1.1 Gi i thi u đềề bài ớ ệ 6

1.2 Cấấu trúc 6

1.3 D li u mấẫu (>=10 thông tn đôấi t ữ ệ ượ ng cấền x lý) ử 7

1.4 Các ch c năng ( li t kề ch c năng sẽẫ xấy d ng) ứ ệ ứ ự 8

CH ƯƠ NG 2 TÌM KIẾẾM VÀ SẮẾP XẾẾP TRẾN M NG CẤẾU TRÚC Ả 9

2.1 Nh p danh sách khách hàng ậ 9

2.1.1 Ch ươ ng trình con 9

2.1.2 Kếết qu ch y ả ạ 11

2.2 Xuấất danh sách khách hàng 11

2.2.1 Ch ươ ng trình con 11

2.2.2 Kếết qu ch y ả ạ 12

2.3 Tìm thông tn khách hàng thẽo mã khách hàng ( dùng Linẽar Sẽarch và Binary Sẽarch) 13 2.3.1 Ch ươ ng trình con 13

2.3.2 Kếết qu ch y ả ạ 14

2.3.3 Kếết qu ch y ả ạ 16

2.4 Săấp xềấp danh sách khách hàng thẽo mã khách hàng: 16

2.4.1 Kếết qu khi ch a sắếp xếếp: ả ư 16

2.4.2 Ch ươ ng trình con 16

2.4.3 Kết qu ch y dùng Shaker Sort ả ạ 18

2.4.4 Kếết qu ch y dùng Selecton Sort ả ạ 19

2.4.5 Kếết qu ch y dùng Interchange Sort ả ạ 21

2.4.6 Kếết qu ch y dùng Bubble Sort ả ạ 22

2.4.7 Kếết qu ch y dùng Inserton Sort ả ạ 23

2.4.8 Kếết qu ch y dùng Quick Sort ả ạ 25

2.4.9 Kếết qu ch y dùng Merge Sort ả ạ 28

2.5 Đ ki m tra các ch ể ể ươ ng trình con ta dùng 2 hàm: 28

CH ƯƠ NG 3 TÌM KIẾẾM VÀ SẮẾP XẾẾP TRẾN DANH SÁCH LIẾN KẾẾT 35

3.1 Định nghĩa phần tử danh sách 35

3.1.1 Chương trình con 35

3.2 Định nghĩa danh sách 35

Trang 4

3.2.1 Chương trình con 35

3.3 Khởi tạo danh sách 35

3.3.1 Chương trình con 35

3.4 Tạo phần tử danh sách 36

3.4.1 Chương trình con 36

3.5 Nhập danh sách khách hàng 36

3.5.1 Chương trình con 36

3.5.2 kết quả chạy 37

3.6 Xuất danh sách khách hàng 38

3.6.1 Chương trình con 38

3.6.2 Kết quả chạy 39

3.7 Đếm số khách hàng có trong danh sách 39

3.7.1 Chương trình con 39

3.7.2 Kết quả chạy 40

3.8 Tìm kiếm thông tin khách hàng có trong danh sách 40

3.8.1 Chương trình con 40

3.8.2 kết quả chạy 41

3.9 sắp xếp danh sách khách hàng theo mã khách hàng 41

3.9.1 chương trình con 41

3.9.2 Danh sách khi chưa sắp xếp: 42

3.9.3 Kết quả chạy dùng Selection Sort 43

3.9.4 Kết quả chạy dùng Interchange Sort 45

3.9.5 Kết quả chạy dùng Bubble Sort 47

3.9.6 Kết quả chạy dùng Insertion Sort 49

3.9.7 Kết quả chạy dùng Quick Sort 51

3.10 Kiểm tra chương trình con 51

3.10.1 Để kiểm tra các chương trình con ta sử dụng 2 hàm: 51

3.10.2 kết quả chạy 55

CHƯƠNG 4 KẾT LUẬN 56

4.1 Các chức năng đã làm được 56

4.2 Các chức năng chưa làm được 56

CH ƯƠ NG 5 TÀI LI U THAM KH O Ệ Ả 58

Trang 5

DANH MỤC BẢNG

Bkng 1.1 bkng thông tin khách hàng 5

Trang 6

DANH MỤC HÌNH ẢNH

Hình 2.1: Hình ảnh kết quả chạy của chương trình con nhập danh sách khách hàng 11

Hình 2.2: Hình ảnh kết quả chạy của chương trình con xuất danh sách khách hàng 12

Hình 2.3: Hình ảnh kết quả chạy của chương trình con linear search theo mã khách hàng 14

Hình 2.4: hình ảnh kết quả chạy của chương trình con binary search theo mã khách hàng 16

Hình 2.5: Hình ảnh danh sách khách hàng khi chưa được sắp xếp 16

Hình 2.6: Hình ảnh danh sách khách hàng sau khi sắp 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 khi sắp 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 khi sắp 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 khi sắp 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 khi sắp 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 khi sắp 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 khi sắp xếp ( dùng Merge Sort ) theo mã khách hàng 28

Hình 2.13: Hình ảnh kết quả chạy liệt kê các chức năng trong chương trình và kiểm tra 34

Hình 3.1: Hình ảnh kết quả chạy hàm nhập danh sách khách hàng 38

Hình 3.2: HÌnh ảnh kết quả chạy xuất danh sách khách hàng 39

Hình 3.3: Hình ảnh kết quả chạy đếm số khách hàng có trong danh sách là 40

Hình 3.4: hình ảnh kết quả chạy chức năng 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 khi chưa sắp xếp 42

Hình 3.6: Hình ảnh danh sách khách hàng sau khi sắp xếp ( dùng selection sort ) 43

Hình 3.7 Hình ảnh danh sách khách hàng sau khi sắp xếp (dùng Interchange sort ).: 45

Hình 3.8: Hình ảnh danh sách khách hàng sau khi sắp xếp ( dùng Bubble sort ) 47

Hình 3.9 Hình ảnh danh sách khách hàng sau khi sắp xếp(dùng Insertion sort ).: .49

Hình 3.10: Hình ảnh danh sách khách hàng sau khi sắp xếp ( dùng quick sort ) 51

Hình 3.11: Hình ảnh kết quả chạy liệt kê các chức năng trong chương trình và kiểm tra 55

Trang 8

CHƯƠNG 1 GIỚI THIỆU

1.1 Giới thiệu đề bài

Xây dựng chức năng tìm kiếm và sắp xếp trên các cấu trúc và 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ỹ đang 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 1 chuỗi ký tự số có chiều dài 4 ký tự

Ho: Họ và tên chữ lót, chỉ định quản lý các tên tiếng Việt với chiều dài mỗi chữ khoảng

7 ký tự

Ten: Tên, chỉ gồm 1 chữ Việt với chiều dài tối đa khoảng 7 ký tự

Nam: Năm, gồm 1 chuỗi ký tự số có chiều dài 4 ký tự

Diem: Điểm tích luỹ đang có, ghi nhận điểm tích luỹ của các khách hàng

Doanhso: Doanh số mua hàng, ghi nhận doanh số mua hàng của khách hàng Tính theo đơn vị Việt Nam đồng( ngàn đồng )

Cấu trúc dữ liệu hỗ trợ quản lý thông tin khách hàng:

MaKH: chuỗi gồm 4 ký tự số

Ho: chuỗi tối đa 30 ký tự

Ten: Chuỗi tối đa 8 ký tự

Nam: chuỗi gồm 4 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:

Trang 10

1.4 Các chức năng ( liệt kê chức năng sẽ xây dựng)

 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 )

 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 )

Trang 11

CHƯƠNG 2 TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG

CẤU TRÚC

2.1 Nhập danh sách khách hàng

2.1.1 Chương trình con

Để nhập danh sách khách hàng, cần xây dựng hai chương trình con gồm:

void nhapKH(KhachHang &kh): hỗ trợ nhập thông tin 1 khách hàng gồm

mã khách hàng, họ, tên, năm quản lý, điểm tích luỹ, doanh số

void nhapdsKH( KhachHang a[], int &n): hỗ trợ nhập danh sách khách hàng

Trang 13

Để xuất danh sách khách hàng, cần xây dựng hai chương trình con gồm:

void xuatKH(KhachHang kh): hỗ trợ xuất thông tin 1 khách hàng gồm mã

khách hàng, họ, tên, năm quản lý, điểm tích luỹ, doanh số

void xuatdsKH(KhachHang a[], int n): hỗ trợ xuất danh sách khách hàng.//ctc xuất ô cấu trúc

void xuatKH(KhachHang kh)

{

cout << "\t" << kh.MaKH;

Trang 14

2.2.2 Kết quk chạy

H2nh 2.2: H2nh ảnh kết quả chạy của chương tr2nh con xuất danh sách khách hàng

Trang 15

2.3 Tìm thông tin khách hàng theo mã khách hàng ( dùng Linear Search và Binary Search)

2.3.1 Chương trình con

Để tìm thông tin khách hàng theo mã khách hàng, có thể dùng 2 cách Linear Search và Binary Search:

int linearSearch(KhachHang a[], int n, char x[]): tìm kiếm tuyến tính

Int BinarySearch(KhachHang a[], int n, char x[]): tìm kiếm nhị phân

T2m thông tin khách hàng theo mã khách hàng bằng Linear Search:

//ctc tìm thông tin khách hàng theo mã khách hàng

int linearSearch(KhachHang a[], int n, char x[])

Trang 16

// ham tim kiem ma khach hang dung binarysearch

int BinarySearch(KhachHang a[], int n, char x[])

{

int left=0;// gan left bang vi tri dau

int right =n-1;// gan right bang vi tri cuoi

int mid=(left+right)/2;

// vi tri giua bang trung binh cong cua left va right

ShakerSort(a, n);

// sap xep lai ma khach hang tu thap den cao

while (left<=right && strcmp(a[mid].MaKH, x)!=0)

// lap neu left<=right va ma khach hang tai vi tri giua khac ma khach hang can tim

Trang 17

cout<<" khong ton tai khach hang nay!!! ";

return -1;// tra ve gia tri -1

Trang 18

return 0;// tra ve gia tri 0

2.4.1 Kết quk khi chưa sắp xếp:

H2nh 2.5: H2nh ảnh danh sách khách hàng khi chưa được sắp xếp.

2.4.2 Chương trình con

Để sắp xếp danh sách khách hàng theo mã khách hàng, có thể dùng:

+ Shaker Sort: void ShakerSort(KhachHang a[], int n)

+ Selection Sort: void SelectionSort(KhachHang a[], int n)

+ Interchange Sort: void InterchangeSort(KhachHang a[], int n)

+ Bubble Sort: void BubbleSort(KhachHang a[], int n)

Trang 19

+ Insertion Sort: void InsertionSort(KhachHang a[],int n)

+ QuickSort Sort: void QuickSort(KhachHang a[], int left, int right)

+ Merge Sort: void mergesort (KhachHang a[], int n)

Sắp xếp danh sách theo mã khách hàng ( dùng Shaker Sort ):

// ctc sap xep danh sach theo ma khach hang dùng ShakerSort

void ShakerSort(KhachHang a[], int n)

{

int first=0;// gán first bằng phan tu đầu tiên

int last =n-1;// gán last bằng phan tu cuối cùng

int k=n-1; // số k gán bằng với khách hàng cuối cùng

while(first<last)// lặp lại nếu first < last

k=i;// dua so k ve vi tri i

}first=k;// vi tri first luc nay duoc gan bang k

Trang 20

for int( j=first; j<last;j++)

// lap j di tu first den last

2.4.3 Kêt quk chạy dùng Shaker Sort

H2nh 2.6: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng shaker sort ) theo

mã khách hàng

Sắp xếp danh sách theo mã khách hàng ( dùng Selection Sort ):

// ctc sap xep danh sach khach hang theo ma khach hang dung selectionsort

Trang 21

void SelectionSort(KhachHang a[], int n)

{

int min;

for int ( i = 0; i < n - 1; i++)

{

min = i;// gan min bang i

for int ( j = i + 1; j < n; j++)// lap tu vi tri i+1 den cuoi danh sach

(strcmp(a[j].MaKH , a[min].MaKH)<0)// neu ma khach hang o vi tri j nho if

hon ma khach hang o vi tri min

min = j;// gan min=j de tim ma khach hang nho nhat co trong danh sach hoanvi(a[i], a[min]);// doi cho 2 khach hang

}

}

Trang 22

2.4.4 Kết quk chạy dùng Selection Sort

H2nh 2.7: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng Selection Sort ) theo mã khách hàng

Sắp xếp danh sách theo mã khách hàng ( dùng Interchange Sort ):

// ctc sap xep danh sach khach hang theo ma khach hang

void InterchangeSort(KhachHang a[], int n)

Trang 23

}

}

}

2.4.5 Kết quk chạy dùng Interchange Sort

H2nh 2.8: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng Interchange Sort ) theo mã khách hàng.

Sắp xếp danh sách theo mã khách hàng ( dùng Bubble Sort ):

// sap xep danh sach khach hang theo ma khach hang dung bubblesort

void BubbleSort(KhachHang a[], int n)

Trang 24

// neu ma khach hang tai vi tri j> ma khach hang tai vi tri j+1

2.4.6 Kết quk chạy dùng Bubble Sort

H2nh 2.9: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng Bubble Sort ) theo mã khách hàng.

Sắp xếp danh sách theo mã khách hàng ( dùng Insertion Sort ):

//sap xep danh sach khach hang theo ma khach hang dung insertionsort

void InsertionSort(KhachHang a[],int n)

{

KhachHang x;

for int ( i = 1; i < n; i++)// lap tu vi tri i=1

Trang 25

{

// gan x bang khach hang thu i

int pos = i - 1;// gan pos bang vi tri i-1

while (pos >= 0 && strcmp(x.MaKH,a[pos].MaKH)<0)

// lap lai neu pos >=0 va ma khach hang tai vi tri pos > x

{

a[pos+1] = a[pos];

pos ;// doi vi tri cua pos

} a[pos+1]=x;// gan x = khach hang tai vi tri pos+1

}

2.4.7 Kết quk chạy dùng Insertion Sort

H2nh 2.10: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng Insertion Sort ) theo mã khách hàng.

Sắp xếp danh sách theo mã khách hàng ( dùng QuickSort Sort ):

void QuickSort(KhachHang a[], int left, int right)

{

Trang 27

2.4.8 Kết quk chạy dùng Quick Sort

H2nh 2.11: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng QuickSort Sort ) theo mã khách hàng.

Sắp xếp danh sách theo mã khách hàng ( dùng Merge Sort )

Để sắp xếp danh sách khách hàng, cần xây dựng 3 chương trình con gồm:

void distribute(KhachHang a[], int n, int &nb, int &nc,int k): phân phối đều luân phiên các dãy con độ dài k từ mảng a vào 2 mảng con b và c

void merge(KhachHang a[], int nb, int nc, int k): trộn mảng b và c vào mảng a

void mergesort (KhachHang a[], int n): sắp xếp mảng tăng dần

Trang 28

for (i=0; (pa<n)&&(i<k); i++,pa++,pb++) {

Trang 29

for (; ic<kc; ic++)

Trang 30

2.4.9 Kết quk chạy dùng Merge Sort

H2nh 2.12: H2nh ảnh danh sách khách hàng sau khi sắp xếp ( dùng Merge Sort ) theo mã khách hàng.

Trang 31

2.5 Để kiểm tra các chương trình con ta dùng 2 hàm:

int menu(): liệt kê các thao tác được dùng trong chương trình.

int main(): hàm kiểm tra các chương trình con (là chương trình chính)

//ctc xay dung menu

Trang 32

KhachHang a[Max]; int n = 0;char x[5];int tam ;

cout<<" nhap so luong khach hang : ";

Trang 35

cout<<" \nkhong co chuc nang nay!";

cout<<"\n hay chon chuc nang trong hop menu.";

Trang 36

H2nh 2.13: H2nh ảnh kết quả chạy liệt kê các chức năng trong chương tr2nh và kiểm tra.

Trang 37

CHƯƠNG 3 TÌM KIẾM VÀ SẮP XẾP TRÊN DANH

tử của danh sách đơn là 1 cấu trúc chứa 2 thông tin:

 Thành phần dữ liệu: lưu trữ các thông tin về bản thân phần tử

 Thành phần mối liên kết: lưu trữ địa chỉ của phần tử kế tiếp trong danh sách, hoặc lưu trữ giá trị NULL nếu là phần tử cuối danh sách

// ctc dinh nghia phan tu danh sach

Các phần tử trong danh sách sẽ được cấp phát động Biết phần tử đầu tiên

ta sẽ truy xuất được các phần tử tiếp theo

 Sử dụng con trỏ Head để lưu trữ địa chỉ đầu tiên của danh sách

 Để quản lý địa chỉ cuối cùng trong danh sách ta dùng con trỏ Tail.// ctc dinh nghia danh sach

//ctc khoi tao danh sach

void init_list(danhsachkh *khlist)

{

Trang 38

Để nhập danh sách khách hàng ta sử dụng 3 chương trình con

 void addfirst(danhsachkh *khlist, khnodetype *n): hỗ trợ thêm 1 node vào đầu danh sách

 void nhapkh(KhachHang *kh): nhập thông tin của một khách hàng gồm: mã khách hàng, họ, tên, năm quản lý, điểm tích luỹ, doanh số

 void nhapDsKh(KhachHang *kh, danhsachkh *ds): hỗ trợ nhập danh sách khách hàng

// them node khach hang vao dau danh sach

void addfirst(danhsachkh *khlist, khnodetype *n)

Trang 39

// nhap thong tin danh sach

void nhapDsKh(KhachHang *kh, danhsachkh *ds)

{

char t='c'; int i=1;

// tao vong lap khi nhap thong tin khach hang ket thuc khi nhap xong while (t == 'C' || t == 'c')

{

kh = new KhachHang;

cout << " nhap thong tin khach hang thu " << i++ << endl;

nhapkh(kh);// nhap thong tin tung khach hang

khnodetype *n;

n= new khnodetype;

n=get_kh(kh);// tao them node thong tin khach hang

addfirst(ds, n);// them vao 1 phan tu o cuoi danh sach

cout << "Nhap tiep (c/k): ";// hoi moi khi nhap xong 1 khach hang cin >> t;

}

}

3.5.2. kết quk chạy

Ngày đăng: 02/10/2022, 16:02

HÌNH ẢNH LIÊN QUAN

Bảng 1.1 bảng thôngtin khách hàng. - ĐỒ á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
Bảng 1.1 bảng thôngtin khách hàng (Trang 9)
H2nh 3.15: HÌnh ảnh kết quả chạy xuất danh sách khách hàng. - ĐỒ á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
2nh 3.15: HÌnh ảnh kết quả chạy xuất danh sách khách hàng (Trang 41)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm