Code:
#include<stdafx.h>
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
typedef unsigned char uchar;
class vattu
{
public:
int Mvattu;
char NSXvattu[20];
char Tenvattu[20];
char Ngaythangxuat[2];
int Giatien;
};
public:
int hienthi_menu()
{
int i;
cout<<"\n Xin chao moi nguoi den voi chuong trinh quan ly vat tu! ";
cout<<"\n 1: Nhap Vat tu";
cout<<"\n 2: Them Vat tu";
cout<<"\n 3: Xoa Vat tu";
cout<<"\n 4: Sap xep Vat tu theo ten";
cout<<"\n 5: Tim kiem Vat tu";
cout<<"\n 6: Luu danh sach Vat tu vao file";
cout<<"\n 7: Doc danh sach Vat tu tu file";
cout<<"\n 9: Ket thuc! ->|o|";
cout<<"\n";
cout<<"\n Day la nhung tien ich (tu 1->9):";
cin>>i;
return (i);
};
//////////////////QUAN LY////////////////////////////////////////////////////////////////////////
class CQuanLy
{
public:
CQuanLy(){n_kh=0;VT=new vattu[100];
}
protected:
public:
int n_vt;
vattu *VT;
public:
void nhapVT();
void themVT();
void xoaVT();
void sapxepVT();
void timkiemVT();
void luuDsVT_vaofile();
void docDsVT_tufile();
};
void CQuanLy::themVT()
{
//printf("\n THEM VAT TU THU [%d]",n_vt+1);
cout<<"\n THEM VAT TU THU ["<<n_vt+1<<"]";
cout<<"\n Ma VAT TU: ";
cin>>VT[n_vt].Mvattu;
cout<<"\n Ten VAT TU: ";
cin>>VT[n_vt].Tenvattu;
cout<<"\n Nha san xuat: ";
cin>>VT[n_vt].NSXvattu;
cout<<"\n Ngay thang xuat suong: ";
cin>>VT[n_vt].Ngaythangxuat;
cout<<"\n Tong so tien thanh toan: ";
cin>>VT[n_vt].Giatien;
n_vt++;
}
void CQuanLy::xoaVT()
{
uchar i;
cout<<"\n XOA VAT TU THU : ";
cin>>i;
if(i>0 && i<n_vt-1)
for(int j=i-1;j<n_vt-1;j++)
VT[j]=VT[j+1];
cout<<"\n DA XOA VAT TU thu ["<<i<<"]...an phim bat ki de ve MENU...";
cin>>i;
n_vt--;
}
void CQuanLy::nhapVT()
{
int n;
cout<<"\n So vat tu can nhap:";
cin>>n;
for(int i=0;i<n;i++)
{
themVT();
}
cout<<"\n";
}
void layten(char *str_in,char *str_out,int &len_out)
{
uchar len=0;
len=strlen(str_in);
uchar j=len;
while(str_in[j-1]!=' '&&j>0)j--;
len_out=len-j;
for(int k=j,c=0;k<len;k++,c++)
{
str_out[c]=str_in[k];
str_out[c+len_out]='\0';
}
}
void CQuanLy::timkiemVT()
{
char s_ten[10]; //ten vat tu can tim
char s_out[10]; //chuoi chua ten cua nhung vat tu trong danh sach
int l=0; //do dai cua ten cua moi vat tu trong danh sach
int res=0;//dem so luong vat tu co cung ten
int ds[255];//mang "ds" chua vi tri cua vat tu co cung ten trong danh sach
cout<<"\n Tim tat ca vat tu co ten la :";
cin>>s_ten; // luu ten can tim vao bien s_ten
for(int i=1;i<=n_vt;i++) //kiem tra lan luot tu vat tu thu 1 -> het trong dah sach
{
layten(VT[i-1].Tenvattu,s_out,l);// lay ten va chua trong s_out,l: la do dai cua ten do
char *pdest; // con tro (pointer) tro den vi tri tim dc
//printf( "String to be searched:\n %s\n",s_out);
pdest = strstr(s_out,s_ten );//tim kiem chuoi s_ten trong chuoi s_out
if ( pdest != NULL && l==strlen(s_ten)) // if s_ten co trong s_out va do dai s_ten=do dai cua ten vat tu trong danh sach
{
ds[res]=i-1;
res++; //tang bien dem vat tu co cung ten
}
else
printf( "%s not found\n", s_ten );
}
printf( "---------------------------------------\n" );
cout<<"\n Tim duoc tat ca "<<res<<" vat tu.";
//in danh sach vat tu co cung ten
cout<<"\n\n Danh sach cu the la:\n\n";
for(int i=0;i<res;i++)
{
printf( "(%d) Ma vat tu: %d \n Ten vat tu: %s\n NSX: %s\n ngayxuat: %s\n Tong so tien : %d\n"
,i+1
,VT[ds[i]].Mvattu
,VT[ds[i]].Tenvattu
,VT[ds[i]].NSXvattu
,VT[ds[i]].Ngaythangxuat
,VT[ds[i]].Giatien );
printf( "----------------------------------------------------\n" );
}
}
void CQuanLy::sapxepVT()
{
char si[10];
char sj[10];
int l;
int temp;
vattu temp;
for(int i=0;i<n_vt-1;i++)
for(int j=i+1;j<n_vt;j++)
{
layten(VT[i].Tenvattu,si,l);
layten(VT[j].Tenvattu,sj,l);
if((int)si[0]>(int)sj[0])
{
temp =VT[i];
VT[i]=VT[j];
VT[j]=temp;
}
}
cout<<"\n\n Danh sach sau khi sap xep :\n\n";
for(int i=0;i<n_vt;i++)
{
printf( "(%d) Ma vat tu: %d \n Ten vat tu: %s\n NSX vat tu: %s\n ngay thang suat suong: %s\n Tong so tien : %d\n"
,i+1
,VT[i].Mvattu
,VT[i].Tenvattu
,VT[i].NSXvattu
,VT[i].Ngaythangxuat
,VT[i].Giatien );
printf( "---------------------------------------------\n" );
}
}
void CQuanLy::luuDsVT_vaofile()
{
FILE *pfile;
pfile=fopen("vatu.dat","wb");
if(pfile)
{
for(int i=0;i<n_vt;i++)
{
fprintf(pfile,"%d",VT[i].Mvattu);
fprintf(pfile,"%s",VT[i].Tenvattu);
fprintf(pfile,"%s",VT[i].NSXvattu);
fprintf(pfile,"%s",VT[i].Ngaythangxuat);
fprintf(pfile,"%d",VT[i].Giatien);
}
}
fclose(pfile);
}
void CQuanLy::docDsVT_tufile()
{
FILE *pfile;
pfile=fopen("vattu.dat","rb+");
int i=0;
if(!pfile)
{
fseek(pfile, 0L, SEEK_SET);
while(!feof(pfile))
{
fscanf(pfile,"%d",&VT[i].Mvattu);
fscanf(pfile,"%s",VT[i].Tenvattu);
fscanf(pfile,"%s",VT[i].NSXvattu);
fscanf(pfile,"%s",VT[i].Ngaythangxuat);
fscanf(pfile,"%d",&VT[i].Giatien);
i++;
}
}
else
printf( " co loi khi mo file!");
n_vt=i;
printf( " NVT=%d",n_vt);
//hien thi danh sach vat tu tu file
for(int i=0;i<n_vt;i++)
printf( "(%d) Mvattu: %d \n Ten vat tu: %s\n NSX vat tu: %s\n ngay thang xuat: %s\n Tong so tien : %d\n"
,i+1
,VT[i].Mvattu
,VT[i].Tenvattu
,VT[i].Ngaythangxuat
,VT[i].NSXvattu
,VT[i].Giatien );
printf( "--------------------------------------------------------\n" );
fclose(pfile);
}
/////////////////////////////////////////////////////////////////////////////////////////
int main(void)
{
CQuanLy QL;
while(1)
{switch( hienthi_menu())
{
case 1: QL.nhapVT(); break;
case 2:QL.themVT();break;
case 3: QL.xoaVT();break;
case 4:QL.sapxepVT(); break;
case 5:QL.timkiemVT(); break;
case 6:QL.luuDsVT_vaofile(); break;
case 7:QL.docDsVT_tufile(); break;
case 8: break;
case 9:return 0; ;break;
default:return 0;
}
}
getchar();
return 0;
}