當前位置:法律諮詢服務網 - 企業資訊 - c語言員工信息管理系統

c語言員工信息管理系統

/*這是我開始設計課程時寫的*/

#include "stdio.h" /*標準輸入輸出函數庫*/

#include "stdlib.h" /*標準函數庫*/

#include "string.h" /*字符串函數庫*/

#include "conio.h" /*屏幕操作函數庫*/

#定義標題1 " - ZGGZ - \n "

# define header 2“| number | name | jbgz | jj | kk | yfgz | sk | sfgz | \ n "

# define header 3 " |-|-|-|-|-|-|-|-|-| \ n "

# define FORMAT " | %-8s | %-10s | % 8.2f | % 8.2f | % 8.2f | % 8.2f | % 8.2f | % 8.2f | \ n "

#定義數據p-& gt;num,p->姓名,p-& gt;jbgz,p-& gt;jj,p-& gt;kk,p-& gt;yfgz,p-& gt;sk,p-& gt;sfgz

#定義結束"- \n "

#定義N 60

int save flag = 0;/*是否需要保存標誌變量*/

/*定義與員工相關的數據結構*/

Typedef結構雇員/*被標記為雇員*/

{

char num:");

scanf("%d ",& amp選擇);

If(select==1) /*按編號查詢*/

{

stringinput(searchinput,10,"輸入現有員工號:");

p=Locate(tp,n,searchinput," num ");/*在數組tp中查找值為searchinput的元素,返回數組元素的下標值*/

如果(p!=-1) /*如果找到記錄*/

{

print header();

print data(TP:");

scanf("%d ",& ampsel);

if(sel==1)

{

stringinput(findmess,10,"輸入現有員工號:");

p=Locate(tp,n,findmess," num ");

getchar();

如果(p!=-1)

{

for(I = p+1;我& ltn;I++) /*刪除此記錄,後續記錄將向前移動*/

{

strcpy(tp[i-1])。num,tp[i]。num);

strcpy(tp[i-1])。名稱,tp[i]。姓名);

tp[i-1]。jbgz=tp[i]。jbgz

tp[i-1]。jj=tp[i]。jj;

tp[i-1]。kk=tp[i]。kk;

tp[i-1]。yfgz=tp[i]。yfgz

tp[i-1]。jbgz=tp[i]。sk;

tp[i-1]。sfgz=tp[i]。sfgz

}

printf(" \ n = = & gt;刪除成功!\ n ");

n-;

getchar();

保存標誌= 1;

}

其他

nofind();

getchar();

}

Else if(sel==2) /*首先按名稱*/查詢記錄所在數組元素的下標值

{

stringinput(findmess,15,"輸入現有員工姓名:");

p=Locate(tp,n,findmess," name ");

getchar();

如果(p!=-1)

{

for(I = p+1;我& ltn;I++) /*刪除此記錄,後續記錄將向前移動*/

{

strcpy(tp[i-1])。num,tp[i]。num);

strcpy(tp[i-1])。名稱,tp[i]。姓名);

tp[i-1]。jbgz=tp[i]。jbgz

tp[i-1]。jj=tp[i]。jj;

tp[i-1]。kk=tp[i]。kk;

tp[i-1]。yfgz=tp[i]。yfgz

tp[i-1]。jbgz=tp[i]。sk;

tp[i-1]。sfgz=tp[i]。sfgz

}

printf(" \ n = = = = = & gt;刪除成功!\ n ");

n-;

getchar();

保存標誌= 1;

}

其他

nofind();

getchar();

}

返回n;

}

/*修改記錄。首先根據輸入的員工編號查詢記錄,然後提示用戶修改編號以外的值。該號碼不可修改*/

void Modify(ZGGZ tp[],int n)

{

char find mess[20];

int p = 0;

如果(n & lt=0)

{ system(" cls ");

printf(" \ n = = = = = & gt;沒有員工記錄!\ n ");

getchar();

返回;

}

系統(“cls”);

printf("修改員工記錄");

Disp(tp,n);

stringinput(findmess,10,"輸入現有員工號:");/*輸入並驗證號碼*/

p=Locate(tp,n,findmess," num ");/*查詢數組元素並返回下標值*/

如果(p!=-1) /* If P!=-1,表示已經找到數組元素*/

{

printf("編號:%s,\n ",tp[p]。num);

printf("名稱:%s,",tp[p]。姓名);

stringinput(tp[p]。姓名,15,"輸入新姓名:");

printf("jbgz:%8.2f,",tp[p]。jbgz);

tp[p]。jbgz = number input(" jbgz:");

printf("江津:%8.2f,",tp[p].jj);

tp[p]。jj=numberinput("江津:");

printf("koukuan:%8.2f,",tp[p].kk);

tp[p]。kk = number input(" kou Kuan:");

tp[n]。yfgz=tp[n]。jbgz+tp[n]。jj-tp[n]。kk;

tp[n]。sk=tp[n]。yfgz * 0.12;

tp[n]。sfgz=tp[n]。yfgz-tp[n]。sk;

printf(" \ n = = = = = & gt;修改成功!\ n ");

getchar();

Disp(tp,n);

getchar();

保存標誌= 1;

}

其他

{ Nofind();

getchar();

}

返回;

}

/* Insert record:根據員工編號查詢要插入的數組元素的位置,然後在編號後插入壹個新的數組元素。*/

int Insert(ZGGZ tp[],int n)

{

char ch,num[10],s[10];/*s[]保存插入點位置之前的編號,num[]保存輸入的新記錄的編號*/

ZGGZ newinfo

int flag=0,i=0,kkk = 0;

系統(“cls”);

Disp(tp,n);

while(1)

{ stringinput(s,10,"請在數字後輸入插入位置:");

flag = 0;I = 0;

while(我& ltN) /*查詢該號碼是否存在,flag=1表示該號碼存在*/

{

if(strcmp(tp[i].num,s)= = 0){ kkk = I;flag = 1;打破;}

i++;

}

if(flag==1)

打破;/*如果該號碼存在,請在插入之前輸入新記錄*/

其他

{ getchar();

printf(" \ n = = = = = & gt;號碼%s不存在,再試壹次嗎?(y/n):",s);

scanf("%c ",& ampch);

if(ch=='y'||ch=='Y ')

{繼續;}

其他

{ return n;}

}

}

/*以下新記錄的輸入操作與Add () */相同

while(1)

{ stringinput(num,10,"輸入新員工號:");

I = 0;flag = 0;

while(我& ltN) /*查詢該號碼是否存在,flag=1表示該號碼存在*/

{

if(strcmp(tp[i].num,num)= = 0){ flag = 1;打破;}

i++;

}

if(flag==1)

{

getchar();

printf(" \ n = = = = = & gt;對不起,號碼%s已存在,再試壹次嗎?(y/n):",num);

scanf("%c ",& ampch);

if(ch=='y'||ch=='Y ')

{繼續;}

其他

{ return n;}

}

其他

打破;

}

strcpy(newinfo.num,num);/*將字符串num復制到newinfo.num */

stringinput(newinfo.name,15," Name:");

new info . jbgz = number input(" jbgz:");/*輸入並驗證jbgz*/

newinfo.jj=numberinput("江津:");/*輸入並驗證江津*/

new info . kk = number input(" kou Kuan:");/*輸入並驗證扣款*/

new info . yfgz = new info . jbgz+new info . jj-new info . kk;/*計算yfgz*/

new info . sk = new info . yfgz * 0.12;/*計算sk*/

new info . sfgz = new info . yfgz-new info . sk;

保存標誌= 1;/*全局變量在main()中判斷。如果是1,保存*/

for(I = n-1;我& gtkkkI-)/*從最後壹個組織元素向前移動壹個元素位置*/

{ strcpy(tp[i+1])。num,tp[i]。num);

strcpy(tp[i+1]。名稱,tp[i]。姓名);

tp[i+1]。jbgz=tp[i]。jbgz

tp[i+1]。jj=tp[i]。jj;

tp[i+1]。kk=tp[i]。kk;

tp[i+1]。yfgz=tp[i]。yfgz

tp[i+1]。sk=tp[i]。sk;

tp[i+1]。sfgz=tp[i]。sfgz

}

strcpy(tp[kkk+1]。num,new info . num);/*在kkk的元素位置後插入壹條新記錄*/

strcpy(tp[kkk+1]。name,new info . name);

tp[kkk+1]。jbgz = new info . jbgz;

tp[kkk+1]。jj = newinfo.jj

tp[kkk+1]。kk = newinfo.kk

tp[kkk+1]。yfgz = new info . yfgz;

tp[kkk+1]。sk = newinfo.sk

tp[kkk+1]。sfgz = new info . sfgz;

n++;

Disp(tp,n);

printf(" \ n \ n ");

getchar();

返回n;

}

/*公司各級員工工資統計*/

void同濟(ZGGZ tp[],int n)

{

int count10000=0,count5000=0,count2000=0,count0 = 0

int I = 0;

如果(n & lt=0)

{ system(" cls ");

printf(" \ n = = = = = & gt;不是員工記錄!\ n ");

getchar();

返回;

}

系統(“cls”);

Disp(tp,n);

I = 0;

while(我& ltn)

{

if(tp[i].sfgz & gt= 10000){ count 10000++;I = I+1;繼續;}/*實際工資> 10000*/

if(tp[i].sfgz & gt= 5000){ count 5000++;I = I+1;繼續;}/* 5000 & lt;=實際工資

if(tp[i].sfgz & gt= 2000){ count 2000++;I = I+1;繼續;}/* 2000 & lt;=實際工資

if(tp[i].sfgz & lt2000){ count 0++;I = I+1;繼續;}/*實際工資< 2000*/

}

printf("\n -同濟結果-\ n ");

printf(" sfgz & gt;= 10000:%d (ren)\n ",count 10000);

printf(" 5000 & lt;= sfgz & lt10000:%d(任)\n ",count 5000);

printf(" 2000 & lt;= sfgz & lt5000:%d(任)\n ",count 2000);

printf(" sfgz & lt;2000:%d(任)\n ",count 0);

printf("-\ n ");

printf(" \ n \ n按任意鍵返回");

getchar();

}

/*使用冒泡排序法,按照實際薪資字段降序排列,從高到低*/

void Sort(ZGGZ tp[],int n)

{

int i=0,j=0,flag = 0;

ZGGZ newinfo

如果(n & lt=0)

{ system(" cls ");

printf(" \ n = = = = = & gt;不是員工記錄!\ n ");

getchar();

返回;

}

系統(“cls”);

Disp(tp,n);/*排序前顯示所有記錄*/

for(I = 0;我& ltn;i++)

{

flag = 0;

for(j = 0;j & ltn-1;j++)

if((tp[j].sfgz & lttp[j+1]。sfgz))

{ flag = 1;

strcpy(newinfo.num,tp[j].num);/*使用結構變量newinfo實現數組元素的交換*/

strcpy(newinfo.name,tp[j].姓名);

newinfo.jbgz=tp[j]。jbgz

newinfo.jj=tp[j]。jj;

newinfo.kk=tp[j]。kk;

newinfo.yfgz=tp[j]。yfgz

newinfo.sk=tp[j]。sk;

newinfo.sfgz=tp[j]。sfgz

strcpy(tp[j].num,tp[j+1]。num);

strcpy(tp[j].姓名,tp[j+1]。姓名);

tp[j]。jbgz=tp[j+1]。jbgz

tp[j]。jj=tp[j+1]。jj;

tp[j]。kk=tp[j+1]。kk;

tp[j]。yfgz=tp[j+1]。yfgz

tp[j]。sk=tp[j+1]。sk;

tp[j]。sfgz=tp[j+1]。sfgz

strcpy(tp[j+1]。num,new info . num);

strcpy(tp[j+1]。name,new info . name);

tp[j+1]。jbgz = new info . jbgz;

tp[j+1]。jj = newinfo.jj

tp[j+1]。kk = newinfo.kk

tp[j+1]。yfgz = new info . yfgz;

tp[j+1]。sk = newinfo.sk

tp[j+1]。sfgz = new info . sfgz;

}

if(flag = = 0)break;/*如果標誌=0,則表示沒有交換,排序已經完成*/

}

Disp(tp,n);/*顯示所有已排序的記錄*/

保存標誌= 1;

printf(" \ n = = = = = & gt;排序完成!\ n ");

}

/*保存數據。如果用戶沒有專門做這個操作而修改了數據,在退出系統時會提示用戶保存數據*/

void Save(ZGGZ tp[],int n)

{

FILE * fp

int I = 0;

fp=fopen("c:\\zggz "," WB ");/*以只寫方式打開二進制文件*/

If(fp==NULL) /*無法打開文件*/

{

printf(" \ n = = = = = & gt;打開文件錯誤!\ n ");

getchar();

返回;

}

for(I = 0;我& ltn;i++)

{

if(fwrite(& amp;TP [I],sizeof (zggz),1,FP) = = 1)/*壹次向文件中寫入壹條記錄或壹個結構數組元素*/

{

繼續;

}

其他

{

打破;

}

}

如果(i & gt0)

{

getchar();

printf(" \ n \ n = = = = = & gt;保存文件完成,保存的記錄總數為:%d\n ",I);

getchar();

保存標誌= 0;

}

其他

{ system(" cls ");

printf("當前鏈接為空,沒有保存員工記錄!\ n ");

getchar();

}

fclose(FP);/*關閉該文件*/

}

void main()

{

ZGGZ gz[N];/*定義ZGGZ結構*/

FILE * fp/*文件指針*/

int select/*保存選擇結果變量*/

char ch/* Save (y,Y,N,N)*/

int count = 0;/*保存的文件中記錄(或元素)的數量*/

fp=fopen("C:\\zggz "," a b+ ");

/*通過追加打開二進制文件c:\zggz,可讀可寫。如果該文件不存在,將會創建*/

if(fp==NULL)

{

printf(" \ n = = = = = & gt;無法打開文件!\ n ");

退出(0);

}

而(!feof(fp))

{

if(fread(& amp;Gz [count],sizeof (zggz),1,FP) = = 1)/*從文件中壹次讀取壹條員工薪資記錄*/

count++;

}

fclose(FP);/*關閉文件*/

printf(" \ n = = & gt;打開文件成功,總記錄數為:%d.\n ",計數);

getchar();

menu();

while(1)

{

系統(“cls”);

menu();

printf("\n請輸入您的選擇(0 ~ 9):");/*顯示提示信息*/

scanf("%d ",& amp選擇);

if(select==0)

{

If(saveflag==1) /*如果數組的數據被修改而沒有保存,則該標誌為1*/

{ getchar();

printf(" \ n = = & gt;是否將修改後的記錄保存到文件中?(y/n):);

scanf("%c ",& ampch);

if(ch=='y'||ch=='Y ')

保存(gz,計數);

}

printf(" \ n = = = & gt;謝謝有用!”);

getchar();

打破;

}

開關(選擇)

{

案例1:count=Add(gz,count);打破;/*添加員工薪資記錄*/

情況二:count=Del(gz,count);打破;/*刪除員工工資記錄*/

案例三:古蘭經(gz,計數);打破;/*查詢員工薪資記錄*/

情況四:修改(gz,計數);打破;/*修改員工薪資記錄*/

情況5:計數=插入(gz,計數);打破;/*插入員工薪資記錄*/

案例六:同濟(gz,count);打破;/*員工薪資記錄統計*/

案例7:Sort(gz,count);打破;/*對員工工資記錄進行排序*/

案例八:保存(gz,計數);打破;/*保存員工薪資記錄*/

案例9:系統(“cls”);Disp(gz,計數);打破;/*顯示員工薪資記錄*/

默認:錯誤();getchar();打破;/*鍵錯誤,必須是0-9*/

}

}

}

  • 上一篇:買賣天貓店鋪時需要註意什麽信息
  • 下一篇:ERP軟件,國內外選哪個?
  • copyright 2024法律諮詢服務網