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

báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật

30 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

Nội dung

Trang 1

BỘ TÀI CHÍNH

TRƯỜNG ĐẠI HỌC TÀI CHÍNH - MARKETING

Báo cáo bài tập lớn môn: “Cấu trúc dữliệu và Giải thuật”

TP Hồ Chí Minh, 2022

Trang 2

Lời cảm ơn

Lời nói đầu tiên em xin gửi lời cảm ơn đến giáo viên trong toàn khoa CNTTcủa Trường Đại Học Tài chính Marketing nói chung và giáo viên chuyên ngành giảngdạy bộ môn cấu trúc dữ liệu và giải thuật nói riêng Em cũng xin gửi lời cảm ơn đặcbiệt nhất đến Thầy Nguyễn Quốc Thanh, giáo viên trực tiếp giảng dạy và hướng dẫnem thực hiện tốt bài tập lớn này

Em xin trân trọng cảm ơn!

Sinh viên Lương Mạnh Nhã Vy.

Trang 3

Nhận xét của Giáo viên

- Điểm chữ:

Thành phố Hồ Chí Minh, ngày……tháng……năm 2022

Trang 4

Danh mục hình ảnh

Hình 2.1 Kết quả nhập thông tin đơn hàng 12

Hình 2.2 Kết quả in thông tin đơn hàng 14

Hình 2.3 Kết quả tìm kiếm thông tin đơn hàng theo mã 16

Hình 2.4 Kết quả in ra sau khi sắp xếp 17

Hình 3.1 Kết quả nhập danh sách liên kết đơn hàng 20

Hình 3.2 Kết quả in ra DSLK 22

Hình 3.3 Danh sách liên kết sau khi sắp xếp bằng Bubble sort 23

Hình 3.4 Kết quả tìm kiếm bằng Binary search 25

Hình 3.5 Kết quả sau khi sắp xếp bằng selection sort 27

Hình 3.6 Kết quả sau khi xóa các đơn hàng giao điện thoại 29

Trang 5

Chương 1 Giới thiệu 8

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

1.2 Cấu trúc 8

1.2.1 Các thông tin đơn hàng cần quản lý 8

1.2.2 Cấu trúc dữ liệu hỗ trợ quản lý thông tin sinh viên 8

1.2.3 Định nghĩa cấu trúc đơn hàng 8

1.3 Dữ liệu mẫu 9

1.4 Các chức năng sẽ xây dựng 9

1.4.1 Các chức năng trên Mảng cấu trúc 9

1.4.2 Các chức năng trên Danh sách liên kết 10

Chương 1 Quản lý danh sách với mảng tĩnh 10

Trang 6

2.3 Tìm thông tin đơn hàng theo mã bằng thuật toán binary search 14

Trang 7

3.5 Sắp xếp danh sách đơn hàng theo ngày giao hàng bằng Selection Sort 26

4.1.2 Trên Danh sách liên kết 30

4.2 Các chức năng chưa thực hiện 30

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 hỗ trợ quản lý thông

● TrongLuong: Trọng lượng đơn hàng

1.2.2 Cấu trúc dữ liệu hỗ trợ quản lý thông tin sinh viên.● MaDH: Số nguyên

● TenSP: Xâu ký tự có bao gồm dấu cách● NVGH: Xâu ký tự có bao gồm dấu cách● Tien: Số nguyên không âm

● ThanhToan: Xâu ký tự, (COD nếu Tien > 0 và ViDT nếu Tien = 0)● NgayGH: Xâu ký tự dạng ddmmyy

● TrongLuong: Số thực dương

1.2.3 Định nghĩa cấu trúc đơn hàng.

// Cấu trúc dữ liệu của 1 đơn hàngstructDonHang

Trang 9

Tien;int

// Phương thức thanh toán của đơn hàng là 1 xâu ký tự

// Nếu số tiền = 0 thì thanh toán bằng ví điện tử

// Nếu số tiền > 0 thì thanh toán bằng tền mặt

1.3 Dữ liệu mẫu.

1.4 Các chức năng sẽ xây dựng.

1.4.1 Các chức năng trên Mảng cấu trúc.

● Nhập danh sách đơn hàng.● Xuất danh sách đơn hàng.

● Tìm thông tin đơn hàng theo mã đơn hàng bằng thuật toán Binary Search.● Sắp xếp sách đơn hàng theo mã đơn hàng dùng thuật toán Bubble Sort.

1.4.2 Các chức năng trên Danh sách liên kết.

● Nhập danh sách đơn hàng.● Xuất danh sách đơn hàng.

Trang 10

● Tìm thông tin đơn hàng theo mã đơn hàng bằng thuật toán Binary Search.● Sắp xếp sách đơn hàng theo mã đơn hàng dùng thuật toán Bubble Sort.● Sắp xếp danh sách đơn hàng theo ngày giao hàng bằng Selection Sort.● Xóa thông tin các đơn hàng giao điện thoại.

Chương 1 Quản lý danh sách với mảng tĩnh

2.1 Nhập danh sách đơn hàng.

2.1.1 Chương trình con.

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

// Nhập thông tin cho 1 đơn hàngvoid nhapDonHang(DonHang* donhang);

// Nhập dữ liệu cho 1 mảng đơn hàngvoid nhapMang(DonHangdonhangs[], intn);

Nhập thông tin cho một đơn hàng:

void nhapDonHang(DonHang* donhang) {

cout <<"Nhập mã đơn hàng: "; cin >>donhang->MaDH; cout <<"Nhập tên sản phẩm: "; cin.ignore();

getline(cin, donhang->TenSP);

cout <<"Nhập tên nhân viên giao hàng: "; //cin.ignore();

getline(cin, donhang->NVGH); {do

cout <<"Nhập số tiền (>=0): "; cin >>donhang->Tien; } while (donhang->Tien < 0); // Tiền > 0 thì COD tiền = 0 thì ViDT

donhang->ThanhToan (= donhang->Tien == 0) ? "ViDT" "COD" : ; cout <<"Nhập ngày giao hàng (ddmmyy): ";

cin >>donhang->NgayGH;

cout <<"Nhập trọng lượng đơn hàng: "; cin >>donhang->TrongLuong;}

Trang 11

Nhập thông tin cho một mảng đơn hàng:

void nhapMang(DonHangdonhangs[], intn){

for int ( i = 0; i < ; i++) {n

cout <<"\nNhập thông tin sản phẩm thứ "<< i + 1 <<"\n"; nhapDonHang(&donhangs[i]);

}}

2.1.2 Kiểm tra (Hàm main kiểm tra ctc)

int main(){ n = 0;int

DonHang* donhangs = NULL; cout <<"Nhập số lượng đơn hàng: "; cin >> n;

donhangs = newDonHang[n]; nhapMang(donhangs, n);}

Trang 12

2.1.3 Kết quả chạy

Hình 2.1 Kết quả nhập thông tin đơn hàng

2.2 Xuất danh sách đơn hàng

2.2.1 Chương trình con

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

// In thông tin đơn hàng trên 1 dòng

void inDonHangmotDong(DonHangdonhang);

Trang 13

// In thông tin của 1 mảng đơn hàngvoid inMang(DonHangdonhangs[], intn);

In thông tin đơn hàng trên một dòng:

void inDonHangmotDong(DonHangdonhang) {

cout << setw(10) <<donhang.MaDH <<"\t"

<< setw(25) <<donhang.TenSP <<"\t"

<< setw(15) <<donhang.NVGH <<"\t"

<< setw(10) <<donhang.Tien <<"\t"

<< setw(15) <<donhang.ThanhToan <<"\t"

<< setw(10) <<donhang.NgayGH <<"\t"

<< setw(10) <<donhang.TrongLuong <<"\n";}

inDonHangmotDong(donhangs[i]); }

2.2.2 Kiểm tra (Hàm main kiểm tra ctc)

int main() { n = 0;int

DonHang* donhangs = NULL; cout <<"Nhập số lượng đơn hàng: "; cin >> n;

donhangs = newDonHang[n]; nhapMang(donhangs, n);

//Kiểm tra in danh sách đơn hàng

inMang(donhangs, n);}

Trang 14

2.2.3 Kết quả chạy

Hình 2.2 Kết quả in thông tin đơn hàng

2.3 Tìm thông tin đơn hàng theo mã bằng thuật toánbinary search

2.3.1 Chương trình con

Để tìm kiếm thông tin đơn hàng theo mã bằng thuật toán binary search, cần xâydựng hai chương trình con:

// In thông tin 1 đơn hàng

void inDonHang(DonHangdonhang);

// Tìm kiếm đơn hàng bằng thuật toán tìm kiếm nhị phân

void BinarySearchMaDH(DonHangdonhangs[], intmaDH, , intlintr);

In thông tin 1 đơn hàng:

void inDonHang(DonHangdonhang) {

cout <<"Mã đơn hàng: "<<donhang.MaDH <<"\n"; cout <<"Tên sản phẩm: "<<donhang.TenSP <<"\n";

cout <<"Tên nhân viên giao hàng: "<<donhang.NVGH <<"\n"; cout <<"Số tiền: "<<donhang.Tien <<"\n";

cout <<"Phương thức thanh toán: "<<donhang.ThanhToan <<"\n"; cout <<"Ngày giao hàng (ddmmyy): "<<donhang.NgayGH <<"\n"; cout <<"Trọng lượng đơn hàng: "<<donhang.TrongLuong <<"\n";}

Tìm kiếm sản phẩm theo mã bằng binary search:

int getMid( , int intl r) {

Trang 15

return + (r - l) / 2;}

void BinarySearchMaDH(DonHangdonhangs[], intmaDH, , )intlintr

( >= ) {if r l

mid = getMid( , int l r);

(if donhangs[mid].MaDH == maDH) {

cout <<"Đơn hàng "<<maDH<<" xuất hiện ở vị trí "<< mid + 1 <<"\n";

inDonHang(donhangs[mid]); return;

}

(if donhangs[mid].MaDH >= maDH) {

return BinarySearchMaDH(donhangs maDH l, , , mid - 1); }

return BinarySearchMaDH(donhangs maDH, , mid + 1, r); }

cout <<"Đơn hàng "<<maDH<<" không tồn tại\n"; return;

Hàm getMid giúp rút gọn code trong chương trình tìm kiếm.

2.3.2 Kiểm tra

int main(){ n = 0;int

DonHang* donhangs = NULL; cout <<"Nhập số lượng đơn hàng: "; cin >> n;

donhangs = newDonHang[n]; nhapMang(donhangs, n);

//Kiểm tra tìm đơn hàng theo mã bằng Binary search

inMang(donhangs, n);

cout <<"Nhập vào mã đơn hàng mà bạn muốn tìm kiếm: "; cin >> maDH

BinarySearchMaDH(donhangs, maDH, 0, n - 1);}

Trang 16

2.3.3 Kết quả chạy

Hình 2.3 Kết quả tìm kiếm thông tin đơn hàng theo mã

2.4 Sắp xếp đơn hàng theo mã đơn hàng dùng thuật toánBubble sort

2.4.1 Chương trình con

Cần xây dựng một chương trình con để sắp xếp đơn hàng theo mã bằng thuậttoán Bubble sort:

// Sắp xếp mảng theo mã đơn hàng từ bé đến lớnvoid BubbleSortMaDH(DonHangdonhangs[], intn);

flag = true; }

} (!flag) {if

break; } }

Trang 17

2.4.2 Kiểm tra

int main(){ n = 0;int

DonHang* donhangs = NULL; cout <<"Nhập số lượng đơn hàng: "; cin >> n;

donhangs = newDonHang[n]; nhapMang(donhangs, n);

// sắp xếp đơn hàng theo mã

BubbleSortMaDH(donhangs, n);

// In ra danh sách đơn hàng sau sắp xếp để kiểm tra

inMang(donhangs, n);}

2.4.3 Kết quả chạy

Hình 2.4 Kết quả in ra sau khi sắp xếp

Trang 18

Chương 2 Quản lý danh sách với DSLK

Xây dựng cấu trúc dữ liệu của một danh sách liên kết:// Cấu trúc dữ liệu của một nút trong DSLK

// Cấu trúc dữ liệu của 1 DSLKstructDSLK {

// Biến kiểu nguyên lưu số lượng nút trong DSLK

3.1 Nhập danh sách đơn hàng.

3.1.1 Chương trình con

Để nhập danh sách đơn hàng, cần xây dựng 2 chương trình con:// Nhập thông tin cho 1 đơn hàng

void nhapDonHang(DonHang* donhang);

// Nhập dữ liệu cho 1 dslk các sản phẩm tồn khovoid nhapDSLK(DSLK& dslk, intn);

Nhập thông tin 1 đơn hàng:

void nhapDonHang(DonHang* donhang) {

cout <<"Nhập mã đơn hàng: "; cin >>donhang->MaDH; cout <<"Nhập tên sản phẩm: "; cin.ignore();

getline(cin, donhang->TenSP);

Trang 19

cout <<"Nhập tên nhân viên giao hàng: "; getline(cin, donhang->NVGH); {do

cout <<"Nhập số tiền (>=0): "; cin >>donhang->Tien; } while (donhang->Tien < 0); // Tiền > 0 thì COD tiền = 0 thì ViDT

donhang->ThanhToan (= donhang->Tien == 0) ? "ViDT" "COD" : ; cout <<"Nhập ngày giao hàng (ddmmyy): ";

cin >>donhang->NgayGH;

cout <<"Nhập trọng lượng đơn hàng: "; cin >>donhang->TrongLuong;}

3.1.2 Kiểm tra

int main() { n = 0;int

DSLK donhangs; khoiTaoDSLK(donhangs); cout <<"Nhập số lượng đơn hàng: "; cin >> n;

nhapDSLK(donhangs, n);}

Trang 20

3.1.3 Kết quả chạy

Hình 3.5 Kết quả nhập danh sách liên kết đơn hàng

3.2 Xuất danh sách đơn hàng.

3.2.1 Chương trình con

Để xuất danh sách đơn hàng, ta xây dựng 2 chương trình con:

Trang 21

// Xuất đơn hàng trên một dòng

void inDonHangmotDong(DonHangdonhang);

// Xuất dữ liệu của 1 dslk các sản phẩm tồn khovoid inDSLK(DSLK& dslk);

Xuất đơn hàng trên một dòng:

void inDonHangmotDong(DonHangdonhang) {

cout << setw(10) <<donhang.MaDH <<"\t"

<< setw(25) <<donhang.TenSP <<"\t"

<< setw(15) <<donhang.NVGH <<"\t"

<< setw(10) <<donhang.Tien <<"\t"

<< setw(15) <<donhang.ThanhToan <<"\t"

<< setw(10) <<donhang.NgayGH <<"\t"

<< setw(10) <<donhang.TrongLuong <<"\n";}

Xuất danh sách liên kết đơn hàng:

void inDSLK(DSLK& dslk) {

while (it != NULL) {

inDonHangmotDong(it->duLieu); it = it->tiepTheo;

}}

3.2.2 Kiểm tra

int main(){ n = 0;int

Trang 22

DSLK donhangs; khoiTaoDSLK(donhangs); cout <<"Nhập số lượng đơn hàng: "; cin >> n;

nhapDSLK(donhangs, n); // Kiểm tra in DSLK

inDSLK(donhangs);}

it = it->tiepTheo;

Trang 23

} (!flag) {if

break; } }}

3.3.2 Kiểm tra

int main(){ n = 0;int

DSLK donhangs; khoiTaoDSLK(donhangs); cout <<"Nhập số lượng đơn hàng: "; cin >> n;

BubblesortMaDH(donhangs, n);

// Kiểm tra DSLK sau khi sắp xếp bằng BubbleSort

inDSLK(donhangs);}

3.3.3 Kết quả chạy

Hình 3.7 Danh sách liên kết sau khi sắp xếp bằng Bubble sort

3.4 Tìm thông tin đơn hàng theo mã đơn hàng bằng thuậttoán Binary Search.

3.4.1 Chương trình con

Để tìm thông tin đơn hàng theo Binary search, cần xây dựng hai chương trìnhcon:

// In thông tin 1 đơn hàng

void inDonHang(DonHangdonhang);

Trang 24

// Tìm kiếm vị trí sản phẩm theo Mã sản phẩm bằng thuật toán Binary Search

void BinarySearchMaDH(DSLK& dslk, intmaDH, Node* batDau, Node*

void inDonHang(DonHangdonhang) {

cout <<"Mã đơn hàng: "<<donhang.MaDH <<"\n"; cout <<"Tên sản phẩm: "<<donhang.TenSP <<"\n";

cout <<"Tên nhân viên giao hàng: "<<donhang.NVGH <<"\n"; cout <<"Số tiền: "<<donhang.Tien <<"\n";

cout <<"Phương thức thanh toán: "<<donhang.ThanhToan <<"\n"; cout <<"Ngày giao hàng (ddmmyy): "<<donhang.NgayGH <<"\n"; cout <<"Trọng lượng đơn hàng: "<<donhang.TrongLuong <<"\n";}

Node* getMid(Node* batDau, Node* ketThuc) { (if batDau == NULL) {

returnNULL; }

Node* itSlow = batDau; Node* itFast = batDau->tiepTheo; while (itFast != ketThuc) { itFast = itFast->tiepTheo; (itFast != if ketThuc) { itSlow = itSlow->tiepTheo; itFast = itFast->tiepTheo; }

}

return itSlow;}

void BinarySearchMaDH(DSLK& dslk, intmaDH, Node* batDau, Node*

(giua->duLieu.MaDH >= if maDH) {

Trang 25

return BinarySearchMaDH(dslk maDH batDau, , , giua); }

return BinarySearchMaDH(dslk maDH, , giua->tiepTheo, ketThuc); }

cout <<"Đơn hàng có mã "<<maDH<<" không tồn tại\n"; return;

3.4.2 Kiểm tra

int main(){ n = 0;int

DSLK donhangs; khoiTaoDSLK(donhangs); cout <<"Nhập số lượng đơn hàng: "; cin >> n;

nhapDSLK(donhangs, n); // Kiểm tra tìm k

cout <<"Nhập vào mã đơn hàng mà bạn muốn tìm kiếm: "; cin >> maDH;

BinarySearchMaDH(donhangs, maDH, donhangs.dau, donhangs.duoi);}

3.4.3 Kết quả chạy

Hình 3.8 Kết quả tìm kiếm bằng Binary search

Trang 26

3.5 Sắp xếp danh sách đơn hàng theo ngày giao hàng bằngSelection Sort.

return true; }

else if (nam1 == nam2) { (thang1 > thang2) {if

return true; }

else if (thang1 == thang2) { (ngay1 > ngay2) {if

return true; }

else { return false; }

} else { return false; }

} else { return false; }

Trang 27

for (Node* innerIt = it->tiepTheo; innerIt != NULL; innerIt = >tiepTheo) {

(soSanhNgayGH(minNode->duLieu.NgayGH, innerIt-if

>duLieu.NgayGH)) { minNode = innerIt; }

3.5.2 Kiểm tra

int main(){ n = 0;int

DSLK donhangs; khoiTaoDSLK(donhangs); cout <<"Nhập số lượng đơn hàng: "; cin >> n;

SelectionSortNgayGH(donhangs, n);

// Kiểm tra DSLK sau khi sắp xếp bằng SelectionSort

inDSLK(donhangs);}

3.5.3 Kết quả chạy

Hình 3.9 Kết quả sau khi sắp xếp bằng selection sort

Ngày đăng: 02/07/2024, 17:27

HÌNH ẢNH LIÊN QUAN

Hình 2.1  Kết quả nhập thông tin đơn hàng - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 2.1 Kết quả nhập thông tin đơn hàng (Trang 12)
Hình 2.2  Kết quả in thông tin đơn hàng - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 2.2 Kết quả in thông tin đơn hàng (Trang 14)
Hình 2.3  Kết quả tìm kiếm thông tin đơn hàng theo mã - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 2.3 Kết quả tìm kiếm thông tin đơn hàng theo mã (Trang 16)
Hình 2.4  Kết quả in ra sau khi sắp xếp - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 2.4 Kết quả in ra sau khi sắp xếp (Trang 17)
Hình 3.5  Kết quả nhập danh sách liên kết đơn hàng - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 3.5 Kết quả nhập danh sách liên kết đơn hàng (Trang 20)
Hình 3.6 Kết quả in ra DSLK - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 3.6 Kết quả in ra DSLK (Trang 22)
Hình 3.9  Kết quả sau khi sắp xếp bằng selection sort - báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật
Hình 3.9 Kết quả sau khi sắp xếp bằng selection sort (Trang 27)

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w