1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng bài toán quản lý khách hàng sử dụng cấu trúc liên kết Đơn kết hợp với thuật toán sắp xếp nổi bọt và tìm kiếm tuyến tính

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Xây Dựng Bài Toán Quản Lý Khách Hàng Sử Dụng Cấu Trúc Liên Kết Đơn Kết Hợp Với Thuật Toán Sắp Xếp Nổi Bọt Và Tìm Kiếm Tuyến Tính
Tác giả Hoàng Trung Nguyên
Người hướng dẫn Đỗ Ngọc Điệp
Trường học Trường Đại Học Hòa Bình
Thể loại bài tiểu luận
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 1,91 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC HÒA BÌNH BÀI TẬP LỚN TÊN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT ĐỀ TÀI: XÂY DỰNG BÀI TOÁN QUẢN LÝ KHÁCH HÀNG SỬ DỤNG CẤU TRÚC LIÊN KẾT ĐƠN KẾT HỢP

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC HÒA BÌNH

BÀI TẬP LỚN TÊN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

ĐỀ TÀI: XÂY DỰNG BÀI TOÁN QUẢN LÝ KHÁCH HÀNG SỬ DỤNG CẤU TRÚC LIÊN KẾT ĐƠN KẾT HỢP VỚI THUẬT TOÁN SẮP XẾP NỔI BỌT VÀ TÌM KIẾM TUYẾN TÍNH

Giáo viên hướng dẫn: ĐỖ NGỌC ĐIỆP

Sinh viên thực hiện:

1 522CNT1059 Hoàng Trung Nguyên 522CNT

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC HÒA BÌNH

BÀI TIỂU LUẬN

TÊN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

DỤNG CẤU TRÚC LIÊN KẾT ĐƠN KẾT HỢP VỚI THUẬT TOÁN SẮP XẾP NỔI BỌT VÀ TÌM KIẾM TUYẾN TÍNH

Điểm Bằng

Số Bằng Chữ

9

Hoàng Trung Nguyên 20/10/2004

CÁN BỘ CHẤM THI

Hà Nội, năm 2024

Trang 3

LỜI NÓI ĐẦU

Trong bối cảnh kỷ nguyên số hiện nay, công nghệ thông tin đóng vai trò then chốt trong mọi lĩnh vực của cuộc sống, đặc biệt là trong quản lý và xử lý thông tin Việc quản lý khách hàng một cách hiệu quả không chỉ giúp doanh nghiệp nắm bắt được nhu cầu và mong muốn của khách hàng mà còn tạo nền tảng cho sự phát triển bền vững và cạnh tranh trên thị trường

Cấu trúc dữ liệu và giải thuật là những nền tảng cơ bản của khoa học máy tính, quyết định hiệu suất và khả năng mở rộng của các hệ thống phần mềm Việc lựa chọn cấu trúc dữ liệu phù hợp và áp dụng các thuật toán tối ưu không chỉ cải thiện hiệu năng của hệ thống mà còn giúp tiết kiệm tài nguyên và tăng trải nghiệm người dùng Xuất phát từ những lý do đó, em đã chọn đề tài "Xây dựng bài toán quản lý khách hàng sử dụng cấu trúc liên kết đơn kết hợp với danh sách thuật toán sắp xếp nổi bọt và tìm kiếm tuyến tính" cho bài tiểu luận này Đề tài tập trung vào việc ứng dụng các kiến thức cơ bản về cấu trúc dữ liệu liên kết đơn và các thuật toán sắp xếp, tìm kiếm

cơ bản để xây dựng một hệ thống quản lý khách hàng đơn giản nhưng hiệu quả Qua bài tiểu luận, em mong muốn:

 Hiểu rõ hơn về cách triển khai cấu trúc liên kết đơn trong lập trình

 Nắm vững nguyên lý hoạt động của thuật toán sắp xếp nổi bọt và tìm kiếm tuyến tính

 Ứng dụng các kiến thức đã học vào việc giải quyết một bài toán thực tế

 Đánh giá hiệu suất của hệ thống và đề xuất các hướng cải tiến trong tương lai

Em xin chân thành cảm ơn thầy cô và các bạn đã dành thời gian đọc và góp ý cho bài tiểu luận này Sự hướng dẫn và hỗ trợ của thầy cô là động lực để em hoàn thành tốt bài tập này Em hy vọng rằng bài tiểu luận sẽ mang lại những kiến thức hữu ích và góp phần vào việc học tập và nghiên cứu của bản thân

Trang 4

MỤC LỤC

LỜI NÓI ĐẦU 3

I GIỚI THIỆU 8

1.1 Bối cảnh và tầm quan trọng của quản lý khách hàng 8

1.2 Vai trò của cấu trúc dữ liệu và thuật toán trong quản lý dữ liệu 8

1.3 Lý do chọn cấu trúc liên kết đơn và các thuật toán cơ bản 8

1.4 Mục tiêu của bài tiểu luận 8

1.5 Ý nghĩa thực tiễn của đề tài 8

II CƠ SỞ LÝ THUYẾT 9

2.1 Cấu trúc liên kết đơn 9

2.1.1 Khái niệm 9

2.1.2 Cách hoạt động 9

2.1.3 Ưu và nhược điểm 9

2.2 Thuật toán sắp xếp nổi bọt 9

2.2.1 Nguyên lý hoạt động 9

2.2.2 Độ phức tạp 9

2.2.3 Ứng dụng 10

2.3 Tìm kiếm tuyến tính 10

2.3.1 Nguyên lý hoạt động 10

2.3.2 Độ phức tạp 10

2.3.3 Ứng dụng 10

III PHÂN TÍCH YÊU CẦU HỆ THỐNG QUẢN LÝ KHÁCH HÀNG 10

3.1 Chức năng hệ thống 10

Trang 5

3.1.1 Thêm khách hàng 10

3.1.2 Xóa khách hàng 10

3.1.3 Sửa thông tin khách hàng 10

3.1.4 Tìm kiếm khách hàng 10

3.1.5 Sắp xếp danh sách khách hàng 11

3.2 Mô hình dữ liệu 11

IV THIẾT KẾ HỆ THỐNG 11

4.1 Thiết kế cấu trúc dữ liệu 11

4.1.1 Định nghĩa cấu trúc khách hàng 11

4.1.2 Triển khai danh sách liên kết đơn 11

4.2 Thiết kế thuật toán 12

4.2.1 Thuật toán thêm, xóa, sửa 12

4.2.2 Thuật toán sắp xếp nổi bọt trên danh sách liên kết đơn 14

4.2.3 Thuật toán tìm kiếm tuyến tính 14

V CÀI ĐẶT VÀ TRIỂN KHAI 14

5.1 Môi trường phát triển 14

5.2 Mã nguồn và giải thích 14

5.2.1 Cấu trúc dữ liệu 14

5.2.2 Chức năng hệ thống 14

5.3 Giao diện người dùng 15

5.4 Ví dụ minh họa 16

VI KIỂM THỬ VÀ ĐÁNH GIÁ 17

6.1 Kết quả kiểm thử chức năng 17

6.2 Đánh giá hiệu năng 17

Trang 6

6.2.1 Thời gian thực thi 17

6.2.2 Sử dụng bộ nhớ 17

6.3 Nhận xét 18

VII KẾT LUẬN 18

7.1 Kết luận 18

TÀI LIỆU THAM KHẢO 18

Trang 7

MỤC LỤC HÌNH ẢNH (Đánh tự động nếu có)

Hình 1 Giao diện người dùng

Hình 2 Danh sách trước khi sắp xếp

Hình 3 Danh sách sau khi sắp xếp

Hình 4 Tìm kiếm khách hàng

Hình 5 Xóa khách hàng

Hình 6 Thêm khách hàng

Trang 8

I GIỚI THIỆU 1.1 Bối cảnh và tầm quan trọng của quản lý khách hàng

Trong kỷ nguyên số hóa hiện nay, dữ liệu được coi là tài sản quý giá của mỗi doanh nghiệp Việc thu thập, quản lý và phân tích dữ liệu khách hàng không chỉ giúp doanh nghiệp hiểu rõ hơn về nhu cầu và hành vi của khách hàng mà còn tạo ra lợi thế cạnh tranh trên thị trường Quản lý khách hàng hiệu quả giúp tăng cường mối quan hệ giữa doanh nghiệp và khách hàng, cải thiện chất lượng dịch vụ và thúc đẩy doanh số bán hàng

1.2 Vai trò của cấu trúc dữ liệu và thuật toán trong quản lý dữ liệu

Cấu trúc dữ liệu và thuật toán là nền tảng của mọi hệ thống phần mềm Việc lựa chọn cấu trúc dữ liệu phù hợp ảnh hưởng trực tiếp đến hiệu suất và khả năng mở rộng của hệ thống Thuật toán hiệu quả giúp tối ưu hóa quá trình xử lý dữ liệu, giảm thiểu thời gian thực thi và sử dụng tài nguyên hợp lý

1.3 Lý do chọn cấu trúc liên kết đơn và các thuật toán cơ bản

Mặc dù có nhiều cấu trúc dữ liệu và thuật toán phức tạp hơn, nhưng cấu trúc liên kết đơn cùng với thuật toán sắp xếp nổi bọt và tìm kiếm tuyến tính vẫn giữ vai trò quan trọng trong việc giáo dục và nghiên cứu Chúng giúp người học nắm bắt các khái niệm cơ bản, hiểu rõ nguyên lý hoạt động và áp dụng chúng vào các bài toán thực tế

1.4 Mục tiêu của bài tiểu luận

Phân tích và triển khai: Xây dựng một hệ thống quản lý khách hàng sử dụng

cấu trúc liên kết đơn, kết hợp với các thuật toán cơ bản

Đánh giá hiệu suất: Phân tích độ phức tạp của các thuật toán được sử dụng và

đánh giá hiệu suất của hệ thống

Ứng dụng thực tế: Minh họa cách áp dụng cấu trúc dữ liệu và thuật toán vào

một bài toán cụ thể trong quản lý thông tin

1.5 Ý nghĩa thực tiễn của đề tài

 Việc xây dựng hệ thống quản lý khách hàng bằng cách sử dụng các cấu trúc dữ liệu và thuật toán cơ bản không chỉ giúp củng cố kiến thức đã học mà còn tạo tiền đề cho việc nghiên cứu và phát triển các hệ thống phức tạp hơn Đề tài này cũng giúp người học hiểu rõ hơn về tầm quan trọng của việc lựa chọn cấu trúc

dữ liệu và thuật toán phù hợp trong việc giải quyết các bài toán thực tế

Trang 9

II CƠ SỞ LÝ THUYẾT 2.1 Cấu trúc liên kết đơn

2.1.1 Khái niệm

Cấu trúc liên kết đơn (singly linked list) là một loại danh sách liên kết, trong đó mỗi phần tử (node) chứa dữ liệu và một con trỏ trỏ đến phần tử kế tiếp Phần tử cuối cùng trỏ đến null, đánh dấu sự kết thúc của danh sách

2.1.2 Cách hoạt động

Thêm phần tử: Có thể thêm vào đầu, cuối hoặc giữa danh sách bằng cách điều

chỉnh các con trỏ

Xóa phần tử: Tìm phần tử cần xóa và điều chỉnh con trỏ của phần tử trước nó.

Duyệt danh sách: Bắt đầu từ đầu danh sách, sử dụng con trỏ để truy cập các

phần tử kế tiếp

2.1.3 Ưu và nhược điểm

Ưu điểm:

o Linh hoạt trong việc thêm và xóa phần tử

o Sử dụng bộ nhớ hiệu quả hơn so với mảng khi kích thước danh sách thay đổi thường xuyên

Nhược điểm:

o Truy cập ngẫu nhiên không hiệu quả (O(n))

o Tốn thêm bộ nhớ cho các con trỏ

2.2 Thuật toán sắp xếp nổi bọt

2.2.1 Nguyên lý hoạt động

Thuật toán sắp xếp nổi bọt (bubble sort) là một thuật toán sắp xếp đơn giản Nó hoạt động bằng cách so sánh từng cặp phần tử liền kề và hoán đổi chúng nếu chúng ở sai thứ tự Quá trình này được lặp lại cho đến khi danh sách được sắp xếp

2.2.2 Độ phức tạp

Thời gian: O(n^2) trong trường hợp trung bình và xấu nhất.

Không gian: O(1), không cần bộ nhớ bổ sung.

Trang 10

2.2.3 Ứng dụng

Thích hợp cho các bộ dữ liệu nhỏ hoặc khi đơn giản là yếu tố quan trọng hơn hiệu suất

2.3 Tìm kiếm tuyến tính

2.3.1 Nguyên lý hoạt động

Tìm kiếm tuyến tính (linear search) duyệt qua từng phần tử trong danh sách và so sánh với giá trị cần tìm cho đến khi tìm thấy hoặc kết thúc danh sách

2.3.2 Độ phức tạp

Thời gian: O(n) trong trường hợp trung bình và xấu nhất.

Không gian: O(1).

2.3.3 Ứng dụng

Sử dụng khi danh sách không được sắp xếp hoặc khi kích thước danh sách nhỏ

III PHÂN TÍCH YÊU CẦU HỆ THỐNG QUẢN LÝ KHÁCH HÀNG 3.1 Chức năng hệ thống

3.1.1 Thêm khách hàng

 Nhập thông tin khách hàng: ID, tên, địa chỉ, số điện thoại

 Thêm vào danh sách liên kết đơn

3.1.2 Xóa khách hàng

 Nhập ID của khách hàng cần xóa

 Tìm kiếm và xóa khách hàng khỏi danh sách

3.1.3 Sửa thông tin khách hàng

 Nhập ID của khách hàng cần sửa

 Cập nhật thông tin mới cho khách hàng

3.1.4 Tìm kiếm khách hàng

 Nhập ID hoặc tên khách hàng cần tìm

 Sử dụng tìm kiếm tuyến tính để tìm và hiển thị thông tin

Trang 11

3.1.5 Sắp xếp danh sách khách hàng

 Sắp xếp danh sách theo ID hoặc tên

 Sử dụng thuật toán sắp xếp nổi bọt trên danh sách liên kết đơn

3.2 Mô hình dữ liệu

ID: Số nguyên duy nhất xác định khách hàng.

Tên: Chuỗi ký tự chứa tên khách hàng.

Địa chỉ: Chuỗi ký tự chứa địa chỉ.

Số điện thoại: Chuỗi ký tự chứa số điện thoại.

IV THIẾT KẾ HỆ THỐNG 4.1 Thiết kế cấu trúc dữ liệu

4.1.1 Định nghĩa cấu trúc khách hàng

struct Customer {

int id;

string name;

string address;

string phone;

Customer* next;

};

4.1.2 Triển khai danh sách liên kết đơn

 Sử dụng con trỏ head để trỏ đến đầu danh sách

 Mỗi khách hàng (node) chứa con trỏ next trỏ đến khách hàng tiếp theo

Trang 12

4.2 Thiết kế thuật toán

4.2.1 Thuật toán thêm, xóa, sửa

Thêm:

o Tạo khách hàng mới

o Gán next của khách hàng mới bằng head

o Cập nhật head trỏ đến khách hàng mới

o Code

Customer* createCustomer(int id, string name, string diachi, string SDT) { Customer* newCustomer = new Customer();

newCustomer->id = id;

newCustomer->name = name;

newCustomer->diachi = diachi;

newCustomer->SDT = SDT;

newCustomer->next = nullptr;

return newCustomer;

Xóa:

o Duyệt danh sách để tìm khách hàng

o Điều chỉnh con trỏ của khách hàng trước đó

o Xóa khách hàng khỏi bộ nhớ

o Code

// xoa theo ID

void deleteCustomer(Customer*& head, int id) {

Customer* temp = head;

Customer* prev = nullptr;

// neu node dau la node can xoa

if (temp != nullptr && temp->id == id) {

Trang 13

head = temp->next;

delete temp;

cout << "Da xoa khach hang co ID " << id << endl;

return; }

Sửa:

o Tìm khách hàng theo ID

o Cập nhật các thuộc tính cần sửa

o Code

// sua khach hang

void editCustomer(Customer* head, int id) {

Customer* temp = head;

while (temp != nullptr) {

if (temp->id == id) {

cout << "Nhap ten moi: ";

getline(cin, temp->name);

cout << "Nhap dia chi moi: ";

getline(cin, temp->diachi);

cout << "Nhap so dien thoai moi: ";

getline(cin, temp->SDT);

cout << "Da cap nhat thong tin khach hang có ID " << id << endl; return;

}

temp = temp->next;

}

cout << "Khong tim thay khach hang co ID " << id << endl;

}

Trang 14

4.2.2 Thuật toán sắp xếp nổi bọt trên danh sách liên kết đơn

 Sử dụng hai con trỏ để duyệt danh sách

 So sánh các phần tử liền kề và hoán đổi dữ liệu nếu cần

 Lặp lại cho đến khi danh sách được sắp xếp

4.2.3 Thuật toán tìm kiếm tuyến tính

 Duyệt qua từng phần tử từ head

 So sánh ID hoặc tên với giá trị cần tìm

 Dừng lại khi tìm thấy hoặc kết thúc danh sách

V CÀI ĐẶT VÀ TRIỂN KHAI 5.1 Môi trường phát triển

Ngôn ngữ lập trình: C++

Công cụ: Trình biên dịch GCC/G++, IDE như Visual Studio Code,

Code::Blocks

5.2 Mã nguồn và giải thích

5.2.1 Cấu trúc dữ liệu

 Định nghĩa cấu trúc Customer

 Khởi tạo con trỏ head trỏ đến danh sách khách hàng

5.2.2 Chức năng hệ thống

Thêm khách hàng: Hàm addCustomer.

o Yêu cầu nhập thông tin từ người dùng

o Tạo khách hàng mới và thêm vào danh sách

o Code

Xóa khách hàng: Hàm deleteCustomer.

o Nhập ID khách hàng cần xóa

o Duyệt danh sách và xóa khách hàng

Trang 15

Sửa thông tin khách hàng: Hàm editCustomer.

o Nhập ID khách hàng cần sửa

o Tìm kiếm và cập nhật thông tin

Tìm kiếm khách hàng: Hàm searchCustomer.

o Nhập ID hoặc tên cần tìm

o Sử dụng tìm kiếm tuyến tính

Sắp xếp danh sách khách hàng: Hàm bubbleSort.

o Thực hiện sắp xếp nổi bọt trên danh sách

Hiển thị danh sách: Hàm displayCustomers.

o Duyệt danh sách và in ra thông tin khách hàng

5.3 Giao diện người dùng

 Sử dụng menu trong hàm main để tương tác với người dùng

 Hiển thị các lựa chọn và xử lý tương ứng

Hình 1 Giao diện người dùng

Trang 16

5.4 Ví dụ minh họa

Hình 2 Danh sách trước khi sắp xếp Hình 3 Danh sách sau khi sắp xếp

Hình 4 Tìm kiếm khách hàng

Trang 17

Hình 5 Xóa khách hàng Hình 6 Thêm khách hàng

VI KIỂM THỬ VÀ ĐÁNH GIÁ 6.1 Kết quả kiểm thử chức năng

Thêm khách hàng: Kiểm tra thêm mới và kiểm tra danh sách.

Xóa khách hàng: Thử xóa khách hàng tồn tại và không tồn tại.

Sửa thông tin: Kiểm tra cập nhật thông tin đúng cách.

Tìm kiếm: Tìm kiếm khách hàng với các giá trị khác nhau.

Sắp xếp: Kiểm tra danh sách sau khi sắp xếp.

6.2 Đánh giá hiệu năng

6.2.1 Thời gian thực thi

 Đo thời gian thực thi các chức năng với số lượng khách hàng khác nhau

 So sánh thời gian trước và sau khi sắp xếp

6.2.2 Sử dụng bộ nhớ

 Phân tích việc sử dụng bộ nhớ của chương trình

 Đảm bảo không có rò rỉ bộ nhớ

Trang 18

6.3 Nhận xét

 Hệ thống hoạt động đúng chức năng

 Hiệu suất chấp nhận được với bộ dữ liệu nhỏ

 Có thể cải thiện hiệu suất với các thuật toán và cấu trúc dữ liệu khác

VII KẾT LUẬN 7.1 Kết luận

 Xây dựng thành công hệ thống quản lý khách hàng sử dụng cấu trúc liên kết đơn

 Các chức năng thêm, xóa, sửa, tìm kiếm và sắp xếp hoạt động đúng

 Hiểu rõ hơn về cách triển khai cấu trúc và thuật toán cơ bản

TÀI LIỆU THAM KHẢO

1 Nguyễn Hữu Tuấn, (2017) Cấu trúc dữ liệu và giải thuật, Nhà xuất bản Khoa học và Kỹ thuật

2 Nguyễn Văn Ba, (2018), "Ứng dụng thuật toán sắp xếp nổi bọt trong quản lý

dữ liệu", *Tạp chí Khoa học và Công nghệ*, 56(4), 123-130

3 Nguyễn Văn Hạnh & Trần Thị Thu (2020), Lập trình cấu trúc dữ liệu và

giải thuật, Nhà xuất bản Giáo dục Việt Nam.

Ngày đăng: 09/12/2024, 17:31

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

TÀI LIỆU LIÊN QUAN

w