1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng chương trình Quản Lý Nhân Sự.doc.DOC

33 1,3K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 261 KB

Nội dung

Xây dựng chương trình Quản Lý Nhân Sự

Trang 1

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ệpcũ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ềuchuyê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ìnhKhoa 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 chosinh 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 saumộ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ê

Trang 2

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ứcnăng:

1 Tạo mới một danh sách nhân sự Dữ liệu mỗi nhân sự gồm:

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ímPage 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ạnthả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ựchiệ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ắpxế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ếtquả 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

Trang 3

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ươngtrình như sau:

Một số giao diện của chương trình:

Trang 5

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à :

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

Trang 6

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à:

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

case 2: Sua(); break;

case 3: DocDuLieu();break;

case 4: DSNhanSu(); break;

case 5: Sapxep(); break;

case 6: ThongKe(); break;

default: break;

}}

}

Trang 7

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ự

Trang 8

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ê

Trang 9

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ếnthứ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 đỡ emhoàn thành chương trình

Trang 10

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");

struct NhanSu *first;

struct NhanSu *last;

Trang 11

{ 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:");

printf("\n\t\t\tXem thong tin nguoi truoc Pg Up ");

printf("\n\t\t\tXem thong tin nguoi sau Pg Dn ");

Trang 12

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-

tg2 = NStmp2;

NStmp2 = NStmp2->next;

if(NStmp2==NULL)NStmp2 = tg2;printf("\n\t\tHo va Ten:%s",NStmp2-

Trang 13

printf("\n\t\tNam Len Luong:

printf("\t%-10s","NamSinh:");

scanf("%d",&NStmp2->iNamSinh);

fflush(stdin);

printf("\t%-10s","Don Vi:");gets(NStmp2->sDonVi);printf("\t%-10s","Nam lenluong:");

scanf("%d",&NStmp2->iNamLenLuong);

fflush(stdin);

printf("\t%-10s","HocVi:");gets(NStmp2->sHocVi);

printf("\t%-10s","MucLuong:");

fflush(stdin);

Trang 14

10s","Ho va Ten:");gets(sHoTentmp);strcpy(Q->sHoTen,sHoTentmp);

printf("\n\n\t%-10s","Nam Sinh:");

printf("\n\t%-

scanf("%d",&Q->iNamSinh);

fflush(stdin);

10s","Don Vi:");

printf("\n\t%-gets(sDonVitmp);strcpy(Q->sDonVi,sDonVitmp);

10s","Nam len luong:");

printf("\n\t%-

scanf("%d",&Q->iNamLenLuong);

fflush(stdin);

10s","Hoc Vi:");

printf("\n\t%-gets(sHocVitmp);strcpy(Q->sHocVi,sHocVitmp);

10s","Muc Luong:");

last->next =Q;

Q->prev =last;

// last = NStmp;

Q->next =NULL;

last = Q;

clrscr();

printf("Dachen vao cuoi danh sach!");

}else

Trang 15

{Q->next = NStmp2-

>next;

NStmp2->next = Q;Q->prev = NStmp4-

>prev;

NStmp4->prev = Q;printf("Da chen themban 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 Daxoa,Bam Pg Up Pg Dn de xem tiep");

break;

}}while (c1!=116);

do {

fwrite(NStmp3,sizeof(struct NhanSu),1,f1);NStmp3 = NStmp3->next;

Trang 16

}while(NStmp3!=NULL) ; printf("bam phim 't' de tro ve Menu");

}clrscr();

Trang 17

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 TenMoi:");gets(objNhanSu.sHoTen);

fseek(f1,sizeof(objNhanSu)*i,0);

Trang 18

}

if(found==0)

Trang 19

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){

{

Trang 20

case 1:

for(j=0;j<i-1;j++){

for(k = j+1;k<i;k++){

if((ptr+j)->iNamSinh>(ptr+k)->iNamSinh){

(ptr+k)->iMucLuong = tgNhanSu.iMucLuong;strcpy(tgNhanSu.sHoTen,(ptr+j)->sHoTen);

};

n = i;

printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","HoTen","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++){

Trang 21

>sHocVi,(ptr+i)->iMucLuong);

}printf("\n\nGhi Vao File(c/k) :");

fflush(stdin);

scanf("%c",&cChon);

if(cChon =='c'||cChon == 'C'){

rewind(f1);

for(i=0;i<n;i++){

fwrite((ptr+i),sizeof(objNhanSu),1,f1);

}printf("\n\n\n\tDa ghi xong !");

getch();

}fclose(f1);

free(ptr);

break;

case 2:

for(j=0;j<i-1;j++){

for(k = j+1;k<i;k++){

if((ptr+j)->iNamLenLuong>(ptr+k)->iNamLenLuong){

(ptr+k)->iMucLuong = tgNhanSu.iMucLuong;strcpy(tgNhanSu.sHoTen,(ptr+j)->sHoTen);

Trang 22

m = i;

printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","HoTen","Nam Sinh","Don Vi","Nam LL","Hoc Vi","Muc Luong");

>sHocVi,(ptr+i)->iMucLuong);

}printf("\n\nGhi Vao File(c/k) :");

fflush(stdin);

scanf("%c",&cChon);

if(cChon =='c'||cChon == 'C'){

rewind(f1);

for(i=0;i<m;i++){

fwrite((ptr+i),sizeof(objNhanSu),1,f1);

}printf("\n\n\n\tDa ghi xong !");

Trang 23

for(k = j+1;k<i;k++){

if((ptr+j)->iMucLuong>(ptr+k)->iMucLuong){

};

p = i;

printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","HoTen","Nam Sinh","Don Vi","Nam LL","Hoc Vi","Muc Luong");

>sHocVi,(ptr+i)->iMucLuong);

Trang 24

}printf("\n\nGhi Vao File(c/k) :");

fflush(stdin);

scanf("%c",&cChon);

if(cChon =='c'||cChon == 'C'){

rewind(f1);

for(i=0;i<p;i++){

fwrite((ptr+i),sizeof(objNhanSu),1,f1);

}printf("\n\n\n\tDa ghi xong !");

getch();

}free(ptr);

struct NhanSu objNhanSu;

int count = 0,found = 0;

Trang 25

{

case 1: printf("\n\n\t\tNhap Don Vi: ");fflush(stdin);gets(DonVi);

printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\n","STT","HoTen","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){

objNhanSu.iNamLenLuong)==3)

if(stricmp(objNhanSu.sDonVi,DonVi)==0&&(d.da_year-{printf("%-4d%-20s%-10d%-15s%-10d%-10s%-10lu\n",count+1,objNhanSu.sHoTen,objNhanSu.iNamSinh,objNhanSu.sDonVi,objNhanSu.iNamLenLuong,objNhanSu.sHocVi,objNhanSu.iMucLuong);

count++;

found = 1;

}}

if(found==1)getch();

if(found==0){

printf("Khong tim thay !");

printf("%-4s%-20s%-10s%-15s%-10s%-10s%-10s\

n"," -"," -"," -"," -"," -"," -"," -");

while(fread(&objNhanSu,sizeof(objNhanSu),1,f1)==1){

objNhanSu.iNamSinh)>=58&&(d.da_year-objNhanSu.iNamSinh)<=60)

if(stricmp(objNhanSu.sDonVi,DonVi)==0&&(d.da_year-{printf("%-4d%-20s%-10d%-15s%-10d%-10s%-10lu\n",count+1,objNhanSu.sHoTen,objNhanSu.iNamSinh,objNhanSu.sDonVi,objNhanSu.iNamLenLuong,objNhanSu.sHocVi,objNhanSu.iMucLuong);

count++;

found = 1;

}

Trang 26

if(found==0){

printf("Khong tim thay !");

struct NhanSu *first;

struct NhanSu *last;

{

Trang 27

}

fclose(f1);

printf("\n\t\t\tXem thong tin nguoi truoc Pg Up ");

printf("\n\t\t\tXem thong tin nguoi sau Pg Dn ");

switch(c1){

case 73:if(NStmp2!=NULL)

Trang 28

tg1 = NStmp2;

NStmp2 = NStmp2->prev;

if(NStmp2==NULL)NStmp2 = tg1;printf("\n\t\tHo va Ten:%s",NStmp2-

tg2 = NStmp2;

NStmp2 = NStmp2->next;

if(NStmp2==NULL)NStmp2 = tg2;printf("\n\t\tHo va Ten:%s",NStmp2-

Trang 29

scanf("%d",&NStmp2->iNamSinh);

fflush(stdin);

printf("\t%-10s","Don Vi:");gets(NStmp2->sDonVi);printf("\t%-10s","Nam lenluong:");

scanf("%d",&NStmp2->iNamLenLuong);

fflush(stdin);

printf("\t%-10s","HocVi:");gets(NStmp2->sHocVi);

printf("\t%-10s","MucLuong:");

printf("\n\n\t%-10s","Nam Sinh:");

Trang 30

scanf("%d",&Q->iNamSinh);

fflush(stdin);

10s","Don Vi:");

printf("\n\t%-gets(sDonVitmp);strcpy(Q->sDonVi,sDonVitmp);

10s","Nam len luong:");

printf("\n\t%-

scanf("%d",&Q->iNamLenLuong);

fflush(stdin);

10s","Hoc Vi:");

printf("\n\t%-gets(sHocVitmp);strcpy(Q->sHocVi,sHocVitmp);

10s","Muc Luong:");

last->next =Q;

Q->prev =last;

// last = NStmp;

Q->next =NULL;

last = Q;

clrscr();

printf("Dachen vao cuoi danh sach!");

}else{Q->next = NStmp2-

>next;

NStmp2->next = Q;

Trang 31

Q->prev =

NStmp4->prev;

NStmp4->prev = Q;printf("Da chen themban 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 Daxoa,Bam Pg Up Pg Dn de xem tiep");

break;

NStmp4 = NStmp2->next;NStmp5 = NStmp2->prev;NStmp5->next = NStmp4;NStmp4->prev = NStmp5;clrscr();

printf("\n\n\tBan ghi Daxoa,Bam Pg Up Pg Dn de xem tiep");

break;

}}while (c1!=116);

clrscr();

fflush(stdin);

Trang 32

printf("\n\t\tGhi len File(c/k)");

scanf("%c",&c);

if(c=='c'){

f1 = fopen("data","wb");

if(f1==NULL){

printf("\nI/O Error");

exit(1);

}do {

fwrite(NStmp3,sizeof(struct NhanSu),1,f1);NStmp3 = NStmp3->next;

}while(NStmp3!=NULL) ; printf("bam phim 't' de tro ve Menu");

}clrscr();

Trang 33

MỤC LỤC

LỜI NÓI ĐẦU 1

PHẦN I: NỘI DUNG BÀI TOÁN 2

PHẦN II: THIẾT KẾ CHỨC NĂNG 3

PHẦN III: THIẾT KẾ DỮ LIỆU 5

PHẦN IV: THIẾT KẾ MODULE CHƯƠNG TRÌNH 6

PHẦN IV: CÀI ĐẶT VÀ HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH 7

PHẦN V: KẾT LUẬN 9

PHỤ LỤC 10

Ngày đăng: 10/09/2012, 09:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w