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

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

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 (2.67 MB, 30 trang )

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

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

<b>---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</b>

<b>TÊN ĐỀ TÀI:</b>

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

<b>Danh sách sinh viên:</b>

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

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

<b>Mục lục</b>

<b>XÁC ĐỊNH BÀI TOÁN...2</b>

<b>XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN...4</b>

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

<b>Phần 2: Xác định input và output của chức năng bài tốn...6</b>

<small></small> Phân cơng nhiệm vụ

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

<small></small> <i>Phát biểu bài toán</i>

<small></small> <i>Xác định các đối tượng cần quản lý</i>

<small></small> <i>Liệt kê các chức năng cần thực hiện</i>

Phần 1. <b><small>Phân công nhiệm vụ</small></b> :

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. <b>Phát biểu bài toán</b> :

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.

<b>2</b>

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

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

Phần 4. <b>Chức năng bài toán :</b>

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)

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

<b>XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TỐN</b>

<i>1. Mơ tả CTDL được tổ chức để lưu trữ cho bài tốn ứng với CTDL đượcphân cơng.</i>

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

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

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;

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

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

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

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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="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).

<b>6</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="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.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="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ó).

<b>8</b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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)

<b>XÁC ĐỊNH CÁC THUẬT TỐN</b>

<i>Xây dựng sơ đồ thuật tố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 tốn cơ bản được dùng của bài toán</i>

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

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

- Sơ đồ :

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

<small></small> <i>Thêm phần tử vào đầu danh sách</i>

<small></small> Nếu danh sách rỗng thì:

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

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

<small></small> Nếu danh sách khác rỗng:

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

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

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

<small></small> Nếu danh sách rỗng thì:

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

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

<small></small> Nếu danh sách khác rỗng:

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

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

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

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

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

<b>10</b>

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

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

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

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

<small></small> 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

<small></small> <i>Hủy phần tử đầu danh sách</i>

<small></small> Nếu khơng có phần tử đầu, khơng xóa được

<small></small> Nếu có phần tử đầu:

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

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

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

<small></small> 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ơ đồ :

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

<small></small> <i>Hủy phần tử p đứng sau phần tử q xác định trước</i>

<small></small> Nếu khơng có phần tử q → khơng xóa được

<small></small> Nếu có phần tử q:

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

<small></small> 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

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

<small></small> Nếu khơng có phần tử p thì khơng xóa được

<small></small> 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ơ đồ :

<b>12</b>

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

<small></small> <i>Hủy một phần tử có khóa k</i>

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:

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

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

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

e. Thuật tốn tìm kiếm

<i>Tìm kiếm phần tử có khóa k</i>

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

<i>Hốn vị nội dung phần tử</i>

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

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

<small></small> Trực tiếp hố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ơ đồ :

<b>14</b>

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

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

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

c. Thuật toán thêm

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

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

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

<b>16</b>

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

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

<small></small> Nếu danh sách rỗng

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

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

<small></small> Nếu danh sách khác rống

<small></small> Phần tử sau phần tử cuối là phần tử mới

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

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

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

<small></small> Nếu phần tử q rỗng thì khơng thêm được

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

<small></small> Phần tử sau phần tử mới là q

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

<small></small> 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

<small></small> Nếu phần tử q rỗng thì khơng chèn được

<b>18</b>

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

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

d. Thuật tốn xóa

<small></small> Xóa phần tử đầu danh sách

<small></small> Nếu khơng có phần tử đầu, khơng xóa được

<small></small> Nếu danh sách khơng rỗng:

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

<small></small> Lưu phần tử đầu vào p

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

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

<small></small> Xóa p

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

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

<small></small> Nếu danh sách không rỗng

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

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

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

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

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

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

<small></small> 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

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

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

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

<small></small> 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

<small></small> Xóa p - Sơ đồ :

<b>20</b>

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

<small></small> Xóa phần tử có khóa k

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

<small></small> Nếu p rỗng thì khơng cần hủy

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

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

<small></small> Xét lần lượt từ p đến khi p rỗng, nếu tìm thấy k thì thốt

<small></small> Hiện p

f. Thuật tốn sắp xếp

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

<small></small> Xét đến khi q rỗng, nếu p lớn hơn q thì hốn vị

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

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="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 tố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ơ đồ:

<b>24</b>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="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 tố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 tốn

*Sơ đồ thuật tốn

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

b: Xuất danh sách

*Mơ tả thuật tố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 tốn:

c:Thêm dữ liệu vào danh sách *Mơ tả thuật tố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 tốn:

<b>26</b>

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

d:Sắp xếp danh sách hóa đơn theo số lượng *Mơ tả thuật tố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 tốn:

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

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

*Mơ tả thuật tố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

<b>Tuần 4. (14/11)</b>

<b>KIỂM THỬ - LẬP BỘ TEST</b>

<i>Xây dựng bộ dữ liệu Input</i>

<i>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 đó</i>

menu chức năng:

<b>28</b>

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

Danh sách sản phẩm

Danh sách hóa đơn

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

Thêm đối tượng

<b>30</b>

</div>

×