Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
Lời nói đầu
Ngôn ngữ lập trình C là một ngôn ngữ mạnh, được các nhà tin học chuyên nghiệp
cũng như các nhà lập trình nghiệp dư sử dụng để lập trình hệ thống, lập trình ứng dụng…
Vì vậy nhu cầu học C là một nhu cầu tất yếu, nhất là các kỹ sư, các sinh viên của nhiều
chuyên ngành khoa học và kỹ thuật khác nhau.
Để giúp sinh viên hiểu rõ về ngôn ngữ này và nâng cao thêm kỹ năng lập trình của mình
Khoa Công Nghệ Tin Học của Viện Đại Học Mở Hà Nội đã đưa ra các đề tài và giao cho
sinh viên thực hiện trong kỳ thi tốt nhiệp. Em là Mai Anh Thắng được giao thực hiện đề
tài Xây dựng chƣơng trình Quản Lý Nhân Sự.
Chương trình Quản Lý Nhân Sự là một trong những đề tài khá phổ biến với sự
hướng dẫn nhiệt tình của GS.TS. Phạm Văn Ất, em đã hoàn thành chương trình này sau
một tháng. Chương trình sau khi hoàn thành có những chức năng cơ bản sau:
- Nhập mới Nhân Sự, ghi vào file.
- Xem, sửa , xóa Nhân sự.
- Sắp xếp.
- Thống kê.
1
Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
PHẦN I: NỘI DUNG BÀI TOÁN
Nội dung chương trình: Xây dựng chương trình quản lý nhân sự gồm các chức
năng:
1. Tạo mới một danh sách nhân sự. Dữ liệu mỗi nhân sự gồm:
+ Họ tên
+ Năm Sinh
+ Đơn vị
+ Năm lên lương
+ Học vị
+ Mức lương
Chức năng tạo mới cho phép: Nhập mới một danh sách nhân sự. Trong khi nhâp
có thể dùng các phím Page Down để xem và sửa dữ liệu của người trước, dùng phím
Page Up để xem và sửa dữ liệu của người sau. Có thể xóa một người đang xem, có
thể chèn vào trước một người đang xem, có thể bổ sung vào cuối danh sách đang soạn
thảo, có thể ghi lên tệp.
2. Chức năng đọc dữ liệu nhân sự từ tệp. Sau khi đọc, người sử dụng có thể thực
hiện các thao tác như chức năng tạo mới.
3. Chức năng khai thác gồm các chức năng con:
3.1. Sắp xếp danh sách nhân sự hoặc theo năm sinh, hoặc theo năm lên lương,
hoặc theo mức lương(tùy theo sự lựa chọn của người sử dụng). Sau khi sắp
xếp có thể dùng phím Page UP Page Down để xem kết quả. Kết quả có thể
ghi hoặc không ghi lên tệp(theo sự lựa chọn của người sử dụng)
3.2. Thống kê danh sách những người đủ thời hạn lên lương theo từng đơn vị.
Cho hiện bản thống kê lên màn hình, sau đó có thể in ra máy nếu muốn.
3.3. Thống kê những người trong vòng 2 năm tới sẽ về hưu theo từng đơn vị. Kết
quả thống kê có thể hiện lên màn hình và in (như mục 3.2)/
Ngôn ngữ thực hiện: turbo C
2
Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
PHẦN II: THIẾT KẾ CHỨC NĂNG
Sau khi nghiên kỹ đề tài, em đã vạch ra được một phương hướng thiết kế chương
trình như sau:
Quản lý nhân sự
Thêm, Sửa
,Xóa, Nhân Sự
Sắp xếp
Thống Kê
In ra máy
Ghi File
Một số giao diện của chƣơng trình:
3
Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
4
Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
PHẦN III: THIẾT KẾ DỮ LIỆU
Dữ liệu của chương trình:
Chương trình có sử dụng các loại dữ liệu là :
- Cấu trúc.
- Tệp tin nhị phân.
- Danh sách liên kết.
Dữ liệu về nhân sự:
struct NhanSu
{
char sHoTen[25],sDonVi[25],sHocVi[15];
int iNamSinh,iNamLenLuong;
unsigned long iMucLuong;
struct NhanSu *next;
//con trỏ chứa địa chỉ của phần tử Nhân sự sau.
struct NhanSu *prev;
//con trỏ chứa địa chỉ của phần tử Nhân sự trước.
};
FILE *f1;
f1 = fopen("data","a+b");
Dữ liệu sẽ được lưu vào tệp tin nhị phân có tên là “Data”. Tệp tin có thể được sinh
ra khi chạy chương trình lần đầu tiên.
Chương trình có 2 cách nhập dữ liêu:
- Nhập đến đâu ghi vào tệp luôn.
- Nhập vào danh sách liên kết rồi thao tác trên danh sách liên kết, sau đó ghi vào
tệp.
Chương trình có sử dụng các thuật toán như: sắp xếp, thao tác với danh sách liên kết
cấu trúc các bản ghi.
5
Website: http://www.docs.vn Email :
[email protected] Tel : 0918.775.368
PHẦN IV: THIẾT KẾ MODULE CHƢƠNG TRÌNH
Các thư viện cần dùng trong chương trình là:
#include
#include
#include
#include
#include
#include
Chương trình được tổ chức thành các hàm:
void Menu();
//Thủ tục gọi Menu của chương trình
void NhapMoi();
//Thủ tục thực hiện việc nhập mới Nhân Sự
void DSNhanSu();
//Thủ tục liệt kê danh sách các Nhan Sự
void Sua();
//Thủ tục sửa thông tin Nhân Sự
void Sapxep();
//Thủ tục sắp xếp danh sách Nhân Sự theo các trường
void ThongKe();
//Thủ tục Thống kê Nhân Sự
void main()
//Hàm chính của chương trình
{
int iChon = 0;
struct NhanSu objNhanSu;
FILE *f1;
while(iChon!=8)
{
clrscr();
Menu();
scanf("%d",&iChon);
switch(iChon)
{
case 1: NhapMoi2(); break;
case 2: Sua(); break;
case 3: DocDuLieu();break;
case 4: DSNhanSu(); break;
case 5: Sapxep(); break;
case 6: ThongKe();
break;
default: break;
}
}
}
6
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
PHẦN IV: CÀI ĐẶT VÀ HƢỚNG DẪN SỬ DỤNG CHƢƠNG TRÌNH
Chương trình gồm file QLNS.C được dịch thành 1 file QLNS.exe duy nhất. Sau
khi chạy thì chương trình sẽ tạo ra một file tên là “Data” sẽ chứa dữ liệu về thông tin của
Nhân sự.
Sử dụng chƣơng trình
Chạy file QLNS.exe, giao diện đầu tiên là:
Chọn 1: để nhập Danh sách Nhân Sự:
Sau khi nhập có thể dùng phím Page Up và Page Down để xem thông tin của
Người trước và Người sau.
Từ Menu
Chọn 2 để sửa thông tin Nhân Sự
Chọn 3 để đọc dữ liệu từ file từ đó có thể làm các thao tác như mục 1.
7
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
Chọn 4 để liệt kê danh sách nhân sự.
Chọn 5 để sắp xếp danh sách Nhân sự theo các trường.
Chọn 6 để Thống kê.
8
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
PHẦN V: KẾT LUẬN
Đây là chương trình được em thực hiện sau 1 tháng, chương trình đã đáp ứng
được các chức năng cơ bản của 1 chương trình Quản lý nhân sự. Áp dụng những kiến
thức đã học, em đã xây dựng chương trình này, tuy nhiên chương trình vẫn còn một số
hạn chế, và sai sót. Chương trình được viết thành các thủ tục tuy nhiên còn nhiều phần bị
lặp lại do chưa tối ưu được cấu trúc của chương trình. Phương hướng của sắp tới của em
là tối ưu hóa chương trình,phát triển chương trình hoàn hảo hơn.
Chương trình được hoàn thành với sự giúp đỡ nhiệt tình của GS.TS.Phạm Văn Ất.
Cũng nhân dịp này em xin cảm ơn tới thầy hướng dẫn của mình và các bạn đã giúp đỡ em
hoàn thành chương trình.
.
9
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
PHỤ LỤC
Mã nguồn của chƣơng trình
void Menu()//Menu chinh' cua chuong trinh
{
printf("\n\t\tMENU\n\n");
printf("\t1. Nhap Nhan Su\n");
printf("\t2. Sua Thong Tin Nhan Su\n");
printf("\t3. Xoa Nhan Su\n");
printf("\t4. Danh Sach Nhan Su\n");
printf("\t5. Sap Xep\n");
printf("\t6. Thong Ke\n");
printf("\t7. Doc Du Lieu\n");
printf("\t8. Thoat\n\n");
printf("\t\tChon: ");
}
void NhapMoi()
{
char c = 'c',cSua;
int n;
struct NhanSu *NStmp;
struct NhanSu *Q;
char sHoTentmp[25],sDonVitmp[25],sHocVitmp[15];
struct NhanSu *NStmp2;
struct NhanSu *NStmp3;
struct NhanSu *NStmp4;
struct NhanSu *NStmp5;
struct NhanSu *first;
struct NhanSu *last;
struct NhanSu *tg1,*tg2;
struct NhanSu objNhanSu;
char c1;
char ch;
FILE *f1;
int i;
first = NULL;
last = NULL;
f1 = fopen("data","a+b");
if(f1==NULL)
{
printf("\nI/O Error");
exit(1);
}
i = 0;
clrscr();
n = 0;
do
10
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
{
printf("\n\t\t\tNhap moi Nhan Su");
NStmp = (struct NhanSu *)malloc(sizeof(struct NhanSu));
fflush(stdin);
printf("\n\n\t Nhap thong tin nguoi thu %d:\n\n",i + 1);
fflush(stdin);
printf("\t%-10s","Ho va Ten:");gets(NStmp->sHoTen);
printf("\t%-10s","Nam Sinh:");
scanf("%d",&NStmp->iNamSinh);
fflush(stdin);
printf("\t%-10s","Don Vi:");
gets(NStmp->sDonVi);
printf("\t%-10s","Nam len luong:");
scanf("%d",&NStmp->iNamLenLuong);
fflush(stdin);
printf("\t%-10s","Hoc Vi:");gets(NStmp->sHocVi);
printf("\t%-10s","Muc Luong:");
scanf("%lu",&NStmp->iMucLuong);
n++;
if(first == NULL)
{
first = last = NStmp;
first->prev = NULL ;
}
else
{
last->next = NStmp;
NStmp->prev = last;
// last = NStmp;
NStmp->next = NULL;
last = NStmp;
}
i++;
printf("\t\t\tBan co tiep tuc nhap nua khong (c/k): ");
fflush(stdin);
scanf("%c",&c);
clrscr();
} while((c == 'c')||(c == 'C'));
printf("\n\t\t\tXem thong tin nguoi truoc Pg Up ");
printf("\n\t\t\tXem thong tin nguoi sau Pg Dn ");
last->next = NULL;
NStmp2 = last;
NStmp3 = first;
getch();
do
{
11
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
c1 = getch();
switch(c1)
{
case 73:if(NStmp2!=NULL)
{
clrscr();
tg1 = NStmp2;
NStmp2 = NStmp2->prev;
if(NStmp2==NULL)NStmp2 = tg1;
printf("\n\t\tHo va Ten:%s",NStmp2>sHoTen);
printf("\n\t\tNam Sinh:%d",NStmp2>iNamSinh);
printf("\n\t\tDon
Vi:%s",NStmp2-
printf("\n\t\tNam
Len
printf("\n\t\tHoc
Vi:%s",NStmp2-
>sDonVi);
Luong:%d",NStmp2->iNamLenLuong);
>sHocVi);
printf("\n\t\tMuc
Luong:%lu",NStmp2->iMucLuong);
printf("\n\n\t\tSua
thong
tin(bam
phim 's')");
printf("\n\n\t\tChen 1 ban ghi vao sau
ban ghi nay(bam phim 'c')");
printf("\n\n\t\tXoa ban ghi nay(bam
phim 'x')");
printf("\n\n\t\tTro
lai
Menu
chinh(bam phim 't')");
}
;break;
case 81:if(NStmp2!=NULL)
{
clrscr();
tg2 = NStmp2;
NStmp2 = NStmp2->next;
if(NStmp2==NULL)NStmp2 = tg2;
printf("\n\t\tHo va Ten:%s",NStmp2>sHoTen);
printf("\n\t\tNam Sinh:%d",NStmp2>iNamSinh);
printf("\n\t\tDon
Vi:%s",NStmp2-
>sDonVi);
12
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
printf("\n\t\tNam
Len
printf("\n\t\tHoc
Vi:%s",NStmp2-
Luong:%d",NStmp2->iNamLenLuong);
>sHocVi);
printf("\n\t\tMuc
Luong:%lu",NStmp2->iMucLuong);
printf("\n\n\t\tSua
thong
tin(bam
phim 's')");
printf("\n\n\t\tChen 1 ban ghi vao sau
ban ghi nay(bam phim 'c')");
printf("\n\n\t\tXoa ban ghi nay(bam
phim 'x')");
printf("\n\n\t\tTro
lai
Menu
chinh(bam phim 't')");
}
;break;
case 115:
fflush(stdin);
printf("\n\t%-10s","Ho
va
Ten:");gets(NStmp2->sHoTen);
printf("\t%-10s","Nam
Sinh:");
scanf("%d",&NStmp2>iNamSinh);
fflush(stdin);
printf("\t%-10s","Don Vi:");
gets(NStmp2->sDonVi);
printf("\t%-10s","Nam
len
luong:");
scanf("%d",&NStmp2>iNamLenLuong);
fflush(stdin);
printf("\t%-10s","Hoc
Vi:");gets(NStmp2->sHocVi);
printf("\t%-10s","Muc
Luong:");
scanf("%lu",&NStmp2>iMucLuong);
printf("Da sua xong ! Bam Pg
up Pg Dn de xem tiep");
break;
case 99:
Q
=
calloc(1,sizeof(struct
NhanSu));
fflush(stdin);
13
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
printf("\n\n\t%10s","Ho va Ten:");gets(sHoTentmp);strcpy(Q->sHoTen,sHoTentmp);
printf("\n\t%10s","Nam Sinh:");
scanf("%d",&Q>iNamSinh);
fflush(stdin);
printf("\n\t%10s","Don Vi:");
gets(sDonVitmp);strcpy(Q->sDonVi,sDonVitmp);
printf("\n\t%10s","Nam len luong:");
scanf("%d",&Q>iNamLenLuong);
fflush(stdin);
printf("\n\t%10s","Hoc Vi:");
gets(sHocVitmp);strcpy(Q->sHocVi,sHocVitmp);
printf("\n\t%10s","Muc Luong:");
scanf("%lu",&Q>iMucLuong);
NStmp4 = NStmp2>next;
if(NStmp4==NULL)
{
last->next
=
Q->prev
=
Q;
last;
// last = NStmp;
Q->next
=
NULL;
last = Q;
clrscr();
printf("Da
chen vao cuoi danh sach!");
}
else
14
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
{
Q->next = NStmp2>next;
NStmp2->next = Q;
Q->prev = NStmp4>prev;
NStmp4->prev = Q;
printf("Da chen them
ban ghi moi ! Bam Pg up Pg Dn de xem tiep");
}
break;
case 120:
NStmp4 = NStmp2->next;
NStmp5 = NStmp2->prev;
if(NStmp4==NULL)
{
NStmp2 = NStmp5;
NStmp2->next
=
NULL;
}
else
{
NStmp5->next = NStmp4;
NStmp4->prev = NStmp5;
}
clrscr();
printf("\n\n\tBan ghi Da
xoa,Bam Pg Up Pg Dn de xem tiep");
break;
}
}while (c1!=116);
clrscr();
fflush(stdin);
printf("\n\t\tGhi len File(c/k)");
scanf("%c",&c);
if(c=='c')
{
do
{
fwrite(NStmp3,sizeof(struct NhanSu),1,f1);
NStmp3 = NStmp3->next;
15
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
}while(NStmp3!=NULL)
;
printf("bam phim 't' de tro ve Menu");
}
clrscr();
free(tg1);
free(tg2);
free(NStmp);
free(NStmp2);
free(NStmp3);
free(first);
free(last);
fclose(f1);
}
void load()
{
struct NhanSu objNhanSu;
FILE *f1;
int i = 0;
f1 = fopen("data","rb");
if(f1==NULL)
{
printf("\nI/O Error");
exit(1);
}
printf("\n\t\t\tDanh sach Nhan Su\n\n");
printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","Ho
Ten","Nam Sinh","Don Vi","Nam LL","Hoc Vi","Muc Luong");
printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","---","------","-------","------","------","------","---------");
while(fread(&objNhanSu,sizeof(objNhanSu),1,f1)==1)
{
printf("%-4d%-20s%-10d%-15s%-10d%-10s%10lu\n",i+1,objNhanSu.sHoTen,objNhanSu.iNamSinh,objNhanSu.sDonVi,objNhanSu.iN
amLenLuong,objNhanSu.sHocVi,objNhanSu.iMucLuong);
i++;
}
fclose(f1);
}
void DSNhanSu()
{
clrscr();
load();
printf("\n\n\nBam nut bat ky de thoat !");
getch();
16
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
}
void Sua()
{
char sHoTen[25];
int found = 0;
struct NhanSu objNhanSu;
FILE *f1;
int i = 0;
int iChon2;
f1 = fopen("data","r+b");
if(f1==NULL)
{
printf("\nI/O Error");
exit(1);
}
clrscr();
fflush(stdin);
printf("\n\n\n\tCho biet ten Nguoi can sua:"); gets(sHoTen);
while(fread(&objNhanSu,sizeof(objNhanSu),1,f1)==1)
{
if(stricmp(objNhanSu.sHoTen,sHoTen)==0)
{
printf("%-4s%-20s%-10s%-15s%-10s%-10s%10s\n","STT","Ho Ten","Nam Sinh","Don Vi","Nam LL","Hoc Vi","Muc Luong");
printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","--","------","--------","------","------","------","---------");
printf("%-4d%-20s%-10d%-15s%-10d%-10s%10lu\n",i+1,objNhanSu.sHoTen,objNhanSu.iNamSinh,objNhanSu.sDonVi,objNhanSu.iN
amLenLuong,objNhanSu.sHocVi,objNhanSu.iMucLuong);
found = 1;
printf("\tChon :\n ");
printf("\t\t1. De Sua Ho Ten\n");
printf("\t\t2. De Sua Nam Sinh\n");
printf("\t\t3. De Sua Don Vi\n");
printf("\t\t4. De Sua Nam Len Luong\n");
printf("\t\t5. De Sua Hoc Vi\n");
printf("\t\t6. De Sua Muc Luong\n");
printf("\t\t7. Thoat\n");
printf("\tChon : ");
scanf("%d",&iChon2);
switch(iChon2)
{
case 1: fflush(stdin);printf("Nhap Ho Ten
Moi:");gets(objNhanSu.sHoTen);
fseek(f1,sizeof(objNhanSu)*i,0);
17
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
case 2: fflush(stdin);printf("Nhap Nam
Moi:");scanf("%d",&objNhanSu.iNamSinh);
fseek(f1,sizeof(objNhanSu)*i,0);
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
case 3: fflush(stdin);printf("Nhap Don
Moi:");gets(objNhanSu.sDonVi);
fseek(f1,sizeof(objNhanSu)*i,0);
Sinh
Vi
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
case 4: fflush(stdin);printf("Nhap Nam Len Luon
Moi:");scanf("%d",&objNhanSu.iNamLenLuong);
fseek(f1,sizeof(objNhanSu)*i,0);
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
case 5: fflush(stdin);printf("Nhap Hoc
Moi:");gets(objNhanSu.sHocVi);
fseek(f1,sizeof(objNhanSu)*i,0);
Vi
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
case 6: fflush(stdin);printf("Nhap Muc Luong
Moi:");scanf("%lu",&objNhanSu.iMucLuong);
fseek(f1,sizeof(objNhanSu)*i,0);
fwrite(&objNhanSu,sizeof(objNhanSu),1,f1);
fclose(f1);
break;
default: ;break;
}
break;
}
i++;
}
if(found==0)
18
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
{
printf("Khong tim thay !");
getch();
};
}
void Sapxep()
{
int iChon3;
char cChon;
struct NhanSu objNhanSu;
FILE *f1;
struct NhanSu *ptr;
int i,x,j,k,m,n,p;
struct NhanSu tgNhanSu;
clrscr();
printf("\n\n\tSap xep theo:\n");
printf("\t\t1.Nam Sinh\n");
printf("\t\t2.Nam Len Luong\n");
printf("\t\t3.Muc Luong\n");
printf("\tChon :");scanf("%d",&iChon3);
i = 0;
f1 = fopen("data","r+b");
if(f1==NULL)
{
printf("\nI/O Error");
exit(1);
}
while(fread(&objNhanSu,sizeof(objNhanSu),1,f1)==1)
{
i++;
}
rewind(f1);
ptr = (struct NhanSu *)calloc(i,sizeof(struct NhanSu));//cap phat bo nho'
x = 0;
while(fread(&objNhanSu,sizeof(objNhanSu),1,f1)==1)
{
strcpy((ptr+x)->sHoTen,objNhanSu.sHoTen);
(ptr+x)->iNamSinh = objNhanSu.iNamSinh;
strcpy((ptr+x)->sDonVi,objNhanSu.sDonVi);
(ptr+x)->iNamLenLuong = objNhanSu.iNamLenLuong;
strcpy((ptr+x)->sHocVi,objNhanSu.sHocVi);
(ptr+x)->iMucLuong = objNhanSu.iMucLuong;
x++;
}
switch(iChon3)
{
19
Website: http://www.docs.vn Email : [email protected] Tel : 0918.775.368
case 1:
for(j=0;jiNamSinh>(ptr+k)->iNamSinh)
{
tgNhanSu.iNamSinh = (ptr+j)->iNamSinh;
(ptr+j)->iNamSinh = (ptr+k)->iNamSinh;
(ptr+k)->iNamSinh = tgNhanSu.iNamSinh;
tgNhanSu.iNamLenLuong
=
(ptr+j)-
>iNamLenLuong;
(ptr+j)->iNamLenLuong
=
(ptr+k)-
>iNamLenLuong;
(ptr+k)->iNamLenLuong
=
tgNhanSu.iNamLenLuong;
tgNhanSu.iMucLuong = (ptr+j)->iMucLuong;
(ptr+j)->iMucLuong = (ptr+k)->iMucLuong;
(ptr+k)->iMucLuong = tgNhanSu.iMucLuong;
strcpy(tgNhanSu.sHoTen,(ptr+j)->sHoTen);
strcpy((ptr+j)->sHoTen,(ptr+k)->sHoTen);
strcpy((ptr+k)->sHoTen,tgNhanSu.sHoTen);
strcpy(tgNhanSu.sDonVi,(ptr+j)->sDonVi);
strcpy((ptr+j)->sDonVi,(ptr+k)->sDonVi);
strcpy((ptr+k)->sDonVi,tgNhanSu.sDonVi);
strcpy(tgNhanSu.sHocVi,(ptr+j)->sHocVi);
strcpy((ptr+j)->sHocVi,(ptr+k)->sHocVi);
strcpy((ptr+k)->sHocVi,tgNhanSu.sHocVi);
}
}
};
n = i;
printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","Ho
Ten","Nam Sinh","Don Vi","Nam LL","Hoc Vi","Muc Luong");
printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","---","------","-------","------","------","------","---------");
for(i = 0;i < n;i++)
{
20