Báo cáo tiến độ bài tập lớn quản lý kinh doanh của cửa hàng thời trang

30 12 0
Báo cáo tiến độ bài tập lớn quản lý kinh doanh của cửa hàng thời trang

Đ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

Chức năng bài toán :1.Nhập xuất dự liệu của các đối tượng 2.Đọc và lưu danh sách dữ liệu từ file 3.Bổ sung một phần tử vào danh sách 4.loại bỏ một phần tử khỏi danh sách 5.Hiện danh sách

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN

-BÁO CÁO TIẾN ĐỘ BÀI TẬP LỚNMÔN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

TÊN ĐỀ TÀI:

QUẢN LÝ KINH DOANH CỦA CỬA HÀNG THỜI TRANG

Danh sách sinh viên:

Giảng viên hướng dẫn:Ths Nguyễn Thị Quỳnh Như

Trang 2

Mục lục

XÁC ĐỊNH BÀI TOÁN 2

XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN 4

Phần 1: xác định cấu trúc dữ liệu biểu diến bài toán 4

Phần 2: Xác định input và output của chức năng bài toán 6

 Phân công nhiệm vụ

Mô tả bài toán cần làm và yêu cầu chi tiết

Phát biểu bài toán

Xác định các đối tượng cần quản lý

Liệt kê các chức năng cần thực hiện

Phần 1 Phân công nhiệm vụ :

1 Trần Kim Quang Vinh : Danh sách liên kết đơn 2 Đức Lộc: Danh sách liên kết đôi

3 Nam Khánh: Ngăn xếp 4 Đức Thành: Hàng đợi Phần 2 Phát biểu bài toán :

Bài toán quản lý kinh doanh của cửa hàng thời trang" là một nhiệm vụ phức tạp và đa chiều, trong đó bạn cần quản lý nhiều đối tượng và khía cạnh khác nhau để đảm bảo hoạt động kinh doanh của cửa hàng được thực hiện một cách hiệu quả và có lợi nhuận Dưới đây là các đối tượng quan trọng cần được quản lý trong bài toán này:

Các đối tượng:

1 Sản phẩm: là những thứ được cung cấp cho khách hàng với các thuộc tính như mã sản phẩm, tên sản phẩm, loại sản phẩm, đơn giá, số lượng, tình trạng sản phẩm (cũ hoặc mới).

2 Hóa đơn: giúp cho nhân viên có thể thống kê dễ dàng về số lượng sản phẩm bán ra theo từng ngày với các thuộc tính như mã hóa đơn, ngày lập, mã khách hàng, mã sản phẩm, số lượng mua, thành tiền.

2

Trang 3

Phần 3 Cơ sở dữ liệu bài toán

Phần 4 Chức năng bài toán :

1.Nhập xuất dự liệu của các đối tượng 2.Đọc và lưu danh sách dữ liệu từ file 3.Bổ sung một phần tử vào danh sách 4.loại bỏ một phần tử khỏi danh sách 5.Hiện danh sách sản phẩm cũ và mới

5.Sắp xếp danh sách sản phẩm theo đơn giá giảm dần -tăng dần 6.Sắp xếp danh sách sản phẩm theo số lượng giảm dần-tăng dần 7.Sắp xếp danh sách hóa đơn theo ngày lập tăng dần

8.Sắp xếp danh sách hóa đơn theo số lượng mua giảm dần 9.Tìm kiếm đơn 2 đối tượng theo giá trị bất kì

10.Thống kê số lượng sản phẩm đã bán ra được nhập từ bàn phím 11.Thống kê sản phẩm cũ mà khách hàng đã mua

12.Tính tổng tiền bán ra trong 1 ngày

13.Tìm sản phẩm được mua ít mua nhất-nhiều nhất 14.Tính tổng tiền sản phẩm cũ trong cửa hàng Tuần 2 (24/10)

Trang 4

XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN

1 Mô tả CTDL được tổ chức để lưu trữ cho bài toán ứng với CTDL đượcphân công.

1 Liệt kê Input và Output ứng với từng chức năng đã nêu ở tuần 1

Phần 1: xác định cấu trúc dữ liệu biểu diến bài toán

1.Mô tả ctdl được tổ chức để lưu trữ cho bài toán ứng với ctdl đã được phân công

struct SANPHAM {

int maSanPham, soLuong, donGia;

string tenSanPham, loaiSanPham, tinhTrang;

Trang 5

sanPham info; struct nodeSP *next; struct nodeSP *prev; Struct nodeHD *next; Struct nodeHD *prev;

Phần 2: Xác định input và output của chức năng bài toán

Nhập và Xuất dữ liệu của các đối tượng (sản phẩm và hóa đơn):

Trang 6

Sản phẩm: Thông tin sản phẩm mới (maSanPham, tenSanPham, loaiSanPham, donGia, soLuong, tinhTrangSanPham).

Hóa đơn: Thông tin hóa đơn mới (maHoaDon, ngayLap, maKhachHang, maSanPham, soLuongMua, thanhTien).

Sản phẩm: Thông tin sản phẩm đã nhập hoặc thông báo lỗi (nếu có) Hóa đơn: Thông tin hóa đơn đã nhập hoặc thông báo lỗi (nếu có) Đọc và Lưu danh sách dữ liệu từ file:

Tên file hoặc đường dẫn tới file chứa dữ liệu Loại đối tượng (sản phẩm hoặc hóa đơn) Output:

Danh sách dữ liệu (sản phẩm hoặc hóa đơn) hoặc thông báo lỗi (nếu có) Bổ Sung một phần tử vào danh sách:

Sản phẩm: Thông tin sản phẩm mới (maSanPham, tenSanPham, loaiSanPham, donGia, soLuong, tinhTrangSanPham).

Hóa đơn: Thông tin hóa đơn mới (maHoaDon, ngayLap, maKhachHang, maSanPham, soLuongMua, thanhTien).

Loại đối tượng (sản phẩm hoặc hóa đơn) Output:

Danh sách sau khi bổ sung hoặc thông báo lỗi (nếu có) Loại bỏ một phần tử khỏi danh sách:

Mã đối tượng cần loại bỏ.

Loại đối tượng (sản phẩm hoặc hóa đơn).

6

Trang 7

Danh sách sau khi loại bỏ hoặc thông báo lỗi (nếu có) Hiện danh sách sản phẩm cũ và mới:

Loại sản phẩm (cũ hoặc mới) Output:

Danh sách sản phẩm theo loại hoặc thông báo lỗi (nếu có) Sắp xếp danh sách sản phẩm theo đơn giá giảm dần hoặc tăng dần: Input:

Loại sắp xếp (giảm dần hoặc tăng dần) Output:

Danh sách sản phẩm đã sắp xếp theo loại hoặc thông báo lỗi (nếu có) Sắp xếp danh sách sản phẩm theo số lượng giảm dần hoặc tăng dần: Input:

Loại sắp xếp (giảm dần hoặc tăng dần) Output:

Danh sách sản phẩm đã sắp xếp theo loại hoặc thông báo lỗi (nếu có) Sắp xếp danh sách hóa đơn theo ngày lập tăng dần:

Input: Không cần input.

Output: Danh sách hóa đơn đã sắp xếp theo ngày lập tăng dần hoặc thông báo lỗi (nếu có).

Sắp xếp danh sách hóa đơn theo số lượng mua giảm dần: Input: Không cần input.

Trang 8

Output: Danh sách hóa đơn đã sắp xếp theo số lượng mua giảm dần hoặc thông báo lỗi (nếu có).

Tìm kiếm đơn 2 đối tượng theo giá trị bất kì: Input: Giá trị cần tìm kiếm.

Output: Danh sách sản phẩm hoặc hóa đơn thỏa mãn giá trị hoặc thông báo không tìm thấy.

Thống kê số lượng sản phẩm đã bán ra được nhập từ bàn phím: Input: Số lượng cần thống kê.

Output: Số lượng sản phẩm đã bán ra hoặc thông báo lỗi (nếu có) Thống kê sản phẩm cũ mà khách hàng đã mua:

Input: Không cần input.

Output: Danh sách sản phẩm cũ mà khách hàng đã mua hoặc thông báo lỗi (nếu có).

Tính tổng tiền bán ra trong 1 ngày: Input: Ngày cần thống kê.

Output: Tổng tiền bán ra trong ngày hoặc thông báo lỗi (nếu có) Tìm sản phẩm được mua ít mua nhất-nhiều nhất:

Input: Không cần input.

Output: Danh sách sản phẩm được mua ít nhất và nhiều nhất hoặc thông báo lỗi (nếu có).

8

Trang 9

Tính tổng tiền sản phẩm cũ trong cửa hàng: Input: Không cần input.

Output: Tổng tiền sản phẩm cũ trong cửa hàng hoặc thông báo lỗi (nếu có) Tuần 3 (31/10)

XÁC ĐỊNH CÁC THUẬT TOÁN

Xây dựng sơ đồ thuật toán biểu diễn cho từng chức năng tương ứng ởtuần 1 và mô tả chi tiết các thuật toán cơ bản được dùng của bài toán

1 Danh sách liên kết đơn (Trần Kim Quang Vinh) a Nhập danh sách

- Sơ đồ :

b Hiện danh sách

Trang 10

- Sơ đồ :

c Thuật toán thêm phần tử

Thêm phần tử vào đầu danh sách

 Nếu danh sách rỗng thì:

 Phần tử đầu tiên chính là phần tử mới thêm vào

 Phần tử đầu cũng là phần tử cuối

 Nếu danh sách khác rỗng:

 Phần tử mới trỏ vào phần tử đầu

 Phần tử đầu chính là phần tử mới thêm vào

Thêm phần tử vào cuối danh sách

 Nếu danh sách rỗng thì:

 Phần tử đầu tiên chính là phần tử mới thêm vào

 Phần tử đầu cũng là phần tử cuối

 Nếu danh sách khác rỗng:

 Phần tử cuối trỏ đến phần tử mới thêm vào

 Phần tử mới thêm vào trở thành phần tử cuối mới

Thêm phần tử vào giữa danh sách tại vị trí đã biết

Thêm phần tử p vào sau phần tử q xác định

 Nếu phần tử q rỗng Không thêm được⇒

10

Trang 11

 Nếu phần tử q khác rỗng:

 Phần tử mới trỏ tới phần tử đứng sau phần tử q

 Phần tử q trỏ tới phần tử mới thêm vào

 Nếu q là phần tử cuối cùng thì phần tử mới trở thành phần tử cuối cùng

- Sơ đồ :

d Thuật toán hủy

Hủy phần tử đầu danh sách

 Nếu không có phần tử đầu, không xóa được

 Nếu có phần tử đầu:

 Lưu phần tử đầu tạm thời → lưu vào p

 Chuyển phần tử đầu tới phần tử tiếp theo

 Xóa phần tử đã được lưu tạm → xóa p

 Nếu danh sách chỉ có một phần tử, khi xóa phần tử đi thì phần tử cuối cùng cũng không còn.

- Sơ đồ :

Trang 12

Hủy phần tử p đứng sau phần tử q xác định trước

 Nếu không có phần tử q → không xóa được

 Nếu có phần tử q:

 Lưu phần tử sau q tạm thời → lưu vào p

 Nếu có phần tử p, chuyển con trỏ phần tử q tới phần tử tiếp theo sau p

 Xóa phần tử sau q đã được lưu tạm → xóa p

 Nếu không có phần tử p thì không xóa được

 Nếu p là phần tử cuối thì sau khi xóa p, q trở thành phần tử cuối - Sơ đồ :

12

Trang 13

Hủy một phần tử có khóa k

Bước 1: Tìm phần tử p có khóa k và phần tử q đứng trước nó Bước 2:

 Nếu p khác rỗng → hủy p khỏi danh sách

 Ngược lại → thông báo không có k - Sơ đồ:

Trang 14

e Thuật toán tìm kiếm

Tìm kiếm phần tử có khóa k

Bước 1: p trỏ từ đầu danh sách: p = Q.Head

Bước 2: Kiểm tra danh sách còn phần tử không và nếu chưa tìm thấy

Hoán vị nội dung phần tử

 Cho chạy con trỏ p từ đầu đến cuối danh sách

 Cho chạy con trỏ q từ sau phần tử p đến cuối danh sách

 Trực tiếp hoán đổi thành phần data trong mỗi nút, còn thứ tự liên kết các nút không thay đổi.

- Sơ đồ :

14

Trang 15

2 Danh sách liên kết đôi (Trần Đức Lộc)

Trang 16

c Thuật toán thêm

 Thêm phần tử vào đầu danh sách

 Phần tử trước phần tử đầu là phần tử mới

 Phần tử đầu chính là phần tử mới chèn vào - Sơ đồ :

16

Trang 17

 Thêm phần tử vào cuối danh sách

 Nếu danh sách rỗng

 Phần tử cuối là phần tử mới thêm

 Phần tử cuối cũng là phần tử đầu

 Nếu danh sách khác rống

 Phần tử sau phần tử cuối là phần tử mới

 Phần tử trước phần tử mới là phần tử cuối

 Phần tử cuối là phần tử mới chèn - Sơ đồ :

 thêm phần tử vào trước q

 Nếu phần tử q rỗng thì không thêm được

 Nếu phần tử q khác rỗng nghĩa là tồn tại phần tử q

 Phần tử sau phần tử mới là q

Trang 18

 Nếu tồn tại phần tử p trước q nghĩa là p không phải là phần tử đầu

Thêm phần tử vào sau q

 Nếu phần tử q rỗng thì không chèn được

18

Trang 19

 Nếu phần tử q khác rỗng nghĩa là tồn tại phần tử q:

d Thuật toán xóa

 Xóa phần tử đầu danh sách

 Nếu không có phần tử đầu, không xóa được

 Nếu danh sách không rỗng:

Trang 20

 Lưu phần tử đầu vào p

 Phần tử đầu mới là phần tử sau phần tử đầu hiện tại

 Phần tử trước phần tử đầu mới là rỗng

 Xóa p

 Nếu phần tử đầu mới là rỗng thì đuôi cũng là rỗng

 Xóa phần tử cuối danh sách

 Nếu danh sách không rỗng

 Lưu phần tử cuối vào p

 Phần tử cuối mới là phần tử trước phần tử cuối hiện tai

 Phần tử sau phần tử cuối mới là rỗng

 Nếu q không phải là phần tử cuối

 Lưu phần tử sau q tạm thời vào p

 Phần tử sau q mới sẽ là phần tử sau p

 Nếu p là nút cuối thì q sẽ là nút cuối mới, ngược lại thì phần tử trước phần tử sau p mới là phần tử q

 Nếu q không phải là phần tử đầu

 Lưu phần tử trước q tạm thời vào p

 Phần tử trước q mới sẽ là phần tử trước p

 Nếu p là nút đầu thì q sẽ là nút đầu mới, ngược lại thì phần tử sau phần tử trước p mới là phần tử q

 Xóa p - Sơ đồ :

20

Trang 21

 Xóa phần tử có khóa k

 Tìm phần tử có khóa k, gọi p là nút chứa khóa k

 Nếu p rỗng thì không cần hủy

 Ngược lại thì hủy p khỏi danh sách e Thuật toán tìm kiếm

 Gọi p là phần tử đầu danh sách

 Xét lần lượt từ p đến khi p rỗng, nếu tìm thấy k thì thoát

 Hiện p

f Thuật toán sắp xếp

 Gọi p là phần tử đầu danh sách, q xuất phát từ p

 Xét đến khi q rỗng, nếu p lớn hơn q thì hoán vị

 Lặp lại đến khi p rỗng - Sơ đồ :

Trang 22

3 Ngăn xếp (Nguyễn Nam Khánh) a.Nhập danh sách trên file -Khởi tạo danh sách rỗng -Nhập số lượng (n) sách

-Duyệt từng i=1 cho đến khi i<= n Với mỗi 1 phần tử ta thêm 1 thông tin sách vào sau danh sách

Trang 23

c.Xóa phần tử đầu

-Kiểm tra danh sách không rỗng -Lưu phần tử đầu vào p

-Chuyển phần tử đầu tới phần tử bên cạnh -Xóa phần tử đã được lưu trong p -> Xóa p

-Kiểm tra: nếu danh sách chỉ có 1 phần tử, khi xóa đi phần tử cuối không còn.

d.Đếm phần tử trong ngăn xếp -Bước 1: khởi tạo biến đếm = 0

Trang 24

-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 -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm VD: Đếm số sách có giá nhỏ hơn x

+ Sơ đồ thuật toán:

e.Tìm kiếm

- Bước 1: p= Q.Head; //p trỏ từ đầu danh sách

-Bước 2: Kiểm tra danh sách còn phần tử và nếu chưa tìm thấy phần tử thì lặp trong khi (p!=NULL) và (p->Info != k) thì p = p -> Next;

- Bước 3: Nếu p != NULL thì p trỏ đến phần tử cần tìm Ngược lại thì không tìm thấy phần tử cần tìm

*Sơ đồ:

24

Trang 25

f.Đếm phần tử trong ngăn xếp -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 -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm VD: Đếm số sách có giá nhỏ hơn x

+ Sơ đồ thuật toán:

4 Hàng đợi (Nguyễn Đức Thành) a Nhập danh sách

*Mô tả thuật toán:

Nhập n danh sách và thông tin

Chạy từ i=1->n thì sau mỗi lần duyệt thêm 1 phần tử vào danh sách -Nếu i>n thì kết thúc thuật toán

*Sơ đồ thuật toán

Trang 26

b: Xuất danh sách

*Mô tả thuật toán: Duyệt từ đầu dến cuối danh sách Với mỗi lần duyệt xuất ra màn hình thông tin

*Sơ đồ thuật toán:

c:Thêm dữ liệu vào danh sách *Mô tả thuật toán:

-Nếu hàng đợi rỗng thì p->next = NULL Ta gán Q.Head = Q.Tail = NULL -Nếu hàng đợi khác rỗng ta cho p->next = NULL , Q.Tail->next Ta gán Q.Tail=p

*Sơ đồ thuật toán:

26

Trang 27

d:Sắp xếp danh sách hóa đơn theo số lượng *Mô tả thuật toán:

-Gán i=Q.Head -j=i->next(1)

-Trong khi j!=NULL thì

Nếu i->info.sl >j->info.sl thì đổi chỗ i->info.sl và j-<ifo.sl j=j->next

Nếu i!=NULL thì lặp lại(1) Ngược lại thì dừng *Sơ đồ thuật toán:

e: Tìm kiếm hóa đơn theo tên khách hàng

Trang 28

*Mô tả thuật toán:

-Khai báo biến để nhập thông tin khách hàng cần tìm

-Duyệt danh sách để tìm phần tử có chứa tên giống tên vừa nhập -Xuất ra màn hình dữ liệu hóa đơn khách hàng vừa tìm được

Tuần 4 (14/11)

KIỂM THỬ - LẬP BỘ TEST

Xây dựng bộ dữ liệu Input

Cho biết kết quả khi chạy từng chức năng tương ứng trên bộ dữ liệu Input đó

menu chức năng:

28

Trang 29

Danh sách sản phẩm

Danh sách hóa đơn

Trang 30

Thêm đối tượng

30

Ngày đăng: 08/04/2024, 12:51

Tài liệu cùng người dùng

Tài liệu liên quan