Dữ liệu cấu trúc và Thao tác với tệp trong C _ Quản lí lương nhân viên

Đề Bài :
Cho tệp Văn bản chứa dữ liệu của n nhân viên . Mỗi nhân viên là một bản ghi gồm các trường : MaNV ( Mã nhân viên ) , HT ( Họ Tên ) , HS ( Hệ số lương ) , LCB ( Lương cơ bản ) và Luong ( Lương = Hệ số lương nhân Lương cơ bản ) . Tệp có cấu trúc như sau :
Dòng đầu chứa số nguyên n . Dòng thứ i+1 ( i = 2,3,4...) chứa Mã nhân viên , Học Tên , HS , LCB .


Hãy đọc danh sách n nhân viên từ tệp . Sau đó :
1 . In ra màn hình danh sách nhân viên gồm 5 trường theo số lương giảm dần .
2 . In 1 nhân viên có số lương cao nhất .
3 . Tìm kiếm nhân viên theo mã nhân viên ( nhập từ bàn phím ) .
4 . In danh sách nhân viên có số lương > 700000000 VND:V

--------------------------------------BG ------------------------------------------
Mã:
#include<stdio.h>#include<conio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Luong{
    char MaNV[10];
    char HT[30];
    float HS;
    int LCB ;
    int Luong ; // He so luong , Luong co ban //
    
};
int main()
{
    char Mnvtim[10];
    Luong*a , t ;
    int n , i, j ;
    FILE*f ; 
    f = fopen("input_ql_luong.txt","rt");
    fscanf(f,"%d\n",&n);
    a = new Luong[n+1];
    for( i = 1 ; i<= n ; i++)
    {
        fgets(a[i].MaNV,10,f);
        j = strlen(a[i].MaNV);
        a[i].MaNV[j-1]='\0';
        
        fgets(a[i].HT,30,f);
        j = strlen(a[i].HT);
        a[i].HT[j-1]='\0';
        
        fscanf(f,"%f\n",&a[i].HS);
        
        fscanf(f,"%d\n",&a[i].LCB);
        
    }
    fclose(f);
    
    // Tinh luong NV , sap xep theo chieu giam dan //
    
    for( i = 1 ; i<= n ; i++)
    {
        a[i].Luong = a[i].HS * a[i].LCB ;
    }
    for( i =1 ; i<=n ; i++)
        for( j = i+1 ; j<= n ; j++)
        {
            if(a[i].Luong < a[j].Luong)
            {
                 t    = a[i] ;
                 a[i] = a[j] ;
                 a[j] = t ;
                
            }
        }
    
    
    
    printf("\n\t ----------- * CHUONG TRINH QUAN LI NHAN VIEN * -----------");
    printf("\n\n\t\t\t DANH SACH LUONG NHAN VIEN \n ");
    printf("\n STT  ||  MA NV   ||     Ho & Ten   || HS luong  || Luong CB  || Luong ");
    for( i = 1 ; i<=n ; i++)
    {
        printf("\n\n %d%10s%20s    %4.2f   %15d  %15d ",i,a[i].MaNV,a[i].HT,a[i].HS,a[i].LCB,a[i].Luong);
    }
    // In thong tin nhan vien co so luong cao nhat //
    
    printf("\n\n Nhan vien co so luong cao nhat la : ");
    printf("\n\n 1. %10s%20s    %4.2f   %15d  %15d ",a[1].MaNV,a[1].HT,a[1].HS,a[1].LCB,a[1].Luong);


    // Tim kiem 1 NV theo Ma Nhan Vien //
    printf("\n\n Nhap Ma nhan vien can tim kiem : ");
    fflush(stdin);
    gets(Mnvtim);
    for( i = 1 ; i<= n ; i++)
    {
        if ( strcmp(a[i].MaNV,Mnvtim)== 0)
        {
            printf("\n\n Ket qua tim la : %10s %30s %15d ",a[i].MaNV,a[i].HT,a[i].Luong);
            break ;
        }
    }
    if( i > n )
        
        printf("\n\n Khong tim thay nhan vien tren ! ");
        
    // In cac NV co so luong > 7000000 //
    printf("\n\n Danh sach nhan vien co so luong > 7 tr la : ");
    for( i= 1 ; i<= n ; i++)
    {
        if( a[i].Luong > 7000000)
        printf("\n\n%d %10s  %30s  %15d ",i,a[i].MaNV,a[i].HT,a[i].Luong);
    }
    
    
}
=> Kết Quả CT :
vl4kdL7.png
 
Sửa lần cuối bởi điều hành viên:

Ngọc Huyền1

Công Chúa Nhỏ
Tệp : " input_ql_luong.txt "
Mã:
5NV1Nguyen Van Tinh1.25000000NV2Le Minh An1.57000000NV3Nguyen The Anh1.48000000NV4Dang Van Manh25000000NV5Pham Ngoc Diep14500000
 

taplamhacker

♥ Thanh Trâm ♥
:xuan-2015: f5 và điều bất ngờ sẽ đến
E có 2 file, file nguyên k cách
[AH]
Mã:
5
NV1Nguyen Van Tinh1.25000000
NV2Le Minh An1.57000000
NV3Nguyen The Anh1.48000000
NV4Dang Van Manh25000000
NV5Pham Ngoc Diep14500000
[/AH]
file thứ 2 chỉnh sửa tí cho đẹp
[AH]
Mã:
NV1 Nguyen Van Tinh 1.2 5000000
NV2 Le Minh An 1.5 7000000
NV3 Nguyen The Anh 1.4 8000000
NV4 Dang Van Manh 2 5000000
NV5 Pham Ngoc Diep 1 4500000
[/AH]
k biết do chương trình (??) ở đây e sài C-free hay sao mà kết quả
[AH]
FFPq6i1.png
[/AH]
 

Ngọc Huyền1

Công Chúa Nhỏ
:xuan-2015: f5 và điều bất ngờ sẽ đến
E có 2 file, file nguyên k cách
[AH]
Mã:
5
NV1Nguyen Van Tinh1.25000000
NV2Le Minh An1.57000000
NV3Nguyen The Anh1.48000000
NV4Dang Van Manh25000000
NV5Pham Ngoc Diep14500000
[/AH]
file thứ 2 chỉnh sửa tí cho đẹp
[AH]
Mã:
NV1 Nguyen Van Tinh 1.2 5000000
NV2 Le Minh An 1.5 7000000
NV3 Nguyen The Anh 1.4 8000000
NV4 Dang Van Manh 2 5000000
NV5 Pham Ngoc Diep 1 4500000
[/AH]
k biết do chương trình (??) ở đây e sài C-free hay sao mà kết quả
[AH]
FFPq6i1.png
[/AH]
Chỗ File input là mỗi thông tin là 1 dòng nhé . trên này hiển thị hàng ngang nên vậy đó
 

taplamhacker

♥ Thanh Trâm ♥
Dòng thứ i+1 ( i = 2,3,4...) chứa Mã nhân viên , Học Tên , HS , LCB .
e tường 1 dòng chứa nhiêu đó :v
:rofl:chị yêu onl skype e hỏi tí
 

Thống kê

Chủ đề
100,640
Bài viết
467,388
Thành viên
339,825
Thành viên mới nhất
LuatMinhTu
Top