課程設(shè)計-宿舍管理查詢軟件的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  學(xué)生課程設(shè)計(論文)</p><p>  題 目: 宿舍管理查詢軟件的設(shè)計與實現(xiàn) </p><p>  學(xué)生姓名: 學(xué) 號: </p><p>  所在院(系): 計算機(jī)學(xué)院 </p><p>  專 業(yè):

2、 </p><p>  班 級: </p><p>  指 導(dǎo) 教 師: 職 稱: </p><p><b>  2011年6月4日</b></p><p><b>  課程設(shè)計任

3、務(wù)書</b></p><p>  注:任務(wù)書由指導(dǎo)教師填寫。</p><p><b>  摘 要</b></p><p>  本宿舍管理查詢軟件是為方便宿舍管理人員實現(xiàn)宿舍管理查詢而開發(fā)的,具有信息錄入、顯示、查詢、排序、插入和刪除功能,能實現(xiàn)信息修改和通過別的途徑導(dǎo)入大量數(shù)據(jù),可連續(xù)打印任一查詢結(jié)果,但不能實現(xiàn)信息存盤,使用簡單

4、方便,點擊程序即可運行。</p><p>  關(guān)鍵詞:管理,查詢,結(jié)構(gòu)體,函數(shù)</p><p><b>  目 錄</b></p><p>  攀枝花學(xué)院本科學(xué)生課程設(shè)計任務(wù)書I</p><p>  課程設(shè)計(論文)指導(dǎo)教師成績評定表II</p><p><b>  摘 要II

5、I</b></p><p><b>  1 方案設(shè)計1</b></p><p><b>  1.1任務(wù):1</b></p><p>  1.1.1程序設(shè)計要求:1</p><p>  1.1.2查詢菜單: (用二分查找實現(xiàn)以下操作)1</p><p> 

6、 1.1.3打印任一查詢結(jié)果(可以連續(xù)操作)1</p><p><b>  1.2功能:1</b></p><p><b>  2 算法設(shè)計2</b></p><p>  2.1線性表的順序存儲2</p><p>  2.1.1存儲結(jié)構(gòu)2</p><p>  2.

7、1.2程序結(jié)構(gòu)圖為:2</p><p><b>  3 詳細(xì)設(shè)計3</b></p><p><b>  4 調(diào)試分析9</b></p><p><b>  4.1使用方法9</b></p><p>  4.2測試數(shù)據(jù):9</p><p> 

8、 4.2.1開始錄入的數(shù)據(jù):9</p><p>  4.2.2插入的數(shù)據(jù):9</p><p>  4.2.3查找的數(shù)據(jù):9</p><p>  4.2.4刪除的數(shù)據(jù):9</p><p>  4.3測試輸出結(jié)果(以運行結(jié)果圖表示):9</p><p>  4.3.1歡迎界面:10</p><

9、;p>  4.3.2按任意鍵進(jìn)入線性表的創(chuàng)建界面:10</p><p>  4.3.3輸入數(shù)據(jù),開始創(chuàng)建:10</p><p>  4.3.4請按鍵選擇操作:10</p><p>  4.3.5按姓名排序:11</p><p>  4.3.6按學(xué)號排序:11</p><p>  4.3.7按房號排序:

10、11</p><p>  4.3.8插入后顯示:12</p><p>  4.3.9按姓名查找:12</p><p>  4.3.10按學(xué)號查找:12</p><p>  4.3.11按房號查找:12</p><p>  4.3.12進(jìn)入刪除功能,刪除數(shù)據(jù)后顯示剩余的學(xué)生信息:13</p>&l

11、t;p>  4.3.13退出(數(shù)字為零時退出):13</p><p>  4.4分析結(jié)果13</p><p><b>  5 總結(jié)14</b></p><p><b>  參考文獻(xiàn)15</b></p><p><b>  1 方案設(shè)計</b></p>

12、;<p><b>  1.1任務(wù):</b></p><p>  為宿舍管理人員編寫一個宿舍管理查詢軟件</p><p>  1.1.1程序設(shè)計要求:</p><p><b> ?、俨捎媒换スぷ鞣绞?lt;/b></p><p> ?、诮?shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號、房號)進(jìn)行排

13、序(冒泡、選擇、插入排序等任選一種)</p><p>  1.1.2查詢菜單: (用二分查找實現(xiàn)以下操作)</p><p><b> ?、侔葱彰樵?</b></p><p><b> ?、诎磳W(xué)號查詢 </b></p><p><b> ?、郯捶刻柌樵?lt;/b></p>

14、;<p>  1.1.3打印任一查詢結(jié)果(可以連續(xù)操作)</p><p><b>  1.2功能:</b></p><p>  根據(jù)上述要求,我們開始考慮系統(tǒng)應(yīng)具備的功能:</p><p> ?、僖獙崿F(xiàn)交互工作方式,各項操作結(jié)束后均應(yīng)返回主菜單;</p><p> ?、谙到y(tǒng)本無任何信息數(shù)據(jù),要建立數(shù)據(jù)文件,

15、需開發(fā)一個信息錄入功能,即首先創(chuàng)建一個學(xué)員線性表,同時我們可以將數(shù)據(jù)暫時保存在內(nèi)存中,所以我們未開發(fā)信息存盤功能;</p><p> ?、坌畔浫牒蠖急4嬖趦?nèi)存中,用戶看不到,需要設(shè)計一個信息顯示功能,信息的顯示應(yīng)該便于查閱,所以需具備按各種關(guān)鍵字顯示的功能;</p><p> ?、鼙鞠到y(tǒng)按關(guān)鍵字(姓名、學(xué)號、房號)進(jìn)行冒泡排序,采用二分查找方式分別實現(xiàn)按關(guān)鍵字(姓名、學(xué)號、房號)查詢功能

16、;</p><p> ?、萦捎谟行┩瑢W(xué)因為不同原因而離校,所以設(shè)計了刪除功能;</p><p>  ⑥由于有新同學(xué)入校,所以設(shè)計了插入功能;</p><p> ?、弋?dāng)用戶操作完畢需要退出時,我們提供了退出選項,便于使用者退出交互式工作系統(tǒng)。</p><p><b>  2 算法設(shè)計</b></p><

17、;p>  2.1線性表的順序存儲</p><p><b>  2.1.1存儲結(jié)構(gòu)</b></p><p>  本系統(tǒng)定義的存儲結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體為:</p><p>  typedef struct //定義結(jié)構(gòu)體成員</p><p><b>  {</b></p

18、><p>  char name[20];</p><p>  int num; //學(xué)號和房號都為整型</p><p><b>  int room;</b></p><p><b>  }stu;</b></p><p><b>  stu

19、stud;</b></p><p>  typedef struct</p><p><b>  {</b></p><p>  int length; //當(dāng)前長度</p><p>  stu *elem; //存儲空間基址</p><p>  int listsize

20、; //當(dāng)前分配的存儲容量</p><p>  }linklist; 在此說明每個部分的算法設(shè)計說明(可以是描述算法的流程圖)</p><p>  2.1.2程序結(jié)構(gòu)圖為:</p><p><b>  3 詳細(xì)設(shè)計</b></p><p>  //采用順序線性表解決宿舍管理問題 (C語言)</p>

21、<p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define N 40 //線性表存儲空間的初始分配量</p><p>  #define increase

22、10 //線性表存儲空間的分配量增量</p><p>  int f,t=0; //定義全局變量</p><p>  typedef struct </p><p><b>  {</b></p><p>  char name[20];</p><p>  int num;

23、 //學(xué)號和房號都為整型</p><p><b>  int room;</b></p><p><b>  }stu;</b></p><p><b>  stu stud;</b></p><p>  typedef struct</p><p&g

24、t;<b>  {</b></p><p>  int length; //當(dāng)前長度</p><p>  stu *elem; //存儲空間基址</p><p>  int listsize; //當(dāng)前分配的存儲容量</p><p>  }linklist; </p><p>  void

25、 init(linklist &l)//線性表初始化</p><p><b>  {</b></p><p>  l.length=0;</p><p>  l.elem=(stu *)malloc(N*sizeof(stu ));</p><p>  l.listsize=N;</p><p

26、><b>  }</b></p><p>  void menu()//操作菜單</p><p><b>  {</b></p><p>  printf("\n");</p><p>  printf(" ***************請按

27、鍵選擇操作****************\n");</p><p>  printf("\n");printf("\n");</p><p>  printf(" 1 按姓名排序 2 按學(xué)號排序\n");</p><p>  printf

28、("\n");</p><p>  printf(" 3 按房號排序 4 按姓名查找\n");</p><p>  printf("\n");</p><p>  printf(" 5 按學(xué)號查找

29、 6 按房號查找\n");</p><p>  printf("\n");</p><p>  printf(" 7 按學(xué)號插入 8 按學(xué)號刪除\n");</p><p>  printf("\n");printf(&quo

30、t;\n");printf("\n");printf("\n");</p><p>  printf("提示:當(dāng)輸入的數(shù)字鍵為0時,退出操作\n");</p><p><b>  if(t==1)</b></p><p><b>  {</b><

31、;/p><p>  printf("請輸入數(shù)字鍵(1~8為操作鍵):");//1~8為有效數(shù)字操作鍵</p><p>  scanf("%d",&f);</p><p>  if(f<0||f>9)</p><p><b>  {</b></p>&l

32、t;p>  system("cls");</p><p>  printf("\n");</p><p>  printf("輸入數(shù)字不對,請在原處重輸!\n"); printf("\n");</p><p><b>  menu();</b></p

33、><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void disp() //返回主界面</p><p><b>  {</b></p&

34、gt;<p><b>  char c;</b></p><p>  fflush(stdin);</p><p>  printf("\n");</p><p>  printf("請按任意鍵進(jìn)入主界面:");</p><p>  scanf("%c&qu

35、ot;,&c);</p><p>  system("cls");</p><p><b>  }</b></p><p>  void panduan3() //如果已無學(xué)生記錄則返回主界面</p><p><b>  {</b></p><p&g

36、t;  printf("\n");</p><p>  printf("已無學(xué)生記錄\n");</p><p>  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();</b&

37、gt;</p><p><b>  }</b></p><p>  void shuru(linklist l) //輸入學(xué)生的信息</p><p><b>  {</b></p><p>  printf("請輸入姓名:");</p><p>  f

38、flush(stdin); // 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)</p><p>  gets(stud.name); //輸入一行字符串(姓名)</p><p>  printf("請輸入學(xué)號:");</p><p>  scanf("%d",&stud.num);</p>&l

39、t;p>  printf("請輸入房號:");</p><p>  scanf("%d",&stud.room);</p><p><b>  }</b></p><p>  void create(linklist &l)//創(chuàng)建學(xué)生信息表</p><p>

40、<b>  {</b></p><p>  if(l.length>=l.listsize) //判斷學(xué)生的人數(shù)是否超過初值,如果超過,則重新分配</p><p><b>  {</b></p><p>  stu *newbase;</p><p>  newbase=(stu*)real

41、loc(l.elem,(N+increase)*sizeof(stu ));</p><p>  l.elem=newbase;</p><p>  l.listsize+=increase;</p><p><b>  }</b></p><p><b>  int i=2;</b></p&

42、gt;<p><b>  char ch;</b></p><p>  printf("\n");</p><p>  printf(" **************************開始創(chuàng)建線性表***************************\n");printf("\n");&

43、lt;/p><p>  printf("請輸入第1個學(xué)生的信息\n");</p><p>  shuru(l); //調(diào)用輸入函數(shù)</p><p>  ch=getchar();</p><p>  strcpy(l.elem[l.length].name,stud.name);</p><p>

44、;  l.elem[l.length].num=stud.num;</p><p>  l.elem[l.length].room=stud.room;</p><p>  l.length++;</p><p>  printf("\n");</p><p>  printf("是否繼續(xù)輸入?<y/n&g

45、t;:");</p><p>  scanf("%c",&ch);</p><p>  printf("\n");printf("\n");</p><p>  while(ch=='y')</p><p><b>  {</b>

46、;</p><p>  printf("請輸入第%d個學(xué)生的信息\n",i);</p><p><b>  shuru(l);</b></p><p>  strcpy(l.elem[l.length].name,stud.name);</p><p>  l.elem[l.length].num=s

47、tud.num;</p><p>  l.elem[l.length].room=stud.room;</p><p>  l.length++;</p><p><b>  i++;</b></p><p>  ch=getchar(); printf("\n");</p><p

48、>  printf("是否繼續(xù)輸入?<y/n>:");</p><p>  scanf("%c",&ch);</p><p>  printf("\n");printf("\n");</p><p><b>  }</b></p>

49、;<p>  if(ch=='n') system("cls");</p><p><b>  }</b></p><p>  void sort3(linklist &l)//按房號排序(采用冒泡排序)</p><p><b>  {</b></p>

50、<p><b>  int i,j;</b></p><p><b>  stu temp;</b></p><p>  for(i=0;i<l.length-1;i++)</p><p>  for(j=i+1;j<l.length;j++)</p><p>  if(l.

51、elem[i].room>l.elem[j].room)</p><p><b>  {</b></p><p>  temp=l.elem[i];</p><p>  l.elem[i]=l.elem[j];</p><p>  l.elem[j]=temp;</p><p><b&

52、gt;  }</b></p><p><b>  }</b></p><p>  void sort2(linklist &l)//按學(xué)號排序(采用冒泡排序)</p><p><b>  {</b></p><p><b>  int i,j;</b><

53、;/p><p><b>  stu temp;</b></p><p>  for(i=0;i<l.length-1;i++)</p><p>  for(j=i+1;j<l.length;j++)</p><p>  if(l.elem[i].num>l.elem[j].num)</p>&

54、lt;p><b>  {</b></p><p>  temp=l.elem[i];</p><p>  l.elem[i]=l.elem[j];</p><p>  l.elem[j]=temp;</p><p><b>  }</b></p><p><b&g

55、t;  }</b></p><p>  void sort1(linklist &l)//按姓名排序(采用冒泡排序)</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p><b>  stu temp;</b

56、></p><p>  for(i=0;i<l.length-1;i++)</p><p>  for(j=i+1;j<l.length;j++)</p><p>  if(strcmp(l.elem[i].name,l.elem[j].name)>0)</p><p><b>  {</b>&l

57、t;/p><p>  temp=l.elem[i];</p><p>  l.elem[i]=l.elem[j];</p><p>  l.elem[j]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p

58、>  void print1(linklist &l)//打印學(xué)生信息</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf("\n");</p><p>  printf("姓名

59、 學(xué)號 房號\n");printf("\n");</p><p>  for(i=0;i<l.length;i++)</p><p>  printf("%-15s %-3d %5d\n",l.elem[i].name,l.elem[i].num,l.elem[i].room);</p><p&

60、gt;<b>  }</b></p><p>  void print2(linklist &l,int mid) //打印查找到的學(xué)生信息</p><p><b>  {</b></p><p>  printf("查找成功----->該學(xué)生信息為:\n");</p>

61、<p>  printf("姓名 學(xué)號 房號\n");printf("\n");</p><p>  printf("%-15s %-5d %-5d\n",l.elem[mid].name,l.elem[mid].num,l.elem[mid].room);</p><p><b> 

62、 }</b></p><p>  int panduan1(char ch) //判斷是否繼續(xù)查找</p><p><b>  {</b></p><p>  scanf("%c",&ch);</p><p>  printf("是否繼續(xù)查找?<y/n>:&

63、quot;);</p><p>  fflush(stdin);</p><p>  scanf("%c",&ch);</p><p>  if(ch=='y')</p><p><b>  {</b></p><p>  system("cl

64、s");</p><p>  return(1);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  return 0;</b></p><p><b>  }</

65、b></p><p>  int panduan2(char ch) //如果學(xué)生不存在,判斷是否繼續(xù)查找</p><p><b>  {</b></p><p>  scanf("%c",&ch);</p><p>  printf("該學(xué)生不存在,是否繼續(xù)查找?<

66、y/n>:");</p><p>  fflush(stdin);</p><p>  scanf("%c",&ch);</p><p>  if(ch=='y')</p><p><b>  {</b></p><p>  system

67、("cls");</p><p>  return(1);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  return 0;</b></p><p><b>

68、;  }</b></p><p>  void chazhao3(linklist &l)//按房號從小到大查找(采用二分查找)</p><p><b>  {</b></p><p>  if(l.length==0) panduan3(); //此函數(shù)功能為:返回主界面</p><p>&l

69、t;b>  else </b></p><p><b>  {</b></p><p>  int low=0,high=l.length,mid,flag=0;//flag作為標(biāo)志符,為1則表示查找成功,否則沒有所要查找的學(xué)生</p><p><b>  int m;</b></p>&l

70、t;p><b>  char ch;</b></p><p>  printf("\n");printf("\n");</p><p>  printf("按房號查找----->請輸入要查找的房號:");</p><p>  scanf("%d",&am

71、p;m);</p><p>  printf("\n");</p><p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(m==l.elem[mid].roo

72、m)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  else if(m>

73、;l.elem[mid].room)</p><p>  low=mid+1;</p><p><b>  else </b></p><p>  high=mid-1;</p><p><b>  }</b></p><p>  if(flag==1) </p>

74、<p><b>  {</b></p><p>  print2(l,mid);</p><p>  if(panduan1(ch)) //調(diào)用判斷函數(shù)1</p><p>  chazhao3(l);</p><p><b>  else </b></p><

75、p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p>

76、<p><b>  else </b></p><p><b>  {</b></p><p>  if(panduan2(ch)) //調(diào)用判斷函數(shù)2</p><p>  chazhao3(l);</p><p><b>  else </b></p>

77、;<p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b><

78、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void chazhao2(linklist &l)//按學(xué)號從小到大查找(采用二分查找)</p><p><b>  {</b></p><p>  

79、if(l.length==0) panduan3();</p><p><b>  else</b></p><p><b>  {</b></p><p>  int low=0,high=l.length,mid,flag=0;</p><p><b>  int n;</b&g

80、t;</p><p><b>  char ch;</b></p><p>  printf("\n");printf("\n");</p><p>  printf("按學(xué)號查找----->請輸入要查找的學(xué)號:");</p><p>  scanf(&q

81、uot;%d",&n);</p><p>  printf("\n");</p><p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(n=

82、=l.elem[mid].num)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>

83、;  else if(n>l.elem[mid].num)</p><p>  low=mid+1;</p><p><b>  else </b></p><p>  high=mid-1;</p><p><b>  }</b></p><p>  if(flag=

84、=1) </p><p><b>  {</b></p><p>  print2(l,mid);</p><p>  if(panduan1(ch)) </p><p>  chazhao2(l);</p><p><b>  else </b></p>&l

85、t;p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p>

86、;<p><b>  else</b></p><p><b>  {</b></p><p>  if(panduan2(ch)) chazhao2(l);</p><p><b>  else </b></p><p><b>  {</b&

87、gt;</p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }&l

88、t;/b></p><p><b>  }</b></p><p>  void chazhao1(linklist &l)//按姓名從小到大查找(采用二分查找)</p><p><b>  { </b></p><p>  if(l.length==0) panduan3();&l

89、t;/p><p><b>  else</b></p><p><b>  {</b></p><p>  int low=0,high=l.length,mid,flag=0;</p><p>  printf("\n");printf("\n");</p

90、><p>  printf("按姓名查找----->請輸入要查找的姓名:");</p><p>  char a[15],ch;</p><p>  scanf("%s",a);</p><p>  printf("\n");</p><p>  while

91、(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(strcmp(a,l.elem[mid].name)==0)</p><p><b>  {</b></p><p><

92、;b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  else if(strcmp(a,l.elem[mid].name)>0)</p><p>  low=mid+1;</p&g

93、t;<p><b>  else </b></p><p>  high=mid-1;</p><p><b>  }</b></p><p>  if(flag==1) </p><p><b>  {</b></p><p>  pri

94、nt2(l,mid); //打印查找到的學(xué)生的信息</p><p>  if(panduan1(ch)) chazhao1(l);</p><p><b>  else </b></p><p><b>  {</b></p><p>  system("cls");&l

95、t;/p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b&g

96、t;</p><p>  if(panduan2(ch))chazhao1(l);</p><p><b>  else </b></p><p><b>  {</b></p><p>  system("cls");</p><p><b>

97、;  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void

98、insert(linklist &l)//按學(xué)號從小到大插入該學(xué)生</p><p><b>  {</b></p><p>  int i,j,k;</p><p><b>  char ch;</b></p><p>  printf("\n");</p>

99、<p>  printf("插入的學(xué)生信息為:\n");</p><p>  printf("姓名:");</p><p>  fflush(stdin);// 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)</p><p>  gets(stud.name); </p><p>  printf(

100、"學(xué)號:");scanf("%d",&stud.num);</p><p>  printf("房號:");scanf("%d",&stud.room);</p><p>  if(l.length==0)</p><p><b>  {</b>

101、</p><p>  strcpy(l.elem[l.length].name,stud.name);</p><p>  l.elem[l.length].num=stud.num;</p><p>  l.elem[l.length].room=stud.room;</p><p><b>  }</b></

102、p><p>  for(i=0;i<l.length;i++)</p><p><b>  {</b></p><p>  if(stud.num<l.elem[i].num)</p><p><b>  {</b></p><p><b>  k=i;&l

103、t;/b></p><p>  for(j=l.length;j>k;j--)</p><p>  l.elem[j]=l.elem[j-1];</p><p>  strcpy(l.elem[k].name,stud.name);</p><p>  l.elem[k].num=stud.num;</p><

104、p>  l.elem[k].room=stud.room;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p&

105、gt;<p>  strcpy(l.elem[l.length].name,stud.name);</p><p>  l.elem[l.length].num=stud.num;</p><p>  l.elem[l.length].room=stud.room;</p><p><b>  }</b></p>

106、<p><b>  }</b></p><p>  l.length++;</p><p>  fflush(stdin);</p><p>  printf("\n");</p><p>  printf("是否繼續(xù)插入?<y/n>:");</p>

107、;<p>  scanf("%c",&ch);</p><p>  if(ch=='y') insert(l);</p><p>  else system("cls");</p><p><b>  }</b></p><p>  void

108、Delete(linklist &l)//按學(xué)號刪除該學(xué)生</p><p><b>  {</b></p><p>  int i,j,k=-1;</p><p><b>  char ch;</b></p><p>  printf("\n");printf("

109、;\n");</p><p>  printf("請輸入要刪除學(xué)生的學(xué)號:");</p><p>  scanf("%d",&stud.num);</p><p>  for(i=0;i<l.length;i++)</p><p><b>  {</b>&l

110、t;/p><p>  if(stud.num==l.elem[i].num)</p><p><b>  {</b></p><p>  printf("該學(xué)生的信息為:\n");printf("\n");</p><p>  printf("%-15s %-3d %7d\n

111、",l.elem[i].name,l.elem[i].num,l.elem[i].room);</p><p><b>  k=i;</b></p><p>  for(j=k;j<l.length-1;j++)</p><p>  l.elem[j]=l.elem[j+1];</p><p>  pri

112、ntf("\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(i>=l.length) printf("該學(xué)生不存在\n&qu

113、ot;);</p><p>  if(k>=0)l.length--;</p><p>  fflush(stdin);</p><p>  printf("\n");</p><p>  printf("是否繼續(xù)刪除?<y/n>:");</p><p>  s

114、canf("%c",&ch);</p><p>  system("cls");</p><p>  if(ch=='y') Delete(l);</p><p>  else system("cls");</p><p><b>  }</b

115、></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  linklist l; //定義線性表 l</p><p>  init(l); //調(diào)用初始化函數(shù)</p><p><b>  c

116、har ch;</b></p><p>  system("color a");</p><p>  printf("\n");</p><p>  printf(" *************************歡迎進(jìn)入宿舍管理查詢系統(tǒng)*************************\n&quo

117、t;);</p><p>  printf("\n");</p><p>  printf("請按任意鍵開始操作:");</p><p>  scanf("%c",&ch);</p><p>  system("cls");//將屏幕先前顯示的內(nèi)容清理掉&

118、lt;/p><p>  create(l); //調(diào)用線性表創(chuàng)建函數(shù)</p><p>  system("cls");</p><p><b>  t=1;</b></p><p>  menu(); //調(diào)用主菜單函數(shù)</p><p>  while(f!=0)&

119、lt;/p><p><b>  {</b></p><p>  system("cls");</p><p><b>  switch(f)</b></p><p><b>  {</b></p><p>  case 1: sort1(

120、l); //調(diào)用按姓名排序函數(shù) </p><p>  printf("\n");</p><p>  if(l.length==0)</p><p><b>  {</b></p><p>  printf("已無學(xué)生記錄\n");</p><p>

121、  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  else</b></p&g

122、t;<p><b>  {</b></p><p>  printf("按姓名排序:\n");</p><p>  print1(l);</p><p>  disp(); //調(diào)用返回主界面</p><p>  menu(); </p><p><

123、;b>  }</b></p><p><b>  break;</b></p><p>  case 2: sort2(l); //調(diào)用按學(xué)號排序函數(shù) </p><p>  printf("\n");</p><p>  if(l.length==0) </p>&

124、lt;p><b>  {</b></p><p>  printf("已無學(xué)生記錄\n");</p><p>  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();<

125、/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("按學(xué)號排序:\n");</p><p>  print1(

126、l);</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }break;</b></p><p>  case 3: sort3(l); //調(diào)用按房號排序函數(shù) </p><

127、;p>  printf("\n");</p><p>  if(l.length==0) </p><p><b>  {</b></p><p>  printf("已無學(xué)生記錄\n");</p><p>  printf("\n");</p>

128、;<p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

129、;</p><p>  printf("按房號排序:\n");</p><p>  print1(l);</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }bre

130、ak; </b></p><p>  case 4:sort1(l); //先調(diào)用按姓名排序函數(shù)進(jìn)行排序 </p><p>  chazhao1(l); //再調(diào)用按姓名查找函數(shù)進(jìn)行(二分)查找 </p><p><b>  break;</b></p><p>  case 5: sort2

131、(l); //先調(diào)用按學(xué)號排序函數(shù)進(jìn)行排序 </p><p>  chazhao2(l); //再調(diào)用按學(xué)號查找函數(shù)進(jìn)行(二分)查找 </p><p><b>  break;</b></p><p>  case 6: sort3(l); //先調(diào)用按房號排序函數(shù)進(jìn)行排序 </p><p>  

132、chazhao3(l); //再調(diào)用按房號查找函數(shù)進(jìn)行(二分)查找</p><p><b>  break;</b></p><p>  case 7: sort2(l); //調(diào)用插入函數(shù)</p><p>  insert(l); </p><p>  system("cls&qu

133、ot;);</p><p>  printf("顯示插入后的學(xué)生信息:\n");print1(l);</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  break;</b>&l

134、t;/p><p>  case 8: Delete(l); //調(diào)用刪除函數(shù)</p><p>  if(l.length==0)</p><p><b>  {</b></p><p>  printf("\n");</p><p>  printf("學(xué)生記錄已

135、被刪除完\n");</p><p>  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p&g

136、t;<b>  else</b></p><p><b>  {</b></p><p>  printf("顯示刪除后的學(xué)生信息:\n");</p><p>  print1(l);</p><p><b>  disp();</b></p>

137、<p><b>  menu();</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></

138、p><p><b>  }</b></p><p><b>  4 調(diào)試分析</b></p><p><b>  4.1使用方法</b></p><p>  首先,運行程序進(jìn)入“歡迎進(jìn)入宿舍管理查詢系統(tǒng)”界面,然后進(jìn)入線性表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊“n”

139、鍵則進(jìn)入操作界面(主界面),然后可按鍵進(jìn)行操作。</p><p>  單擊數(shù)字鍵“1”,則為按姓名排序 單擊數(shù)字鍵“2”,則為按學(xué)號排序</p><p>  單擊數(shù)字鍵“3”,則為按房號排序 單擊數(shù)字鍵“4”,則為按姓名查找</p><p>  單擊數(shù)字鍵“5”,則為按學(xué)號查找 單擊數(shù)字鍵“6”,則為按學(xué)號查找</p>&

140、lt;p>  單擊數(shù)字鍵“7”,則為按學(xué)號插入 單擊數(shù)字鍵“8”,則為按學(xué)號刪除</p><p>  系統(tǒng)中有如下關(guān)鍵詞: </p><p>  提示:當(dāng)輸入的數(shù)字鍵為0時,退出操作;</p><p>  請輸入數(shù)字鍵(1~8為操作鍵);</p><p>  請按任意鍵進(jìn)入主界面。</p><p>&l

141、t;b>  4.2測試數(shù)據(jù):</b></p><p>  4.2.1開始錄入的數(shù)據(jù):</p><p>  姓名 學(xué)號 房間號</p><p>  田浩然 200910803050 105</p><p>  朱棲才 200910803079

142、 108</p><p>  丁強 200910803008 104</p><p>  4.2.2插入的數(shù)據(jù):</p><p>  姓名 學(xué)號 房間號</p><p>  殷林 200910803065 114</p><

143、;p>  4.2.3查找的數(shù)據(jù):</p><p>  丁強(按姓名) 200910803050(按學(xué)號) 114(按房間號)</p><p>  4.2.4刪除的數(shù)據(jù):</p><p>  200910803079(按學(xué)號)</p><p>  4.3測試輸出結(jié)果(以運行結(jié)果圖表示):</p><

144、p>  4.3.1歡迎界面:</p><p>  4.3.2按任意鍵進(jìn)入線性表的創(chuàng)建界面:</p><p>  4.3.3輸入數(shù)據(jù),開始創(chuàng)建:</p><p>  4.3.4請按鍵選擇操作:</p><p>  4.3.5按姓名排序:</p><p>  4.3.6按學(xué)號排序:</p><p&

145、gt;  4.3.7按房號排序:</p><p>  4.3.8插入后顯示:</p><p>  4.3.9按姓名查找:</p><p>  4.3.10按學(xué)號查找:</p><p>  4.3.11按房號查找:</p><p>  4.3.12進(jìn)入刪除功能,刪除數(shù)據(jù)后顯示剩余的學(xué)生信息:</p><

146、;p>  4.3.13退出(數(shù)字為零時退出):</p><p><b>  4.4分析結(jié)果</b></p><p>  ①為了避免繁瑣、改進(jìn)算法,在一些函數(shù)中調(diào)用了其它的函數(shù)。如:在按(姓名、學(xué)號、房號)查找中都調(diào)用了 panduan1(ch) 和panduan2(ch)函數(shù)。</p><p> ?、谠诓迦牒蛣h除模塊中,顯示學(xué)生的信息的下

147、面總是有主界面,經(jīng)過調(diào)試,運用system("cls")函數(shù)清屏后,顯示的只有學(xué)生的信息了,再按鍵即可返回主界面。</p><p> ?、郾境绦蚨啻芜\用了 disp()、menu()、system("cls")、fflush(stdin)等函數(shù),經(jīng)過多次調(diào)試,已經(jīng)很好的控制了顯示的學(xué)生信息與主界面的轉(zhuǎn)換。</p><p><b>  5

148、總結(jié)</b></p><p>  通過本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,我學(xué)到了很多,我充分利用了這四天的時間,認(rèn)真、獨立的完成了作業(yè)。我覺得很滿足,也很有成就感,許多曾經(jīng)自己不知道的知識,現(xiàn)在知道了并能熟練的掌握了一些,比如:</p><p> ?。?)一個函數(shù)既能調(diào)用它本身也能調(diào)用其它函數(shù);</p><p>  (2)如fflush(stdin) 函數(shù),它的功能

149、是清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù);如system("cls")函數(shù),它的功能是將屏幕先前顯示的內(nèi)容清理掉</p><p>  (3)我以前不知道scanf()和gets()輸入函數(shù)的不同之處,通過編程,調(diào)試,我明白了當(dāng)scanf()輸入字符串時不能帶空格,否則不能輸出后面的字符,而gets()能輸入帶空格的字符串。</p><p>  在編程與調(diào)試過程中我遇到了許多

150、問題,具體問題如下:</p><p>  (1)以前不知道怎么把各個函數(shù)編排在一起,不能形成一個總體模塊,現(xiàn)在經(jīng)過實踐與調(diào)試,已經(jīng)能組裝好各個函數(shù)模塊,使它們實現(xiàn)各自的功能。</p><p> ?。?)在按關(guān)鍵字(姓名、學(xué)號、房號)查找中,由于題目限制了只能用二分查找方式進(jìn)行查找,所以有時出現(xiàn)了關(guān)鍵字相同時(列如房號相同),就只能查出并顯示出一個學(xué)生的信息,因此,本程序還不夠完善。當(dāng)使用順

151、序查找時,就能查找出所用關(guān)鍵字相同的學(xué)生的信息。當(dāng)然,當(dāng)既按姓名又按學(xué)號還按房號查找時那就查找唯一。但現(xiàn)在我只能按照題目給的要求去做。</p><p>  (3)按(姓名、學(xué)號、房號)排序和查找功能每個函數(shù)都寫了一遍,很繁瑣。C++中的函數(shù)模板能解決這個問題,但對于C++我還是個初學(xué)者,現(xiàn)在還不懂得如何去運用它,所以還不能對此程序作進(jìn)一步修改,但我相信,不用多久,這個問題我一定能夠解決。</p>&

152、lt;p>  眾所周知,要學(xué)好編程方面這一塊,數(shù)據(jù)結(jié)構(gòu)是必可少的,它里面有許多經(jīng)典的算法和思想,是解決問題的必需品。很慚愧,雖然經(jīng)過一學(xué)期的學(xué)習(xí),但我掌握的知識很少,特別是樹和圖,只知道皮毛,目前還不能用這兩方面的知識編程。在本系統(tǒng)中,我運用了數(shù)據(jù)結(jié)構(gòu)中的線性表知識,運用順序線性表完成了宿舍管理查詢軟件。在這次課程設(shè)計中,經(jīng)過自己的編成和調(diào)試、老師和同學(xué)的幫助,我成功的完成了這次作業(yè),雖然它的功能還不是很多,也不是很完善,但我還是

溫馨提示

  • 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

提交評論