1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn cấu trúc dữ liệu và giải thuật đề tài quản lý bán sách tại cửa hàng

57 10 0

Đ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

Thông tin cơ bản

Tiêu đề Quản lý bán sách tại cửa hàng
Tác giả Nguyễn Văn A, Nguyễn Văn B
Người hướng dẫn Th.s Trịnh Thị Xuân
Trường học Trường Đại học Mở Hà Nội, Khoa Công nghệ Thông tin
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 57
Dung lượng 4,69 MB

Nội dung

Xác định các đối tượng cần quản lý 3 đối tượng cần quản lý: a, Đối tượng Sách : b, Đối tượng Nhân viên: c, Đối tượng Hóa đơn... Ghi ile danh sách Sách SACH.dat b, Đối tượng Nhân Vi ên5..

Trang 1

MÔN C U Ấ TRÚC D Ữ LIỆU VÀ GIẢI THU T Ậ

ĐỀ TÀI: QUẢN LÝ BÁN SÁCH TẠI C A HÀNG Ử

Giảng viên hướng d n: Th.s ẫ Trị nh Thị Xuân

Hà Nội – 2023

Trang 2

MỤC LỤC

I XÁC ĐỊNH BÀI TOÁN Error! Bookmark not defined

1 Phát bi u bài toán.ể Error! Bookmark not de ned

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

a Đối tượng Sách 5

b Đối tượng Nhân viên 6

c Đố ượi t ng Hóa đơn ……….6

3 Các chức năng cần th c hiự ện. 7

a Đối tượng Sách 7

b Đối tượng Nhân viên 8

c Đố ượi t ng Hóa đơn……… 9

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

1 Mô t ả CTDL đượ ổ chức để lưu trữc t bài toán 10

a) Danh sách liên kết đơn 10

b) Danh sách liên kết đôi 11

2 Liệt kê Input, Output ng v i t ng chứ ớ ừ ức năng 12

III XÁC ĐỊNH CÁC THUẬT TOÁN Error! Bookmark not defined 1 Danh sách liên kết đơn Error! Bookmark not de ned 2 Danh sách liên k t képế 17

IV LẬP TRÌNH – CÀI ĐẶT 18

V KIỂM THỬ – LẬP BỘ TEST 50

Trang 3

Phần I XÁC ĐỊNH BÀI TOÁN

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

3 đối tượng cần quản lý:

a, Đối tượng Sách :

b, Đối tượng Nh ân viên:

c, Đối tượng H óa đơn

Trang 4

7 Ghi ile danh sách Sách (SACH.dat)

b, Đối tượng Nh ân Vi ên

5 Ghi ile nhân viên (NV.dat)

6 Đọc file nhân viên (NV.dat)

c, Đối tượng Hóa đơn

2 Hiện thông tin hóa đơn

5 Sắp xếp theo tổng số tiền của hóa đơn

7 Đọc file danh sách Hóa đơn(HOADON.dat)

Trang 5

a, Danh sách liên k ết đơn

tử phía trước tới phần tử phía sau

//Khai báo c ấu tr úc danh sách liên k ết đơn

Trang 6

b Danh sách liên k ết đôi

//Khai báo c u trúc danh sách liên k ấ ết đôi

Trang 7

//Khởi tạo danh s ách liên k ết đ ôi

void CreateLinkedList_Sach(LinkedList_Sach& ds_Sach)

Output: Thông tin sách được lưu trữ trong máy tính

2 Hiển thị danh sách sách

Output: Danh sách thông tin sách

3 Sắp xếp s ách theo đơn gi ăng á t dần

Input: Thông tin danh sách sách

tăng dần của đơn giá

4 Sửa th ông tin sách theo mã sách nh ập từ b àn ph ím

Input: Mã sách

5 Xóa sách theo mã sách

Input: Mã sách

6 Ghi,đọc file danh sách Sách

Trang 8

Input: Danh sách sách, tên ile

phím

7 Nhập danh sách nhân vi ên

số điện thoại của nhân viên

8 In danh sách nhân vi ên

9 Tìm ki ếm nh ân viên theo tên nhân vi ên

10 Xóa nhân viên theo mã nhân vi ên

Output: Danh sách nhân viên sau khi xóa

11 Ghi, đọc file Nh ân viên

Input: Danh sách nhân viên, tên ile

12 Nhập thông tin hóa đơn

số điện thoại, địa chỉ ố lượng, đơ, s n giá, thành tiền

13 Hiện thông tin hóa đơn

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

15 Tìm hóa đơn theo m ã hóa đơn

16 Sắp xếp tăng dần theo t ổng số tiền của h óa đơn

Output: Danh sách hóa đơn đã được sắp xếp theo tổng tiền thanh

Trang 9

17 Ghi,Đọc file danh sách hóa đơn

phím

1 Danh sách liên k ết đơn

1, Nh ập danh sách Nhân vi ên

a, Mô tả thuật toán:

- Tạo vòng l p for ch y t i = 0 i = n Vặ ạ ừ ới mỗ ần i l duy t, ệ nhập thêm một phần tử vào sau danh sách

- Nếu i > n thì k t thúc thuế ật toán

b,Sơ đồ thuật toán:

2, Hiển thị danh sách nhân viên:

b, Sơ đồ thuật toán:

Trang 10

3, Tìm ki ếm nh ân viên có tên là x v ới x nhập từ b àn ph ím

*Thu ật to án:

Bước 1: p = Q.Head;

Bước 3: Nếu p!=NULL thì trỏ p đế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

4, Xóa nhân viên có mã nhân viên là x v ới x nhập từ b àn ph ím

a, Mô tả thuật toán:

- Tìm nhân vi p có tên ên nhân vi là x và ph n t ên ầ ử q đứng trước nó

- Nếu tìm thấy nhân vi có tên là x thì h y p ra kh i xâu ên ủ ỏ

+ Nếu p là ph n tầ ử cuối, thì q là ph n t ầ ử cuối m i ớ

+ Tách ph n t ra kh i danh sách, n i ph n t q v i ph n t sau p và ầ ử ỏ ố ầ ử ớ ầ ửgiải phóng ph n tầ ử p

- Ngượ ạc l i, thông báo không có tên nhân vi ên

b, Sơ đồ thu t toậ án:

Trang 11

5, Ghi, đọc f ile danh sách nhân viên:

*Thuật toán

Bước 1: Khai báo con trỏ tệp FILE*f

Bước 2: Khởi tạo danh sách rỗng

B ước 3 M : ở v ưu fià l le với tên được nhập từ bàn ph ím

Bước 4: Nếu file rỗng thì không thể đọc file

Nếu file khác rỗng th ạo một con trỏ p cì t ó kiểu getNode

Bước 5: Đọc từ file vào getNode p

Bước 6: Chèn p vào đầu danh sách Sách

Bước 7: Kiểm tra xem đ ới ã t cuối file hay chưa?

Nếu cuối file thì chuyển sang bước 8

Ngược lại, quay lại bước 5

Bước 8: óng ile Đ

6, Nhập danh sách hóa đơn

a, Mô tả thuật toán:

- Tạo vòng l p for ch y t i = 0 i = n Vặ ạ ừ ới mỗ ần i l duy t, ệ nhập thêm m t ph n t vào sau danh sách ộ ầ ử

- Nếu i > n thì k t thúc thu t toánế ậ

b, Sơ đồ thu t tậ oán:

Trang 12

7, Hiển thị danh sách hóa đơn

a, Mô t thu t toán:ả ậ duyệt từ đầu đến cuối danh sách, v i m i lớ ỗ ần duyệt, xuất

ra màn hình thông tin của hóa đơn

b, Sơ đồ thu t toậ án:

8, Xóa hóa đơn theo m ã hóa đơn

9, Tìm hóa đơn theo m ã hóa đơn

10, S ắp xếp tăng dần theo tổng số tiền h óa đơn

a Mô t thu t toán ả ậ

S d ng 2 con trử ụ ỏ p, q để duyệt và so sánh v i nhau ớ

- p = Q.HeadHD;

- Lặp trong khi (p!=NULL)

+ q = p -> next;

+ L p trong khi (q!= NULL) ặ

* N u giá tr c a p ->info.Tong ế ị ủ > q >info.Tong thì hoán đổi giá tr ị

-c a p và q ủ

* q = q -> next;

+ p = p -> next;

Trang 21

cout << "Don Gia: "; cin >> x.DonGia;

}

//In sach

void PrintSach(Sach x)

{

cout << "\n" << setw(10) << x.MaSach;

cout << setw(20) << x.TenSach;

Trang 22

cout << setw(15) << x.SoLuong;

cout << setw(15) << x.DonGia;

cout << "\n" << setw(10) << "Ma sach";

cout << setw(20) << "Ten sach";

cout << setw(15) << "So luong";

cout << setw(15) << "Don gia";

Trang 24

cout << "\n" << setw(10) << "Ma sach";

cout << setw(20) << "Ten sach";

cout << setw(15) << "So luong";

cout << setw(15) << "Don gia";

Trang 25

bool state = fals e;

cout << "\n Nhap ma sach can chinh sua: ";

cin.ignore(); getline(cin, maSach_Update);

for (p = l.pHead; p != NULL; p = p->next)

cout << "So Luong: "; cin >> p->info.SoLuong;

cout << "Don Gia: "; cin >> p->info.DonGia;

Trang 27

//doc file sach

void ReadFile_Sach(FILE* f,LinkedList_Sach& l)

Trang 29

//chen them nut moi vao dau danh sach

void chendau(ListNV& Q, NodeNV* new_e)

Trang 31

//hien thong tin nhan vien

void hienNV(NV x)

{

cout << "\n" << setw(10) << x.maNV;

cout << setw(20) << x.tenNV;

cout << setw(10) << " \n manhanvien";

cout << setw(20) << " HotenNV";

cout << setw(20) << " SoDienThoai";

Trang 34

cout << "\n Nhap ma nhan vien can xoa: ";

cin >> mnv;

NodeNV* p = Q.Head, * q = NULL;

while (p != NULL && p->info.maNV != mnv)

Trang 35

// -HOA //

DON -// struct Thong tin sach da mua :Ten sach,so luong, don gia, thanh tien struct DichVu

Trang 39

cout << setw(5) << x.tenSach << setw(20) << x.soLuong << setw(15)

<< x.donGia << setw(15) << x.thanhTien << endl;

}

// In hoa don

void InHoaDon(HoaDon x)

{

cout << "Ma hoa don: " << x.maHD << endl;

cout << "Ten khach hang: " << x.tenKH << endl;

Trang 40

cout << "So dien thoai: " << x.soDT << endl;

cout << "Dia chi: " << x.diaChi << endl;

cout << setw(5) << "Ten sach" << setw(20) << "So luong" << setw(15)

<< "Don gia" << setw(15) << "Thanh tien" << endl;

for (int i = 1; i <= x.soLS; i++)

// Nhap ds hd theo node

// void NhapDsHoaDon(List &Q)

Trang 41

// Hà m xoá hoá đơn theo maHD

void XoaHoaDon(List& Q, char maHoaDonCanXoa [10])

{

nodeHD* p = Q.Head, * q = NULL;

while (p != NULL && p->info.maHD != maHoaDonCanXoa)

Trang 42

// Tim kiem hoa don

nodeHD* TimKiemHoaDon(List Q, char tkHD [10])

Trang 44

cout << "Sap xep thanh cong!" << endl;

}

//Doc file danh sach hoa don

void DocFile_HoaDon(FILE* f, List& Q)

//Ghi file danh sach hoa don

void GhiFile_HoaDon(FILE* f, List Q)

Trang 45

FILE* f = new FILE();

//khoi tao danh sach lien ket

cout << "\n 2.Nhan vien";

cout << "\n 3.Hoa don";

cout << "\n 0.Thoat.";

Trang 46

cout << "\n 1.Nhap thong tin sach ";

cout << "\n 2.In thong tin sach ";

cout << "\n 3.Sap xep sach theo don gia tang dan "; cout << "\n 4.Tim sach theo ten sach ";

cout << "\n 5.Sua thong tin sach theo ma sach "; cout << "\n 6.Xoa sach theo ma sach ";

cout << "\n 7.Ghi file danh sach sach(SACH.dat) "; cout << "\n 8.Doc file danh sach sach(Sach.dat) "; cout << "\n 0.Quay lai.";

cout << "\n chon: "; cin >> chon;

Trang 47

cout << "\n -NHAN VIEN - ";

cout << "\n 1.Nhap danh sach nhan vien ";

cout << "\n 2.In danh sach nhan vien ";

cout << "\n 3.Tim kiem nhan vien theo ";

cout << "\n 4.Xoa nhan vien theo ma nhan vien "; cout << "\n 5.Ghi file nhan vien ";

cout << "\n 6.Doc file nhan vien ";

cout << "\n 0.Quay lai.";

cout << "\n chon: ";

cin >> n;

switch (n)

Trang 48

cin >> chon;

char maHoaDonCanXoa[10];

Trang 51

2, In danh sách Sách

3, Sắp xếp danh sách sách theo đơn giá tăng dần

4, Tìm sách theo tên sách

Trang 52

5, Sửa thông tin sách theo mã sách

6, Xoa sach theo ma sach

7, Ghi, c file đọ

Trang 53

1, Nh p thông tin nhân viậ ên

2, In thông tin nhân viên

3, Tim kiem nhan vien theo Ten

4, Xoa nhan vien theo ma nhan vien

Trang 54

5, Ghi, đọc file NV.dat“ ”

C, Đố ượng Hóa i t đơn

1, Nh p thông tin hóa ậ đơn

Trang 55

552,In danh sách hóa đơn

Trang 56

3,Xóa hóa đơn theo mã hóa đơn

4,Tìm hóa đơn theo mã hóa đơn

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

6, Ghi, đọc file

Trang 57

57

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w