Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

[Báo cáo BTL] Cấu trúc dữ liệu và giải thuật - Chương trình quản lí bán hàng, Assignments of Data Structures and Algorithms

Báo cáo BTL môn Cấu trúc dữ liệu và giải thuật

Typology: Assignments

2022/2023
On special offer
30 Points
Discount

Limited-time offer


Uploaded on 12/01/2023

TuyetAnh24
TuyetAnh24 🇻🇳

5

(7)

33 documents

1 / 39

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
TRƯỜNG ĐẠI HỌC MỞ HÀ 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 VÀ GIẢI
THUẬT
Chủ đề 16: Xây dựng chương trình quản lý bán hàng
Giảng viên hướng dẫn : ThS. Nguyễn Thị Tâm
Sinh viên thực hiện : Mai Tuyết Anh - 2210A01
Hà Thị Anh Thư - 2210A04
Lại Văn Phố - 2110A05
Đinh Xuân Phương - 2210A01
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
Discount

On special offer

Partial preview of the text

Download [Báo cáo BTL] Cấu trúc dữ liệu và giải thuật - Chương trình quản lí bán hàng and more Assignments Data Structures and Algorithms in PDF only on Docsity!

TRƯỜNG ĐẠI HỌC MỞ HÀ 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 VÀ GIẢI

THUẬT

Chủ đề 16: Xây dựng chương trình quản lý bán hàng Giảng viên hướng dẫn : ThS. Nguyễn Thị Tâm Sinh viên thực hiện : Mai Tuyết Anh - 2210A Hà Thị Anh Thư - 2210A Lại Văn Phố - 2110A0 5 Đinh Xuân Phương - 2210A0 1

PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN

HỌ VÀ TÊN CÔNG VIỆC

Mai Tuyết Anh Danh sách liên kết đơn Lại Văn Phố Danh sách liên kết đôi Hà Thị Anh Thư Ngăn xếp Đinh Xuân Phương Hàng đợi

1. XÁC ĐỊNH BÀI TOÁN

Nhân Viên Nhập danh sách nhân viên In danh sách nhân viên Lưu danh sách nhân viên vào File Đọc danh sách nhân viên từ File Thêm 1 nhân viên vào cuối danh sách Xóa phần tử đầu danh sách Tìm 1 nhân viên theo mã nhân viên Hiện thông tin nhân viên có mức lương trên 2tr Hiện thông tin nhân viên có mức lương cao nhất Đếm số nhân viên có trong danh sách Sắp xếp theo thứ tự lương tăng dần Sản Phẩm Nhập danh sách sản phẩm In danh sách sản phẩm Lưu danh sách sản phẩm vào File Đọc danh sách sản phẩm từ File Thêm sản phẩm:

  1. Thêm đầu
  2. Thêm cuối
  3. Thêm sau 1 sản phẩm
  4. Thêm trước một sản phẩm Xóa sản phẩm:
  5. Xóa đầu
  6. Xóa cuối
  7. Xóa sau mã sản phẩm
  8. Xóa trước mã sản phẩm
  9. Xóa sản phẩm có mã Tìm kiếm sản phẩm theo mã

Sửa thông tin 1 sản phẩm Sắp xếp sản phẩm:

  1. Tăng theo số lượng
  2. Giảm theo số lượng Tính tổng số lượng sản phẩm đang có Tìm sản phẩm có số lượng lớn nhất Tìm sản phẩm có số lượng nhỏ nhất Hóa Đơn Nhập danh sách hóa đơn In danh sách hóa đơn Lưu danh sách hóa đơn vào File Đọc danh sách hóa đơn từ File Thêm hóa đơn:
  3. Thêm hóa đơn vào đầu danh sách
  4. Thêm hóa đơn vào cuối danh sách
  5. Thêm hóa đơn sau hóa đơn chỉ định Xóa hóa đơn:
  6. Xóa hóa đơn ở đầu danh sách
  7. Xóa hóa đơn ở cuối danh sách
  8. Xóa hóa đơn sau hóa đơn chỉ định
  9. Xóa hóa đơn theo mã Tìm kiếm một hóa đơn theo mã Sửa một hóa đơn theo mã Thống kê hóa đơn theo điều kiện:
  10. Danh sách hóa đơn có tổng tiền trên 50 triệu
  11. Lọc hóa đơn theo mã nhân viên
  12. Lọc hóa đơn theo ngày lập
  13. Danh sách hóa đơn có từ 2 đến 4 loại sản phẩm Sắp xếp hóa đơn tăng dần theo tổng tiền Tính tổng/trung bình/đếm Hóa đơn có tổng tiền lớn nhất

NhanVien data; struct Node *next; }; struct Queue { Node *Front; Node *Rear; }; c, Danh sách liên kết đôi:Sản phẩm: struct SanPham { int maSP; string tenSP; string loaiSP; float soLuongSP; float donGia; }; struct NodeSP { SanPham info; NodeSP *next; NodeSP *prev; }; struct listSP { NodeSP *head; NodeSP *tail; }; d, Danh sách liên kết đơn:Hoá đơn: struct HoaDon{ char maHD[5], ngayLap[10], mnv[5]; int slSP; SanPham dsSP[15]; double tongTien; };

struct NodeHD{ HoaDon infor; struct NodeHD *next; }; struct ListHD{ NodeHD *Head; NodeHD *Tail; }; 2.2. Xác định thuật toán a. Ngăn xếp: Đếm số lượng:

  • Bước 1: khởi tạo biến đếm = 0
  • Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách
  • Nếu p -> thanhToan == momo thì tăng biến đếm lên 1
  • Bước 3: In ra màn hình giá trị biến đếm Tìm kiếm theo mã:
  • Bước 1: k=Q.top
  • Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách theo điều kiện đã cho, nếu k!

EnQueue(Thêm 1 nhân viên vào cuối danh sách):

c. DSLK Đôi: Xóa cuối:

  • Bắt đầu hàm xoacuoiSP:
    • Khởi động hàm xoacuoiSP.
  • Kiểm tra danh sách rỗng:
    • Kiểm tra xem danh sách có phần tử nào hay không. +Nếu danh sách rỗng, kết thúc hàm.
  • Kiểm tra danh sách có một phần tử:
  • Kết thúc hàm:
    • Kết thúc hàm sapxepSP. d. DSLK Đơn: Sắp xếp:

Xóa sau hóa đơn chỉ định:

Xóa hóa đơn theo mã:

3. CÀI ĐẶT CHƯƠNG TRÌNH 1. Code Khách Hàng (Ngăn xếp) //tim kiem theo ma khach hang void SearchMaKH(ListKH Q) { int ck=0; //danh sach rong if(Q.top == NULL) { cout << "Khong co danh sach!!"<<endl; } else

char s[5]; cout <<"Nhap ma khach hang can tim: "; fflush(stdin); gets(s); for(NodeKH k=Q.top;k!=NULL;k=k->next) { if(strcmp(k->data.maKH, s) == 0) { cout << "Thong tin khach hang ma " << s << " :"<<endl; cout<<setw(7)<<"Ma KH"<<setw(3)<<"|"<<setw(30)<<"Ten KH"<<setw(3)<<"|"<<setw(5)<<"GT"<<setw(3)<<"|"<<setw(13)<<" So dien thoai"<<setw(3)<<"|"<<setw(30)<<"PT thanh toan"<<endl; cout<<setfill('-'); cout<<setw(97)<<"-"<<endl; cout<<setfill(' '); InKH(k->data); ck=1; } } } if(ck==0){ cout<< "Khong tim thay!!"<<endl; } } //thong ke //ptt la chuyen khoan void DSKH_ck(ListKH Q) { cout<<setw(7)<<"Ma KH"<<setw(3)<<"|"<<setw(30)<<"Ten KH"<<setw(3)<<"|"<<setw(5)<<"GT"<<setw(3)<<"|"<<setw(13)<<" So dien thoai"<<setw(3)<<"|"<<setw(30)<<"PT thanh toan"<<endl; cout<<setfill('-'); cout<<setw(97)<<"-"<<endl; cout<<setfill(' '); for(NodeKH c = Q.top; c != NULL; c = c->next){ if(c->data.thanhToan==1){ InKH(c->data); } } }

if(p->data.thanhToan == 2 && p->data.gioiTinh==2) { dem++; } } cout <<"\n__So khach hang nu co PTTT Tien mat: " << dem << endl; }

2. Code Nhân Viên (Hàng đợi) // HAM XOA DAU DANH SACH void Enqueue(Queue &Q, Node *p) { if(isEmpty(Q) == 1) { Q.Front = Q.Rear = p; } else { Q.Rear->next = p; Q.Rear = p; } } // HAM XOA CUOI DANH SACH void Dequeue(Queue &Q, NhanVien &nv) { if(isEmpty(Q) == 1) { cout << "Khong co nhan vien nao trong danh sach"; } else { Node *p = Q.Front; nv = p->data; Q.Front = Q.Front->next; delete p; } } // SAPXEP THEO LUONG TANG DAN void SapxepTheoLuong(Queue &Q) { for(Node *k = Q.Front; k!= NULL;k=k->next) { for(Node *g = k->next; g!= NULL;g=g->next)

if(k->data.Luong > g->data.Luong) swap(k->data, g->data); } } // NHAN VIEN CO LUONG MAX NhanVien NhanVienMax(Queue Q) { NhanVien max = Q.Front->data; for(Node *k = Q.Front;k!=NULL;k=k->next) { if(max.Luong < k->data.Luong ) max = k->data; } return max; }

3. Code Sản Phẩm (Danh sách liên kết đôi) // tinh tong so luong san pham trong danh sach void sumSoLuongSP(listSP &Qsp) { int sum = 0; NodeSP *p = Qsp.head; while (p != NULL) { sum += p->info.soLuongSP; // Cộng số lượng sản phẩm vào tổng p = p->next; // Chuyển đến phần tử kế tiếp trong danh sách } cout << "Tong so luong san pham: " << sum << endl; } // tim san pham co ma void hienThongTinTimKiem(listSP &Qsp, int maSP) { NodeSP *p = Qsp.head; while (p != NULL) { if (p->info.maSP == maSP)