C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼_第1頁
C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼_第2頁
C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼_第3頁
C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼_第4頁
C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼三、職工工資管理系統(tǒng)模塊功能

3.1、系統(tǒng)總體設計框圖

3.2、系統(tǒng)模塊總體設計

在職工工資管理系統(tǒng)的設計程序中:

structemploee/*職工數(shù)據(jù)結構*/

charno[5];

charname[8];

charsex[3];

intage;

intsalar;

}emp[NUM],newemp;

用結構體存儲和錄入該程序的所有數(shù)據(jù),并把信息寫到文件emp.txt中,保存在磁盤中方便以后使用。

此程序中包含的功能有:輸入模塊、查詢模塊、修改模塊、刪除模塊、統(tǒng)計模塊、輸出模塊、追加模塊,各個功能設計如下:

3.3、設計系統(tǒng)菜單功能

在Main.h頭文件中聲明一個voidmenu();函數(shù),用于通訊錄菜單功能的顯示,然后再Main.c源文件中定義這個函數(shù)的功能,如下所示

/*************************菜單模塊*************************/

voidmenu()

printf("1.輸入職工記錄\n");

printf("2.查詢職工記錄\n");

printf("3.修改職工記錄\n");

printf("4.刪除職工記錄\n");

printf("5.輸出職工記錄\n");

printf("6.調查工資情況\n");

printf("7.添加職工記錄\n");

printf("0.退出系統(tǒng)\n");

printf("\n");

printf("***歡迎使用職工工資管理系統(tǒng)***\n");

}

然后再主函數(shù)中調用menu()函數(shù),調試結果如下

到這里職工工資管理系統(tǒng)菜單功能實現(xiàn)了。

3.4、設計系統(tǒng)輸入模塊

輸入模塊:該模塊是實現(xiàn)對職工號姓名崗位工資獎金扣除實發(fā)的錄入并保存到文件emp.txt中。模塊中運用voidinputData()調用函數(shù)展開對文件的使用。

模塊首先定義一個指針文件,又以寫的方式打開此文件,在打開的文件中輸入要管理的職工人數(shù),用一個for循環(huán)按照職職工號姓名崗位工資獎金扣除實發(fā)的格式循環(huán)獲取職工的記錄,接著又用了一個for循環(huán)將職工記錄寫入文件emp.txt中,關閉文件。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voidinputData();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************輸入模塊*************************/

voidinputData()

FILE*fp;

intn,i;

if((fp=fopen("emp.txt","w+"))==NULL)

printf("不能建立emp.txt文件\n");

return;

printf("輸入職工人數(shù):");

scanf("%d",

printf("輸入格式:職工號姓名性別年齡工資Enter\n");

for(i=0;ii++)/*循環(huán)獲取n個職工記錄*/

printf("第%d個職工:",i+1);

scanf("%s%s%s%d%d",emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

for(i=0;ii++)/*將n個職工記錄寫入文件*/

fwrite(emp[i],sizeof(structemploee),1,fp);

fclose(fp);

}

然后調試結果如下所示

到這里職工工資管理系統(tǒng)輸入功能實現(xiàn)了。

3.5、設計系統(tǒng)查詢模塊

查詢模塊:實現(xiàn)按職工號查詢每個職工的信息,查詢顯示:職工號姓名崗位工資獎金扣除實發(fā)。模塊開始是一個二級子菜單,一個是實現(xiàn)按職工號查詢,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號查詢,首先是以只讀的方式打開文件emp.txt,然后輸入要查詢的職工號,用一個for循環(huán)來控制查詢的人數(shù),之后在顯示器上顯示職工信息,程序如下:

printf("記錄號職工號姓名性別年齡工資\n");

for(i=0;fread(emp[i],sizeof(structemploee),1,fp)!=0;i++)

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

然后關閉文件。查詢職工信息已完成。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voidsearch();和voidsearchNum();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************查詢模塊*************************/

voidsearch()

intx;

while(1)

system("cls");

printf("\n\n\t\t查子菜單\n");

printf("\t\t********************\n");

printf("\t\t1.按職工號查詢\n");

printf("\t\t0.返回主菜單\n");

printf("\t\t********************\n");

printf("\t請選擇(0-1):");

scanf("%d",

if(x==1)

searchNum();

elseif(x==0)

break;

else

printf("輸入有誤,請重新輸入?。?!\n");

system("pause");

voidsearchNum()

FILE*fp;

inti;

charnum[5];

if((fp=fopen("emp.txt","r"))==NULL)

printf("不能打開emp.txt文件\n");

return;

printf("要查詢的職工號:");

scanf("%s",num);

for(i=0;fread(emp[i],sizeof(structemploee),1,fp);i++)

if(!strcmp(emp[i].no,num))

break;

if(feof(fp))

printf("查無此人\n");

system("pause");

return;

else

printf("記錄號職工號姓名性別年齡工資\n");

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

system("pause");

fclose(fp);

}

然后調試結果如下所示

到這里職工工資管理系統(tǒng)查詢功能實現(xiàn)了。

3.6、設計系統(tǒng)修改模塊

修改模塊:該模塊實現(xiàn)按職工號對職工所有信息的修改。模塊開始是一個二級子菜單,一個是按職工號修改,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號修改,首先是以讀寫的方式打開文件emp.txt。輸入要修改的職工號,用一個for循環(huán)來控制輸入的數(shù)量,循環(huán)如下:

for(i=0;fread(emp[i],sizeof(structemploee),1,fp);i++)

if(!strcmp(emp[i].no,num))

break;

則會出現(xiàn)該職工的信息如下:

printf("記錄號職工號姓名性別年齡工資\n");

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

然后對職工的信息進行修改,就可獲得新的職工記錄。之后文件指針指向該修改的記錄開頭,此時用newemp覆蓋當前記錄,修改完成時系統(tǒng)會顯示修改后的文件數(shù)據(jù):記錄號、職工號、姓名、性別、年齡、工資,然后關閉文件。修改職工信息已完成。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voidmodi();和voidmodiNum();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************修改模塊*************************/

voidmodi()

intx;

while(1)

systme("cls");

printf("\n\n\t\t修改子菜單\n");

printf("\t\t*********************\n");

printf("\t\t1.按職工號修改\n");

printf("\t\t0.返回主菜單\n");

printf("\t\t*********************\n");

printf("\t請選擇(0-1):");

scanf("%d",

if(x==1)

modiNum();

elseif(x==0)

break;

voidmodiNum()

FILE*fp;

inti;

charnum[5];

if((fp=fopen("emp.txt","r+"))==NULL)

printf("不能打開emp.txt文件\n");

return;

printf("要修改的職工號:");

scanf("%s",num);

for(i=0;fread(emp[i],sizeof(structemploee),1,fp);i++)

if(!strcmp(emp[i].no,num))

break;

if(feof(fp))

printf("\t沒有%s職工號的職工\n",num);

return;

printf("記錄號職工號姓名性別年齡工資\n");

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

printf("輸入格式:職工號姓名性別年齡工資Enter\n");

printf("第%d個記錄:",i+1);

scanf("%s%s%s%d%d",newemp.no,,newemp.sex,newemp.age,newemp.salar);/*獲取新的職工記錄*/

fseek(fp,-(long)sizeof(structemploee),SEEK_CUR);

/*文件指針指向該修改的記錄開頭*/

fwrite(newemp,sizeof(structemploee),1,fp);/*用newemp覆蓋當前記錄*/

printf("修改后:\n");

fseek(fp,0,SEEK_SET);/*顯示修改后的文件數(shù)據(jù)*/

printf("記錄號職工號姓名性別年齡工資\n");

for(i=0;fread(emp[i],sizeof(structemploee),1,fp)!=0;i++)

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

system("pause");

fclose(fp);

}

然后調試結果如下所示

到這里職工工資管理系統(tǒng)查詢功能實現(xiàn)了。

3.7、設計系統(tǒng)刪除模塊

刪除模塊:該模塊實現(xiàn)按職工號對職工所有信息的刪除。模塊開始是一個二級子菜單,一個是按職工號刪除記錄,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號刪除記錄,首先是只讀的方式打開一個文件emp.txt。就會顯示刪除前的職工信息程序如下:

printf("刪除前:\n");

printf("記錄號職工號姓名性別年齡工資\n");

for(n=0;fread(emp[n],sizeof(structemploee),1,fp)!=0;n++)

printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,emp[n].age,emp[n].salar);

printf("要刪除的職工號:");

scanf("%s",num);

for(i=0;(strcmp(emp[i].no,num)!=0ii++)

if(i=n)

printf("\t沒有%s職工號的職工\n",num);

system("pause");

return;

執(zhí)行刪除命令:

for(j=0;jj++)

fwrite(emp[j],sizeof(structemploee),1,fp);

for(j=i+1;jj++)

fwrite(emp[j],sizeof(structemploee),1,fp);

循環(huán)依次改后職工信息寫入文件,顯示刪除后文件中的職工信息。最后可以關閉文件,刪除職工信息已完成。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voiddele();和voiddeleName();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************刪除模塊*************************/

voiddele()

intx;

while(1)

system("cls");

printf("\n\n\t\t刪除子菜單\n");

printf("\t\t*********\n");

printf("\t\t1.按職工號刪除記錄\n");

printf("\t\t0.返回主菜單\n");

printf("\t\t*********\n");

printf("\t請選擇(0-1):");

scanf("%d",

if(x==1)

deleName();

elseif(x==0)

break;

else

printf("輸入有誤?。?!\n");

system("pause");

voiddeleName()

FILE*fp;

inti,j,n;

charnum[5];

if((fp=fopen("emp.txt","r"))==NULL)

printf("不能打開emp文件\n");

return;

printf("刪除前:\n");

printf("記錄號職工號姓名性別年齡工資\n");

for(n=0;fread(emp[n],sizeof(structemploee),1,fp)!=0;n++)

printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,emp[n].age,emp[n].salar);

printf("要刪除的職工號:");

scanf("%s",num);

for(i=0;(strcmp(emp[i].no,num)!=0ii++)

if(i=n)

printf("\t沒有%s職工號的職工\n",num);

system("pause");

return;

fclose(fp);

fp=fopen("emp.txt","w+");

if(n==1)/*一個記錄已經(jīng)刪除了*/

fclose(fp);

return;

for(j=0;jj++)

fwrite(emp[j],sizeof(structemploee),1,fp);

for(j=i+1;jj++)

fwrite(emp[j],sizeof(structemploee),1,fp);

printf("刪除后:\n");

fseek(fp,0,SEEK_SET);

printf("記錄號職工號姓名性別年齡工資\n");

for(i=0;fread(emp[i],sizeof(structemploee),1,fp)!=0;n++)

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

system("pause");

fclose(fp);

}

然后調試結果如下所示

刪除前,職工信息如下:

現(xiàn)在刪除職工號是004的職工,

到這里職工工資管理系統(tǒng)刪除功能實現(xiàn)了。

3.8、設計系統(tǒng)統(tǒng)計模塊

統(tǒng)計模塊:根據(jù)輸入的工資,顯示大于該工資的職工的所有信息。模塊中運用voidstat()調用函數(shù)展開對文件的使用。首先是以只讀的方式打開文件emp.txt。輸入職工的工資數(shù),運用for循環(huán)根據(jù)輸入的工資,顯示大于該工資的職工的所有信息。關閉文件,統(tǒng)計完成。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voidstat();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************統(tǒng)計模塊*************************/

voidstat()

FILE*fp;

intn,num;

if((fp=fopen("emp.txt","r"))==NULL)

printf("不能打開emp.txt文件\n");

return;

printf("工資數(shù):");

scanf("%d",num);

printf("記錄號職工號姓名性別年齡工資\n");

for(n=0;fread(emp,sizeof(structemploee),1,fp);n++)

if(emp[n].salar=num)

printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,emp[n].age,emp[n].salar);

fclose(fp);

}

然后調試結果如下所示

到這里職工工資管理系統(tǒng)統(tǒng)計功能實現(xiàn)了。

3.9、設計系統(tǒng)輸出模塊

輸出模塊:該模塊實現(xiàn)按職工號輸出職工的所有信息。在該模塊中運用voidoutputData()調用函數(shù)展開對文件的使用。首先以只讀的方式打開一個文本文件emp.txt。操作無誤則用for循環(huán)輸出正在查詢職工的:記錄號職工號姓名性別年齡工資。這些完成后用fclose(fp)函數(shù)關閉文件。模塊運行結束。在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voidoutputData();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************輸出模塊*************************/

voidoutputData()

inti;

FILE*fp;

if((fp=fopen("emp.txt","r"))==NULL)

printf("不能打開emp.txt文件\n");

return;

printf("記錄號職工號姓名性別年齡工資\n");

for(i=0;fread(emp[i],sizeof(structemploee),1,fp)!=0;i++)

printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);

fclose(fp);

然后調試結果如下所示

到這里職工工資管理系統(tǒng)輸出功能實現(xiàn)了。

3.10、設計系統(tǒng)追加模塊

追加模塊:該模塊實現(xiàn)添加職工的信息。在該模塊中運用voidrun()調用函數(shù)展開對文件的使用。首先以讀寫的方式為讀寫打開一個文件emp.txt。輸出要追加的職工人數(shù)待輸入要追加的個數(shù)后,用for循環(huán)控制待輸入的職工信息。用fwrite(newemp,sizeof(structemploee),1,fp)將該職工記錄寫入文件。用fclose(fp)函數(shù)關閉文件,模塊運行結束。

在StaffManage.h頭文件中聲明一個添加聯(lián)系人信息的函數(shù)voiddele();和voiddeleName();并在StaffManage.c源文件中定義相關的功能。其代碼如下所示

/*************************追加模塊*************************/

voidstaffAdd()

FILE*fp;

intn,i;

if((fp=fopen("emp.txt","a+"))==NU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論