數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第1頁
已閱讀1頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計(jì) 成 果 報(bào) 告</p><p>  題 目: 1.用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘運(yùn)算 </p><p><b>  2. 成績分析問題</b></p><p>  課 程: 數(shù)據(jù)結(jié)構(gòu)A課程設(shè)計(jì)</p><p>  院 (部):

2、 管理工程學(xué)院</p><p>  專 業(yè): 信息管理與信息系統(tǒng)</p><p>  班 級(jí): </p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師:

3、</p><p>  完成日期: 2014年1月1日</p><p><b>  目錄</b></p><p>  一、課程設(shè)計(jì)概述3</p><p>  二、課程設(shè)計(jì)題目一3</p><p><b>  [問題描述]3</b></p>

4、<p><b>  [詳細(xì)設(shè)計(jì)]3</b></p><p><b>  [調(diào)試分析]4</b></p><p>  [運(yùn)行結(jié)果及分析]4</p><p>  三、課程設(shè)計(jì)題目二5</p><p><b>  [問題描述]5</b></p>&l

5、t;p><b>  [需求分析]5</b></p><p><b>  [概要設(shè)計(jì)]5</b></p><p><b>  [存儲(chǔ)結(jié)構(gòu)]6</b></p><p><b>  [流程圖]7</b></p><p><b>  [詳細(xì)

6、設(shè)計(jì)]7</b></p><p><b>  [調(diào)試分析]21</b></p><p>  [運(yùn)行結(jié)果及分析]21</p><p>  四、參考文獻(xiàn):27</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  一、課程設(shè)計(jì)

7、概述</b></p><p>  本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)共完成三個(gè)題:1、用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題;2、成績分析問題。</p><p><b>  使用語言:C</b></p><p>  編譯環(huán)境:vc6.0</p><p><b>  二、課程設(shè)計(jì)題目一</b></p>

8、<p><b>  [問題描述]</b></p><p><b>  程序結(jié)構(gòu):</b></p><p>  #include “stdio.h”</p><p>  int r[6][6];</p><p>  void mult(int a[6][6] , int b[6]

9、[6])</p><p><b>  { } </b></p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  int

10、num1[6][6],num2[6][6];</p><p>  printf(“請輸入第一個(gè)矩陣的值:”,);</p><p>  for(i=1;i<=6;i++)</p><p>  for(j=1;j<=6;j++)</p><p>  scanf(“%d”,&num1[i][j]);</p><

11、;p>  printf(“請輸入第二個(gè)矩陣的值:”,);</p><p>  for(i=1;i<=6;i++)</p><p>  for(j=1;j<=6;j++)</p><p>  scanf(“%d”,&num2[i][j]);</p><p>  mult(num1,num2);</p>&

12、lt;p>  printf(“\n兩個(gè)矩陣相乘后的結(jié)果為:”);</p><p>  for(i=1;i<=6;i++)</p><p>  {for(j=1;j<=6;j++)</p><p>  printf(“%4d”,r[i][j]);</p><p>  printf(“\n”);</p><p

13、><b>  }</b></p><p><b>  }</b></p><p><b>  要求及提示:</b></p><p>  要求完善函數(shù)mult( ),</p><p>  現(xiàn)有A,B兩個(gè)矩陣,要求用上述程序求出A與B相乘后的運(yùn)行結(jié)果,</p>

14、<p><b>  [詳細(xì)設(shè)計(jì)]</b></p><p>  #include <stdio.h></p><p>  int r[6][6];</p><p>  void mult(int a[6][6] , int b[6][6])</p><p><b>  {</b

15、></p><p><b>  int m,n;</b></p><p>  for(m=0;m<6;m++)</p><p><b>  {</b></p><p>  for(n=0;n<6;n++)</p><p><b>  {</b

16、></p><p>  r[m][n]=a[m][n]*b[n][m];</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  main()&

17、lt;/b></p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  int num1[6][6],num2[6][6];</p><p>  printf("請輸入第一個(gè)矩陣的值: \n ");</p>

18、;<p>  for(i=0;i<6;i++)</p><p>  for(j=0;j<6;j++)</p><p>  scanf("%d",&num1[i][j]);</p><p>  printf("請輸入第二個(gè)矩陣的值: \n ");</p><p>  fo

19、r(i=0;i<6;i++)</p><p>  for(j=0;j<6;j++)</p><p>  scanf("%d",&num2[i][j]);</p><p>  mult(num1,num2);</p><p>  printf("\n兩個(gè)矩陣相乘后的結(jié)果為:\n");&

20、lt;/p><p>  for(i=0;i<6;i++)</p><p>  {for(j=0;j<6;j++)</p><p>  printf("%4d",r[i][j]);</p><p>  printf("\n");</p><p><b>  }&l

21、t;/b></p><p><b>  }</b></p><p><b>  [調(diào)試分析]</b></p><p>  本程序通過定義二維數(shù)組來存儲(chǔ)矩陣,利用循環(huán)結(jié)構(gòu)來完成運(yùn)算,再通過調(diào)用函數(shù)完成運(yùn)算。</p><p><b>  問題一:</b></p>

22、<p>  現(xiàn)象:矩陣的第一行和第一列無法完成正常的矩陣運(yùn)算后的輸出。</p><p>  原因:在原題目中,程序給出輸出循環(huán)體的控制變量賦值錯(cuò)誤。</p><p><b>  [運(yùn)行結(jié)果及分析]</b></p><p><b>  三、課程設(shè)計(jì)題目二</b></p><p><b

23、>  成績分析文檔資料</b></p><p><b>  [問題描述]</b></p><p>  錄入、保存一個(gè)班級(jí)學(xué)生多門課程的成績,并對成績進(jìn)行分析。</p><p><b>  [需求分析]</b></p><p>  1.通過鍵盤輸入各學(xué)生的多門課程的成績,建立相應(yīng)的文

24、件input.dat</p><p>  2.對文件input.dat中的數(shù)據(jù)進(jìn)行處理,要求具有如下功能:</p><p>  a.按各門課程成績排序,并生成相應(yīng)的文件輸出</p><p>  b.計(jì)算每人的平均成績,按平均成績排序,并生成文件</p><p>  c.求出各門課程的平均成績、最高分、最低分、不及格人數(shù)、</p>

25、<p>  60-69分人數(shù)、70-79分人數(shù)、80-89分人數(shù)、90分以上人數(shù)</p><p>  d.根據(jù)姓名或?qū)W號(hào)查詢某人的各門課成績,重名也要能處理</p><p><b>  3.界面美觀</b></p><p><b>  [概要設(shè)計(jì)]</b></p><p><b&g

26、t;  -=ADT=-</b></p><p><b>  {</b></p><p>  Void initlinklist();</p><p>  //單鏈表初始化,建立鏈表</p><p>  void creat();</p><p><b>  //錄入學(xué)生信息&

27、lt;/b></p><p>  void prnt(linklist *p);</p><p><b>  //輸出單條記錄</b></p><p>  void search();</p><p>  //查找指定學(xué)號(hào)的學(xué)生</p><p>  void mathp(linklist *

28、p);</p><p><b>  //輸出數(shù)學(xué)</b></p><p>  void engp(linklist *p);</p><p><b>  //輸出英語</b></p><p>  void comp(linklist *p);</p><p><b>

29、;  //輸出計(jì)算機(jī)</b></p><p>  void g_d();</p><p><b>  //輸出最高最低分</b></p><p>  void aver();</p><p><b>  //輸出平均成績</b></p><p>  void ma

30、thinfo();</p><p><b>  // 數(shù)學(xué)成績分段</b></p><p>  void enginfo();</p><p><b>  // 英語成績分段</b></p><p>  void cominfo();</p><p>  // 計(jì)算機(jī)成績分段

31、</p><p>  void sortmath();</p><p><b>  //數(shù)學(xué)成績排序</b></p><p>  void sorteng();</p><p><b>  //英語成績排序</b></p><p>  void sortcom();</

32、p><p><b>  //計(jì)算機(jī)成績排序</b></p><p>  void main();</p><p>  //主函數(shù),調(diào)用其他功能函數(shù)</p><p><b>  )</b></p><p><b>  [存儲(chǔ)結(jié)構(gòu)]</b></p>

33、<p>  typedef struct STUDENT</p><p><b>  {</b></p><p>  char no[7];</p><p>  char name[9];</p><p><b>  int math;</b></p><p>&

34、lt;b>  int eng;</b></p><p><b>  int com;</b></p><p>  struct STUDENT *next;</p><p>  }linklist;//定義結(jié)構(gòu)體</p><p>  linklist *findn(linklist *head,char

35、 *no) </p><p><b>  {</b></p><p>  linklist *p;</p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b><

36、/p><p>  if(strcmp(p->no,no)==0)</p><p><b>  return p;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  return NULL;</p&g

37、t;<p>  } //查找指定學(xué)號(hào)的學(xué)生,返回該結(jié)點(diǎn)的地址,用于檢驗(yàn)該組數(shù)據(jù)是否存在</p><p>  linklist *findm(linklist *head,char *name)</p><p><b>  {</b></p><p>  linklist *p;</p><p>  p=he

38、ad->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(strcmp(p->name,name)==0)</p><p><b>  return p;</b></p>

39、<p>  p=p->next;</p><p><b>  }</b></p><p>  return NULL;</p><p>  }//查找指定姓名的學(xué)生,返回該結(jié)點(diǎn)的地址,用于檢驗(yàn)是否存在該數(shù)據(jù)</p><p><b>  [流程圖]</b></p>&l

40、t;p>  int Partition(KeyWord* RL, int low, int high) //快速排序第一趟</p><p><b>  [詳細(xì)設(shè)計(jì)]</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p>

41、<p>  #include <string.h></p><p>  struct STUDENT</p><p><b>  {</b></p><p>  char no[7];</p><p>  char name[9];</p><p><b>  i

42、nt math;</b></p><p><b>  int eng;</b></p><p><b>  int com;</b></p><p>  struct STUDENT *next;</p><p><b>  };</b></p>&l

43、t;p>  typedef struct STUDENT linklist;</p><p>  linklist *head=NULL;</p><p>  void initlinklist() //單鏈表的初始化,生成一個(gè)空的單鏈表</p><p><b>  {</b></p><p>  head=(li

44、nklist *)malloc(sizeof(linklist)); //生成頭結(jié)點(diǎn)</p><p>  head->next=NULL;</p><p><b>  }</b></p><p>  linklist *findm(linklist *head,char *name)//查找指定姓名的學(xué)生,返回該結(jié)點(diǎn)的地址,用于檢驗(yàn)是否存

45、在該數(shù)據(jù)</p><p><b>  {</b></p><p>  linklist *p;</p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p

46、><p>  if(strcmp(p->name,name)==0)</p><p><b>  return p;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  return NULL;</p&g

47、t;<p><b>  }</b></p><p>  linklist *findn(linklist *head,char *no) //查找指定學(xué)號(hào)的學(xué)生,返回該結(jié)點(diǎn)的地址</p><p><b>  {</b></p><p>  linklist *p;</p><p> 

48、 p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(strcmp(p->no,no)==0)</p><p><b>  return p;</b></p>

49、<p>  p=p->next;</p><p><b>  }</b></p><p>  return NULL;</p><p><b>  }</b></p><p>  void creat()</p><p><b>  {<

50、;/b></p><p><b>  //錄入學(xué)生信息</b></p><p>  struct STUDENT *p;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  p=(str

51、uct STUDENT *)malloc(sizeof(struct STUDENT));</p><p>  printf("學(xué)號(hào):");</p><p>  fflush(stdin);//清除緩存</p><p>  gets(p->no);</p><p>  printf("姓名:");

52、</p><p>  fflush(stdin);</p><p>  gets(p->name);</p><p>  printf("數(shù)學(xué)成績:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&(p->m

53、ath));</p><p>  printf("英語成績:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&(p->eng));</p><p>  printf("計(jì)算機(jī)成績:");</p><

54、p>  fflush(stdin);</p><p>  scanf("%d",&(p->com));</p><p>  p->next=head->next;</p><p>  head->next=p;</p><p>  printf("是否要繼續(xù)錄入?(y/n)&

55、quot;);</p><p>  fflush(stdin);</p><p>  if(getchar()=='n')break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void prnt(li

56、nklist *p) //輸出單條記錄</p><p><b>  {</b></p><p>  printf("\n---------------------------------------------------\n");</p><p>  printf(" 學(xué)號(hào):%s",p->no

57、);</p><p>  printf("\t姓名:%s",p->name);</p><p>  printf("\t數(shù)學(xué):%d",p->math);</p><p>  printf("\t英語:%d",p->eng);</p><p>  printf(&qu

58、ot;\t計(jì)算機(jī):%d",p->com);</p><p>  printf("\n---------------------------------------------------\n");</p><p><b>  }</b></p><p>  void search() //查找指定學(xué)號(hào)或姓名

59、的學(xué)生</p><p><b>  {</b></p><p>  char no[7];</p><p>  char name[9];</p><p>  linklist *p=NULL;</p><p>  printf("學(xué)號(hào)查詢請輸入1,姓名查詢輸入0: ");&

60、lt;/p><p>  fflush(stdin);</p><p>  if(getchar()=='1')</p><p><b>  {</b></p><p>  printf("按學(xué)號(hào)查詢:\n");</p><p>  printf("請輸入要

61、查詢的學(xué)號(hào):");</p><p>  fflush(stdin);</p><p><b>  gets(no);</b></p><p>  p=findn(head,no);</p><p>  if(p==NULL)</p><p>  printf("對不起,沒有找到

62、滿足條件記錄!\n");</p><p>  p=head->next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(strcmp(p->no,no)==0)</p><p><b>  {&l

63、t;/b></p><p>  printf("\n---------------------------------------------------\n");</p><p>  printf(" 學(xué)號(hào):%s",p->no);</p><p>  printf("\t姓名:%s",p-&g

64、t;name);</p><p>  printf("\t數(shù)學(xué):%d",p->math);</p><p>  printf("\t英語:%d",p->eng);</p><p>  printf("\t計(jì)算機(jī):%d",p->com);</p><p>  prin

65、tf("\n---------------------------------------------------\n");</p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b

66、>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("按姓名查詢:\n");</p><p>  printf("請輸入要查詢的姓名:");</p&g

67、t;<p>  fflush(stdin);</p><p>  gets(name);</p><p>  //=============================================</p><p>  p=findm(head,name);</p><p>  if(p==NULL)printf(&quo

68、t;對不起,沒有找到滿足條件記錄!\n");</p><p>  p=head->next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(strcmp(p->name,name)==0)</p><p>

69、<b>  {</b></p><p>  printf("\n---------------------------------------------------\n");</p><p>  printf(" 學(xué)號(hào):%s",p->no);</p><p>  printf("\t姓名

70、:%s",p->name);</p><p>  printf("\t數(shù)學(xué):%d",p->math);</p><p>  printf("\t英語:%d",p->eng);</p><p>  printf("\t計(jì)算機(jī):%d",p->com);</p>&

71、lt;p>  printf("\n---------------------------------------------------\n");</p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p>

72、<p><b>  }</b></p><p><b>  }</b></p><p>  void mathp(linklist *p) //輸出數(shù)學(xué)</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",p

73、->no);</p><p>  printf("\t姓名:%s",p->name);</p><p>  printf("\t數(shù)學(xué):%d",p->math);</p><p><b>  }</b></p><p>  void engp(linklist *p

74、)//輸出英語</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",p->no);</p><p>  printf("\t姓名:%s",p->name);</p><p>  printf("\t英語:%d"

75、;,p->eng);</p><p><b>  }</b></p><p>  void comp(linklist *p)//輸出計(jì)算機(jī)</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",p->no);</p>

76、;<p>  printf("\t姓名:%s",p->name);</p><p>  printf("\t計(jì)算機(jī):%d",p->com);</p><p><b>  }</b></p><p>  void g_d()//從高到低成績排序</p>

77、<p><b>  {</b></p><p>  int i,j,temp,N=0;</p><p>  linklist *p;</p><p><b>  //數(shù)學(xué)</b></p><p>  p=head->next;</p><p>  int a

78、[1000]; //調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放</p><p>  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p><p>  a[i]=p->math;</p><p>  p=p->next;</p><p><b&

79、gt;  }</b></p><p>  a[i]=999;//存放結(jié)束標(biāo)志</p><p>  for(i=0;a[i]!=999;i++)</p><p><b>  N++;</b></p><p><b>  N=N-1;</b></p><p&

80、gt;  for(j=0;j<N-1;j++) //j<N //冒泡排序,由大到小</p><p><b>  {</b></p><p>  for(i=0;i<N-j-1;i++) //i<N-j</p><p>  if(a[i]<=a[i+1])</p><p><b

81、>  {</b></p><p>  temp=a[i];</p><p>  a[i]=a[i+1];</p><p>  a[i+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p>&l

82、t;p><b>  i=N;//-1</b></p><p>  printf("數(shù)學(xué)最低分:%d",a[i]);</p><p>  printf("\n");</p><p><b>  i=0;</b></p><p>  printf("

83、;數(shù)學(xué)最高分:%d",a[i]);</p><p>  printf("\n");</p><p><b>  //英語</b></p><p><b>  N=0;</b></p><p>  p=head->next;</p><p>

84、  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p><p>  a[i]=p->eng;</p><p>  p=p->next;</p><p><b>  }</b></p><p>  a[i]=1000;/

85、/調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放</p><p>  for(i=0;a[i]!=1000;i++) N++;//冒泡排序,由大到小</p><p><b>  N=N-1;</b></p><p>  for(j=0;j<N-1;j++)</p><p><b>  {</b>

86、</p><p>  for(i=0;i<N-j-1;i++)</p><p>  if(a[i]<=a[i+1])</p><p><b>  {</b></p><p>  temp=a[i];</p><p>  a[i]=a[i+1];</p><p>

87、  a[i+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  i=N;</b></p><p>  printf("英語最低分:%d",a[i]);</p><p

88、>  printf("\n");</p><p><b>  i=0;</b></p><p>  printf("英語最高分:%d",a[i]);</p><p>  printf("\n");</p><p><b>  //計(jì)算機(jī)</

89、b></p><p><b>  N=0;</b></p><p>  p=head->next;</p><p>  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p><p>  a[i]=p->com;</p

90、><p>  p=p->next;</p><p><b>  }</b></p><p>  a[i]=1000;//調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放</p><p>  for(i=0;a[i]!=1000;i++) N++;//冒泡排序,由大到小</p><p>&

91、lt;b>  N=N-1;</b></p><p>  for(j=0;j<N-1;j++)</p><p><b>  {</b></p><p>  for(i=0;i<N-j-1;i++)</p><p>  if(a[i]<=a[i+1])</p><p&g

92、t;<b>  {</b></p><p>  temp=a[i];</p><p>  a[i]=a[i+1];</p><p>  a[i+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p&

93、gt;<p><b>  i=N;</b></p><p>  printf("計(jì)算機(jī)最低分:%d",a[i]);</p><p>  printf("\n");</p><p><b>  i=0;</b></p><p>  printf(&

94、quot;計(jì)算機(jī)最高分:%d",a[i]);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  void aver()</p><p><b>  {</b></p><p>  int

95、n=0,add=0;</p><p>  linklist *p;</p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  add+=p->math;<

96、/p><p><b>  n++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("數(shù)學(xué)平均成績:%d",add/n);</p><p>  printf("\t\t

97、");</p><p><b>  n=0;</b></p><p><b>  add=0;</b></p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>

98、;  {</b></p><p>  add+=p->eng;</p><p><b>  n++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("英語平均成績:

99、%d",add/n);</p><p>  printf("\t\t");</p><p><b>  n=0;</b></p><p><b>  add=0;</b></p><p>  p=head->next;</p><p>&l

100、t;b>  while(p)</b></p><p><b>  {</b></p><p>  add+=p->com;</p><p><b>  n++;</b></p><p>  p=p->next;</p><p><b>

101、  }</b></p><p>  printf("計(jì)算機(jī)平均成績:%d",add/n);</p><p>  printf("\t\t");</p><p><b>  }</b></p><p>  void mathinfo()</p><p&

102、gt;<b>  {</b></p><p>  int n=0,m=0,k=0,l=0,o=0;</p><p>  linklist *p;</p><p>  p=head->next;</p><p>  while(p!=NULL)</p><p><b>  {<

103、/b></p><p>  if(p->math>=90)n++;</p><p>  else if(p->math>=80)m++;</p><p>  else if(p->math>=70)k++;</p><p>  else if(p->math>=60)l++;</p&

104、gt;<p><b>  else o++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("數(shù)學(xué)成績在90分以上的人數(shù):%d\n",n);</p><p>  printf(&qu

105、ot;數(shù)學(xué)成績在80-90分 的人數(shù):%d\n",m);</p><p>  printf("數(shù)學(xué)成績在70-80分 的人數(shù):%d\n",l);</p><p>  printf("數(shù)學(xué)成績在60-70分 的人數(shù):%d\n",k);</p><p>  printf("數(shù)學(xué)成績在60分以下的人數(shù):%d\n&

106、quot;,o);</p><p><b>  }</b></p><p>  void enginfo()</p><p><b>  {</b></p><p>  int n=0,m=0,k=0,l=0,o=0;</p><p>  linklist *p;</p

107、><p>  p=head->next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->eng>=90)n++;</p><p>  else if(p->eng>=80)m++;</p&g

108、t;<p>  else if(p->eng>=70)k++;</p><p>  else if(p->eng>=60)l++;</p><p><b>  else o++;</b></p><p>  p=p->next;</p><p><b>  }<

109、/b></p><p>  printf("英語成績在90分以上的人數(shù):%d\n",n);</p><p>  printf("英語成績在80-90分 的人數(shù):%d\n",m);</p><p>  printf("英語成績在70-80分 的人數(shù):%d\n",l);</p><p&

110、gt;  printf("英語成績在60-70分 的人數(shù):%d\n",k);</p><p>  printf("英語成績在60分以下的人數(shù):%d\n",o);</p><p><b>  }</b></p><p>  void cominfo()</p><p><b&g

111、t;  {</b></p><p>  int n=0,m=0,k=0,l=0,o=0;</p><p>  linklist *p;</p><p>  p=head->next;</p><p>  while(p!=NULL)</p><p><b>  {</b><

112、/p><p>  if(p->com>=90)n++;</p><p>  else if(p->com>=80)m++;</p><p>  else if(p->com>=70)k++;</p><p>  else if(p->com>=60)l++;</p><p>

113、<b>  else o++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("計(jì)算機(jī)成績在90分以上的人數(shù):%d\n",n);</p><p>  printf("計(jì)算機(jī)成績在80-9

114、0分 的人數(shù):%d\n",m);</p><p>  printf("計(jì)算機(jī)成績在70-80分 的人數(shù):%d\n",l);</p><p>  printf("計(jì)算機(jī)成績在60-70分 的人數(shù):%d\n",k);</p><p>  printf("計(jì)算機(jī)成績在60分以下的人數(shù):%d\n",o);

115、</p><p><b>  }</b></p><p>  void sortmath()</p><p><b>  {</b></p><p>  int i,j,N=0;</p><p>  linklist *p;</p><p>  p=h

116、ead->next;</p><p>  linklist a[1000],temp; //調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放</p><p>  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p><p>  strcpy(a[i].no,p->no);<

117、/p><p>  strcpy(a[i].name,p->name);</p><p>  a[i].math=p->math;</p><p>  a[i].eng=p->eng;</p><p>  a[i].com=p->com;</p><p>  p=p->next;</p&g

118、t;<p><b>  }</b></p><p>  a[i].math=999;</p><p>  for(i=0;a[i].math!=999;i++) N++;//通過N確定總共有多少學(xué)生的成績信息</p><p>  for(j=0;j<N-1;j++)</p><p>&l

119、t;b>  {</b></p><p>  for(i=0;i<N-j-1;i++)</p><p>  if(a[i].math<=a[i+1].math)</p><p><b>  {</b></p><p>  temp=a[i];</p><p>  a[i

120、]=a[i+1];</p><p>  a[i+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("數(shù)學(xué):\n");</p><p>  for(i=0;i<N;i++

121、)</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",a[i].no);</p><p>  printf("\t姓名:%s",a[i].name);</p><p>  printf("\t數(shù)學(xué):%d",a[i].ma

122、th);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  void sorteng()&

123、lt;/p><p><b>  {</b></p><p>  int i,j,N=0;</p><p>  linklist *p;</p><p>  p=head->next;</p><p>  linklist b[1000],temp; //調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放

124、</p><p>  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p><p>  strcpy(b[i].no,p->no);</p><p>  strcpy(b[i].name,p->name);</p><p>  b[i].math=p

125、->math;</p><p>  b[i].eng=p->eng;</p><p>  b[i].com=p->com;</p><p>  p=p->next;</p><p><b>  }</b></p><p>  b[i].eng=999;</

126、p><p>  for(i=0;b[i].eng!=999;i++) N++;//冒泡排序,由大到小</p><p>  for(j=0;j<N-1;j++)</p><p><b>  {</b></p><p>  for(i=0;i<N-j-1;i++)</p><p>  if(

127、b[i].eng<=b[i+1].eng)</p><p><b>  {</b></p><p>  temp=b[i];</p><p>  b[i]=b[i+1];</p><p>  b[i+1]=temp;</p><p><b>  }</b></p&

128、gt;<p><b>  }</b></p><p>  printf("英語:\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",b

129、[i].no);</p><p>  printf("\t姓名:%s",b[i].name);</p><p>  printf("\t數(shù)學(xué):%d",b[i].eng);</p><p>  printf("\n");</p><p><b>  }</b>&l

130、t;/p><p>  printf("\n");</p><p><b>  }</b></p><p>  void sortcom()</p><p><b>  {</b></p><p>  int i,j,N=0;</p><p&

131、gt;  linklist *p;</p><p>  p=head->next;</p><p>  linklist c[1000],temp; //調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放</p><p>  for(i=0;p!=NULL;i++)</p><p><b>  {</b></p>

132、;<p>  strcpy(c[i].no,p->no);</p><p>  strcpy(c[i].name,p->name);</p><p>  c[i].math=p->math;</p><p>  c[i].eng=p->eng;</p><p>  c[i].com=p->com;&

133、lt;/p><p>  p=p->next;</p><p><b>  }</b></p><p>  c[i].com=999;</p><p>  for(i=0;c[i].com!=999;i++) N++;//冒泡排序,由大到小</p><p>  for(j=0;j&l

134、t;N-1;j++)</p><p><b>  {</b></p><p>  for(i=0;i<N-j-1;i++)</p><p>  if(c[i].com<=c[i+1].com)</p><p><b>  {</b></p><p>  temp=

135、c[i];</p><p>  c[i]=c[i+1];</p><p>  c[i+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("計(jì)算機(jī):\n");</p>

136、;<p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf(" 學(xué)號(hào):%s",c[i].no);</p><p>  printf("\t姓名:%s",c[i].name);</p><p>  pr

137、intf("\t數(shù)學(xué):%d",c[i].com);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p&

138、gt;<p>  void save(linklist *head)</p><p><b>  {</b></p><p>  FILE *fp; //定義文件指針</p><p>  linklist *p; //定義輔助指針p,用于對單鏈表進(jìn)行訪問</p><p>  p=head->nex

139、t; //p指向首元結(jié)點(diǎn)</p><p>  if((fp=fopen("d:\\input.dat","wb+"))==NULL) //打開磁盤文件 d:\input</p><p><b>  .dat</b></p><p>  {printf("不能打開文件!\n");&

140、lt;/p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  while(p) //如果結(jié)點(diǎn)不為空</p><p><b>  {</b></p><p>  fwrite(p,sizeof(linkl

141、ist),1,fp); //將當(dāng)前節(jié)點(diǎn)p,寫入磁盤文件中</p><p>  p=p->next; //p指向下一個(gè)結(jié)點(diǎn)</p><p><b>  }</b></p><p>  printf("存盤成功!\n");</p><p>  fclose(fp); //關(guān)閉磁盤文件</p&

142、gt;<p><b>  }</b></p><p>  void load()</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  struct STUDENT *p;;</p>&l

143、t;p>  if((fp=fopen("d:\\input.dat","rb+"))==NULL)</p><p>  {printf("不能打開文件!\n");</p><p><b>  exit(0);</b></p><p><b>  }</b>

144、;</p><p>  int i=0; //???</p><p>  //頭結(jié)點(diǎn)已經(jīng)生成了</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  p=(struct STUDENT *)malloc(sizeof(struct STU

145、DENT));</p><p>  fread(p,sizeof(struct STUDENT),1,fp);</p><p>  if(feof(fp))break;</p><p>  p->next=head->next;</p><p>  head->next=p;</p><p><

146、b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  printf("\t *****

147、********成績分析記錄表*************\n");</p><p>  initlinklist();</p><p>  int sel,sel2,sel1;</p><p><b>  do</b></p><p><b>  {</b></p><

148、p>  printf("\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");</p><p>  printf("\t\t\t1 學(xué)生信息錄入\n");</p><p>  printf("\t\t\t2 學(xué)生信息查找\n");</p><p>  printf

149、("\t\t\t3 最高最低 \n");</p><p>  printf("\t\t\t4 平均成績 \n");</p><p>  printf("\t\t\t5 各科排序 \n");</p><p>  printf("\t\t\t6 各科成績分段\n")

150、;</p><p>  printf("\t\t\t7 信息存盤 \n");</p><p>  printf("\t\t\t8 信息讀取 \n");</p><p>  printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");</p>

151、;<p>  printf("\t\t\t0 退出系統(tǒng)\n");</p><p>  printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");</p><p>  printf("請選擇:");</p><p>  scanf("%d

152、",&sel);</p><p>  switch(sel)</p><p><b>  {</b></p><p>  case 1:creat();break; </p><p>  case 2:search();break;</p><p>  case 3:g_d()

153、;break;</p><p>  case 4:aver();break;</p><p><b>  case 5:{</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf(&qu

154、ot;請輸入你要查詢的科目:\n1、數(shù)學(xué)\n2、英語\n3、計(jì)算機(jī)\n0、退出\n");</p><p>  scanf("%d",&sel1);</p><p>  switch(sel1)</p><p><b>  {</b></p><p>  case 1:sortmath

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論