Code:
//Khai bao thu vien
#include<stdio.h>
#include<conio.h>
#include<string.h>
//Khai bao cau truc
struct date
{
int ng,th,nm;
};
typedef struct
{
char ht[40];
struct date ns;
float bl;
}person;
//Khai bao nguyen mau ham
void vao(person *p);
void in(person p);
void hv(person *p1,person *p2);
void sapxep(person *p,int n);
person tim(char *ht,person h[],int n);
person *ptim(char *ht,person h[],int n);
//Ham
void vao(person *p)
{
person tg;
float bl;
fflush(stdin);
printf("\nHo ten: ");
gets(tg.ht);
printf("Ngay sinh: ");
scanf("%d/%d/%d",&tg.ns.ng,&tg.ns.th,&tg.ns.nm);
printf("Bac luong: ");
scanf("%f",&bl);
tg.bl=bl;
*p=tg;
}
void in(person p)
{
printf("Ho ten: %s ",p.ht);
printf("Ngay sinh: %2d/%2d/%4d ",p.ns.ng,p.ns.th,p.ns.nm);
printf("Bac luong: %.0f\n",p.bl);
}
void hv(person *p1,person *p2)
{
person tg;
tg=*p1;
*p1=*p2;
*p2=tg;
}
void sapxep(person *p,int n)
{
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(p[i].ns.nm>p[j].ns.nm)
hv(&p[i],&p[j]);
}
person tim(char *ht,person h[],int n)
{
person tg;
tg.ht[0]=0;
tg.ns.ng=tg.ns.th=tg.ns.nm=0;
tg.bl=0;
for(int i=1;i<=n;i++)
if(strcmp(ht,h[i].ht)==0)
return(h[i]);
return(tg);
}
person *ptim(char *ht,person h[],int n)
{
for(int i=1;i<=n;i++)
if(strcmp(ht,h[i].ht)==0)
return(&h[i]);
return(NULL);
}
//Ham main
void main()
{
clrscr();
char ht[40];
int n,i;
person p[100],*p1;
printf("Nhap so nguoi: ");
scanf("%d",&n);
printf("Nhap thong tin: ");
for(i=1;i<=n;i++)
vao(&p[i]);
sapxep(p,n);
printf("In thong tin: \n");
for(i=1;i<=n;i++)
in(p[i]);
//Su dung ham tim()
while(1)
{
printf("Nhap ten can tim kiem (bam enter de ket thuc): ");
fflush(stdin);
gets(ht);
if(ht[0]==0) break;
if((tim(ht,p,n).ht[0]==0))
printf("\nKhong tim thay");
else in(tim(ht,p,n));
}
//Su dung ham ptim
while(1)
{
printf("\nNhap ten can tim kiem (bam enter de ket thuc): ");
fflush(stdin);
gets(ht);
if(ht[0]==0) break;
if((p1=ptim(ht,p,n))==NULL)
printf("Khong tim thay");
else
in(*p1);
}
getch();
}