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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  《c語言程序設計》</b></p><p><b>  課程設計報告</b></p><p><b>  計算機學院</b></p><p>  2017年4月21日(課外的,第十周答辯和總結)</p><p>  2017年5月21日(課內的,第

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

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

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

5、.1.3各個模塊之間的主要關系</p><p>  該程序的功能主要是實現學生住宿的錄入,并對學生住宿的相應信息進行學生信息的統計。各個模塊之間的關系是相互聯系的。首先,主函數包含了所有的子函數。主函數是整個程序的核心。子函數之間也是有聯系的,對學生住宿信息的添加、修改、刪除、查詢,必須是在學生宿舍號錄入的情況下進行的。因此對學生住宿信息的錄入是非常重要的。在學生住宿信息的添加、修改、刪除、查詢等所有子函數之間是

6、沒有多大聯系的。</p><p><b>  1.2功能:</b></p><p>  根據上述要求,我們開始考慮系統應具備的功能:</p><p>  ①要實現交互工作方式,各項操作結束后均應返回主菜單;</p><p>  ②系統本無任何信息數據,要建立數據文件,需開發(fā)一個信息錄入功能,即首先創(chuàng)建一個學員線性表,同時

7、我們可以將數據暫時保存在內存中,所以我們未開發(fā)信息存盤功能;</p><p> ?、坌畔浫牒蠖急4嬖趦却嬷?,用戶看不到,需要設計一個信息顯示功能,信息的顯示應該便于查閱,所以需具備按各種關鍵字顯示的功能;</p><p>  ④本系統按關鍵字(姓名、學號、房號)進行冒泡排序,采用二分查找方式分別實現按關鍵字(姓名、學號、房號)查詢功能;</p><p> ?、萦捎?/p>

8、有些同學因為不同原因而離校,所以設計了刪除功能;</p><p> ?、抻捎谟行峦瑢W入校,所以設計了插入功能;</p><p>  ⑦當用戶操作完畢需要退出時,我們提供了退出選項,便于使用者退出交互式工作系統。</p><p><b>  二 概要設計</b></p><p>  首先,運行程序進入“歡迎進入宿舍管理查

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

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

11、~8為操作鍵);</p><p>  請按任意鍵進入主界面。</p><p>  2.1線性表的順序存儲</p><p><b>  2.1.1存儲結構</b></p><p>  本系統定義的存儲結構采用結構體數組,結構體為:</p><p>  typedef struct /

12、/定義結構體成員</p><p><b>  {</b></p><p>  char name[20];</p><p>  int num; //學號和房號都為整型</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; //當前長度</p><p>  s

14、tu *elem; //存儲空間基址</p><p>  int listsize; //當前分配的存儲容量</p><p>  }linklist; 在此說明每個部分的算法設計說明(可以是描述算法的流程圖)</p><p>  2.1.2程序結構圖為:</p><p><b>  三 詳細設計</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; //學號和房號都為整型</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; //當前長度</p><p>  stu *elem; //存儲空間基址</p><p>  int listsize; //當前分配的存儲容量</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 按學號排序\n");</p><p>  printf("\n");</p><p>  printf(" 3 按房號排序 4 按姓名查找\n");</p><p>  printf("\n");</p>

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

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

25、</b></p><p><b>  {</b></p><p>  printf("請輸入數字鍵(1~8為操作鍵):");//1~8為有效數字操作鍵</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("輸入數字不對,請在原處重輸!\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、意鍵進入主界面:");</p><p>  scanf("%c",&c);</p><p>  system("cls");</p><p><b>  }</b></p><p>  void panduan3() //如果已無學生記錄則返回主界面</p

30、><p><b>  {</b></p><p>  printf("\n");</p><p>  printf("已無學生記錄\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) //輸入學生的信息</p><p><b>  {</b></p><p&

32、gt;  printf("請輸入姓名:");</p><p>  fflush(stdin); // 清空輸入緩沖區(qū),得到正確的輸入數據</p><p>  gets(stud.name); //輸入一行字符串(姓名)</p><p>  printf("請輸入學號:");</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)建學生信息表</p><p><b>  {</b></p><p>  if(l.length>=l.listsize) //判斷學生的人數是否超過初值,如果超過,則重新分配</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個學生的信息\n");</p><p>  shuru(l); //調用輸入函數</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個學生的信息\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)//按學號排序(采用冒泡排序)</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)//打印學生信息</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf(&

53、quot;\n");</p><p>  printf("姓名 學號 房號\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) //打印查找到的學生信息</p><p><b>  {</b></p><p> 

55、 printf("查找成功----->該學生信息為:\n");</p><p>  printf("姓名 學號 房號\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) //如果學生不存在,判斷是否繼續(xù)查找</p><p><b>  {</b></p><p>  scanf("%c",&ch

60、);</p><p>  printf("該學生不存在,是否繼續(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(); //此函數功能為:返回主界面</p><p><b>  else </b></p><p><b>  {</b></p><p>  int low=0,high=l.length,mid,flag=0;//flag作為標志符,為1則表示查找成功,否則沒有所要查找的學生</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)) //調用判斷函數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)) //調用判斷函數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)//按學號從小到大查找(采用二分查找)</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("按學號查找--

75、--->請輸入要查找的學號:");</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); //打印查找到的學生的信息</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)//按學號從小到大插入該學生</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("插入的學生信息為:\n");</p><p>  printf("姓名:");</p><p>  fflush(stdin);// 清空輸入緩沖區(qū),得到正確的輸入數據</p><

94、p>  gets(stud.name); </p><p>  printf("學號:");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)//按學號刪除該學生</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("請輸入要刪除學生的學號:");</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("該學生的信息為:\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("該學生不存在\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() //主函數</p><p><b>  {</b></p><p>  linklist l; //定義線性表 l</p><p>  in

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

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

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

113、enu(); //調用主菜單函數</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); //調用按姓名排序函數 </p><p>  printf("\n");</p><p>  if(l.length==0)</p><p><b>  {</b></p><p

115、>  printf("已無學生記錄\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(); //調用返回主界面&l

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

118、t;);</p><p>  if(l.length==0) </p><p><b>  {</b></p><p>  printf("已無學生記錄\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("按學號排序:\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); //調用按房號排序函數 </p><p>  printf("\n");</p><p>  if(l.length==0) </p><p><b>  {</b></p><p>  printf("已無學生記錄\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); //先調用按姓名排序函數進行排序 </p><p>  chazhao1(l); //再調用按姓名查找函數進行(二分)查找 </p><p><b>

125、;  break;</b></p><p>  case 5: sort2(l); //先調用按學號排序函數進行排序 </p><p>  chazhao2(l); //再調用按學號查找函數進行(二分)查找 </p><p><b>  break;</b></p><p>  case 6:

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

127、sert(l); </p><p>  system("cls");</p><p>  printf("顯示插入后的學生信息:\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); //調用刪除函數</p><p>  if(l.length==0)</p><p><b>  {</b></p><p>  printf(&

129、quot;\n");</p><p>  printf("學生記錄已被刪除完\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("顯示刪除后的學生信息:\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 設計結果與分析</p><p>  4.1.1開始錄入的數據:</p><p>  姓名 學號 房間號<

133、/p><p>  田浩然 200910803050 105</p><p>  朱棲才 200910803079 108</p><p>  丁強 200910803008 104</p><p>  4.1.2插入的數據:</p><p>  姓

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論