數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——公司職工管理系統(tǒng)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì) 說 明 書</p><p>  題目: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p>  學(xué)院(系): 電子與信息工程學(xué)院 </p><p>  專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) </p><p>  學(xué) 號(hào):

2、 </p><p>  課程設(shè)計(jì)(論文)任務(wù)及評(píng)語</p><p>  院(系):電子與信息工程 教研室: 軟件工程</p><p><b>  目 錄</b></p><p>  第1章課程設(shè)計(jì)目的與要求1</p><p>  1.1 課程設(shè)

3、計(jì)目的1</p><p>  1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境1</p><p>  1.3 課程設(shè)計(jì)的預(yù)備知識(shí)1</p><p>  1.4 課程設(shè)計(jì)要求1</p><p>  第2章 課程設(shè)計(jì)內(nèi)容2</p><p>  2.1 第五類題目2</p><p>  2.2 題目的具體實(shí)現(xiàn)

4、2</p><p>  2.3 題目?jī)?nèi)容2</p><p>  2.4 思考題解析16</p><p><b>  總 結(jié)18</b></p><p><b>  參考文獻(xiàn)19</b></p><p><b>  課程設(shè)計(jì)目的與要求</b><

5、;/p><p>  1.1 課程設(shè)計(jì)目的</p><p>  本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的專業(yè)技術(shù)實(shí)踐課。</p><p>  本實(shí)踐課的主要目的是:使學(xué)生學(xué)會(huì)利用在課堂中學(xué)過的理論知識(shí),解決相應(yīng)的實(shí)際問題,深入理解和靈活掌握所學(xué)的內(nèi)容,培養(yǎng)學(xué)生理論和實(shí)踐相結(jié)合的能力,培養(yǎng)學(xué)生分析問題解決問題的能力。同時(shí),在實(shí)驗(yàn)步驟規(guī)范化、程序設(shè)計(jì)方法等方面受到比較

6、系統(tǒng)和規(guī)范的訓(xùn)練。通過實(shí)踐設(shè)計(jì)使學(xué)生進(jìn)一步加深對(duì)程序設(shè)計(jì)的規(guī)范化及對(duì)復(fù)雜程序設(shè)計(jì)步驟的理解。</p><p>  1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境</p><p>  PC機(jī),WindowsXP,Win-tc。</p><p>  1.3 課程設(shè)計(jì)的預(yù)備知識(shí)</p><p>  C語言程序設(shè)計(jì)、高級(jí)程序設(shè)計(jì)應(yīng)用、數(shù)據(jù)結(jié)構(gòu)。</p>&

7、lt;p>  1.4 課程設(shè)計(jì)要求</p><p>  (1)認(rèn)真查找資料,分析每個(gè)題目應(yīng)選擇的數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu)和物理結(jié)構(gòu));</p><p> ?。?)按時(shí)到實(shí)驗(yàn)室調(diào)試程序,遵守實(shí)驗(yàn)室的規(guī)章制度,愛護(hù)設(shè)備;</p><p>  (3)每個(gè)題目編寫源程序時(shí),每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰,有必要的注釋,可讀性強(qiáng)。</

8、p><p> ?。?)程序健壯性強(qiáng),當(dāng)數(shù)據(jù)輸入錯(cuò)誤時(shí),要進(jìn)行相應(yīng)的處理; </p><p> ?。?)分析算法的時(shí)間復(fù)雜度,要求算法的效率盡可能高;</p><p> ?。?)對(duì)于排序算法,要驗(yàn)證排序算法的穩(wěn)定性。</p><p>  第2章 課程設(shè)計(jì)內(nèi)容</p><p><b>  2.1 第五類題目</

9、b></p><p>  1、簡(jiǎn)單的職工管理系統(tǒng)</p><p><b>  a.問題描述</b></p><p>  對(duì)單位的職工進(jìn)行管理,包括插入、刪除、查找、排序等功能。</p><p><b>  b.要求</b></p><p>  職工對(duì)象包括姓名、性別、出

10、生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。</p><p>  (1)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p> ?。?)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p>  (4)修改:檢索某個(gè)職工對(duì)象,對(duì)其某

11、些屬性進(jìn)行修改。</p><p> ?。?)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><p><b>  c.實(shí)現(xiàn)提示</b></p><p>  職工對(duì)象數(shù)不必很多,便于一次讀入內(nèi)存,所有操作不經(jīng)過內(nèi)外存交換。</p><p>  (1)由鍵盤輸入職工對(duì)象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。</

12、p><p>  (2)對(duì)職工對(duì)象中的"姓名"按字典順序進(jìn)行排序。</p><p>  (3)對(duì)排序后的職工對(duì)象進(jìn)行增、刪、查詢、修改、排序等操作。</p><p>  2.2 題目的具體實(shí)現(xiàn)</p><p> ?。ㄒ唬╊}目應(yīng)實(shí)現(xiàn)的具體功能</p><p> ?。?)新增一名職工:將新增職工對(duì)象按姓名以字

13、典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p> ?。?)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p>  (4)修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。</p><p>  (5)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><

14、;p><b>  2.3 題目?jī)?nèi)容</b></p><p>  (一)題目:簡(jiǎn)單的職工管理系統(tǒng)</p><p> ?。ǘ╊}目:運(yùn)用結(jié)構(gòu)</p><p> ?。?)數(shù)據(jù)結(jié)構(gòu):順序表</p><p>  (2)存儲(chǔ)結(jié)構(gòu):數(shù)組</p><p><b> ?。ㄈ┩暾脑闯绦?lt;/b

15、></p><p>  #include<stdio.h></p><p>  #define maxsize 100</p><p>  typedef struct worker</p><p><b>  {</b></p><p>  char name[15];<

16、;/p><p>  char sex[6];</p><p>  char birthday[15];</p><p>  char workage[15];</p><p>  char xueli[15];</p><p>  char position[15];</p><p>  char

17、adress[15];</p><p>  char tel[12];</p><p><b>  }worker;</b></p><p>  typedef struct</p><p><b>  {</b></p><p>  worker w[maxsize+1];

18、</p><p>  int length;</p><p>  }*work,wor;</p><p><b>  int n=0;</b></p><p>  char password[10]="080401019";</p><p>  void creatwork(w

19、ork p,int t)</p><p><b>  {</b></p><p><b>  int i,m;</b></p><p>  p->length=0;</p><p>  for(i=1;i<=t;i++)</p><p><b>  {&

20、lt;/b></p><p>  printf("\ninput name ");</p><p>  scanf("%s",p->w[i].name);</p><p>  getchar();</p><p><b>  do{</b></p><

21、;p>  printf("\ninput %s's sex,1:man,2:woman ",p->w[i].name);</p><p>  scanf("%d",&m);</p><p>  getchar();</p><p><b>  switch(m)</b><

22、/p><p><b>  {</b></p><p>  case 1:strcpy(p->w[i].sex,"man");break;</p><p>  case 2:strcpy(p->w[i].sex,"woman");break;</p><p>  defaul

23、t:printf("input wrong,please input anain");m=0;break;</p><p><b>  }</b></p><p>  }while(m==0);</p><p>  printf("\ninput %s's birthday ",p->w[i

24、].sex);</p><p>  scanf("%s",p->w[i].birthday);</p><p>  printf("\ninput the time when the worker begin to work ");</p><p>  scanf("%s",p->w[i].wo

25、rkage);</p><p>  printf("\ninput which school the worker graduate frow ");</p><p>  scanf("%s",p->w[i].xueli);</p><p>  printf("\ninput position ");

26、</p><p>  scanf("%s",p->w[i].position);</p><p>  printf("\ninput adress ");</p><p>  scanf("%s",p->w[i].adress);</p><p>  printf(&qu

27、ot;\ninput tel ");</p><p>  scanf("%s",p->w[i].tel);</p><p>  p->length++;</p><p><b>  }</b></p><p><b>  save(p);</b></p

28、><p><b>  }</b></p><p>  int save(work p)</p><p>  { FILE *fp;</p><p>  char filename[20];</p><p><b>  int i;</b></p><p>

29、  printf("Please input the filename\n");</p><p>  scanf("%s",filename);</p><p>  if((fp=fopen(filename,"wb"))==NULL)</p><p>  {printf("can't o

30、pen file\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  fwrite(&n,sizeof(int),1,fp);</p><p>  for(i=1;i<=n;i++)</p>

31、<p>  if(fwrite(&(p->w[i]),sizeof(worker),1,fp)!=1)</p><p>  printf("file write error\n");</p><p>  fclose(fp);</p><p><b>  }</b></p><p&

32、gt;  void load(work p)</p><p>  {FILE *fp;</p><p><b>  int i;</b></p><p>  char filename[20];</p><p>  p->length=0;</p><p>  printf("Pl

33、ease input the filename\n");</p><p>  scanf("%s",filename);</p><p>  if((fp=fopen(filename,"rb"))==NULL)</p><p>  {printf("cannot open file\n");&l

34、t;/p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("File has been open:\n");</p><p>  printf("File is:\n");</p>

35、<p>  fread(&n,sizeof(int),1,fp);</p><p>  printf("%d\n",n);</p><p><b>  getch();</b></p><p>  for (i=1;i<=n;i++)</p><p><b>  {

36、</b></p><p>  fread(&p->w[i],sizeof(struct worker),1,fp);</p><p>  p->length++;</p><p><b>  }</b></p><p>  fclose(fp);</p><p>&

37、lt;b>  }</b></p><p>  void shellsort(work q,int data[],int t)</p><p><b>  {</b></p><p><b>  int k;</b></p><p>  for(k=0;k<t;++k)<

38、/p><p>  shellsert(q,data[k]);</p><p><b>  }</b></p><p>  int shellsert(work p,int dk)</p><p><b>  {</b></p><p><b>  int i,j;<

39、;/b></p><p>  for(i=dk+1;i<=p->length;i++)</p><p>  if(strcmp(p->w[i].name,p->w[i-dk].name)<=0)</p><p><b>  {</b></p><p>  p->w[0]=p-&g

40、t;w[i];</p><p>  for(j=i-dk;j>0&&strcmp(p->w[0].name,p->w[j].name)<=0;j-=dk)</p><p>  p->w[j+dk]=p->w[j];</p><p>  p->w[j+dk]=p->w[0];</p><

41、;p><b>  }</b></p><p><b>  }</b></p><p>  void insertwork(work p,worker q)</p><p><b>  {</b></p><p><b>  int i,j;</b>&

42、lt;/p><p>  i=p->length;</p><p>  while(strcmp(q.name,p->w[i].name)<=0)</p><p><b>  {</b></p><p>  p->w[i+1]=p->w[i];</p><p><b&

43、gt;  i--;</b></p><p><b>  }</b></p><p>  p->w[i+1]=q;</p><p>  p->length++;</p><p><b>  n++;</b></p><p><b>  }<

44、;/b></p><p>  int delete(work p,char *name)</p><p><b>  {</b></p><p>  int i=1,j,k;</p><p>  if(p->length==0)</p><p><b>  return 0;

45、</b></p><p>  while((strcmp(name,p->w[i].name)!=0)&&(i<=p->length))</p><p><b>  ++i;</b></p><p>  if(strcmp(name,(p->w[i].name))==0)</p>

46、<p><b>  {</b></p><p><b>  k=i;</b></p><p>  for(j=k;j<p->length;j++)</p><p>  p->w[j]=p->w[j+1];</p><p>  p->length--;<

47、/p><p><b>  n--;</b></p><p><b>  return k;</b></p><p><b>  }</b></p><p>  else return 0;</p><p><b>  }</b><

48、/p><p>  int changework(work p,char *name)</p><p><b>  {</b></p><p>  int i=1,j,m;</p><p>  system("cls");</p><p>  while((strcmp(name,p

49、->w[i].name)!=0)&&(i<=p->length))</p><p><b>  ++i;</b></p><p>  if(strcmp(name,(p->w[i].name))==0)</p><p><b>  {</b></p><p>

50、  printf("\n do you want to change the work's name,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b&

51、gt;</p><p>  printf("\n please input name ");</p><p>  scanf("%s",p->w[i].name);</p><p><b>  }</b></p><p>  printf("\n do you wa

52、nt to change the work's sex,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p>  {getchar();</p><p><b>  do

53、{</b></p><p>  printf("\ninput %s's sex,1:man,2:woman ",p->w[i].name);</p><p>  scanf("%d",&m);</p><p>  getchar();</p><p><b>

54、;  switch(m)</b></p><p><b>  {</b></p><p>  case 1:strcpy(p->w[i].sex,"man");break;</p><p>  case 2:strcpy(p->w[i].sex,"woman");break;<

55、;/p><p>  default:printf("input wrong,please input anain");m=0;break;</p><p><b>  }</b></p><p>  }while(m==0);</p><p><b>  }</b></p>

56、;<p>  printf("\n do you want to change the work's birthday,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><

57、;b>  {</b></p><p>  printf("\n please input birthday ");</p><p>  scanf("%s",p->w[i].birthday);</p><p><b>  }</b></p><p>  p

58、rintf("\n do you want to change the work's workage,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b&

59、gt;</p><p>  printf("\n please input workage ");</p><p>  scanf("%s",p->w[i].workage);</p><p><b>  }</b></p><p>  printf("\n do

60、you want to change the work's xueli,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p

61、>  printf("\n please input xueli ");</p><p>  scanf("%s",p->w[i].xueli);</p><p><b>  }</b></p><p>  printf("\n do you want to change the w

62、ork's position,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p>  printf("\n

63、 please input position ");</p><p>  scanf("%s",p->w[i].position);</p><p><b>  }</b></p><p>  printf("\n do you want to change the work's adres

64、s,1:yes,2:no");</p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p>  printf("\n please input adr

65、ess ");</p><p>  scanf("%s",p->w[i].adress);</p><p><b>  }</b></p><p>  printf("\n do you want to change the work's tel,1:yes,2:no");<

66、/p><p>  scanf("%d",&j);</p><p><b>  if(j==1)</b></p><p><b>  {</b></p><p>  printf("\n please input tel ");</p><

67、;p>  scanf("%s",p->w[i].tel);</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else return 0;&

68、lt;/p><p><b>  }</b></p><p>  int chayuework(work p,char *name)</p><p><b>  {</b></p><p><b>  int i=1;</b></p><p>  system

69、("cls");</p><p>  while(strcmp(name,(p->w[i].name))!=0&&i<=p->length)</p><p><b>  ++i;</b></p><p>  if(strcmp(name,(p->w[i].name))==0)</

70、p><p>  {printf("\nthe %d's worker name is %s",i,p->w[i].name);</p><p>  printf("\nthe %d's worker sex,is %s",i,p->w[i].sex);</p><p>  printf("\n

71、the %d's worker birthday is %s",i,p->w[i].birthday);</p><p>  printf("\nthe %d's worker workage is %s",i,p->w[i].workage);</p><p>  printf("\nthe %d's worke

72、r graduate from %s",i,p->w[i].xueli);</p><p>  printf("\nthe %d's worker position is %s",i,p->w[i].position);</p><p>  printf("\nthe %d's worker adress is %s&qu

73、ot;,i,p->w[i].adress);</p><p>  printf("\nthe %d's worker tel is %s",i,p->w[i].tel);</p><p><b>  return i;</b></p><p><b>  }</b></p>

74、;<p>  else return 0;</p><p><b>  }</b></p><p>  void qsort(work l,int low,int high)</p><p>  { int p=0;</p><p>  if(low<high)</p><p>

75、;  {p=quicksort(l,low,high);</p><p>  qsort(l,low,p-1);</p><p>  qsort(l,p+1,high);</p><p><b>  }</b></p><p><b>  }</b></p><p>  in

76、t quicksort(work l,int low,int high)</p><p><b>  {</b></p><p><b>  int p;</b></p><p>  l->w[0]=l->w[low];</p><p>  while(low<high)</

77、p><p><b>  {</b></p><p>  while((low<high)&&(strcmp(l->w[high].name,l->w[low].name)>=0))</p><p><b>  high--;</b></p><p>  l->

78、;w[low]=l->w[high];</p><p>  while((low<high)&&(strcmp(l->w[high].name,l->w[low].name)<=0))</p><p><b>  low++;</b></p><p>  l->w[high]=l->w[

79、low];</p><p><b>  }</b></p><p>  l->w[low]=l->w[0];</p><p><b>  p=high;</b></p><p><b>  return p;</b></p><p><

80、b>  }</b></p><p>  int travser(work p)</p><p><b>  {int i;</b></p><p>  for(i=1;i<=p->length;i++)</p><p>  { system("cls");</p&g

81、t;<p>  printf("\nthe %d's worker name is %s",i,p->w[i].name);</p><p>  printf("\nthe %d's worker sex,is %s",i,p->w[i].sex);</p><p>  printf("\nthe

82、%d's worker birthday is %s",i,p->w[i].birthday);</p><p>  printf("\nthe %d's worker workage is %s",i,p->w[i].workage);</p><p>  printf("\nthe %d's worker gr

83、aduate from %s",i,p->w[i].xueli);</p><p>  printf("\nthe %d's worker position is %s",i,p->w[i].position);</p><p>  printf("\nthe %d's worker adress is %s",

84、i,p->w[i].adress);</p><p>  printf("\nthe %d's worker tel is %s",i,p->w[i].tel);</p><p>  system("pause");</p><p><b>  }</b></p><

85、;p>  printf("\nthere are %d workers",p->length);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  char s[10],na

86、me[15];</p><p>  int flag=0,a,b,c,d,e,f,i,g,j,k,data[3],m=3;</p><p><b>  worker p;</b></p><p><b>  wor v,w;</b></p><p>  work worke,workee;</

87、p><p><b>  worke=&w;</b></p><p>  workee=&v;</p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("please inp

88、ut you mima:\n");</p><p>  scanf("%s",s);</p><p>  if(!strcmp(s,password))</p><p><b>  {</b></p><p>  printf("congrulation\n");<

89、/p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {<

90、/b></p><p>  printf("input wrong,please input anain\n:\n");</p><p><b>  m--;</b></p><p><b>  }</b></p><p>  }while(m>0);</p&g

91、t;<p><b>  if(!flag)</b></p><p><b>  {</b></p><p>  printf("you have inputtden threes times.\n");</p><p><b>  return;</b></p&

92、gt;<p><b>  }</b></p><p><b>  do{</b></p><p>  getchar();</p><p>  printf("do you need to recreat\n1:yes\n2:no\n");</p><p>  sc

93、anf("%d",&g);</p><p><b>  switch(g)</b></p><p><b>  {</b></p><p>  case 1:printf("input how many workers do you need\n");</p>

94、<p>  scanf("%d",&n);</p><p>  creatwork(workee,n);</p><p><b>  break;</b></p><p>  case 2:break;</p><p>  default:printf("input wro

95、ng,please inout again\n");</p><p><b>  g=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(g==0);</p><

96、p>  printf("please choose which function do you need:\n0:loadf,\n1:shellsort,\n2:insertwork,\n3:delete,\n4:chaxun,\n5:changework,\n6:qsort,\n7:travser,\n8:save,\n9:game over,\nyou choose is");</p><

97、;p>  scanf("%d",&k);</p><p>  while(k!=9)</p><p><b>  {</b></p><p><b>  switch(k)</b></p><p><b>  {</b></p>

98、<p>  case 0:load(worke);break;</p><p>  case 1:for(i=0;i<3;i++)</p><p><b>  {</b></p><p>  printf("input %dth number\n",i);</p><p>  scan

99、f("%d",&data[i]);</p><p><b>  }</b></p><p>  shellsort(worke,data,3);</p><p><b>  break;</b></p><p>  case 2:printf("\ninput

100、name ");</p><p>  scanf("%s",p.name);</p><p>  getchar();</p><p>  e=chayuework(worke,p.name);</p><p><b>  if(e!=0)</b></p><p>&

101、lt;b>  {</b></p><p>  printf("\n there has a elemtype that has the same name,do you need to insert again\n1:yes\n2:no");</p><p>  scanf("%d",&f);</p><

102、p><b>  if(f==2)</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  do{</b></p><p>  printf("\ninput %s'

103、;s sex,1:man,2:woman ",p.name);</p><p>  scanf("%d",&d);</p><p>  getchar();</p><p><b>  switch(d)</b></p><p><b>  {</b></

104、p><p>  case 1:strcpy(p.sex,"man");</p><p><b>  break;</b></p><p>  case 2:strcpy(p.sex,"woman");</p><p><b>  break;</b></p&

105、gt;<p>  default:printf("input wrong,please input anain");d=0;break;</p><p><b>  }</b></p><p>  }while(d==0);</p><p>  printf("\ninput %s's bir

106、thday ",p.sex);</p><p>  scanf("%s",p.birthday);</p><p>  printf("\ninput the time when the worker begin to work ");</p><p>  scanf("%s",p.workage

107、);</p><p>  printf("\ninput which school the worker graduate from ");</p><p>  scanf("%s",p.xueli);</p><p>  printf("\ninput position ");</p>&l

108、t;p>  scanf("%s",p.position);</p><p>  printf("\ninput adress ");</p><p>  scanf("%s",p.adress);</p><p>  printf("\ninput tel ");</p>

109、;<p>  scanf("%s",p.tel);</p><p>  insertwork(worke,p);</p><p><b>  break;</b></p><p>  case 3:printf("input the worker's name you want to dele

110、te");</p><p>  scanf("%s",name);</p><p>  a=delete(worke,name);</p><p><b>  if(a==0)</b></p><p>  printf("\nthere is not the worker you

111、want delete");</p><p>  else printf("\nthe worker you want to delete is the %d's worker",a);</p><p><b>  break;</b></p><p>  case 4:printf("input

112、 the worker's name you want to chaxun");</p><p>  scanf("%s",name);</p><p>  b=chayuework(worke,name);</p><p><b>  if(b==0)</b></p><p>  

113、printf("\nthere is not the worker you want delete");</p><p>  else printf("\nthe worker you want to chaxune is the %d's worker",b);</p><p><b>  break;</b><

114、/p><p>  case 5:printf("input the worker's name you want to change");</p><p>  scanf("%s",name);</p><p>  c=changework(worke,name);</p><p><b>

115、;  if(c==0)</b></p><p>  printf("\nthere is not the worker you want change");</p><p>  else printf("\nthe worker you want to change is the %d's worker",c);</p>

116、;<p><b>  break;</b></p><p>  case 6:qsort(worke,1,n);</p><p><b>  break;</b></p><p>  case 7:travser(worke);</p><p><b>  break;<

117、;/b></p><p>  case 8:save(worke);</p><p>  default:printf("Error!!Please choose again!");break;</p><p><b>  }</b></p><p>  system("cls&quo

118、t;);</p><p>  printf("please choose which function do you need:\n0:loadf,\n1:shellsort,\n2:insertwork,\n3:delete,\n4:chaxun,\n5:changework,\n6:qsort,\n7:travser,\n8:save,\n9:game over,\nyou choose is&qu

119、ot;);</p><p>  scanf("%d",&k);</p><p><b>  }</b></p><p><b>  getch();</b></p><p><b>  }</b></p><p> ?。?)程

120、序的輸入和輸出(可附圖)</p><p>  圖2-1 向w[]數(shù)組中輸入數(shù)據(jù)并輸出可以選擇</p><p>  圖2-2選擇向w[]數(shù)組中輸入數(shù)據(jù)并輸出,顯示菜單界面</p><p>  圖2-3選擇不向w[]數(shù)組中輸入數(shù)據(jù)</p><p>  圖2-4 輸入自己的添加選擇并顯示添加結(jié)果</p><p><b&

121、gt;  圖2-5功能菜單</b></p><p>  圖2-6 輸入文件名并打開文件將其值賦給v[]</p><p>  圖2-7 將v[]中職工信息輸出</p><p>  圖2-8 運(yùn)用希爾排序使元素信息有序</p><p>  圖2-9 順序插入一個(gè)元素</p><p>  圖2-10 刪除一個(gè)職工

122、信息</p><p>  圖2-11 查閱某個(gè)職工信息</p><p>  圖2-12 修改某個(gè)職工的某些信息</p><p>  圖2-13 快速排序使職工信息按字典順序存儲(chǔ)</p><p>  圖2-14 使元素順序輸出</p><p>  按8整個(gè)程序運(yùn)行完畢</p><p>  (5)調(diào)

123、試程序中遇到的問題及解決方案</p><p>  問題1:在輸出時(shí)由于信息太多致使有的信息不能在輸出欄中顯示。</p><p>  問題2:輸出的無用信息不能及時(shí)的清除掉。</p><p>  解決方案:經(jīng)過查資料知道運(yùn)用system(“pauses”);可以顯示最近文件內(nèi)容,解決了第一個(gè)問題。后有知道運(yùn)用system(“sls”);可以刪除最近輸出的內(nèi)容,解決了第

124、二個(gè)問題。</p><p><b>  2.4 思考題解析</b></p><p>  所選擇的思考題:試設(shè)計(jì)構(gòu)造一個(gè)哈希表的算法。哈希函數(shù)用除留余數(shù)法構(gòu)造,用線性探測(cè)再散列或鏈地址法處理沖突。程序如下:</p><p>  #include<stdio.h></p><p>  typedef struct

125、 student</p><p><b>  {</b></p><p><b>  int key;</b></p><p>  char name[15];</p><p>  int chengji;</p><p>  int panduan;</p>

126、<p>  }student,*stude;</p><p>  void creat(stude st,int n)</p><p><b>  {</b></p><p>  int i,b,key;</p><p><b>  stude s;</b></p><

127、p><b>  s=st;</b></p><p>  for(i=0;i<n;i++)</p><p>  s[i].panduan=0;</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  p

128、rintf("please input the key of the %dth elemtype\n",i);</p><p>  scanf("%d",&key);</p><p>  b=bijiao(s,key,n);</p><p>  s[b].key=key;</p><p>  p

129、rintf("please input the name of the %dth elemtype\n",i);</p><p>  scanf("%s",s[b].name);</p><p>  printf("please input the chengji of the %dth elemtype\n",i);</p

130、><p>  scanf("%d",&s[b].chengji);</p><p>  s[b].panduan=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int bijiao(stude

131、 stu,int key,int n)</p><p><b>  {</b></p><p>  int a,i=0;</p><p><b>  do{</b></p><p>  a=(key+i)%n;</p><p><b>  i++;</b>

132、;</p><p>  }while(stu[a].panduan==1);</p><p><b>  return a;</b></p><p><b>  }</b></p><p>  void print(stude stu,int n)</p><p><b

133、>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)</p><p>  if(stu[i].panduan==1)</p><p><b>  {</b></p><p>  pri

134、ntf("the key of the %dth elemtype is %d\n",i,stu[i].key);</p><p>  printf("the name of the %dth elemtype is %s\n",i,stu[i].name);</p><p>  printf("the chengji of the %dt

135、h elemtype is %d\n",i,stu[i].chengji);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p>&l

136、t;p>  int a,b,c,i;</p><p>  student stu[11];</p><p><b>  stude st;</b></p><p><b>  st=stu;</b></p><p>  printf("please input the number

137、of the elemtypes do you need:i<=11\n");</p><p>  scanf("%d",&i);</p><p>  creat(st,i);</p><p>  print(st,11);</p><p><b>  getch();</b>

138、</p><p><b>  }</b></p><p><b>  程序分析:</b></p><p>  哈希表的的構(gòu)造過程就是一個(gè)邊查找邊插入的過程。先用除留余數(shù)法算出該關(guān)鍵字的哈希地址,然后在哈希表中查找該哈希地址下是否存在其他關(guān)鍵字。若有,則再根據(jù)線性探測(cè)再散列的方法處理沖突,計(jì)算出下一個(gè)哈希地址,繼續(xù)查找;若沒

139、有,將該關(guān)鍵字插入到這個(gè)位置。</p><p><b>  總 結(jié)</b></p><p>  本次課程設(shè)計(jì)對(duì)我來說應(yīng)該是最成功也最有效的一次</p><p>  這次我選的使第五類題中的第一個(gè)題,選擇這道題的原因使因?yàn)槲矣X得這十分具有現(xiàn)實(shí)意義,具有可使用性,對(duì)于以后進(jìn)入工作崗位非常的有幫助。</p><p>  本程序

140、的主要功能如下</p><p> ?。?)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p>  (3)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p> ?。?)修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。</p>

141、;<p> ?。?)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><p>  在編程中,我運(yùn)用了七個(gè)主要的子函數(shù),一個(gè)是從文件中讀入職工信息,第二個(gè)是希爾排序,第三個(gè)是順序插入一個(gè)元素,第四個(gè)是查找某個(gè)職工的信息,第五個(gè)是輸入姓名刪除這個(gè)職工的信息。第六個(gè)是按姓名快速排序,第七個(gè)是輸入所有職工的信息。</p><p>  這次編程總體說來遇到了非常多的困難,開始時(shí)的確覺得

142、應(yīng)該是非常簡(jiǎn)單的程序,在做的過程中漏洞百出,一個(gè)非常明顯的錯(cuò)誤,也是一個(gè)非常常見的錯(cuò)誤就是在按照姓名比較的時(shí)候經(jīng)常會(huì)出現(xiàn)只要第一個(gè)字母相同就會(huì)輸出的問題,在費(fèi)了好大勁之后才把其中的原因弄明白,雖然很簡(jiǎn)單,但是讓我明白,無論多么小的一個(gè)知識(shí)點(diǎn),只要不會(huì),就會(huì)遇到非常大的麻煩,還有一個(gè)問題,也在上面提到過,就是輸出的時(shí)候,由于內(nèi)容過多,致使有些內(nèi)容不可見,或者是前面的輸出弄亂了屏幕,使得不容易判斷,在查過書之后,發(fā)現(xiàn)用一個(gè)非常小的語句就能把

143、這些問題給解決掉。當(dāng)然了,還有一些其他的問題,就沒有必要一一說出來。</p><p>  盡管遇到這么多麻煩,我還是非常滿意,因?yàn)檫@是我完全是我自己編寫的,雖然不是很完美,但是我已經(jīng)非常盡力了。在整個(gè)編程的過程中,我也體會(huì)到了作為一個(gè)編程人員的煩惱與快樂,并且堅(jiān)定了自己從事程序開發(fā)這個(gè)方向的決心與信心。我相信自己會(huì)成為一名非常優(yōu)秀的程序員。</p><p>  還有的收獲就是要經(jīng)常的查找資

144、料,善于和同學(xué)交流,這樣自己才能更快的發(fā)展。</p><p>  給我的啟示就是要經(jīng)常性的編程,經(jīng)常性的看書。</p><p><b>  本人簽字: </b></p><p><b>  參考文獻(xiàn)</b></p><p>  1.徐孝凱,魏榮《數(shù)據(jù)結(jié)構(gòu)》,機(jī)械工業(yè)出版社,1996年</p&

145、gt;<p>  2.徐孝凱《數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)明教程》,清華大學(xué)出版社,1995年</p><p>  3.陳文博,朱青《數(shù)據(jù)結(jié)構(gòu)與算法》,機(jī)械工業(yè)出版社,1996年 </p><p>  4.許卓群,張乃孝,楊冬青,唐世渭《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社,1988年 </p><p>  5.李廉治,姜文清,郭福順《數(shù)據(jù)結(jié)構(gòu)》,大連理工大學(xué)出版社,1989年&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論