Quản lý nhân sự

Thảo luận trong 'Thuật toán' bắt đầu bởi LieuKyThien, 19 Tháng bảy 2009.

  1. Offline

    LieuKyThien

    • Thành Viên Mới

    Số bài viết:
    79
    Đã được thích:
    49
    Điểm thành tích:
    0
    Yêu cầu bài toán: viết chương trình quản lý nhân sự (dùng cấu trúc). Thông tin của một người gồm họ tên, ngày sinh, bậc lương. chương trình quản lý gồm các chức năng nhập, xuất thông tin nhân sự, sắp xếp tăng dần theo năm sinh, tìm kiếm 1 nhân viên theo họ tên.
    Mã:
    //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();
    }

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí