c語言工資管理系統(tǒng)_第1頁
c語言工資管理系統(tǒng)_第2頁
c語言工資管理系統(tǒng)_第3頁
c語言工資管理系統(tǒng)_第4頁
c語言工資管理系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

年4月19日c語言工資管理系統(tǒng)資料內(nèi)容僅供參考,如有不當(dāng)或者侵權(quán),請聯(lián)系本人改正或者刪除。沈陽航空工業(yè)學(xué)院課程設(shè)計學(xué)號班級姓名指導(dǎo)教師年月日沈陽航空工業(yè)學(xué)院課程設(shè)計任務(wù)書一、課程設(shè)計題目:工資管理系統(tǒng)二、課程設(shè)計工作自三、課程設(shè)計內(nèi)容用C語言編寫軟件完成以下任務(wù):1輸入工資數(shù)(職工數(shù)據(jù)要有職工號.姓名.所屬部門.工齡和工資)保存在paid.dat文件中.2對現(xiàn)有的職工數(shù)據(jù)根據(jù)所屬部門排序,并顯示出企業(yè)的平均工資.3職工漲工資(根據(jù)工齡按比例進(jìn)行工資調(diào)整).4查詢職工的相關(guān)數(shù)據(jù).四、課程設(shè)計要求:程序質(zhì)量:1貫徹結(jié)構(gòu)化程序設(shè)計思想.2用戶界面友好,功能明確,操作方便.能夠加以其它功能和修飾.3用戶界面的菜單中包含"職工信息錄入","排序及顯示"."工資調(diào)整","信息查詢"."退出"5項.所有職工數(shù)據(jù)的改變都應(yīng)該在paid.dat文件中體現(xiàn)出來.4代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀行.課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書(打印稿和電子稿),其內(nèi)容如下:1封面2課程設(shè)計任務(wù)書3目錄4需求分析(分析題目的要求)5程序流程圖(總體流程圖和主要功能模塊流程圖)6核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段7個人總結(jié)8參考資料9源程序及適當(dāng)?shù)淖⑨屩笇?dǎo)教師:_____學(xué)生簽名:_____目錄TOC\o"1-3"\h\z一、需求分析…………1二、程序流程圖………2三、核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段……………5四、個人總結(jié)…………16五、參考文獻(xiàn)…… 17六、源程序…………18一、需求分析經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為五個模塊,其中每一個模塊對應(yīng)一個函數(shù),她們的功能分別是:輸入職工數(shù)據(jù)函數(shù)(shuru),職工排序函數(shù)(sort_part),增加職工工資函數(shù)(add_paid),職工信息的查詢函數(shù)(search_worker),以及主函數(shù)main().1、輸入職工數(shù)據(jù)函數(shù)實現(xiàn)的功能是按照工號對職工的數(shù)據(jù)輸入并保存在paid.dat;2、職工排序函數(shù)按照題目的具體要求實現(xiàn)的是按職工部門排序并算出平均工資。3、增加職工工資函數(shù)允許職工按照根據(jù)工齡按比例進(jìn)行工資調(diào)整。4、職工信息的查詢函數(shù)輸出paid.dat文件中的職工的相關(guān)數(shù)據(jù)。除上面介紹的功能之外,程序還具有退出功能,能夠在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個職工記錄都包含職工號.姓名.所屬部門.工齡和工資,在程序當(dāng)中,將職工記錄類型定義為結(jié)構(gòu)體類型,添加以及追加的職工信息直接寫入D盤的paid.dat文件中,其它函數(shù)每次對職工記錄的訪問,其數(shù)據(jù)來源都是paid.dat文件,這樣做不但能夠保證職工數(shù)據(jù)的一致性,而且能夠?qū)β毠?shù)據(jù)進(jìn)行永久保存,保證每次運(yùn)行程序都能夠采用原來的數(shù)據(jù)。二、程序流程圖1主函數(shù)工資管理系統(tǒng)輸入值n=1?真假輸入值n=2?工資管理系統(tǒng)輸入值n=1?真假輸入值n=2?輸真假入職輸入值n=3?職工真假工排輸入值n=4?信序真假息及平漲查均工詢工資職退出資工信息2錄入職工信息函數(shù)定義指針fp整型數(shù)據(jù)i結(jié)構(gòu)體變量pp字符串?dāng)?shù)組number[50]判斷文件Paid.txt是否存在定義指針fp整型數(shù)據(jù)i結(jié)構(gòu)體變量pp字符串?dāng)?shù)組number[50]判斷文件Paid.txt是否存在是否創(chuàng)立文件paid.txtWhile循環(huán)輸入各項數(shù)據(jù)將數(shù)據(jù)寫入文件關(guān)閉文件3漲工資函數(shù)定義變量打開文件Noyes定義變量打開文件NoyesReturn輸入每年增加工資假While(!feof(fp))真調(diào)出文件中的工資數(shù)據(jù)Break計算現(xiàn)在工資輸出職工信息關(guān)閉文件4排序函數(shù)定義變量定義變量no打開文件yes繼續(xù)假while(!fof)真return跳出循環(huán)工資累加Return求平均工資For循環(huán)(t=0;t<all-1;t++k=0;k<all-1-t;k++)pp[k].work..part>pp[k+1].work.part假真將部門替換break將相應(yīng)職工信息替換過來輸出職工信息關(guān)閉文件5查詢函數(shù)定義指針fp整型數(shù)據(jù)j.結(jié)構(gòu)體變量pp字符串?dāng)?shù)組number[50]判斷文件定義指針fp整型數(shù)據(jù)j.結(jié)構(gòu)體變量pp字符串?dāng)?shù)組number[50]判斷文件Paid.txt是否存在是否創(chuàng)立文件paid.txtWhile循環(huán)輸入各項數(shù)據(jù)打印職工數(shù)據(jù)關(guān)閉文件三、核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段本程序主要由四個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其它函數(shù)來實現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,輸入數(shù)據(jù)函數(shù)、查詢函數(shù)、漲工資函數(shù)和排序函數(shù)是程序中較為核心的部分,下面分別進(jìn)行說明:1錄入職工信息,職工信息包括職工編號,姓名,部門,工資和工作年齡,本函數(shù)的功能是把職工信息寫入到文件中。在程序中建立一個文件paid.txt.定義一個結(jié)構(gòu)體變量。輸入職工的基本信息把職工信息寫入到文件中。之后再次輸入下一個職工的編號,而且判斷職工編號是否為0當(dāng)不為零時,繼續(xù)輸入職工其它信息,而且把信息寫入到文件中。直到輸入的職工編號為零退出此函數(shù)voidshuru(){//定義文件類型指針FILE*fp;inti;//定義結(jié)構(gòu)體變量ppstructPaidpp;charnumer[50];//打開文件if((fp=fopen("d:\\paid.txt","a+"))==NULL){fp=fopen("d:\\paid.txt","w+");}while(strcmp(pp.work_num,"e")!=0){printf("\n請輸入職工編號:");scanf("%s",pp.work_num);printf("\n請輸入職工姓名:"); scanf("%s",pp.work_name);printf("\n請輸入職工部門:"); scanf("%s",pp.work_part);printf("\n請輸入職工工資:"); scanf("%d",&pp.work_paid);printf("\n請輸入職工工齡:"); scanf("%d",&pp.work_age);//把員工信息寫入到文件中fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp.work_num,pp.work_name,pp.work_part,pp.work_paid,pp.work_age);printf("\n退出請輸入e\n繼續(xù)請按任意數(shù)字\n"); scanf("%s",pp.work_num);}fclose(fp);}2排序函數(shù)的功能是對學(xué)生信息進(jìn)行排序,打開文件paid.txt。定義結(jié)構(gòu)體變量數(shù)組,把工人信息讀取到結(jié)構(gòu)體數(shù)組中,用冒泡法進(jìn)行排序而且輸出排序結(jié)果,此函數(shù)還有計算平均工資的功能。voidsort_part(){FILE*fp;inti,all,temp_i,k,t,sum=0;structPaidpp[10];chartemp_ch[55];if((fp=fopen("d:\\paid.txt","r+"))==NULL){printf("\n不能打開文件paid.txt");return;}i=0;//判斷文件是否結(jié)束while(!feof(fp)){fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,&pp[i].work_paid,&pp[i].work_age);sum+=pp[i].work_paid; i++;}all=i;printf("\n%d個員工的平均工資%lf",all,(float)sum/all);printf("\n");fclose(fp);for(t=0;t<all-1;t++) for(k=0;k<all-1-t;k++) if(strcmp(pp[k].work_part,pp[k+1].work_part)>0) { strcpy(temp_ch,pp[k].work_num); strcpy(pp[k].work_num,pp[k+1].work_num); strcpy(pp[k+1].work_num,temp_ch); strcpy(temp_ch,pp[k].work_name); strcpy(pp[k].work_name,pp[k+1].work_name); strcpy(pp[k+1].work_name,temp_ch); strcpy(temp_ch,pp[k].work_part); strcpy(pp[k].work_part,pp[k+1].work_part); strcpy(pp[k+1].work_part,temp_ch); temp_i=pp[k].work_paid; pp[k].work_paid=pp[k+1].work_paid; pp[k+1].work_paid=temp_i;temp_i=pp[k].work_age; pp[k].work_age=pp[k+1].work_age; pp[k+1].work_age=temp_i; }fp=fopen("d:\\paid.txt","w+");for(i=0;i<all;i++){fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);printf("%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);}fclose(fp);}3增加職工工資,自己設(shè)置一個職工工資的增加法則可,讀取職工信息而且把職工的工資進(jìn)行按工齡增加。最后把職工信息全部寫入到文件中。關(guān)閉文件voidadd_paid(){FILE*fp;inti,j,gongzi;structPaidpp[10];charnumber[50];printf("\n請輸入職工每年增加的工資:");scanf("%d",&gongzi);if((fp=fopen("d:\\paid.txt","r+"))==NULL){ printf("\n不能打開文件paid.txt");return;}i=0;j=0;while(!feof(fp)){fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[j].work_num,pp[j].work_name,pp[j].work_part,&pp[j].work_paid,&pp[j].work_age);pp[j].work_paid=pp[j].work_paid+pp[j].work_age*gongzi; j++;}fclose(fp);if((fp=fopen("d:\\paid.txt","w+"))==NULL){printf("\n不能打開文件paid.txt");return;} for(i=0;i<j;i++){fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);printf("%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);}fclose(fp);}4職工信息的查詢是經(jīng)過打開文件paid.txt而且讀取文件中的職工信息,并輸出職工信息到屏幕上。當(dāng)文件結(jié)束,關(guān)閉文件,退出函數(shù)voidsearch_worker(){FILE*fp;intj;structPaidpp[10];charnumber[50];if((fp=fopen("d:\\paid.txt","r+"))==NULL){ printf("\n不能打開文件paid.txt");return;}j=0;while(!feof(fp)){fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[j].work_num,pp[j].work_name,pp[j].work_part,&pp[j].work_paid,&pp[j].work_age);printf("%s\t%s\t%s\t%d\t%d\n",pp[j].work_num,pp[j].work_name,pp[j].work_part,pp[j].work_paid,pp[j].work_age);j++; }if(0==j)printf("\n數(shù)據(jù)庫中沒有員工信息");fclose(fp);四、個人總結(jié)計算機(jī)的應(yīng)用已經(jīng)越來越普及,進(jìn)入普通百姓家庭。由于計算機(jī)的快速發(fā)展,計算機(jī)軟件的發(fā)展也越來越快。在當(dāng)前流行的計算機(jī)軟件中,C語言由于其功能強(qiáng)大,簡單易懂,因此我對用C語言編程充滿了愛好。當(dāng)做完程序時對自己的小小成績感到無比的驕傲和自豪。經(jīng)過一個學(xué)期的C語言學(xué)習(xí),使我基本掌握了C語言的語法,掌握了面向過程編程的步驟。這次課程設(shè)計在課堂學(xué)習(xí)C語言的基礎(chǔ)上有了很大的提高。使我更加熟練地掌握了C語言的調(diào)試、編寫方法??傊矣X得很高興能用所學(xué)解決實際問題。五、參考文獻(xiàn)1《C高級實用程序設(shè)計》作者:王士元,清華大學(xué)出版社,1996,2譚浩強(qiáng).C程序設(shè)計.北京:清華大學(xué)出版社,3劉成等.C語言程序設(shè)計實驗指導(dǎo)與習(xí)題集.北京:中國鐵道出版社,六、源程序//宏定義#include"string.h"#include"stdio.h"#include"stdlib.h"http://定義結(jié)構(gòu)體structPaid{charwork_num[50];charwork_name[50];charwork_part[50];intwork_paid;intwork_age;};voidshuru(){//定義文件類型指針FILE*fp;inti;//定義結(jié)構(gòu)體變量ppstructPaidpp;charnumer[50];//打開文件if((fp=fopen("d:\\paid.txt","a+"))==NULL){fp=fopen("d:\\paid.txt","w+");}while(strcmp(pp.work_num,"e")!=0){printf("\n請輸入職工編號:");scanf("%s",pp.work_num);printf("\n請輸入職工姓名:"); scanf("%s",pp.work_name);printf("\n請輸入職工部門:"); scanf("%s",pp.work_part);printf("\n請輸入職工工資:"); scanf("%d",&pp.work_paid);printf("\n請輸入職工工齡:"); scanf("%d",&pp.work_age);//把員工信息寫入到文件中fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp.work_num,pp.work_name,pp.work_part,pp.work_paid,pp.work_age);printf("\n退出請輸入e\n繼續(xù)請按任意數(shù)字\n"); scanf("%s",pp.work_num);}fclose(fp);}voidsort_part(){FILE*fp;inti,all,temp_i,k,t,sum=0;structPaidpp[10];chartemp_ch[55];if((fp=fopen("d:\\paid.txt","r+"))==NULL){printf("\n不能打開文件paid.txt");return;}i=0;//判斷文件是否結(jié)束while(!feof(fp)){fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,&pp[i].work_paid,&pp[i].work_age);sum+=pp[i].work_paid; i++;}all=i;printf("\n%d個員工的平均工資%lf",all,(float)sum/all);printf("\n");fclose(fp);for(t=0;t<all-1;t++) for(k=0;k<all-1-t;k++) if(strcmp(pp[k].work_part,pp[k+1].work_part)>0) { strcpy(temp_ch,pp[k].work_num); strcpy(pp[k].work_num,pp[k+1].work_num); strcpy(pp[k+1].work_num,temp_ch); strcpy(temp_ch,pp[k].work_name); strcpy(pp[k].work_name,pp[k+1].work_name); strcpy(pp[k+1].work_name,temp_ch); strcpy(temp_ch,pp[k].work_part); strcpy(pp[k].work_part,pp[k+1].work_part); strcpy(pp[k+1].work_part,temp_ch); temp_i=pp[k].work_paid; pp[k].work_paid=pp[k+1].work_paid; pp[k+1].work_paid=temp_i; temp_i=pp[k].work_age; pp[k].work_age=pp[k+1].work_age; pp[k+1].work_age=temp_i; }fp=fopen("d:\\paid.txt","w+");for(i=0;i<all;i++){fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);printf("%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);}fclose(fp);}voidadd_paid(){FILE*fp;inti,j,gongzi;structPaidpp[10];charnumber[50];printf("\n請輸入職工每年增加的工資:");scanf("%d",&gongzi);if((fp=fopen("d:\\paid.txt","r+"))==NULL){ printf("\n不能打開文件paid.txt");return;}i=0;j=0;while(!feof(fp)){fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[j].work_num,pp[j].work_name,pp[j].work_part,&pp[j].work_paid,&pp[j].work_age);pp[j].work_paid=pp[j].work_paid+pp[j].work_age*gongzi; j++;}fclose(fp);if((fp=fopen("d:\\paid.txt","w+"))==NULL){printf("\n不能打開文件paid.txt");return;} for(i=0;i<j;i++){fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,p

溫馨提示

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

評論

0/150

提交評論