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

inngay thông tin về tài liệu bạn cần tìm kiếm nhứng thứ bổ ích

87 95 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

Định dạng
Số trang 87
Dung lượng 913,38 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Input: mã sách,tên sách,năm xuất bản,số lượng,đơn giá Input: mã nhân viên,  Input: Nhập mã sách, tên sách, nhà xuất bản, năm xuât bản, đơn giá 2 Xuất danh sách trên file  Output: Da

Trang 1

VIỆN ĐẠ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

Đề tài:

Bài toán quản lý bán sách tại của hàng

Giáo viên hướng dẫn: Nguyễn Thùy Linh

Sinh viên thực hiện: Đoàn Ngô Hiếu - 1710A02

Phan Hoài Nam - 1710A02 Trần Hà Vi - 1710A02 Chu Thị Trang - 1710A02

Hà Nội - 2018

Trang 2

1 Mô tả bài toán

Bài toán quản lý bán sách tại cửa hàng sách nhằm hỗ trợ cho các nhân viên quản lý bán hàng kiểm tra lượng sách trong cửa hàng, số lượng sách thêm,bớt trong quá trình xuất và bán hàng của cửa hàng trên máy tính nhằm giúp choviệc quản lý các hoạt động của cửa hàng thuận tiện và nhanh chóng hơn Đồngthời bài toán quản lí bán sách còn giúp nhân viên của cửa hàng sách sắp xếp,tìm kiếm, thống kê các đầu sách của cửa hàng mọi cách chính xác và nhanhchóng Ngoài ra còn cho biết doanh thu của cửa hàng qua mỗi tháng để cửahàng có thể đưa ra chiến lược kinh doanh hợp lí

2 Các đối tượng cần quản lí

- Sách : Tên sách, Nhà xuất bản, Giá bán, Giá nhập, Số lượng bán, Số lượng nhập

- Hóa đơn : Tên sách bán, Số lượng bán, Nhân viên bán,…

- Nhân viên: Họ tên, Ngày sinh, Số giờ làm, Lượng sách bán được,…

- Khách hàng:Mã khách hàng, Tên khách hàng, Địa chỉ, Số lượng sách đã mua,

II Cấu trúc dữ liệu

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

Trang 3

struct Node{

sach info;

Trang 4

 Input: mã sách,tên sách,năm xuất bản,số lượng,đơn giá

 Input: mã nhân viên,

 Input: Nhập mã sách, tên sách, nhà xuất bản, năm xuât bản, đơn giá

2 Xuất danh sách trên file

 Output: Danh sách sách bao gồm: mã sách,tên sách,năm xuất bản,số lượng,đơn giá

 Output : Danh sách bao gồm: mã sách, tên sách, nhà xuất bản, năm xuât bản, đơn giá

3 Thêm sách vào đầu danh sách

 Input: mã sách,tên sách,năm xuất bản,số lượng,đơn giá

 Output: Danh sách sách sau khi thêm

4 Thêm dữ liệu vào cuối danh sách

 Input: mã sách,tên sách,năm xuất bản,số lượng,đơn giá

 Output: Danh sách sách sau khi thêm sách

5 Xoá sách đầu tiên trong danh sách

 Input: Danh sách sách đầy đủ bao gồm: mã sách,tên sách,năm xuấtbản,số lượng,đơn giá

 Output: Danh sách đã xóa sách đầu tiên

6 Xoá sách cuối cùng của danh sách

 Input: Danh sách sách đầy đủ bao gồm: mã sách,tên sách,năm xuấtbản,số lượng,đơn giá

 Output: Danh sách đã xóa sách cuối cùng

7 Xoá sách theo mã sách

 Input: mã sách cần xóa

 Output: Danh sách sách sau khi xóa

8 Sắp xếp danh sách theo năm xuất bản

 Input: Sắp xếp theo năm xuất bản, so sánh năm xuất bản của từng sách

Trang 5

10 Tính tổng số tiền sách đã bán được

 Input: Nhập số tiền đã bán được

 Output: Tổng số tiền sách đã bán

11 Đếm số sách có giá bán được nhỏ hơn 1 số x nào đó

 Input: Đếm theo soluong, so sánh với x

 Output: soluong sách nhỏ hơn x

12 Đếm số lượng sách có giá trị lớn hơn 1 số x nào đó

 Input: : Đếm theo soluong, so sánh với x

 Output: soluong sách lớn hơn x

IV Xác định thuật toán

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

Để thực hiện các chức năng trên ta cần:

• Khai báo cấu trúc dữ liệu

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

• Khai báo danh sách liên kết đơn

• Khởi tạo danh sách rỗng

• Tạo nút mới với thành phần dữ liệu x

1 Nhập danh sách:

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

ο Nhập n danh sách và thông tin của từng đầu sách

ο Cho i chạy từ i=1->n, nếu i<= n thì sau mỗi lần duyệt them 1 phần tử vào sau danh sách

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

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

Trang 6

2.In danh sách:

*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 mỗi đầu sách

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

Trang 7

3 Thêm dữ liệu vào đầu danh sách:

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

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

o Phần tử đầu là phần tử mới chèn vào p

o Phần tử cuối cũng chính là phần tử đầu

• Nếu danh sách khác rỗng thì :

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

o Phần tử đầu là phần tử mới chèn vào p

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

4 Xóa dữ liệu của danh sách:

a, xóa phần tử ở đầu danh sách:

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

ο Kiểm tra danh sách không rỗng

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

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

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

ο Kiểm tra: nếu danh sách chỉ có 1 phần tử, khi xóa phần tử đi thì phần

tử cuối cùng không còn

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

Trang 8

• Ngược lại thông báo không có đầu sách mã x

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

Trang 9

5 Sắp xếp:

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

+ Mô tả thuật toán: Sử dụng 2 con trỏ p, q dể duyệt và so sánh với nhau

Trang 10

thì hoán đổi giá trị của p và q cho nhauVd: Sắp xếp tăng dần, nếu p -> infor.tt > q -> infor.tt  Hoan doi(p-> infor.tt , q -> infor.tt);

 q = q -> next;

o p = p -> next;

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

Trang 11

o Ngược lại thì không tìm thấy phần tử cần tìm

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

Trang 12

* Sơ đồ:

Trang 13

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

1.Xử lý nhập:

+ Mô tả thuật toán

• Khởi tạo danh sách rỗng

• Tạo nút mới p với thành phần dữ liệu x

• Nhập n sản phẩm

• Duyệt từ i=1 đến i<= n Với mỗi lần duyệt, lưu 1 phần tử vào p

• Ngược lại i>n thì kết thúc

+ Sơ đồ thuật toán

K t thúc ế

Nh p â n

Thêm node

B t đ u ắ ầ

Trang 14

+ 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 mỗi sản phẩm

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

3 Thêm sản phẩm vào danh sách

3.1 Thêm vào đầu danh sách

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

Trang 15

K t thúc ế

Sai

Trang 16

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

3.3 Thêm vào sau sản phẩm có mã x

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

• Tìm phần tử chứa mã x (q), nếu q rỗng => không chèn được

• Nếu q là phần tử cuối danh sách => chèn p vào cuối, ngược lại thì:

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

 Phần tử mới trỏ về q

 Phần tử q trỏ tới phần tử mới chèn vào

 Phần tử sau q trỏ về phần tử mới chèn vào + Sơ đồ:

DQ.Head==NULL

DQ.Head = p DQ.Tail = DQ.Head

Đúng

DQ.Tail -> next = p

p -> prev = DQ.Tail DQ.Tail = p

K t thúc ế

Sai

B t đ uắ ầ

Trang 17

4 Xoá sản phẩm khỏi danh sách

4.1 Xoá phần tử ở đầu danh sách

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

• Kiểm tra danh sách không rỗng

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

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

Trang 18

4.2 Xóa sản phẩm ở cuối danh sách

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

• Kiểm tra danh sách không rỗng

• Lưu phần tử cuối tạm thời vào p

• Chuyển phần tử cuối tới phần tử bên trái

DQ.Tail = DQ.Tail -> prev

DQ.Tail -> next = NULL

Đúng

K t thúc ế

Sai

Trang 19

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

 So sánh giá trị của phần tử p và q nếu không đúng trật tự thì hoán đổi giá trị của p và q cho nhau

Vd: Sắp xếp tăng dần, nếu p -> infor.tt > q -> infor.tt  Hoan doi(p-> infor.tt , q -> infor.tt);

 q = q -> next;

q==NULL

q = q -> prev

q -> next = NULL

Trang 21

3 Ngăn xếp

1. Nhập danh sách trên file

- Khởi tạo danh sách rỗng

Kết thúc

Bắt đầu

Nh p n â

Thêm node

Trang 22

Cho con trỏ tiếp của của nút đầu trỏ đến nó Nút này bây giờ trở thành nút

đầu của ngăn xếp

Trang 23

Node p p=(Node)malloc(sizeof(Node))

p->item=x

p->info=info p->next=s->top s->top=p

q->head=q->tail

End

Đúng

Sai p!=NULL

4 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

Trang 24

Begin

End

p=new node p=Q.head q.head=q.head->next free(p)

Trang 25

6.Tìm kiếm

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ìmNgược lại thì không tìm thấy phần tử cần tìm

Trang 26

7.Đế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 đếmVD: Đếm số sách có giá nhỏ hơn x

p=p->Next

Trang 27

Đúng Sai

4.Hàng đợi

Để thực hiện các chức năng trên ta cần:

• Khai báo cấu trúc dữ liệu

• Khai báo cấu trúc một nút trong h àng đ ợi

• Khởi tạo hàng đợi

• Kiểm tra hàng đợi rỗng

1 Nhập danh sách

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

ο Nhập n danh sách và thông tin của từng đầu sách

Bắt đầu

Kết thúc

p=Q.head

p=p-> Next tổng ++ p=!NULL

Trang 28

sau danh sách

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

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

2.Xuất danh sách

*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 mỗi đầu sách

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

Trang 29

3.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,p->prev=NULL,Ta gán

end Q.Tail==NULL

p->next=NULL p->prev=NULL Q.Head=p Q.Tail=p Đúng

Q.Tail->N ext=p Q.Tail=p

Trang 31

Mô tả thuật toán:

• Nếu Q.head==NULL thì kết thúc chương trình

• Nếu Q.head khác NULL ta gán p=Q.head; Q.Head=p->nextQ.Head->prev=NULL

5.Sắp xếp danh sách theo giá bán tăng dần

Mô tả thuật toán

Sai

Trang 32

N ếu i->info.gia > j->info.gia thì đổi chỗ i->info.gia

Sai Đúng

j=i->next

j!=NULL

Đúng Sai

i=i->next

i->info.gia > j->info.gia

Đổi chỗ i->info.gia và j->info.gia Đúng Sai j=j->next

end

Trang 33

6.Tìm kiếm dữ liệu theo mã sách

Mô tả thuật toán

• Gán p=Q.head

• Trong khi p!=NULL(b2)Nếu p-> info masach==k thì in ra thông tin rồi kết thúcNếu không thì p=p->next rồi lặp lại b2

begin

I

p=Q.head p!=NULL

Sai

Đ úng

end

p=p->next p-> info.masach==k

Đ S

Nhap k

In thông tin

q=p

Trang 35

Mô tả thuật toán

• Gán max =Q.head-> info.slxuat

• Trong khi p!=NULL(b2)

N ếu max<p->info.slxuat thì max= p->info.slxuat

N ếu không p=p->next rồi lặp lại b2

Trang 36

Mô tả thuật toán

• Nhập x

• Gán dem=0,p=Q.head

• Trong khi p!=NULL(b2)

N ếu p-> info >x th ì dem++

N ếu kh ông p=p->next rồi lặp lại b2

p!=NULL

p-> info.sl>x

p=p->next

Đúng dem+=1

end Hiển thị dem

Trang 42

printf("\nDoc File thanh cong."); }

Trang 43

for(q=p->Next;q!=NULL;q=q->Next) {

Trang 44

%d",dem);

Trang 47

printf("\nTen sach: %s",p->info.ten);

printf("\nNam xuat ban: %d",p->info.nxb); printf("\nSo luong: %d",p->info.sl);

printf("\nDon gia: %2.2f",p->info.dg);

Trang 48

struct Dnode// nut lien ket

{

KH info;

Dnode * next;

Trang 51

void Nhap(KH &x)

Trang 52

}

Trang 53

void xoadau(list &Q)

free(p);

Trang 54

{

p=Q.tail;

}}

inds(Q);

Trang 55

r->next=p->next;

delete p;

break;

}r=p;

}}

if(Q.head==NULL)

Trang 56

tg=p->info;

p->info=q->info;

q->info=tg;

}}

inds(Q);

}

void sxgiam(list &Q)

{

Trang 57

Dnode *p,*q;

KH tg;

for(p=Q.head;p;p=p->next)

for(q=p->next;q;q=q->next){

if(p->info.slsachmua<q->info.slsachmua){

tg=p->info;

p->info=q->info;

q->info=tg;

}}

dem++;

break;

}

Trang 58

break;

}else dem=0;

}

Trang 59

break;

}else dem=0;

Trang 61

if(p->info.slsachmua<min->info.slsachmua){

Trang 62

printf("\n | 0.thoat ");

Trang 63

printf("\n | 1.nhap danh sach ");

printf("\n | 2.in danh sach ");

Trang 64

printf("\n nhap sp them cuoi ds:");

Nhap(x);p=getnode(x);chencuoi(Q,p);break;case 6:system("cls");xoadau(Q);break;

/*case 7:system("cls");xoacuoi(Q);break;

case 8:system("cls");xoatheoma(Q);break;*/case 9:system("cls");

printf("\n danh sach sap xep theo chieu tang so luong:");

sxtang(Q);break;

case 10:system("cls");

Trang 65

printf("\n danh sach sap xep theo chieu giam so luong");

Trang 67

// them 1 phan tu vao queue

void Put(Queue &Q,KH x)

Trang 69

printf("\n Nhap thong tin hoa don thu %d: ",i);

printf("\n Nhap ma hoa don: ");

Trang 71

//ham doc du lieu hoa don tu file DSKHQ.DAT

int DocFileKHQ(Queue &Q)

Trang 74

printf("\n1.Nhap danh sach hoa don (Queue)");

printf("\n2.Doc du lieu hoa don tu file (Queue)");

printf("\n3.In danh sach hoa don (Queue)");

printf("\n4.Tim kiem hoa don theo ma (Queue)");

printf("\n5.Dem so luong tat ca cac hoa don co trong danh sach (Queue)");

printf("\n6.Liet cac hoa don co sach xuat ban nam \"2018\" (Queue)");

printf("\n7.Xoa hoa don o dau danh sach (Queue)");

Trang 75

printf("\n->Moi ban chon: ");

Trang 80

printf("\nNhap ma nhan vien: ");

Trang 82

10s","MaGV","HoTen","NgaySinh","Gioitinh","tongluon g");

Trang 84

{

Trang 86

printf("\t1:Nhap danh sach nhan vien\n");

printf("\t2:Hien danh sach nhan vien\n");

printf("\t3:Xoa giang vien theo ma nhan vien\n");

printf("\t4:Tim kiem mot giang vien theo ma nhan vien\n");

printf("\t5:Tim kiem mot giang vien theo ten nhan vien\n");

printf("\t6:Luu file nhan vien\n");

printf("\t7:Doc file nhan vien\n");

Ngày đăng: 06/12/2018, 00:00

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w