c宿舍管理查詢軟件-課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《c語言程序設(shè)計(jì)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  計(jì)算機(jī)學(xué)院</b></p><p>  2017年4月21日(課外的,第十周答辯和總結(jié))</p><p>  2017年5月21日(課內(nèi)的,第

2、十四周答辯和總結(jié))</p><p><b>  一 需求設(shè)計(jì)</b></p><p><b>  1.1任務(wù):</b></p><p>  為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件</p><p>  1.1.1程序設(shè)計(jì)要求:</p><p>  主要利用數(shù)據(jù)結(jié)構(gòu)能力設(shè)計(jì)開發(fā)一

3、個(gè)小型的管理信息系統(tǒng),至少具有如下功能:宿舍號錄入,按學(xué)號、性別、系別、專業(yè)、班級進(jìn)行查詢等操作。操作界面要符合用戶的一般習(xí)慣,圖形或文本界面都可以。</p><p>  要求:明確課程設(shè)計(jì)的目的,能根據(jù)課程設(shè)計(jì)的要求,查閱相關(guān)文獻(xiàn),為完成設(shè)計(jì)準(zhǔn)備必要的知識; 提高學(xué)生用高級語言進(jìn)行程序設(shè)計(jì)的能力,重點(diǎn)提高用C語言進(jìn)行文件操作和繪圖應(yīng)用的編程技術(shù)水平;初步了解軟件開發(fā)的一般方法和步驟; 提高撰寫技術(shù)文檔的能力。&

4、lt;/p><p><b>  1.1.2查詢菜單</b></p><p><b> ?、侔葱彰樵?</b></p><p><b> ?、诎磳W(xué)號查詢 </b></p><p><b> ?、郯捶刻柌樵?lt;/b></p><p>  1

5、.1.3各個(gè)模塊之間的主要關(guān)系</p><p>  該程序的功能主要是實(shí)現(xiàn)學(xué)生住宿的錄入,并對學(xué)生住宿的相應(yīng)信息進(jìn)行學(xué)生信息的統(tǒng)計(jì)。各個(gè)模塊之間的關(guān)系是相互聯(lián)系的。首先,主函數(shù)包含了所有的子函數(shù)。主函數(shù)是整個(gè)程序的核心。子函數(shù)之間也是有聯(lián)系的,對學(xué)生住宿信息的添加、修改、刪除、查詢,必須是在學(xué)生宿舍號錄入的情況下進(jìn)行的。因此對學(xué)生住宿信息的錄入是非常重要的。在學(xué)生住宿信息的添加、修改、刪除、查詢等所有子函數(shù)之間是

6、沒有多大聯(lián)系的。</p><p><b>  1.2功能:</b></p><p>  根據(jù)上述要求,我們開始考慮系統(tǒng)應(yīng)具備的功能:</p><p> ?、僖獙?shí)現(xiàn)交互工作方式,各項(xiàng)操作結(jié)束后均應(yīng)返回主菜單;</p><p> ?、谙到y(tǒng)本無任何信息數(shù)據(jù),要建立數(shù)據(jù)文件,需開發(fā)一個(gè)信息錄入功能,即首先創(chuàng)建一個(gè)學(xué)員線性表,同時(shí)

7、我們可以將數(shù)據(jù)暫時(shí)保存在內(nèi)存中,所以我們未開發(fā)信息存盤功能;</p><p>  ③信息錄入后都保存在內(nèi)存中,用戶看不到,需要設(shè)計(jì)一個(gè)信息顯示功能,信息的顯示應(yīng)該便于查閱,所以需具備按各種關(guān)鍵字顯示的功能;</p><p> ?、鼙鞠到y(tǒng)按關(guān)鍵字(姓名、學(xué)號、房號)進(jìn)行冒泡排序,采用二分查找方式分別實(shí)現(xiàn)按關(guān)鍵字(姓名、學(xué)號、房號)查詢功能;</p><p> ?、萦捎?/p>

8、有些同學(xué)因?yàn)椴煌蚨x校,所以設(shè)計(jì)了刪除功能;</p><p> ?、抻捎谟行峦瑢W(xué)入校,所以設(shè)計(jì)了插入功能;</p><p> ?、弋?dāng)用戶操作完畢需要退出時(shí),我們提供了退出選項(xiàng),便于使用者退出交互式工作系統(tǒng)。</p><p><b>  二 概要設(shè)計(jì)</b></p><p>  首先,運(yùn)行程序進(jìn)入“歡迎進(jìn)入宿舍管理查

9、詢系統(tǒng)”界面,然后進(jìn)入線性表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊“n”鍵則進(jìn)入操作界面(主</p><p>  界面),然后可按鍵進(jìn)行操作。</p><p>  單擊數(shù)字鍵“1”,則為按姓名排序 單擊數(shù)字鍵“2”,則為按學(xué)號排序</p><p>  單擊數(shù)字鍵“3”,則為按房號排序 單擊數(shù)字鍵“4”,則為按姓名查找</p>

10、;<p>  單擊數(shù)字鍵“5”,則為按學(xué)號查找 單擊數(shù)字鍵“6”,則為按學(xué)號查找</p><p>  單擊數(shù)字鍵“7”,則為按學(xué)號插入 單擊數(shù)字鍵“8”,則為按學(xué)號刪除</p><p>  系統(tǒng)中有如下關(guān)鍵詞: </p><p>  提示:當(dāng)輸入的數(shù)字鍵為0時(shí),退出操作;</p><p>  請輸入數(shù)字鍵(1

11、~8為操作鍵);</p><p>  請按任意鍵進(jìn)入主界面。</p><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 /

12、/定義結(jié)構(gòu)體成員</p><p><b>  {</b></p><p>  char name[20];</p><p>  int num; //學(xué)號和房號都為整型</p><p><b>  int room;</b></p><p><b

13、>  }stu;</b></p><p><b>  stu stud;</b></p><p>  typedef struct</p><p><b>  {</b></p><p>  int length; //當(dāng)前長度</p><p>  s

14、tu *elem; //存儲空間基址</p><p>  int listsize; //當(dāng)前分配的存儲容量</p><p>  }linklist; 在此說明每個(gè)部分的算法設(shè)計(jì)說明(可以是描述算法的流程圖)</p><p>  2.1.2程序結(jié)構(gòu)圖為:</p><p><b>  三 詳細(xì)設(shè)計(jì)</b>&

15、lt;/p><p>  //采用順序線性表解決宿舍管理問題 (C語言)</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define N 40

16、 //線性表存儲空間的初始分配量</p><p>  #define increase 10 //線性表存儲空間的分配量增量</p><p>  int f,t=0; //定義全局變量</p><p>  typedef struct </p><p><b>  {</b></p><p>

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

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

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

20、));</p><p>  l.listsize=N;</p><p><b>  }</b></p><p>  void menu()//操作菜單</p><p><b>  {</b></p><p>  printf("\n");</p>

21、;<p>  printf(" ***************請按鍵選擇操作****************\n");</p><p>  printf("\n");printf("\n");</p><p>  printf(" 1 按姓名排序

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

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

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

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

26、lt;/p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("\n");</p><p>  printf("輸入數(shù)字不對,請?jiān)谠幹剌?\n"); printf("\n");

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

28、/返回主界面</p><p><b>  {</b></p><p><b>  char c;</b></p><p>  fflush(stdin);</p><p>  printf("\n");</p><p>  printf("請按任

29、意鍵進(jìn)入主界面:");</p><p>  scanf("%c",&c);</p><p>  system("cls");</p><p><b>  }</b></p><p>  void panduan3() //如果已無學(xué)生記錄則返回主界面</p

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

31、</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p>  void shuru(linklist l) //輸入學(xué)生的信息</p><p><b>  {</b></p><p&

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

33、>  scanf("%d",&stud.num);</p><p>  printf("請輸入房號:");</p><p>  scanf("%d",&stud.room);</p><p><b>  }</b></p><p>  vo

34、id create(linklist &l)//創(chuàng)建學(xué)生信息表</p><p><b>  {</b></p><p>  if(l.length>=l.listsize) //判斷學(xué)生的人數(shù)是否超過初值,如果超過,則重新分配</p><p><b>  {</b></p><p>

35、  stu *newbase;</p><p>  newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu ));</p><p>  l.elem=newbase;</p><p>  l.listsize+=increase;</p><p><b>  }</b>&

36、lt;/p><p><b>  int i=2;</b></p><p><b>  char ch;</b></p><p>  printf("\n");</p><p>  printf(" **************************開始創(chuàng)建線性表*****

37、**********************\n");printf("\n");</p><p>  printf("請輸入第1個(gè)學(xué)生的信息\n");</p><p>  shuru(l); //調(diào)用輸入函數(shù)</p><p>  ch=getchar();</p><p>  strc

38、py(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>  l.length++;</p><p>  printf("\n&quo

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

40、=='y')</p><p><b>  {</b></p><p>  printf("請輸入第%d個(gè)學(xué)生的信息\n",i);</p><p><b>  shuru(l);</b></p><p>  strcpy(l.elem[l.length].name,

41、stud.name);</p><p>  l.elem[l.length].num=stud.num;</p><p>  l.elem[l.length].room=stud.room;</p><p>  l.length++;</p><p><b>  i++;</b></p><p>

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

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

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

45、for(j=i+1;j<l.length;j++)</p><p>  if(l.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>

46、;<p>  l.elem[j]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void sort2(linklist &l)//按學(xué)號排序(采用冒泡排序)</p><p><b>  {</b&

47、gt;</p><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>&l

48、t;p>  if(l.elem[i].num>l.elem[j].num)</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><

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

50、lt;/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(strcmp(l.elem[i].name,l.elem[j].

51、name)>0)</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>  }</b><

52、/p><p><b>  }</b></p><p>  void print1(linklist &l)//打印學(xué)生信息</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf(&

53、quot;\n");</p><p>  printf("姓名 學(xué)號 房號\n");printf("\n");</p><p>  for(i=0;i<l.length;i++)</p><p>  printf("%-15s %-3d %5d\n",l.elem[

54、i].name,l.elem[i].num,l.elem[i].room);</p><p><b>  }</b></p><p>  void print2(linklist &l,int mid) //打印查找到的學(xué)生信息</p><p><b>  {</b></p><p> 

55、 printf("查找成功----->該學(xué)生信息為:\n");</p><p>  printf("姓名 學(xué)號 房號\n");printf("\n");</p><p>  printf("%-15s %-5d %-5d\n",l.elem[mid].name,l.elem[mi

56、d].num,l.elem[mid].room);</p><p><b>  }</b></p><p>  int panduan1(char ch) //判斷是否繼續(xù)查找</p><p><b>  {</b></p><p>  scanf("%c",&ch);

57、</p><p>  printf("是否繼續(xù)查找?<y/n>:");</p><p>  fflush(stdin);</p><p>  scanf("%c",&ch);</p><p>  if(ch=='y')</p><p><

58、b>  {</b></p><p>  system("cls");</p><p>  return(1);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  r

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

60、);</p><p>  printf("該學(xué)生不存在,是否繼續(xù)查找?<y/n>:");</p><p>  fflush(stdin);</p><p>  scanf("%c",&ch);</p><p>  if(ch=='y')</p><

61、p><b>  {</b></p><p>  system("cls");</p><p>  return(1);</p><p><b>  }</b></p><p><b>  else</b></p><p><

62、;b>  return 0;</b></p><p><b>  }</b></p><p>  void chazhao3(linklist &l)//按房號從小到大查找(采用二分查找)</p><p><b>  {</b></p><p>  if(l.length=

63、=0) panduan3(); //此函數(shù)功能為:返回主界面</p><p><b>  else </b></p><p><b>  {</b></p><p>  int low=0,high=l.length,mid,flag=0;//flag作為標(biāo)志符,為1則表示查找成功,否則沒有所要查找的學(xué)生</p

64、><p><b>  int m;</b></p><p><b>  char ch;</b></p><p>  printf("\n");printf("\n");</p><p>  printf("按房號查找----->請輸入要查找的房號

65、:");</p><p>  scanf("%d",&m);</p><p>  printf("\n");</p><p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(

66、low+high)/2;</p><p>  if(m==l.elem[mid].room)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p>&

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

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

69、gt;<p><b>  else </b></p><p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b&g

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

71、</p><p><b>  else </b></p><p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }&

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

73、<p><b>  {</b></p><p>  if(l.length==0) panduan3();</p><p><b>  else</b></p><p><b>  {</b></p><p>  int low=0,high=l.length,m

74、id,flag=0;</p><p><b>  int n;</b></p><p><b>  char ch;</b></p><p>  printf("\n");printf("\n");</p><p>  printf("按學(xué)號查找--

75、--->請輸入要查找的學(xué)號:");</p><p>  scanf("%d",&n);</p><p>  printf("\n");</p><p>  while(low<=high)</p><p><b>  {</b></p>

76、<p>  mid=(low+high)/2;</p><p>  if(n==l.elem[mid].num)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p&

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

78、gt;<b>  }</b></p><p>  if(flag==1) </p><p><b>  {</b></p><p>  print2(l,mid);</p><p>  if(panduan1(ch)) </p><p>  chazhao2(l);</

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

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

81、 else </b></p><p><b>  {</b></p><p>  system("cls");</p><p><b>  menu();</b></p><p><b>  }</b></p><p>&

82、lt;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void chazhao1(linklist &l)//按姓名從小到大查找(采用二分查找)</p><p><b>  { </b

83、></p><p>  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&g

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

85、gt;  printf("\n");</p><p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(strcmp(a,l.elem[mid].name)==0)</p>

86、<p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  else if(strcmp(a,l.elem[m

87、id].name)>0)</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>&

88、lt;p><b>  {</b></p><p>  print2(l,mid); //打印查找到的學(xué)生的信息</p><p>  if(panduan1(ch)) chazhao1(l);</p><p><b>  else </b></p><p><b>  {<

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

90、 else</b></p><p><b>  {</b></p><p>  if(panduan2(ch))chazhao1(l);</p><p><b>  else </b></p><p><b>  {</b></p><p>

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

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

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

94、p>  gets(stud.name); </p><p>  printf("學(xué)號:");scanf("%d",&stud.num);</p><p>  printf("房號:");scanf("%d",&stud.room);</p><p>  if

95、(l.length==0)</p><p><b>  {</b></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=stu

96、d.room;</p><p><b>  }</b></p><p>  for(i=0;i<l.length;i++)</p><p><b>  {</b></p><p>  if(stud.num<l.elem[i].num)</p><p><

97、b>  {</b></p><p><b>  k=i;</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

98、><p>  l.elem[k].num=stud.num;</p><p>  l.elem[k].room=stud.room;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else <

99、/b></p><p><b>  {</b></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;

100、</p><p><b>  }</b></p><p><b>  }</b></p><p>  l.length++;</p><p>  fflush(stdin);</p><p>  printf("\n");</p><

101、p>  printf("是否繼續(xù)插入?<y/n>:");</p><p>  scanf("%c",&ch);</p><p>  if(ch=='y') insert(l);</p><p>  else system("cls");</p><

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

103、t;/p><p>  printf("\n");printf("\n");</p><p>  printf("請輸入要?jiǎng)h除學(xué)生的學(xué)號:");</p><p>  scanf("%d",&stud.num);</p><p>  for(i=0;i<l.

104、length;i++)</p><p><b>  {</b></p><p>  if(stud.num==l.elem[i].num)</p><p><b>  {</b></p><p>  printf("該學(xué)生的信息為:\n");printf("\n&quo

105、t;);</p><p>  printf("%-15s %-3d %7d\n",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><

106、;p>  l.elem[j]=l.elem[j+1];</p><p>  printf("\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p>

107、<p>  if(i>=l.length) printf("該學(xué)生不存在\n");</p><p>  if(k>=0)l.length--;</p><p>  fflush(stdin);</p><p>  printf("\n");</p><p>  printf(&

108、quot;是否繼續(xù)刪除?<y/n>:");</p><p>  scanf("%c",&ch);</p><p>  system("cls");</p><p>  if(ch=='y') Delete(l);</p><p>  else system(

109、"cls");</p><p><b>  }</b></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  linklist l; //定義線性表 l</p><p>  in

110、it(l); //調(diào)用初始化函數(shù)</p><p><b>  char ch;</b></p><p>  system("color a");</p><p>  printf("\n");</p><p>  printf(" ************

111、*************歡迎進(jìn)入宿舍管理查詢系統(tǒng)*************************\n");</p><p>  printf("\n");</p><p>  printf("請按任意鍵開始操作:");</p><p>  scanf("%c",&ch);</p&

112、gt;<p>  system("cls");//將屏幕先前顯示的內(nèi)容清理掉</p><p>  create(l); //調(diào)用線性表創(chuàng)建函數(shù)</p><p>  system("cls");</p><p><b>  t=1;</b></p><p>  m

113、enu(); //調(diào)用主菜單函數(shù)</p><p>  while(f!=0)</p><p><b>  {</b></p><p>  system("cls");</p><p><b>  switch(f)</b></p><p><

114、;b>  {</b></p><p>  case 1: sort1(l); //調(diào)用按姓名排序函數(shù) </p><p>  printf("\n");</p><p>  if(l.length==0)</p><p><b>  {</b></p><p

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

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

117、t;/p><p>  menu(); </p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 2: sort2(l); //調(diào)用按學(xué)號排序函數(shù) </p><p>  printf("\n&quo

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

119、();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  pri

120、ntf("按學(xué)號排序:\n");</p><p>  print1(l);</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }break;</b></p>&l

121、t;p>  case 3: sort3(l); //調(diào)用按房號排序函數(shù) </p><p>  printf("\n");</p><p>  if(l.length==0) </p><p><b>  {</b></p><p>  printf("已無學(xué)生記錄\n")

122、;</p><p>  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  

123、else</b></p><p><b>  {</b></p><p>  printf("按房號排序:\n");</p><p>  print1(l);</p><p><b>  disp();</b></p><p><b>

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

125、;  break;</b></p><p>  case 5: sort2(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:

126、 sort3(l); //先調(diào)用按房號排序函數(shù)進(jìn)行排序 </p><p>  chazhao3(l); //再調(diào)用按房號查找函數(shù)進(jìn)行(二分)查找</p><p><b>  break;</b></p><p>  case 7: sort2(l); //調(diào)用插入函數(shù)</p><p>  in

127、sert(l); </p><p>  system("cls");</p><p>  printf("顯示插入后的學(xué)生信息:\n");print1(l);</p><p><b>  disp();</b></p><p><b>  menu();<

128、/b></p><p><b>  break;</b></p><p>  case 8: Delete(l); //調(diào)用刪除函數(shù)</p><p>  if(l.length==0)</p><p><b>  {</b></p><p>  printf(&

129、quot;\n");</p><p>  printf("學(xué)生記錄已被刪除完\n");</p><p>  printf("\n");</p><p><b>  disp();</b></p><p><b>  menu();</b></p

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

131、/p><p><b>  disp();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }&l

132、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4 設(shè)計(jì)結(jié)果與分析</p><p>  4.1.1開始錄入的數(shù)據(jù):</p><p>  姓名 學(xué)號 房間號<

133、/p><p>  田浩然 200910803050 105</p><p>  朱棲才 200910803079 108</p><p>  丁強(qiáng) 200910803008 104</p><p>  4.1.2插入的數(shù)據(jù):</p><p>  姓

134、名 學(xué)號 房間號</p><p>  殷林 200910803065 114</p><p>  4.1.3查找的數(shù)據(jù):</p><p>  丁強(qiáng)(按姓名) 200910803050(按學(xué)號) 114(按房間號)</p><p>  4.1.4刪除的數(shù)據(jù)

135、:</p><p>  200910803079(按學(xué)號)</p><p><b>  測試結(jié)果</b></p><p><b>  歡迎界面:</b></p><p>  按任意鍵進(jìn)入線性表的創(chuàng)建界面:</p><p>  輸入數(shù)據(jù),開始創(chuàng)建:</p><

136、;p><b>  請按鍵選擇操作:</b></p><p><b>  按姓名排序:</b></p><p><b>  按學(xué)號排序:</b></p><p><b>  按房號排序:</b></p><p><b>  插入后顯示:<

137、;/b></p><p><b>  按姓名查找:</b></p><p><b>  按學(xué)號查找:</b></p><p><b>  按房號查找:</b></p><p>  進(jìn)入刪除功能,刪除數(shù)據(jù)后顯示剩余的學(xué)生信息:</p><p>  退

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

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

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

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

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

143、的興奮,因?yàn)?,它給我增添了編程方面的信心,使我更有信心去努力成為一個(gè)強(qiáng)力的程序員。</p><p><b>  參考文獻(xiàn)</b></p><p>  【1】C語言程序設(shè)計(jì)教程(第三版)譚浩強(qiáng)</p><p>  【2】 C語言程序設(shè)計(jì)(何欣明,顏暉第二版)</p><p>  【3】還有部分資料來源于互聯(lián)網(wǎng)。</p

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論