版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)赫夫曼樹(shù)及赫夫曼編碼 院 系: 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 班 級(jí): 師計(jì)10-2班 姓 名: 濮成林(17) 合 作 者: 高清彬 葛陽(yáng) 指導(dǎo)教師: 葛建梅 2011 年 12 月 20 日I數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)一、題目: 赫夫曼樹(shù)及赫夫曼編碼二、設(shè)計(jì)要求(1)濮成林(組長(zhǎng))、高清彬和葛陽(yáng)組成設(shè)計(jì)小組。(2)小組成員分工協(xié)作完成。要求每個(gè)成員有自己相對(duì)獨(dú)立的模塊,同時(shí)要了解其他組員完成的內(nèi)容。(3)查閱相關(guān)資料,自學(xué)具體課題中涉及到的新知識(shí)。(4)采用結(jié)構(gòu)化、模塊化程序設(shè)計(jì)方法設(shè)計(jì),功能要完善,界面美觀。(5)所設(shè)計(jì)的系統(tǒng)要至少應(yīng)用一個(gè)課程中或者與其密切相關(guān)的算法。
2、(6)按要求寫(xiě)出課程設(shè)計(jì)報(bào)告。其主要內(nèi)容包括:封皮、課程設(shè)計(jì)任務(wù)書(shū),指導(dǎo)教師評(píng)語(yǔ)與成績(jī)、目錄、概述、軟件總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、軟件的調(diào)試、總結(jié)、附錄:帶中文注釋的程序清單、參考文獻(xiàn)。報(bào)告一律用A4紙打印,中文字體為宋體,西文字體用Time New Roma,一律用小四號(hào)字,行距采用“固定值”18磅,首行縮進(jìn)2字符??傮w設(shè)計(jì)應(yīng)配合軟件總體模塊結(jié)構(gòu)圖來(lái)說(shuō)明軟件應(yīng)具有的功能。詳細(xì)設(shè)計(jì)闡述本人設(shè)計(jì)模塊部分的設(shè)計(jì)思想、應(yīng)用到的理論和算法、程序流程等等,調(diào)試的敘述應(yīng)配合出錯(cuò)場(chǎng)景的抓圖來(lái)說(shuō)明出現(xiàn)了哪些錯(cuò)誤,如何解決的。(7)課程設(shè)計(jì)報(bào)告中的軟件總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、軟件的調(diào)試等主體內(nèi)容要以文字描述、圖表等形式為
3、主,可配以主要核心代碼,在附錄中附程序清單。三、課程設(shè)計(jì)工作量由于是設(shè)計(jì)小組團(tuán)結(jié)協(xié)作完成設(shè)計(jì)任務(wù),一般每人的程序量在200行有效程序行左右,不得抄襲。四、課程設(shè)計(jì)工作計(jì)劃2011年12月14日,指導(dǎo)教師講課,學(xué)生根據(jù)題目準(zhǔn)備資料;2011年12月16日,設(shè)計(jì)小組進(jìn)行總體方案設(shè)計(jì)和任務(wù)分工;2011年12月17日2011年12月22日,每人完成自己承擔(dān)的程序模塊并通過(guò)獨(dú)立編譯;2011年12月23日2011年12月24日,將各模塊集成為一個(gè)完整的系統(tǒng),并錄入足夠的數(shù)據(jù)進(jìn)行調(diào)試運(yùn)行;2011年12月25日,驗(yàn)收、開(kāi)始撰寫(xiě)報(bào)告;2011年12月26日前,提交課程設(shè)計(jì)報(bào)告。 指導(dǎo)教師簽章: 教研室主任
4、簽章 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ)與成績(jī)指導(dǎo)教師評(píng)語(yǔ):課程設(shè)計(jì)表現(xiàn)成績(jī): 課程設(shè)計(jì)驗(yàn)收成績(jī): 課程設(shè)計(jì)報(bào)告成績(jī): 課程設(shè)計(jì) 總成績(jī): 指導(dǎo)教師簽章 2011年 12 月 26 日31目 錄第1章概 述11.1 性能需求11.2 功能需求2第2章概要設(shè)計(jì)32.1 功能模塊設(shè)計(jì)32.2 算法分析與設(shè)計(jì)4第3章詳細(xì)設(shè)計(jì)63.1 主函數(shù)模塊設(shè)計(jì)63.2登錄模塊設(shè)計(jì)73.3Huffman樹(shù)建立模塊設(shè)計(jì)10第4章調(diào)試分析與測(cè)試結(jié)果114.1 調(diào)試分析114.2測(cè)試結(jié)果12第5章總 結(jié)14參考文獻(xiàn)15附 錄16第1章 概 述1.1 性能需求赫夫曼樹(shù)及赫夫曼編碼系統(tǒng):從用戶(hù)角度分析,響應(yīng)時(shí)間(最關(guān)心的指標(biāo))2
5、/5/10原則,過(guò)長(zhǎng)的時(shí)間等待讓用戶(hù)煩燥不安;從系統(tǒng)的穩(wěn)定性分析 不會(huì)發(fā)生應(yīng)用服務(wù)器崩潰的現(xiàn)象。本系統(tǒng)執(zhí)行效率高、資源占用少、系統(tǒng)穩(wěn)定性好、兼容性好、可靠性強(qiáng)、可擴(kuò)展性好。服務(wù)端:Windows 2003 Server操作系統(tǒng)客戶(hù)端:Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版硬件系統(tǒng):奔騰100以上CPU、64M以上內(nèi)存、1G以上硬盤(pán)、光驅(qū)。軟件系統(tǒng):WIN-TCWIN-TC是一個(gè)TC2 WINDOWS平臺(tái)開(kāi)發(fā)工具。該軟件使用TC2為內(nèi)核,提供WINDOWS平臺(tái)的開(kāi)發(fā)界面,因此也就支持WINDOWS平臺(tái)下的功能,例如剪切、
6、復(fù)制、粘貼和查找替換等。而且在功能上也有它的獨(dú)特特色例如語(yǔ)法加亮、C內(nèi)嵌匯編、自定義擴(kuò)展庫(kù)的支持等。并提供一組相關(guān)輔助工具令你在編程過(guò)程中更加游刃有余,如虎添翼。 本軟件用于編寫(xiě)C語(yǔ)言程序WIN-TC簡(jiǎn)繁雙語(yǔ)版可以正常運(yùn)行于98及其以上的簡(jiǎn)體及繁體WINDOWS操作系統(tǒng)上WIN-TC是Turbo C 2.0(簡(jiǎn)稱(chēng)TC2.0)的一種擴(kuò)展形式,是在TC2.0的基礎(chǔ)上,增強(qiáng)了系統(tǒng)的兼容性和共享性,允許進(jìn)行復(fù)制粘貼的多項(xiàng)可以用鼠標(biāo)來(lái)操作的功能,比TC2.0使用起來(lái)方便。1.2 功能需求當(dāng)今信息時(shí)代,信息技術(shù)已成為當(dāng)代知識(shí)經(jīng)濟(jì)的核心技術(shù)。我們時(shí)刻都在和數(shù)據(jù)打交道,比如人們出外工作時(shí)找最短路徑,在銀行查詢(xún)
7、存款、通過(guò)互聯(lián)網(wǎng)查詢(xún)新聞、以及遠(yuǎn)程教育報(bào)名等,所有這些都在與數(shù)據(jù)發(fā)生關(guān)系。Huffman樹(shù),又稱(chēng)“最優(yōu)樹(shù)”,是一種帶權(quán)路徑最短的樹(shù)。Huffman樹(shù)的提出,不僅具有極大的理論價(jià)值,而且它的實(shí)際應(yīng)用也十分廣泛。利用Huffman編碼進(jìn)行通訊可以大大提高信道的利用率,縮短信息傳輸時(shí)間,降低傳輸成本。在解決某些判定問(wèn)題時(shí),利用Huffman樹(shù)可以得到最佳判定算法。例如:要編制一個(gè)將百分制轉(zhuǎn)換成五級(jí)分制的程序。輸入的數(shù)據(jù)量較大的情況下,則應(yīng)考慮程序的質(zhì)量問(wèn)題,Huffman樹(shù)就可以大大提高其效率。打開(kāi)程序,進(jìn)入程序界面:1、 登陸:該模塊使用口令登錄,口令正確即可登錄,系統(tǒng)給出3次機(jī)會(huì)輸入口令,口令錯(cuò)
8、誤則退出系統(tǒng)。2、 動(dòng)畫(huà)界面:該模塊使界面更加美觀。3、 Huffman樹(shù)及Huffman編碼:該模塊是本系統(tǒng)的主要部分,根據(jù)提示,鍵入數(shù)據(jù),動(dòng)態(tài)演示創(chuàng)建赫夫曼樹(shù)的過(guò)程,實(shí)現(xiàn)赫夫曼編碼。4、 動(dòng)畫(huà)界面:感謝語(yǔ)。第2章 概要設(shè)計(jì)2.1 功能模塊設(shè)計(jì)1、概要設(shè)計(jì)階段的主要任務(wù)審查軟件計(jì)劃、軟件需求分析提供的文檔,提出最佳推薦方案,用系統(tǒng)流程圖,組成系統(tǒng)物理元素清單,成本效益分析,系統(tǒng)的進(jìn)度計(jì)劃,供指導(dǎo)教師審定,審定后進(jìn)入設(shè)計(jì)。確定模塊結(jié)構(gòu),劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊間的聯(lián)系,確定數(shù)據(jù)結(jié)構(gòu)、文件結(jié)構(gòu),確定測(cè)試方法與策略。 編寫(xiě)概要設(shè)計(jì)說(shuō)明書(shū),測(cè)試計(jì)劃,選用相關(guān)的
9、軟件工具來(lái)描述軟件結(jié)構(gòu),結(jié)構(gòu)圖是經(jīng)常使用的軟件描述工具。選擇分解功能與劃分模塊的設(shè)計(jì)原則,例如模塊劃分獨(dú)立性原則,信息隱蔽原則等。2、概要設(shè)計(jì)的過(guò)程概要設(shè)計(jì)要先進(jìn)行系統(tǒng)設(shè)計(jì),復(fù)審系統(tǒng)計(jì)劃與需求分析,確定系統(tǒng)具體的實(shí)施方案;然后進(jìn)行結(jié)構(gòu)設(shè)計(jì),確定軟件結(jié)構(gòu)。根據(jù)以上分析,該系統(tǒng)模塊結(jié)構(gòu)圖如圖2-1:開(kāi)始初始化圖形系統(tǒng)播放動(dòng)畫(huà)系統(tǒng)進(jìn)入界面關(guān)閉圖形系統(tǒng)登錄界面結(jié)束圖2-1 系統(tǒng)模塊結(jié)構(gòu)圖2.2 算法分析與設(shè)計(jì)1、如何構(gòu)造Huffman樹(shù)已知n個(gè)權(quán)值 w1, w2, , wn,構(gòu)造一 棵具有n 個(gè)葉子且葉子權(quán)分別對(duì)應(yīng)這n個(gè)值的Huffman樹(shù)。具體步驟如下: (1)初始化 構(gòu)造一個(gè)森林F = T1, T
10、2, , Tn,其中每棵二叉樹(shù)中均只含一個(gè)帶權(quán)值為 wi 的根結(jié)點(diǎn),其左、右子樹(shù)為空樹(shù)。W1W2W3Ws1Ws2WnF:(2) 找最小樹(shù) 從F 中選取其根結(jié)點(diǎn)的權(quán)值為最小的兩棵二叉樹(shù),分別作為左、右子樹(shù)構(gòu)造一棵新的二叉樹(shù),并置新樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)根結(jié)點(diǎn)的權(quán)值之和。 Ws1+Ws2Ws1Ws2(3) 刪除與加入 從F 中將找到的兩棵最小樹(shù)刪除,同時(shí)加入剛生成的新樹(shù)。(4) 重復(fù)(2)和(3)步,直至F 中只含一棵樹(shù)為止。2. 赫夫曼樹(shù)的存儲(chǔ)結(jié)構(gòu)Weight lchild rchild parent 3. 赫夫曼樹(shù)存儲(chǔ)表示 typedef struct char data;unsign
11、ed int weight; unsigned int parent, lchild, rchild; HTNode, *HuffmanTree;4. 構(gòu)造赫夫曼樹(shù)的算法思想(1)已知n個(gè)葉子結(jié)點(diǎn),可得出此Huffman樹(shù)共有 m(2n-1)個(gè)結(jié)點(diǎn)。即: m=2n-1(2)分配m+1個(gè)存儲(chǔ)單元(基址為HT)存儲(chǔ)此Huffman樹(shù)。約定:不用下標(biāo)為0的存儲(chǔ)單元。(3)初始化1至n存儲(chǔ)單元,存放葉子結(jié)點(diǎn)。 約定:無(wú)雙親或無(wú)孩子的結(jié)點(diǎn)相應(yīng)的域值為0(4)初始化n+1至m存儲(chǔ)單元,各個(gè)域值為0。(5)構(gòu)造Huffman樹(shù)。即:生成n+1至m結(jié)點(diǎn)。5、算法的核心是構(gòu)造Huffman樹(shù)(約定:權(quán)值小者為左
12、子樹(shù))生成 i = n+1 m 的結(jié)點(diǎn)。 for(i=n+1;i<=m;i+) 在HT的1到i-1中選擇parent為0,且weight最小的兩個(gè)結(jié)點(diǎn),其序號(hào)分別為s1和s2。 按權(quán)值小者為左子樹(shù)原則生成一棵新的二叉樹(shù),修改相應(yīng)結(jié)點(diǎn)的lchild 、rchild、 parent域值。 第3章 詳細(xì)設(shè)計(jì)3.1 主函數(shù)模塊設(shè)計(jì) denglu();主函數(shù)是程序的主控模塊。首先進(jìn)入登陸界面,輸入密碼,正確則程序開(kāi)始運(yùn)行動(dòng)畫(huà);根據(jù)提示選擇按鍵,調(diào)用赫夫曼函數(shù)模塊,即可實(shí)現(xiàn)操作;操作結(jié)束后調(diào)用退出函數(shù),進(jìn)行結(jié)束處理,安全退出程序,程序流程圖如圖3-1所示:口令正確DrawSnow();Creat()
13、; Donghua();圖3-1主要代碼如下:void main() initgr(); if(denglu()=0) DrawSnow(); page(); cleardevice(); setbkcolor(BLUE); setfillstyle(1,BLUE); floodfill(300,20,WHITE); setfillstyle(1,BLUE); floodfill(20,450,WHITE); creat(); donghua(); 3.2 登錄模塊設(shè)計(jì)該模塊使用口令登錄,口令正確即可登錄,系統(tǒng)給出3次機(jī)會(huì)輸入口令,口令錯(cuò)誤則退出系統(tǒng)。如圖3-2所示:passi=ch;star
14、i='*'YESmoveto(250,192);outtext(star);ch='b'IF YESbar(250,192,399,203);strcmp(pass,buf)=0i+(ch=getch()!='r'i=0nintn;drawmat(ni12S,12,238,264,BLACK);圖3-2 登錄函數(shù)程序流程圖主要代碼如下:int denglu( ) int n ; char ch; FILE *fp; char pass20="",buf20="",star20="" in
15、t i,j,gdriver=DETECT,gmode; /* 第一次運(yùn)行時(shí),如下三行用于設(shè)置口令字,之后可將其刪除fp=fopen("pass1","wb");fwrite("abcd1234",8,1,fp);fclose(fp); */fp=fopen("pass1","rb"); /* 將口令字讀入buf字符數(shù)組中 */ fread(buf,8,1,fp); fclose(fp); textbackground(7); textcolor(0); initgraph(&gdrive
16、r,&gmode,""); cleardevice(); setcolor(1); /* 畫(huà)出標(biāo)題欄 */ setfillstyle(SOLID_FILL,1); bar3d(219,139,419,159,0,0); floodfill(319,140,1); drawmat(deng12S , 12 , 284 , 145 , WHITE ); drawmat(lu12S , 12 , 298 , 145 , WHITE ); drawmat(he12S , 12 , 312 , 145 , WHITE ); drawmat(fu12S , 12 , 326 ,
17、 145 , WHITE ); drawmat(man12S , 12 , 340 , 145 , WHITE ); drawmat(shu12S , 12 , 354 , 145 , WHITE ); setcolor(7); /* 畫(huà)對(duì)話(huà)框的框體 */ setfillstyle(SOLID_FILL,7); bar3d(219,160,419,279,0,0); floodfill(319,239,7); setlinestyle(0,0,3); /* 以下在對(duì)話(huà)框中畫(huà)線(xiàn)以便增強(qiáng)立體感 */ setcolor(EGA_WHITE); line(219,139,219,279); line(
18、219,139,419,139); line(221,160,418,160); setlinestyle(0,0,1); line(419,138,419,279); line(219,279,419,279); setcolor(EGA_DARKGRAY); line(221,160,418,160); line(219,139,219,278); line(219,139,418,139); drawmat(kou12S , 12 , 230 , 170 , BLACK ); /* 輸出“口令:” */ drawmat(ling12S , 12 , 250 , 170 , BLACK )
19、; drawmat(mao12S , 12 , 270 , 170 , BLACK ); setlinestyle(0,0,1); /* 畫(huà)出口令輸入框 */ setcolor(EGA_WHITE); bar3d(229,185,400,205,0,0); setcolor(EGA_DARKGRAY); line(230,186,399,186); line(230,186,230,204); line(230,206,401,206); line(401,186,401,206); line(220,258,418,258); /* 畫(huà)出深灰色提示框分隔線(xiàn) */ setcolor(15);
20、/* 畫(huà)出白色提示框分隔線(xiàn) */ line(220,259,418,259); setcolor(0); n = 3 ; while(n) for(i=0;(ch=getch()!='r'i+) if(ch='b') if(i=0) i-; else i-;passi='0' stari='0' i-; bar(250,192,399,203); /*?*/ else passi=ch;stari='*' moveto(250,192); outtext(star); if(strcmp(pass,buf)=0)
21、closegraph( ) ; return 0 ; /* 返回值為0,即密碼正確*/ else if(n>1) drawmat(cuo12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S , 12 , 252 , 264 , BLACK ); drawmat(plaint , 12 , 266 , 264 , BLACK ); drawmat(qing12S , 12 , 280 , 264 , BLACK ); drawmat(zhong12S , 12 , 294 , 264 , BLACK ); drawmat(shu12S1 , 12 ,
22、308 , 264 , BLACK ); drawmat(ru12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); bar(222,264,417,275); /* 清除提示行 */ for( j = 0 ; j < 20 ; j+ ) passj='0' starj='0' /*將輸入的錯(cuò)誤密碼清空*/ bar(250,192,399,203); n=n-1; drawmat(ni12S , 12 , 238 , 264 , BLACK );
23、 drawmat(wu12S2 , 12 , 252 , 264 , BLACK ); drawmat(quan12S, 12 , 266 , 264 , BLACK ); drawmat(jin12S , 12 , 280 , 264 , BLACK ); drawmat(ru12S , 12 , 294 , 264 , BLACK ); drawmat(xi12S , 12 , 308 , 264 , BLACK ); drawmat(tong12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK );
24、 getch(); closegraph(); exit(1);3.3 Huffman樹(shù)建立模塊設(shè)計(jì)動(dòng)畫(huà)結(jié)束后,輸入按鍵,進(jìn)入下一界面;根據(jù)提示,輸入數(shù)據(jù),即可實(shí)現(xiàn)動(dòng)態(tài)演示創(chuàng)建赫夫曼樹(shù)的過(guò)程,實(shí)現(xiàn)赫夫曼編碼。如圖3-3所示:i+inti,n,m;i=1i<=ni+i=1i<=ngetchar();fclose(fp);i<=mi+FOR Multihti.weight=hti.parent=hti.lchild=hti.rchild=0; 圖3-3 Huffman樹(shù)建立函數(shù)程序流程圖第4章 調(diào)試分析與測(cè)試結(jié)果4.1 調(diào)試分析調(diào)試與測(cè)試軟件的目標(biāo)就是發(fā)現(xiàn)并改正潛伏的錯(cuò)誤。一個(gè)程
25、序,必須經(jīng)過(guò)認(rèn)真的調(diào)試和測(cè)試,才能盡量減少錯(cuò)誤、保證程序滿(mǎn)足功能、性能需求,達(dá)到最初的設(shè)計(jì)、使用要求,從而保證程序的開(kāi)發(fā)質(zhì)量。1、顯示界面不美觀,用戶(hù)不能清楚的知道顯示的各項(xiàng)內(nèi)容(如圖4-1-1)。經(jīng)過(guò)修改,添加了顯示結(jié)束的提示信息,使用戶(hù)可以簡(jiǎn)單的使用此系統(tǒng)。圖 4-1-12、動(dòng)態(tài)分步運(yùn)行赫夫曼書(shū)功能沒(méi)能實(shí)現(xiàn)(如圖4-1-2),經(jīng)過(guò)查找資料,修改代碼,實(shí)現(xiàn)了此功能。圖 4-1-24.2 測(cè)試結(jié)果1、實(shí)現(xiàn)了顯示界面的美觀性,增強(qiáng)程序的可讀性(如圖4-2-1、4-2-2、4-2-3)。圖4-2-1圖4-2-2圖4-2-32、實(shí)現(xiàn)動(dòng)態(tài)分步運(yùn)行赫夫曼樹(shù)功能(如圖4-2-4)。圖4-2-4第5章 總
26、結(jié)由于剛開(kāi)始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí)對(duì)一些算法理解的還不透徹,還不能應(yīng)用自如,很難編出我們需要的正確程序,而且不能將各種不同的程序相互聯(lián)系在一起。編譯連接時(shí),時(shí)常出現(xiàn)重定義、圖形初始化失敗等問(wèn)題。但通過(guò)查閱指導(dǎo)書(shū)關(guān)于C庫(kù)函數(shù)的使用,同學(xué)間的交流,網(wǎng)上查詢(xún),以及所學(xué)的關(guān)于函數(shù)知識(shí)和編程,參照以上的資料,依依解決問(wèn)題,最終,在多次程序調(diào)試中,完成了此次課程設(shè)計(jì)。本程序基本達(dá)到了任務(wù)書(shū)上的要求,動(dòng)態(tài)實(shí)現(xiàn)了分步運(yùn)行赫夫曼樹(shù)及赫夫曼編碼: 本程序特點(diǎn):人性化設(shè)計(jì),用中文DOS運(yùn)行所有功能非常明確;界面美觀,;按鍵方便,要選擇的菜單只要按一個(gè)鍵就可以實(shí)現(xiàn);存儲(chǔ)方便,可以在任一時(shí)刻存儲(chǔ)數(shù)據(jù);安全性高,密碼加密,并有錯(cuò)
27、誤提示;操作簡(jiǎn)單,輸入時(shí)可以按Enter鍵跳入下個(gè)數(shù)據(jù)輸入口。本程序不足:當(dāng)然本程序也有很多不足之處,如:密碼錯(cuò)不可以用退格鍵刪除等。進(jìn)一步設(shè)想:實(shí)現(xiàn)鼠標(biāo)控制菜單,使操作更加簡(jiǎn)單;在觀看動(dòng)畫(huà)時(shí)可以按任意鍵退出;加入性別識(shí)別功能;加入管理員和普通員工管理不同界面。經(jīng)過(guò)半年學(xué)習(xí)在編程方面了很的大進(jìn)步,尤其在課程設(shè)計(jì)的時(shí)候更能鍛煉我們的綜合能力,在這次課程設(shè)計(jì)的時(shí)候也遇到了不少麻煩,同時(shí)也認(rèn)識(shí)到自己的能力還有待提高,但是這次在老師和同學(xué)們的熱情幫助下,比較圓滿(mǎn)的完成了任務(wù),以后要更加努力,不斷的吸取知識(shí),讓自己的編程能力不斷提高!兩周的課程設(shè)計(jì)很快過(guò)去了,通過(guò)教師的指導(dǎo)及查閱相關(guān)的資料,基本完成了課
28、程設(shè)計(jì)的題目,也達(dá)到了老師的要求。想要編寫(xiě)出好的程序,需要我們有扎實(shí)的基礎(chǔ),這樣遇到一些基本算法的時(shí)候可能就會(huì)游刃有余了。在編程時(shí)我們要有豐富的想象力,不要拘泥于固定的思維方式,遇到問(wèn)題要多想幾種解決問(wèn)題的方案,試試別人從沒(méi)想過(guò)的方法。豐富的想象力是建立在豐富的知識(shí)基礎(chǔ)上,所以我們要通過(guò)多個(gè)途徑來(lái)幫助自己建立較豐富豐富的知識(shí)結(jié)構(gòu)。 最后,要非常感謝指導(dǎo)課程設(shè)計(jì)的葛建梅老師,給予了我們很大的幫助,也讓我們學(xué)到了更多技巧和知識(shí)。老師多次詢(xún)問(wèn)編寫(xiě)進(jìn)程,并為我們指點(diǎn)迷津,幫助我們拓展思路。老師一絲不茍的工作作風(fēng),嚴(yán)謹(jǐn)求實(shí)的態(tài)度,踏踏實(shí)實(shí)的精神,不僅授我以文,而且教我做人,給予終生受益無(wú)窮之道。我還要感
29、謝我們開(kāi)發(fā)小組的其他同學(xué),在設(shè)計(jì)中他們給予我很大幫助。在這次的課程設(shè)計(jì)中,我們充分發(fā)揮了我們的團(tuán)隊(duì)精神。編程是一個(gè)集體的工作,所以我們需要有充分地交流,并且要虛心的聽(tīng)取意見(jiàn),只有這樣才能把我們的各自的思想最完整的表達(dá)出來(lái)并融合在一起。參考文獻(xiàn)1 嚴(yán)蔚敏,吳偉民 著 . 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版). 北京: 清華大學(xué)出版社 20102 鄭莉 , 董淵 , 張瑞豐 著 . C+語(yǔ)言程序設(shè)計(jì)(第三版). 北京: 清華大學(xué)出版社 20043 譚浩強(qiáng) 著. C程序設(shè)計(jì) (第三版) . 北京:清華大學(xué)出版社. 20054 曹哲, 趙津燕, 張玲玲 著.C語(yǔ)言實(shí)驗(yàn)與課程設(shè)計(jì)指導(dǎo) 20095 Google &
30、;& 百度 , 即來(lái)自互聯(lián)網(wǎng)6 譚浩強(qiáng)數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)題解與上機(jī)指導(dǎo). 北京:清華大學(xué)出版社2006.5附 錄#include<stdio.h>#include<alloc.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#include<math.h>#include <graphics.h>#define NULL 0#define SIZE 10char deng12S= /* µ
31、199; */0x7A,0x80,0x4A,0xA0,0x31,0x40,0x1F,0x80,0x20,0x40, 0xDF,0xA0,0x10,0x80,0x1F,0x80,0x10,0x80,0x09,0x00,0xFF,0xE0,0x00,0x00 ;char lu12S= /* ¼ */0x7F,0x80,0x00,0x80,0x3F,0x80,0x00,0x80,0xFF,0xE0, 0x24,0x40,0x16,0x80,0x0D,0x00,0x34,0x80,0xC4,0x60,0x1C,0x00,0x00,0x00 ;char he12S=/*º
32、Õ*/0x20,0x80,0xFB,0xE0,0x20,0x80,0x20,0x80,0xFB,0xE0,0x51, 0x40,0xDB,0x40,0xD5,0x60,0x55,0x40,0x51,0x40,0xB2,0xC0,0x00,0x00,;char fu12S=/*·ò*/0x04,0x00,0x04,0x80,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF, 0xE0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,;char man12S=/*Â&
33、#252;*/0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x7F,0xC0,0x52, 0x40,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x0E,0x00,0xF1,0xE0,0x00,0x00,;char shu12S=/* Ê÷ */0x20,0x40,0x2E,0x40,0xF3,0xE0,0x22,0x40,0x2A,0x40, 0x75,0x40,0xA4,0xC0,0xAA,0x40,0x30,0x40,0x20,0x40,0x21,0xC0,0x00,0x00,;char mao12S= /*
34、63;º */0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;char cuo12S= /* ´í */0x42,0x80,0x42,0x80,0x6F,0xE0,0x82,0x80,0xEF,0xE0, 0x40,0x00,0xF7,0xC0,0x44,0x40,0x57,0xC0,0x64,0x40,0x47,0xC0,0x00,0x00 ;char wu12S= /
35、* Îó */0x47,0xC0,0x24,0x40,0x24,0x40,0x07,0xC0,0xC0,0x00, 0x4F,0xE0,0x41,0x00,0x5F,0xE0,0x52,0x80,0x64,0x40,0x58,0x20,0x00,0x00 ;char plaint= /* £¡ */0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x78,0x00, 0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00 ;char qin
36、g12S= /* Çë */0x41,0x00,0x2F,0xE0,0x01,0x00,0x0F,0xE0,0xC1,0x00, 0x4F,0xE0,0x44,0x40,0x47,0xC0,0x54,0x40,0x67,0xC0,0x44,0x40,0x00,0x00 ;char zhong12S= /* ÖØ */0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80, 0x24,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00
37、;char shu12S1= /* Êä */0x41,0x00,0x42,0x80,0xF4,0x40,0x4B,0xA0,0xA0,0x00, 0xFE,0xA0,0x2A,0xA0,0x3E,0xA0,0xEA,0xA0,0x2E,0x20,0x2A,0x60,0x00,0x00 ;char ni12S= /* Äã */0x12,0x00,0x14,0x00,0x27,0xE0,0x68,0x20,0xB1,0x00, 0x25,0x40,0x25,0x40,0x29,0x20,0x31,0x20,0x21,0x00,0x27,0x00,0x00
38、,0x00 ;char wu12S2= /* ÎÞ */0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0, 0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC3,0xE0,0x00,0x00 ;char quan12S= /* Ȩ */0x20,0x00,0x27,0xC0,0xFC,0x40,0x24,0x40,0x24,0x40, 0x72,0x80,0x6A,0x80,0xA1,0x00,0xA2,0x80,0x24,0x40,0x38,0x
39、20,0x00,0x00 ;char jin12S= /* ½ø */0x44,0x80,0x24,0x80,0x1F,0xE0,0x04,0x80,0xC4,0x80, 0x5F,0xE0,0x44,0x80,0x44,0x80,0x48,0x80,0xB0,0x80,0x9F,0xE0,0x00,0x00 ;char xi12S= /* ϵ */0x03,0xC0,0x7C,0x00,0x08,0x80,0x3F,0x00,0x04,0x00, 0x08,0x80,0x3F,0xC0,0x15,0x00,0x24,0x80,0x44,0x40,0x
40、9C,0x20,0x00,0x00 ;char tong12S= /* ͳ */0x21,0x00,0x27,0xE0,0x51,0x00,0xF2,0x00,0x24,0x40, 0x47,0xE0,0xF2,0x80,0x02,0x80,0x32,0xA0,0xC4,0xA0,0x18,0xE0,0x00,0x00 ;char ru12S= /* Èë */0x18,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,0x00, 0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0
41、x40,0x80,0x20,0x00,0x00 ;char kou12S= /* ¿Ú */0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,0x00,0x00 ;char ling12S= /* Áî */0x04,0x00,0x0A,0x00,0x11,0x00,0x28,0x80,0xC4,0x60, 0x02,0x00,0x3F,0x80,0x01,0x00,0x1A,0x00
42、,0x04,0x00,0x02,0x00,0x00,0x00 ;void draw_image(int x,int y);void putpixel_demo(void); /*µãÕó×ÖÏÔʾº¯Êý*/void drawmat(char *mat,int matsize,int x,int y,int color) /*×ÖÄ£Ö¸Õë µã
43、3;ó´óС Æðʼ×ø±ê£¨x£¬y) ÑÕÉ«*/ int i,j,k,n; n=(matsize-1)/8+1;/*Óм¸¸ö×Ö·ûλ*/ for(j=0;j<matsize;j+)/*ÐÐ*/ for(i=0;i<n;
44、i+) for(k=0;k<8;k+) if(matj*n+i&0x80>>k) putpixel(x+i*8+k,y+j,color);/* µÇ¼º¯Êý */int denglu() int n ; char ch; FILE *fp; char pass20="",buf20="",star20="" int i,j,gdriver=DETECT,gmode; /* µÚÒ»
45、80;ÎÔËÐÐʱ£¬ÈçÏÂÈýÐÐÓÃÓÚÉèÖÿÚÁî×Ö,Ö®ºó¿É½«Æäɾ³ý */ fp=fopen("pass1&q
46、uot;,"wb"); fwrite("1234",8,1,fp); fclose(fp); fp=fopen("pass1","rb"); /* ½«¿ÚÁî×Ö¶ÁÈëbuf×Ö·ûÊý×éÖÐ */ fread(buf,8,1,fp); fclose(fp); textbackground(7
47、); textcolor(0); initgraph(&gdriver,&gmode,""); cleardevice(); setcolor(1); /* »³ö±êÌâÀ¸ */ setfillstyle(SOLID_FILL,4); bar3d(219,139,419,159,1,0); floodfill(319,140,1); drawmat(deng12S , 12 , 284 , 145 , WHITE ); drawmat(lu12S , 1
48、2 , 298 , 145 , WHITE ); drawmat(he12S , 12 , 312 , 145 , WHITE ); drawmat(fu12S , 12 , 326 , 145 , WHITE ); drawmat(man12S , 12 , 340 , 145 , WHITE ); drawmat(shu12S , 12 , 354 , 145 , WHITE ); setcolor(7); /* »¶Ô»°¿òµÄ¿òÌå */ s
49、etfillstyle(SOLID_FILL,7); bar3d(219,160,419,279,0,0); floodfill(319,239,7); setlinestyle(0,0,3); /* ÒÔÏÂÔÚ¶Ô»°¿òÖлÏßÒÔ±ãÔöÇ¿Á¢Ìå¸Ð */ set
50、color(EGA_WHITE); line(219,139,219,279); line(219,139,419,139); line(221,160,418,160); setlinestyle(0,0,1); line(419,138,419,279); line(219,279,419,279); setcolor(EGA_DARKGRAY); line(221,160,418,160); line(219,139,219,278); line(219,139,418,139); drawmat(kou12S , 12 , 230 , 170 , BLACK ); /* Ê&
51、#228;³ö¡°¿ÚÁ¡± */ drawmat(ling12S , 12 , 250 , 170 , BLACK ); drawmat(mao12S , 12 , 270 , 170 , BLACK ); setlinestyle(0,0,1); /* »³ö¿ÚÁîÊäÈë¿ò */ setcolor(EGA_WHITE);
52、 bar3d(229,185,400,205,0,0); setcolor(EGA_DARKGRAY); line(230,186,399,186); line(230,186,230,204); line(230,206,401,206); line(401,186,401,206); line(220,258,418,258); /* »³öÉî»ÒÉ«Ìáʾ¿ò·Ö¸ôÏ
53、23; */ setcolor(15); /* »³ö°×É«Ìáʾ¿ò·Ö¸ôÏß */ line(220,259,418,259); setcolor(0); n = 3 ; while(n) for(i=0;(ch=getch()!='r'i+) if(ch='b') if(i=0) i-; else i-;passi='0' stari=
54、'0' i-; bar(250,192,399,203); /*£¿£¿£¿*/ else passi=ch;stari='*' moveto(250,192); outtext(star); if(strcmp(pass,buf)=0) closegraph( ) ; return 0 ; /* ·µ»ØֵΪ0£¬¼´ÃÜÂëÕ&
55、#253;È·*/ else if(n>1) drawmat(cuo12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S , 12 , 252 , 264 , BLACK ); drawmat(plaint , 12 , 266 , 264 , BLACK ); drawmat(qing12S , 12 , 280 , 264 , BLACK ); drawmat(zhong12S , 12 , 294 , 264 , BLACK ); drawmat(shu12S1 , 12 , 308 , 264 , BLACK ); dra
56、wmat(ru12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); bar(222,264,417,275); /* Çå³ýÌáʾÐÐ */ for( j = 0 ; j < 20 ; j+ ) passj='0' starj='0' /*½«ÊäÈëµÄ
57、0;íÎóÃÜÂëÇå¿Õ*/ bar(250,192,399,203); n=n-1; drawmat(ni12S , 12 , 238 , 264 , BLACK ); drawmat(wu12S2 , 12 , 252 , 264 , BLACK ); drawmat(quan12S, 12 , 266 , 264 , BLACK ); drawmat(jin12S , 12 , 280 , 264 , BLACK ); drawmat(ru12S , 12 , 294 , 264 , BLACK ); drawmat(xi12S , 12 , 308 , 264 , BLACK ); drawmat(tong12S , 12 , 322 , 264 , BLACK ); drawmat(plaint , 12 , 336 , 264 , BLACK ); getch(); closegraph(); retur
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.3金屬的腐蝕與防護(hù)(同步課件)-第二輯:蘇教版2019選擇性必修1高二化學(xué)課件+練習(xí) 特供省重點(diǎn) 2021-2022學(xué)年高中化學(xué)蘇教版(2019)選擇性必修一課件+練習(xí)
- 廣東輕工職業(yè)技術(shù)學(xué)院《中醫(yī)臨證施護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東培正學(xué)院《Java海量數(shù)據(jù)分布式開(kāi)發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東農(nóng)工商職業(yè)技術(shù)學(xué)院《嵌入式系統(tǒng)與開(kāi)發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 一年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)匯編
- 【原創(chuàng)】江蘇省宿遷市2013-2020學(xué)年高一語(yǔ)文(蘇教版)第二學(xué)期期中綜合試題
- 廣播電視概論(河海大學(xué))學(xué)習(xí)通測(cè)試及答案
- 銷(xiāo)售員個(gè)人總結(jié)
- 《創(chuàng)新大課堂》2021高考生物(人教版)大一輪總復(fù)習(xí)課時(shí)作業(yè)-第九單元-生物與環(huán)境-群落的結(jié)構(gòu)和演替
- 《睪丸炎的護(hù)理》課件
- 村廟修建合同
- (完整word版)咨詢(xún)服務(wù)合同范本
- 城市軌道交通的智能監(jiān)控與預(yù)警系統(tǒng)
- 《生物制品技術(shù)》課程標(biāo)準(zhǔn)
- 《人工智能課件-基礎(chǔ)入門(mén)》
- 骨科手術(shù)的術(shù)中應(yīng)急處理與糾正
- 漁業(yè)安全與事故預(yù)防
- 山東省濟(jì)南市2022年中考英語(yǔ)情景運(yùn)用練習(xí)
- GB/T 16462.1-2023數(shù)控車(chē)床和車(chē)削中心檢驗(yàn)條件第1部分:臥式機(jī)床幾何精度檢驗(yàn)
- 截止閥使用說(shuō)明書(shū)
- 廣東省深圳市南山區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含解析)
評(píng)論
0/150
提交評(píng)論