


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、JINGCHU UNIVERSITY OF TECHNOLOGY課程設計成果學院:計算機工程班級:11軟件(本)三班姓名:王志成學號:06設計地點:_A5-101完成日期:2013年 01月12日指導老師評語:成績(五級記分制):教師簽名:目錄摘 要 1第一章 項目概述 21.1 問題描述 21.2 問題分析 2第二章 項目設計 22.1 系統程序的功能示意圖如下: 32.2 功能函數設計思想及說明 42.2.1 隨機生成職工號函數 42.2.2 隨機生成職工完成的產品數量 52.2.3 排序函數 62.2.4 查找函數 72.2.5 插入函數 72.2.6 刪除函數 92.2.7 按職工完成
2、的產品數量排名次函數 92.2.8 輸出最終結果函數 9229 main()函數 9第三章 程序調試 113.1 調試程序遇到的問題及解決 113.2 程序調試結果 123.2.1 隨機生成職工號和隨機生成職工完成產品數量信息結果(如圖1) 123.2.2 歡迎界面(如圖 2) 123.3.3 功能 1排序函數(出現錯誤的如圖 3,正確的如圖 4) 133.3.4 排名次函數(如圖 5) 143.3.5 輸出職工工號和完成產品數量函數(如圖 5) 143.3.6 功能 1 排序函數(如圖 6) 143.3.7 功能 2 查找函數(如圖 7 和圖 8) 153.3.8 功能 3插入函數(如圖 9
3、、圖 10和圖 11) 153.3.9 功能 4 刪除函數(如圖 12) 163.3.10 功能 5 輸出函數(如圖 15) 18第四章 設計總結與心得 18第五章 參考文獻 19附 錄 20摘要數據結構主要是一門研究非數值計算的程序設計問題中的計算機操作對象 以及它們之間的關系和操作等的學科。 數據結構在計算機科學與技術中是一門綜 合性的專業基礎課, 其研究不僅涉及到計算機硬件的研究圍, 而且和計算機軟件 的研究有著更密切的關系。 不論是編譯程序過程還是操作系統都涉及到數據元素 在存儲器中的分配問題。 在計算機科學與技術中, 數據結構不僅是一般程序性的 基礎,而且也是其他系統程序和大型程序的
4、重要基礎。在社會生產日益群體合作化, 生產模式日益企業化的今天, 企業的管理工作 越來越受到企業經營者的重視, 而在員工的流動、 管理和工作報酬的分配中, 職 工的報酬是根據員工的工作量進行分配的。 因此,職工的工作量, 就成了企業經 營者關注的信息。然而,對于現在的企業來說,人員數量多,工作量又復雜,通過普通的人工 方式已經難以滿足現代化企業的核算要求。怎樣進行大量員工的工作量的管理工作呢?設計一個職工工作量統計系統, 就能夠滿足大多數現代化企業的需求了。課程設計的目的和意義是: 通過課程設計的實踐環節的教學, 可以加深對課 堂所學基礎知識的掌握與理解, 提高所學容的綜合運用能力; 同時也可
5、以通過查 詢相關資料,培養學生自學能力、接受新知識的能力,提高學習興趣;增強學生 程序設計能力,掌握編程技巧,并可培養學生實際上機調試程序的能力。 “理論 與實踐 ”相結合,使學生得到很好的鍛煉,為以后學習、工作打下堅實的基礎。本次職工工作量統計系統是通過 C 語言來設計的,也是由本人獨立完成的。關鍵字:數據結構、課程設計、職工工作量第一章 項目概述1.1 問題描述問題描述及分析 : 采用隨機函數產生職工的工號和他所完成產品個數的數據信息,對 同一職工多次完成的產品個數進行累計,最后按以下格式輸出;職工完成產品數量的名次、 該名次每位職工完成的產品數量、職工人數和職工號要求: 1)輸出統計結果
6、,如下所示:Order quantity375256200countnumber1039205212)每一個函數要有必要的注釋,在課程設計論文中有流程圖。1.2 問題分析問題中包含有職工工號、 職工多次完成的產品數量、職工完成的產品總數量、 按完成產品數量個數的名次、職工相同名次的人數。因此,設置結構體為:typedef structint order;int count;int ftotal5;int quantity;int number;SqList ;SqList PaMAX=0; 職工的信息應包含排序、查找、插入、刪除等功能;每個職工都包含以上結構體中的數據, 因此, 該問題的設計思
7、想是: 采用結構體數組來存儲職工信息, 然后對各職工的信息進行排 序、查找、插入、刪除等操作。第二章 項目設計系統在 win-TC 中運行,由于 win-TC 不支持中文輸出功能,故采用純英文進行設計編寫。這樣能作出美觀的界面,并且制作出詳細的菜單。2.1系統程序的功能示意圖如下:示意圖1,系統函數功能示意圖2.2功能函數設計思想及說明隨機生成職工號函數void SandNumber(SqList Pa,int n,int *p)先定義了全局數組 NUMMAX=0 和指針*p,并且讓指針指向該數組,用來保存職工 的工號信息,再使用系統函數srand()、rand()生成n個員工的工號,工號為不
8、為零的兩位數, 且這n個員工的工號各不相同。在生成完后,再依次輸出這n個員工的工號,其圖示如下:示意圖2,隨機生成職工號函數示意圖222隨機生成職工完成的產品數量void SandQuantity(SqList Pa,int n,int *q)先定義了全局數組 QUMAX=0和指針*q,并且讓指針指向該數組,用來保存職工完成產品的次數信息,再使用系統函數srand()、rand()生成n個員工的數量信息 Pai.quantity ,其中該信息為各個員工(最多有 5個小于100)的信息Pai.ftotalj之和,在生成完后,再 依次輸出這n個員工的數量信息,其圖示如下:示意圖3,隨機生成職工數據
9、信息函數示意圖223排序函數int Paixu_quantity(SqList Pa,int n,int *q)使用冒泡法進行排序,先定義一個結構體arr,兩個變量i和j,其中j用來計算已經完成的職工個數,i表示尚未比較個數,從 j=0開始,當j<n時,執行循環,從i=0開始,比較一次后,使i+,比較(n-j)次,當i>(n-j)時,第一輪比較結束,使j+,進入下一輪,當j>=n時,表示第n輪比較結束,此時排序完成。函數示意圖(3)如下:示意圖4,排序功能函數示意圖224查找函數int Search_Number(SqList Pa,int n,int num),根據給定的職
10、工號查找該職工的信息。從序號為0的結構體數組開始訪問,如果該結構體數組中元素的工號項Pai.number與num不等,則使i自加1,指向下一個結構體數組,訪問該數組元素,直到該數組元素的 工號等于num時,輸出該結構體數組元素的元素,并返回該數組元素的位置i,如果i>n時還未找到要查找的元素,則表示該元素不存在,輸出" the employee hasn't been found!n ” 并返回空。其示意圖如下:示意圖5,查找函數功能示意圖插入函數int In sert(SqList Pa,i nt n ,i nt num)要插入一個員工的信息,就得先得到員工的位置,先
11、調用查找函數,將給定員工工號 所在的位置當作查找函數的返回值返回給s,s=Search_Number(Pa ,n,nu m);得到要插入的位置,再將Pas所在的結構體中的數據元素位置全部空出,即當i>=s時,將Pai中的數據全部對下:示意圖6,插入函數示意圖2.2.6 刪除函數int Delete(SqList Pa,int n,int *q,int num 要刪除一個員工信息, 得先知道員工的位置, 先調用查找函數根據所給的員工的工號 查找到該員工所在的位置,并將其返回值賦給s,即s=Search_Number(Pa,n,num);得到要刪除的位置。 如果 s=NULL 或 i>
12、n 時,則輸出” Delete is wrong!n ”;否則,如果當 Pai=Pas 時,先將Pai位置的數據信息保存在結構體str中,再將Pai+1位置的數據信息前移到 Pai位置中,循環直到 i>n 時,將結構體的個數減 1,最后輸出被刪除的信息,程序執行結束。2.2.7 按職工完成的產品數量排名次函數void Count_order(SqList Pa,int n) 功能:給各職工排名次和賦 count數據項的值。要給職工按完成的產品數量排名次, 則要求先對各職工的信息進行排完成產品數量排序, 即在 排名次函數中又調用了按職工完成產品數量排序函數進行排序。排序完成后,先對這n個員
13、工按序號排名次,即Pa0,Pai,Pan-1的名次依次為1, 2, 3,n;然后當j<n時(假 設 i<=j ),判斷 Pai.quantity 和 Paj.quantity 是否相等, 如果相等,則將序號為 j 的名次變為 與序號為i的員工名次相同,j+,并且每增多一個名次相同的員工,則將其員工名次相同的 個數信息加1,即Pai.count+ ;否則i的序號為j的下一個結構體元素j-1,再使i和j自加1, 即 i+,j+, 直到 i<n 時結束。2.2.8 輸出最終結果函數void Print_All(SqList Pa,int n)功能: 輸出所有員工的名次、完成數量、
14、同名次人數以及各自的工號。由于每個員工信息都包含 5 個數據元素,而其中有三個(number、quantityftotal) 都已經由隨機函數自動生成。因此,在輸出之前,必須要給各個員工的其它兩個數據元素(order、count)賦值。為此,我在輸出之前調用 Count_order(SqList Pa,int n) 函數,對未完成賦值的元素賦值; 然后,當 i<n 時,從 0號結構體數組元素開始,先輸出員工的名次、完成產品的數量、同名 次的人數,再判斷序號為 i 的名次數據依次與其后的第 j 個名次數據元素相比較,如果不相 同,則直接輸出 Pai.number; 否則,輸出 Pai.co
15、unt 個名次為 Pai.order 的工號;再使 i=i+Pai.count-1;j=i+1; 直到 i>=n 時,輸出完畢,程序結束。 (注:由于 void Print_All(SqList Pa,int n)函數中調用了 Count_order(SqList Pa,int n) 函數,而 Count_order(SqList Pa,int n) 函數中又調用了 int Paixu_quantity(SqList Pa,int n,int *q) 排序函數,故此程序中實際上包含 有三個函數的嵌套調用。 )2.2.9 main() 函數先輸出輸入職工人數信息, 再調用隨機函數隨機生成職
16、工號和職工數量信息, 再初始化 未生成的數據信息, 接著輸出歡迎界面及功能菜單,并提示選擇功能, 功能分為五個, 分別 是排序、查找、插入、刪除和最終結果,使用Switch(choose)分支,由于問題要求輸出最終結果,因此,在每個分支中,都有調用最終結果輸出函數,輸出最終所有職工的名次、職工 完成的數量、相同名次的人數和他們對應的工號。其中:1 號菜單的功能是:先輸出排序前的工號和完成的產品數量,再進行排序,再輸出排序后的 職工工號和完成的產品數量信息, 最后輸出所有的職工的最終要求的結果, 由于該項菜單中 先調用并執行排序函數功能, 再調用排名次函數, 最后執行最終結果的輸出, 而排名次函
17、數 中又調用了排序函數, 排序函數中有排序后的信息輸出, 故 1 號功能會產生兩次排序后的信 息輸出;2 號菜單的功能是:先輸出職工的全部工號和全部完成的產品數量信息,再根據輸入的工號 信息查找該職工信息,最后輸出要求的最終結果;3 號菜單的功能是:先輸出職工的全部工號和全部完成的產品數量信息,再根據輸出的職工 工號,在該位置中插入一個職工信息,然后再進行排序,最后輸出要求的最終結果;4 號菜單的功能是:先輸出職工的各部工號和全部完成的產品數量信息,再根據輸出的職工 工號,將該職工的信息刪除,最后輸出要求的最終結果;5 號菜單的功能是:輸出問題要求的職工信息;void main()int i,
18、j,n,choose;int num;printf("please input the quantity of the employee:n");scanf("%d",&n);ChushiHua(Pa,n,q);SandNumber(Pa,n,p); /* 隨機賦職工工號 */SandQuantity(Pa,n,q);/* 隨機賦職工完成產品信息 */WelcomeScreen();printf("please choose(15):n");scanf("%d",&choose);switch(ch
19、oose)case 1:Paixu_quantity(Pa,n,q); /* 降序排序后輸出工號和其完成產品的總 數量 */Print_NumQU(Pa,n);Print_All(Pa,n);break;case 2:Print_NumQU(Pa,n);printf("Please input the number located to be searched:");scanf("%d",&num);Search_Number(Pa,n,num);Print_All(Pa,n);/* 根據給定的工號查找該職工信息 */break;case 3:P
20、rint_NumQU(Pa,n);printf("Please input the number located to be searched:");scanf("%d",&num);n=Insert(Pa,n,num);/* 在給定的職工工號位置插入一個職工信息*/Paixu_quantity(Pa,n,q);Print_All(Pa,n);break;case 4:Print_NumQU(Pa,n);printf("Please input the number located to be deleted:");scanf
21、("%d",&num);n=Delete(Pa,n,q,num);/* 將給定的職工工號將其信息刪除 */Print_All(Pa,n);break;case 5:Print_All(Pa,n);break;default:break;getch();第三章 程序調試3.1 調試程序遇到的問題及解決通過清屏函數放在不同位置使得到不同的要求輸出的容, 而清除不需要的容, 利于比較 功能函數運行前后的變化,再使用輸出語句輸出需要知道的信息進行對比,然后進行分析。1)使用冒泡法排序測試排序函數時, 排序命令沒有執行, 功能沒有實現 (如圖 3)。原因是: 在使用冒泡法排序
22、中,在 if 條件后誤加了一個” ; ',導致排序時,移動命令沒能執行。過去 一直以為功能沒有實現, 是由于形參和實參之間的數據傳遞的問題, 但我將參數全部改為指 針之后, 發現仍然沒有響應。 長時間的查找之后, 只能逐條指令進行分析, 最后欣慰地發現, 原來在 if 語句之后, 不應該有的” ;”,多了起來, 才恍然大悟地明白并解決了問題 (如圖 4)。2)最終結果輸出函數輸出時,名次相同的重復輸出(如圖10)。原因是:在輸出時,只考慮使相同名次的人數自加 Pai.count+ ,卻忘記了同時還要使表示輸出結構體位置的 i 也要 同時變化為 i=i+Pai.count-1; 在對比不
23、同數據輸出情況之后,找到了錯誤,并改正之后,重 新運行后獲得了成功(如圖 7)。3)測試插入函數功能時, 發現執行插入函數功能時,并沒有插入成功, 員工人數沒有增加, 但也沒有提示插入錯誤 (如圖10)。原因是:我在插入函數中雖然使 n=n+1 ;并返回了 n的值, 但沒有將職工人數的返回值重新賦給n,使n的值并沒有真正地改變,所以在輸出時,少了一個員工的信息。 在比較多次的運行輸出的情況與輸出自動生成的數據之后, 發現插入的位 置的數據有新插入的數據生成, 但最后一個數據丟失, 最后找到了錯誤的原因。 改正并運行 之后,插入功能運行獲得了成功 (如圖 11)。4)測試刪除函數時,當未查找到員
24、工號時,輸出結果(如圖12)。經查找后,原因是在輸出時員工的人數通過刪除操作帶回的返回值重新賦值,而當未刪除的位置不存在時, 刪除函數中沒有返回值,導致輸出是系統隨機的值。當刪除位置不存在時,修改為帶回n的原值,運行成功(如圖 13)。3.2程序調試結果321隨機生成職工號和隨機生成職工完成產品數量信息結 果(如圖1)匚f G I tCife 適 * 1 - ex ep lease Ln put tineof I,he enplD vee =Pa F A 1 n nuiinh*!* =4APa EX 1 - nuRbei" 1Pa. L I* J _ nLLimbFM' =1
25、14Pa【3 J .niumbr -50Pa L<1J Bimunboi*_llTheIt;li qumn七工七乎 oft lieB1-S-Bt JitPafi .ftocair0) =56The2 七 Hi quLMn 七 1_七 ¥ dFtllBo nplois£QtlieFa 2 nftotciUBJ-21t hePa L2 J.ftoita 丄 Li. J =Q4thePa 2 J .f total E21-55t hoPa2 Kftotaira j =291 hR3th quantity nfrheRnp InnftRis194llie4tii qumn七工
26、七乎 o£thee mpXoeei-E-UtliaPar4>ftotalI0J55I hf?5th quant:ity ofi=h<?flop Inyef?1希55圖1,輸出隨機生成的職工號和職工完成產品數量歡迎界面(如圖 2)圖2,歡迎界面和菜單333功能1排序函數(出現錯誤的如圖 3,正確的如圖4)10GO042quantity:G350193125AftepPa;"”thequant七yis:0193350125nunberIS846021V335U12bRfcerPaixuthequantityis:0350193125Order-ijUctlkLlii
27、/CUUJIt101235013193141251G: VC語 a *1 ft9. exeBkFuuts Pdilxu,the qudint;lty Is = numherinuntober1860842圖3,排序功能未實現圖4,排序功能實現x'334排名次函數(如圖 5)c" fr: 1(?為言*1 99- eze3 insert before the located4. de lets tlie Information having gluuen S - Output e-itat 土檔it LcslI i.n£oi«iiiat7 xon 6.Exit
28、 the system«4WMM-K M4 _M_M-WunboF?&72uant it y : 13b93122rtcr191Orderraixu ” flic1361628932611 Xqunntity is =122 &894?2丄臨93圖5,排名次函數輸出職工工號和完成產品數量函數(如圖 5)圖5中有輸出功能1排序函數(如圖6)| G: £語言如1 99_ exe34. 2513quain t it y 2752631315?87839480AFtrer 27GOrilei :1Fixuthe qfuntity is: 3$313190275342
29、632513113985397S&403S8(h'rier1count1punihe r34226312531311134901553能2查找函數(如圖7和圖8)圖7,未找到時的查找界面圖圖8,查找到所給職工的界面圖功能3插入函數(如圖 9、圖10和圖11)圖9,插入位置錯的界面7575823?to bethe number located information is:1陸the=5:27S旺1726F V*1 22 4-5 6 e£et 3f 2 wplease choased*);3number:35?1 quant ity:23&am
30、p;161Flease input tire 號 upLoye耳 1239please in putPalxu,the quantity is: 172172 KIauAncicvcount23t11722172116117810178nunhei*3575757191e圖10,插入出錯的界面圖11插入正確的界面339功能4刪除函數(如圖12)0、G: VC'S- a 1-|8 O 8 fl- 88 uu 8 0 8 A S8 H 8s fl 8 uu 8 o 8 fl- 8 s H圖12,刪除位置不存在時細節出錯,刪除后輸出結果頁G:垃語言r佃9 exeplease choDsed*
31、):AnuLmbep:427959es38quant ityi6S817fi3&?Plsasein putthe numberlocatedto be deleted = 100the enplo ueehasnJ t beenfounif«Deleteis wpong! ? ?After :Paixu, the quancitv1 is:1?66a3687Ot'derquant itycountnumber11761sa2601423361SR481?95?138圖13,修改后,刪除結果圖14,當給定職工號存在時,刪除結果功能5輸出函數(如圖15)圖15,最終結果輸
32、出函數第四章設計總結與心得兩個星期的課程設計實踐時間很快過去了,我的課程設計也終于結束了。回憶起這兩個星期的生活,還真是百感交集卻難言。準確地說我是在老師宣布可以準備做課程設計時,就已經做準備了。 不過,當時我以 為是讓自己挑選其中的一個去做。 而我是去分析了第一個。 到真正開始時, 我才不得不重新 來分析新課題職工工作量統計系統。剛開始時, 由于連隨機函數是什么?我都還沒聽說過, 剛開始還以為是隨意寫一個生 成職工工號和完成產品數量的信息。 知道隨機函數是一個系統函數是在一次無意中聽到同學 提起, 我才到網上查找, 才明白的。 在知道隨機函數是一個系統函數后,由于對什么是隨機 函數一無所知,
33、 僅僅查資料就花了我近兩天時間, 不過還是似懂非懂, 只能通過模仿來調試, 漸漸地才會使用它。在編寫函數的過程中,由于時間比較緊,我沒有提前設計算法,而是直接上機編寫、 調試。這暴露了許多的問題: 其一, 是積累的知識太少, 好多知識在運用的時候卻印象不深, 只能停下來去查資料;其二,是對所學知識掌握不牢,編寫程序的過程中,由于沒有把握, 不敢冒然寫下去,也只能去查資料確認;其三,實踐得太少,很容易發現的錯誤,卻在實踐 中,花費了大量的時間去查找, 其中這點,讓我印象尤其深刻,在編寫排序函數后進行調試 時,發現排序功能沒有達到目的,而在我慣性思維中,它可能是因為參數傳遞出錯,因此, 盲目地將傳
34、遞的數組參數改為指針, 花費了時間不說, 竟然還是沒有達到目的。 從七號晚上 開始查找,直到九號晚上十點多才在無意中發現 if 條件語句后,多加了一個“; ”,這個發 現真是讓我又氣又恨。 要是在平時, 可能這對于任意一個學習軟件的學生都知道它有錯, 而 我卻忽略了。這個教訓是深刻的,它使我明白,認真和仔細對于一個人,去做一件事來說, 是多么地重要而自己是多么地粗心。 其次, 對于知識的理解, 我發現自己始終停留在一知半 解甚至是表面上懂, 卻一無所知的境地。 在函數編寫完成后, 表面上看似沒有問題了, 不過 一調試才發現,問題好多就都出來了。同時,我也深刻地體會到:科學是嚴密的,不容有半點地
35、大意,一個人對工作的態度 往往決定了其工作的成敗。準確地說,這是我的第一次課程設計實踐。從這次課程設計中,我真正地體驗到了 課程設計的過程, 也真正地體驗到了程序設計的樂趣。 在近半個月的程序設計和調試過程中, 獲得的知識是很多的。通過此次課程設計,使我鞏固了所學的有關課程設計的知識,學會真正地去分析問 題,思考問題,并且學會怎樣去思考解決問題。在設計的過程中,我曾遇到過許多的問題, 但經過反復地思考之后, 終于找出了原因并使問題得以解決。 這同時也暴露出了自己知識的 潰乏、經驗的不足。實踐出真知,這一次,真正地有了深刻的體會:不斷實踐,不斷發現自 己的不足,不斷地改正,不斷地領悟,不斷地總結
36、,是獲取真知的必然選擇。本次課程設計即將結束了,由于我們小組事先的設計分工沒有做好,我只能獨立地 完成本次設計任務,這也使我學會了獨立思考。 。錯過了交流思想的機會,這是個遺憾。不 過同時, 我也明白了, 做課程設計之前的準備工作是多么地重要, 而我此次正是像經歷了一 場“無頭仗” 。總之, 此次課程設計實踐讓我收獲很多。 完成此次課程設計后, 讓我產生了很強的成 就感,充滿了快樂感,同時也讓我對程序設計產生了喜愛。第五章 參考文獻1 素若.數據結構 .:化學工業, 2009.2 朱蓉,數據結構實驗指導書3 嚴蔚敏 吳偉民,數據結構(C語言版),1999,清華大學;附錄程序代碼:#includ
37、e<stdio.h>#include <stdlib.h>#include <time.h>/* 使用當前時鐘做種子 */#define MAX 100typedef structint order;int count;int ftotal5;int quantity;int number;SqList,*Sq;SqList PaMAX=0;int NUMMAX=0,QUMAX=0; /*NUM 數組用來保存隨機生成的職工號, QU 用來 保存職工完成總數量的次數 */int *p=NUM,*q=QU;void SandNumber(SqList Pa,in
38、t n,int *p) /* 隨機產生職工的工號并輸出其工號信息 */ int i,j,m;srand(unsigned)time(NULL); /* 設置隨機數種子 */ for(i=0;i<n;i+) m=rand()%100;/*產生工號互不相同的不為 0 的兩位數工號 */while(m=0)m=rand()%100; *(p+i)=m;if(i>0) /* 如果產生的工號相同, 則重新生成新的隨機數直到不同為止作為職工號 */ for(j=0;j<i;j+) if(*(p+i)=*(p+j) m=rand()%100; while(m=0) m=rand()%100
39、; *(p+i)=m; for(i=0;i<n;i+) Pai.number=*(p+i); printf("Pa%d.number=%2dn",i,Pai.number); printf("n");void SandQuantity(SqList Pa,int n,int *q) /* 隨機生成職工各次完成的工作量,并累計各職工的總完成產品數量 */int i,j,k;srand(unsigned)time(NULL); /* 設置隨機數種子 */for(i=0;i<n;i+)*(q+i)=rand()%10;if(*(q+i)>5)
40、 /* 各職工完成的總次數不大于 5*/ *(q+i)=rand()%10; for(j=0;j<n;j+) for(i=0;i<*(q+j);i+)Paj.ftotali=rand()%100;printf("the Pa%d.ftotal%d=%3dn",j,i,Paj.ftotali);Paj.quantity+=Paj.ftotali; /* 累計各職工多次完成的產品數量 */ printf("The %dth quantity of the employee is %dn",(j+1),Paj.quantity); printf(&
41、quot;n");printf("n");int Search_Number(SqList Pa,int n,int num) /* 根據給定的職工號進行查找函數 */ int i=0;while(i<n)if(Pai.number!=num)i+; elseprintf("the employee information to search is:n");printf("%dt%dt%dt%dt",Pai.order,Pai.quantity,Pai.count,Pai.number); printf("n
42、");return(i);printf("the employee hasn't been found!n"); /*i 大于 n 時表示給定的職工信息不存在 */ return(NULL);int Delete(SqList Pa,int n,int *q,int num) /*將給定工號為 num 的職工信息刪除,原始值在QU 中不改變 */int i=0,j,k;SqList str;int s;s=Search_Number(Pa,n,num);while(s!=NULL&&i<n)if(Pai.number!=Pas.num
43、ber)i+;elsestr.order=Pai.order;str.number=Pai.number;for(j=0;j<*(q+i);j+)str.ftotalj=Pai.ftotalj;str.quantity=Pai.quantity;str.count=Pai.count;for(k=s;k<n;k+)Pak.order=Pak+1.order;/* 將要刪除的數據后的數據全部前移*/Pak.number=Pak+1.number;for(j=0;j<*(q+i);j+)Paj.ftotalj=Pak.ftotalj;Pak.quantity=Pak+1.quan
44、tity;Pak.count=Pak+1.count;n-=1;printf("the information deletecd is :n");printf("%dt%dt%dt%dn",str.order,str.quantity,str.count,str.number);for(i=0;i<*(q+s);i+)printf("%dt",str.ftotali);printf("n");return(n);printf("Delete is wrong!n");Return(n);p
45、rintf("n");int Insert(SqList Pa,int n,int num) /* 在工號為 num 的位置插入一個員工信息 */ int i,j,s,total,k; s=Search_Number(Pa,n,num); srand(unsigned)time(NULL);if(s<0|s=NULL)printf("insert wrong!n");return(n);elsefor(i=n-1;i>=s;i-)/* 先將第 s 個結構體位置騰出 */Pai+1.order=Pai.order; Pai+1.number=P
46、ai.number;for(j=0;j<*(q+s);j+)Pai+1.ftotalj=Pai.ftotalj; Pai+1.quantity=Pai.quantity;Pai+1.count=Pai.count;printf("please input the total(i<=5):");scanf("%d",&total); if(total>5)printf("input wrong!n"); printf("please input the total(i<=5):");
47、scanf("%d",&total);Pas.quantity=0;Pas.order=1;Pas.count=0;for(i=0;i<total;i+)Pas.ftotali=rand()%100;Pas.quantity+=Pas.ftotali;k=rand()%100;for(i=0;i<n;i+) while(k=Pai.number) k=rand()%100;Pas.number=k;n=n+1;return(n);/* 按完成的產品數量排序 */int Paixu_quantity(SqList Pa,int n,int *q) int
48、i,j,k;SqList arr;int str;for(j=0;j<n;j+) for(i=0;i<n-j;i+) if(Pai.quantity<Pai+1.quantity) str=*(q+i);*(q+i)=*(q+i+1);*(q+i+1)=str;arr.quantity=Pai.quantity;Pai.quantity=Pai+1.quantity;Pai+1.quantity=arr.quantity;arr.order=Pai.order;Pai.order=Pai+1.order; Pai+1.order=arr.order;arr.count=Pai
49、.count;Pai.count=Pai+1.count; Pai+1.count=arr.count;for(k=0;k<*(q+j);k+)str=*(q+i);*(q+i)=*(q+i+1);*(q+i+1)=str;arr.ftotalk=Pai.ftotalk;Pai.ftotalk=Pai+1.ftotalk;Pai+1.ftotalk=arr.ftotalk;arr.number=Pai.number;Pai.number=Pai+1.number;Pai+1.number=arr.number;printf("n");printf("Afte
50、r Paixu,the quantity is:n");for(k=0;k<n;k+)printf("%4dt",Pak.quantity);printf("n");void Count_order(SqList Pa,int n)/* 按職工完成的總數量統計名次 */int i,j,k;Paixu_quantity(Pa,n,q); /* 先按完成的產品總數量排序 */1 初始為它for(i=0,j=1;i<n;i+) /* 先將各員工的名次按從大到小順序各自加 們各自的名次 */Pai.order=i+1;Pai.count=1
51、;for(i=0,j=1;i<n;i+)while(j<n&&Paj.quantity=Pai.quantity)Paj.order=Pai.order;Pai.count+;j+;i=j-1;j+;void Print_NumQU(SqList Pa,int n)/* 輸出職工工號和完成的總數量 */int i;printf("number:n"); for(i=0;i<n;i+)printf("%-dt",Pai.number);printf("n");printf("quantity:
52、n "); for(i=0;i<n;i+)printf("%-4dt",Pai.quantity);printf("n");void Printf_break() /* 回車清屏函數 */int enter;enter=getchar(); if(enter='n')clrscr();void ChushiHua(SqList Pa,int n,int *q)/* 初始化 */int i,j;for(i=0;i<n;i+)Pai.order=1;Pai.count=1;for(j=0;j<*(q+i);j+)P
53、ai.ftotalj=0;void Print_All(SqList Pa,int n) /* 最終輸出結果函數 */ int i,j=1,k;Count_order(Pa,n);/* 先進行排名次 */printf("Ordertquantitytcounttnumbertn");for(i=0;i<n;i+)printf("%5dt%8dt%5dt",Pai.order,Pai.quantity,Pai.count);if (Paj.order!=Pai.order)printf("%5dt",Pai.number); printf("n"); j+;while(Paj.order=Pai.order) /* 輸出名次相同的職工號 */ for(k=0;k<Pai.count;k+,j+) printf("%5dt",Paj-1.number);i=i+Pai.count-1;j=i+1; printf("n");printf("n");void WelcomeScreen()printf("*n");printf("*n");printf("* Welcome to
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購房租賃合同經典
- 農業機械租賃合同范文
- 二手攝影器材買賣合同
- 初中數學問題解決策略 特殊化教案2024-2025學年北師大版(2024)七年級數學下冊
- 中國古典舞的審美特征
- 弧形座椅埋件的精確定位與安裝質量控制QC成果
- 第一章 第三節 測量:長度與時間2024-2025學年新教材八年級上冊物理新教學設計(滬科版2024)
- AR-6-低泡強效除油表面活性劑
- 居間傭金合同標準版
- 初中生物北師大版八年級下冊第4節 生態系統的穩定性教學設計及反思
- 獎品、禮品供應服務方案
- 八年級歷史下第一單元復習教案
- 不動產登記數據安全保密責任書
- 部編版七年級下冊歷史復習提綱(重點考察知識點)
- 大學文化主題辯論賽巔峰對決辯論辯答ppt模板
- 物業小區保潔清潔方案
- 原地面高程復測記錄表正式版
- 高等學校建筑學專業本科(五年制)教育評估標準
- 品質周報表(含附屬全套EXCEL表)
- 商鋪裝修工程施工方案.
- MQ2535門座起重機安裝方案
評論
0/150
提交評論