




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、遼 寧 工 業(yè) 大 學 c語言程序設計 課程設計(論文)題目: 工資管理 院(系): 專業(yè)班級: 學 號: 學生姓名: 指導教師: 教師職稱: 起止時間: 課程設計(報告)任務及評語院(系): 教研室:軟件教研窒學 號學生姓名專業(yè)班級程序設計(報告)題目工資管理程序設計(報告)任務程序設計的任務與要求:(1)掌握c語言編程的基礎知識。(2)較熟練地編寫c語言應用程序。(3)了解c語言的常用標準函數、編程技巧、異常處理。(5)聯系已學過的內容,鞏固所學的理論,增強獨立工作能力。(6)通過設計主要使學生有一個獨立編寫程序的過程,對理論學習及動手能力都有一個很大的提高。(7)通過本次設計,進一步培養(yǎng)
2、學生熱愛專業(yè)的思想,同時對本專業(yè)綜合素質的提高起一個積極的推動作用。課程設計過程中,要嚴格遵守實踐環(huán)節(jié)的時間安排,聽從指導教師的指導。正確地完成上述內容,記錄實習日記,規(guī)范完整地撰寫出課程設計報告。指導教師評語及成績成績: 指導教師簽字: 2009 年 1 月 11 日目 錄第1章 課程設計的目的與要求31.1 課程設計目的31.2 課程設計的實驗環(huán)境31.3 課程設計的預備知識31.4 課程設計要求3第2章 課程設計內容42.1課程設計題目42.2課程設計整體設計說明42.2.1課程設計內容42.2.2系統功能模塊結構圖42.2.3數據結構設計及用法說明42.2.4程序結構(畫流程圖)52.
3、2.5各模塊的功能72.3程序源代碼及注釋7第3章 課程設計總結7參考資料19第1章 課程設計的目的與要求1.1 課程設計目的本課程設計是計算機科學與技術專業(yè)重要的實踐性環(huán)節(jié)之一,是在學生學習完程序設計語言(c)課程后進行的一次全面的綜合練習。本課程設計的目的和任務: 1. 鞏固和加深學生對c語言課程的基本知識的理解和掌握 2. 掌握c語言編程和程序調試的基本技能 3. 利用c語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能力5. 提高運用c語言解決實際問題的能力1.2 課程設計的實驗環(huán)境硬件要求能運行windows 2000/xp操作系統的微機系統。c語言程序設計及相應的開發(fā)環(huán)境。1
4、.3 課程設計的預備知識熟悉c語言及c語言開發(fā)工具。1.4 課程設計要求1. 分析課程設計題目的要求2. 寫出詳細設計說明3. 編寫程序代碼,調試程序使其能正確運行4. 設計完成的軟件要便于操作和使用5. 設計完成后提交課程設計報告第2章 課程設計內容2.1程序功能介紹(1)能完成對工資的錄入、修改(2)能統計工資,計算工資,并能根據工資數額進行排序(3)能查詢工資,分類合計2.2程序整體設計說明本系統是采用c程序設計思想進行編制的,整個系統由一個結構體、函數模塊以及一個主函數組成,從而建立一個“員工工資管理系統”,以方便對工資數據進行管理操作。開發(fā)目的如:能對工資數據進行錄入和修改;能統計工
5、資,計算工資,并能根據工資數額進行排序;能根據員工的姓名來查詢該員工的工資、獎金及工資總額; 2.2.1設計思路利用單鏈表結構實現學生成績管理,了解數據庫管理的基本功能,掌握c語言中的結構體、指針、函數、文件操作等知識,是一個c語言知識的綜合應用。注意其中的難點,指針變量做函數參數、函數值為指向結構體的指針及單鏈表結構的應用等知識。就是將本學期課本上的理論知識和實際有機的結合起來,鍛煉學生實際分析問題和解決問題的能力,提高學生適應實際、實踐編程的能力,使對c語言系統編程有一個大致的了解。2.2.2數據結構設計及用法說明 根據這些需求,設計一個cnode類 、cdata類和clist類,在該類中
6、,除了定義構造函數以外,還應該一定義對員工工資應有的操作。在該類中包括的數據成員有添加、顯示和查詢等,構造函數用于設置數據成員添加、顯示和查詢等的初值。見如圖所示。cnode- pdata : cdata *- pnext : cnode *+ cnode()+ cnode(node:cnode &) + inputdata(pdata:cdata *):void+ shownode():void+ getdata():cdata * cdata+ cdata()+ compare():int+ show():void = 0+ cdata()clist# phead : cnode *+ c
7、list()+ clist()+ addnode(pnode:cnode *):void+ deletelist(:cnode *):cnode *+ lookup(:cdata &):cnode *+ showlist():void+ deletelist():void+ getlisthead():cnode *+ getlistnextnode(:cnode *):cnode *-pdata圖1員工工資管理程序的cnode類 、cdata類和clist類的uml圖2.2.3程序結構(流程圖)利用單鏈表結構實現員工工資管理,包括添加、保存、顯示、查詢、刪除、退出。見如圖所示:員工工資管理系
8、統由相關工作人員錄入干個員工的工資數據員工工資管理程序輸入已錄入好的員工工資、獎金及工資總額數據輸入新的員工工資數據統計工資,計算工資,并能根據工資數額進行排序查找有無數據文件,找到后保存文件數據對工資的錄入、修改查詢工資,分類合計退出系統圖2程序的流程圖將員工工資管理程序的算法用n-s結構化流程圖來表示,見如圖所示。結束輸出:自動排序、姓名、工獎、獎金及總額輸入姓名、工資、號碼開始是/否再輸入是/否查詢輸出:自動排序、姓名、工資 、獎金和總額n+1=n是/否刪除輸出:自動排序、姓名、工資 、獎金和總額 y n y n n y 圖3 用n-s結構化流程圖2.2.4各模塊的功能及程序說明函數模塊
9、功能主函數main()定義員工結構體數組,調用添加、顯示等函數對工資表進行處理存儲函數loadfile()查找有無數據文件,找到后讀取文件數據添加函數addrecord()輸入姓名、工資、資金及工資總額 顯示函數displayrecord()顯示姓名、員工工資、獎金及工資總額查詢函數lookuprecord ()查詢指定員工工資記錄刪除函數deleterecrd()刪除指定員工姓名記錄輸出函數operate()輸出員工工資記錄系統的功能模塊圖2.2.5程序結果 *menu* 0. init list 1. enter list 2. list all 3. display record by
10、step 4. calc the salary 5. search record on name 6. delete a record 7. insert record to list 8. append record to file 9. save data to the file 10. load data from the file 11. copy the file to new file 12. sort on sfgz 13. computer ticket number 14. index on number 15. total on number 16. quit *gongz
11、iguanli* -enter end-|-| no | name | jbgz |-|-|-| | | |*salary*|no | name | jbgz | koukuan | yfgz | shuijin | sfgz |-|-|-|-|-|-|-|60 |liluoke | 6000.00| 0.00| 0.00| 0.00| 0.00|50 |zhangpeng | 5000.00| 0.00| 0.00| 0.00| 0.00|*end*press any key congtinue.*salary*|no | name | jbgz | koukuan| yfgz | shui
12、jin | sfgz |-|-|-|-|-|-|-|60 |liluoke | 6000.00| 100.00| 5900.00| 1470.00| 4430.00|*end* *0. quit 1. prior 2. next 3. first 4.lastplease select 04:*gongziguanli* -enter end-|-| no | name | jbgz |-|-|-|1 |zhang |12222 |-|-|-|2li |li |1000 |-|-|-|3 |sd |3231232 |-|-|-|12 |sadsas |1321231|-|-|-|-|-|-|p
13、ress any key enter menu.2.3程序源代碼及注釋/*12.3.2 源程序*/*頭文件(.h)*/#include stdio.h /*i/o函數*/# include bios.h /*rom基本輸入輸出函數*/#include dos.h /*dos接口函數*/#include conio.h /*屏幕操作函數*/#include stdlib.h /*其它說明*/#include string.h /*字符串函數*/#include mem.h /*內存操作函數*/#include ctype.h /*字符操作函數*/#include alloc.h /*動態(tài)地址分配
14、函數*/*變量定義*/typedef struct z1 /*定義數據結構*/ char no11; /*編號*/ char name15; /*姓名*/ float jbgz; /*基本工資*/ float koukuan; /*扣款*/ float yfgz; /*應發(fā)工資*/ float shuijin; /*稅金*/ float sfgz; /*實發(fā)工資*/ struct z1 *prior;/*前驅指針*/ struct z1 *next;/*后繼指針*/salary; /*結構體類型名*/struct z1 *first; /*雙鏈表頭指針*/struct z1 *last; /*
15、雙鏈表尾指針*/*函數原型*/void init(); /*初始化*/void create(); /*創(chuàng)建鏈表*/void calc(); /*計算應發(fā)工資*/void delete(); /*刪除*/void search(); /*查找*/void save(); /*保存文件*/void load(); /*讀取文件*/void computer(); /*計算所需各種票面張數*/void insert(); /*插入*/void append(); /*追加*/void copy(); /*復制文件*/void sort(); /*排序*/void index(); /*索引*/vo
16、id total(); /*分類合計*/void list(); /*顯示所有數據*/void print(salary *p); /*輸出單條記錄*/void display(); /*隨意逐條顯示*/float fax(float x); /*計算稅金*/int menu_select(); /*主菜單*/*主函數開始*/main() int i; clrscr(); for(;) switch(menu_select() /*調用菜單函數返回一個整數值*/ case 0:init();break; /*初始化*/ case 1:create();break; /*輸入數據創(chuàng)建雙鏈表*/
17、case 2:list();break; /*顯示所有數據*/ case 3:display();break; /*單條顯示*/ case 4:calc();break; /*計算實發(fā)工資*/ case 5:search();break; /*查找職工信息數據*/ case 6:delete();break; /*刪除記錄*/ case 7:insert();break; /*插入記錄*/ case 8:append();break; /*追加記錄*/ case 9:save();break; /*保存文件*/ case 10:load(); break; /*讀取文件*/ case 11:c
18、opy();break; /*復制文件*/ case 12:sort();break; /*按實發(fā)工資升序排序*/ case 13:computer();break; /*計算所需票面數*/ case 14:index();break; /*按職工號索引*/ case 15:total();break; /*按部門求合計*/ case 16:exit(0); /*退出*/ /*菜單函數,函數返回值為整型,代表所選的菜單項*/menu_select() char *f= /*定義菜單字符串數組*/ *menu*, /*菜單的標題行*/ 0. init list, /*初始化雙鏈表*/ 1. en
19、ter list, /*輸入數據,創(chuàng)建雙鏈表*/ 2. list all n, /*顯示所有記錄*/ 3. display record by step, /*顯示單條記錄*/ 4. calc the salary, /*計算實發(fā)工資*/ 5. search record on name, /*查找記錄*/ 6. delete a record, /*刪除記錄*/ 7. insert record to list, /*插入記錄*/ 8. append record to file, /*追加記錄*/ 9. save data to the file, /*保存文件*/ 10. load da
20、ta from the file,/*讀取文件*/ 11. copy the file to new file, /*復制文件*/ 12. sort on sfgz, /*排序*/ 13. computer ticket number, /*計算所需票面數*/ 14. index on number, /*索引*/ 15. total on number, /*分類合計*/ 16. quit ; /*退出*/ char s80; int i; int key=0; /*記錄所壓鍵值*/ int c=0; gotoxy(1,25); /*移動光標*/ printf(press any key e
21、nter menu.n);/*壓任意鍵進入主菜單*/ getch(); clrscr(); /*清屏*/ textcolor(yellow); /*設置文本顏色為黃色*/ textbackground(blue); /*設置背景顏色為蘭色*/ gotoxy(10,2); putch(0xda); /*輸出左上角邊框*/ for(i=1;i44;i+) putch(0xc4); /*輸出上邊框水平線*/ putch(0xbf); /*輸出右上角邊框 */ for(i=3;i22;i+)/*輸出左右兩邊的垂直線*/ gotoxy(10,i);putch(0xb3); gotoxy(54,i);pu
22、tch(0xb3); gotoxy(10,22);putch(0xc0); /*輸出左上角邊框*/ for(i=1;i44;i+) putch(0xc4); /*輸出下邊框水平線*/ putch(0xd9); /*輸出右下角邊框*/ window(11,3,53,21); /* 制作顯示菜單的窗口,大小根據菜單條數設計*/ clrscr(); /*清屏*/ for(i=0;i8; /*對所壓的鍵進行判斷*/ gotoxy(10,i+1); textbackground(blue);/*設置背景顏色為藍色*/ cprintf(%s,fi); /*輸出菜單項*/ if(key=72) i=i=1?
23、17:i-1; /*如壓向上光標鍵,i減1,如已到第一行再上移,則到最后一行*/ if(key=80)i=i=17?1:i+1; /*如壓向下光標鍵,i加1,如已到最后一行再下移,則到第一行*/ gotoxy(10,i+1); /*光標移動i的下一項*/ textbackground(lightgreen); /*將背景顏色設為淺綠*/ cprintf(%s,fi); /*輸出菜單項*/ c=i-1; /*給代表菜單選項的整數賦值*/ textbackground(black); /*設置背景顏色為黑色*/ window(1,1,80,25); /*恢復原窗口大小*/ return c; /*
24、返回代表菜單選項的整數值*/*初始化函數*/void init() first=null; last=null;/*輸入數據,創(chuàng)建雙鏈表*/void create() int x; /*記錄行坐標*/ int i; /*記錄輸入記錄數*/ int flag=0; /*做結束標記*/ float temp; /*定義臨時變量*/ salary *info,*p; /*定義臨時變量*/ if(first!=null) init();/*如果頭指針為空,調用初始化函數*/ p=first; /*從頭指針開始*/ for(;) if(flag=1) break; /*如果flag=1,結束輸入*/ i
25、=0; x=0; /*確定移動的行坐標*/ clrscr(); /*清屏*/ gotoxy(1,3); printf(*gongziguanli*);/*輸出標題*/ gotoxy(1,4); printf( -enter end-);/*提示輸入結束*/ gotoxy(1,5); printf(|-|);/*輸出表格的起始線*/ gotoxy(1,6); printf(| no | name | jbgz |);/*輸出字段標題,注意空格數*/ for(;) gotoxy(1,7+x); printf(|-|-|-|);/*輸出表格的水平線*/ info=(salary *)malloc(s
26、izeof(salary);/*申請一個記錄空間*/ if(!info) printf(nout of memory);/*如沒有得到空間,輸出內存溢出信息*/ exit(0);/*退出程序*/ info-next=null;/*新結點的后繼為空*/ info-prior=null;/*新結點的前驅為空*/ gotoxy(1,8+x);printf(|); /*輸出數據間的分割線*/ gotoxy(12,8+x);printf(|); gotoxy(29,8+x);printf(|); gotoxy(38,8+x);printf(|); gotoxy(2,8+x);/*光標到輸入編號位置*/
27、inputs(info-no,10);/*輸入編號,并驗證長度不超過10*/ if(info-no0=) flag=1; break; /*編號首字符為結束輸入*/ gotoxy(13,8+x); /*光標到輸入姓名位置*/ inputs(info-name,14); /*輸入姓名,并驗證長度不超過14*/ gotoxy(30,8+x); /*光標到輸入基本工資位置*/ scanf(%f,&temp); /*輸入基本工資到臨時變量*/ info-jbgz=temp; /*基本工資賦值*/ info-koukuan=0; /*初始扣款為0,待計算工資時輸入*/ info-sfgz=0; /*初始
28、實發(fā)工資為0,待計算工資時計算*/ info-shuijin=0; /*初始稅金為0,待計算工資時計算*/ info-yfgz=0; /*初始應發(fā)工資為0,待計算工資時計算*/ if(p=null)/*如果p為空,說明輸入的是第一個結點*/ first=last=info;/*頭指針和尾指針*/ first-prior=null; /*頭指針的前驅是空*/ last-next=null; /*尾指針的后繼是空*/ else /*插入的結點不是第一結點,則插入在頭結點之前*/ info-next=p;/*新結點的后繼指向原來的頭結點*/ info-prior=p-prior;/*新結點的前驅指向
29、原來的頭結點的前驅*/ p-prior=info;/*原來結點的前驅指向新結點*/ p=info; /*新結點變?yōu)閜結點,暫時的頭結點*/ first=info; /*新結點變?yōu)轭^結點*/ x+=2; /*因為水平線,將光標下移兩行*/ gotoxy(1,8+x); i+; /*輸入記錄數加1*/ if(i%9=0) break; /*輸入9個記錄,換一頁輸入*/ gotoxy(1,8+x); printf(|-|-|-|);/*輸出結尾水平線*/*字符串輸入和驗證函數*/inputs(char *s, int count) char p255; do scanf(%s,p);/*輸入字符串*
30、/ if(strlen(p)count)printf(n too long! n);/*進行長度校驗,超過count值重輸入*/ while(strlen(p)count); strcpy(s,p); /*將輸入的字符串拷貝到字符串s中*/*顯示鏈表*/void list() int i=0,n; /*記錄輸出行數*/ salary *p; /*定義移動指針*/ clrscr(); /*清屏*/ p=first; /*從頭指針開始*/ while(i%10=0&p!=null) /*外循環(huán)控制換頁*/ i=0; /*記錄一頁的輸出行數*/ clrscr(); /*清屏*/ printf(nnn
31、); /*換行三次*/ printf(*salary*n); /*輸出大標題*/ printf(|no | name | jbgz | koukuan | yfgz | shuijin | sfgz |n); /*輸出字段標題*/ printf(|-|-|-|-|-|-|-|n); /*輸出水平線*/ while(p!=null) /*當p不為空時*/ printf(|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|n, p-no,p-name,p-jbgz,p-koukuan,p-yfgz,p-shuijin,p-sfgz); p=p-next; /*指針后移*/ i+; /*輸出行數加1 */ if(i%10=0) break; /*如果滿10行,跳出內循環(huán)*/ p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護理課題申報書專長
- Unit 2 More than fun:Starting out 教學設計 2024-2025學年外研版(2024年)英語七年級 上冊
- 微生物檢驗技師考試準備工作與試題及答案
- 《項目二 任務一 個性樟木條的制作》教學設計 -2023--2024學年浙教版初中勞動技術八年級上冊
- 2025年中國編織配件市場調查研究報告
- 深入探討項目管理考試的潛在難點及突破方案試題及答案
- 美術課題申報書
- 七年級歷史下冊 21 清代的文學藝術教學設計 華東師大版
- 逐步掌握證券從業(yè)資格試題及答案
- 2025年浙江省五校鎮(zhèn)海中學高三考前熱身語文試卷含解析
- 2025年通信安全員ABC證考試試題題庫
- 初中數學專項練習《圓》100道計算題包含答案
- 測試工程師季度述職報告
- XX文化產業(yè)投資公司二零二五年度股東退股及文化創(chuàng)意協議
- 跟著電影去旅游知到智慧樹章節(jié)測試課后答案2024年秋山東大學(威海)
- 2024上海市招聘社區(qū)工作者考試題及參考答案
- 2021年高考物理試卷(江蘇)(解析卷)
- 第六單元《組合圖形的面積》(教學設計)-人教版五年級數學上冊
- 2025年中電科太力通信科技限公司招聘高頻重點提升(共500題)附帶答案詳解
- 《設備房管理標準》課件
- 地理-北京市朝陽區(qū)2024-2025學年高三第一學期期末質量檢測考試試題和答案
評論
0/150
提交評論