《工資管理》c語言程序設(shè)計_第1頁
《工資管理》c語言程序設(shè)計_第2頁
《工資管理》c語言程序設(shè)計_第3頁
《工資管理》c語言程序設(shè)計_第4頁
《工資管理》c語言程序設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、遼 寧 工 業(yè) 大 學(xué) C語言程序設(shè)計 課程設(shè)計(論文)題目: 工資管理 課程設(shè)計(報告)任務(wù)及評語院(系):軟件學(xué)院 教研室:軟件教研室學(xué) 號101401020學(xué)生姓名李鑫專業(yè)班級電子商務(wù)101班程序設(shè)計(報告)題目工資管理程序設(shè)計(報告)任務(wù)程序設(shè)計的任務(wù)與要求:(1)掌握C語言編程的基礎(chǔ)知識。(2)較熟練地編寫C語言應(yīng)用程序。(3)了解C語言的常用標(biāo)準(zhǔn)函數(shù)、編程技巧、異常處理。(5)聯(lián)系已學(xué)過的內(nèi)容,鞏固所學(xué)的理論,增強獨立工作能力。(6)通過設(shè)計主要使學(xué)生有一個獨立編寫程序的過程,對理論學(xué)習(xí)及動手能力都有一個很大的提高。(7)通過本次設(shè)計,進一步培養(yǎng)學(xué)生熱愛專業(yè)的思想,同時對本專業(yè)綜合

2、素質(zhì)的提高起一個積極的推動作用。課程設(shè)計過程中,要嚴(yán)格遵守實踐環(huán)節(jié)的時間安排,聽從指導(dǎo)教師的指導(dǎo)。正確地完成上述內(nèi)容,記錄實習(xí)日記,規(guī)范完整地撰寫出課程設(shè)計報告。指導(dǎo)教師評語及成績成績: 指導(dǎo)教師簽字: 2011 年1月 4 日遼 寧 工 業(yè) 大 學(xué) 課 程 設(shè) 計 說 明 書(論 文)目 錄第1章 課程設(shè)計的目的與要求11.1 課程設(shè)計目的11.2 課程設(shè)計的實驗環(huán)境11.3 課程設(shè)計的預(yù)備知識11.4 課程設(shè)計要求1第2章 課程設(shè)計內(nèi)容22.1程序功能介紹22.2程序整體設(shè)計說明22.2.1設(shè)計思路32.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明構(gòu)32.2.3程序結(jié)構(gòu)42.2.4各模塊的功能及程序說明7

3、2.2.5程序結(jié)果72.3程序源代碼及注釋8設(shè)計總結(jié)第3章 課程15參考資料16第1章 課程設(shè)計的目的與要求1.1 課程設(shè)計目的本課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)重要的實踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完程序設(shè)計語言(C)課程后進行的一次全面的綜合練習(xí)。本課程設(shè)計的目的和任務(wù): 1. 鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握 2. 掌握C語言編程和程序調(diào)試的基本技能 3. 利用C語言進行基本的軟件設(shè)計4. 掌握書寫程序設(shè)計說明文檔的能力5. 提高運用C語言解決實際問題的能力1.2 課程設(shè)計的實驗環(huán)境硬件要求能運行Windows 2000/XP操作系統(tǒng)的微機系統(tǒng)。C語言程序設(shè)計及相應(yīng)的開發(fā)環(huán)境。

4、1.3 課程設(shè)計的預(yù)備知識熟悉C語言及C語言開發(fā)工具。1.4 課程設(shè)計要求1. 分析課程設(shè)計題目的要求2. 寫出詳細(xì)設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用5. 設(shè)計完成后提交課程設(shè)計報告第2章 課程設(shè)計內(nèi)容2.1程序功能介紹工資管理系統(tǒng)對于決策者和管理者來說都至關(guān)重要,所以工資管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段,企事業(yè)單位可運行浮動管理模式,兩種模式隨時任意切換使用,且完全共享數(shù)據(jù)。系統(tǒng)以月工資表為對象,月與月之間結(jié)構(gòu)、公式、報表、數(shù)據(jù)完全獨立,工資表結(jié)構(gòu)可自定義隨意增減、可定義公式,可生成自定義格式文本或EXCEL文檔,報表自

5、動生成功能,報表可任意增加、修改。工資表項目之間任意考貝數(shù)據(jù)。只要將計時、計件、加班數(shù)據(jù)輸入,系統(tǒng)自動統(tǒng)計對應(yīng)工資,帶稅率設(shè)置與所得稅計算器。帶一個通用數(shù)據(jù)采集器,適用于單價隨時變化的情總。計件數(shù)據(jù)可對應(yīng)生產(chǎn)單亦可不對應(yīng),能計算每生產(chǎn)單的成本偏差。本系統(tǒng)有人事管理、離退管理、人員調(diào)動、人事統(tǒng)計功能、成品管理、成品工序管理,生產(chǎn)單管理。其中任務(wù)批處理(包括:基本工資、職務(wù)工資、各種補助、應(yīng)發(fā)工資、公積金、稅金、實發(fā)工資)功能,將任務(wù)一次全部執(zhí)行完畢,得到最后正確的工資表,防止遺漏。工資表能鎖定存檔,計件/計時/加班工資平衡試算,以核查數(shù)據(jù)正確性。2.2程序整體設(shè)計說明該程序輸入職工工號和應(yīng)發(fā)工資

6、,由系統(tǒng)對其完成的實發(fā)工資實現(xiàn)計算。其中職工信息包括職工號、姓名、性別、應(yīng)發(fā)工資、稅金、實發(fā)工資等(職工號不重復(fù))。功能要求及說明:系統(tǒng)以菜單方式工作職工基本信息和應(yīng)發(fā)工資的錄入功能(用文件保存)從鍵盤輸入數(shù)據(jù),建立磁盤數(shù)據(jù)文件salary.txt職工工資信息瀏覽功能:從磁盤數(shù)據(jù)文件讀取所有職工工資信息并顯示輸出到屏幕上;計算應(yīng)發(fā)工資和查詢的功能:計算公式為: 稅金=應(yīng)發(fā)工資*稅率;實發(fā)工資=應(yīng)發(fā)工資-稅金;應(yīng)發(fā)工資 稅率 2.2.1設(shè)計思路在頭文件中將所需包含的函要數(shù)進行輸入,再進行變量定義,如:定義數(shù)據(jù)結(jié)構(gòu),有關(guān)工資管理需要輸入的基本信息再用指針的方法將這些有關(guān)變量進行地址存儲。再定義出工

7、資管理整個程序中所需要的函數(shù)原型;然后進行主函數(shù)的書寫。在主函數(shù)中先設(shè)計一個有關(guān)工資管理系統(tǒng)的菜單,此菜單可以完成以下功能:調(diào)用菜單函數(shù)返回一個整數(shù)值、初始化、輸入數(shù)據(jù)創(chuàng)建雙鏈表、顯示所有數(shù)據(jù)、單條顯示、計算實發(fā)工資、查找職工信息數(shù)據(jù)、刪除記錄、插入記錄、追加記錄、保存文件、讀取文件、復(fù)制文件、按實發(fā)工資升序排序、計算所需票面數(shù)、按職工號索引、按部門求合計、退出等16項功能。再對此程序進行輸出時工作界面的處理,如:記錄所壓鍵值、壓任意鍵進入主菜單、設(shè)置文本顏色為黃色、設(shè)置背景顏色為蘭色、輸出左上角邊框、輸出上邊框水平線、輸出右上角邊框 、輸出左右兩邊的垂直線等將輸出模式進行點綴。之后進入核心編

8、輯:編輯目錄中的選項計算方法,其中含有程序的初始化、輸入數(shù)據(jù)創(chuàng)建雙鏈表、顯示所有數(shù)據(jù)、單條顯示、計算實發(fā)工資、查找職工信息數(shù)據(jù)、刪除記錄、插入記錄、追加記錄、保存文件、讀取文件、復(fù)制文件、按實發(fā)工資升序排序、計算所需票面數(shù)、按職工號索引、按部門求合計等子函數(shù)輸出語句的編輯。2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明構(gòu) 1使用SWITCH語句編輯程序菜單;2使用getch,goto,for,put等語句編輯初始化,輸入數(shù)據(jù)創(chuàng)建雙鏈表;3使用if,while語句與指針編輯顯示所有數(shù)據(jù)、單條顯示。4使用if,while,switch,for語句編輯計算實發(fā)工資。5使用if,while,if-else,goto

9、,infor等語句編輯查找職工信息數(shù)據(jù)。6使用if,while,switch,for,infor,break等語句編輯刪除記錄,插入記錄,追加記錄,保存文件,讀取文件,復(fù)制文件。7使用if,while,if-else,語句編輯職工工資排序。按職工號索引,按部門求合計。2.2.3程序結(jié)構(gòu)Case0Case1StartMenu_selectCreate(breakList()breakDisplay()breakCalc()breakSearch()breakDelete()breakInsert()breakAppend()breakSave()breakLoad()breakSort()bre

10、akIndex()breakInit()breakTotal()breakExit()breakIntoMenuCase16Case15Case14Case12Case10Case9Case8Case4Case6Case5Case7Case3Case2圖2.1為根據(jù)應(yīng)發(fā)工資,計算稅率流程圖:使用if語句與switch語句嵌套共同編譯圖2.2為菜單目錄流程圖:使用SWITCH語句編輯。YesNOCase4Case3Case2Case1NoYesNoYesP=NullRecord is empty!Print(p)For(;)Empty!P=first0.Quit 1.Prior 2Next3.F

11、irst 4.LastPlease select 04Scanf(“%d”,&ch)Ch=0breakQuitP=P->prior;if(p=NULL)p=First;Break;P=P->prior;if(p=NULL)p=Last;Break;P=First;Break;P=Last;Break;Print(P) 圖2.1圖2.3為單條顯示記錄流程圖:使用if-eles;if; 以及switch語句共同編輯。NoYesDefaultCase4Case3Case2Case1StartF1X<1000QUITX/1000F1=0.05;Break;F1=0.1;Bre

12、ak;F1=0.15;Break;F1=0.2;Break;F1=0.3;Break;Return f1 圖2.3圖2.4為字符串輸入和驗證函數(shù)流程圖:使用do-while語句和if語句嵌套共同編譯Can outCant outStartChar p225Scanf(“%s”,p)Strlen(p) >countStrlen(p)>countStrcop(s,p)Too long! long! 圖2.42.2.4各模塊的功能及程序說明工資管理系統(tǒng)提供以下功能:1主菜單界面設(shè)計。通過提示用戶輸入一個數(shù)字選項,調(diào)用相應(yīng)的功能函數(shù)。2顯示功能:完成全部職工記錄的顯示;3計算功能:完成全部

13、職工的應(yīng)發(fā)工資、稅款和實發(fā)工資的計算并顯示;4修改功能:按工號修改一個職工的基本工資、獎金或扣款后重新計算職工的應(yīng)發(fā)工資、稅款和實發(fā)工資,并重新排序和顯示;5查詢功能:要求能分別按職工工號和姓名查詢一條記錄并顯示;6追加功能:追加一條新職工記錄,并重新排序和顯示;7刪除功能:按工號刪除一條指定記錄,并重新排序和顯示;8排序功能:按職工實發(fā)工資降序排序;2.2.5程序結(jié)果圖1 程序開始圖2 選擇圖3 程序完成2.3程序源代碼及注釋主函數(shù):/*計算實發(fā)工資*/void calc() int x; /*行坐標(biāo)*/ int i=0; /*記錄數(shù)*/ float temp; /*臨時變量扣款*/ SAL

14、ARY *p; /*移動指針*/ clrscr(); /*清屏*/ p=First; /*從頭指針開始*/ while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,外循環(huán)控制換頁*/ x=0; clrscr(); gotoxy(1,3);printf("*gongziguanli*"); /*輸出標(biāo)題*/ gotoxy(1,5); printf("|-|"); gotoxy(1,6);/*下面輸出字段標(biāo)題*/ printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |&qu

15、ot;); while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,內(nèi)循環(huán)控制處理9條*/ gotoxy(1,7+x);printf("|-|-|-|-|-|-|-|");gotoxy(1,8+x);printf("|");gotoxy(12,8+x);printf("|");gotoxy(29,8+x);printf("|");gotoxy(38,8+x);printf("|");gotoxy(49,8+x);printf("|");gotoxy(58,8+x);p

16、rintf("|");gotoxy(67,8+x);printf("|");gotoxy(76,8+x);printf("|");gotoxy(2,8+x);printf("%-10s",p->no); /*輸出編號*/gotoxy(13,8+x);printf("%-15s",p->name); /*輸出姓名*/gotoxy(30,8+x);printf("%.2f",p->jbgz); /*輸出基本工資*/gotoxy(39,8+x);scanf(&qu

17、ot;%f",&temp); /*輸入扣款*/p->koukuan=temp; /*扣款字段賦值*/p->yfgz=p->jbgz-p->koukuan; /*計算應(yīng)發(fā)工資=基本工資-扣款*/gotoxy(50,8+x);printf("%.2f",p->yfgz); /*輸出應(yīng)發(fā)工資*/gotoxy(59,8+x);p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否則按稅率計算稅金*/printf("%.2f",p->shuijin); /*輸出

18、稅金*/gotoxy(68,8+x);p->sfgz=p->yfgz-p->shuijin; /*計算實發(fā)工資*/printf("%-8.2f",p->sfgz); /*輸出實發(fā)工資*/x+=2; /*行坐標(biāo)下移兩行*/i+; /*記錄數(shù)加1*/ if(i%9=0)break; /*記錄數(shù)超過9條,跳出內(nèi)循環(huán)*/p=p->next; /*指針后移,處理下一條*/ gotoxy(1,7+x);printf("|-|-|-|-|-|-|-|n"); /*輸出結(jié)束行*/ printf("Press any key con

19、gtinue.n"); getch(); /*根據(jù)應(yīng)發(fā)工資,計算稅率*/float fax(float x) float f1; if(x<1000) return 0; /*小于1000,返回0*/ switch(int)(x/1000) case 1:f1=0.05;break; /*10001999,返回0.05*/ case 2:f1=0.1;break; /*20002999,返回0.1*/ case 3:f1=0.15;break; /*30003999,返回0.15*/ case 4:f1=0.2;break; /*40004999,返回0.2*/ default

20、:f1=0.3;break; /*5000以上,返回0.3*/ return f1;/*文件復(fù)制*/void copy() char outfile10,infile10; /*保存源文件名和目標(biāo)文件名*/ FILE *sfp,*tfp; /*定義指向源文件和目標(biāo)文件的指針*/ SALARY *p=NULL; /*定義臨時指針,暫存讀出的記錄*/ clrscr(); printf("Enter infile name,for example c:f1te.txt:n"); scanf("%s",infile); /*輸入源文件名*/ if(sfp=fop

21、en(infile,"rb")=NULL) /*二進制讀方式打開源文件*/ printf("can not open input filen"); /*顯示不能打開文件信息*/ return; /*返回*/ printf("Enter outfile name,for example c:f1te.txt:n"); /*提示輸入目標(biāo)文件名*/ scanf("%s",outfile); /*輸入目標(biāo)文件名*/ if(tfp=fopen(outfile,"wb")=NULL) /*二進制寫方式打開目

22、標(biāo)文件*/ printf("can not open output file n"); return; while(!feof(sfp) /*讀文件直到文件尾*/ if(1!=fread(p,sizeof(SALARY),1,sfp)break;/*塊讀*/ fwrite(p,sizeof(SALARY),1,tfp); /*塊寫*/ fclose(sfp); /*關(guān)閉源文件*/ fclose(tfp); /*關(guān)閉目標(biāo)文件*/ printf("you have success copy file!n");/*顯示成功拷貝*/*排序*/void sort(

23、) SALARY *p0,*p00,*p1,*p11,*p2; /*定義臨時指針*/ int i=1; /*統(tǒng)計當(dāng)前排第幾個結(jié)點*/ clrscr(); /*清屏*/ printf("nn start sort.n"); /*開始排序*/ p1=p11=p2=First; while(p1!=NULL) /*當(dāng)p1不為空時*/ p0=p1; /*待比較結(jié)點從p1開始*/ p2=p1; /*p2從當(dāng)前待排序位置開始*/ while(p2->next!=NULL) /*p2的后繼不為空時*/ if(p0->sfgz>p2->next->sfgz)

24、/*找當(dāng)前最小結(jié)點*/ p00=p2; /*找到當(dāng)前最小結(jié)點記錄其前驅(qū)指針*/p0=p2->next; /*記錄當(dāng)前最小值結(jié)點的指針p0*/ p2=p2->next; /*指針后移*/ Last=p0; /*當(dāng)前最小結(jié)點為尾結(jié)點*/ if(p1!=p0) /*判斷最小結(jié)點是否是當(dāng)前排序位置,不是則作指針修改*/ p00->next=p0->next; /*將p00的后繼指向p0的后繼*/p0->next->prior=p00; /*p0的后繼的前驅(qū)為p00*/p0->next=p1; /*p0的后繼指向下個排序位置p1*/p1->prior=p0

25、; /*p1的前驅(qū)為p0*/if(i=1)First=p0; /*作頭指針*/First->prior=NULL; /*頭指針的前驅(qū)為空*/else /*不是第一個結(jié)點*/ p11->next=p0; /*p11的后繼指向p0*/p0->prior=p11; /*p0的前驅(qū)指向p11*/ p11=p1=p0; /*因p0是排好序的最后一個結(jié)點,p1是下一個將要排序的位置,所以將p0賦值給p1和p11*/ i+; /*排好序的結(jié)點數(shù)加1*/ p1=p1->next; /*p1后移指向下一個待排序位置*/ printf("sort sucess!n");

26、 /*輸出排序成功*/第3章 課程設(shè)計總結(jié)課設(shè)對我們來說是一個很陌生的詞,不知從何下手,也不知道課程設(shè)計應(yīng)用什么知識,但是經(jīng)過一段時間的學(xué)習(xí)我對課程設(shè)計有了一定的了解,對C語言也產(chǎn)生一 些愛好。有如下的知識收獲:并且通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,何況我所掌握的C語言知識還只是皮毛,對C語言的深層知識還沒有掌握,所以我發(fā)現(xiàn)只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為今后的學(xué)習(xí)、工作服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表,各種語句的銜接通過這次課程設(shè)計之后,等于讓我把前面所學(xué)過的知識又重新溫故了一遍,的確對我今后的學(xué)習(xí)與工作起到了很大的幫助。并且通過這次課程設(shè)計,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學(xué)習(xí)也有所改進;再有對C語言的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論