版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宿舍管理查詢軟件課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計(jì)
- 課程設(shè)計(jì)-宿舍管理查詢軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
- 宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告(c#)
- c語言課程設(shè)計(jì)報(bào)告(宿舍管理系統(tǒng))
- c語言課程設(shè)計(jì)報(bào)告(宿舍管理系統(tǒng))
- c語言課程設(shè)計(jì)---學(xué)生成績管理查詢系統(tǒng)
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)--工資管理查詢系統(tǒng)
- c語言課程設(shè)計(jì)--宿舍管理系統(tǒng)
- c語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告---宿舍管理系統(tǒng)
- 宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)——學(xué)生宿舍管理系統(tǒng)
- 學(xué)生宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--宿舍管理系統(tǒng)軟件
- 軟件工程課程設(shè)計(jì)-學(xué)生宿舍管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告--公司員工管理軟件
- 宿舍管理系統(tǒng)課程設(shè)計(jì)
評論
0/150
提交評論