Dưới đây là chương trình của mình ạ :<
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 100
#define MAXMENU 12
struct ttBanhMi
{
char tenBanhMi[20];
char huongvi[7];
char loaiBanhMi[10];
char maBanhMi[5];
int giaBanhMi;
int soLuongBanhMiSx;
int soLuongBanhMiBan;
int soLuongBanhMiConlai;
};
typedef struct ttBanhMi BanhMi;
//menu
void showmenu();
int chonMenu();
void ThucHienMenu();
//chuc mang
void NhapSL(int &n);
void nhapDanhSachBanhMi(BanhMi a[],int n);
void nhapBanhMi (BanhMi &x);
void xuatBanhMi(BanhMi x);
void xuatDanhSachBanhMi (BanhMi a[],int n);
void xuatTheoMau (BanhMi a[],int n);
void sapXepDonGiaTang (BanhMi a[],int n);
void hoanVi (BanhMi &a,BanhMi&b);
int TimMSX (BanhMi a[],int n, char x[]);
void XuatMSX(BanhMi a[], int n);
void ThemBanhMi (BanhMi a[],int &n);
void XoatTaiVTNx (BanhMi a[],int &n,int x);
void XoaMSX (BanhMi a[],int &n);
void SapXepTen (BanhMi a[],int n);
void BanhMiGiaMAX (BanhMi a[],int n);
int TimVTMAX (BanhMi a[],int n);
int luuDSBM (BanhMi a[], int n );
int docDSBM ( BanhMi a[],int &n);
void showmenu()
{
char menu[][59]={
"** 1. Nhap Thong Tin Banh Mi Vao **",
"** 2. Xuat So Luong Banh Mi Da San Xuat **",
"** 3. Xoa Thong Tin Banh Mi Da Thay Doi **",
"** 4. Sap Xep Theo Thu Tu A->Z **",
"** 5. Them Thong Tin Cua Banh Mi Moi **",
"** 6. Tim Banh Mi Gia MAX **",
"** 7. Tim Kiem Theo Ma Cua Banh Mi **",
"** 8. Xuat Ra Banh Mi Vi Matcha **",
"** 9. Xuat Ra Gia Banh Mi Tang Tu Thap Toi Cao **",
"** 10.Doc du lieu tu file **",
"** 11.Luu du lieu tu file **",
"** 12.Thoat **",
"******************************************************"};
printf("\n******************************************************");
printf("\n** CHUONG TRINH QUAN LY BANH MI TOUS les JOUR **");
printf("\n******************************************************\n");
for(int i=0; i<MAXMENU; i++)
{
printf("%s\n", menu[i]);
}
}
int ChonMenu()
{
int chon;
showmenu();
do{
printf("\n******************************************************");
printf("\n** Ban Hay Chon Chuc Nang Tu 1 Den %d: **", MAXMENU);
printf("\n******************************************************\n");
scanf("%d", &chon);
if(chon<1||chon>MAXMENU)
printf("Gia Tri Khong Hop Le Vui Long Nhap Lai !\n");
else
break;
}while(true);
return chon;
}
void ThucHienMenu()
{
int chon, n=0;
BanhMi a[MAX];
do{
chon=ChonMenu();
switch(chon)
{
case 1:printf ("|| Nhap Danh Sach Cac Loai Banh Mi ||\n");
NhapSL(n);
nhapDanhSachBanhMi(a, n);
break;
case 2:printf ("|| Chon Chuc Nang Xuat Thong Tin Banh Mi ||\n");
xuatDanhSachBanhMi(a,n);
break;
case 3: printf ("|| Chon Chuc Nang De Xoa Thong Tin Banh Mi ||\n");
XoaMSX(a,n);
break;
case 4: printf ("|| Chon Chuc Nang De Sap Xep Theo Thu Tu A->Z,... ||\n");
sapXepDonGiaTang (a,n);
break;
case 5:printf("|| Chon Chuc Nang Them Thong Tin Cua Banh Mi ||\n");
ThemBanhMi (a,n);
break;
case 6: printf ("|| Choc Chuc Nang Tim Banh Mi Gia MAX ||\n");
BanhMiGiaMAX (a,n);
break;
case 7:printf ("|| Chon Chuc Nang Tim Kiem Theo Ma Cua Banh Mi ||\n");
XuatMSX(a,n);
break;
case 8:printf ("|| Ban Chon Xuat Ra Banh Mi Vi Matcha ||\n");
xuatTheoMau (a,n);
break;
case 9:printf ("|| Chon Chuc Nang Xuat Ra Gia Banh Mi Tang Tu Thap Toi Cao ||\n");
sapXepDonGiaTang (a,n);
break;
case 10 :printf ("||Chon chuc nang doc du lieu tu file");
if (docDSBM(a,n)==0)
printf ("\n Doc file khong thanh cong!!");
else
printf ("\nDa Doc file thanh cong!!");
break;
case 11 : printf ("|| Chon chuc nang luu du lieu tu file ");
if (luuDSBM(a,n)==0)
printf ("\n Luu file khong thanh cong!!");
else
printf ("\n Luu file thanh cong !!");
break;
case MAXMENU: printf("\n######################################################");
printf("\n## CHUONG TRINH KET THUC CAM ON BAN DA SU DUNG ##");
printf("\n######################################################");
return;
}
}while(chon!=MAXMENU);
printf("\n######################################################");
printf("\n## CHUONG TRINH KET THUC CAM ON BAN DA SU DUNG ##");
printf("\n######################################################");
}
void nhapBanhMi(BanhMi &x)
{
/*ho va ten : Nguyen Duc Vuon
20/6/2020
mota :nhap tt cho BanhMi
input :x
output: x*/
_flushall();
printf("Nhap ten Banh Mi: ");
gets(x.tenBanhMi);
printf ("\nNhap Loai Banh Mi(0: Banh Ngot , 1:Banh Man) = ");
gets(x.loaiBanhMi);
printf ("Nhap Huong Vi Banh Mi: ");
gets(x.huongvi);
printf ("Nhap Ma Banh Mi: ");
gets(x.maBanhMi);
printf ("Nhap Gia Banh Mi: ");
scanf("%d",&x.giaBanhMi);
printf ("Nhap So Luong Banh Mi San Xuat: ");
scanf("%d",&x.soLuongBanhMiSx);
printf("Nhap So Luong Banh Mi Ban Ra: ");
scanf("%d",&x.soLuongBanhMiBan);
printf("Nhap So Luong Banh Mi Con Lai : ");
scanf("%d",&x.soLuongBanhMiConlai);
}
void xuatBanhMi(BanhMi x)
{
/* ho va ten:Nguyen Duc Vuon
20/6/2020
mota:xuat ra tt BanhMi
input :x
output:x*/
printf("Ten BanhMi: %s\n ",x.tenBanhMi);
printf("Loai BanhMi: %s\n",x.loaiBanhMi);
printf("Huong Vi BanhMi: %s\n",x.huongvi);
printf("Gia BanhMi: %d\n",x.giaBanhMi);
printf("Ma BanhMi: %s\n",x.maBanhMi);
printf("So Luong BanhMi sx: %d\n",x.soLuongBanhMiSx);
printf("So Luong BanhMi Ban Ra :%d\n",x.soLuongBanhMiBan);
printf("So Luong BanhMi Con lai: %d\n",x.soLuongBanhMiConlai);
}
void nhapDanhSachBanhMi(BanhMi a[],int n)
{
/* ho va ten:Nguyen Duc Vuon
20/6/2020
motta: nhap danh sach tt cua BanhMi
intput:danh sach BanhMi
output:khong*/
for(int i=0; i<n; i++)
{
printf("Nhap Mat Hang Thu %d:\n", i+1);
nhapBanhMi(a[i]);
}
}
void xuatDanhSachBanhMi(BanhMi a[], int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta: xuat danh sach tt cua BanhMi
intput: khong
output: danh sach BanhMi*/
for(int i=0; i<n; i++)
{
xuatBanhMi(a[i]);
printf("\n");
}
}
void NhapKT(int &n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta: nhap kich thuoc so luong BanhMi
input : so luong BanhMi
output : khong */
do{
printf("\nNhap vao so luong mat hang [0..%d]: ", MAX);
scanf("%d", &n);
if(n<0||n>MAX)
printf("Nhap lai so luong!!!\n");
else
break;
}while(1);
}
void HoanVi(BanhMi &a, BanhMi &b)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta : hoan vi vi tri a va b
input khong
output khong*/
BanhMi tam=a;
a=b;
b=tam;
}
int TimMSX (BanhMi a[],int n, char x[])
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta : tim vi tri muon tim
input khong
output :vi tri x*/
for (int i=0;i<n;i++)
{
if (stricmp(a[i].maBanhMi, x)==0)
return i;
}
return -1;
}
void XuatMSX (BanhMi a[], int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta :xuat ra vi tri muon tim
input : vi tri muon tim
output: vi tri x*/
char x[5];
_flushall();
printf ("\n Nhap VAo Ma So Banh Mi Can Tim = ");
gets(x);
int vt=TimMSX(a,n,x);
if (vt==-1)
{
printf ("Ma Banh Mi Khong Khong hop Le = %s",x);
}
else
{
printf("Thong Tin Ve Ma Banh Mi Can Tim La %s:\n",x);
xuatBanhMi(a[vt]);
}
}
void XoatTaiVTNx (BanhMi a[],int &n,int x)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta : xoa thong tin tai vi tri x
input :khong
output:khong*/
for (int i=x;i<n-1;i++)
{
a[i]=a[i+1];
}
n--;
}
void XoaMSX (BanhMi a[],int &n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mo ta : xoa thong tin BanhMi
input :thong tin BanhMi
output:xoa thong tin BanhMi neu co */
char x[5];
_flushall();
printf ("\nNhap Ma So Loai Banh Mi Muon Xoa = ");
gets(x);
int vt=TimMSX(a,n,x);
if (vt==-1)
printf ("\nMa So Loai Banh Mi Khong Hop Le %s",x);
else
{
XoatTaiVTNx(a,n,vt);
printf ("\nThong Tin Loai Banh Mi Co Ma So La %s: \n",x);
}
}
void ThemBanhMi (BanhMi a[],int &n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota: them BanhMi
input:BanhMi can then
output: khong*/
BanhMi x;
printf ("\nBanh Mi Can Them La : \n");
nhapBanhMi(x);
a[n]=x;
n++;
}
void sapXepDonGiaTang (BanhMi a[],int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota : sap xep gia BanhMi theo gia tri tang dan
input : khong
ouput:khong*/
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(a[i].giaBanhMi>a[j].giaBanhMi)
HoanVi(a[i], a[j]);
}
}
}
void SapXepTen (BanhMi a[],int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota: sap xep ten cua BanhMi
input: khong
output: khong*/
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (stricmp (a[i].tenBanhMi,a[j].tenBanhMi)==1)
HoanVi(a[i],a[j]);
}
}
}
void xuatTheoMau(BanhMi a[],int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota: xuat BanhMi co vi Matcha
input: khong
output:BanhMi vi Matcha*/
for(int i=0; i<n; i++)
{
if(stricmp(a[i].loaiBanhMi, "xanh")==0)
{
xuatBanhMi(a[i]);
printf("\n");
}
}
}
int TimVTMAX (BanhMi a[],int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota: tim vi tri gia BanhMi max
input:khong
output:khong*/
int VTMAX=0;
for (int i=1;i<n;i++)
{
if (a[i].giaBanhMi>a[VTMAX].giaBanhMi)
VTMAX=i;
}
return VTMAX;
}
void BanhMiGiaMAX (BanhMi a[],int n)
{
/*ho va ten :Nguyen Duc Vuon
20/6/2020
mota: xuat ra BanhMi co gia max
input:khong
output: BanhMi co gia max*/
int vt=TimVTMAX (a,n);
printf ("\n Banh Mi Co Gia Cao Nhat : \n");
xuatBanhMi(a[vt]);
}
int luuDSBM (BanhMi a[], int n )
{
char fileName [MAX];
_flushall ();
printf ("\nNhap vao ten file can luu = ");
gets(fileName);
FILE *f= fopen (fileName,"wb");
if (f==NULL)
return 0;
fwrite (a, sizeof(BanhMi),n,f);
fclose(f);
return 1;
}
int docDSBM ( BanhMi a[],int &n)
{
char fileName[MAX];
_flushall();
printf ("\nNhap vao ten file can luu = ");
gets (fileName);
FILE*f= fopen(fileName,"rb");
if (f==NULL)
return 0;
n=0;
while (fread(&a[n],sizeof(BanhMi),1,f)>0)
{
n++;
}
fclose(f);
return 1;
}
int main ()
{
ThucHienMenu();
return 0;
}