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

DSLKDon viduminhhoa QLBanSach

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 (139.44 KB, 5 trang )

Đề bài
/*Th™ng tin của s‡ch gồm: m‹ s‡ch, t•n s‡ch, nhˆ xuất bản, năm xuất bản, số
lượng, đơn gi‡ vˆ thˆnh tiền (= số lượng * đơn gi‡)
Cần thực hiện quản lý c‡c quyển s‡ch dưới dạng li•n kết đơn:
-Tạo danh s‡ch li•n kết đơn lưu trữ c‡c quyển s‡ch
-Nhập vˆo danh s‡ch c‡c quyển s‡ch
-In lại ds c‡c quyển s‡ch đ‹ nhập đ—
-In danh s‡ch t•n c‡c quyển s‡ch c— đơn gi‡ tr•n 50.000đ
-T“m kiếm quyển s‡ch c— m‹ lˆ k
-T“m kiếm quyển s‡ch c— t•n lˆ s
-T’nh tổng tiền tất cả c‡c quyển s‡ch c— trong danh s‡ch
-Sắp xếp danh s‡ch quyển s‡ch theo số lượng tăng dần
-Cho bit tãn quyn sch c n gi cao nht
ỗp dng c‡c y•u cầu tr•n
*/

Phần II: gợi ý triển khai
1. Khai báo cấu trúc dạng DSLK đơn để quản lý danh sách các quyển sách
struct Sach
{
int maS;
char tenS[30];
char nhaXB[30];
int namXB;
int soL;
float donG;
float thanhT;
};
struct Node
{
Sach info;


struct Node *next;
};
struct List
{
Node *Head;
Node *Tail;
};

2. Cài đặt các CTC cơ bản gồm: nhập thông tin 1 quyển sách, in thông tin 1 quyển sách
void nhapSach(Sach &x)
{
printf("Ma Sach:"); scanf("%d",&x.maS);
printf("Ten Sach:");
fflush(stdin); gets(x.tenS);
printf("Nha Xuat Ban:");
fflush(stdin); gets(x.nhaXB);
printf("Nam Xuat Ban:"); scanf("%d",&x.namXB);
printf("So Luong:");scanf("%d",&x.soL);
printf("Don Gia:");scanf("%f",&tg); x.donG = tg;

1


x.thanhT = x.soL * x.donG;
}
void inSach(Sach x)
{
printf("\n %4d",p->info.maS);
printf("%15s", p->info.tenS);
printf("%15s", p->info.nhaXB);

printf("%7d",p->info.namXB);
printf("%7d",p->info.soL);
printf("%7.2f",p->info.donG);
printf("%12.2f",p->info.thanhT);
}

3. Định nghĩa hàm khởi tạo danh sách rỗng, hàm tạo 1 nút chứa thông tin 1 quyển sách,
hàm chèn thêm 1 nút vào đầu danh sách, hàm xóa một nút đầu danh sách
void init(List &Q)
{
Q.Head = NULL;
Q.Tail = NULL;
}
Node *getNode(Sach x)
{
Node *p;
p = new Node();
if(p==NULL)
{
printf("\n Khong thanh cong");
exit(0);
}
p->info = x;
p->next = NULL;
return p;
}
void chenDau(List &Q, Node *p)
{
if(Q.Head == NULL)
{

Q.Head = p;
Q.Tail =p;
}
else
{
p->next = Q.Head;
Q.Head = p;
}
}
void xoaDau(List &Q)

2


{
Node *p;
if(Q.Head != NULL)
{
p = Q.Head;
Q.Head = Q.Head->next;
free(p);
if(Q.Head==NULL)
Q.Tail = NULL;
}
}

4. Định nghĩa các CTC thực hiện xử lý với danh sách các quyển sách
void nhapDSSach(List &Q)
{
int n,i;

Node *p;
Sach x;
float tg;
printf("Nhap so Sach:"); scanf("%d",&n);
for(i=0;i{
nhapSach(x);
p = getNode(x);
chenDau(Q,p);
}
}
void inDSSach(List Q)
{
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)
inSach(p->info);
}
void InSachGia50(List Q)
{
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)
if(p->info.donG > 50000)
inSach(p->info);
}

5. Cài đặt CTC tìm kiếm quyển sách và sắp xếp các quyển sách
Node *TimSachMa(List Q,int k)
{
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)

if(p->info.maS==k)
break;

3


return p;
}
Node *TimSachTen(List Q,char s[])
{
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)
if(strcmp(p->info.tenS,s)==0)
break;
return p;
}
void TinhTongTien(List Q)
{
float s=0;
Node *p;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.thanhT;
printf("\n Tong tien cac quyen sach la: %7.2f", s);
}
void SXSachSoLuongTang(List &Q)
{
Node *p,*q;
Sach tg;
for(p=Q.Head; p!=NULL; p=p->next)
for(q=p->next; q!=NULL; q=q->next)

if(p->info.soL > q->info.soL)
{
tg = p->info;
p->info = q->info;
q->info = tg;
}
}
void TenSachMax(List Q)
{
float max;
Node *p;
max = p->info.donG;
for(p=Q.Head; p!=NULL; p=p->next)
if(p->info.donG > max)
max = p->info.donG;
printf("\n Ten cac quyen sach co don gia cao nhat la \n");
for(p=Q.Head; p!=NULL; p=p->next)
if (p->info.donG == max)
printf("\n %15s",p->info.tenS);
}

6. Áp dụng các yêu cầu trên
4


int main()
{
List Q;
Node *p;
init(Q);

nhapDSSach(Q);
printf("\n\n\n DSCB da nhap:");
inDSSach(Q);
printf("\n\n\n Quyen sach cc gia 50.000:");
InSachGia50(Q);
int k;
printf("\n\n Nhap ma can tim:"); scanf("%d",&k);
p=TimSachMa(Q,k);
if(p==NULL)
printf("\n Khong tim thay \n");
else
printf("\n Co tim thay \n");

char s[30];
printf("\n\n Nhap t•n can tim:"); gets(s);
p=TimSachTen(Q,s);
if(p==NULL)
printf("\n Khong tim thay \n");
else
printf("\n Co tim thay \n");
TinhTongTien(Q);
SXSachSoLuongTang(Q);
printf("\n\n\n DS Sach da sap xep So luong tang dan:");
inDSSach(Q);
TenSachMax(Q);
xoaDau(Q);
printf("\n\n\n DSCB da thuc hien huy ptu dau: ");
inDSSach(Q);
//getch();
}


5



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×