版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
..>JINJINGCHUUNIVERSITYOFTECHNOLOGY課程設(shè)計成果設(shè)計題目:____職工工作量統(tǒng)計____學(xué)院:_____計算機(jī)工程________班級:11軟件〔本〕三班姓名:王志成學(xué)號:06設(shè)計地點:______A5-101_____完成日期:2013年01月12日指導(dǎo)教師評語:__________________________________________________________________________________________________________________________________________成績〔五級記分制〕:教師簽名:..>目錄TOC\o"1-3"\h\u16722摘要 1610第一章工程概述 2247271.1問題描述 2247271.2問題分析223802第二章工程設(shè)計 2289912.1系統(tǒng)程序的功能示意圖如下: 3278632.2功能函數(shù)設(shè)計思想及說明448072.2.1隨機(jī)生成職工號函數(shù)4207332.2.2隨機(jī)生成職工完成的產(chǎn)品數(shù)量5224572.2.3排序函數(shù)6192252.2.4查找函數(shù)7141292.2.5插入函數(shù)7188002.2.6刪除函數(shù)9213922.2.7按職工完成的產(chǎn)品數(shù)量排名次函數(shù)9259282.2.8輸出最終結(jié)果函數(shù)919882.2.9main()函數(shù)98596第三章程序調(diào)試11306683.1調(diào)試程序遇到的問題及解決11214713.2程序調(diào)試結(jié)果1216333.2.1隨機(jī)生成職工號和隨機(jī)生成職工完成產(chǎn)品數(shù)量信息結(jié)果〔如圖1)12127603.2.2歡迎界面〔如圖2〕12248143.3.3功能1排序函數(shù)〔出現(xiàn)錯誤的如圖3,正確的如圖4〕1340713.3.4排名次函數(shù)〔如圖5)1472283.3.5輸出職工工號和完成產(chǎn)品數(shù)量函數(shù)〔如圖5〕144293.3.6功能1排序函數(shù)〔如圖6〕14285373.3.7功能2查找函數(shù)〔如圖7和圖8〕15213553.3.8功能3插入函數(shù)〔如圖9、圖10和圖11〕15185663.3.9功能4刪除函數(shù)〔如圖12〕16193503.3.10功能5輸出函數(shù)〔如圖15〕182993第四章設(shè)計總結(jié)與心得1824107第五章參考文獻(xiàn)198777附錄20..>摘要數(shù)據(jù)構(gòu)造主要是一門研究非數(shù)值計算的程序設(shè)計問題中的計算機(jī)操作對象以及它們之間的關(guān)系和操作等的學(xué)科。數(shù)據(jù)構(gòu)造在計算機(jī)科學(xué)與技術(shù)中是一門綜合性的專業(yè)根底課,其研究不僅涉及到計算機(jī)硬件的研究范圍,而且和計算機(jī)軟件的研究有著更密切的關(guān)系。不管是編譯程序過程還是操作系統(tǒng)都涉及到數(shù)據(jù)元素在存儲器中的分配問題。在計算機(jī)科學(xué)與技術(shù)中,數(shù)據(jù)構(gòu)造不僅是一般程序性的根底,而且也是其他系統(tǒng)程序和大型程序的重要根底。在社會生產(chǎn)日益群體合作化,生產(chǎn)模式日益企業(yè)化的今天,企業(yè)的管理工作越來越受到企業(yè)經(jīng)營者的重視,而在員工的流動、管理和工作報酬的分配中,職工的報酬是根據(jù)員工的工作量進(jìn)展分配的。因此,職工的工作量,就成了企業(yè)經(jīng)營者關(guān)注的信息。然而,對于現(xiàn)在的企業(yè)來說,人員數(shù)量多,工作量又復(fù)雜,通過普通的人工方式已經(jīng)難以滿足現(xiàn)代化企業(yè)的核算要求。怎樣進(jìn)展大量員工的工作量的管理工作呢?設(shè)計一個職工工作量統(tǒng)計系統(tǒng),就能夠滿足大多數(shù)現(xiàn)代化企業(yè)的需求了。課程設(shè)計的目的和意義是:通過課程設(shè)計的實踐環(huán)節(jié)的教學(xué),可以加深對課堂所學(xué)根底知識的掌握與理解,提高所學(xué)內(nèi)容的綜合運用能力;同時也可以通過查詢相關(guān)資料,培養(yǎng)學(xué)生自學(xué)能力、承受新知識的能力,提高學(xué)習(xí)興趣;增強(qiáng)學(xué)生程序設(shè)計能力,掌握編程技巧,并可培養(yǎng)學(xué)生實際上機(jī)調(diào)試程序的能力。"理論與實踐〞相結(jié)合,使學(xué)生得到很好的鍛煉,為以后學(xué)習(xí)、工作打下堅實的根底。本次職工工作量統(tǒng)計系統(tǒng)是通過C語言來設(shè)計的,也是由本人獨立完成的。關(guān)鍵字:數(shù)據(jù)構(gòu)造、課程設(shè)計、職工工作量第一章工程概述問題描述及分析:采用隨機(jī)函數(shù)產(chǎn)生職工的工號和他所完成產(chǎn)品個數(shù)的數(shù)據(jù)信息,對同一職工屢次完成的產(chǎn)品個數(shù)進(jìn)展累計,最后按以下格式輸出;職工完成產(chǎn)品數(shù)量的名次、該名次每位職工完成的產(chǎn)品數(shù)量、職工人數(shù)和職工號要求:1〕輸出統(tǒng)計結(jié)果,如下所示:Orderquantitycountnumber1375310202142562356200192〕每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
1.2問題分析
問題中包含有職工工號、職工屢次完成的產(chǎn)品數(shù)量、職工完成的產(chǎn)品總數(shù)量、按完成產(chǎn)品數(shù)量個數(shù)的名次、職工一樣名次的人數(shù)。因此,設(shè)置構(gòu)造體為:typedefstruct{intorder;intcount;intftotal[5];intquantity;intnumber;}SqList;SqListPa[MA*]={0};職工的信息應(yīng)包含排序、查找、插入、刪除等功能;每個職工都包含以上構(gòu)造體中的數(shù)據(jù),因此,該問題的設(shè)計思想是:采用構(gòu)造體數(shù)組來存儲職工信息,然后對各職工的信息進(jìn)展排序、查找、插入、刪除等操作。第二章工程設(shè)計系統(tǒng)在win-TC中運行,由于win-TC不支持中文輸出功能,故采用純英文進(jìn)展設(shè)計編寫。這樣能作出美觀的界面,并且制作出詳細(xì)的菜單。先輸出工號和完成的數(shù)量,最后輸出查找的結(jié)果輸入(1~5)隨機(jī)生成職工號、職工完成工作量歡迎界面開場先先輸出工號和完成的數(shù)量,最后輸出查找的結(jié)果輸入(1~5)隨機(jī)生成職工號、職工完成工作量歡迎界面開場先排序排名次,最后輸出最終要求的輸出結(jié)果先輸出工號和職工完成的數(shù)量,再刪除給定的職工信息最后輸出最終要求的結(jié)果Ch=12Ch=52先按工作量排序,再輸出排序后的工號和完成的數(shù)量,最后輸出最終要求的結(jié)果Ch=42Ch=32Ch=22Ch=12Ch=42Ch=32Ch=22Ch=12先輸出工號和完成的產(chǎn)量,再插入一個信息,最后輸出最終的結(jié)果Ch=12Ch=52先按工作量排序,再輸出排序后的工號和完成的數(shù)量,最后輸出最終要求的結(jié)果Ch=42Ch=32Ch=22Ch=12Ch=42Ch=32Ch=22Ch=12完畢示意圖1,系統(tǒng)函數(shù)功能示意圖2.2功能函數(shù)設(shè)計思想及說明2.2.1隨機(jī)生成職工號函數(shù)voidSandNumber(SqListPa[],intn,int*p)先定義了全局?jǐn)?shù)組NUM[MA*]={0}和指針*p,并且讓指針指向該數(shù)組,用來保存職工的工號信息,再使用系統(tǒng)函數(shù)srand()、rand()生成n個員工的工號,工號為不為零的兩位數(shù),且這n個員工的工號各不一樣。在生成完后,再依次輸出這n個員工的工號,其圖示如下:將將m的值存入*(p+i)完畢第i個和第j個工號相等i>0i<n第i個和第j個工號相等i>0i>=n輸出員工工號m==0使用隨機(jī)函數(shù)給m賦值m=rand()%100;定義三個變量i=0,j,m使用當(dāng)前時間種子將m的值存入*(p+i)完畢第i個和第j個工號相等i>0i<n第i個和第j個工號相等i>0i>=n輸出員工工號m==0使用隨機(jī)函數(shù)給m賦值m=rand()%100;定義三個變量i=0,j,m使用當(dāng)前時間種子示意圖2,隨機(jī)生成職工號函數(shù)示意圖2.2.2隨機(jī)生成職工完成的產(chǎn)品數(shù)量voidSandQuantity(SqListPa[],intn,int*q)先定義了全局?jǐn)?shù)組QU[MA*]={0}和指針*q,并且讓指針指向該數(shù)組,用來保存職工完成產(chǎn)品的次數(shù)信息,再使用系統(tǒng)函數(shù)srand()、rand()生成n個員工的數(shù)量信息Pa[i].quantity,其中該信息為各個員工〔最多有5個小于100〕的信息Pa[i].ftotal[j]之和,在生成完后,再依次輸出這n個員工的數(shù)量信息,其圖示如下:i<*(q+j)i<*(q+j)用rand()函數(shù)賦值得到數(shù)量信息Pa[j].ftotal[i],累計得到Pa[j].quantity;i++;j++;完畢定義i=0,j=0,k使用srand()函數(shù)使用當(dāng)前時間作種子用rand()函數(shù)得到數(shù)據(jù)賦給*(q+i),*(q+i)=rand();
*(q+i)>5用rand()函數(shù)重新給*(q+i)賦值,*〔q+i)=rand();i>ni++;i=0j<n示意圖3,隨機(jī)生成職工數(shù)據(jù)信息函數(shù)示意圖2.2.3排序函數(shù)intPai*u_quantity(SqListPa[],intn,int*q)使用冒泡法進(jìn)展排序,先定義一個構(gòu)造體arr,兩個變量i和j,其中j用來計算已經(jīng)完成的職工個數(shù),i表示尚未比較個數(shù),從j=0開場,當(dāng)j<n時,執(zhí)行循環(huán),從i=0開場,比較一次后,使i++,比較(n-j)次,當(dāng)i>(n-j)時,第一輪比較完畢,使j++,進(jìn)入下一輪,……當(dāng)j>=n時,表示第n輪比較完畢,此時排序完成。函數(shù)示意圖〔3〕如下:Pa[i].quantity<Pa[i+1].quantityPa[i].quantity<Pa[i+1].quantity交換第i個和第i+1個構(gòu)造體中對應(yīng)位置的元素信息;i++i<n-jj<ni=0,j=0j++;輸出排序后的結(jié)果完畢示意圖4,排序功能函數(shù)示意圖2.2.4查找函數(shù)intSearch_Number(SqListPa[],intn,intnum),根據(jù)給定的職工號查找該職工的信息。從序號為0的構(gòu)造體數(shù)組開場訪問,如果該構(gòu)造體數(shù)組中元素的工號項Pa[i].number與num不等,則使i自加1,指向下一個構(gòu)造體數(shù)組,訪問該數(shù)組元素,直到該數(shù)組元素的工號等于num時,輸出該構(gòu)造體數(shù)組元素的元素,并返回該數(shù)組元素的位置i,如果i>n時還未找到要查找的元素,則表示該元素不存在,輸出"theemployeehasn'tbeenfound!!!\n〞并返回空。其示意圖如下:從主函數(shù)輸入得到工號從主函數(shù)輸入得到工號num輸出沒有找到,返回空完畢輸出查找信息,返回查找到的位置ii<ni=0Pa[i].number==numi++;示意圖5,查找函數(shù)功能示意圖2.2.5插入函數(shù)intInsert(SqListPa[],intn,intnum)要插入一個員工的信息,就得先得到員工的位置,先調(diào)用查找函數(shù),將給定員工工號所在的位置當(dāng)作查找函數(shù)的返回值返回給s,s=Search_Number(Pa,n,num);得到要插入的位置,再將Pa[s]所在的構(gòu)造體中的數(shù)據(jù)元素位置全部空出,即當(dāng)i>=s時,將Pa[i]中的數(shù)據(jù)全部對輸出輸入錯誤Pa[s].ftotal[i]=rand()%100;累計得到總數(shù)量Pa[s].quantity輸出插入錯誤,返回n的原值得到插入的工號查找工號位置,并將返回值給sSrand((unsigned)time(NULL))S<0||s==NULLi=n-1將第i個位置信息移到第i+1個位置i--;i>=s輸入次數(shù)totalTotal<5輸出輸入錯誤Pa[s].ftotal[i]=rand()%100;累計得到總數(shù)量Pa[s].quantity輸出插入錯誤,返回n的原值得到插入的工號查找工號位置,并將返回值給sSrand((unsigned)time(NULL))S<0||s==NULLi=n-1將第i個位置信息移到第i+1個位置i--;i>=s輸入次數(shù)totalTotal<5i=0;隨機(jī)得到一個不為0且不與其它工號一樣的工號賦給Pa[s].number,初始化其它數(shù)據(jù)n=n+1;返回n的值完畢示意圖6,插入函數(shù)示意圖2.2.6刪除函數(shù)intDelete(SqListPa[],intn,int*q,intnum要刪除一個員工信息,得先知道員工的位置,先調(diào)用查找函數(shù)根據(jù)所給的員工的工號查找到該員工所在的位置,并將其返回值賦給s,即s=Search_Number(Pa,n,num);得到要刪除的位置。如果s=NULL或i>n時,則輸出〞Deleteiswrong!!!\n〞;否則,如果當(dāng)Pa[i]==Pa[s]時,先將Pa[i]位置的數(shù)據(jù)信息保存在構(gòu)造體str中,再將Pa[i+1]位置的數(shù)據(jù)信息前移到Pa[i]位置中,循環(huán)直到i>n時,將構(gòu)造體的個數(shù)減1,最后輸出被刪除的信息,程序執(zhí)行完畢。2.2.7按職工完成的產(chǎn)品數(shù)量排名次函數(shù)voidCount_order(SqListPa[],intn)功能:給各職工排名次和賦count數(shù)據(jù)項的值。要給職工按完成的產(chǎn)品數(shù)量排名次,則要求先對各職工的信息進(jìn)展排完成產(chǎn)品數(shù)量排序,即在排名次函數(shù)中又調(diào)用了按職工完成產(chǎn)品數(shù)量排序函數(shù)進(jìn)展排序。排序完成后,先對這n個員工按序號排名次,即Pa[0],Pa[i],……Pa[n-1]的名次依次為1,2,3……,n;然后當(dāng)j<n時〔假設(shè)i<=j〕,判斷Pa[i].quantity和Pa[j].quantity是否相等,如果相等,則將序號為j的名次變?yōu)榕c序號為i的員工名次一樣,j++,并且每增多一個名次一樣的員工,則將其員工名次一樣的個數(shù)信息加1,即Pa[i].count++;否則i的序號為j的下一個構(gòu)造體元素j-1,再使i和j自加1,即i++,j++,直到i<n時完畢。2.2.8輸出最終結(jié)果函數(shù)voidPrint_All(SqListPa[],intn)功能:輸出所有員工的名次、完成數(shù)量、同名次人數(shù)以及各自的工號。由于每個員工信息都包含5個數(shù)據(jù)元素,而其中有三個〔number、quantity\ftotal)都已經(jīng)由隨機(jī)函數(shù)自動生成。因此,在輸出之前,必須要給各個員工的其它兩個數(shù)據(jù)元素〔order、count)賦值。為此,我在輸出之前調(diào)用Count_order(SqListPa[],intn)函數(shù),對未完成賦值的元素賦值;然后,當(dāng)i<n時,從0號構(gòu)造體數(shù)組元素開場,先輸出員工的名次、完成產(chǎn)品的數(shù)量、同名次的人數(shù),再判斷序號為i的名次數(shù)據(jù)依次與其后的第j個名次數(shù)據(jù)元素相比較,如果不一樣,則直接輸出Pa[i].number;否則,輸出Pa[i].count個名次為Pa[i].order的工號;再使i=i+Pa[i].count-1;j=i+1;直到i>=n時,輸出完畢,程序完畢。〔注:由于voidPrint_All(SqListPa[],intn)函數(shù)中調(diào)用了Count_order(SqListPa[],intn)函數(shù),而Count_order(SqListPa[],intn)函數(shù)中又調(diào)用了intPai*u_quantity(SqListPa[],intn,int*q)排序函數(shù),故此程序中實際上包含有三個函數(shù)的嵌套調(diào)用?!?.2.9main()函數(shù)先輸出輸入職工人數(shù)信息,再調(diào)用隨機(jī)函數(shù)隨機(jī)生成職工號和職工數(shù)量信息,再初始化未生成的數(shù)據(jù)信息,接著輸出歡迎界面及功能菜單,并提示選擇功能,功能分為五個,分別是排序、查找、插入、刪除和最終結(jié)果,使用Switch(choose)分支,由于問題要求輸出最終結(jié)果,因此,在每個分支中,都有調(diào)用最終結(jié)果輸出函數(shù),輸出最終所有職工的名次、職工完成的數(shù)量、一樣名次的人數(shù)和他們對應(yīng)的工號。其中:1號菜單的功能是:先輸出排序前的工號和完成的產(chǎn)品數(shù)量,再進(jìn)展排序,再輸出排序后的職工工號和完成的產(chǎn)品數(shù)量信息,最后輸出所有的職工的最終要求的結(jié)果,由于該項菜單中先調(diào)用并執(zhí)行排序函數(shù)功能,再調(diào)用排名次函數(shù),最后執(zhí)行最終結(jié)果的輸出,而排名次函數(shù)中又調(diào)用了排序函數(shù),排序函數(shù)中有排序后的信息輸出,故1號功能會產(chǎn)生兩次排序后的信息輸出;2號菜單的功能是:先輸出職工的全部工號和全部完成的產(chǎn)品數(shù)量信息,再根據(jù)輸入的工號信息查找該職工信息,最后輸出要求的最終結(jié)果;3號菜單的功能是:先輸出職工的全部工號和全部完成的產(chǎn)品數(shù)量信息,再根據(jù)輸出的職工工號,在該位置中插入一個職工信息,然后再進(jìn)展排序,最后輸出要求的最終結(jié)果;4號菜單的功能是:先輸出職工的各部工號和全部完成的產(chǎn)品數(shù)量信息,再根據(jù)輸出的職工工號,將該職工的信息刪除,最后輸出要求的最終結(jié)果;5號菜單的功能是:輸出問題要求的職工信息;voidmain(){inti,j,n,choose;intnum;printf("pleaseinputthequantityoftheemployee:\n");scanf("%d",&n);ChushiHua(Pa,n,q);SandNumber(Pa,n,p);/*隨機(jī)賦職工工號*/SandQuantity(Pa,n,q);/*隨機(jī)賦職工完成產(chǎn)品信息*/WelcomeScreen();printf("pleasechoose(1~5):\n");scanf("%d",&choose);switch(choose){case1:Pai*u_quantity(Pa,n,q);/*降序排序后輸出工號和其完成產(chǎn)品的總數(shù)量*/Print_NumQU(Pa,n);Print_All(Pa,n);break;case2:Print_NumQU(Pa,n);printf("Pleaseinputthenumberlocatedtobesearched:");scanf("%d",&num);Search_Number(Pa,n,num);Print_All(Pa,n);/*根據(jù)給定的工號查找該職工信息*/break;case3:Print_NumQU(Pa,n);printf("Pleaseinputthenumberlocatedtobesearched:");scanf("%d",&num);n=Insert(Pa,n,num);/*在給定的職工工號位置插入一個職工信息*/Pai*u_quantity(Pa,n,q);Print_All(Pa,n);break;case4:Print_NumQU(Pa,n);printf("Pleaseinputthenumberlocatedtobedeleted:");scanf("%d",&num);n=Delete(Pa,n,q,num);/*將給定的職工工號將其信息刪除*/Print_All(Pa,n);break;case5:Print_All(Pa,n);break;default:break;}getch();}第三章程序調(diào)試3.1調(diào)試程序遇到的問題及解決通過清屏函數(shù)放在不同位置使得到不同的要求輸出的內(nèi)容,而去除不需要的內(nèi)容,利于比較功能函數(shù)運行前后的變化,再使用輸出語句輸出需要知道的信息進(jìn)展比照,然后進(jìn)展分析。1〕使用冒泡法排序測試排序函數(shù)時,排序命令沒有執(zhí)行,功能沒有實現(xiàn)〔如圖3〕。原因是:在使用冒泡法排序中,在if條件后誤加了一個〞;’,導(dǎo)致排序時,移動命令沒能執(zhí)行。過去一直以為功能沒有實現(xiàn),是由于形參和實參之間的數(shù)據(jù)傳遞的問題,但我將參數(shù)全部改為指針之后,發(fā)現(xiàn)仍然沒有響應(yīng)。長時間的查找之后,只能逐條指令進(jìn)展分析,最后欣慰地發(fā)現(xiàn),原來在if語句之后,不應(yīng)該有的〞;〞,多了起來,才恍然大悟地明白并解決了問題〔如圖4〕。2〕最終結(jié)果輸出函數(shù)輸出時,名次一樣的重復(fù)輸出〔如圖10〕。原因是:在輸出時,只考慮使一樣名次的人數(shù)自加Pa[i].count++,卻忘記了同時還要使表示輸出構(gòu)造體位置的i也要同時變化為i=i+Pa[i].count-1;在比照不同數(shù)據(jù)輸出情況之后,找到了錯誤,并改正之后,重新運行后獲得了成功〔如圖7〕。3〕測試插入函數(shù)功能時,發(fā)現(xiàn)執(zhí)行插入函數(shù)功能時,并沒有插入成功,員工人數(shù)沒有增加,但也沒有提示插入錯誤〔如圖10〕。原因是:我在插入函數(shù)中雖然使n=n+1;并返回了n的值,但沒有將職工人數(shù)的返回值重新賦給n,使n的值并沒有真正地改變,所以在輸出時,少了一個員工的信息。在比較屢次的運行輸出的情況與輸出自動生成的數(shù)據(jù)之后,發(fā)現(xiàn)插入的位置的數(shù)據(jù)有新插入的數(shù)據(jù)生成,但最后一個數(shù)據(jù)喪失,最后找到了錯誤的原因。改正并運行之后,插入功能運行獲得了成功(如圖11)。4〕測試刪除函數(shù)時,當(dāng)未查找到員工號時,輸出結(jié)果〔如圖12〕。經(jīng)查找后,原因是在輸出時員工的人數(shù)通過刪除操作帶回的返回值重新賦值,而當(dāng)未刪除的位置不存在時,刪除函數(shù)中沒有返回值,導(dǎo)致輸出是系統(tǒng)隨機(jī)的值。當(dāng)刪除位置不存在時,修改為帶回n的原值,運行成功〔如圖13〕。3.2程序調(diào)試結(jié)果3.2.1隨機(jī)生成職工號和隨機(jī)生成職工完成產(chǎn)品數(shù)量信息結(jié)果〔如圖1) 圖1,輸出隨機(jī)生成的職工號和職工完成產(chǎn)品數(shù)量3.2.2歡迎界面〔如圖2〕圖2,歡迎界面和菜單3.3.3功能1排序函數(shù)〔出現(xiàn)錯誤的如圖3,正確的如圖4〕 圖3,排序功能未實現(xiàn) 圖4,排序功能實現(xiàn)3.3.4排名次函數(shù)〔如圖5)圖5,排名次函數(shù)3.3.5輸出職工工號和完成產(chǎn)品數(shù)量函數(shù)〔如圖5〕圖5中有輸出3.3.6功能1排序函數(shù)〔如圖6〕 圖6,排序函數(shù)3.3.7功能2查找函數(shù)〔如圖7和圖8〕 圖7,未找到時的查找界面圖 圖8,查找到所給職工的界面圖3.3.8功能3插入函數(shù)〔如圖9、圖10和圖11〕圖9,插入位置錯的界面圖10,插入出錯的界面圖11插入正確的界面3.3.9功能4刪除函數(shù)〔如圖12〕圖12,刪除位置不存在時細(xì)節(jié)出錯,刪除后輸出結(jié)果 圖13,修改后,刪除結(jié)果 圖14,當(dāng)給定職工號存在時,刪除結(jié)果3.3.10功能5輸出函數(shù)〔如圖15〕 圖15,最終結(jié)果輸出函數(shù)第四章設(shè)計總結(jié)與心得兩個星期的課程設(shè)計實踐時間很快過去了,我的課程設(shè)計也終于完畢了?;貞浧疬@兩個星期的生活,還真是百感交集卻難言。準(zhǔn)確地說我是在教師宣布可以準(zhǔn)備做課程設(shè)計時,就已經(jīng)做準(zhǔn)備了。不過,當(dāng)時我以為是讓自己挑選其中的一個去做。而我是去分析了第一個。到真正開場時,我才不得不重新來分析新課題——職工工作量統(tǒng)計系統(tǒng)。剛開場時,由于連隨機(jī)函數(shù)是什么?我都還沒聽說過,剛開場還以為是隨意寫一個生成職工工號和完成產(chǎn)品數(shù)量的信息。知道隨機(jī)函數(shù)是一個系統(tǒng)函數(shù)是在一次無意中聽到同學(xué)提起,我才到網(wǎng)上查找,才明白的。在知道隨機(jī)函數(shù)是一個系統(tǒng)函數(shù)后,由于對什么是隨機(jī)函數(shù)一無所知,僅僅查資料就花了我近兩天時間,不過還是似懂非懂,只能通過模仿來調(diào)試,漸漸地才會使用它。在編寫函數(shù)的過程中,由于時間比較緊,我沒有提前設(shè)計算法,而是直接上機(jī)編寫、調(diào)試。這暴露了許多的問題:其一,是積累的知識太少,好多知識在運用的時候卻印象不深,只能停下來去查資料;其二,是對所學(xué)知識掌握不牢,編寫程序的過程中,由于沒有把握,不敢冒然寫下去,也只能去查資料確認(rèn);其三,實踐得太少,很容易發(fā)現(xiàn)的錯誤,卻在實踐中,花費了大量的時間去查找,其中這點,讓我印象尤其深刻,在編寫排序函數(shù)后進(jìn)展調(diào)試時,發(fā)現(xiàn)排序功能沒有到達(dá)目的,而在我慣性思維中,它可能是因為參數(shù)傳遞出錯,因此,盲目地將傳遞的數(shù)組參數(shù)改為指針,花費了時間不說,竟然還是沒有到達(dá)目的。從七號晚上開場查找,直到九號晚上十點多才在無意中發(fā)現(xiàn)if條件語句后,多加了一個";〞,這個發(fā)現(xiàn)真是讓我又氣又恨。要是在平時,可能這對于任意一個學(xué)習(xí)軟件的學(xué)生都知道它有錯,而我卻忽略了。這個教訓(xùn)是深刻的,它使我明白,認(rèn)真和仔細(xì)對于一個人,去做一件事來說,是多么地重要而自己是多么地粗心。其次,對于知識的理解,我發(fā)現(xiàn)自己始終停留在一知半解甚至是外表上懂,卻一無所知的境地。在函數(shù)編寫完成后,外表上看似沒有問題了,不過一調(diào)試才發(fā)現(xiàn),問題好多就都出來了。同時,我也深刻地體會到:科學(xué)是嚴(yán)密的,不容有半點地大意,一個人對工作的態(tài)度往往決定了其工作的成敗。準(zhǔn)確地說,這是我的第一次課程設(shè)計實踐。從這次課程設(shè)計中,我真正地體驗到了課程設(shè)計的過程,也真正地體驗到了程序設(shè)計的樂趣。在近半個月的程序設(shè)計和調(diào)試過程中,獲得的知識是很多的。通過此次課程設(shè)計,使我穩(wěn)固了所學(xué)的有關(guān)課程設(shè)計的知識,學(xué)會真正地去分析問題,思考問題,并且學(xué)會怎樣去思考解決問題。在設(shè)計的過程中,我曾遇到過許多的問題,但經(jīng)過反復(fù)地思考之后,終于找出了原因并使問題得以解決。這同時也暴露出了自己知識的潰乏、經(jīng)歷的缺乏。實踐出真知,這一次,真正地有了深刻的體會:不斷實踐,不斷發(fā)現(xiàn)自己的缺乏,不斷地改正,不斷地領(lǐng)悟,不斷地總結(jié),是獲取真知的必然選擇。本次課程設(shè)計即將完畢了,由于我們小組事先的設(shè)計分工沒有做好,我只能獨立地完本錢次設(shè)計任務(wù),這也使我學(xué)會了獨立思考。。錯過了交流思想的時機(jī),這是個遺憾。不過同時,我也明白了,做課程設(shè)計之前的準(zhǔn)備工作是多么地重要,而我此次正是像經(jīng)歷了一場"無頭仗〞??傊?,此次課程設(shè)計實踐讓我收獲很多。完成此次課程設(shè)計后,讓我產(chǎn)生了很強(qiáng)的成就感,充滿了快樂感,同時也讓我對程序設(shè)計產(chǎn)生了喜愛。第五章參考文獻(xiàn)[1]李素假設(shè)."數(shù)據(jù)構(gòu)造".:化學(xué)工業(yè)出版社,2009.[2]朱蓉,"數(shù)據(jù)構(gòu)造實驗指導(dǎo)書"[3]嚴(yán)蔚敏吳偉民,.數(shù)據(jù)構(gòu)造(C語言版),1999,清華大學(xué)出版社;附錄程序代碼:#include<stdio.h>#include<stdlib.h>#include<time.h>/*使用當(dāng)前時鐘做種子*/#defineMA*100typedefstruct{intorder;intcount;intftotal[5];intquantity;intnumber;}SqList,*Sq;SqListPa[MA*]={0};intNUM[MA*]={0},QU[MA*]={0};/*NUM[]數(shù)組用來保存隨機(jī)生成的職工號,QU[]用來保存職工完成總數(shù)量的次數(shù)*/int*p=NUM,*q=QU;voidSandNumber(SqListPa[],intn,int*p)/*隨機(jī)產(chǎn)生職工的工號并輸出其工號信息*/{inti,j,m;srand((unsigned)time(NULL));/*設(shè)置隨機(jī)數(shù)種子*/for(i=0;i<n;i++){m=rand()%100;/*產(chǎn)生工號互不一樣的不為0的兩位數(shù)工號*/while(m==0)m=rand()%100;*(p+i)=m;if(i>0)/*如果產(chǎn)生的工號一樣,則重新生成新的隨機(jī)數(shù)直到不同為止作為職工號*/{for(j=0;j<i;j++)if(*(p+i)==*(p+j)){m=rand()%100;while(m==0)m=rand()%100;*(p+i)=m;}}}for(i=0;i<n;i++){Pa[i].number=*(p+i);printf("Pa[%d].number=%2d\n",i,Pa[i].number);}printf("\n");}voidSandQuantity(SqListPa[],intn,int*q)/*隨機(jī)生成職工各次完成的工作量,并累計各職工的總完成產(chǎn)品數(shù)量*/{inti,j,k;srand((unsigned)time(NULL));/*設(shè)置隨機(jī)數(shù)種子*/for(i=0;i<n;i++){*(q+i)=rand()%10;if(*(q+i)>5) /*各職工完成的總次數(shù)不大于5*/*(q+i)=rand()%10;}for(j=0;j<n;j++){for(i=0;i<*(q+j);i++){Pa[j].ftotal[i]=rand()%100;printf("thePa[%d].ftotal[%d]=%3d\n",j,i,Pa[j].ftotal[i]);Pa[j].quantity+=Pa[j].ftotal[i];/*累計各職工屢次完成的產(chǎn)品數(shù)量*/}printf("The%dthquantityoftheemployeeis%d\n",(j+1),Pa[j].quantity);printf("\n");}printf("\n");}intSearch_Number(SqListPa[],intn,intnum) /*根據(jù)給定的職工號進(jìn)展查找函數(shù)*/{inti=0;while(i<n){if(Pa[i].number!=num)i++;else{printf("theemployeeinformationtosearchis:\n");printf("%d\t%d\t%d\t%d\t",Pa[i].order,Pa[i].quantity,Pa[i].count,Pa[i].number);printf("\n");return(i);}}printf("theemployeehasn'tbeenfound!!!\n");/*i大于n時表示給定的職工信息不存在*/return(NULL);}intDelete(SqListPa[],intn,int*q,intnum)/*將給定工號為num的職工信息刪除,原始值在QU[]中不改變*/{inti=0,j,k;SqListstr;ints;s=Search_Number(Pa,n,num);while(s!=NULL&&i<n){if(Pa[i].number!=Pa[s].number)i++;else{str.order=Pa[i].order;str.number=Pa[i].number;for(j=0;j<*(q+i);j++)str.ftotal[j]=Pa[i].ftotal[j];str.quantity=Pa[i].quantity;str.count=Pa[i].count;for(k=s;k<n;k++){Pa[k].order=Pa[k+1].order;/*將要刪除的數(shù)據(jù)后的數(shù)據(jù)全部前移*/Pa[k].number=Pa[k+1].number;for(j=0;j<*(q+i);j++)Pa[j].ftotal[j]=Pa[k].ftotal[j];Pa[k].quantity=Pa[k+1].quantity;Pa[k].count=Pa[k+1].count;}n-=1;printf("theinformationdeletecdis:\n");printf("%d\t%d\t%d\t%d\n",str.order,str.quantity,str.count,str.number);for(i=0;i<*(q+s);i++)printf("%d\t",str.ftotal[i]);printf("\n");return(n);}}printf("Deleteiswrong!!!\n");Return(n);printf("\n");}intInsert(SqListPa[],intn,intnum)/*在工號為num的位置插入一個員工信息*/{inti,j,s,total,k;s=Search_Number(Pa,n,num);srand((unsigned)time(NULL));if(s<0||s==NULL){printf("insertwrong!!!\n");return(n);}else{for(i=n-1;i>=s;i--)/*先將第s個構(gòu)造體位置騰出*/{Pa[i+1].order=Pa[i].order;Pa[i+1].number=Pa[i].number;for(j=0;j<*(q+s);j++)Pa[i+1].ftotal[j]=Pa[i].ftotal[j];Pa[i+1].quantity=Pa[i].quantity;Pa[i+1].count=Pa[i].count;}printf("pleaseinputthetotal(i<=5):");scanf("%d",&total);if(total>5){printf("inputwrong!!!\n");printf("pleaseinputthetotal(i<=5):");scanf("%d",&total);}Pa[s].quantity=0;Pa[s].order=1;Pa[s].count=0;for(i=0;i<total;i++){Pa[s].ftotal[i]=rand()%100;Pa[s].quantity+=Pa[s].ftotal[i];}k=rand()%100;for(i=0;i<n;i++)while(k==Pa[i].number)k=rand()%100;Pa[s].number=k;n=n+1;return(n);}}intPai*u_quantity(SqListPa[],intn,int*q)/*按完成的產(chǎn)品數(shù)量排序*/{inti,j,k;SqListarr;intstr;for(j=0;j<n;j++)for(i=0;i<n-j;i++)if(Pa[i].quantity<Pa[i+1].quantity){str=*(q+i);*(q+i)=*(q+i+1);*(q+i+1)=str;arr.quantity=Pa[i].quantity;Pa[i].quantity=Pa[i+1].quantity;Pa[i+1].quantity=arr.quantity;arr.order=Pa[i].order;Pa[i].order=Pa[i+1].order;Pa[i+1].order=arr.order;arr.count=Pa[i].count;Pa[i].count=Pa[i+1].count;Pa[i+1].count=arr.count;for(k=0;k<*(q+j);k++){str=*(q+i);*(q+i)=*(q+i+1);*(q+i+1)=str;arr.ftotal[k]=Pa[i].ftotal[k];Pa[i].ftotal[k]=Pa[i+1].ftotal[k];Pa[i+1].ftotal[k]=arr.ftotal[k];}arr.number=Pa[i].number;Pa[i].number=Pa[i+1].number;Pa[i+1].number=arr.number;}printf("\n");printf("AfterPai*u,thequantityis:\n");for(k=0;k<n;k++)printf("%4d\t",Pa[k].quantity);printf("\n");}voidCount_order(SqListPa[],intn)/*按職工完成的總數(shù)量統(tǒng)計名次*/{inti,j,k;Pai*u_quantity(Pa,n,q);/*先按完成的產(chǎn)品總數(shù)量排序*/for(i=0,j=1;i<n;i++)/*先將各員工的名次按從大到小順序各自加1初始為它們各自的名次*/{Pa[i].order=i+1;Pa[i].count=1;}for(i=0,j=1;i<n;i++){while(j<n&&Pa[j].quantity==Pa[i].quantity){Pa[j].order=Pa[i].order;Pa[i].count++;j++;}i=j-1;j++;}}voidPrint_NumQU(SqListPa[],intn)/*輸出職工工號和完成的總數(shù)量*/{inti;printf("number:\n");for(i=0;i<n;i++)printf("%-d\t",Pa[i].number);printf("\n");printf("quantity:\n");for(i=0;i<n;i++)printf("%-4d\t",Pa[i].quantity);printf("\n");}voidPrintf_break()//*回車清屏函數(shù)*/{intenter;enter=getchar();if(enter=='\n')clrscr();}voidChushiHua(SqListPa[],intn,int*q)/*初始化*/{inti,j;for(i=0;i<n;i++){Pa[i].order=1;Pa[i].count=1;for(j=0;j<*(q+i);j++)Pa[i].ftotal[j]=0;}}voidPrint_All(SqListPa[],intn)/*最終輸出結(jié)果函數(shù)*/{inti,j=1,k;Count_order(Pa,n);/*先進(jìn)展排名次*/printf("Order\tquantity\tcount\tnumber\t\n");for(i=0;i<n;i++){printf("%5d\t%8d\t%5d\t",Pa[i].order,Pa[i].quantity,Pa[i].count);if(Pa[j].order!=Pa[i].order){printf("%5d\t",Pa[i].number);printf("\n");j++;}while(Pa[j].order==Pa[i].order)/*輸知名次一樣的職工號*/{for(k=0;k<Pa[i].count;k++,j++)printf("%5d\t",Pa[j-1].number);i=i+Pa[i].count-1;j=i+1;printf("\n");}printf("\n");}}voidWelcomeScreen(){printf("*****************************************************************\n");printf("************\n");printf("*****Welcometotheworkerworkloadstatisticssystem*****\n");printf("********\n");printf("***Wangzhicheng***\n");printf("****\n");printf("**\n");printf("\n");printf("\n");printf("1.rankastheproductnumberfinished\n");printf("2.searchasthetheemployeenumber\n");printf("3.insertbeforethelocated\n");printf("4.deletetheinformationhavinggivven\n");printf("5.Outputstatisticalinformation\n");printf("6.E*itthesystem\n");printf("**\n");printf("****\n");printf("******\n");printf("********\n");printf("*****************************************************************\n"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019粵教版 高中美術(shù) 選擇性必修2 中國書畫 《第二單元 中國書法》大單元整體教學(xué)設(shè)計2020課標(biāo)
- 2024屆河北省邯鄲市六校第一次教學(xué)質(zhì)量檢測試題(合肥一模)數(shù)學(xué)試題
- 茶樓合伙協(xié)議書范本
- 北京統(tǒng)一租賃房屋租賃合同
- 童謠兒歌我來讀活動
- 腎臟移植手術(shù)
- 山東省濱州市2024-2025學(xué)年八年級上學(xué)期期中考試語文試題(含答案)
- 湖南省益陽市赫山區(qū)箴言龍光橋?qū)W校2024-2025學(xué)年一年級上學(xué)期期中考試數(shù)學(xué)試題(無答案)
- 【初中地理】影響氣候的因素課件-2024-2025學(xué)年湘教版地理七年級上冊
- 電影機(jī)械行業(yè)相關(guān)投資計劃提議
- 《中華人民共和國道路交通安全法實施條例》知識專題培訓(xùn)
- 2024-2030年中國戶外電源行業(yè)市場趨勢調(diào)查及需求場景趨勢分析報告
- 《淘氣的一天》(教案)-2024-2025學(xué)年一年級上冊數(shù)學(xué)北師大版
- 職業(yè)健康安全培訓(xùn)課件(共32張課件)
- 人教新目標(biāo)八年級英語上冊《任務(wù)型閱讀》專項練習(xí)題(含答案)
- XXX200MW光伏發(fā)電項目施工組織設(shè)計
- 2024年感動中國年度人物介紹頒獎典禮
- 口腔病例匯報模板
- 2024年軍隊文職人員招聘考試公共科目真題
- GB 44246-2024家用和類似用途電器、體育用品的電氣部分及電玩具安全技術(shù)規(guī)范
- 廣鐵機(jī)考題庫
評論
0/150
提交評論