Friday, May 20, 2016

Chương trình thêm tìm kiếm một mặt hàng sử dụng danh sách liên kết đơn bằng C

//Họ Tên: Trần Văn Linh
// Msv:581597
//Lớp:K58QLTT



#include<stdio.h>


#include<stdlib.h>
#include<string.h>



//==Khai bao cau truc


typedef struct mathang mathang;
struct mathang
{
char maMH[10];//mã mặt hàng
char tenMH[256];//tên mặt hàng
float gia;//Giá của mặt hàng
int soLuong;//Số lượng của mặt hàng
};
typedef struct node node;
struct node
{
mathang infor;
node *link;
}*F=NULL;

//Khai bao ham
void inSert(mathang infor);// Hàm bổ sung một mặt hàng vào ds
void  Search(char maMH[]);//Hàm tìm kiếm một mặt hàng 
void Delete();//Hàm xóa mặt hàng ở cuối ds
void in();//Hàm hiện tất cả các mặt hàng có trong ds

//===Chuong trinh chinh===
int  main()
{
mathang matHang;
char maMH[10];
char tl;



do
{
fflush(stdin);
printf("Nhap ma mat hang: ");
gets(matHang.maMH);
printf("Nhap ten mat hang: ");
gets(matHang.tenMH);
printf("Nhap so luong: ");
scanf("%d",&matHang.soLuong);
printf("Nhap gia: ");
scanf("%f",&matHang.gia);
fflush(stdin);

inSert(matHang);

printf("Co nhap nua khong (c/k):");
scanf("%c",&tl);
}while(tl=='c'||tl=='C');
printf("\n\nDanh sach da nhap la: \n");
in();
Delete();
printf("\n\nDanh sach sau khi xoa: \n");
in();
printf("\n\nNhap ma mat hang ban can tim kiem: ");
scanf("%s",&maMH);
Search(maMH);
return 0;
}
//----Dinh nghia ham----
void inSert(mathang infor)
{
node *N;
N=(node*)malloc(sizeof(node));
N->infor=infor;
N->link=NULL;
//bo sung
N->link=F;
F=N;
}
//-----------------------------------------------
void  Search(char  maMH[])
{
node *P,*Q;
P=F;
mathang tim;
strcpy(tim.maMH,"");
strcpy(tim.tenMH,"");

     //Tìm node có mã mặt hàng là maMH
while(P)
{
if((strcmp(P->infor.maMH,maMH))==0)
{
tim=P->infor;
break;
}
P=P->link;
}

if((strcmp(tim.tenMH,""))==0)
{
printf("Mat hang khong tim thay");
return;
}

printf("Ma mat hang: %s\n",tim.maMH);
printf("Ten ten mat hang: %s\n",tim.tenMH);
printf("Ma so luong: %d\n",tim.soLuong);
printf("Ten gia: %f\n\n",tim.gia);
}
//-----------------------------------------------------------
void Delete()
{
node *P;
node *Q;
P=F;
       //Tìm nút cuối danh sách
while(P)
{
if(P->link==NULL)
break;
Q=P;
P=P->link;
}

if(P)
{
if(P==F)//Trường hợp danh sách chỉ có 1 nút
F=F->link;
else
{
Q->link=P->link;
}
free(P);
}
}
//-------------------------------------------------------------------
void in()
{
node *P;
P=F;
while(P)
{
printf("Ma mat hang: %s\n",P->infor.maMH);
printf("Ten mat hang: %s\n",P->infor.tenMH);
printf("So luong: %d\n",P->infor.soLuong);
printf("Gia: %f\n\n",P->infor.gia);
P=P->link;
}
}



Kết quả khi test chương trình :





0 comments:

Post a Comment