![宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告書_第1頁(yè)](http://file4.renrendoc.com/view/76e8fc97e2bbdf4552ea8131585cdf9e/76e8fc97e2bbdf4552ea8131585cdf9e1.gif)
![宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告書_第2頁(yè)](http://file4.renrendoc.com/view/76e8fc97e2bbdf4552ea8131585cdf9e/76e8fc97e2bbdf4552ea8131585cdf9e2.gif)
![宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告書_第3頁(yè)](http://file4.renrendoc.com/view/76e8fc97e2bbdf4552ea8131585cdf9e/76e8fc97e2bbdf4552ea8131585cdf9e3.gif)
![宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告書_第4頁(yè)](http://file4.renrendoc.com/view/76e8fc97e2bbdf4552ea8131585cdf9e/76e8fc97e2bbdf4552ea8131585cdf9e4.gif)
![宿舍管理查詢系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告書_第5頁(yè)](http://file4.renrendoc.com/view/76e8fc97e2bbdf4552ea8131585cdf9e/76e8fc97e2bbdf4552ea8131585cdf9e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE- 32 - / NUMPAGES32課程設(shè)計(jì)(大作業(yè))報(bào)告課程名稱:數(shù) 據(jù) 結(jié) 構(gòu) 設(shè)計(jì)題目:宿舍管理查詢軟件的設(shè)計(jì)與實(shí)現(xiàn) 院 系: 信 息 技 術(shù) 學(xué) 院 班 級(jí):計(jì) 算 機(jī) 科 學(xué) 與 技 術(shù) 3班 設(shè) 計(jì) 者:學(xué) 號(hào):指導(dǎo)教師:設(shè)計(jì)時(shí)間:2012年12月27日目錄TOC o 1-3 h z uHYPERLINK l _Toc344541621課程設(shè)計(jì)(大作業(yè))報(bào)告 PAGEREF _Toc344541621 h - 1 -HYPERLINK l _Toc344541623學(xué)院課程設(shè)計(jì)(大作業(yè))任務(wù)書 PAGEREF _Toc344541623 h - 3 -HYPERLINK
2、 l _Toc344541624課程設(shè)計(jì)(大作業(yè))成績(jī) PAGEREF _Toc344541624 h - 4 -HYPERLINK l _Toc344541625摘要 PAGEREF _Toc344541625 h - 5 -HYPERLINK l _Toc344541626一、題目分析 PAGEREF _Toc344541626 h - 6 -HYPERLINK l _Toc344541627二、基本理論 PAGEREF _Toc344541627 h - 6 -HYPERLINK l _Toc344541628三、總體設(shè)計(jì) PAGEREF _Toc344541628 h - 6 -HYP
3、ERLINK l _Toc3445416293.1模塊分化設(shè)計(jì) PAGEREF _Toc344541629 h - 6 -HYPERLINK l _Toc3445416303.2合理分工設(shè)計(jì) PAGEREF _Toc344541630 h - 7 -HYPERLINK l _Toc3445416313.3算法設(shè)計(jì) PAGEREF _Toc344541631 h - 7 -HYPERLINK l _Toc3445416323.3.1存儲(chǔ)結(jié)構(gòu) PAGEREF _Toc344541632 h - 7 -HYPERLINK l _Toc3445416333.3.2流程圖 PAGEREF _Toc344
4、541633 h - 8 -HYPERLINK l _Toc344541634三、具體方法步驟 PAGEREF _Toc344541634 h - 9 -HYPERLINK l _Toc3445416354.1主菜單函數(shù)編寫 PAGEREF _Toc344541635 h - 9 -HYPERLINK l _Toc3445416364.2主函數(shù)編寫 PAGEREF _Toc344541636 h - 15 -HYPERLINK l _Toc3445416374.3刪除函數(shù)編寫的思路分析 PAGEREF _Toc344541637 h - 20 -HYPERLINK l _Toc34454163
5、84.4刪除函數(shù)的具體算法 PAGEREF _Toc344541638 h - 21 -HYPERLINK l _Toc3445416394.4刪除函數(shù)的算法分析 PAGEREF _Toc344541639 h - 22 -HYPERLINK l _Toc3445416404.5刪除算法的時(shí)間性能分析 PAGEREF _Toc344541640 h - 23 -HYPERLINK l _Toc344541641五、程序組裝調(diào)試分析 PAGEREF _Toc344541641 h - 23 -HYPERLINK l _Toc3445416425.1使用方法 PAGEREF _Toc3445416
6、42 h - 23 -HYPERLINK l _Toc3445416435.2測(cè)試數(shù)據(jù): PAGEREF _Toc344541643 h - 24 -HYPERLINK l _Toc3445416445.2.1開始錄入的數(shù)據(jù) PAGEREF _Toc344541644 h - 24 -HYPERLINK l _Toc3445416455.2.2插入的數(shù)據(jù): PAGEREF _Toc344541645 h - 24 -HYPERLINK l _Toc3445416465.2.3查找的數(shù)據(jù): PAGEREF _Toc344541646 h - 24 -HYPERLINK l _Toc3445416
7、475.3測(cè)試輸出結(jié)果(以運(yùn)行結(jié)果圖表示): PAGEREF _Toc344541647 h - 24 -HYPERLINK l _Toc3445416485.3.1歡迎界面: PAGEREF _Toc344541648 h - 24 -HYPERLINK l _Toc3445416495.3.2按任意鍵進(jìn)入線性表的創(chuàng)建界面: PAGEREF _Toc344541649 h - 24 -HYPERLINK l _Toc3445416505.3.3輸入數(shù)據(jù),開始創(chuàng)建: PAGEREF _Toc344541650 h - 25 -HYPERLINK l _Toc3445416515.3.4請(qǐng)按鍵選
8、擇操作: PAGEREF _Toc344541651 h - 25 -HYPERLINK l _Toc3445416525.3.5按排序: PAGEREF _Toc344541652 h - 25 -HYPERLINK l _Toc3445416535.3.6按學(xué)號(hào)排序: PAGEREF _Toc344541653 h - 26 -HYPERLINK l _Toc3445416545.3.7按房號(hào)排序: PAGEREF _Toc344541654 h - 26 -HYPERLINK l _Toc3445416555.3.8插入后顯示: PAGEREF _Toc344541655 h - 26
9、-HYPERLINK l _Toc3445416565.3.9按查找: PAGEREF _Toc344541656 h - 27 -HYPERLINK l _Toc3445416575.3.10按學(xué)號(hào)查找: PAGEREF _Toc344541657 h - 27 -HYPERLINK l _Toc3445416585.3.11按房號(hào)查找: PAGEREF _Toc344541658 h - 27 -HYPERLINK l _Toc3445416595.3.12進(jìn)入刪除功能、刪除數(shù)據(jù)后顯示剩余的學(xué)生信息: PAGEREF _Toc344541659 h - 28 -HYPERLINK l _T
10、oc3445416615.3.13退出(數(shù)字為零時(shí)退出): PAGEREF _Toc344541661 h - 28 -HYPERLINK l _Toc3445416625.4分析結(jié)果 PAGEREF _Toc344541662 h - 29 -HYPERLINK l _Toc344541663六、總結(jié) PAGEREF _Toc344541663 h - 30 -HYPERLINK l _Toc344541664七、結(jié)束語(yǔ) PAGEREF _Toc344541664 h - 31 -HYPERLINK l _Toc344541665八、參考文獻(xiàn) PAGEREF _Toc344541665 h
11、- 32 -學(xué)院課程設(shè)計(jì)(大作業(yè))任務(wù)書姓 名:院(系):信 息 技 術(shù) 學(xué) 院專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào):任務(wù)起止日期:2012年12 月23日 2012年12 月28日課程設(shè)計(jì)題目:宿 舍 管 理 查 詢 軟 件 的 設(shè) 計(jì) 與 實(shí) 現(xiàn)課程設(shè)計(jì)要求:(包括原始數(shù)據(jù)、技術(shù)要求、工作要求等)1)任務(wù)為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件, 程序設(shè)計(jì)要求:A.采用交互工作方式B.建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字(、學(xué)號(hào)、房號(hào))進(jìn)行排序(冒泡、選擇、插入排序等任選一種)2)查詢菜單: (用二分查找實(shí)現(xiàn)以下操作)A.按查詢 B.按學(xué)號(hào)查詢 C.按房號(hào)查詢3)打印任一查詢結(jié)果(可以連續(xù)操作)工作
12、計(jì)劃與安排:第1天 完成方案設(shè)計(jì)與程序框圖 第2、3天 編寫程序代碼(分工來完成)第4天 程序調(diào)試分析和結(jié)果與答辯第5天 課程設(shè)計(jì)報(bào)告和總結(jié)指導(dǎo)教師簽字2012年 月 日 課程設(shè)計(jì)(大作業(yè))成績(jī)學(xué)號(hào): :指導(dǎo)教師:課程設(shè)計(jì)題目:宿 舍 管 理 查 詢 軟 件 的 設(shè) 計(jì) 與 實(shí) 現(xiàn)總結(jié):通過本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我學(xué)到了很多,我充分利用了這五天的時(shí)間,認(rèn)真、獨(dú)立的完成了作業(yè)。我覺得很滿足,也很有成就感,許多曾經(jīng)自己不知道的知識(shí),現(xiàn)在知道了并能熟練的掌握了一些,比如:(1)一個(gè)函數(shù)既能調(diào)用它本身也能調(diào)用其它函數(shù);(2)如fflush(stdin) 函數(shù),它的功能是清空輸入緩沖區(qū),得到正確的輸入數(shù)
13、據(jù);如system(cls)函數(shù),它的功能是將屏幕先前顯示的容清理掉(3)我以前不知道scanf()和gets()輸入函數(shù)的不同之處,通過編程,調(diào)試,我明白了當(dāng)scanf()輸入字符串時(shí)不能帶空格,否則不能輸出后面的字符,而gets()能輸入帶空格的字符串。在編程與調(diào)試過程中我遇到了許多問題,具體問題如下:(1)以前不知道怎么把各個(gè)函數(shù)編排在一起,不能形成一個(gè)總體模塊,現(xiàn)在經(jīng)過實(shí)踐與調(diào)試,已經(jīng)能組裝好各個(gè)函數(shù)模塊,使它們實(shí)現(xiàn)各自的功能。(2)在寫mian、menu()、Delete功能函數(shù)時(shí),很繁瑣。C+中的函數(shù)模板能解決這個(gè)問題,但對(duì)于C+我還是個(gè)初學(xué)者,現(xiàn)在還不懂得如何去運(yùn)用它,所以還不能
14、對(duì)此程序作進(jìn)一步修改,但我相信,不用多久,這個(gè)問題我一定能夠解決。眾所周知,要學(xué)好編程方面這一塊,數(shù)據(jù)結(jié)構(gòu)是必可少的,它里面有許多經(jīng)典的算法和思想,是解決問題的必需品。很慚愧,雖然經(jīng)過一學(xué)期的學(xué)習(xí),但我掌握的知識(shí)很少,特別是樹和圖,只知道皮毛,目前還不能用這兩方面的知識(shí)編程。在本系統(tǒng)中,我運(yùn)用了數(shù)據(jù)結(jié)構(gòu)中的線性表知識(shí),運(yùn)用順序線性表完成了宿舍管理查詢軟件。在這次課程設(shè)計(jì)中,經(jīng)過自己與同伴的編成和調(diào)試、老師和同學(xué)的幫助,我們成功的完成了這次課程設(shè)計(jì)作業(yè),雖然它的功能還不是很多,也不是很完善,但我還是非常的興奮,因?yàn)?,它給我增添了編程方面的信心,使我更有信心去努力成為一個(gè)強(qiáng)力的程序員。指導(dǎo)教師評(píng)語(yǔ)
15、:成績(jī):填表時(shí)間:指導(dǎo)教師簽名:摘 要 本宿舍管理查詢軟件是為方便宿舍管理人員實(shí)現(xiàn)宿舍管理查詢而開發(fā)的,具有信息錄入、顯示、查詢、排序、插入和刪除功能,能實(shí)現(xiàn)信息修改和通過別的途徑導(dǎo)入大量數(shù)據(jù),可連續(xù)打印任一查詢結(jié)果,但不能實(shí)現(xiàn)信息存盤,使用簡(jiǎn)單方便,點(diǎn)擊程序即可運(yùn)行。關(guān)鍵詞:管理,查詢(、學(xué)號(hào)、房號(hào)),結(jié)構(gòu)體,函數(shù)題目分析要實(shí)現(xiàn)交互工作方式,各項(xiàng)操作結(jié)束后均應(yīng)返回主菜單;系統(tǒng)本無任何信息數(shù)據(jù),要建立數(shù)據(jù)文件,需開發(fā)一個(gè)信息錄入功能,即首先創(chuàng)建一個(gè)學(xué)員線性表,同時(shí)我們可以將數(shù)據(jù)暫時(shí)保存在存中,所以我們未開發(fā)信息存盤功能;信息錄入后都保存在存中,用戶看不到,需要設(shè)計(jì)一個(gè)信息顯示功能,信息的顯示應(yīng)
16、該便于查閱,所以需具備按各種關(guān)鍵字顯示的功能;本系統(tǒng)按關(guān)鍵字(、學(xué)號(hào)、房號(hào))進(jìn)行冒泡排序,采用二分查找方式分別實(shí)現(xiàn)按關(guān)鍵字(、學(xué)號(hào)、房號(hào))查詢功能;由于有些同學(xué)因?yàn)椴煌蚨x校,所以設(shè)計(jì)了刪除功能;由于有新同學(xué)入校,所以設(shè)計(jì)了插入功能;當(dāng)用戶操作完畢需要退出時(shí),我們提供了退出選項(xiàng),便于使用者退出交互式工作系統(tǒng)。基本理論用線性表中的順序存儲(chǔ),存儲(chǔ)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,查找、排序、刪除、插入都采用二分法。主菜單函數(shù)、主函數(shù)都調(diào)用庫(kù)函數(shù)用。三、總體設(shè)計(jì)根據(jù)上述要求,以與對(duì)題目的分析,我們將對(duì)該程序進(jìn)行如下設(shè)計(jì)3.1模塊分化設(shè)計(jì)該程序經(jīng)過分析將分成7個(gè)大的模塊:創(chuàng)建成員數(shù)據(jù)、排序、查找、插入、刪除、主
17、菜單函數(shù)、主函數(shù)3.2合理分工設(shè)計(jì)創(chuàng)建成員數(shù)據(jù)、主菜單函數(shù)、主函數(shù)、刪除、流程圖將由袁興才完成排序、查找、插入等函數(shù)由耿粉團(tuán)完成各程序塊完成后將進(jìn)行組合用C語(yǔ)言程序來實(shí)現(xiàn)3.3算法設(shè)計(jì)3.3.1存儲(chǔ)結(jié)構(gòu)本系統(tǒng)定義的存儲(chǔ)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體為:typedef struct /定義結(jié)構(gòu)體成員char name20;long num; /學(xué)號(hào)和房號(hào)都為整型long room;stu;stu stud;typedef structint length; /當(dāng)前長(zhǎng)度stu *elem; /存儲(chǔ)空間基址int listsize; /當(dāng)前分配的存儲(chǔ)容量linklist; 在此說明每個(gè)部分的算法設(shè)計(jì)說明
18、(可以是描述算法的流程圖)3.3.2流程圖主菜單函數(shù)主函數(shù)按學(xué)號(hào)刪除按學(xué)號(hào)插入按房號(hào)查找按學(xué)名排序按房號(hào)排序按XX查找按學(xué)號(hào)查找排序按XX排序查找插入刪除三、具體方法步驟4.1主菜單函數(shù)編寫編寫主菜單函數(shù)主要調(diào)用庫(kù)函數(shù),用printf、scanf來進(jìn)行輸入、輸出,用庫(kù)函數(shù)system(cls)來清屏,用fflush(stdin) 函數(shù),用它來清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)。具體主菜單函數(shù)如下:#include#include#include#define N 40 /線性表存儲(chǔ)空間的初始分配量#define add 10 /線性表存儲(chǔ)空間的分配量增量int f,t=0; /定義全局變量ty
19、pedef struct char name20; long num; /學(xué)號(hào)和房號(hào)都為長(zhǎng)整型long roomnum;stu;stu stud;typedef structint length; /當(dāng)前長(zhǎng)度stu *elem; /存儲(chǔ)空間基址int listsize; /當(dāng)前分配的存儲(chǔ)容量linklist; void init(linklist &l)/線性表初始化l.length=0;l.elem=(stu *)malloc(N*sizeof(stu );l.listsize=N;void menu()/操作菜單printf(n);print *請(qǐng)按鍵選擇操作*n);printf(n);p
20、rintf(n);printf( 1 按排序 2 按學(xué)號(hào)排序n);printf(n);printf( 3 按房號(hào)排序 4 按查找n);printf(n);printf( 5 按學(xué)號(hào)查找 6 按房號(hào)查找n);printf(n);printf( 7 按學(xué)號(hào)插入 8 按學(xué)號(hào)刪除n);printf(n);printf(n);printf(n);printf(n);printf(輸入為時(shí),退出操作n);if(t=1)printf(請(qǐng)輸入數(shù)字鍵(18為操作鍵):);/18為有效數(shù)字操作鍵scanf(%d,&f);if(f9)system(cls);/清屏函數(shù)printf(n);printf(輸入數(shù)字不對(duì),
21、請(qǐng)重新重輸!n); printf(n);menu();void return1() /返回主界面char c;fflush(stdin);printf(n);printf(請(qǐng)按任意鍵進(jìn)入主界面:);scanf(%c,&c);system(cls);void judge3() /如果已無學(xué)生記錄則返回主界面printf(n);printf(已無學(xué)生記錄n);printf(n);return1();menu();void input(linklist l) /輸入學(xué)生的信息printf(請(qǐng)輸入:);fflush(stdin); / 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets();
22、 /輸入一行字符串()printf(請(qǐng)輸入學(xué)號(hào):);scanf(%d,&stud.num);printf(請(qǐng)輸入房號(hào):);scanf(%d,&stud.roomnum);void create(linklist &l)/創(chuàng)建學(xué)生信息表if(l.length=l.listsize) /判斷學(xué)生的人數(shù)是否超過初值,如果超過,則重新分配stu *newbase;newbase=(stu*)realloc(l.elem,(N+add)*sizeof(stu );l.elem=newbase;l.listsize+=add;int i=2;char ch;printf(n);printf( *開始創(chuàng)建線
23、性表*n);printf(n);printf(請(qǐng)輸入第%d個(gè)學(xué)生的信息n,i-1);input(l); /調(diào)用輸入函數(shù)ch=getchar();strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.roomnum=stud.roomnum;l.length+;i+;printf(n);printf(是否繼續(xù)輸入?:);scanf(%c,&ch);printf(n);printf(n);while(ch=y)printf(請(qǐng)輸入第%d個(gè)學(xué)生的信息n,i-1);input(l);strcpy
24、(,);l.eleml.length.num=stud.num;l.eleml.length.roomnum=stud.roomnum;l.length+;i+;ch=getchar(); printf(n);printf(是否繼續(xù)輸入?:);scanf(%c,&ch);printf(n);printf(n);if(ch=n) system(cls);4.2主函數(shù)編寫編寫主函數(shù)時(shí),要進(jìn)行各功能鍵的實(shí)現(xiàn),為此而考慮用分支結(jié)構(gòu)switch(),又發(fā)現(xiàn)熒屏背景色和字體不太清晰有調(diào)用庫(kù)函system(color 1a),具體的函數(shù)實(shí)現(xiàn)如下:voi
25、d main() /主函數(shù)linklist l; /定義線性表linit(l); /調(diào)用初始化函數(shù)char ch;system(color 1a);/改變屏幕背景色和字體printf(n);printf( *歡迎進(jìn)入宿舍管理查詢系統(tǒng)*n);printf(n);printf(請(qǐng)按任意鍵開始操作:);scanf(%c,&ch);system(cls);/將屏幕先前顯示的容清理掉create(l); /調(diào)用線性表創(chuàng)建函數(shù)system(cls);t=1;menu(); /調(diào)用主菜單函數(shù)while(f!=0)system(cls);switch(f)/用分支語(yǔ)句來實(shí)現(xiàn)各功能鍵case 1: sort1(
26、l); /調(diào)用按排序函數(shù) printf(n);if(l.length=0)printf(已無學(xué)生記錄n);printf(n);return1();menu();elseprintf(按排序:n);print1(l);return1(); /調(diào)用返回主界面menu(); break;case 2: sort2(l); /調(diào)用按學(xué)號(hào)排序函數(shù)printf(n);if(l.length=0) printf(已無學(xué)生記錄n);printf(n);return1();menu();elseprintf(按學(xué)號(hào)排序:n);print1(l);return1();menu();break;case 3: so
27、rt3(l); /調(diào)用按房號(hào)排序函數(shù)printf(n);if(l.length=0) printf(已無學(xué)生記錄n);printf(n);return1();menu();elseprintf(按房號(hào)排序:n);print1(l);return1();menu();break; case 4:sort1(l); /先調(diào)用按排序函數(shù)進(jìn)行排序search1(l); /再調(diào)用按查找函數(shù)進(jìn)行(二分)查找break;case 5: sort2(l); /先調(diào)用按學(xué)號(hào)排序函數(shù)進(jìn)行排序search2(l); /再調(diào)用按學(xué)號(hào)查找函數(shù)進(jìn)行(二分)查找break;case 6: sort3(l); /先調(diào)用按房號(hào)
28、排序函數(shù)進(jìn)行排序search3(l); /再調(diào)用按房號(hào)查找函數(shù)進(jìn)行(二分)查找break;case 7: sort2(l); /調(diào)用插入函數(shù)insert(l); system(cls);printf(顯示插入后的學(xué)生信息:n);print1(l);return1();menu();break;case 8: Delete(l); /調(diào)用刪除函數(shù)if(l.length=0)printf(n);printf(學(xué)生記錄已被刪除完n);printf(n);return1();menu();elseprintf(顯示刪除后的學(xué)生信息:n);print1(l);return1();menu();break
29、;4.3刪除函數(shù)編寫的思路分析 首先考慮從線性表L中刪除第i個(gè)元素并返回元素的值,若刪除失敗出錯(cuò),則返回出錯(cuò)信息并停止程序運(yùn)行。線性表的刪除運(yùn)算時(shí)指將表中第i個(gè)元素從線性表中去掉,刪除后原長(zhǎng)為n的線性表:(a1,a2,a3,ai-1,ai,ai+1,an)成為表長(zhǎng)為n1的線性表(a1,a2,a3,ai-1,ai+1,an),i的取值圍:1=i=n.線性表的刪除操作是將表長(zhǎng)為n的線性表并為表長(zhǎng)為n-1的線性表,若刪除的是第i個(gè)元素(下標(biāo)為i-1),則從第i+1個(gè)元素到第n個(gè)元素(最后一個(gè)元素)一次往前移動(dòng)了一個(gè)位置,表長(zhǎng)減少1。在移動(dòng)元素時(shí),也用兩種方法:一是將第n個(gè)元素移動(dòng)第n-1個(gè)元素,第n
30、-1個(gè)元素移動(dòng)到第n-2元素,直到第i+1個(gè)元素移動(dòng)到第i個(gè)元素;另一方法,將第i+1個(gè)元素移動(dòng)第i個(gè)元素,第i+2個(gè)元素移動(dòng)第i+1個(gè)元素,直到第n個(gè)元素移動(dòng)第n-1個(gè)元素為止,從安全方面考慮我選擇后一種。經(jīng)過以上分析,要實(shí)現(xiàn)刪除第i個(gè)元素算法,我考慮了健壯性,功能性,具體算法思想:線性表是否為空,若是,則無法刪除,給出一個(gè)錯(cuò)誤信息。刪除位置是否超界,若in,則給出一個(gè)超界信息。因?yàn)橐祷乇粍h除元素,所以先將待刪除元素暫時(shí)保存起來,以便返回。從第i+1個(gè)元素(下標(biāo)為i)到最后一個(gè)元素(下標(biāo)為L(zhǎng)length)止,之一往前移動(dòng)一位。線性表的長(zhǎng)度減1。為了方便使用采用了遞歸調(diào)用的方法。4.4刪除函
31、數(shù)的具體算法void Delete(linklist &l)/按學(xué)號(hào)刪除該學(xué)生int i,j,k=-1;char ch;printf(n);printf(n);printf(請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):);scanf(%d,&stud.num);for(i=0;il.length;i+)if(stud.num=l.elemi.num)printf(該學(xué)生的信息為:n);printf(n);printf(%-15s %-3d %7dn,,l.elemi.num,l.elemi.roomnum);k=i;for(j=k;j=l.length) printf(該學(xué)生不存在n);i
32、f(k=0)l.length-;fflush(stdin);printf(n);printf(是否繼續(xù)刪除?:);scanf(%c,&ch);system(cls);if(ch=y)Delete(l);else system(cls);4.4刪除函數(shù)的算法分析本算法需要注意以下問題:刪除第i個(gè)元素,i的取值為1=i=n,否則第i個(gè)元素部存在,因此要檢查位置的有效性。當(dāng)表空時(shí)不能做刪除操作刪除ai之后,該數(shù)據(jù)已經(jīng)不存在,如果需要,先取出ai,在操作。4.5刪除算法的時(shí)間性能分析該算法時(shí)間主要消耗在移動(dòng)表中元素上,刪除第i個(gè)元素時(shí),其后面的元素ai+1an都要像前移動(dòng)一位,共移動(dòng)了n-1個(gè)元素,所
33、以平均移動(dòng)數(shù)據(jù)元素的次數(shù):E(de)=在等概率的情況下,pi=1/n,則:E(de)=這說明順序表上作刪除運(yùn)算時(shí)大約需要移動(dòng)表中一半的元素,顯然該算法的時(shí)間復(fù)雜度為O(n)五 、程序組裝調(diào)試分析5.1使用方法首先,運(yùn)行程序進(jìn)入“歡迎進(jìn)入宿舍管理查詢系統(tǒng)”界面,然后進(jìn)入線性表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊“n”鍵則進(jìn)入操作界面(主界面),然后可按鍵進(jìn)行操作。單擊數(shù)字鍵“1”,則為按排序 單擊數(shù)字鍵“2”,則為按學(xué)號(hào)排序單擊數(shù)字鍵“3”,則為按房號(hào)排序 單擊數(shù)字鍵“4”,則為按查找單擊數(shù)字鍵“5”,則為按學(xué)號(hào)查找 單擊數(shù)字鍵“6”,則為按學(xué)號(hào)查找單擊數(shù)字鍵“7”,則為按學(xué)號(hào)插入
34、 單擊數(shù)字鍵“8”,則為按學(xué)號(hào)刪除系統(tǒng)中有如下關(guān)鍵詞: 當(dāng)輸入的數(shù)字鍵為0時(shí),退出操作;請(qǐng)輸入數(shù)字鍵(18為操作鍵);請(qǐng)按任意鍵進(jìn)入主界面。5.2測(cè)試數(shù)據(jù):5.2.1開始錄入的數(shù)據(jù) 學(xué)號(hào) 房間號(hào)袁興才 2011331 632耿粉團(tuán) 2011340 623曉梅 2011336 6225.2.2插入的數(shù)據(jù): 學(xué)號(hào) 房間號(hào)飄逸 2011629 6295.2.3查找的數(shù)據(jù):飄逸(按) 2011629(按學(xué)號(hào)) 629(按房間號(hào))5.2.4刪除的數(shù)據(jù):622(按學(xué)號(hào))5.3測(cè)試輸出結(jié)果(以運(yùn)行結(jié)果圖表示):5.3.1歡迎界面:5.3.2按任意鍵進(jìn)入線性表的創(chuàng)建界面:5.3.3輸入數(shù)據(jù),開始創(chuàng)建:5.3.
35、4請(qǐng)按鍵選擇操作:5.3.5按排序:5.3.6按學(xué)號(hào)排序:5.3.7按房號(hào)排序:5.3.8插入后顯示:5.3.9按查找:5.3.10按學(xué)號(hào)查找:5.3.11按房號(hào)查找:5.3.12進(jìn)入刪除功能、刪除數(shù)據(jù)后顯示剩余的學(xué)生信息5.3.14退出(數(shù)字為零時(shí)退出):5.4分析結(jié)果為了避免繁瑣、改進(jìn)算法,在一些函數(shù)中調(diào)用了其它的函數(shù)。如:在按(、學(xué)號(hào)、房號(hào))查找中都調(diào)用了 panduan1() 和panduan2()函數(shù)。在插入和刪除模塊中,顯示學(xué)生的信息的下面總是有主界面,經(jīng)過調(diào)試,運(yùn)用system(cls)函數(shù)清屏后,顯示的只有學(xué)生的信息了,再按鍵即可返回主界面。本程序多次運(yùn)用了 disp()、me
36、nu()、system(cls)、fflush(stdin)等函數(shù),經(jīng)過多次調(diào)試,已經(jīng)很好的控制了顯示的學(xué)生信息與主界面的轉(zhuǎn)換。六、總結(jié)1、通過本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我學(xué)到了很多,我充分利用了這五天的時(shí)間,認(rèn)真、獨(dú)立的完成了作業(yè)。我覺得很滿足,也很有成就感,許多曾經(jīng)自己不知道的知識(shí),現(xiàn)在知道了并能熟練的掌握了一些,比如:(1)一個(gè)函數(shù)既能調(diào)用它本身也能調(diào)用其它函數(shù);(2)如fflush(stdin) 函數(shù),它的功能是清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù);如system(cls)函數(shù),它的功能是將屏幕先前顯示的容清理掉(3)我以前不知道scanf()和gets()輸入函數(shù)的不同之處,通過編程,調(diào)試,我明白了當(dāng)s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023八年級(jí)數(shù)學(xué)下冊(cè) 第十九章 一次函數(shù)19.2 一次函數(shù)19.2.2 一次函數(shù)第1課時(shí) 一次函數(shù)的概念說課稿 (新版)新人教版
- 2024-2025學(xué)年新教材高考數(shù)學(xué) 第1章 空間向量與立體幾何 5 空間中的距離說課稿 新人教B版選擇性必修第一冊(cè)
- 2023九年級(jí)數(shù)學(xué)下冊(cè) 第24章 圓24.6 正多邊形與圓第2課時(shí) 正多邊形的性質(zhì)說課稿 (新版)滬科版
- 2025甲指乙分包工程合同范本
- 2025酒店租賃合同
- Module 4 Unit 2 He doesnt like these trousers.(說課稿)-2024-2025學(xué)年外研版(一起)英語(yǔ)二年級(jí)上冊(cè)
- 2025企業(yè)管理資料勞動(dòng)合同駕駛員文檔范本
- 2024年高中化學(xué) 第三章 烴的含氧衍生物 第一節(jié) 第1課時(shí) 醇說課稿 新人教版選修5
- Revision Being a good guest (說課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 4電路出故障了(說課稿)-2023-2024學(xué)年科學(xué)四年級(jí)下冊(cè)教科版
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 暖通空調(diào)基礎(chǔ)知識(shí)及識(shí)圖課件
- 回彈法檢測(cè)砌體強(qiáng)度培訓(xùn)講義PPT(完整全面)
- 重力壩水庫(kù)安全度汛方案
- 防滲墻工程施工用表及填寫要求講義
- 交通信號(hào)控制系統(tǒng)檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- Bankart損傷的診療進(jìn)展培訓(xùn)課件
- 校園信息化設(shè)備管理檢查表
- 新版抗拔樁裂縫及強(qiáng)度驗(yàn)算計(jì)算表格(自動(dòng)版)
- API SPEC 5DP-2020鉆桿規(guī)范
- 部編版小學(xué)生語(yǔ)文教師:統(tǒng)編版語(yǔ)文1-6年級(jí)語(yǔ)文要素梳理
評(píng)論
0/150
提交評(píng)論