版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宿舍管理查詢系統(tǒng)軟件的設(shè)計與實現(xiàn)課程設(shè)計
- 宿舍管理查詢軟件課程設(shè)計報告
- c宿舍管理查詢軟件-課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計
- 課程設(shè)計--宿舍管理系統(tǒng)的設(shè)計與實現(xiàn)
- c語言課程設(shè)計---學(xué)生成績管理查詢系統(tǒng)
- 資產(chǎn)管理查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 《c語言程序設(shè)計》課程設(shè)計--工資管理查詢系統(tǒng)
- 宿舍管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——宿舍管理系統(tǒng)
- 宿舍管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--宿舍管理系統(tǒng)軟件
- 軟件工程課程設(shè)計-學(xué)生宿舍管理系統(tǒng)
- 軟件工程課程設(shè)計--倉庫管理系統(tǒng)設(shè)計與實現(xiàn)
- 宿舍管理系統(tǒng)課程設(shè)計報告
- web課程設(shè)計(宿舍管理系統(tǒng))
- 學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計與實現(xiàn)-軟件綜合課程設(shè)計
- 課程設(shè)計報告---宿舍管理系統(tǒng)
- 課程設(shè)計---學(xué)生宿舍管理系統(tǒng)的分析與設(shè)計
- 智能樓宇課程設(shè)計--組態(tài)軟件的設(shè)計與實現(xiàn)
評論
0/150
提交評論