Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật - Công nghệ thông tin | Đại học Mở Hà Nội

Cùng với sự phát triển mạnh mẽ của Khoa học – Kỹ thuật – Công nghệ, thị
trường điện thoại di động hiện nay cũng phát triển mạnh mẽ không kém với nhiều loại mẫu mã sản phẩm khác nhau từ các loại điển thoại phổ biến dòng đen trắng như nokia 1280, nokia 110i, ..
Tài liệu được sưu tầm giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kì thi sắp tới. Mời bạn đọc đón xem !

VIỆN ĐẠI HỌC MỞ NỘI
KHOA CÔNG NGH THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
MÔN CẤU TRÚC DỮ LIỆU GIẢI THUẬT
ĐỀ I
XÂY DNG BÀI TOÁN QUN KINH DOANH
LAPTOP
SỬ
DỤNG
DANH
SÁCH
LIÊN
KẾT
ĐƠN
Giáo viên ớng dẫn: Ths. Trịnh Thị Xuân
Sinh viên thực hiện
Lớp
Nội, năm 2022
MỤC LỤC
1. Giới thiệu đề tài ................................................................................................................... 3
2. Phân tích đề i ..................................................................................................................... 3
2.1. Dữ liệu cần lưu trữ trong đề tài .................................................................................. 3
2.2. Các chức năng cần thực hiện ..................................................................................... 4
2.3. Thiết kế menu ............................................................................................................ 5
3. Phân tích chương trình ......................................................................................................... 6
3.1. Thao tác khai báo t viện: ....................................................................................... 6
3.2. Thao tác khai báo cấu trúc dữ liệu: ............................................................................ 6
3.3. Thao tác khởi tạo Node .............................................................................................. 7
3.4. Thao tác nhập dữ liệu: ............................................................................................... 7
3.5. Thao tác hiện toàn bộ danh sách đã nhập: ............................................................... 10
3.6. Thao tác chèn thêm vào đầu danh sách một điện thoại mới .................................... 12
3.7. Thao tác chèn thêm điện thoạio cuối danh sách: ................................................ 14
3.8. Thao tác chèn thêm điện thoại vào sau một điện thoại theo .............................. 16
3.9. Thao tác xóa điện thoại theo .............................................................................. 18
3.10. Thao tác xóa điện thoại mới được tm .................................................................. 21
3.11. Thao tác xóa điện thoại theo tên điện thoi ............................................................. 23
3.12. Thao tác đếm số lượng điện thoại trong danh sách: ................................................ 26
3.13. Thao tác đếm số lượng điện thoại có đơn giá < = 1000.000: .................................. 27
3.14. Thao tác đếm số lượng điện thoại có đơn giá <= 2000.000: ................................... 28
3.15. Thao tác đếm số lượng điện thoại có đơn giá trên 2000.000: .................................. 30
3.16. Thao tác sắp xếp danh ch tăng dần theo đơn giá .................................................. 31
3.17. Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn g ................................ 32
3.18. Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng Db” ........................ 34
3.19. Thao tác tìm kiếm theo ...................................................................................... 35
3.20. Thao tác tìm kiếm điện thoại theo tên: .................................................................... 36
3.21. Thao tác tìm kiếm điện thoại đơn giá trong một khoảng: ................................... 38
3.22. Thao tác tìm kiếm điện thoại theo loi .................................................................... 40
3.23. Thao tác tìm kiếm điện thoại theo hãng sản xuất .................................................... 41
3.24. Thao tác ghi danh sách điện thoại đã nhập vào file LIST_DT ................................ 43
3.25. Thao tác lấy thông tin danh sách điện thoại từ file đã ghi ....................................... 45
3.26. Thao tác hiển thị thông tin của điện thoại có đơn g thấp nhất .............................. 47
3.27. Thao tác hiển thị thông tin của điện thoại có đơn g cao nhất ............................... 48
3.28. Thao tác tính tổng thành tiền của đơn giá tất cả điện thoại trong danh sách: .......... 50
3.29. Chức năng tính trung bình cộng của đơn giá tất cả điện thoại trong danh sách: ..... 51
3.30. Thao tác thoát khỏi chương trình: ........................................................................... 52
3.31. Code của chương trình chính: .................................................................................. 53
2
1.
Giới thiệu đề tài
- Đề tài: Bài toán quản kinh doanh điện thoại.
- Cùng với sự phát triển mạnh mẽ của Khoa học Kỹ thuật Công nghệ, thị
trường điện thoại di động hiện nay cũng phát triển mạnh mẽ không kém với nhiều
loại mẫu sản phẩm khác nhau từ các loại điển thoại phổ biến dòng đen trắng như
nokia 1280, nokia 110i, .... cho đến các dòng điện thoại cao cấp như vertu, iphone,
samsung galaxy , …. để thuận tiện cho việc quản kinh doanh điện thoại thì
cần một phần mềm tối ưu hoa nhất.
2.
Phân tích đề i
2.1.
Dữ liệu cần lưu trữ trong đề tài
- Các dữ liệu cần quản lý:
MaSanPham kiểu: string
TenSanPham kiểu: string
SoLuong kiểu: int
NuocSx kiểu: char
TrangThai kiểu: int
DonGia kiểu: double
ThanhTien kiểu: double
- Bộ dữ liệu đã nhập:
(ANH Hùng bổ sung cho đủ thông tin tren nha)
Tên
Phân loi
Hãng SX
Tình trạng
Đơn giá
3
2.2.
Các chức năng cần thực hiện
- Các chức năng của chương trình:
0.
Thoat Chuong Trinh\n";
1.
Them Mot Laptop Moi Vao Danh Sach;
2.
Xoa Mot Laptop Theo Ma;
3.
Dem So Luong Laptop Trong Danh Sach;
4.
Dem So Luong Laptop Co Don Gia <= x;
5.
Dem So Luong Laptop Co Don Gia <= y;
6.
Dem So Luong Laptop Co Don Gia > z;
7.
Sap Xep Tang Dan Theo Don Gia Laptop;
8.
Sap Xep Giam Dan Theo Don Gia Laptop;
9.
Hien Toan Bo Danh Sach Laptop";
10.
Hien Toan Bo Danh Sach Laptop Tinh Trang 'da ban;
11.
Tim Kiem Theo Ma Laptop";
12.
Tim Kiem Theo Ten Laptop\n";
13.
Tim Kiem Theo Don Gia Trong Khoang [a->b];
14.
Tim Kiem Theo Loai Laptop";
16. Dua Ra Thong Tin Laptop Co Don Gia Thap Nhat;
17. Dua Ra Thong Tin Laptop Co Don Gia Cao Nhat;
18. Tong Thanh Tien Cua Tat Ca Laptop;
4
2.3.
Thiết kế menu
CAC CHUC NANG CUA CHUONG TRINH
0.
Thoat Chuong Trinh\n";
1.
Them Mot Laptop Moi Vao Danh Sach;
2.
Xoa Mot Laptop Theo Ma;
3.
Dem So Luong Laptop Trong Danh Sach;
4.
Dem So Luong Laptop Co Don Gia <= x;
5.
Dem So Luong Laptop Co Don Gia <= y;
6.
Dem So Luong Laptop Co Don Gia > z;
7.
Sap Xep Tang Dan Theo Don Gia Laptop;
8.
Sap Xep Giam Dan Theo Don Gia Laptop;
9.
Hien Toan Bo Danh Sach Laptop";
10.
Hien Toan Bo Danh Sach Laptop Tinh Trang 'da ban;
11.
Tim Kiem Theo Ma Laptop";
12.
Tim Kiem Theo Ten Laptop\n";
13.
Tim Kiem Theo Don Gia Trong Khoang [a->b];
14.
Tim Kiem Theo Loai Laptop";
16.
Dua Ra Thong Tin Laptop Co Don Gia Thap Nhat;
17.
Dua Ra Thong Tin Laptop Co Don Gia Cao Nhat;
18.
Tong Thanh Tien Cua Tat Ca Laptop
19.
Doc thong tin từ file.
3.
5
4.
Phân tích chương trình
4.1.
Thao tác khai báo thư viện:
4.2.
Thao tác khai báo cấu trúc dữ liệu:
4.3.
Thao tác khởi tạo Node:
4.4.
Thao tác nhp dữ liệu: Anh sửa theo thông tin trên
- Để quản kinh doanh điện thoại thì công việc cần thiết ghi lại tất cả
thông tin của tất cả các mẫu điện thoại đang được bán và đã được bán.
- Các thông tin cần lưu trữ gồm:
điện thoại
Tên điện thoại
Phân loại
Hãng sản xuất
Tình trạng
Đơn giá
- Kết quả khi chạy:
6
4.5.
Thao tác hiện toàn bộ danh sách đã nhập:
Sau khi nhập một hoặc một danh sách điện thoại thì danh sách đó cần được
in ra màn hình.
- Kết quả khi chạy:
7
4.6.
Ba
8
4.7.
Thao tác chèn thêm điện thoại vào cuối danh ch:
- Code:
9
- Kết quả khi chạy:
Danh sách điện thoại sau khi thêm vào một điện thoại mi
10
4.8.
Thao tác chèn thêm điện thoại vào sau một điện thoại theo mã:
Khi muốn thêm một điện thoại với nào đó vào sau một vị trí sẵn
- Kết quả khi chạy:
Danh sách điện thoại sau khi thêm điện thoại mi
4.9.
Thao tác xóa điện thoại theo mã:
Nếu không muốn một phần tử nào đó tồn tại trong danh sách ta thực hiện
chức năng xóa.
- Kết quả khi chạy:
11
Danh sách điện thoại sau khi xóa
4.10.
Thao tác xóa điện thoại mới được thêm:
- Kết quả khi chạy:
12
4.11.
Thao tác xóa điện thoại theo tên điện thoại:
- Kết quả khi chạy:
Danh sách điện thoại sau khi xóa
4.12.
Thao tác đếm số lượng điện thoại trong danh sách:
chức năng này cho ra kết quả số lượng của toàn bộ điện thoại trong danh
sách.
13
4.13.
Thao tác đếm số lượng điện thoại đơn giá < = 1000.000:
- Kết quả khi chạy:
4.14.
Thao tác đếm số lượng điện thoại đơn giá <= 2000.000:
- Kết quả khi chạy:
14
4.15.
Thao tác đếm số lượng điện thoại đơn giá trên 2000.000:
Chức năng này thống toàn bộ số lượng điện thoại đơn giá trên
2000.000.
- Kết quả khi chạy:
4.16.
Thao tác sắp xếp danh sách tăng dần theo đơn g:
- Kết quả khi chạy:
15
4.17.
Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn giá:
- Kết quả khi chạy:
4.18.
Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng “Db”:
- Kết quả khi chạy:
16
4.19.
Thao tác tìm kiếm theo mã:
Cho ra thông tin điện thoại khi biết điện thoại đó.
- Kết quả khi chạy:
4.20.
Thao tác tìm kiếm điện thoại theo n:
- Kết quả khi chạy:
17
4.21.
Thao tác tìm kiếm điện thoại đơn giá trong một khoảng:
- Kết quả khi chạy:
4.22.
Thao tác tìm kiếm điện thoại theo loại:
18
4.23.
Thao tác tìm kiếm điện thoại theo hãng sản xuất:
Cho ra danh sách các điện thoại trong toàn bộ danh sách khi biết hãng sản
xuất.
- Code:
void timhangsx(LIST_DT DSDT)
{
char timhangsx[40];
short int kt=0;
system("cls");
cout<<"\nMoi nhap hang san xuat dien thoai can tim: ";
fflush(stdin);
gets(timhangsx);
chuanhoa(timhangsx);
Node_DT *p;
p=DSDT.Head;
cout<<"\n========> KET QUA\n"; tieude();
while(p!=NULL)
{
if(strcmp(timhangsx,p->info.hangsx)==0)
{
hienDT(p->info);
kt++;
}
p=p->Next;
}
if(kt==0)
{
cout<<"\n========> Khong ton tai dien thoai co hang san xuat la:
"<<timhangsx;
19
cout<<"\n";
}
}
Gọi hàm nhập trong main
case 21:
{
system("cls");
if(DSDT.Head==NULL)
{
cout<<"\n========> Du lieu trong!...\n";
cout<<"\n\n";
system("pause");
system("cls");
break;
}
else
{
system("cls");
timhangsx(DSDT);
cout<<"\n\n";
system("pause");
system("cls");
break;
}
}
- Kết quả khi chạy:
20
| 1/27

Preview text:

VIỆN ĐẠI HỌC MỞ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
MÔN CẤU TRÚC DỮ LIỆU GIẢI THUẬT ĐỀ TÀI
XÂY DỰNG BÀI TOÁN QUẢN KINH DOANH
LAPTOP SỬ DỤNG DANH SÁCH LIÊN KẾT ĐƠN
Giáo viên hướng dẫn: Ths. Trịnh Thị Xuân
Sinh
viên thực hiện Lớp
Nội, năm 2022 MỤC LỤC
1. Giới thiệu đề tài ................................................................................................................... 3
2. Phân tích đề tài ..................................................................................................................... 3 2.1.
Dữ liệu cần lưu trữ trong đề tài .................................................................................. 3 2.2.
Các chức năng cần thực hiện ..................................................................................... 4 2.3.
Thiết kế menu ............................................................................................................ 5
3. Phân tích chương trình ......................................................................................................... 6 3.1.
Thao tác khai báo thư viện: ....................................................................................... 6 3.2.
Thao tác khai báo cấu trúc dữ liệu: ............................................................................ 6 3.3.
Thao tác khởi tạo Node .............................................................................................. 7 3.4.
Thao tác nhập dữ liệu: ............................................................................................... 7 3.5.
Thao tác hiện toàn bộ danh sách đã nhập: ............................................................... 10 3.6.
Thao tác chèn thêm vào đầu danh sách một điện thoại mới .................................... 12 3.7.
Thao tác chèn thêm điện thoại vào cuối danh sách: ................................................ 14 3.8.
Thao tác chèn thêm điện thoại vào sau một điện thoại theo mã .............................. 16 3.9.
Thao tác xóa điện thoại theo mã .............................................................................. 18
3.10. Thao tác xóa điện thoại mới được thêm .................................................................. 21
3.11. Thao tác xóa điện thoại theo tên điện thoại ............................................................. 23
3.12. Thao tác đếm số lượng điện thoại trong danh sách: ................................................ 26
3.13. Thao tác đếm số lượng điện thoại có đơn giá < = 1000.000: .................................. 27
3.14. Thao tác đếm số lượng điện thoại có đơn giá <= 2000.000: ................................... 28
3.15. Thao tác đếm số lượng điện thoại có đơn giá trên 2000.000: .................................. 30
3.16. Thao tác sắp xếp danh sách tăng dần theo đơn giá .................................................. 31
3.17. Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn giá ................................ 32
3.18. Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng “Db” ........................ 34
3.19. Thao tác tìm kiếm theo mã ...................................................................................... 35
3.20. Thao tác tìm kiếm điện thoại theo tên: .................................................................... 36
3.21. Thao tác tìm kiếm điện thoại có đơn giá trong một khoảng: ................................... 38
3.22. Thao tác tìm kiếm điện thoại theo loại .................................................................... 40
3.23. Thao tác tìm kiếm điện thoại theo hãng sản xuất .................................................... 41
3.24. Thao tác ghi danh sách điện thoại đã nhập vào file LIST_DT ................................ 43
3.25. Thao tác lấy thông tin danh sách điện thoại từ file đã ghi ....................................... 45
3.26. Thao tác hiển thị thông tin của điện thoại có đơn giá thấp nhất .............................. 47
3.27. Thao tác hiển thị thông tin của điện thoại có đơn giá cao nhất ............................... 48
3.28. Thao tác tính tổng thành tiền của đơn giá tất cả điện thoại trong danh sách: .......... 50
3.29. Chức năng tính trung bình cộng của đơn giá tất cả điện thoại trong danh sách: ..... 51
3.30. Thao tác thoát khỏi chương trình: ........................................................................... 52
3.31. Code của chương trình chính: .................................................................................. 53 2
1. Giới thiệu đề tài
- Đề tài: Bài toán quản lý kinh doanh điện thoại.
- Cùng với sự phát triển mạnh mẽ của Khoa học – Kỹ thuật – Công nghệ, thị
trường điện thoại di động hiện nay cũng phát triển mạnh mẽ không kém với nhiều
loại mẫu mã sản phẩm khác nhau từ các loại điển thoại phổ biến dòng đen trắng như
nokia 1280, nokia 110i, .... cho đến các dòng điện thoại cao cấp như vertu, iphone,
samsung galaxy , …. Và để thuận tiện cho việc quản lý kinh doanh điện thoại thì
cần một phần mềm tối ưu hoa nhất.
2. Phân tích đề tài
2.1. Dữ liệu cần lưu trữ trong đề tài
- Các dữ liệu cần quản lý:
• MaSanPham– kiểu: string
• TenSanPham– kiểu: string • SoLuong– kiểu: int • NuocSx– kiểu: char • TrangThai– kiểu: int • DonGia– kiểu: double
• ThanhTien– kiểu: double
- Bộ dữ liệu đã nhập:
(ANH Hùng bổ sung cho đủ thông tin tren nha) Mã Tên Phân loại Hãng SX Tình trạng Đơn giá 3
2.2. Các chức năng cần thực hiện
- Các chức năng của chương trình: 0. Thoat Chuong Trinh\n"; 1.
Them Mot Laptop Moi Vao Danh Sach; 2. Xoa Mot Laptop Theo Ma; 3.
Dem So Luong Laptop Trong Danh Sach; 4.
Dem So Luong Laptop Co Don Gia <= x; 5.
Dem So Luong Laptop Co Don Gia <= y; 6.
Dem So Luong Laptop Co Don Gia > z; 7.
Sap Xep Tang Dan Theo Don Gia Laptop; 8.
Sap Xep Giam Dan Theo Don Gia Laptop; 9.
Hien Toan Bo Danh Sach Laptop"; 10.
Hien Toan Bo Danh Sach Laptop Tinh Trang 'da ban; 11. Tim Kiem Theo Ma Laptop"; 12. Tim Kiem Theo Ten Laptop\n"; 13.
Tim Kiem Theo Don Gia Trong Khoang [a->b]; 14. Tim Kiem Theo Loai Laptop"; 16.
Dua Ra Thong Tin Laptop Co Don Gia Thap Nhat; 17.
Dua Ra Thong Tin Laptop Co Don Gia Cao Nhat;
18. Tong Thanh Tien Cua Tat Ca Laptop; 4
2.3. Thiết kế menu
CAC CHUC NANG CUA CHUONG TRINH 0. Thoat Chuong Trinh\n"; 1.
Them Mot Laptop Moi Vao Danh Sach; 2. Xoa Mot Laptop Theo Ma; 3.
Dem So Luong Laptop Trong Danh Sach; 4.
Dem So Luong Laptop Co Don Gia <= x; 5.
Dem So Luong Laptop Co Don Gia <= y; 6.
Dem So Luong Laptop Co Don Gia > z; 7.
Sap Xep Tang Dan Theo Don Gia Laptop; 8.
Sap Xep Giam Dan Theo Don Gia Laptop; 9.
Hien Toan Bo Danh Sach Laptop"; 10.
Hien Toan Bo Danh Sach Laptop Tinh Trang 'da ban; 11. Tim Kiem Theo Ma Laptop"; 12. Tim Kiem Theo Ten Laptop\n"; 13.
Tim Kiem Theo Don Gia Trong Khoang [a->b]; 14. Tim Kiem Theo Loai Laptop"; 16.
Dua Ra Thong Tin Laptop Co Don Gia Thap Nhat; 17.
Dua Ra Thong Tin Laptop Co Don Gia Cao Nhat;
18. Tong Thanh Tien Cua Tat Ca Laptop 19. Doc thong tin từ file. 3. 5
4. Phân tích chương trình
4.1. Thao tác khai báo thư viện:
4.2. Thao tác khai báo cấu trúc dữ liệu:
4.3. Thao tác khởi tạo Node:
4.4. Thao tác nhập dữ liệu: Anh sửa theo thông tin trên
- Để quản lý kinh doanh điện thoại thì công việc cần thiết là ghi lại tất cả
thông tin của tất cả các mẫu điện thoại đang được bán và đã được bán.
- Các thông tin cần lưu trữ gồm: • Mã điện thoại • Tên điện thoại • Phân loại • Hãng sản xuất • Tình trạng • Đơn giá - Kết quả khi chạy: 6
4.5. Thao tác hiện toàn bộ danh sách đã nhập:
Sau khi nhập một hoặc một danh sách điện thoại thì danh sách đó cần được in ra màn hình. - Kết quả khi chạy: 7 4.6. Ba 8
4.7. Thao tác chèn thêm điện thoại vào cuối danh sách: - Code: 9 - Kết quả khi chạy:
Danh sách điện thoại sau khi thêm vào một điện thoại mới 10
4.8. Thao tác chèn thêm điện thoại vào sau một điện thoại theo mã:
Khi muốn thêm một điện thoại với mã nào đó vào sau một vị trí có sẵn - Kết quả khi chạy:
Danh sách điện thoại sau khi thêm điện thoại mới
4.9. Thao tác xóa điện thoại theo mã:
Nếu không muốn một phần tử nào đó tồn tại trong danh sách ta thực hiện chức năng xóa. - Kết quả khi chạy: 11
Danh sách điện thoại sau khi xóa
4.10. Thao tác xóa điện thoại mới được thêm: - Kết quả khi chạy: 12
4.11. Thao tác xóa điện thoại theo tên điện thoại: - Kết quả khi chạy:
Danh sách điện thoại sau khi xóa
4.12. Thao tác đếm số lượng điện thoại trong danh sách:
chức năng này cho ra kết quả là số lượng của toàn bộ điện thoại trong danh sách. 13
4.13. Thao tác đếm số lượng điện thoại đơn giá < = 1000.000: - Kết quả khi chạy:
4.14. Thao tác đếm số lượng điện thoại đơn giá <= 2000.000: - Kết quả khi chạy: 14
4.15. Thao tác đếm số lượng điện thoại đơn giá trên 2000.000:
Chức năng này thống kê toàn bộ số lượng điện thoại có đơn giá trên 2000.000. - Kết quả khi chạy:
4.16. Thao tác sắp xếp danh sách tăng dần theo đơn giá: - Kết quả khi chạy: 15
4.17. Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn giá: - Kết quả khi chạy:
4.18. Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng “Db”: - Kết quả khi chạy: 16
4.19. Thao tác tìm kiếm theo mã:
Cho ra thông tin điện thoại khi biết mã điện thoại đó. - Kết quả khi chạy:
4.20. Thao tác tìm kiếm điện thoại theo tên: - Kết quả khi chạy: 17
4.21. Thao tác tìm kiếm điện thoại đơn giá trong một khoảng: - Kết quả khi chạy:
4.22. Thao tác tìm kiếm điện thoại theo loại: 18
4.23. Thao tác tìm kiếm điện thoại theo hãng sản xuất:
Cho ra danh sách các điện thoại trong toàn bộ danh sách khi biết hãng sản xuất. - Code: void timhangsx(LIST_DT DSDT) { char timhangsx[40]; short int kt=0; system("cls");
cout<<"\nMoi nhap hang san xuat dien thoai can tim: "; fflush(stdin); gets(timhangsx); chuanhoa(timhangsx); Node_DT *p; p=DSDT.Head;
cout<<"\n========> KET QUA\n"; tieude(); while(p!=NULL) {
if(strcmp(timhangsx,p->info.hangsx)==0) { hienDT(p->info); kt++; } p=p->Next; } if(kt==0) {
cout<<"\n========> Khong ton tai dien thoai co hang san xuat la: "< 19 cout<<"\n"; } } Gọi hàm nhập trong main case 21: { system("cls"); if(DSDT.Head==NULL) {
cout<<"\n========> Du lieu trong!...\n"; cout<<"\n\n"; system("pause"); system("cls"); break; } else { system("cls"); timhangsx(DSDT); cout<<"\n\n"; system("pause"); system("cls"); break; } } - Kết quả khi chạy: 20