C教師工資管理系統(tǒng)_第1頁
C教師工資管理系統(tǒng)_第2頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、封面作者:PanHon glia ng僅供個人學習課程設計報告學院:天津理工大學華信軟件學院專業(yè)名稱:軟件工程課程設計科目 _C 語言課程設計_所在班級:學生學號:學生姓名:指導教師:完成時間:課程設計成績評定表對課程設計工作過程的簡短介紹和自我評價在工程設計中,我認真地翻閱了C 語言學習教材,并在各大 IT 網(wǎng)站(csdn)搜尋源代碼。然后就 是不斷的改正編輯程序中的錯誤,不斷的改正。體會 到了編程的艱辛。看著編輯的程序完美的運行,心中的喜悅是不言 而喻的。學生簽名:2012年6月11日(以下由評定教師填寫)質(zhì)量評價指標(在相應欄目給分,優(yōu)秀20-25分,良好15-20分,中等10-15分,

2、及格5-10分,不及格0-5分)評價項目評價質(zhì)量優(yōu)秀良好中等及格不及格工作量和態(tài)度(25分)實驗、計算可靠性(25 分)文字和圖表質(zhì)量(25 分)總體評價(25 分)1評定成績(百分制)目錄設計任務與目標.4方案設計與論證.6程序框圖或流程圖,程序清單與調(diào)用關系 .9全部源程序清單 .11程序運行結果測試與分析28結論與心得參考資料311教師工資管理系統(tǒng)一、設計任務與目標任務:教師工資管理系統(tǒng)每個教師的信息為:教師號、姓名、性別、單位名稱、家庭住址、聯(lián)系電話、基本工資、津貼、生活補貼、應發(fā)工資、電話費、水電費、房租、所得稅、衛(wèi)生費、公積金、合計扣款、實發(fā)工資。注:應發(fā)工資=基本工資+津貼+生活

3、補貼;合計扣款=電話費+水電費+房租+所得稅+衛(wèi)生費+公積金;實發(fā)工資 =應發(fā)工資-合計扣款。A、教師信息處理(1) 輸入教師信息(2)插入(修改)教師信息:(3)刪除教師信息:(4)瀏覽教師信息: 提示:具體功能及操作參考題 1。B、教師數(shù)據(jù)處理:(1)按教師號錄入教師基本工資、津貼、生活補貼、電話費、水電費、房 租、所得稅、衛(wèi)生費、公積金等基本數(shù)據(jù)。(2)教師實發(fā)工資、應發(fā)工資、合計扣款計算。 提示:計算規(guī)則如題目。(3)教師數(shù)據(jù)管理 提示:輸入教師號,讀出并顯示該教師信息,輸入新數(shù)據(jù),將改后信息寫入文件(4)教師數(shù)據(jù)查詢: 提示:輸入教師號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。(5

4、)教師綜合信息輸出 提示:輸出教師信息到屏幕。案例論證:1. 完成此設計的目的意義 此題目能讓我綜合的考慮設計一個信息處理系統(tǒng),要求設計出主函數(shù), 確定調(diào)用函數(shù),成員的函數(shù)設計。2. 目標教師數(shù)據(jù)處理:(1)按教師號錄入教師基本工資、津貼、生活補貼、電話費、水電費、房 租、所得稅、衛(wèi)生費、公積金等基本數(shù)據(jù)。(2)教師實發(fā)工資、應發(fā)工資、合計扣款計算。 計算規(guī)則如題目。(3)教師數(shù)據(jù)管理 輸入教師號,讀出并顯示該教師信息,輸入新數(shù)據(jù),將改后信息寫入文件(4)教師數(shù)據(jù)查詢:輸入教師號或其他信息, 即讀出所有數(shù)據(jù)信息, 并顯示出來。(5) 教師綜合信息輸出輸出教師信息到屏幕二、方案設計與論證(1)主

5、函數(shù)的設計編寫主函數(shù)的主要任務就是確定調(diào)用函數(shù)以及控制屏幕顯示。定調(diào)用的函數(shù)根據(jù)要求,該系統(tǒng)至少應該實現(xiàn)五種基本功能:輸出工作信息,刪除工資信息,修改工資信息,查找工資信息,列出所有信息。實現(xiàn)以上任何一種功能都 必須要調(diào)用一個函數(shù),根據(jù)標識符的定義規(guī)則,分別命名為原型 void show_all 。功能 展出所有錄入文件參數(shù)無返回值無工作方式調(diào)用 char name10。float salary 。float allowanee 。float life 。 float tel 。float utilities 。 float rent 。float due 。 float health 。 f

6、loat fund 。 float total 。 float should。float actual 。原型 voidtea_new功能創(chuàng)建新的信息錄入?yún)?shù)無返回值無工作方式創(chuàng)建 file原型 void searehmenu。功能查找菜單參數(shù)無返回值無工作方式 調(diào)用 void seareh_id 。void seareh_name。原型 void searchd 。功能 查找信息 按編號查找參數(shù) 無 返回值 整個信息 工作方式 調(diào)用 number 原型 void search_name 。功能 查找信息 按姓名查找參數(shù) 無返回值 整個信息工作方式 調(diào)用 char name原型 void de

7、lete_id功能 刪除數(shù)據(jù) 按編號刪除參數(shù) 無返回值 無工作方式 調(diào)用 id原型 void change_id 。功能 改變數(shù)據(jù) 按編號改參數(shù) 無返回值 整個錄入信息工作方式 調(diào)用 id(2) 函數(shù)的設計 編寫函數(shù)的目的就是編寫一個能實現(xiàn)某種功能的函數(shù)供主函數(shù)調(diào)用函 數(shù)設計的主要任務是確定調(diào)用的成員函數(shù)以及屏幕顯示。 確定調(diào)用的成員函數(shù)。 不同的函數(shù)調(diào)用的成員函數(shù)是不盡相同的,基本上每個函數(shù)都有一個 對應的成員函。char name10 。float salary。float allowance。float lifefloat telfloat utilities。float rent 。f

8、loat due 。float health 。3float fund。float total 。float should。float actual。(3)算法實現(xiàn)鏈表是算法的關鍵。在添加新的數(shù)據(jù)時,可以表頭插入也可以表尾插 入,這兩種插入方法決定了其他成員函數(shù)數(shù)據(jù)的處理。本系統(tǒng)中采取的是 表尾插入的方法。在刪除某信息時需要判斷數(shù)據(jù)是在表頭,表中還是表 尾,如果刪除的是在表中,則需要將刪除的前后鏈表連接起來。統(tǒng)大量運 用了鏈表的 5 種基本操作:建立鏈表、鏈表的插入、刪除、輸入和查找。三、程序框圖或流程圖,程序清單與調(diào)用關系V#include#include #include #include

9、 /* 教師工資管理系統(tǒng)結構體定義 */ structteacherint number。char name10。float salary。float allowance。float life 。float tel 。float utilities 。float rent。float due。float health。float fund 。float total。float should。float actual。tea500 。int num=0。 FILE *fp 。void mainmenu()。void readfromfile() 。void writetofile() 。void

10、 show_all()。void tea_new ()。void searchmenu()。 voidsearch_id()。 voidsearch_name()。void delete_id()。void change_id()。void main()readfromfile() 。 while(1)mainmenu()。/ 主菜單void mainmenu()char choic。system(cls)。教師工資管理系統(tǒng)*nn)printf(t*n) printf(t 請選擇 : n) 。choic=getch()。switch(choic)printf(tWELCOMEn) 。print

11、f(t1 輸入教師信息n) 。printf(t2 修改教師信息n) 。printf(t刪除教師信息n) 。printf(t4 查詢教師信息n) 。printf(t保存并退出n) 。printf(t* *case1:tea_new (。) break。case2:change_id (。) break。case3:delete_id (。) break。case4:searchmenu(。) break。case5:writetofile()。 break。default:mainmenu()。/ 從文件導入void readfromfile()if(fp=fopen(teacher.bin,r

12、b)=NULL)printf(nt 教師工資信息文件不存在 )。if(fp=fopen(teacher.bin,wb)=NULL)printf(nt 建立失敗 ) 。exit(0) 。elseprintf(nt 教師工資信息文件已建立 ) printf(nt 按回車鍵進入主菜單 ) 。 getch()。return。exit(0) 。fseek(fp,0,2)。if(ftell(fp)0)rewind(fp) 。for(num=0 。 !feof(fp) & fread(&teanum,sizeof(struct teacher),1,fp) 。num+)。printf(nt

13、教師工資信息文件導入成功 ) 。printf(nt 文件中無任何記錄 )。printf(nt 按回車鍵進入主菜單 ) 。 getch()。return。/ 寫入文件 void writetofile()int i 。if(fp=fopen(teacher.bin,wb)=NULL)printf(nt 打開文件失敗 ) 。for(i=0。ivnum。i+)if(fwrite(&teai,sizeof(struct teacher),1,fp)!=1)printf(nt 文件寫入錯誤 !n)。fclose(fp)。printf(nt 教師工資信息文件已保存 )。printf(nt 按任意鍵

14、退出程序 nt)。exit(0)。/添加記錄 void tea_new()printf( 請輸入教師號: )。 scanf(%d,&teanum.number)。 printf( 請輸入教師姓名 :)。scanf(%s,)。printf( 請輸入教師基本工資:)。scanf(%f,&teanum.salary) 。 printf( 請輸入教師的津貼: )。scanf(%f,&teanum.allowance) 。 printf( 請輸入教師的生活補貼: )scanf(%f,&teanum.life) 。printf( 請輸入教師的電話費:

15、)。 scanf(%f,&teanum.tel) 。printf( 請輸入教師的水電費: )。 scanf(%f,&teanum.utilities) 。 printf( 請輸入教師的房租: )。 scanf(%f,&teanum.rent) 。printf( 請輸入教師的所得稅: )。 scanf(%f,&teanum.due) 。printf( 請輸入教師的衛(wèi)生費: )。 scanf(%f,&teanum.health) 。printf( 請輸入教師的公積金: )。 scanf(%f,&teanum.fund) 。teanum.should

16、=teanum.salary +teanum.allowance +teanum.life。teanum.total=teanum.tel+teanum.utilities+teanum.rent+teanum.due+teanum.health+teanum.fund。teanum.actual=teanum.should-teanum.total。num+。printf(是否繼續(xù)添加?(Y/N)。if(getch()=y)tea_new (。)return。/ 查詢菜單void searchmenu()char choic。system(cls)。printf(nt- - 查詢 -) 。p

17、rintf(nt-1 顯示所有 -) 。printf(nt-2 按編號查詢 - -) 。printf(nt- -3 按姓名查詢 -) 。printf(nt- -4 返回主菜單 - -) 。printf(nt 請選擇 :n)。choic=getch()。switch(choic) case1:show_all(。) break。 case2:search_id(。) break。case3:search_name() break。 case4:mainmenu(。) break。/ 顯示所有void show_all()o(S21=nse9-Jg.& -宦乍urmuE。(一二二e9-J9

18、.& -B甘乍urmuE。(9=.2e J9.& -s亠化史曲乍urmuE(。ueMO_e.曰eJg.& -sft乍urmuEAJQes.曰J9.&-煙HMW乍urmuE。(Eeu.曰e2-=sf媒載乍urmuE。忘qEnuse9-=p&乍urmuE(+土。一 unuv。0 上)04(ognu)七O(=SO=E2SAS。二 u一o(=*吳ur)七dCQSned=)lu2SAS廣左=)七 u一dEnuvL土)七。曰-煙H抿俅乍ur)七d。(_eo二二-糕口*44n乍ur)七d。(p_nous.曰-煙H抿歸乍ur)七d。(pun二二J9.&-箱更Q乍

19、ur)七d O(_ese9-Jg.& -B曲H乍ur)七d。(npse9-Jg.& -法盲乍ur)七d。 (1U二二宕咚乍ur)七dprintf(nt 文件中無記錄 ) 。printf(nt 按回車鍵回到主菜單 ) 。getch()。return。/ 按編號查詢void search_id()int mark=0 。int i,a=0。int id 。printf(nt 請輸入編號 :) 。scanf(%d,&id) 。for(i=0。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要查找的教師工資信息 *n)。printf(nt 編

20、號: %d,teai.number)。printf(nt 姓名: %s,)。printf(nt 基本工資 : %.5f,teai.salary)。printf(nt 津貼: %.5f,teai.allowance)。printf(nt 生活補貼 : %.5f,teai.life) 。printf(nt 電話費: %.5f,teai.tel) 。printf(nt 水電費: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得稅: %.5f,teai.due)。printf(nt 衛(wèi)生費: %.5f,

21、teai.health) 。printf(nt 公積金: %.5f,teai.fund)。printf(nt 應發(fā)工資 : %.5f,teai.should) 。printf(nt 合計扣款 : %.5f,teai.total) 。printf(nt 實發(fā)工資 : %.5f,teai.actual) 。*、printf(nt 按回車鍵回到主菜單 )mark+。getch()。return。if(mark=0)printf(nt 沒有該編號的信息 ) 。printf(nt 按回車鍵返回主菜單 ) getch()。return。/ 按姓名查詢void search_name()int mark=0

22、 。int i,a=0。char name10。printf( 請輸入姓名 :) 。 scanf(%s,name)。for(i=a。ivnum。i+)if(strcmp(,name)=0)printf(nt*printf(nt* 以下是你要查找的教師工資信息 *n) 。printf(nt 編號 : %d,teai.number)。printf(nt 姓名 : %s,)。printf(nt 基本工資 : %.5f,teai.salary) 。printf(nt 津貼: %.5f,teai.allowance) 。printf(nt 生活補貼 : %.5f,te

23、ai.life) 。printf(nt 電話費 : %.5f,teai.tel) 。printf(nt 水電費 : %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得稅 : %.5f,teai.due) 。printf(nt 衛(wèi)生費 : %.5f,teai.health) 。printf(nt 公積金 : %.5f,teai.fund) 。printf(nt 應發(fā)工資 : %.5f,teai.should) 。printf(nt 合計扣款 : %.5f,teai.total) 。printf(nt 實發(fā)工資 : %

24、.5f,teai.actual) 。*、mark+。if(i+1)num)printf(tn 是否繼續(xù)查找相同名字的教師信息 :(y/n)if(getch()=y)a=。continue。elsereturn。printf(nt*elseprintf(nt 按回車鍵返回主菜單 ) 。getch(。)return。if(mark!=0)printf(nt 沒有相同姓名的教師信息記錄 )printf(nt 按回車鍵回到主菜單 ) 。getch(。)return。elseprintf(nt 沒有相同姓名的教師信息記錄 )printf(nt 按回車鍵回到主菜單 ) 。getch(。)return。/

25、刪除菜單void delete_id()int i,j 。int deletemark=0。int id 。printf(nt 情輸入要刪除的編號 :) 。 scanf(%d,&id) 。if(num=0)printf(nt 對不起,文件中無任何教師工資信息記錄 )printf(nt 按回車鍵回到主菜單 ) 。getch(。)return。for(i=0。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要刪除的教師工資信息printf(nt 編號: %d,teai.number)。printf(nt 姓名: %s,)。printf(

26、nt 基本工資 : %.5f,teai.salary)。printf(nt 津貼: %.5f,teai.allowance)。printf(nt 生活補貼 : %.5f,teai.life) 。printf(nt 電話費: %.5f,teai.tel) 。printf(nt 水電費: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得稅: %.5f,teai.due)。printf(nt 衛(wèi)生費: %.5f,teai.health) 。printf(nt 公積金: %.5f,teai.fund)。printf(nt

27、 應發(fā)工資 : %.5f,teai.should)。printf(nt 合計扣款 : %.5f,teai.total) 。printf(nt 實發(fā)工資 : %.5f,teai.actual)。 printf(nt 是否刪除?(y/n)。if(getch()=y)*n)。for(j=i。jnum-1j+)teaj=teaj+1 。num-。deletemark+。printf(nt 刪除成功 ) 。 printf(nt 是否繼續(xù)刪除 ?(y/n) 。 if(getch()=y) delete_id(。) return。elsereturn。continue。if(deletemark=0)pri

28、ntf(nt 沒有該教師的記錄 ) 。 printf(nt 是否繼續(xù)刪除 ?(y/n) 。 if(getch()=y) delete_id()。/ 修改菜單void change_id()int a=0,findmark=0 。int i 。int id 。printf(nt 請輸入要修改教師的編號 :)scanf(%d,&id) 。for(i=a。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要刪除的教師工資信息findmark+。printf(nt 編號: %d,teai.number)。printf(nt 姓名: %s,)。

29、printf(nt 基本工資 : %.5f,teai.salary)。printf(nt津貼: %.5f,teai.allowance)。printf(nt 生活補貼 : %.5f,teai.life) 。printf(nt 電話費: %.5f,teai.tel)。printf(nt 水電費: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得稅: %.5f,teai.due)。printf(nt 衛(wèi)生費: %.5f,teai.health)。printf(nt 公積金: %.5f,teai.fund) 。prin

30、tf(nt 應發(fā)工資 : %.5f,teai.should)。printf(nt 合計扣款 : %.5f,teai.total) 。printf(nt 實發(fā)工資 : %.5f,teai.actual)。i=i。break。else continue。*n) 。printf(nt 請重新輸入以下信息 :n)。printf( 請輸入教師號: )。scanf(%d,&teanum.number)。printf( 請輸入教師姓名 :)。scanf(%s,)。printf( 請輸入教師基本工資:)。scanf(%f,&teanum.salary) 。printf(請

31、輸入教師的津貼: )。 scanf(%f,&teanum.allowance) 。 printf( 請輸入教師的生活補貼: )。 scanf(%f,&teanum.life) 。 printf( 請輸入教師的電話費: )。 scanf(%f,&teanum.tel) 。 printf( 請輸入教師的水電費: )。 scanf(%f,&teanum.utilities) 。 printf( 請輸入教師的房租:)。scanf(%f,&teanum.rent) 。printf( 請輸入教師的所得稅:)。scanf(%f,&teanum.due) 。 p

32、rintf( 請輸入教師的衛(wèi)生費: )。scanf(%f,&teanum.health) 。 printf( 請輸入教師的公積金: )。scanf(%f,&teanum.fund) 。 teanum.should =teanum.salary+teanum.allowance +teanum.life。teanum.total=teanum.tel+teanum.utilities+teanum.rent+teanum.due+teanum.health+teanum.fund。teanum.actual=teanum.should-teanum.total。 printf(n

33、t 以下是你修改后的教師工資信息 :n) 。findmark+。printf(nt_。)printf(nt 編號 : %d,teai.number) 。printf(nt 姓名 : %s,)。printf(nt 基本工資 : %.5f,teai.salary) 。printf(nt 津貼: %.5f,teai.allowance) 。printf(nt 生活補貼 : %.5f,teai.life) 。printf(nt 電話費 : %.5f,teai.tel) 。printf(nt 水電費 : %.5f,teai.utilities) 。printf(nt 房租: %.5f,

34、teai.rent) 。printf(nt 所得稅 : %.5f,teai.due) 。printf(nt 衛(wèi)生費 : %.5f,teai.health) 。printf(nt 公積金 : %.5f,teai.fund) 。printf(nt 應發(fā)工資 : %.5f,teai.should) 。printf(nt 合計扣款 : %.5f,teai.total) 。printf(nt 實發(fā)工資 : %.5f,teai.actual) 。printf(nt_ 。)printf(nt 按回車鍵回到主菜單 ) 。 getch()。return。五、程序運行結果測試與分析進入頁面輸入輸出修改查詢六、結論

35、與心得設計量很大,也很繁雜,整個程序的設計是分模塊實現(xiàn)具體的功能,每個模塊分別由不同的函數(shù)。鏈表的建立實現(xiàn)輸入信息功能,鏈表是算法的關鍵。在 添加新的數(shù)據(jù)時,可以表頭插入也可以表尾插入,這兩種插入方法決定了其他 成員函數(shù)數(shù)據(jù)的處理。因為第一做如此大的編程, 對其的不適應是不言而喻的。 能找到的資料有 限,哪怕是將其融合都要耗費巨大的時間和精力。原來編程真的是需要熬夜 的。因為在那時的思路不一定到了下一天還那么清晰。雖然是一次小小的編程工程,卻讓我感受頗深。編程工作不光挑戰(zhàn)的是知識 的儲備,更多的是挑戰(zhàn)耐力。譚浩強等編著北京:清華大學出版社機械工業(yè)出版社 158-169 頁八.特別鳴謝CSDN IT 社區(qū)版權申明本文部分內(nèi)容,包括文字、圖片、以及設計等在網(wǎng)上搜集整 理。版權為潘宏亮個人所有This article in el

溫馨提示

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

評論

0/150

提交評論