員工管理系統(tǒng)課程設(shè)計報告_第1頁
已閱讀1頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 說 明 書</p><p>  課程名稱 數(shù)據(jù)結(jié)構(gòu) </p><p>  設(shè)計課題 員工管理系統(tǒng) </p><p>  專 業(yè) 計算機(jī)科學(xué)與技術(shù) </p><p>

2、; 課 程 設(shè) 計 任 務(wù) 書</p><p> 設(shè)計題目: 員工管理系統(tǒng) _________________________________________________________設(shè)計內(nèi)容與要求:設(shè)計一員工管理系統(tǒng),可儲存若干名員工的基本信息,并能對員工的信息進(jìn)行一些

3、基本的操作,其中應(yīng)具有基本功能:創(chuàng)建:創(chuàng)建員工信息庫。(2) 輸出:可以輸出所有已輸入的員工的所有信息。(2) 排序:按不同關(guān)鍵字,對所有員工的信息進(jìn)行排序。(3) 查詢:按特定條件查找員工。(4) 更新:按編號對某個員工的某項(xiàng)信息進(jìn)行修改。(5) 插入:加入新員工的信息。(6) 刪除:按編號刪除已離職的員工的信息。(8) 退出:進(jìn)行完所有需要的操作后可以退出該系統(tǒng),完成操作。指導(dǎo)教師:張 紅 霞年 月 日</p>

4、<p> 課 程 設(shè) 計 評 語</p><p> 成績:指導(dǎo)教師:張 紅 霞年 月 日</p><p><b>  【問題描述】</b></p><p>  該員工管理系統(tǒng)應(yīng)能實(shí)現(xiàn)一些簡單的操作,其中每個員工的信息應(yīng)包括:編號、姓名、性別、出生年月、學(xué)歷、職務(wù)、電話、住址等。系統(tǒng)能夠完成員工信息的查詢、更新、插入、刪除、排

5、序等功能。</p><p><b>  【基本要求】</b></p><p> ?。?) 排序:按不同關(guān)鍵字,對所有員工的信息進(jìn)行排序。</p><p> ?。?) 查詢:按特定條件查找員工。</p><p> ?。?) 更新:按編號對某個員工的某項(xiàng)信息進(jìn)行修改。</p><p> ?。?) 插入

6、:加入新員工的信息。</p><p> ?。?) 刪除:按編號刪除已離職的員工的信息。</p><p><b>  【測試數(shù)據(jù)】</b></p><p>  1.創(chuàng)建員工信息數(shù)據(jù):</p><p>  b11050516 李滿意 男 1996.3.2 本科 學(xué)生 18238816299 p3.240</p>

7、;<p>  b11050517 鐘金言 男 1995.2.4 本科 學(xué)生 18238816303 p3.240</p><p>  b11050518 魏良雷 男 1998.5.6 本科 學(xué)生 18238818310 p3.240</p><p>  2. 輸出員工信息數(shù)據(jù):2,2</p><p>  3.對員工排序數(shù)據(jù):3,2</p&

8、gt;<p>  4. 查詢員工信息數(shù)據(jù):4,1,b11050516</p><p>  5. 更新員工信息數(shù)據(jù):5,2,鐘金言</p><p>  6. 插入新員工信息數(shù)據(jù):</p><p><b>  6,</b></p><p>  b11050520 鄭亞振 男 1998.5.7 本科 學(xué)生 182

9、38816307 p3.240</p><p>  7. 刪除離職員工信息數(shù)據(jù):7,b11050518</p><p><b>  【算法思想】</b></p><p>  1、輸出函數(shù):輸出部分為查看方便共用三種輸出方式,分別將員工的編號、姓名、電話號碼放在第一個位置輸出,算法很簡單,就是用一個for語句將所有員工信息輸出。</p&g

10、t;<p>  2、排序函數(shù)(排序部分按三種關(guān)鍵字使用了三種排序方法):</p><p> ?。?)按編號快速排序:從待排序員工記錄中選取第一個員工為樞軸,其編號設(shè)為K1,然后將其余員工編號小于K1的記錄移到K1的記錄的前面,而將編號大于K1的記錄移到后面,結(jié)果將待排序員工記錄序列分成兩個子表,最后將編號為K1的記錄插到其分界線的位置處。這個過程稱為一趟快速排序。通過一次劃分后,就以編號為K1的記錄

11、為界,將待排序序列分成了兩個子表,且前面子表中所有記錄的編號均不大于K1,而后面子表中的所有記錄的編號均不小于K1。對分割后的子表繼續(xù)按上述原則進(jìn)行分割,直到所有子表的表長不超過1為止,此時待排序記錄序列就變成了一個有序表。</p><p> ?。?)按姓名折半排序:從記錄的第二個姓名開始折半插入,令low=1,high=i-1(i為未排序時的第i個記錄,也是當(dāng)前需要折半插入排序的記錄),并令mid=(low+h

12、igh)/2,然后比較第i個記錄的姓名與第mid個記錄的姓名,如果第i個記錄的姓名小于第mid個記錄的姓名則high=mid-1,否則low=mid+1,繼續(xù)進(jìn)行第i個記錄的姓名與第mid個記錄的姓名的比較直到low>high,如此便找到插入第i個記錄的插入位置。如此逐個插入所有待排序的記錄。</p><p>  (3)按電話號碼堆排序:先建一個“大頂堆”,即先選得一個關(guān)鍵字為最大的記錄,然后與序列中最后一

13、個記錄 交換,之后繼續(xù)對序列中前 n-1 記錄進(jìn)行“篩選”,重新將它調(diào)整為一個“大頂堆”再 將堆頂記錄和第 n-1 個記錄交換,如此反復(fù)直至排序結(jié)束。所謂“篩選”指的是對一棵 左/右子樹均為堆的完全二叉樹,“調(diào)整”根結(jié)點(diǎn)使整個二叉樹為堆。</p><p>  3、查詢函數(shù):此員工管理系統(tǒng)的查詢可按照編號和姓名進(jìn)行折半查詢,在進(jìn)行折半查詢前,已進(jìn)行按照所選關(guān)鍵字進(jìn)行排序,首先將記錄序列中間位置的記錄的關(guān)鍵字與查找關(guān)

14、鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將待排序序列分成前后兩個子表,如果中間位置記錄的關(guān)鍵字大于查找關(guān)鍵字,則進(jìn)一步查找前一子表,否則進(jìn)一步查找后一子表。重復(fù)以上過程,直到找到滿足條件的記錄,使查找成功,并輸出該記錄,或直到子表不存在為止,此時查找不成功,輸出非法查詢。</p><p>  4、更新函數(shù):更新函數(shù)與查詢函數(shù)類似,可以根據(jù)需更新員工信息的原編號或者原姓名進(jìn)行折半查詢到需更新的記錄,

15、在查詢前已按照相應(yīng)關(guān)鍵字進(jìn)行排序,查找到該記錄后即可對其更改,并輸出“更新成功”,若查找失敗則輸出“更新失敗”。</p><p>  5、插入函數(shù):此函數(shù)就是簡單的在所有記錄的最后插入新員工的信息。</p><p>  6、刪除函數(shù):刪除函數(shù)首先對該系統(tǒng)中是有員工記錄進(jìn)行判斷,若有則按照編號進(jìn)行快速排序,然后根據(jù)需刪除員工的編號進(jìn)行折半查找,查找到后則刪除,輸出“刪除成功”,若系統(tǒng)中并沒有

16、該員工的記錄,則會查找失敗,輸出“刪除失敗”。</p><p><b>  【模塊劃分】</b></p><p><b>  1.主菜單模塊</b></p><p><b>  (1)菜單內(nèi)容</b></p><p>  程序運(yùn)行后,給出8個菜單項(xiàng)的內(nèi)容和輸入提示。</p

17、><p>  [1]創(chuàng)建員工信息 [2]輸出員工信息</p><p>  [3]對員工排序 [4]查詢員工信息</p><p>  [5]更新員工信息 [6]插入新員工信息</p><p>  [7]刪除離職員工信息 [8]退出</p><p> ?。?)實(shí)現(xiàn)循環(huán)和功能選擇<

18、;/p><p>  輸入選擇用變量choice存儲,它提供給switch語句選項(xiàng),使用while循環(huán)實(shí)現(xiàn)重復(fù)選擇,并在主函數(shù)main()中實(shí)現(xiàn)。算法實(shí)現(xiàn):</p><p>  void main()</p><p><b>  {</b></p><p>  int flag=1,choice;</p><

19、;p>  while(flag)</p><p><b>  {</b></p><p><b>  caidan();</b></p><p>  printf("請輸入需要進(jìn)行的操作選項(xiàng)序號====>:");</p><p>  scanf("%d&qu

20、ot;,&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1:Creatlist();</p><p><b>  break;</b></p><p>  case 2:shu

21、chufangshi();</p><p><b>  break;</b></p><p>  case 3:paixufangshi();</p><p><b>  break;</b></p><p>  case 4:chaxunfangshi();</p><p>

22、;<b>  break;</b></p><p>  case 5:gengxinfangshi();</p><p><b>  break;</b></p><p>  case 6:insert();</p><p><b>  break;</b></p>

23、<p>  case 7:Del_num();</p><p><b>  break;</b></p><p>  case 8:flag=0;</p><p><b>  break;</b></p><p><b>  }</b></p>&l

24、t;p><b>  getch();</b></p><p>  system("cls");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.功能模塊</b><

25、;/p><p> ?。?)創(chuàng)建系統(tǒng)模塊:剛開始先建立系統(tǒng),輸入一些員工的信息記錄存儲起來。</p><p> ?。?)輸出模塊:可以輸出所有系統(tǒng)中存儲的員工記錄。</p><p> ?。?)排序模塊:可以按不同關(guān)鍵字對員工記錄進(jìn)行排序。</p><p> ?。?)查詢模塊:可以按照不同關(guān)鍵字查詢出某員工的所有信息。</p><

26、p> ?。?)更新模塊:按照不同關(guān)鍵字查詢出該員工并更改其信息。</p><p>  (6)插入模塊:可以將新員工信息插入到系統(tǒng)中存儲。</p><p> ?。?)刪除模塊:根據(jù)編號查詢出該員工并將其刪除。</p><p><b>  【數(shù)據(jù)結(jié)構(gòu)】</b></p><p>  本系統(tǒng)使用順序存儲結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)信息的存

27、儲,使用一結(jié)構(gòu)體的全局變量staf存儲員工的編號、姓名、性別等一些基本信息。</p><p><b>  【測試情況】</b></p><p><b>  1.創(chuàng)建員工信息:</b></p><p><b>  2.輸出員工信息:</b></p><p><b>  

28、3.對員工排序:</b></p><p><b>  4.查詢員工信息:</b></p><p><b>  5.更新員工信息:</b></p><p>  6.插入新員工信息:</p><p>  7.刪除離職員工信息:</p><p><b>  8

29、.退出:</b></p><p><b>  【心得】</b></p><p>  最近一周的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計結(jié)束了,課程設(shè)計還是有效果的,收獲良多啊。</p><p>  課程設(shè)計是計算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實(shí)驗(yàn)課程后進(jìn)行的一次全面的綜合練習(xí)。其目的是要達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,使

30、學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實(shí)世界中的實(shí)際問題在計算機(jī)內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。</p><p>  在這次課程設(shè)計當(dāng)中,我認(rèn)識到我的不足,如算法的不完善、不細(xì)心和耐心不是很好等等諸多情況。我在寫程序前構(gòu)思好了程序的框架但在寫程序時還是丟三落四,比如在使用折半查詢時應(yīng)該先按照關(guān)鍵字進(jìn)行排序,結(jié)果我忘記調(diào)用排序函數(shù)直接使用折半查詢,低級錯誤啊,以后應(yīng)該多

31、加注意,一定要細(xì)心啊;對這些錯誤,我不得不花一定的時間去更正,并且還要檢查是否出現(xiàn)相似的錯誤而導(dǎo)致程序正常運(yùn)行。但是通過這次課程設(shè)計,我的這些缺點(diǎn)有些改善。我在寫新的程序時,首先要考慮的深入一點(diǎn)、仔細(xì)一點(diǎn),這樣要修改程序的時間就會少很多。并且也不會因?yàn)樽约翰患?xì)心而導(dǎo)致的浪費(fèi)時間的情況出現(xiàn)。</p><p>  通過課程設(shè)計提高了我的互動能力和動手能力,以及考慮問題的周密和全面?;仡欉@次課程設(shè)計,可以說學(xué)到了很多很

32、多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過課程設(shè)計對以前所學(xué)過的知識重新溫故。另外,自己的能力畢竟

33、是有限的,在這次課程設(shè)計中我還向同學(xué)學(xué)到了一些知識,比如,學(xué)會了使用清屏函數(shù)system("cls"),所以以后還是要多多向同學(xué)學(xué)習(xí)啊。</p><p>  總之,對于這次課設(shè)過程中同學(xué)們給予的指導(dǎo)表示感謝,在這次課程設(shè)計過程中也學(xué)到了很多知識,以后要多多上機(jī),多做些類似的軟件,以增強(qiáng)自己的實(shí)際編程能力。</p><p><b>  【源程序】</b&g

34、t;</p><p>  #include<stdio.h></p><p>  #include<conio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  struct st

35、aff</p><p><b>  {</b></p><p>  char num[20];</p><p>  char name[20];</p><p>  char sex[10];</p><p>  char birthdate[20];</p><p>  

36、char xueli[20];</p><p>  char zhiwu[20];</p><p>  char phone[15];</p><p>  char addr[15];</p><p><b>  };</b></p><p>  struct staff staf[20];<

37、;/p><p><b>  int a;</b></p><p>  #define TRUE 1</p><p>  #define FALSE 0</p><p>  typedef int KeyType;</p><p>  typedef int OtherType;</p>

38、<p>  //按電話號碼進(jìn)行堆排序</p><p>  void sift(struct staff staf[], int k, int m)</p><p><b>  {</b></p><p>  struct staff t;</p><p><b>  int i,j;</b

39、></p><p>  char x[15];</p><p>  int finished;</p><p>  t= staf[k]; </p><p>  x[15]=staf[k].phone;</p><p><b>  i=k;</b></p>&

40、lt;p><b>  j=2*i;</b></p><p>  finished=FALSE;</p><p>  while( j<=m && !finished ) </p><p><b>  { </b></p><p>  if (j<m &a

41、mp;& staf[j].phone< staf[j+1].phone ) </p><p><b>  j=j+1; </b></p><p>  if ( x>= staf[j].phone)</p><p>  finished=TRUE; </p><p><b>

42、  else </b></p><p><b>  {</b></p><p>  staf[i] = staf[j];</p><p><b>  i=j;</b></p><p><b>  j=2*i;</b></p><p><

43、b>  } </b></p><p><b>  }</b></p><p>  staf[i] =t; </p><p><b>  } </b></p><p>  void crt_heap(struct staff staf[],int a)&l

44、t;/p><p><b>  {</b></p><p><b>  int i,n;</b></p><p><b>  n= a;</b></p><p>  for ( i=n/2; i >= 1; --i) </p><p> 

45、 sift(staf,i,n);</p><p><b>  }</b></p><p>  void HeapSort(struct staff staf[],int a)</p><p><b>  {</b></p><p><b>  int i,n;</b><

46、/p><p>  struct staff b;</p><p>  crt_heap(staf, a);</p><p><b>  n= a;</b></p><p>  for ( i=n ; i>= 2; --i) </p><p><b>  {</b><

47、;/p><p>  b=staf[1]; </p><p>  staf[1]= staf[i];</p><p>  staf[i]=b; </p><p>  sift(staf,1,i-1); </p><p><b>  }</b></p><p&

48、gt;<b>  } </b></p><p>  //創(chuàng)建員工信息函數(shù)</p><p>  void Creatlist()</p><p><b>  {</b></p><p><b>  int i=1;</b></p><p>  char f

49、lag='y';</p><p>  printf("請輸入職工信息編號、姓名、性別、出生年月、學(xué)歷、職務(wù)、電話、住址:\n");</p><p>  while(flag=='y')</p><p><b>  {</b></p><p>  scanf("

50、%s%s%s%s%s%s%s%s",staf[i].num,staf[i].name,staf[i].sex,staf[i].birthdate,</p><p>  staf[i].xueli,staf[i].zhiwu,staf[i].phone,staf[i].addr);</p><p><b>  a=i;</b></p><p

51、>  printf("是否繼續(xù)輸入?(y/n):");</p><p>  getchar();</p><p>  scanf("%c",&flag);</p><p><b>  i++;</b></p><p><b>  }</b><

52、;/p><p>  printf("創(chuàng)建成功!\n");</p><p><b>  }</b></p><p>  //按編號輸出函數(shù)(輸出部分將編號放在最前面)</p><p>  void shuchu()</p><p><b>  {</b><

53、/p><p><b>  int i;</b></p><p>  printf(" 編號 姓名 性別 出生年月 學(xué)歷 職務(wù) 電話 住址 \n"); </p><p>  for(i=1;i<=a;i++)</p><p><b>  {<

54、/b></p><p>  printf("%11s%8s%5s%10s%6s%6s%13s%8s\n",staf[i].num,staf[i].name,staf[i].sex,staf[i].birthdate,</p><p>  staf[i].xueli,staf[i].zhiwu,staf[i].phone,staf[i].addr);</p&g

55、t;<p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  //按姓名輸出函數(shù)(輸出部分將姓名放在最前面)</p><p>  void shuchu_name()</p>

56、;<p><b>  {</b></p><p><b>  int i;</b></p><p>  printf(" 姓名 編號 性別 出生年月 學(xué)歷 職務(wù) 電話 住址 \n"); </p><p>  for(i=1;i<=a;i++

57、)</p><p><b>  {</b></p><p>  printf("%8s%11s%5s%10s%6s%6s%13s%8s\n",staf[i].name,staf[i].num,staf[i].sex,staf[i].birthdate,</p><p>  staf[i].xueli,staf[i].zhiw

58、u,staf[i].phone,staf[i].addr);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  //按電話號碼輸出函數(shù)(輸出部分將電話號碼放在最前面)</p&g

59、t;<p>  void shuchu_phone()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf(" 電話 姓名 編號 性別 出生年月 學(xué)歷 職務(wù) 住址 \n")

60、; </p><p>  for(i=1;i<=a;i++)</p><p><b>  {</b></p><p>  printf("%13s%8s%11s%5s%10s%6s%6s%8s\n",staf[i].phone,staf[i].name,staf[i].num,staf[i].sex,staf[i].b

61、irthdate,</p><p>  staf[i].xueli,staf[i].zhiwu,staf[i].addr);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p>&l

62、t;p>  //按姓名進(jìn)行折半排序函數(shù)</p><p>  void binsortname(struct staff staf[])</p><p><b>  {</b></p><p>  struct staff x;</p><p>  int low,high,mid,i,j;</p>&

63、lt;p>  for(i=2;i<=a;++i)</p><p><b>  {</b></p><p>  x=staf[i];</p><p><b>  low=1;</b></p><p><b>  high=i-1;</b></p><

64、;p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(strcmp(x.name,staf[mid].name)<0)high=mid-1;</p><p>  else low=mid+1;

65、</p><p><b>  }</b></p><p>  for(j=i-1;j>=low;--j)staf[j+1]=staf[j];</p><p>  staf[low]=x;</p><p><b>  }</b></p><p><b>  }&

66、lt;/b></p><p>  //按姓名進(jìn)行折半查找</p><p>  void binsrchname(struct staff staf[])</p><p><b>  {</b></p><p>  int low,high,mid;</p><p>  char k[20];

67、</p><p><b>  low=1; </b></p><p><b>  high=a;</b></p><p>  printf("請輸入需要查找的姓名:");</p><p>  scanf("%s",k);</p><p&g

68、t;  while( low <= high)</p><p><b>  {</b></p><p>  mid=(low+high) / 2;</p><p>  if(strcmp(k,staf[mid].name)==0) </p><p>  {printf("%11s%8s%5s%10s%6

69、s%6s%13s%8s\n",staf[mid].num,staf[mid].name,staf[mid].sex,staf[mid].birthdate,</p><p>  staf[mid].xueli,staf[mid].zhiwu,staf[mid].phone,staf[mid].addr);break;}</p><p><b>  else </

70、b></p><p>  if(strcmp(k,staf[mid].name)<0)</p><p>  high=mid-1;</p><p><b>  else </b></p><p>  low=mid+1;</p><p><b>  }</b>&

71、lt;/p><p>  if(low>high)printf("非法查詢!\n");</p><p><b>  }</b></p><p>  //按編號進(jìn)行快速排序</p><p>  void QKSortnum(struct staff staf[],int low, int high )&

72、lt;/p><p><b>  {</b></p><p>  int pos,QKPassnum();</p><p>  if(low<high)</p><p><b>  {</b></p><p>  pos=QKPassnum(staf, low, high);

73、 </p><p>  QKSortnum(staf, low, pos-1); </p><p>  QKSortnum(staf, pos+1, high);</p><p><b>  }</b></p><p><b>  }</b></p><p>  int

74、 QKPassnum(struct staff staf[],int left,int right)</p><p><b>  { </b></p><p>  struct staff x;</p><p>  int low,high;</p><p>  x= staf[left]; <

75、;/p><p>  low=left; </p><p>  high=right;</p><p>  while ( low<high )</p><p><b>  {</b></p><p>  while (low< high && strcmp(staf[hi

76、gh].num,x.num)>=0) </p><p><b>  high--;</b></p><p>  if ( low <high ) </p><p><b>  { </b></p><p>  staf[low]= staf[high];</p><p

77、><b>  low++;</b></p><p><b>  } </b></p><p>  while (low<high &&strcmp(staf[low].num,x.num)<0) </p><p><b>  low++; </b></p

78、><p>  if ( low<high )</p><p><b>  { </b></p><p>  staf[high]= staf[low];</p><p><b>  high--; </b></p><p><b>  }</b>&

79、lt;/p><p><b>  }</b></p><p>  staf[low]=x; </p><p>  return low; </p><p><b>  } </b></p><p> 

80、 //按編號進(jìn)行折半查找(在菜單中調(diào)用按編號排序后調(diào)用此函數(shù))</p><p>  void binsrchnum(struct staff staf[])</p><p><b>  {</b></p><p>  int low,high,mid;</p><p>  char k[20];</p>&

81、lt;p><b>  low=1; </b></p><p><b>  high=a;</b></p><p>  printf("請輸入需要查找的編號:");</p><p>  scanf("%s",k);</p><p>  while( lo

82、w <= high)</p><p><b>  {</b></p><p>  mid=(low+high) / 2;</p><p>  if(strcmp(k,staf[mid].num)==0) </p><p>  {printf("%11s%8s%5s%11s%8s%8s%13s%8s\n&

83、quot;,staf[mid].num,staf[mid].name,staf[mid].sex,staf[mid].birthdate,</p><p>  staf[mid].xueli,staf[mid].zhiwu,staf[mid].phone,staf[mid].addr);break;}</p><p><b>  else </b></p>

84、;<p>  if(strcmp(k,staf[mid].num)<0)</p><p>  high=mid-1;</p><p><b>  else </b></p><p>  low=mid+1;</p><p><b>  }</b></p><

85、p>  if(low>high)printf("非法查詢!\n");</p><p><b>  }</b></p><p>  //更新員工信息。(已知員工原編號,對員工按編號排序后,按原編號折半查詢,</p><p>  //并修改其所有信息。)</p><p>  void gx_n

86、um()</p><p><b>  {</b></p><p>  char k[20];</p><p>  int low,high,mid;</p><p><b>  int i;</b></p><p><b>  low=1; </b>&

87、lt;/p><p><b>  high=a;</b></p><p>  QKSortnum(staf,0,a);</p><p>  printf("請輸入需要更新信息員工的編號:");</p><p>  scanf("%s",k);</p><p>  

88、while( low <= high)</p><p><b>  {</b></p><p>  mid=(low+high) / 2;</p><p>  if(strcmp(k,staf[mid].num)==0) </p><p><b>  {</b></p><

89、p>  printf("請輸入該員工正確的信息:\n");</p><p><b>  i=mid;</b></p><p>  scanf("%s%s%s%s%s%s%s%s",staf[i].num,staf[i].name,staf[i].sex,staf[i].birthdate,</p><p

90、>  staf[i].xueli,staf[i].zhiwu,staf[i].phone,staf[i].addr);</p><p>  printf("更新成功!\n");break;</p><p><b>  }</b></p><p><b>  else </b></p>

91、<p>  if(strcmp(k,staf[mid].num)<0)</p><p>  high=mid-1;</p><p><b>  else </b></p><p>  low=mid+1;</p><p><b>  }</b></p><p

92、>  if(low>high)printf("更新失敗!\n");</p><p><b>  }</b></p><p>  //更新員工信息。(已知員工原姓名,對員工按姓名排序后,按原姓名折半查詢,</p><p>  //并修改其所有信息。)</p><p>  void gx_na

93、me()</p><p><b>  {</b></p><p>  char k[20];</p><p>  int low,high,mid;</p><p><b>  int i;</b></p><p><b>  low=1; </b>&

94、lt;/p><p><b>  high=a;</b></p><p>  binsortname(staf);</p><p>  printf("請輸入需要更新信息員工的姓名:");</p><p>  scanf("%s",k);</p><p>  wh

95、ile( low <= high)</p><p><b>  {</b></p><p>  mid=(low+high) / 2;</p><p>  if(strcmp(k,staf[mid].name)==0) </p><p><b>  {</b></p><p

96、>  printf("請輸入該員工正確的信息:\n");</p><p><b>  i=mid;</b></p><p>  scanf("%s%s%s%s%s%s%s%s",staf[i].num,staf[i].name,staf[i].sex,staf[i].birthdate,</p><p&

97、gt;  staf[i].xueli,staf[i].zhiwu,staf[i].phone,staf[i].addr);</p><p>  printf("更新成功!\n");break;</p><p><b>  }</b></p><p><b>  else </b></p>

98、<p>  if(strcmp(k,staf[mid].name)<0)</p><p>  high=mid-1;</p><p><b>  else </b></p><p>  low=mid+1;</p><p><b>  }</b></p><p

99、>  if(low>high)printf("更新失敗!\n");</p><p><b>  }</b></p><p><b>  //插入新員工信息</b></p><p>  void insert()</p><p><b>  {</b&g

100、t;</p><p>  char q='y';</p><p>  printf("請輸入需插入員工的信息,編號、姓名、性別、出生年月、學(xué)歷、職務(wù)、電話、住址:\n");</p><p>  while(q=='y')</p><p><b>  {</b></

101、p><p><b>  a=a+1;</b></p><p>  scanf("%s%s%s%s%s%s%s%s",staf[a].num,staf[a].name,staf[a].sex,staf[a].birthdate,</p><p>  staf[a].xueli,staf[a].zhiwu,staf[a].phone

102、,staf[a].addr);</p><p>  printf("是否繼續(xù)插入(y/n):");</p><p>  getchar();</p><p>  scanf("%c",&q);</p><p><b>  }</b></p><p>

103、  printf("插入成功!\n");</p><p><b>  }</b></p><p>  //刪除員工信息(對員工按編號排序后,進(jìn)行折半查找,并刪除該員工信息。)</p><p>  void Del_num()</p><p><b>  {</b></p&g

104、t;<p>  int low,high,mid,i;</p><p>  char k[20];</p><p>  char q='y';</p><p>  QKSortnum(staf,0,a);</p><p>  while(q=='y')</p><p>  

105、{ if(a==0)</p><p>  {printf("已經(jīng)沒有員工!\n");break;}</p><p>  printf("請輸入需要刪除的員工編號:");</p><p>  scanf("%s",&k);</p><p><b>  low=1;

106、 </b></p><p><b>  high=a;</b></p><p>  while( low <= high)</p><p><b>  {</b></p><p>  mid=(low+high) / 2;</p><p>  if(str

107、cmp(k,staf[mid].num)==0) </p><p><b>  { i=mid;</b></p><p>  for(;i<a;i++)</p><p><b>  {</b></p><p>  staf[i]=staf[i+1];</p><p>

108、;<b>  }</b></p><p><b>  a--;</b></p><p>  printf("刪除成功!\n");</p><p><b>  break;</b></p><p><b>  }</b></p>

109、;<p><b>  else </b></p><p>  if(strcmp(k,staf[mid].num)<0)</p><p>  high=mid-1;</p><p><b>  else </b></p><p>  low=mid+1;</p>

110、<p><b>  }</b></p><p>  if(low>high)printf("刪除失敗!\n");</p><p>  printf("是否繼續(xù)刪除(y/n):");</p><p>  scanf("%s",&q);</p>&l

111、t;p><b>  }</b></p><p><b>  }</b></p><p>  //輸出方式選擇菜單</p><p>  void shuchufangshi()</p><p><b>  {</b></p><p>  int ch

112、oice;</p><p>  printf(" ------------------------\n");</p><p>  printf(" [1]按編號排序、輸出\n");</p><p>  printf(" [2]按姓名排序、輸出\n");</p&

113、gt;<p>  printf(" [3]按電話排序、輸出\n");</p><p>  printf(" ------------------------\n");</p><p>  printf("請選擇輸出方式:");</p><p>  scanf(&quo

114、t;%d",&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1:QKSortnum(staf,0,a);</p><p><b>  shuchu();</b></p><

115、;p><b>  break;</b></p><p>  case 2:binsortname(staf);</p><p>  shuchu_name();</p><p><b>  break;</b></p><p>  case 3:HeapSort(staf,a);</p&

116、gt;<p>  shuchu_phone();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //排序方式選擇菜單</p><p> 

117、 void paixufangshi()</p><p><b>  {</b></p><p>  int choice;</p><p>  printf(" ------------------------\n");</p><p>  printf(" [1

118、]按編號排序\n");</p><p>  printf(" [2]按姓名排序\n");</p><p>  printf(" [3]按電話排序\n");</p><p>  printf(" ------------------------\n");&l

119、t;/p><p>  printf("請選擇排序方式:");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1:QKS

120、ortnum(staf,0,a);</p><p>  printf("排序完成!\n");</p><p><b>  break;</b></p><p>  case 2:binsortname(staf);</p><p>  printf("排序完成!\n");</

121、p><p><b>  break;</b></p><p>  case 3:HeapSort(staf,a);</p><p>  printf("排序完成!\n");</p><p><b>  break;</b></p><p><b> 

122、 }</b></p><p><b>  }</b></p><p>  //查詢方式選擇菜單</p><p>  void chaxunfangshi()</p><p><b>  {</b></p><p>  int choice;</p>

123、<p>  printf(" ------------------------\n");</p><p>  printf(" [1]按編號查詢\n");</p><p>  printf(" [2]按姓名查詢\n");</p><p>  printf(

124、" ------------------------\n");</p><p>  printf("請選擇查詢方式:");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p><b&g

125、t;  {</b></p><p>  case 1:QKSortnum(staf,0,a);</p><p>  binsrchnum(staf);</p><p><b>  break;</b></p><p>  case 2:binsortname(staf);</p><p&g

126、t;  binsrchname(staf);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //更新方式選擇菜單</p><p>  void gen

127、gxinfangshi()</p><p><b>  {</b></p><p>  int choice;</p><p>  printf(" ------------------------\n");</p><p>  printf(" [1]根據(jù)員工原編

128、號更新\n");</p><p>  printf(" [2]根據(jù)員工原姓名更新\n");</p><p>  printf(" ------------------------\n");</p><p>  printf("請選擇更新方式:");</p>

129、<p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1:gx_num();</p><p><b>  break;</b></p&g

130、t;<p>  case 2:gx_name();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //員工管理系統(tǒng)總菜單</p><p>

131、;  void caidan()</p><p><b>  {</b></p><p>  printf(" 《歡迎進(jìn)入員工管理系統(tǒng)》\n");</p><p>  printf("*************************************************\n"

132、;);</p><p>  printf("* 請選擇所需要的操作: *\n");</p><p>  printf("* [1]創(chuàng)建員工信息 [2]輸出員工信息 *\n");</p><p>  printf("* [3]對員工排序

133、 [4]查詢員工信息 *\n");</p><p>  printf("* [5]更新員工信息 [6]插入新員工信息 *\n");</p><p>  printf("* [7]刪除離職員工信息 [8]退出 *\n");</p><p&

134、gt;  printf("*************************************************\n");</p><p><b>  }</b></p><p><b>  //主函數(shù)</b></p><p>  void main()</p><p&g

135、t;<b>  {</b></p><p>  int flag=1,choice;</p><p>  while(flag)</p><p><b>  {</b></p><p><b>  caidan();</b></p><p>  prin

136、tf("請輸入需要進(jìn)行的操作選項(xiàng)序號====>:");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1:Creatlist();&

137、lt;/p><p><b>  break;</b></p><p>  case 2:shuchufangshi();</p><p><b>  break;</b></p><p>  case 3:paixufangshi();</p><p><b>  br

138、eak;</b></p><p>  case 4:chaxunfangshi();</p><p><b>  break;</b></p><p>  case 5:gengxinfangshi();</p><p><b>  break;</b></p><p

139、>  case 6:insert();</p><p><b>  break;</b></p><p>  case 7:Del_num();</p><p><b>  break;</b></p><p>  case 8:flag=0;</p><p><

140、b>  break;</b></p><p><b>  }</b></p><p><b>  getch();</b></p><p>  system("cls");</p><p><b>  }</b></p>&l

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論