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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、ib.h>4、 #include<string.h>5、 #define FILENAME "d:worker.bin"6、 #define N 1007、 struct worker8、 9、 int empnum; /*工號(hào)*/10、 char name20; /*姓名*/11、 char sex5; /*性別*/12、 char birthday30; /*生日*/13、 char Dep20; /*系別*/14、 int age; /*年齡*/15、 double Teachworkload; /*教育工作量*/16、 double Scientf

6、icworkload; /*科研工作量*/17、 double Qscore; /*量化得分*/18、 int grade; /*該員工的排名名次*/19、 char Position30; /*職稱(chēng)*/20、 ;21、 /* 22、 定義23、 */24、 void xinxi()25、 26、 printf("n+n");27、 printf("+ 職工工作量統(tǒng)計(jì)系統(tǒng) +n");28、 printf("+ +n");29、 printf("+ 1. 職工基本信息輸入 +n");30、 printf("

7、+ +n");31、 printf("+ 2. 工作量累加 +n");32、 printf("+ +n");33、 printf("+ 3. 按照量化得分排序 +n");34、 printf("+ +n");35、 printf("+ 4. 刪除某職工信息 +n");36、 printf("+ +n");37、 printf("+ 5.瀏覽所有員工信息表 +n");38、 printf("+ +n");39、 printf(&

8、quot;+ 6.查詢某員工信息 +n");40、 printf("+ +n");41、 printf("+ 7.修改某員工信息 +n");42、 printf("+ +n");43、 printf("+ 8. 結(jié)束程序,將數(shù)據(jù)寫(xiě)入文件 +n");44、 printf("+n");45、 46、 /* 47、 顯示菜單48、 */49、 void Qscore1(struct worker w,int length)50、 51、 int i=0,sum1=0,sum2=0;52、 f

9、or(i=0;i<length;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<length;i+)59、 60、 wi.Qscore=wi.Scientficworkload/sum2*0.5+wi.Teachworkload/sum1*0.5;61、 62、 63、 /*64、 計(jì)算量化得分6

10、5、 */66、 int readFromFile(struct worker w)67、 68、 FILE *fp=NULL;69、 int i=0; /*i用來(lái)循環(huán)判斷人數(shù)*/70、71、 fp=fopen(FILENAME,"rb"); /*打開(kāi)文件,文件指針指向內(nèi)部數(shù)據(jù)*/72、73、 if(fp!=NULL)74、 75、76、 while(!feof(fp) /*從文件中讀入工作人員*/77、 78、 79、 if(i>=N) /*如果溢出,則跳出文件*/80、 break;81、 if(fread(w+i,sizeof(worker),1,fp)=1)8

11、2、 i+;83、 84、85、 fclose(fp); /*關(guān)閉文件*/86、 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用來(lái)表示已經(jīng)錄入過(guò)信息的人數(shù)*/95、 while(i<N)96、 97、 printf("第%d個(gè)職工n",i+1); /*顯示下一個(gè)需要輸入信息的員工是第幾個(gè)員工*/ 98、 printf("n");99、 printf("請(qǐng)你輸

12、入工號(hào)(以職工號(hào)為0結(jié)束輸入):n)"); /*輸入職工號(hào)信息*/100、 scanf("%d",&wi.empnum);101、 if(wi.empnum=0) break;102、 printf("n");103、 printf("n");104、 for(j=0;j<length;j+)105、 106、 if(wj.empnum=wi.empnum) 107、 108、 flag=0;109、 printf("該職工號(hào)人員已經(jīng)存在,請(qǐng)重新輸入");110、 111、 112、 if(

13、flag=0) break; /*如果職工已經(jīng)存在那么跳出程序*/113、 printf("請(qǐng)你輸入該員工的姓名:n"); /*開(kāi)始輸入該員工的各類(lèi)基本信息*/114、 scanf("%s",&);115、 printf("請(qǐng)你輸入該員工的性別:n");116、 scanf("%s",&wi.sex);117、 printf("請(qǐng)輸入該員工的年齡:n");118、 scanf("%d",&wi.age);119、 printf("

14、;請(qǐng)輸入該員工的出生年月日(格式1995/03/23):n");120、 scanf("%s",&wi.birthday);121、 printf("請(qǐng)輸入該員工的系別:n");122、 scanf("%s",&wi.Dep);123、 printf("請(qǐng)你輸入該員工的教育工作量(單位:小時(shí)):n");124、 scanf("%lf",&wi.Teachworkload);125、 printf("n");126、 printf("

15、請(qǐng)你輸入該員工的科研工作量(單位:小時(shí)):n");127、 scanf("%lf",&wi.Scientficworkload);128、 /printf("請(qǐng)你輸入該員工的量化的分(單位:分)",wi.Qscore);129、 /scanf("%d",&wi.Qscore);130、 printf("請(qǐng)你輸入該員工的職位:n");131、 scanf("%s",&wi.Position);132、 printf("n");133、 i+;1

16、34、 135、 Qscore1(w,length);136、 return i;137、 138、 /* 139、 功能:輸入職工基本信息 140、 */141、 void input(struct worker w,int length)142、 143、 int i=1,empnum;/*i用來(lái)尋找需要累加工作量的員工*/144、 double Scientficworkload,Teachworkload;145、 printf("請(qǐng)輸入工號(hào):n"); /*用來(lái)查找某位工人*/146、 scanf("%d",&empnum);147、 i

17、f(empnum=0) 148、 149、 printf("輸入錯(cuò)誤請(qǐng)重新輸入");150、 getchar();151、 scanf("%d",&empnum);152、 153、 else154、 155、 printf("請(qǐng)輸入新完成教育工作量(單位:小時(shí),無(wú)增加請(qǐng)?zhí)?):n"); /*輸入各類(lèi)新增工作量*/156、 getchar();157、 scanf("%lf",&Teachworkload);158、 printf("請(qǐng)輸入新完成的科研工作量(單位:小時(shí),無(wú)增加請(qǐng)?zhí)?):n

18、");159、 getchar();160、 scanf("%lf",&Scientficworkload);161、 /printf("請(qǐng)輸入所需要增加的量化得分(單位:分,無(wú)增加請(qǐng)?zhí)?):n");162、 /getchar();163、 /scanf("%d",&Qscore);164、 for(i=0;i<length;i+) /*循環(huán)尋找該職工號(hào)是否存在文件中*/165、 166、 if(wi.empnum=empnum) /*找到該員工存在,則累加新增工作量*/167、 168、 wi.Sci

19、entficworkload+=Scientficworkload;169、 wi.Teachworkload+=Teachworkload;170、 break;171、 172、 173、 if(i>=length) /*如果員工不存在,提示重新輸入工號(hào)*/174、 175、 printf("工號(hào)不存在:n");176、 printf("請(qǐng)輸入工號(hào):n");177、 scanf("%d",&empnum);178、 179、 Qscore1(w,length);180、 181、 182、 /* 183、 功能:工作

20、量輸入并累加 184、 */185、 void sortQscore(struct worker w,int length) /*選擇法對(duì)量化得分進(jìn)行排序*/186、 187、 int i=0,j=0,k=0;188、 struct worker s; /*結(jié)構(gòu)體temp轉(zhuǎn)換變量*/189、 for(i=0;i<length;i+) /*選擇法對(duì)于量化得分進(jìn)行排序*/190、 191、 k=i;192、 for(j=i+1;j<length;j+) 193、 194、 if(wj.Qscore>wk.Qscore) k=j;195、 196、 /*交換wi and wk*/1

21、97、 s=wk;198、 wk=wi;199、 wi=s;200、 201、 if(length>0) w0.grade=1; 202、 for(i=1;i<length;i+) /*循環(huán)對(duì)于量化得分排序好后的人進(jìn)行標(biāo)上名次的操作*/203、 204、 if(wi.Qscore=wi-1.Qscore) wi.grade=wi-1.grade;205、 else wi.grade=wi-1.grade+1;206、 207、 printf("名次 工號(hào) 姓名 年齡 性別 生日 系別 職稱(chēng) 教育工作量 科研工作量 量化得分n");/*輸出表頭*/208、 for

22、(i=0;i<length;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、

23、printf("%st",wi.Dep);218、 printf("%st",wi.Position);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、 按量化得

24、分從大到小排序并標(biāo)上名次并且輸出排序結(jié)果 228、 */229、 int delet(struct worker w,int length)230、 231、 int i=0,j=0;232、 char choice; /*給用戶來(lái)判斷是否刪除*/233、 int empnum; /*所需要?jiǎng)h除職工信息的工號(hào)*/234、 printf("請(qǐng)輸入需要?jiǎng)h除的員工職工號(hào):n");235、 scanf("%d",&empnum); /*輸入所需要?jiǎng)h除的職工號(hào)*/236、 for(i=0;i<length;i+) /*循環(huán)查找該職工是否存在并輸出該職

25、工工號(hào)信息*/237、 238、 if(wi.empnum=empnum)239、 240、 printf("想刪除的職工號(hào)為:");241、 printf("%dn",wi.empnum);242、 break;243、 244、 245、 if(i<length)246、 247、 printf("你卻定要?jiǎng)h除這個(gè)職工信息嗎?(Y/N)n"); /*輸出讓用戶確實(shí)是否刪除*/248、 getchar();249、 scanf("%c",&choice);250、 if(choice='Y&

26、#39;|choice='y')251、 252、 for(j=i;j<length;j+)253、 254、 wj=wj+1;255、 256、 length-; /*刪除之后總?cè)藬?shù)減一*/257、 printf("刪除成功");258、 259、 260、 else printf("n指定員工不存在n");261、 return length;262、 263、 /*264、 按職工號(hào)刪除職工信息265、 */266、 void writeToFile(struct worker w,int length) /*數(shù)據(jù)寫(xiě)入文件的功

27、能函數(shù)*/267、 268、 FILE *fp=NULL; /*設(shè)置文件指針*/269、 int i=0;270、 fp=fopen(FILENAME,"wb"); /*打開(kāi)文件*/271、 if(fp=NULL) /*打開(kāi)失敗*/272、 273、 printf("打開(kāi)文件出錯(cuò)!n");274、 exit(0);275、 276、 for(i=0;i<length;i+) /*循環(huán)寫(xiě)入文件每一組結(jié)構(gòu)體數(shù)據(jù)*/277、 fwrite(w+i,sizeof(worker),1,fp); /*寫(xiě)入每個(gè)結(jié)構(gòu)體數(shù)據(jù)*/278、 fclose(fp); /*

28、關(guān)閉文件*/279、280、 281、 /*282、 結(jié)構(gòu)體數(shù)組中的職工信息輸出到文件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') /*確認(rèn)瀏覽信息*/291、 printf("工號(hào)

29、 姓名 年齡 性別 生日 系別 職稱(chēng) 教育工作量 科研工作量 量化得分n");/*輸出表頭*/292、 for(i=0;i<length;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

30、("%st",wi.Dep);300、 printf("%st",wi.Position);301、 printf("%5.2lft",wi.Teachworkload);302、 printf("%5.2lft",wi.Scientficworkload);303、 printf("%5.2lft",wi.Qscore);304、 printf("n");305、 printf("n");306、 307、 308、 void Seek(struct w

31、orker w,int length)309、 310、 int i;311、 char Dep20;312、 printf("請(qǐng)輸入你想要查詢信息職工的系別或者職稱(chēng):n");313、 scanf("%s",&Dep);314、 /*if(empnum=0) 315、 316、 printf("輸入錯(cuò)誤,請(qǐng)重新輸入:n");317、 scanf("%d",&empnum);318、 */319、 for(i=0;i<length;i+)320、 321、 if(strcmp(wi.Dep,De

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

33、",wi.age);332、 printf("%st",wi.sex);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&q

34、uot;,wi.Qscore);339、 printf("n");340、 printf("n");341、 342、 343、 344、 if(strcmp(wi.Position,Dep)=0)/*判斷是否是職稱(chēng)查詢*/345、 346、 for(i=0;i<length;i+)347、 348、 if(strcmp(wi.Position,Dep)=0)349、 350、 printf("工號(hào)姓名年齡性別生日系別職稱(chēng)教育工作量科研工作量量化得分n");/*輸出表頭*/351、 printf("%dt",

35、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、 printf("%5.2lft",wi.Teachworkload);359、 printf(

36、"%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("輸入錯(cuò)誤!");break;367、 368、 369、 void modify(struct worker w,int

37、 length)370、 371、 int i,empnum;372、 char choice;373、 printf("請(qǐng)問(wèn)你所需要修改信息的職員工號(hào)是多少?n");374、 scanf("%d",&empnum);375、 printf("請(qǐng)問(wèn)你是否需要修改該員工的信息?:(Y/N)");376、 getchar();377、 scanf("%c",&choice);378、 if(choice='y'|choice='Y')379、 380、 for(i=0;i

38、<length;i+)381、 382、 if(wi.empnum=empnum)383、 384、 printf("請(qǐng)你輸入該員工的姓名:n"); /*開(kāi)始修改該員工的各類(lèi)基本信息*/385、 scanf("%s",&);386、 printf("請(qǐng)你輸入該員工的性別:n");387、 scanf("%s",&wi.sex);388、 printf("請(qǐng)輸入該員工的年齡:n");389、 scanf("%d",&wi.age);3

39、90、 printf("請(qǐng)輸入該員工的出生年月日(格式1995/03/23):n");391、 scanf("%s",&wi.birthday);392、 printf("請(qǐng)輸入該員工的系別:n");393、 scanf("%s",&wi.Dep);394、 printf("請(qǐng)你輸入該員工的教育工作量(單位:小時(shí)):n");395、 scanf("%lf",&wi.Teachworkload);396、 printf("n");39

40、7、 printf("請(qǐng)你輸入該員工的科研工作量(單位:小時(shí)):n");398、 scanf("%lf",&wi.Scientficworkload);399、 /printf("請(qǐng)你輸入該員工的量化的分(單位:分)",wi.Qscore);400、 /scanf("%d",&wi.Qscore);401、 printf("請(qǐng)你輸入該員工的職位:n");402、 scanf("%s",&wi.Position);403、 printf("n&

41、quot;);404、 405、 else if(i>=length) printf("該職工號(hào)不存在!");406、 407、 printf("修改信息后的該員工信息為:n");408、 Qscore1(w,length);409、 for(i=0;i<length;i+)410、 411、 if(wi.empnum=empnum) 412、 413、 printf("該員工的信息如下:n");414、 printf("工號(hào)姓名年齡性別生日系別職稱(chēng)教育工作量科研工作量量化得分n");/*輸出表頭*/415、 printf("%dt",wi.empnum);4

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論