Tải bản đầy đủ (.pdf) (39 trang)

Chủ đề 16 xây dựng chương trình quản lý bán hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.27 MB, 39 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

<b>KHOA CÔNG NGHỆ THÔNG TIN</b>

<b>---BÁO CÁO BÀI TẬP LỚN</b>

<b>MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢITHUẬT</b>

<b>Chủ đề 16: Xây dựng chương trình quản lý bán hàng </b>

<b> Giảng viên hướng dẫn : ThS. Nguyễn Thị TâmSinh viên thực hiện : Mai Tuyết Anh - 2210A01</b>

<b> Hà Thị Anh Thư - 2210A04 Lại Văn Phố - 2110A05</b>

<b> Đinh Xuân Phương - 2210A01</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆNHỌ VÀ TÊNCƠNG VIỆC</b>

<b>1. XÁC ĐỊNH BÀI TỐN</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b> 1.1. Phát biểu bài toán</b>

Chương trình quản lý bán hàng là một cơng cụ hữu ích giúp một cửa hàng có thể quản lý quá trình bán hàng một cách hiệu quả. Việc xây dựng chương trình quản lý bán hàng giúp các doanh nghiệp có thể quản lý được các thơng tin về sản phẩm, khách hàng, đơn hàng, doanh thu, lợi nhuận, và các hoạt động kinh doanh khác, từ đó giúp tăng hiệu quả kinh doanh và giảm thiểu rủi ro.

Quản lý bán hàng sẽ bao gồm các thơng tin sau:

<small>●</small> NHÂN VIÊN trong cửa hàng có thơng tin như mã nhân viên là một mã duy nhất, tên nhân viên, số điện thoại, ngày sinh, quê quán, hệ số lương, phụ cấp.

<small>●</small> KHÁCH HÀNG được quản lý sẽ bao gồm mã khách hàng là một mã duy nhất, tên khách hàng, giới tính, số điện thoại, phương thức thanh toán.

<small>●</small> SẢN PHẨM trong cửa hàng bao gồm mã sản phẩm là một mã duy nhất, tên sản phẩm, loại hàng, đơn giá, số lượng hàng trong kho.

<small>●</small> HOÁ ĐƠN của cửa hàng bao gồm các thơng tin mã hố đơn là một mã duy nhất, ngày lập hoá đơn, số lượng mua sản phẩm, tổng tiền.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>Nhân Viên</b>

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

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

<b>Hóa Đơn</b>

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:

1. Thêm hóa đơn vào đầu danh sách 2. Thêm hóa đơn vào cuối danh sách 3. Thêm hóa đơn sau hóa đơn chỉ định Xóa hóa đơn:

1. Xóa hóa đơn ở đầu danh sách 2. Xóa hóa đơn ở cuối danh sách 3. Xóa hóa đơn sau hóa đơn chỉ định 4. 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:

1. Danh sách hóa đơn có tổng tiền trên 50 triệu 2. Lọc hóa đơn theo mã nhân viên

3. Lọc hóa đơn theo ngày lập

4. 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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>2. XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN2.1. Các cấu trúc dữ liệu được tổ chức</b>

a, Ngăn xếp (Stack): Khách hàng: struct KhachHang {

char maKH[5], sdt[13], tenKH[30]; int gioiTinh, thanhToan;

//khoi tao danh sach rong void initKH(ListKH &Q)

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- 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!

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

=NULL thì k trỏ đến phần tử cần tìm, ngược lại khơng tìm thấy phần tử cần tìm

<b>b. Hàng đợi:</b>

DeQueue(Xóa 1 nhân viên ở đầu danh sách):

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>c. DSLK Đơi:</b>

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ử:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

+Kiểm tra xem danh sách có chỉ một phần tử hay khơng. +Nếu có, xóa phần tử đó.

+Cập nhật con trỏ đầu và cuối danh sách. +Kết thúc hàm.

- Xoá cuối của danh sách nhiều phần tử: + Nếu danh sách có nhiều hơn một phần tử:

+Di chuyển con trỏ tạm thời đến phần tử cuối cùng của danh sách. +Cập nhật con trỏ cuối danh sách để trỏ đến phần tử trước phần tử cuối cùng.

+Xóa phần tử cuối cùng.

+Giải phóng bộ nhớ của phần tử cuối cùng.

+Cập nhật con trỏ next của phần tử trước phần tử cuối cùng thành

- Kiểm tra danh sách rỗng hoặc chỉ có một phần tử: + Kiểm tra xem danh sách có phần tử nào khơng.

+ Nếu danh sách rỗng hoặc chỉ có một phần tử, kết thúc hàm vì khơng cần sắp xếp.

- Sắp xếp danh sách nhiều phần tử:

+ Sử dụng thuật toán sắp xếp nổi bọt (bubble sort) hoặc một thuật toán sắp xếp khác.

+ Lặp qua danh sách và so sánh các phần tử liên tiếp. + Nếu phần tử sau lớn hơn phần tử trước, hoán đổi chúng. + Tiếp tục quá trình này cho đến khi danh sách được sắp xếp. - Hiển thị danh sách sau khi sắp xếp:

+ Hiển thị danh sách sau khi đã sắp xếp theo yêu cầu của người dùng (tăng dần hoặc giảm dần).

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

- Kết thúc hàm:

+ Kết thúc hàm sapxepSP.

<b>d. DSLK Đơn:</b>

Sắp xếp:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

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

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Thêm sau hóa đơn chỉ định:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

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

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

for(NodeKH* c = Q.top; c != NULL; c = c->next){ if(c->data.thanhToan==2 && c->data.gioiTinh==2){

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

if(p->data.thanhToan == 2 && p->data.gioiTinh==2)

2. Code Nhân Viên (Hàng đợi) // HAM XOA DAU DANH SACH void Enqueue(Queue &Q, Node *p)

// HAM XOA CUOI DANH SACH void Dequeue(Queue &Q, NhanVien &nv)

// SAPXEP THEO LUONG TANG DAN void SapxepTheoLuong(Queue &Q)

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

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)

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)

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

{

cout << "\nThong tin san pham:"; cout << "\nMa SP: " << p->info.maSP; cout << "\nTen SP: " << p->info.tenSP; cout << "\nLoai SP: " << p->info.loaiSP; cout << "\nSo Luong: " << p->info.soLuongSP; cout << "\nDon Gia: " << p->info.donGia; return;

}

p = p->next; }

// Nếu khơng tìm thấy sản phẩm với mã tương ứng cout << "\nKhong tim thay san pham co ma " << maSP; }

// doc ghi file san pham int soLuongSP(listSP &Qsp)

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

//loai san pham

cout<<"Nhap so loai san pham khach mua: "; cin>>a.slSP;

cout<<"_Nhap danh sach san pham mua hang: "<<endl; for(int i = 0; i < a.slSP; i++){

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

void inHD (HoaDon &x){

cout<<"\n\n __HOA DON BAN HANG__

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

float sum = sumTienDSHD (ds); int count = countDSHD (ds);

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

4.2: Nhân Viên (Queue): 1. Enqueue() +Nhập thông tin:

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

+Danh sách ban đầu:

+ Danh sách sau khi xóa:

4.3: Sản Phẩm (DSLK Đôi):

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

1. In danh sách sản phẩm:

2. Tính tổng số lượng sản phẩm:

3. Tìm sản phẩm theo mã:

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

4.4: Hóa Đơn (DSLK Đơn):

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

1. Nhập danh sách hóa đơn:

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

2. In danh sách hóa đơn:

2. Tổng giá trị tất cả hóa đơn:

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

3. Trung bình cộng tất cả các hóa đơn:

4. Hóa đơn có tổng tiền lớn nhất:

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

5. Sửa 1 hóa đơn theo mã:

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

6. Sắp xếp hóa đơn tăng dần theo tổng tiền

</div>

×