C語言課程設計——職工工作量統(tǒng)計系統(tǒng)_第1頁
C語言課程設計——職工工作量統(tǒng)計系統(tǒng)_第2頁
C語言課程設計——職工工作量統(tǒng)計系統(tǒng)_第3頁
C語言課程設計——職工工作量統(tǒng)計系統(tǒng)_第4頁
C語言課程設計——職工工作量統(tǒng)計系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.湖 北 師 范 學 院 計 科 院C語言課程設計報告題目: 職工工作量統(tǒng)計系統(tǒng) 完成人: 趙天宇、梁可 學號: 2 2 批閱人: 夏 端 峰 2014年6月15日目錄一、課程設計的目的與意義2二、總體設計思路2三、詳細設計31、模塊功能介紹3(1)、菜單設計3(2)、輸入職工基本信息4(3)、工作量輸入并累加4(4)、職工按照量化得分排序5(5)、查詢、修改或刪除某工號人員信息6(6)、信息瀏覽功能7(7)、信息查詢功能詳細8(8)、信息修改功能詳細9(9)、信息刪除功能9四、各功能實現(xiàn)后的展示101、菜單界面:112、職工信息輸入界面113、職工信息瀏覽界面124、按量化得分排序后界面12

2、5、查詢職工信息功能界面126、修改職工信息界面137、刪除職工信息功能界面138、工作量累加界面14五、附錄一141、程序清單14六、附錄二:小組分工40一、 課程設計的目的與意義作為一門課程,通過課程設計的實踐環(huán)節(jié)的教學,可以加深對課堂所學基礎知識的掌握與理解,提高所學內容的綜合運用能力;同時也可以通過查詢相關資料,培養(yǎng)學生自學能力、接受新知識的能力,提高學習興趣;增強學生程序設計能力,掌握編程技巧,并可培養(yǎng)學生實際上機調試程序的能力?!袄碚撆c實踐”相結合,使學生得到很好的鍛煉,為以后學習、工作打下堅實的基礎。作為學生,我們可以通過查閱相關資料,編寫相關程序來增加自己的編程經驗,強化自己的

3、自主學習能力,強化自身的編程實踐能力,掌握一定的軟件開發(fā)流程。二、 總體設計思路設計框圖如下:職工工作量統(tǒng)計系統(tǒng)菜單設計錄入職工信息工作量輸入查詢職工信息職工信息按量化得分排序職工信息的刪除瀏覽職工信息結束程序三、 詳細設計1、 模塊功能介紹(1)、菜單設計菜單界面大致設計為:職工工作量統(tǒng)計系統(tǒng)1、 職工基本信息錄入;2、 工作量累加;3、 按照量化得分排序;4、 刪除某職工信息;5、 瀏覽所有員工信息表;6、 查詢莫員工信息;7、 修改某員工信息;8、 結束程序,將數據寫入文件。(2)、輸入職工基本信息設計框圖如下:是否(3)、工作量輸入并累加設計框圖如下:(4)、職工按照量化得分排序設計框

4、圖如下:(5)、查詢、修改或刪除某工號人員信息具體的設計框圖如下:(6)、信息瀏覽功能設計框圖如下:(7)、信息查詢功能詳細設計框圖如下:(8)、信息修改功能詳細設計框圖如下:(9)、信息刪除功能設計框圖如下:四、 各功能實現(xiàn)后的展示1、 菜單界面:2、 職工信息輸入界面3、 職工信息瀏覽界面4、 按量化得分排序后界面5、 查詢職工信息功能界面6、 修改職工信息界面7、 刪除職工信息功能界面可見相比較于剛才,刪去了4號職工張亮。8、 工作量累加界面可以看到2號職工趙天宇的工作量直接累加上了五、 附錄一1、 程序清單2、 #include3、 #include4、 #include5、 #def

5、ine d:worker.bin6、 #define N 1007、 struct worker8、 9、 int empnum; /*工號*/10、 char name20; /*姓名*/11、 char sex5; /*性別*/12、 char birthday30; /*生日*/13、 char Dep20; /*系別*/14、 int age; /*年齡*/15、 double Teachworkload; /*教育工作量*/16、 double Scientficworkload; /*科研工作量*/17、 double Qscore; /*量化得分*/18、 int grade;

6、/*該員工的排名名次*/19、 char Position30; /*職稱*/20、 ;21、 /* 22、 定義23、 */24、 void xinxi()25、 26、 printf(n+n);27、 printf(+ 職工工作量統(tǒng)計系統(tǒng) +n);28、 printf(+ +n);29、 printf(+ 1. 職工基本信息輸入 +n);30、 printf(+ +n);31、 printf(+ 2. 工作量累加 +n);32、 printf(+ +n);33、 printf(+ 3. 按照量化得分排序 +n);34、 printf(+ +n);35、 printf(+ 4. 刪除某職工信

7、息 +n);36、 printf(+ +n);37、 printf(+ 5.瀏覽所有員工信息表 +n);38、 printf(+ +n);39、 printf(+ 6.查詢某員工信息 +n);40、 printf(+ +n);41、 printf(+ 7.修改某員工信息 +n);42、 printf(+ +n);43、 printf(+ 8. 結束程序,將數據寫入文件 +n);44、 printf(+n);45、 46、 /* 47、 顯示菜單48、 */49、 void Qscore1(struct worker w,int length)50、 51、 int i=0,sum1=0,sum

8、2=0;52、 for(i=0;ilength;i+)53、 54、 sum1+=wi.Teachworkload;55、 sum2+=wi.Scientficworkload;56、 57、 /return wj.Qscore=(wj.Scientficworkload/sum2)*(1/2)+(wj.Teachworkload/sum1)*(1/2);58、 for(i=0;i=N) /*如果溢出,則跳出文件*/80、 break;81、 if(fread(w+i,sizeof(worker),1,fp)=1)82、 i+;83、 84、85、 fclose(fp); /*關閉文件*/86

9、、 87、 return i;88、 89、 /* 90、 信息顯示到屏幕91、 */92、 int f(struct worker w,int length)93、 94、 int i=length,j=0,flag=1; /*i用來表示已經錄入過信息的人數*/95、 while(iN)96、 97、 printf(第%d個職工n,i+1); /*顯示下一個需要輸入信息的員工是第幾個員工*/ 98、 printf(n);99、 printf(請你輸入工號(以職工號為0結束輸入):n); /*輸入職工號信息*/100、 scanf(%d,&wi.empnum);101、 if(wi.empnu

10、m=0) break;102、 printf(n);103、 printf(n);104、 for(j=0;jlength;j+)105、 106、 if(wj.empnum=wi.empnum) 107、 108、 flag=0;109、 printf(該職工號人員已經存在,請重新輸入);110、 111、 112、 if(flag=0) break; /*如果職工已經存在那么跳出程序*/113、 printf(請你輸入該員工的姓名:n); /*開始輸入該員工的各類基本信息*/114、 scanf(%s,&);115、 printf(請你輸入該員工的性別:n);116、 sca

11、nf(%s,&wi.sex);117、 printf(請輸入該員工的年齡:n);118、 scanf(%d,&wi.age);119、 printf(請輸入該員工的出生年月日(格式1995/03/23):n);120、 scanf(%s,&wi.birthday);121、 printf(請輸入該員工的系別:n);122、 scanf(%s,&wi.Dep);123、 printf(請你輸入該員工的教育工作量(單位:小時):n);124、 scanf(%lf,&wi.Teachworkload);125、 printf(n);126、 printf(請你輸入該員工的科研工作量(單位:小時):n

12、);127、 scanf(%lf,&wi.Scientficworkload);128、 /printf(請你輸入該員工的量化的分(單位:分),wi.Qscore);129、 /scanf(%d,&wi.Qscore);130、 printf(請你輸入該員工的職位:n);131、 scanf(%s,&wi.Position);132、 printf(n);133、 i+;134、 135、 Qscore1(w,length);136、 return i;137、 138、 /* 139、 功能:輸入職工基本信息 140、 */141、 void input(struct worker w,in

13、t length)142、 143、 int i=1,empnum;/*i用來尋找需要累加工作量的員工*/144、 double Scientficworkload,Teachworkload;145、 printf(請輸入工號:n); /*用來查找某位工人*/146、 scanf(%d,&empnum);147、 if(empnum=0) 148、 149、 printf(輸入錯誤請重新輸入);150、 getchar();151、 scanf(%d,&empnum);152、 153、 else154、 155、 printf(請輸入新完成教育工作量(單位:小時,無增加請?zhí)?):n); /

14、*輸入各類新增工作量*/156、 getchar();157、 scanf(%lf,&Teachworkload);158、 printf(請輸入新完成的科研工作量(單位:小時,無增加請?zhí)?):n);159、 getchar();160、 scanf(%lf,&Scientficworkload);161、 /printf(請輸入所需要增加的量化得分(單位:分,無增加請?zhí)?):n);162、 /getchar();163、 /scanf(%d,&Qscore);164、 for(i=0;i=length) /*如果員工不存在,提示重新輸入工號*/174、 175、 printf(工號不存在:n

15、);176、 printf(請輸入工號:n);177、 scanf(%d,&empnum);178、 179、 Qscore1(w,length);180、 181、 182、 /* 183、 功能:工作量輸入并累加 184、 */185、 void sortQscore(struct worker w,int length) /*選擇法對量化得分進行排序*/186、 187、 int i=0,j=0,k=0;188、 struct worker s; /*結構體temp轉換變量*/189、 for(i=0;ilength;i+) /*選擇法對于量化得分進行排序*/190、 191、 k=i;

16、192、 for(j=i+1;jwk.Qscore) k=j;195、 196、 /*交換wi and wk*/197、 s=wk;198、 wk=wi;199、 wi=s;200、 201、 if(length0) w0.grade=1; 202、 for(i=1;ilength;i+) /*循環(huán)對于量化得分排序好后的人進行標上名次的操作*/203、 204、 if(wi.Qscore=wi-1.Qscore) wi.grade=wi-1.grade;205、 else wi.grade=wi-1.grade+1;206、 207、 printf(名次 工號 姓名 年齡 性別 生日 系別 職

17、稱 教育工作量 科研工作量 量化得分n);/*輸出表頭*/208、 for(i=0;ilength;i+) /*輸出排序之后的職工工作量信息表*/209、 210、 Qscore1(w,length);211、 printf(%dt,wi.grade);212、 printf(%dt,wi.empnum);213、 printf(%st,);214、 printf(%dt,wi.age);215、 printf(%st,wi.sex);216、 printf(%st,wi.birthday);217、 printf(%st,wi.Dep);218、 printf(%st,wi.P

18、osition);219、 printf(%5.2lft,wi.Teachworkload);220、 printf(%5.2lft,wi.Scientficworkload);221、 printf(%5.2lft,wi.Qscore);222、 printf(n);223、 printf(n);224、 225、 226、 /* 227、 按量化得分從大到小排序并標上名次并且輸出排序結果 228、 */229、 int delet(struct worker w,int length)230、 231、 int i=0,j=0;232、 char choice; /*給用戶來判斷是否刪除*

19、/233、 int empnum; /*所需要刪除職工信息的工號*/234、 printf(請輸入需要刪除的員工職工號:n);235、 scanf(%d,&empnum); /*輸入所需要刪除的職工號*/236、 for(i=0;ilength;i+) /*循環(huán)查找該職工是否存在并輸出該職工工號信息*/237、 238、 if(wi.empnum=empnum)239、 240、 printf(想刪除的職工號為:);241、 printf(%dn,wi.empnum);242、 break;243、 244、 245、 if(ilength)246、 247、 printf(你卻定要刪除這個職

20、工信息嗎?(Y/N)n); /*輸出讓用戶確實是否刪除*/248、 getchar();249、 scanf(%c,&choice);250、 if(choice=Y|choice=y)251、 252、 for(j=i;jlength;j+)253、 254、 wj=wj+1;255、 256、 length-; /*刪除之后總人數減一*/257、 printf(刪除成功);258、 259、 260、 else printf(n指定員工不存在n);261、 return length;262、 263、 /*264、 按職工號刪除職工信息265、 */266、 void writeTo w

21、orker w,int length) /*數據寫入文件的功能函數*/267、 268、 FILE *fp=NULL; /*設置文件指針*/269、 int i=0;270、 fp=fopen(,wb); /*打開文件*/271、 if(fp=NULL) /*打開失敗*/272、 273、 printf(打開文件出錯!n);274、 exit(0);275、 276、 for(i=0;ilength;i+) /*循環(huán)寫入文件每一組結構體數據*/277、 fwrite(w+i,sizeof(worker),1,fp); /*寫入每個結構體數據*/278、 fclose(fp); /*關閉文件*/

22、279、280、 281、 /*282、 結構體數組中的職工信息輸出到文件283、 */284、 void viewworker(struct worker w,int length)285、 286、 int i;287、 Qscore1(w,length);288、 /printf(你確定要瀏覽所有職工信息?(Y/N);289、 /scanf(%c,&choice);290、 /if(choice=Y|choice=y) /*確認瀏覽信息*/291、 printf(工號 姓名 年齡 性別 生日 系別 職稱 教育工作量 科研工作量 量化得分n);/*輸出表頭*/292、 for(i=0;il

23、ength;i+) /*輸出職工工作量信息表*/293、 294、 printf(%dt,wi.empnum);295、 printf(%st,);296、 printf(%dt,wi.age);297、 printf(%st,wi.sex);298、 printf(%st,wi.birthday);299、 printf(%st,wi.Dep);300、 printf(%st,wi.Position);301、 printf(%5.2lft,wi.Teachworkload);302、 printf(%5.2lft,wi.Scientficworkload);303、 prin

24、tf(%5.2lft,wi.Qscore);304、 printf(n);305、 printf(n);306、 307、 308、 void Seek(struct worker w,int length)309、 310、 int i;311、 char Dep20;312、 printf(請輸入你想要查詢信息職工的系別或者職稱:n);313、 scanf(%s,&Dep);314、 /*if(empnum=0) 315、 316、 printf(輸入錯誤,請重新輸入:n);317、 scanf(%d,&empnum);318、 */319、 for(i=0;ilength;i+)320、

25、 321、 if(strcmp(wi.Dep,Dep)=0)322、 323、 printf(該系別員工的信息如下:n);324、 for(i=0;ilength;i+) /*搜尋員工信息*/325、 326、 if(strcmp(wi.Dep,Dep)=0) /*判斷是否是系別查詢*/327、 328、 printf(工號姓名年齡性別生日系別職稱教育工作量科研工作量量化得分n);/*輸出表頭*/329、 printf(%dt,wi.empnum);330、 printf(%st,);331、 printf(%dt,wi.age);332、 printf(%st,wi.sex);

26、333、 printf(%st,wi.birthday);334、 printf(%st,wi.Dep);335、 printf(%st,wi.Position);336、 printf(%5.2lft,wi.Teachworkload);337、 printf(%5.2lft,wi.Scientficworkload);338、 printf(%5.2lft,wi.Qscore);339、 printf(n);340、 printf(n);341、 342、 343、 344、 if(strcmp(wi.Position,Dep)=0)/*判斷是否是職稱查詢*/345、 346、 for(i

27、=0;ilength;i+)347、 348、 if(strcmp(wi.Position,Dep)=0)349、 350、 printf(工號姓名年齡性別生日系別職稱教育工作量科研工作量量化得分n);/*輸出表頭*/351、 printf(%dt,wi.empnum);352、 printf(%st,);353、 printf(%dt,wi.age);354、 printf(%st,wi.sex);355、 printf(%st,wi.birthday);356、 printf(%st,wi.Dep);357、 printf(%st,wi.Position);358、 prin

28、tf(%5.2lft,wi.Teachworkload);359、 printf(%5.2lft,wi.Scientficworkload);360、 printf(%5.2lft,wi.Qscore);361、 printf(n);362、 printf(n);363、 364、 365、 366、 /if(strcmp(wi.Position,Dep)!=0&strcmp(wi.Dep,Dep)!=0) printf(輸入錯誤!);break;367、 368、 369、 void modify(struct worker w,int length)370、 371、 int i,empn

29、um;372、 char choice;373、 printf(請問你所需要修改信息的職員工號是多少?n);374、 scanf(%d,&empnum);375、 printf(請問你是否需要修改該員工的信息?:(Y/N);376、 getchar();377、 scanf(%c,&choice);378、 if(choice=y|choice=Y)379、 380、 for(i=0;i=length) printf(該職工號不存在!);406、 407、 printf(修改信息后的該員工信息為:n);408、 Qscore1(w,length);409、 for(i=0;ilength;i+

30、)410、 411、 if(wi.empnum=empnum) 412、 413、 printf(該員工的信息如下:n);414、 printf(工號姓名年齡性別生日系別職稱教育工作量科研工作量量化得分n);/*輸出表頭*/415、 printf(%dt,wi.empnum);416、 printf(%st,);417、 printf(%dt,wi.age);418、 printf(%st,wi.sex);419、 printf(%st,wi.birthday);420、 printf(%st,wi.Dep);421、 printf(%st,wi.Position);422、 printf(%5.2lft

溫馨提示

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

評論

0/150

提交評論