版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、遼 寧 工 業(yè) 大 學 c語言程序設(shè)計 課程設(shè)計(論文)題目: 工資管理 院(系): 專業(yè)班級: 學 號: 學生姓名: 指導教師: 教師職稱: 起止時間: 課程設(shè)計(報告)任務(wù)及評語院(系): 教研室:軟件教研窒學 號學生姓名專業(yè)班級程序設(shè)計(報告)題目工資管理程序設(shè)計(報告)任務(wù)程序設(shè)計的任務(wù)與要求:(1)掌握c語言編程的基礎(chǔ)知識。(2)較熟練地編寫c語言應(yīng)用程序。(3)了解c語言的常用標準函數(shù)、編程技巧、異常處理。(5)聯(lián)系已學過的內(nèi)容,鞏固所學的理論,增強獨立工作能力。(6)通過設(shè)計主要使學生有一個獨立編寫程序的過程,對理論學習及動手能力都有一個很大的提高。(7)通過本次設(shè)計,進一步培養(yǎng)
2、學生熱愛專業(yè)的思想,同時對本專業(yè)綜合素質(zhì)的提高起一個積極的推動作用。課程設(shè)計過程中,要嚴格遵守實踐環(huán)節(jié)的時間安排,聽從指導教師的指導。正確地完成上述內(nèi)容,記錄實習日記,規(guī)范完整地撰寫出課程設(shè)計報告。指導教師評語及成績成績: 指導教師簽字: 2009 年 1 月 11 日目 錄第1章 課程設(shè)計的目的與要求31.1 課程設(shè)計目的31.2 課程設(shè)計的實驗環(huán)境31.3 課程設(shè)計的預備知識31.4 課程設(shè)計要求3第2章 課程設(shè)計內(nèi)容42.1課程設(shè)計題目42.2課程設(shè)計整體設(shè)計說明42.2.1課程設(shè)計內(nèi)容42.2.2系統(tǒng)功能模塊結(jié)構(gòu)圖42.2.3數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明42.2.4程序結(jié)構(gòu)(畫流程圖)52.
3、2.5各模塊的功能72.3程序源代碼及注釋7第3章 課程設(shè)計總結(jié)7參考資料19第1章 課程設(shè)計的目的與要求1.1 課程設(shè)計目的本課程設(shè)計是計算機科學與技術(shù)專業(yè)重要的實踐性環(huán)節(jié)之一,是在學生學習完程序設(shè)計語言(c)課程后進行的一次全面的綜合練習。本課程設(shè)計的目的和任務(wù): 1. 鞏固和加深學生對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)境。1
4、.3 課程設(shè)計的預備知識熟悉c語言及c語言開發(fā)工具。1.4 課程設(shè)計要求1. 分析課程設(shè)計題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用5. 設(shè)計完成后提交課程設(shè)計報告第2章 課程設(shè)計內(nèi)容2.1程序功能介紹(1)能完成對工資的錄入、修改(2)能統(tǒng)計工資,計算工資,并能根據(jù)工資數(shù)額進行排序(3)能查詢工資,分類合計2.2程序整體設(shè)計說明本系統(tǒng)是采用c程序設(shè)計思想進行編制的,整個系統(tǒng)由一個結(jié)構(gòu)體、函數(shù)模塊以及一個主函數(shù)組成,從而建立一個“員工工資管理系統(tǒng)”,以方便對工資數(shù)據(jù)進行管理操作。開發(fā)目的如:能對工資數(shù)據(jù)進行錄入和修改;能統(tǒng)計工
5、資,計算工資,并能根據(jù)工資數(shù)額進行排序;能根據(jù)員工的姓名來查詢該員工的工資、獎金及工資總額; 2.2.1設(shè)計思路利用單鏈表結(jié)構(gòu)實現(xiàn)學生成績管理,了解數(shù)據(jù)庫管理的基本功能,掌握c語言中的結(jié)構(gòu)體、指針、函數(shù)、文件操作等知識,是一個c語言知識的綜合應(yīng)用。注意其中的難點,指針變量做函數(shù)參數(shù)、函數(shù)值為指向結(jié)構(gòu)體的指針及單鏈表結(jié)構(gòu)的應(yīng)用等知識。就是將本學期課本上的理論知識和實際有機的結(jié)合起來,鍛煉學生實際分析問題和解決問題的能力,提高學生適應(yīng)實際、實踐編程的能力,使對c語言系統(tǒng)編程有一個大致的了解。2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明 根據(jù)這些需求,設(shè)計一個cnode類 、cdata類和clist類,在該類中
6、,除了定義構(gòu)造函數(shù)以外,還應(yīng)該一定義對員工工資應(yīng)有的操作。在該類中包括的數(shù)據(jù)成員有添加、顯示和查詢等,構(gòu)造函數(shù)用于設(shè)置數(shù)據(jù)成員添加、顯示和查詢等的初值。見如圖所示。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程序結(jié)構(gòu)(流程圖)利用單鏈表結(jié)構(gòu)實現(xiàn)員工工資管理,包括添加、保存、顯示、查詢、刪除、退出。見如圖所示:員工工資管理系
8、統(tǒng)由相關(guān)工作人員錄入干個員工的工資數(shù)據(jù)員工工資管理程序輸入已錄入好的員工工資、獎金及工資總額數(shù)據(jù)輸入新的員工工資數(shù)據(jù)統(tǒng)計工資,計算工資,并能根據(jù)工資數(shù)額進行排序查找有無數(shù)據(jù)文件,找到后保存文件數(shù)據(jù)對工資的錄入、修改查詢工資,分類合計退出系統(tǒng)圖2程序的流程圖將員工工資管理程序的算法用n-s結(jié)構(gòu)化流程圖來表示,見如圖所示。結(jié)束輸出:自動排序、姓名、工獎、獎金及總額輸入姓名、工資、號碼開始是/否再輸入是/否查詢輸出:自動排序、姓名、工資 、獎金和總額n+1=n是/否刪除輸出:自動排序、姓名、工資 、獎金和總額 y n y n n y 圖3 用n-s結(jié)構(gòu)化流程圖2.2.4各模塊的功能及程序說明函數(shù)模塊
9、功能主函數(shù)main()定義員工結(jié)構(gòu)體數(shù)組,調(diào)用添加、顯示等函數(shù)對工資表進行處理存儲函數(shù)loadfile()查找有無數(shù)據(jù)文件,找到后讀取文件數(shù)據(jù)添加函數(shù)addrecord()輸入姓名、工資、資金及工資總額 顯示函數(shù)displayrecord()顯示姓名、員工工資、獎金及工資總額查詢函數(shù)lookuprecord ()查詢指定員工工資記錄刪除函數(shù)deleterecrd()刪除指定員工姓名記錄輸出函數(shù)operate()輸出員工工資記錄系統(tǒng)的功能模塊圖2.2.5程序結(jié)果 *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函數(shù)*/# include bios.h /*rom基本輸入輸出函數(shù)*/#include dos.h /*dos接口函數(shù)*/#include conio.h /*屏幕操作函數(shù)*/#include stdlib.h /*其它說明*/#include string.h /*字符串函數(shù)*/#include mem.h /*內(nèi)存操作函數(shù)*/#include ctype.h /*字符操作函數(shù)*/#include alloc.h /*動態(tài)地址分配
14、函數(shù)*/*變量定義*/typedef struct z1 /*定義數(shù)據(jù)結(jié)構(gòu)*/ char no11; /*編號*/ char name15; /*姓名*/ float jbgz; /*基本工資*/ float koukuan; /*扣款*/ float yfgz; /*應(yīng)發(fā)工資*/ float shuijin; /*稅金*/ float sfgz; /*實發(fā)工資*/ struct z1 *prior;/*前驅(qū)指針*/ struct z1 *next;/*后繼指針*/salary; /*結(jié)構(gòu)體類型名*/struct z1 *first; /*雙鏈表頭指針*/struct z1 *last; /*
15、雙鏈表尾指針*/*函數(shù)原型*/void init(); /*初始化*/void create(); /*創(chuàng)建鏈表*/void calc(); /*計算應(yīng)發(fā)工資*/void delete(); /*刪除*/void search(); /*查找*/void save(); /*保存文件*/void load(); /*讀取文件*/void computer(); /*計算所需各種票面張數(shù)*/void insert(); /*插入*/void append(); /*追加*/void copy(); /*復制文件*/void sort(); /*排序*/void index(); /*索引*/vo
16、id total(); /*分類合計*/void list(); /*顯示所有數(shù)據(jù)*/void print(salary *p); /*輸出單條記錄*/void display(); /*隨意逐條顯示*/float fax(float x); /*計算稅金*/int menu_select(); /*主菜單*/*主函數(shù)開始*/main() int i; clrscr(); for(;) switch(menu_select() /*調(diào)用菜單函數(shù)返回一個整數(shù)值*/ case 0:init();break; /*初始化*/ case 1:create();break; /*輸入數(shù)據(jù)創(chuàng)建雙鏈表*/
17、case 2:list();break; /*顯示所有數(shù)據(jù)*/ case 3:display();break; /*單條顯示*/ case 4:calc();break; /*計算實發(fā)工資*/ case 5:search();break; /*查找職工信息數(shù)據(jù)*/ 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; /*計算所需票面數(shù)*/ case 14:index();break; /*按職工號索引*/ case 15:total();break; /*按部門求合計*/ case 16:exit(0); /*退出*/ /*菜單函數(shù),函數(shù)返回值為整型,代表所選的菜單項*/menu_select() char *f= /*定義菜單字符串數(shù)組*/ *menu*, /*菜單的標題行*/ 0. init list, /*初始化雙鏈表*/ 1. en
19、ter list, /*輸入數(shù)據(jù),創(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, /*計算所需票面數(shù)*/ 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); /*設(shè)置文本顏色為黃色*/ textbackground(blue); /*設(shè)置背景顏色為蘭色*/ 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); /* 制作顯示菜單的窗口,大小根據(jù)菜單條數(shù)設(shè)計*/ clrscr(); /*清屏*/ for(i=0;i8; /*對所壓的鍵進行判斷*/ gotoxy(10,i+1); textbackground(blue);/*設(shè)置背景顏色為藍色*/ 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); /*將背景顏色設(shè)為淺綠*/ cprintf(%s,fi); /*輸出菜單項*/ c=i-1; /*給代表菜單選項的整數(shù)賦值*/ textbackground(black); /*設(shè)置背景顏色為黑色*/ window(1,1,80,25); /*恢復原窗口大小*/ return c; /*
24、返回代表菜單選項的整數(shù)值*/*初始化函數(shù)*/void init() first=null; last=null;/*輸入數(shù)據(jù),創(chuàng)建雙鏈表*/void create() int x; /*記錄行坐標*/ int i; /*記錄輸入記錄數(shù)*/ int flag=0; /*做結(jié)束標記*/ float temp; /*定義臨時變量*/ salary *info,*p; /*定義臨時變量*/ if(first!=null) init();/*如果頭指針為空,調(diào)用初始化函數(shù)*/ p=first; /*從頭指針開始*/ for(;) if(flag=1) break; /*如果flag=1,結(jié)束輸入*/ i
25、=0; x=0; /*確定移動的行坐標*/ clrscr(); /*清屏*/ gotoxy(1,3); printf(*gongziguanli*);/*輸出標題*/ gotoxy(1,4); printf( -enter end-);/*提示輸入結(jié)束*/ gotoxy(1,5); printf(|-|);/*輸出表格的起始線*/ gotoxy(1,6); printf(| no | name | jbgz |);/*輸出字段標題,注意空格數(shù)*/ for(;) gotoxy(1,7+x); printf(|-|-|-|);/*輸出表格的水平線*/ info=(salary *)malloc(s
26、izeof(salary);/*申請一個記錄空間*/ if(!info) printf(nout of memory);/*如沒有得到空間,輸出內(nèi)存溢出信息*/ exit(0);/*退出程序*/ info-next=null;/*新結(jié)點的后繼為空*/ info-prior=null;/*新結(jié)點的前驅(qū)為空*/ gotoxy(1,8+x);printf(|); /*輸出數(shù)據(jù)間的分割線*/ 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; /*編號首字符為結(jié)束輸入*/ 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; /*初始應(yīng)發(fā)工資為0,待計算工資時計算*/ if(p=null)/*如果p為空,說明輸入的是第一個結(jié)點*/ first=last=info;/*頭指針和尾指針*/ first-prior=null; /*頭指針的前驅(qū)是空*/ last-next=null; /*尾指針的后繼是空*/ else /*插入的結(jié)點不是第一結(jié)點,則插入在頭結(jié)點之前*/ info-next=p;/*新結(jié)點的后繼指向原來的頭結(jié)點*/ info-prior=p-prior;/*新結(jié)點的前驅(qū)指向
29、原來的頭結(jié)點的前驅(qū)*/ p-prior=info;/*原來結(jié)點的前驅(qū)指向新結(jié)點*/ p=info; /*新結(jié)點變?yōu)閜結(jié)點,暫時的頭結(jié)點*/ first=info; /*新結(jié)點變?yōu)轭^結(jié)點*/ x+=2; /*因為水平線,將光標下移兩行*/ gotoxy(1,8+x); i+; /*輸入記錄數(shù)加1*/ if(i%9=0) break; /*輸入9個記錄,換一頁輸入*/ gotoxy(1,8+x); printf(|-|-|-|);/*輸出結(jié)尾水平線*/*字符串輸入和驗證函數(shù)*/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; /*記錄輸出行數(shù)*/ salary *p; /*定義移動指針*/ clrscr(); /*清屏*/ p=first; /*從頭指針開始*/ while(i%10=0&p!=null) /*外循環(huán)控制換頁*/ i=0; /*記錄一頁的輸出行數(shù)*/ 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+; /*輸出行數(shù)加1 */ if(i%10=0) break; /*如果滿10行,跳出內(nèi)循環(huán)*/ p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 龍巖學院《大數(shù)據(jù)分析實訓》2023-2024學年第一學期期末試卷
- 淮北師范大學《設(shè)計軟件基礎(chǔ)》2023-2024學年第一學期期末試卷
- 賀州學院《燃氣儲存與輸配》2023-2024學年第一學期期末試卷
- 重慶財經(jīng)學院《時事政治述評》2023-2024學年第一學期期末試卷
- 浙江宇翔職業(yè)技術(shù)學院《編程語言與技術(shù)》2023-2024學年第一學期期末試卷
- 浙江工業(yè)大學之江學院《思想政治教育學原理》2023-2024學年第一學期期末試卷
- 抽凝改背壓機組項目可行性研究報告模板-備案拿地
- 電路有哪三種工作狀態(tài)
- 中北大學《學術(shù)交流技能》2023-2024學年第一學期期末試卷
- 長治學院《工程圖學及應(yīng)用》2023-2024學年第一學期期末試卷
- 中儲糧黑龍江分公司社招2025年學習資料
- 2025年度愛讀書學長策劃的讀書講座系列合同2篇
- 廣東省深圳市寶安區(qū)2024-2025學年八年級英語上學期1月期末英語試卷(含答案)
- 《設(shè)備房管理標準》課件
- 《交通運輸行業(yè)安全生產(chǎn)監(jiān)督檢查工作指南 第2部分:道路運輸》
- 初二生物期末質(zhì)量分析及整改措施
- 蘇州工業(yè)園區(qū)ESG發(fā)展白皮書
- 《邊緣計算單元與交通信號控制機的數(shù)據(jù)通信標準編制說明》
- 《安防攝像機智能化指標要求和評估方法》
- 湖南省長沙市2024-2025學年高一數(shù)學上學期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
評論
0/150
提交評論