Giới thiệu : Xây dựng chương trình nhằm tìm kiếm và sắp xếp thông tin trên các cầu trúc giúp hỗ trợ quản lí danh mục sản phẩm điện thoại.. Định nghĩa cấu trúc điện thoại: Các chức năng t
Trang 1
BO TAI CHINH TRUONG DAI HOC TAI CHINH — MARKETING
KHOA CONG NGHE THONG TIN
I*[
TRƯỜNG ĐẠI HỌC TÀI CHÍNH - MARKETING
ĐỎ ÁN CUỎI KỲ MÔN CƠ SỞ DỮ LIỆU VÀ
GIẢI THUẬT
Đề tài:
CÁU TRÚC HỖ TRỢ QUẢN LÍ DANH MỤC
SAN PHAM BAN LA DIEN THOAI
GVHD: Th.S Nguyễn Quốc Thanh
SVTH: Huỳnh Hoàng Trầm MSSV:2221004326
Lớp: 22DHT03
Tp.HCM, tháng 2 năm 2023
Trang 2
NHAN XET CUA GIANG VIEN
Giảng viên hướng dẫn
Trang 3Th.S Nguyén Quốc Thanh
Trang 4
DANH MUC HINH ANH
HÌNH 2.1: KET QUA CHAY CUA CHUONG TRINH NHAP.uo ccccccccccccscccsesecessesssessessessessensecttessse ees HINH 2.2: KET QUA CHAY CUA CHƯƠNG TRÌNH XUẤT
HINH 2.3: KET QUA CHAY CUA TRUONG HGP | LINEAR SEARCH
HÌNH 2.4: KET QUA CHAY CUA TRUONG HGP 2 LINEAR SEARCH .u cccccccccccccccsecceeeeseneeecneenees 8 HINH 2.5: KET QUA CHAY CUA TRUONG HOP | LINEAR SEARCH BẰNG THƯƠNG HIỆU 9 HÌNH 2.6:KÉT QUÁ CHẠY CỦA TRƯỜNG HOP 2 LINEAR SEARCH BANG THƯƠNG HIỆU 9 HÌNH 2.7: KET QUA CHAY CUA TRUONG HGP 1 BINARY SEARCH Lc Qn nhờ 11 HÌNH 2.8: KET QUA CHAY CUA TRUONG HGP 2 BINARY SEARCH cc nn nhờ 11 HiNH 2.9: KET QUA CHAY CUA TRUONG HGP 1 BINARY SEARCH BẰNG THƯƠNG HIỆU 12 HÌNH 2.10: KÉT QUÁ CHẠY CỦA TRƯỜNG HOP 2 BINARY SEARCH BANG THUONG HIEU 12
HiNH 2.11: KET QUA CHAY CUA TRUGNG HOP l LINAER SEARCH CẢI TIỀN 55-¿ 14 HÌNH 2.12: KÉT QUÁ CHẠY CỦA TRƯỜNG HOP 2 LINAER SEARCH CAI TIEN w.cccccccceeeeeeeees 14 HÌNH 2.13: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP SHAKER SORT c co cóc 16 HÌNH 2.14: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP SELECTION SORT ò 17
HÌNH 2.15: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP INTERCHANGE SORI 19
HÌNH 2.16: KET QUA CHAY CUA CHUGNG TRÌNH SẮP XÉP BUBBLE SORT cccccộ 20 HÌNH 2.17: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP ÏNSERTION SORT cc¿ 21 HÌNH 2.18: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP QUICK SORI c 275555: 23 HÌNH 2.19: KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH SẮP XÉP MERGE SORI (co cằ 26 HÌNH 2.20:KẾT QUẢ CHẠY CỦA CHƯƠNG TRÌNH XÓA SẢN PHẢM 2 2c 2c che 27 HÌNH 3.1: KẾT QUÁ CHẠY CHƯƠNG TRÌNH NHẬP -L- L2 Q22 E21 121111 112112 11 tk He 32 HÌNH 3.2: KẾT QUÁ CHẠY CỦA CHƯƠNG TRÌNH XUẤTT L2 2: 22222112 2E 2E HH r 33
HÌNH 3.3:KÉT QUÁ CHẠY CỦA TRƯỜNG HỢP l LINEAR SEARCH Là Q Tnhh nh 35 HÌNH 3.4: KÉT QUẢ CHẠY CUA TRUONG HGP 2 LINEAR SEARCH 2c Q Tnhh He 35 HiNH 3.5: KET QUA CHAY CUA TRUONG HGP 1 LINEAR SEARCH BẰNG TÊN THƯƠNG HIỆU 37 HÌNH 3.6:KÉT QUÁ CHẠY CỦA TRƯỜNG HỢP 2 LINEAR SEARCH BANG TEN THUONG HIEU 37 HÌNH 3.7:KÉT QUÁ CHẠY CHƯƠNG TRÌNH SẮP XÉP BẰNG SELECTION SORT c cà 39 HÌNH 3.8: KÉT QUẢ CHẠY CHƯƠNG TRÌNH SẮP XÉP BẰNG ÏNTERCHANGE SORT 40 HÌNH 3.9: KÉT QUẢ CHẠY CHƯƠNG TRÌNH SẮP XÉP BẰNG BUBBLE SORIT c (co cà 42 HÌNH 3.10: KÉT QUÁ CHẠY CHƯƠNG TRÌNH SẮP XÉP BẰNG INSERTION SORIT 44
HÌNH 3.11: KẾT QUÁ CHẠY CỦA HÀM SẮP XÉP QUICK SORT BẰNG MÃ SẢN PHẢM 46 HÌNH 3.12:KÉT QUÁ CHẠY CỦA CHƯƠNG TRÌNH XÓA ĐẦU DANH SÁCH các 47
Trang 63.6 Sap xép danh sach theo Ma san pham voi Interchange Sort 2.0.0.0 38 3.7 Sap xép danh sach theo Ma san pham voi Bubble Sort : 0.0 0ccccccceeeeeeeeeee 40 3.8 Sắp xếp danh sách theo giá tiền ding Insertion Sort :.0 0.ccccccccsccseseeseeeeeeeeeees 4I 3.9 Sắp xếp danh sách điện thoại đựa vào Mã sản phẩm bằng QuickSort : 43
Trang 7Ll Giới thiệu :
Xây dựng chương trình nhằm tìm kiếm và sắp xếp thông tin trên các cầu trúc giúp hỗ
trợ quản lí danh mục sản phẩm điện thoại Thông tin điện thoại bao gồm: Mã sản
phẩm, thương hiệu, ROM (Read Only Memory), RAM (Ramdom Access Memory), s6
SIM, giá tiền
1.2 Cấu trúc :
Thông tin của điện thoại can quan li:
MaSP: Mã sản phẩm, dùng đề phân biệt từng sản phẩm điện thoại (giống thương hiệu hoặc khác), gồm một chuỗi kí tự số gồm 13 kí tự Trong đó, 2-3 kí tự đầu qui định quốc gia sản xuất
Thuonghieu: Thương hiệu của điện thoại, chỉ quản lí các tên tiếng Anh với chiều đài tối đa khoảng 7 ký tự
RƠM: Dung lương bộ nhớ ROM của điện thoại, có thể lưu trữ nhiều gigabyte (GB) tu 1-256 GB
RAM: Dung lượng bộ nhớ RAM của điện thoại, chỉ lưu trữ được vài megabyte (MB) chỉ có 4-8 MB mỗi chip
SoSIM: Số điện thoại, gồm một chuỗi kí tự số gồm 10 kí tự Số SIM có thể có sự trùng nhau
Gia: Giá tiền của mỗi chiếc điện thoại, gồm một chuỗi kí tự với chiều đài tối đa 10 kí tự Ngăn cách các số hàng nghìn là dấu chấm, với đơn vị giá tiên là vnđ
Cấu trúc đữ liệu hỗ trợ quản lí thông tin điện thoại:
MaSP: chuỗi gồm I3 kí tự
Thuonghieu: chuỗi tối đa 8 kí tự
SoSIM: chuỗi gồm l0 kí tự
ROM: số thực đương (ROM > 0)
RAM: số thực đương (RAM > 0)
Gia: số thực dương, don vi la trigu vnd (Gia > 0)
1
Trang 8Định nghĩa cấu trúc điện thoại:
Các chức năng trong mảng cấu trúc :
-_ Nhập danh sách điện thoại
- _ Xuất danh sách điện thoại
- _ Tìm thông tin điện thoại theo Mã sản phẩm (dùng Linear Search và Binary
Search)
- Tim thông tin điện thoại theo Tên thương hiệu (dung Linear Search va Binary
Search)
- Sap xép danh sach theo Ma san pham (dting Shaker Sort)
- Sắp xếp đanh sách theo Mã sản phẩm (dùng Selection Sort)
- _ Sắp xếp đanh sách theo Mã sản phẩm (dùng Interchange Sort)
- _ Sắp xếp đanh sách theo Mã sản phẩm (dùng Bubble Sort)
- Sap xép danh sach theo Ma san pham (dung Insertion Sort)
- _ Sắp xếp đanh sách theo Mã sản phẩm ( đùng Quick Sort)
-_ Sắp xếp danh sách theo Mã sản phâm (dùng Merge Sort)
2
Trang 9Xóa sản phâm điện thoại dựa vào biên phụ vi tri
Các chức năng trên danh sách liên kết :
Nhập danh sách điện thoại
Xuất danh sách điện thoại
Tìm thông tin sản phẩm điện thoại theo Mã sản phẩm (dùng Linear Search)
Tìm thông tin sản phâm điện thoại theo Tên thương hiệu ( ding Linear Search)
Sắp xếp danh sách sản phẩm theo Ma san pham ( ding Selection Sort)
Sap xép danh sach san pham theo Ma san pham ( ding Interchange Sort)
Sap xép danh sach san pham theo Ma san pham ( ding Bubble Sort)
Sap xép danh sach san pham theo Gia san pham (dung Insertion Sort)
Sắp xếp danh sách sản phẩm theo Mã sản phẩm ( dùng Quick Sort)
Trang 102.1 Nhập danh sách diện thoại :
2.1.1 Chương trình con :
Đề nhập danh sách điện thoại, ta cần xây đựng 2 chương trình con gồm:
- _ void Nhap_o (Dienthoai &b): Hỗ trợ nhập thông tin của sản phẩm điện thoại
gom MaSP, Thuonghieu, ROM, RAM, SoSIM, Gia
- void Nhap (Dienthoai arr[], int n): Hỗ trợ nhập danh sách điện thoại vào
//Dinh nghia ham nhap mang
void Nhap(Dienthoai arr[], int n)
Trang 112.1.2 Kiểm tra : (Hàm main kiểm tra ctc)
a dien thoai: Iphone
Hình 2.1: Kết quả chạy của chương trình nhập
Trang 122.2 Xuất danh sách điện thoại :
2.2.1 Chương trình con :
Đề xuất danh sách điện thoại, ta cũng cần phải xây dựng 2 chương trình con, bao gồm:
- void Xuat_o (Dienthoai b): Hỗ trợ xuất các thông tin đã nhập của một sản
phẩm điện thoại
- void Xuat ( Dienthoai arr[], int n): H6 tro xuat mang san pham dién thoại
//Dinh nghia ham xuaHé
void Xuat(Dienthoai arr[], int n)
for (int 1 = 031 < n;i++)
Trang 13DANH SACH THONG TIN CUA DIEN THOAI
MA SP THUONG HIEU ROM RAM
2202 Samsung
2204
Hình 2.2: Kết quả chạy của chương trình xuất
2.3 Tìm kiếm điện thoại bằng mã sản phẩm với Linear Search :
2.3.1 Chương trình con :
Thực hiện tìm kiếm với khóa chính là Mã sản phẩm (dữ liệu khóa)
Để tìm thông tin của điện thoại dựa theo mã sản phẩm, ta cần xây dựng như sau:
- void LinearSearch ( Dienthoai arr[],int n, char x[] ) : Giải thuật tìm kiếm bằng
tuyến tính, hồ trợ tìm ra điện thoại với mã sản phâm có được
/Định nghĩa hàm LinearSearch theo mã sán phầm
int LinearSearch(Dienthoai arr[], int n, char x[])
Trang 14//Kiêm tra LinearSearch
¢ Trường hợp L: Tim thay
Nhap ma SP can tim: 2204
Ket qua tim kiem:
2204 Iphone
Hình 2.3: Kết quả chạy của Trường hợp | Linear Search
e Truong hop 2: Khong tim thay
: 2206
Hình 2.4: Kết quả chạy của Trường hợp 2 Linear Search
2.4 Tìm kiếm sản phẩm điện thoại bằng Tên thương hiệu với Linear Search : 2.4.1 Chương trình con :
Chúng ta thực hiện tìm kiếm với khóa là Tên thương hiệu
Để tìm thông tin điện thoại dựa theo Tên thương hiệu, ta cần xây dựng như sau:
- void LinearSearch2(Dienthoai arr[], int n): Giải thuật tìm kiếm bằng tuyến tinh,
hỗ trợ tìm ra sản phẩm dựa trên tên thương hiệu có được
//Tìm sán phẩm điện thoại theo Tên thương hiệu
void LinearSearch2(Dienthoai arr[], int n)
Trang 15else cout << "Khong tim thay san pham” << endl;
2.4.2 Kiểm tra : (Hàm main kiểm tra ctc)
ten thuong hieu can ti
Ipho - 2
Hình 2.5: Kết quả chạy của Trường hợp 1 Linear Search bằng thương hiệu
¢ Trường hợp 2: Không tìm thấy
Hình 2.6:Kết quả chạy của Trường hợp 2 Linear Search bằng thương hiệu
2.5 Tìm kiếm sản phẩm điện thoại bằng mã sản phẩm với Binary Search:
2.5.1 Chương trình con :
Chúng ta thực hiện tìm kiếm với khóa chính là Mã sản phẩm (đữ liệu khóa)
Dé tim thông tin cua điện thoại dựa theo mã sản phâm, cân xây dựng như sau:
- void BinarySearch (Dienthoai arr [], int n, char x[]): Giải thuật tìm kiếm nhị phan, hỗ trợ tìm điện thoại đựa trên mã sản phầm
//Dinh nghia ham Binary Search theo mã sán phầm
int BinarySearch(Dienthoai arr[], int n, char x[])
9
Trang 16Dé tai : Quan lí sản phâm điện thoại
{
int left = 0;
int right =n - 1;
int mid = (left + right) / 2;
while ((left <= right) && stremp(arr[mid].MaSP, x) !=
0)
{
if (stremp(arr[imid].MaSP, x) > 0) right = mid - 1;
mid = (left + right) / 2;
Trang 17Hình 2.8: Kết quả chạy của Trường hợp 2 Binary Search
2.6 Tìm kiếm sản phẩm điện thoại dựa vào tên thương hiệu với Binary
Search:
2.6.1 Chương trình con:
Chúng ta thực hiện tìm kiếm sàn phâm với khóa là Tên thương hiệu
Đề sắp xếp sản phâm bằng Tên thương hiệu, ta cần thực hiện như sau :
- void BinarySearch2 (Dienthoai arr[], int n); Gidi thuật tìm kiếm nhị phân, hỗ trợ tim kiém san pham bang tén thuong hiéu
//Atim dien thoai theo ten (BinarySearch)
void BinarySearch2(Dienthoai arr[], int n)
char tendt[ 100];
cout << "\nNhap ten san pham can tim: ";
cin.getline(tendt, 100);
int left = 0; int right = n - 1;
int mid = (left + right) / 2;
while (left <= night && stremp(tendt,
Trang 18else
left = mid + 1;
mid = (left + right) / 2;
} }
¢ Truong hop 1:Tim thay san pham
Hình 2.9: Kết quả chạy của Trường hợp | Binary Search bang thương hiệu
Trường hợp 2: Không tìm thấy sản phẩm
lộ en tt eu can tim r
Hình 2.10: Kết quả chạy của Trường hợp 2 Binary Search bằng thương hiệu
2.7 Tìm kiếm sản phẩm dựa vào Mã sản phẩm với LinearSearch cải tiến : 2.7.1 Chương trình con :
Chương trình thực hiên sắp xếp đựa vào khóa chính là Mã sản phẩm (Mã khóa)
Ta sẽ sắp xếp sản phâm điện thoại dựa trên Linear Search đã được cải tiền
12
Trang 19//Dinh nghia ham Linear Search cai tiéH
int LinearSearch1(Dienthoai arr[], int n)
while (stremp(masp,arr[i].MaSP)!=0 && stremp(masp,arr[n-
1-i].MaSP)!=0 && i<n/2)
Trang 20Nhap ma san pham can tim: 2204
qua tim thay:
Iphone
Hình 2.11: Kết quả chạy của Trường hợp 1 Linaer Search cải tiễn
e Trường hợp 2 : Không tìm thấy kết quả
Nhap ma san pham can tim: 2121
Khong tim thay san pham
Hình 2.12: Kết quả chạy của Trường hợp 2 Linaer Search cải tiến 2.8 Sắp xếp điện thoại dựa vào mã sản phẩm với Shaker Sort :
2.8.1 Chương trình con :
Thực hiện sắp xếp đựa vào Mã sản phẩm (Mã khóa)
Đề sắp xếp điện thoại bằng mã sản phẩm, ta thực hiện như sau:
- _ void Hoanvi (Dienthoai&a, Dienthoai&b):Hỗ trợ đôi chỗ hai phần tử khi sắp
xếp
- void ShakerSort (Dienthoai arr[] , int n , char x[]): H6 trợ sắp xêp, theo chu ki | lần 2 lượt đi và về
- Lượt đi: đây phân tử bé nhât về dau day
- Lượt về: đây phần tử lớn nhất về cuối dãy
//Dinh nghĩa hàm hoán vi
void Hoanvi(Dienthoai& a, Dienthoai& b)
//Dinh nghia ham ShakerS ort theo m4 san phar
void ShakerS ort(Dienthoai arr[], int n)
Trang 21{
if (stremp(arr[i - 1].MaSP,arr[i].MaSP)>0) Hoanvi(arr[i - 1], arr[i]);
k=1;
} }
left =k;
for (int j = left; j< right;j++)
if (stremp(arr[j].MaSP, arr[j+1].MaSP)>0) Hoanvi(arr[j], arr[j+1));
k=);
} }
Trang 22DA SAP XEP
HIEU ROM
Phi
Hình 2.13: Kết quả chạy của chương trình sắp xếp Shaker Sort
2.9 Sắp xếp điện thoại bằng mã sản phẩm dựa vào Selection Sort :
2.9.1 Chương trình con :
Thực hiện sắp xếp đựa vào Mã sản phẩm (Mã khóa)
Đề sắp xếp điện thoại bằng mã sản phẩm, ta thực hiện như sau:
- _ void Hoanvi (Dienthoai&a, Dienthoai&b):Hỗ trợ đôi chỗ hai phần tử khi sắp
xếp
- void SelectionSort (Dienthoai arr[] , int n , char x[]): H6 tro sap xép, chon phan
tử nhỏ nhất rồi đưa về đầu bảng và lặp liên tục cho đến khi kết thúc
/Địïnh nghĩa hàm Selection Sort bằng mã sán phầm
void SelectionSort(Dienthoal arr[], int n )
Trang 232.9.2 Kiểm tra : (Hàm main kiểm tra ctc)
Hình 2.14: Kết quả chạy của chương trình sắp xếp Selection Sort
2.10 Sắp xếp điện thoại với mã sản pham bang Interchange Sort :
2.10.1 Chương trình con :
Thực hiện sắp xếp đựa vào Mã sản phẩm (Mã khóa)
Đề sắp xếp sản phâm bằng mả sản phâm, cần xây dựng như sau:
- _ void Hoanvi (Dienthoai &a, Dienthoai &b): Hỗ trợ đôi chỗ hai phần tử khi sắp xếp
- void InterchangeSort (Dienthoai arr[], int n): H6 tro sap xép, bat dau tu dau mang, tìm các nghịch thê của phan tử này và hoán vị nêu có Lặp lại từ phân tử
kế tiếp cho đến khi được sắp xếp
//Dinh nghĩa hàm hoán vị
Trang 24void Hoanvi(Dienthoai& a, Dienthoai& b)
/Định nghĩa hàm Interchange Sort bằng mã sán phẩm
void InterchangeSort(Dienthoai arr[], int n)
2.10.2 Kiểm tra : (Hàm main kiểm tra ctc)
//Kiém tra ham Interchange Sort :
cout <<" DANH SACH BAN DAU "<<endl;
Trang 252.10.3 Kết quả chạy :
Hình 2.15: Kết quả chạy của chương trình sắp xếp Interchange Sort
2.11 Sắp xếp điện thoại bằng mã sản phẩm với Bubble Sort :
2.11.1 Chương trình con ;
Thực hiện sắp xếp đựa vào Mã sản phâm (Mã Khóa)
Đề sắp xếp sản phẩm điện thoại bằng mã sản phẩm, ta xây dựng :
- _ void Hoanvi (Dienthoai &a, Dienthoai &b): Hỗ trợ đôi chỗ hai phần tử khi sắp
xếp
- void BubbleSort (Dienthoai arr[], int n): Hỗ trợ sắp xếp, xuất phát từ cuối dãy
và hoán vị các cặp nghịch thê kế tiếp nhau Lặp lại cho đến khi mảng được sắp
xếp
//Dinh nghĩa hàm hoán vi
void Hoanvi(Dienthoai& a, Dienthoai& b)
/Định nghĩa hàm Bubble Sort bằng mã sán phầm
void BubbleSort(Dienthoai arr[], int n)
Trang 262.11.2 Kiểm tra : (Hàm main kiểm tra ctc)
//Kiêm tra hàm Bubble Sort :
cout <<" DANH SACH BAN DAU "<<endl;
Hình 2.16: Kết quả chạy của chương trình sắp xếp Bubble Sort
2.12 Sắp xếp sản phẩm điện thoại với mã sản phẩm bang Insertion Sort :
2.12.1 Chương trình con ;
Thực hiện sắp xếp điện thoại với Mã sản phẩm (Mã khóa)
Đề thực hiện sắp xếp bằng mã sản phẩm, ta cần xây đựng như sau:
- void InsertionSort (Dienthoai arr[], int n): Hỗ trợ sắp xếp, chia mảng cần sắp xếp thành 2 mảng con: mảng T chứa arr[0], mảng P chứa phần còn lại Chọn I phần tử arr[i] trong P, tim vị trí thích hợp chèn arr[i] vào mảng T và lặp lại cho đến khi mảng P rỗng
//Dinh nghia ham Insertion Sort bang m4 san pharm:
void InsertionSort(Dienthoai arr[], int n)
t
20