Code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define max 100
FILE *f;
typedef struct khachang
{
char ht[25],
diachi[20],
sdt[16];
char makh[6],
sokhung[10],
nhasx[10],
tensp[6],
somay[10];
int solg;
float donja, thanhtien;
};
//--------------------------------------------------------------------------
void nhapds(char *tentep)
{
khachang x;
char ch;
float dj;
f= fopen(tentep,"wb");
do {
clrscr();
gotoxy(24,1); printf("CUA HANG XE MAY TOAN THANG \n\n");
printf("\n Danh sach khach mua hang: \n");
do
{
fflush(stdin);
printf(" Ho va ten: ");
gets(x.ht); fflush(stdin);
} while (strcmpi(x.ht,"")==0);
printf(" Dia chi: ");
gets(x.diachi); fflush(stdin);
printf(" SDT: ");
scanf("%s",&x.sdt);
fflush(stdin);
do
{
printf(" Ma khach hang: ");
gets(x.makh); fflush(stdin);
} while (strcmpi(x.makh,"")==0);
do
{
printf(" Ten san pham: ");
gets(x.tensp); fflush(stdin);
} while (strcmp(x.tensp,"")==0);
do
{
printf(" Nha san xuat: ");
gets(x.nhasx); fflush(stdin);
} while (strcmpi(x.nhasx,"")==0);
do
{
printf(" So khung: ");
gets(x.sokhung); fflush(stdin);
} while (strcmpi(x.sokhung,"")==0);
do
{
printf(" So may: ");
gets(x.somay); fflush(stdin);
} while (strcmpi(x.somay,"")==0);
printf(" So luong: ");
scanf("%d",&x.solg);
fflush(stdin);
printf(" Don gia: ");
scanf("%f",&dj);
x.donja= dj;
fflush(stdin);
// ghi len tep tin
fwrite(&x,sizeof(khachang),1,f);
printf("\n Nhan phim K de ket thuc.");
ch= getch();
} while ((ch!='k')&& (ch!='K'));
fclose(f);
}
//--------------------------------------------------------------------------
void hienthi (char *tentep)
{
int i, tongslg=0;
float tongtien=0;
khachang x;
f= fopen(tentep,"rb");
clrscr();
gotoxy(24,1); printf("CUA HANG XE MAY TOAN THANG \n");
gotoxy(16,2); printf("Khuyen mai: Mua 2 xe jam ja 1 trieu dong/xe \n");
gotoxy(63,3); printf("DVT: Trieu dong\n");
printf("|--------------------|------|--------|---------|--------|------|------------|\n");
printf("| Ho va ten | MaKH | Ten sp | Hang sx | Don ja | Solg | Thanh tien |\n");
printf("|--------------------|------|--------|---------|--------|------|------------|\n");
int d=7;
while (fread(&x,sizeof(x),1,f)>=1)
{
gotoxy(1,d); printf("|");
gotoxy(3,d); printf("%s",x.ht);
gotoxy(22,d); printf("|");
gotoxy(24,d); printf("%s",x.makh);
gotoxy(29,d); printf("|");
gotoxy(31,d); printf("%s",x.tensp);
gotoxy(38,d); printf("|");
gotoxy(40,d); printf("%s",x.nhasx);
gotoxy(48,d); printf("|");
gotoxy(50,d); printf("%.2f",x.donja);
gotoxy(57,d); printf("|");
gotoxy(59,d); printf("%d",x.solg);
if (x.solg >=2 ) x.thanhtien = (x.solg*x.donja)-(x.solg*1);
else x.thanhtien = x.solg*x.donja;
gotoxy(64,d); printf("|");
gotoxy(66,d); printf("%.2f",x.thanhtien);
gotoxy(77,d); printf("|");
d++;
tongslg+= x.solg;
tongtien+= x.thanhtien;
}
printf("\n");
printf("|--------------------|------|--------|---------|--------|------|------------|\n");
printf("\n Tong so luong xe ban duoc: %d xe\n",tongslg);
printf(" Tong so tien da thu ve: %.2f trieu dong\n",tongtien);
printf("\n Chu thich: \n");
printf(" MaKH: Ma khach hang.\n");
printf(" Tensp: Ten san pham .\n");
printf(" Hangsx: Nha (Hang) san xuat.\n");
fclose(f);
}
//--------------------------------------------------------------------------
void timkiem(char *tentep)
{
khachang x;
char ma[6];
int kt=0;//ban dau chua tim thay
printf("\n\tNhap ma can tim: "); gets(ma); fflush(stdin);
f=fopen(tentep,"rb");
while(!kt&&(!feof(f)) )
{
fread(&x,sizeof(khachang),1,f);
if (strcmpi(x.makh,ma)==0) kt=1;
}
fclose(f);
if (kt==1)
{ clrscr();
f= fopen (tentep,"rb");
gotoxy(24,1); printf("CUA HANG XE MAY TOAN THANG \n");
gotoxy(16,2); printf("Khuyen mai: Mua 2 xe jam ja 1 trieu dong/xe \n");
printf("\n Ho va ten: %s",x.ht);
printf("\n Dia chi: %s",x.diachi);
printf("\n Phone numbers: %s ",x.sdt);
printf("\n Ma khach hang: %s \n",x.makh);
gotoxy(65,8); printf("DVT: Trieu dong\n");
printf("|--------|---------------|----------|--------|----------|---------|-----------|\n");
printf("| Ten xe | Hang san xuat | So khung | So may | So luong | Don gia | Tong tien |\n");
printf("|--------|---------------|----------|--------|----------|---------|-----------|\n");
int d=12;
while (fread(&x,sizeof(x),1,f)>=1)
{
gotoxy(1,d); printf("|");
gotoxy(3,d); printf("%s",x.tensp);
gotoxy(10,d); printf("|");
gotoxy(12,d); printf("%s",x.nhasx);
gotoxy(26,d); printf("|");
gotoxy(28,d); printf("%s",x.sokhung);
gotoxy(37,d); printf("|");
gotoxy(39,d); printf("%s",x.somay);
gotoxy(46,d); printf("|");
gotoxy(48,d); printf("%d chiec",x.solg);
gotoxy(57,d); printf("|");
gotoxy(59,d); printf("%.2f",x.donja);
if (x.solg >=2 ) x.thanhtien = (x.solg*x.donja)-(x.solg*1);
else x.thanhtien = x.solg*x.donja;
gotoxy(67,d); printf("|");
gotoxy(69,d); printf("%.2f",x.thanhtien);
gotoxy(79,d); printf("|");
}
printf("\n|--------|---------------|----------|--------|----------|---------|-----------|");
fclose(f);
}
if (kt==0) printf("\n Khong tim thay khach hang co ma vua nhap");
}
//--------------------------------------------------------------------------
void docteplenmang(khachang *a,int *n,char *tentep)
{
khachang x;
(*n)=0;//mang ban dau chua co khach hang nao
f=fopen(tentep,"rb");
//doc tep len mang a
while (fread(&x,sizeof(khachang),1,f)>0)
{
(*n)++;
a[*n]=x;
}
fclose(f);
}
//--------------------------------------------------------------------------
void sapxep(char *tentep)
{
khachang x,a[max];
int n,i,j;
docteplenmang(a,&n,tentep);
//sap xep mang theo so luong ban
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if (a[i].solg<a[j].solg)
//doi cho
{
x=a[i];
a[i]=a[j];
a[j]=x;
}
//ghi len tep
f=fopen(tentep,"wb");
for (i=1;i<=n;i++)
fwrite(&a[i],sizeof(khachang),1,f);
fclose(f);
hienthi(tentep);
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
void main()
{
int n;
char ch;
khachang x;
do{
clrscr();
gotoxy(24,1); printf("CUA HANG XE MAY TOAN THANG \n");
printf("\n\t 1. Nhap danh sach khach mua xe.");
printf("\n\t 2. Hien thi danh sach khach mua xe.");
printf("\n\t 3. Tim kiem theo ma khach hang.");
printf("\n\t 4. Sap xep danh sach tang theo slg mua.");
printf("\n\t 5. Them khach hang.");
printf("\n\t 6. Xoa khach hang ra khoi danh sach.");
printf("\n\t ESC de thoat");
ch=getch();
switch (ch)
{
case '1': nhapds("xemay.dat"); break;
case '2': hienthi("xemay.dat"); getch(); break;
case '3': timkiem("xemay.dat"); getch(); break;
case '4': sapxep("xemay.dat"); getch(); break;
case '5': them("xemay.dat"); getch(); break;
}
} while (ch!=27);
}