第一篇:華中科技大學(xué)軟件學(xué)院文件
華中科技大學(xué)軟件學(xué)院文件院教 [2005] 06號(hào)
關(guān)于印發(fā)《華中科技大學(xué)軟件學(xué)院在職軟件工程碩士
學(xué)位論文撰寫及答辯工作流程》的通知
根據(jù)學(xué)校的有關(guān)文件和院教字〔2005〕05號(hào)《軟件工程碩士學(xué)位論文答辯工作管理辦法(試行)》文件精神,學(xué)院在全面總結(jié)2005年下半年軟件工程碩士學(xué)位論文答辯工作的基礎(chǔ)上,制訂了《華中科技大學(xué)軟件學(xué)院在職軟件工程碩士學(xué)位論文撰寫及答辯工作流程》。
各教學(xué)點(diǎn)應(yīng)印發(fā)給全體學(xué)生,并認(rèn)真組織他們學(xué)習(xí),嚴(yán)格按有關(guān)規(guī)范做好學(xué)位論文撰寫及答辯的相關(guān)工作。各位導(dǎo)師應(yīng)配合學(xué)院、教學(xué)點(diǎn)把學(xué)校、學(xué)院的有關(guān)政策向?qū)W生講清楚,確保學(xué)位論文的質(zhì)量。
附:華中科技大學(xué)軟件學(xué)院在職軟件工程碩士學(xué)位論文撰寫及答辯工作流程
華中科技大學(xué)軟件學(xué)院2005.11.16
主題詞:印發(fā)學(xué)位論文撰寫及答辯流程通知
抄報(bào):研究生院
華中科技大學(xué)軟件學(xué)院 2005年11月16日印發(fā)
-1-
附:
華中科技大學(xué)軟件學(xué)院
在職軟件工程碩士學(xué)位論文撰寫及答辯工作流程
第一階段:確定導(dǎo)師和開題
1、課程學(xué)習(xí)結(jié)束時(shí),教學(xué)點(diǎn)按學(xué)院安排的導(dǎo)師名額,負(fù)責(zé)本教學(xué)點(diǎn)學(xué)生的導(dǎo)師填報(bào),并要求每個(gè)學(xué)生提供自己的聯(lián)系電話和E-mail(必備),由教學(xué)點(diǎn)匯總后報(bào)學(xué)院,學(xué)院確認(rèn)后再提供導(dǎo)師的E-mail和聯(lián)系方式;
2、學(xué)生與導(dǎo)師聯(lián)系開題事宜,2個(gè)月內(nèi)應(yīng)完成開題報(bào)告,導(dǎo)師審定;
3、學(xué)生將經(jīng)導(dǎo)師確認(rèn)同意開題的選題報(bào)告送(或郵寄)至軟件學(xué)院教務(wù)辦公室馬老師、鄒老師收(郵編430074,教務(wù)辦公室一般星期四下午集中送導(dǎo)師簽字)。
第二階段:撰寫學(xué)位論文
4、學(xué)生瀏覽華中科技大學(xué)研究生院主頁,下載碩士學(xué)位論文撰寫要求或從導(dǎo)師處獲取相關(guān)指導(dǎo)要求;
5、撰寫學(xué)位論文,時(shí)間一般不少于10個(gè)月,從論文初稿到最后定稿一般要與導(dǎo)師溝通并修改2至3次;
6、經(jīng)導(dǎo)師確認(rèn)同意學(xué)位論文答辯的學(xué)生,其本人必須向教務(wù)辦公室提交論文打印件(不裝訂)一份,學(xué)院聘請(qǐng)專家對(duì)其論文進(jìn)行盲審;初審合格者,即開始清理學(xué)費(fèi)、學(xué)分,符合上述答辯條件者,由教務(wù)辦公室通知本人、教學(xué)點(diǎn)和導(dǎo)師,方可組織答辯。
第三階段: 論文答辯準(zhǔn)備
7、學(xué)生辦理單位介紹信、教學(xué)點(diǎn)介紹信;
8、準(zhǔn)備本科畢業(yè)證書、學(xué)位證書原件及復(fù)印件一式四份;
9、準(zhǔn)備1寸彩色免冠正面藍(lán)底照片5張,2寸2張;
10、提交導(dǎo)師簽字的論文定稿清樣,領(lǐng)取學(xué)位論文答辯檔案袋,填表;領(lǐng)取檔案袋時(shí)間比答辯時(shí)間至少提前3天;
11、在教務(wù)辦公室繳納學(xué)位論文評(píng)審費(fèi);
12、至少打印5本學(xué)位論文,將其中3本論文和碩士學(xué)位論文評(píng)語一起送3位高級(jí)專業(yè)技術(shù)職稱專家評(píng)審,要求校外專家1人(具體評(píng)閱人與答辯秘書聯(lián)系);
13、在軟件學(xué)院教務(wù)辦公室進(jìn)行答辯資格審核、蓋章、打印成績(jī)單;
14、在研究生院學(xué)位辦進(jìn)行答辯資格審核,審核合格后到教務(wù)辦公室辦理登記手續(xù);到研究生院進(jìn)行資格審核的時(shí)間比答辯時(shí)間至少提前1天;
15、需準(zhǔn)備的其它文檔材料:
⑴ “學(xué)位論文對(duì)學(xué)科理論與技術(shù)等的貢獻(xiàn)”說明,400字左右,電子版和A4打印件各一份;
⑵個(gè)人對(duì)學(xué)位論文、技術(shù)水平、創(chuàng)新能力、理論知識(shí)、學(xué)習(xí)態(tài)度的自我評(píng)價(jià),400字左右,電子版和A4打印件各一份;
⑶學(xué)位論文綜述,500字左右,電子版和A4打印件各一份;
⑷學(xué)位論文答辯演講稿(15分鐘左右,PPT格式),電子版和A4打印件各一份;
上述材料導(dǎo)師審閱后,交答辯秘書。
第四階段:學(xué)位論文答辯
16、學(xué)位論文演講,15分鐘左右;
17、答辯委員提問,提問不少于3個(gè);
18、學(xué)生準(zhǔn)備1小時(shí)左右的時(shí)間,回答答辯委員的提問,并于會(huì)后立即整理答辯記錄;
答辯委員會(huì)至少由5名高級(jí)專業(yè)技術(shù)職稱專家(其中校外專家1人)組成。全體委員2/3及以上同意,為通過。
第五階段:提交答辯材料
19、應(yīng)提交材料包括:
⑴碩士學(xué)位論文定稿表1份;
⑵學(xué)位申請(qǐng)及評(píng)定書2本;
⑶碩士學(xué)位論文評(píng)語3份;
⑷申請(qǐng)工程碩士學(xué)位論文答辯審批表2份;
⑸碩士學(xué)位論文答辯評(píng)審意見5份(標(biāo)題部分);
⑹基本信息表1份;
⑺已發(fā)表或已被接收發(fā)表的與學(xué)位論文內(nèi)容相關(guān)的學(xué)術(shù)論文或錄用證明;(不作必備條件);
⑻出版的專著或科研成果獲獎(jiǎng)的證明材料;(不作必備條件);
⑼修訂后的學(xué)位論文3本(含紅頭原文);
⑽將論文改寫成3000字左右的小論文,電子版和A4打印件各一份;
20、在軟件學(xué)院機(jī)房上網(wǎng)錄入“授予工程碩士學(xué)位人員基本信息表”。
第六階段:論文修訂和學(xué)位授予
21、軟件學(xué)院主持召開軟件工程專業(yè)學(xué)位分委會(huì),對(duì)答辯材料和論文進(jìn)行審核;對(duì)提出問題的論文,通知導(dǎo)師和學(xué)生修訂;
22、學(xué)校研究生顧問組對(duì)論文進(jìn)行審核;對(duì)提出問題的論文,通知導(dǎo)師和學(xué)生修訂;
23、學(xué)校學(xué)位委員會(huì)對(duì)答辯材料和論文進(jìn)行終審,合格者,授予碩士學(xué)位。不合格的,一年后方可重新申請(qǐng)答辯;
24、有條件的教學(xué)點(diǎn)或班級(jí),可集中組織到華中科技大學(xué)領(lǐng)取學(xué)位證書,穿碩士服、戴碩士帽留影。
第二篇:華中科技大學(xué)軟件學(xué)院2003級(jí)本科
華中科技大學(xué)軟件學(xué)院2003級(jí)本科
2005~ 2006學(xué)第二學(xué)期課程表
備注:
1、信號(hào)與系統(tǒng)、微機(jī)接口技術(shù)實(shí)驗(yàn)另行通知。
2、從7月8日起進(jìn)行為期三周的專業(yè)實(shí)訓(xùn)。
1華中科技大學(xué)軟件學(xué)院2003級(jí)本科
2005 ~ 2006學(xué)第二學(xué)期課程表
備注:
1、信號(hào)與系統(tǒng)、微機(jī)接口技術(shù)實(shí)驗(yàn)另行通知。
2、從7月8日起進(jìn)行為期三周的專業(yè)實(shí)訓(xùn)。
26-2
2005~ 2006學(xué)第二學(xué)期課程表
26-3
2005~ 2006學(xué)第二學(xué)期課程表
26-4
26-5
26-6
第三篇:華中科技大學(xué)軟件學(xué)院研究生招生信息
華中科技大學(xué)軟件學(xué)院研究生招生信息
一、學(xué)院概況和優(yōu)勢(shì)
華中科技大學(xué)軟件學(xué)院是經(jīng)教育部批準(zhǔn)(教高[2001]6號(hào)文)的首批35所國(guó)家示范性軟件學(xué)院之一。華中科技大學(xué)軟件學(xué)院堅(jiān)持以需求為目標(biāo),面向產(chǎn)業(yè)、面向領(lǐng)域;堅(jiān)持國(guó)際合作、校企辦學(xué);堅(jiān)持質(zhì)量第一,素質(zhì)與技術(shù)并重、基礎(chǔ)與實(shí)踐統(tǒng)一,重基礎(chǔ)、強(qiáng)能力的工程化辦學(xué)理念;堅(jiān)持辦學(xué)模式、管理體制、課程體系、教學(xué)內(nèi)容和教學(xué)方法的改革和創(chuàng)新,做到人才培養(yǎng)與社會(huì)需求的無縫接軌,使其成為培養(yǎng)高層次、復(fù)合型、國(guó)際化、工程型軟件精英人才基地。
學(xué)院建立了5個(gè)聯(lián)合實(shí)驗(yàn)室,即日本三菱控制軟件聯(lián)合實(shí)驗(yàn)室、新加坡橫河-藍(lán)籌聯(lián)合實(shí)驗(yàn)室、SIEMENS移動(dòng)實(shí)時(shí)計(jì)算聯(lián)合實(shí)驗(yàn)室、INTEL嵌入式系統(tǒng)聯(lián)合實(shí)驗(yàn)室、微軟創(chuàng)新與實(shí)訓(xùn)基地等。
學(xué)院實(shí)驗(yàn)辦公大樓總面積約4000余平方米,主要用于學(xué)院辦公、開放實(shí)驗(yàn)室、專業(yè)實(shí)驗(yàn)室、聯(lián)合實(shí)驗(yàn)室等。學(xué)院現(xiàn)有各類設(shè)備1472臺(tái)套,其中,臺(tái)式計(jì)算機(jī)1147臺(tái)、網(wǎng)絡(luò)及其他教學(xué)設(shè)備306件,具有良好的教學(xué)和研發(fā)環(huán)境。
學(xué)院現(xiàn)有在編專職教師23人,具有博士學(xué)位的教師比例達(dá)到了90%,一半以上的教師具有多年從事軟件工程工作的經(jīng)驗(yàn);聘請(qǐng)國(guó)外教師28人,其中聘期一年以上的教師9人,他們主要是專業(yè)課程和語言外教;聘請(qǐng)IT公司的兼職教師30人,他們都具有大型軟件項(xiàng)目開發(fā)和項(xiàng)目管理的實(shí)際經(jīng)驗(yàn)。
學(xué)院在校本科生900余人,全日制研究生450余人,在職研究生1000余人,并已為國(guó)家輸送畢業(yè)研究生、本科生4000余人。
學(xué)校碩士研究生班,實(shí)行三自主政策,即:自主命題,自主劃線,自主錄取,通過率達(dá)99%!北京報(bào)名,周末上課,非常便捷!
軟件學(xué)院辦學(xué)九年來成績(jī)顯著,主要體現(xiàn)在:辦學(xué)模式和教學(xué)方式的改革特色鮮明;教師資源全球化;學(xué)生出口國(guó)際化,并普遍受到工程實(shí)踐單位和就業(yè)用人單位的好評(píng)。軟件學(xué)院的學(xué)生現(xiàn)已成為我國(guó)IT行業(yè)特別是軟件行業(yè)的一支生力軍,并在社會(huì)上已得到廣泛認(rèn)同和高度評(píng)價(jià)。
二、培養(yǎng)目標(biāo)
軟件工程領(lǐng)域工程碩士的培養(yǎng)目標(biāo)是面向國(guó)民經(jīng)濟(jì)信息化建設(shè)和發(fā)展的需要,面向企事業(yè)單位對(duì)軟件工程技術(shù)人才的需求,培養(yǎng)高層次、復(fù)合型、國(guó)際化、工程型軟件工程技術(shù)和軟件工程管理人才。要求達(dá)到以下培養(yǎng)目標(biāo):
1.政治素質(zhì)
熱愛祖國(guó),遵紀(jì)守法,具有良好職業(yè)道德和創(chuàng)業(yè)精神等。
2.業(yè)務(wù)技能
具有扎實(shí)的理論基礎(chǔ)、寬廣的專業(yè)知識(shí)、很強(qiáng)的動(dòng)手能力;具備運(yùn)用先進(jìn)的方法、技術(shù)和工具從事軟件設(shè)計(jì)、開發(fā)、維護(hù)工作能力;具有工程項(xiàng)目的組織與管理能力,以及團(tuán)隊(duì)協(xié)作和市場(chǎng)開拓的能力。
3.外語水平
具備良好閱讀、理解、撰寫外文資料和進(jìn)行國(guó)際交流的能力。
三、培養(yǎng)方向
軟件工程碩士具有較寬的培養(yǎng)方向,主要有以下五個(gè)方向:
1.電子金融
2電子政務(wù)
3教育管理信息化
4電子音樂電子通信
培養(yǎng)方向主要根據(jù)人才市場(chǎng)和工程實(shí)踐基地需求以及導(dǎo)師科研情況動(dòng)態(tài)設(shè)置;學(xué)生可根據(jù)自身的專業(yè)背景、個(gè)人興趣愛好,在導(dǎo)師指導(dǎo)下,側(cè)重某一方向或多方向選修課程和進(jìn)行研發(fā)工作。
四、培養(yǎng)特色與學(xué)習(xí)年限
1,軟件工程領(lǐng)域工程碩士采用系統(tǒng)的課程學(xué)習(xí)和工程實(shí)踐相結(jié)合的培養(yǎng)方式。課程
學(xué)習(xí)實(shí)行學(xué)分制;軟件工程實(shí)踐要求學(xué)生直接參與軟件企業(yè)或軟件工程項(xiàng)目的實(shí)際開發(fā)過程,完成必要的技術(shù)方案設(shè)計(jì)、軟件開發(fā)、項(xiàng)目管理等工作,并在所取得的工程實(shí)踐成果的基礎(chǔ)上完成碩士學(xué)位論文的工作。
學(xué)院將聘請(qǐng)具有豐富實(shí)踐和教學(xué)指導(dǎo)經(jīng)驗(yàn)的企業(yè)資深技術(shù)或管理人員參與課程教學(xué),并對(duì)學(xué)生的軟件工程實(shí)踐進(jìn)行聯(lián)合指導(dǎo)。加強(qiáng)雙語教學(xué)的力度,包括直接采用英文原版教材,培養(yǎng)學(xué)生國(guó)際競(jìng)爭(zhēng)的能力。
學(xué)制與學(xué)分:學(xué)制2-2.5年,采用學(xué)分制,第一年學(xué)習(xí)培養(yǎng)計(jì)劃規(guī)定的課程,第二年參加工程實(shí)踐并完成學(xué)位論文。學(xué)位論文答辯通過者經(jīng)校學(xué)位委員會(huì)批準(zhǔn),可授予軟件工程碩士學(xué)位。
培養(yǎng)方式:非全日制學(xué)習(xí):課程學(xué)習(xí)和工程實(shí)踐主要利用業(yè)余時(shí)間完成。課程學(xué)習(xí)原則上采取周末,晚上授課方式。工程實(shí)踐要求在工作崗位上結(jié)合工作實(shí)際來進(jìn)行,并在此基礎(chǔ)上完成學(xué)位論文。
五 秋季班現(xiàn)已開始報(bào)名,招生電話:*** 劉老師。
第四篇:歡迎報(bào)考華中科技大學(xué)軟件學(xué)院軟件工程碩士
歡迎報(bào)考華中科技大學(xué)軟件學(xué)院軟件工程碩士
武漢·中國(guó)光谷,中國(guó)第三大智力密集區(qū),國(guó)家自主創(chuàng)新示范區(qū)。光谷軟件園、光谷金融港、光谷生物城、武漢未來科技城四大科技產(chǎn)業(yè)園區(qū)建設(shè)方興未艾。
光谷軟件園將建成全國(guó)面積最大的軟件研發(fā)和服務(wù)外包產(chǎn)業(yè)基地,是科技部認(rèn)定的“國(guó)家火炬計(jì)劃軟件產(chǎn)業(yè)基地”和商務(wù)部認(rèn)定的“中國(guó)服務(wù)外包基地”,150余家企業(yè)將共建ITO和BPO行業(yè)標(biāo)桿。
光谷金融港將建設(shè)成為全國(guó)性金融后臺(tái)中心、國(guó)際化金融創(chuàng)新服務(wù)園區(qū)。
光谷生物城是發(fā)改委批準(zhǔn)的“國(guó)家生物產(chǎn)業(yè)基地”,朝著全球“生物谷”目標(biāo)邁進(jìn)。武漢未來科技城是中組部批準(zhǔn)的“精英云集,共筑夢(mèng)想”的人才之城。“千人計(jì)劃”、“百人計(jì)劃”、“黃鶴英才計(jì)劃”及“3551人才計(jì)劃”,將加快人才之城聚集具有全球戰(zhàn)略眼光的企業(yè)家和世界一流的科研人員。
光谷肩負(fù)著引領(lǐng)科技創(chuàng)新、中部崛起的重大歷史使命。四大科技產(chǎn)業(yè)園區(qū)建設(shè)和發(fā)展急需大批優(yōu)秀人才,數(shù)百家國(guó)內(nèi)外一流企業(yè)對(duì)中高端人才求賢若渴。
武漢市中高端軟件實(shí)用人才服務(wù)基地得到了開發(fā)區(qū)政府、軟件行業(yè)協(xié)會(huì)的大力支持,是華中科技大學(xué)軟件學(xué)院工程實(shí)訓(xùn)中心,軟件工程碩士研究生教學(xué)點(diǎn),承擔(dān)著為光谷四大科技產(chǎn)業(yè)園區(qū)挑選、培養(yǎng)、儲(chǔ)備、輸送中高端IT優(yōu)秀人才,為武漢的經(jīng)濟(jì)建設(shè)和發(fā)展服務(wù)的任務(wù)。2012年9月擬面向全國(guó)高校應(yīng)屆畢業(yè)生招收150名軟件工程碩士研究生,即日起開始報(bào)名和選拔,報(bào)名和選拔不收取任何費(fèi)用。
一、報(bào)名
報(bào)名條件:普通高校信息學(xué)科相關(guān)專業(yè),包括計(jì)算機(jī)、軟件、通訊、電子、電信、信息管理、信息安全、電子商務(wù)等專業(yè)大四學(xué)生;或?qū)浖_發(fā)有濃厚興趣,且具備一定特長(zhǎng)的其他專業(yè)大四學(xué)生;英語通過CET四級(jí)考試;身體、身心健康。
報(bào)名時(shí)間:2011年11月1日至12月8日
二、選拔
1、基礎(chǔ)及開發(fā)能力測(cè)試
2011年12月10日10:00,安排基地參觀、與華中科技大學(xué)軟件工程碩士研究生交流、實(shí)習(xí)及就業(yè)方案介紹、軟件工程碩士研究生培養(yǎng)方案介紹;11:30,中餐(設(shè)定專區(qū),定向供應(yīng),費(fèi)用學(xué)生自理);13:00,在線評(píng)測(cè)(英語、數(shù)學(xué)、微機(jī)原理)和機(jī)試(C、C++、JAVA任選)。
基礎(chǔ)及開發(fā)能力測(cè)試結(jié)果作用:
⑴作為2012年6月報(bào)考軟件工程碩士研究生的參考條件之一,成績(jī)優(yōu)秀者同等條件下優(yōu)先推薦報(bào)考、優(yōu)先錄取。
⑵創(chuàng)新基金扶持IT自主創(chuàng)業(yè)的重要參考依據(jù),其中個(gè)人2000-5000元,團(tuán)隊(duì)5000-10000元。
⑶測(cè)試成績(jī)排前5%的學(xué)生,可獲得實(shí)訓(xùn)獎(jiǎng)學(xué)金2000元。
2、研究生入學(xué)考試
校考:2012年6月參加華中科技大學(xué)統(tǒng)一組織的軟件工程碩士研究生入學(xué)考試,可取得單證碩士研究生(碩士學(xué)位)資格。考前將安排考生補(bǔ)習(xí),補(bǔ)習(xí)班為期15天,學(xué)費(fèi)500元,住宿費(fèi)100元(4人標(biāo)準(zhǔn)間,獨(dú)立衛(wèi)生間)。
國(guó)考:成績(jī)優(yōu)異的單證學(xué)生可報(bào)名參加2013年1月全國(guó)統(tǒng)一組織碩士研究生入學(xué)考試,取得雙證碩士研究生(碩士學(xué)歷、碩士學(xué)位)資格。
三、培養(yǎng)
嚴(yán)格執(zhí)行華中科技大學(xué)軟件學(xué)院軟件工程碩士研究生培養(yǎng)方案,第一年,基地授課;第二年,到光谷四大科技產(chǎn)業(yè)園區(qū)工程實(shí)踐(實(shí)習(xí))。
單、雙證碩士研究生執(zhí)行同一培養(yǎng)方案。2012年9月初入學(xué),全日制學(xué)習(xí)。
四、實(shí)習(xí)
2013年6月,邀請(qǐng)光谷四大科技產(chǎn)業(yè)園區(qū)一流企業(yè)進(jìn)校招聘,雙向選擇,簽訂實(shí)習(xí)合同,帶薪實(shí)習(xí)。學(xué)生實(shí)習(xí)期為1-1.5年。
武漢市中高端軟件實(shí)用人才服務(wù)基地和光谷四大科技產(chǎn)業(yè)園區(qū)IT企業(yè)簽訂了大量的實(shí)習(xí)合同,能滿足所有學(xué)生的實(shí)習(xí)要求。
五、就業(yè)
2013年11月-2014年6月,學(xué)生和實(shí)習(xí)單位簽訂就業(yè)協(xié)議。
2014年6月,組織多場(chǎng)校園招聘會(huì),推薦學(xué)生到光谷四大科技產(chǎn)業(yè)園區(qū)就業(yè)。
其他優(yōu)勢(shì)項(xiàng)目推介:
1、歡迎普通高校信息學(xué)科相關(guān)專業(yè)大三本科學(xué)生報(bào)名參加2012年暑期實(shí)訓(xùn)項(xiàng)目,該實(shí)訓(xùn)項(xiàng)目和華中科技大學(xué)軟件學(xué)院200余名本科生同步進(jìn)行,執(zhí)行統(tǒng)一實(shí)訓(xùn)方案,現(xiàn)征集300名學(xué)生。實(shí)訓(xùn)從2012年7月初開始,9月底結(jié)束,2012年10月全部推薦到光谷實(shí)習(xí)、就業(yè)。(網(wǎng)上報(bào)名)
2、歡迎普通高校信息學(xué)科相關(guān)專業(yè)大四本科學(xué)生報(bào)名參加2012年春季實(shí)訓(xùn)項(xiàng)目,實(shí)訓(xùn)從2012年2月中旬開始,5月中旬結(jié)束,2012年6月全部推薦到光谷實(shí)習(xí)、就業(yè)。(網(wǎng)上報(bào)名)
詳細(xì)地址:華中科技大學(xué)文華學(xué)院實(shí)訓(xùn)大樓六樓。乘車線路:魯巷、關(guān)山口乘738、786至文華路站,進(jìn)入華中科技大學(xué)文華學(xué)院校內(nèi),按“武漢市中高端軟件實(shí)用人才服務(wù)基地”(即華中科技大學(xué)軟件學(xué)院工程實(shí)訓(xùn)中心)路標(biāo)指引,上實(shí)訓(xùn)大樓六樓。
乘車路線地圖:http://j.map.baidu.com/_HyEJ 報(bào)名網(wǎng)址:http://
附:報(bào)考華中科技大學(xué)軟件工程碩士考生測(cè)試申請(qǐng)表
華中科技大學(xué)軟件學(xué)院工程實(shí)訓(xùn)中心 武漢市中高端軟件實(shí)用人才服務(wù)基地
二0一一年十月二十五日
報(bào)考華中科技大學(xué)軟件工程碩士考生測(cè)試申請(qǐng)表
第五篇:華中科技大學(xué)軟件課程設(shè)計(jì)報(bào)告
軟件課程設(shè)計(jì)報(bào)告
班 級(jí):姓 名:學(xué) 號(hào):
光 信0 8 0 4 廖 娟
U 2 0 0 8 1 3 1 9 7 光信0804廖娟
U200813197
目 錄 軟件設(shè)計(jì)............................................4
1.1 設(shè)計(jì)題目及目的.................................4 1.2 設(shè)計(jì)思想.......................................4 1.3 背景知識(shí).......................................4(1).定義:.....................................4(2).存儲(chǔ)結(jié)構(gòu):.................................5(3).遍歷二叉樹:...............................6 1.4 程序結(jié)構(gòu)及功能劃分.............................7(1).廖娟#注釋.cpp..............................7(2).廖娟#軟件課程設(shè)計(jì).cpp......................8 1.5 程序流程......................................10 2 軟件測(cè)試...........................................14
2.1 測(cè)試環(huán)境......................................14 2.2 廖娟#注釋.cpp 的測(cè)試過程.......................14 2.3 廖娟#軟件課程設(shè)計(jì).cpp 的測(cè)試過程...............15(1).程序運(yùn)行前的初始界面.......................15(2).輸入數(shù)據(jù)及二叉樹打印的畫面.................16(3).選擇操作的提示畫面.........................16(4).程序測(cè)試時(shí)的畫面..........................17 3 算法改進(jìn)...........................................19
3.1問題發(fā)現(xiàn)......................................19 軟件課程設(shè)計(jì)
2010年1月
(1).問題一:..................................20(2).問題二:.................................21 3.2解決方案......................................21(1).問題一改進(jìn)方案:.........................21(2).問題二改進(jìn)方案:.........................22 4 開發(fā)體會(huì)...........................................23 附錄:源代碼清單......................................25
廖娟#注釋.cpp.....................................25 廖娟#軟件課程設(shè)計(jì).cpp.............................29 參考文獻(xiàn).............................................35 光信0804廖娟
U200813197軟件設(shè)計(jì)
1.1 設(shè)計(jì)題目及目的
設(shè)計(jì)題目:二叉樹的查找--用鏈表結(jié)構(gòu)實(shí)現(xiàn)二叉樹建立、查詢、打印的源程序。
設(shè)計(jì)目的:基于C語言的基礎(chǔ),熟練運(yùn)用結(jié)構(gòu)體等擴(kuò)展數(shù)據(jù)手段,定義應(yīng)用數(shù)據(jù)、并進(jìn)行運(yùn)用。本題要求掌握數(shù)據(jù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),并編程實(shí)踐它們的實(shí)現(xiàn)、應(yīng)用方法。
1.2 設(shè)計(jì)思想
利用結(jié)構(gòu)體,鏈表等數(shù)據(jù)結(jié)構(gòu),以及折半查找、選擇排序等基本算法,結(jié)合指針,文件等相關(guān)知識(shí),利用C語言編寫鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)二叉樹的建立、打印、查詢、先序遍歷、中序遍歷、后序遍歷等基本功能,并將這些功能用獨(dú)立的子函數(shù)實(shí)現(xiàn),通過主函數(shù)的調(diào)用實(shí)現(xiàn)相應(yīng)的功能。
1.3 背景知識(shí)
(1).定義:
二叉樹是由n(n>=0)個(gè)結(jié)點(diǎn)的有限集合構(gòu)成,此集合或者為空集,或者由一個(gè)根結(jié)點(diǎn)及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹。
這也是一個(gè)遞歸定義。二叉樹可以是空集合,二叉樹結(jié)點(diǎn)的子樹 軟件課程設(shè)計(jì)
2010年1月
要區(qū)分左子樹和右子樹,即使只有一棵子樹也要進(jìn)行區(qū)分,說明它是左子樹,還是右子樹。二叉樹的定義方法:
Struct tree { char info;struct tree *left, *right;
}(2).存儲(chǔ)結(jié)構(gòu):
存儲(chǔ)結(jié)構(gòu)分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
a.順序存儲(chǔ)結(jié)構(gòu):從樹根起,自上層至下層,每層自左至右的給所有結(jié)點(diǎn)編號(hào)缺點(diǎn)是有可能對(duì)存儲(chǔ)空間造成極大的浪費(fèi),在最壞的情況下,一個(gè)深度為H且只有H個(gè)結(jié)點(diǎn)的右單支樹確需要2h-1個(gè)結(jié)點(diǎn)存儲(chǔ)空間。而且,若經(jīng)常需要插入與刪除樹中結(jié)點(diǎn)時(shí),順序存儲(chǔ)方式不是很好!光信0804廖娟
U200813197
b.鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):
存儲(chǔ)二叉樹經(jīng)常用二叉鏈表法
(3).遍歷二叉樹:
假如以L、D、R分別表示遍歷左子樹、遍歷根結(jié)點(diǎn)和遍歷右子樹,遍歷整個(gè)二叉樹則有DLR、LDR、LRD、DRL、RDL、RLD六種遍歷方案。若規(guī)定先左后右,則只有前三種情況,分別規(guī)定為:
DLR——先(根)序遍歷,LDR——中(根)序遍歷,軟件課程設(shè)計(jì)
2010年1月
LRD——后(根)序遍歷。①.先序遍歷二叉樹的操作定義為: 若二叉樹為空,則空操作;否則 A.訪問根結(jié)點(diǎn); B.先序遍歷左子樹; C.先序遍歷右子樹。
②.中序遍歷二叉樹的操作定義為: 若二叉樹為空,則空操作;否則 A.中序遍歷左子樹; B.訪問根結(jié)點(diǎn); C.中序遍歷右子樹。
③.后序遍歷二叉樹的操作定義為: 若二叉樹為空,則空操作;否則 A.后序遍歷左子樹; B.后序遍歷右子樹; C.訪問根結(jié)點(diǎn)。
1.4 程序結(jié)構(gòu)及功能劃分
(1).廖娟#注釋.cpp
主要分為主函數(shù)、創(chuàng)建二叉樹子函數(shù)、二叉樹查詢子函數(shù)、二叉樹打印子函數(shù)四個(gè)部分。其基本功能分塊,如下圖所示: 光信0804廖娟
U200813197
(2).廖娟#軟件課程設(shè)計(jì).cpp 在 廖娟#注釋.cpp 的基礎(chǔ)上進(jìn)行了一些算法改進(jìn),進(jìn)行了簡(jiǎn)單的界面設(shè)計(jì),能夠?qū)崿F(xiàn)友好的交互,系統(tǒng)用戶進(jìn)入界面控制后,對(duì)不同的功能操作提示不同,此外加入了二叉排序樹的前序遍歷程序、中序遍歷程序和后序遍歷程序。
①.先序遍歷源代碼:
void PreorderTraversal(struct tree *root){ if(root==0)return;printf(“%c”,root->info);軟件課程設(shè)計(jì)
2010年1月
PreorderTraversal(root->left);PreorderTraversal(root->right);} ②.中序遍歷源代碼:
void InorderTraversal(struct tree *root){ if(!root)return;InorderTraversal(root->left);printf(“%c”,root->info);InorderTraversal(root->right);} ③.后序遍歷源代碼:
void PostorderTraversal(struct tree *root){ if(!root)return;PostorderTraversal(root->left);PostorderTraversal(root->right);printf(“%c”,root->info);} 光信0804廖娟
U200813197
1.5 程序流程
廖娟#注釋.cpp的主程序的流程圖如下: 軟件課程設(shè)計(jì)
2010年1月
創(chuàng)建二叉樹的流程圖如下: 光信0804廖娟
U200813197
二叉樹查詢的流程圖如下: 軟件課程設(shè)計(jì)
2010年1月
二叉樹打印的流程圖如下: 光信0804廖娟
U200813197軟件測(cè)試
2.1 測(cè)試環(huán)境
Microsoft Visual C++
2.2 廖娟#注釋.cpp 的測(cè)試過程
但是在測(cè)試的過程中也發(fā)現(xiàn)了一些問題,設(shè)計(jì)示例給出的源代碼中存在幾個(gè)問題在下圖所示操作中暴露出來了:軟件課程設(shè)計(jì)
2010年1月
具體的解決方案見算法改進(jìn)。
2.3 廖娟#軟件課程設(shè)計(jì).cpp 的測(cè)試過程
輸入50個(gè)數(shù)字(或字母),對(duì) 廖娟#軟件課程設(shè)計(jì).cpp 進(jìn)行測(cè)試。(1).程序運(yùn)行前的初始界面 光信0804廖娟
U200813197
(2).輸入數(shù)據(jù)及二叉樹打印的畫面
(3).選擇操作的提示畫面 軟件課程設(shè)計(jì)
2010年1月
(4).程序測(cè)試時(shí)的畫面
①.選擇1,進(jìn)行先序遍歷; ②.選擇2,進(jìn)行中序遍歷; ③.選擇3,進(jìn)行后序遍歷;
④.選擇4,進(jìn)行查詢結(jié)點(diǎn),再輸入要查詢的結(jié)點(diǎn)e,找到了,輸出:
Successful search!!key=e
繼續(xù)輸入w,同樣查詢成功; ⑤.輸入m,沒找到,輸出結(jié)果:
Search Failure!!光信0804廖娟
U200813197
⑥.再次選擇3,進(jìn)行后序遍歷,與③輸出相同;
再次選擇2,進(jìn)行中序遍歷,與②輸出相同; ⑦.再次選擇4,進(jìn)行查詢結(jié)點(diǎn),運(yùn)行結(jié)果正常; ⑧.再次選擇1,進(jìn)行先序遍歷,與①輸出相同; ⑨.選擇8,輸入錯(cuò)誤,沒有對(duì)應(yīng)的操作,輸出:
您 的 輸 入 有 誤,請(qǐng) 重 新 輸 入!!⑩.選擇5,進(jìn)行退出操作,輸出:
光 信 0 8 0 4 ———— 廖 娟0 1 0 年 1 月軟件課程設(shè)計(jì)
2010年1月算法改進(jìn)
3.1問題發(fā)現(xiàn)
在完成第4項(xiàng)選做項(xiàng)目時(shí),程序前面部分的創(chuàng)建、查詢、打印二叉樹的算法仍采用已給出的設(shè)計(jì)示例中的算法,但是在測(cè)試過程中發(fā)現(xiàn)存在問題。光信0804廖娟
U200813197
(1).問題一:
第一次先序遍歷的輸出結(jié)果為:edaf
第二次先序遍歷的輸出結(jié)果為:f 經(jīng)過觀察及調(diào)試發(fā)現(xiàn)問題在于查詢二叉樹子函數(shù),其中root是根結(jié)點(diǎn),運(yùn)行查詢后root就被移動(dòng)了,所以再次要求先序遍歷的結(jié)果就與第一次先序遍歷的結(jié)果不同。
未改動(dòng)前源代碼如下: 軟件課程設(shè)計(jì)
2010年1月
(2).問題二:
設(shè)計(jì)示例中給出的函數(shù)運(yùn)行后,沒有退出的方式,即沒有出口,程序無法正常退出。
3.2解決方案
(1).問題一改進(jìn)方案:
函數(shù)內(nèi)部定義一個(gè)指針tree *t,用 *t指向根結(jié)點(diǎn),這樣進(jìn)行查詢操作后根結(jié)點(diǎn)就不會(huì)移動(dòng)了。
改動(dòng)后源代碼如下: 光信0804廖娟
U200813197
(2).問題二改進(jìn)方案:
在switch語句中增加:
case 5:
printf(“
光 信 0 8 0 4 ———— 廖 娟nn”);printf(“ 0 1 0 年 1 月nn”);return;來實(shí)現(xiàn)退出程序的操作,具體解決方案見
廖娟#軟件課程設(shè)計(jì).cpp 的源代碼。軟件課程設(shè)計(jì)
2010年1月開發(fā)體會(huì)
剛剛拿到軟件課程設(shè)計(jì)的題目時(shí),我震驚了,二叉樹?這是什么東西,上學(xué)期學(xué)習(xí)C語言的時(shí)候好像沒學(xué)到二叉樹啊。聽了老師的介紹才知道做這個(gè)題目的軟件課程設(shè)計(jì)還要先學(xué)習(xí)一下數(shù)據(jù)結(jié)構(gòu)中關(guān)于二叉樹部分的知識(shí),當(dāng)時(shí)我真的是有些不知所措,本就不怎么好的C語言加上完全不會(huì)的數(shù)據(jù)結(jié)構(gòu)二叉樹使我開始懷疑:三個(gè)星期后我可以完成這份關(guān)于二叉樹的查找的軟件課程設(shè)計(jì)嗎?
最初的幾天也確實(shí)很沒有頭緒,只是想著想把老師給的資料都看了,看完了之后走一步算一步吧,可是看完了之后發(fā)現(xiàn)仍然沒有很大的收獲,連怎么二叉樹到底有什么用都不知道,對(duì)于這個(gè)題目依然是十分陌生。可是時(shí)間緊迫啊,于是找了位學(xué)習(xí)過數(shù)據(jù)結(jié)構(gòu)的同學(xué)借了本數(shù)據(jù)結(jié)構(gòu)的書,研究了一番,在加上在網(wǎng)上搜索了一番終于有些頭緒了,知道這份課設(shè)到底要我們做什么了!
接下來的幾天,隨著了解的加深,自己開始慢慢的做課設(shè)了,當(dāng)然從和同學(xué)的交流中,我也學(xué)到了很多。這之后我一步步的完成了對(duì)設(shè)計(jì)示例的注釋,對(duì)遞歸算法的理解,以及先序遍歷、中序遍歷、后序遍歷程序的書寫,最終完成了程序的開發(fā)。程序開發(fā)中我記憶最深刻的就是編寫選擇操作的提示界面和初始界面的時(shí)候,為了使界面更加友好,加入了一些人性化的語句,以及為了出現(xiàn)歡迎界面進(jìn)行的許多次試驗(yàn),慢慢的我覺得這個(gè)過程十分有趣,看著自己編排的界面出現(xiàn)在面前心中還是有些許成就感的。當(dāng)然除了這些還有很令我頭疼的 光信0804廖娟
U200813197
程序調(diào)試過程:在程序的調(diào)試階段,發(fā)現(xiàn)程序中有許多問題,有的根本不知道從哪入手解決問題,甚至不知道為什么會(huì)出現(xiàn)錯(cuò)誤,也因此耗費(fèi)了很多時(shí)間,讓我苦悶了很久。
在這段時(shí)間里,因?yàn)橛熊浖n程設(shè)計(jì),讓我學(xué)到了很多知識(shí),收獲了很多我,自我感覺自己解決問題的能力提高了,并且掌握了軟件開發(fā)的一些基本的方法和技巧。還記得寫課設(shè)報(bào)告的時(shí)候,花了一天的時(shí)間把報(bào)告里面的所有圖都畫完了,從剛開始的不會(huì)用畫圖軟件,到后來慢慢摸索最后熟練運(yùn)用,畫圖的速度是越來越快了,讓我后來甚是欣慰。
經(jīng)過了這一次的軟件課程設(shè)計(jì),我感受到了C語言的魅力,也深切的體會(huì)到了“學(xué)海無涯”這四個(gè)字的分量。在以后的日子里,我所需要學(xué)習(xí)的東西還有很多很多,應(yīng)了那句“書山有路勤為徑,學(xué)海無涯苦作舟。” 軟件課程設(shè)計(jì)
2010年1月
附錄:源代碼清單
廖娟#注釋.cpp #include
*/ #include
/* 定義二叉樹結(jié)構(gòu)
*/ struct tree
{
char info;
// 定義char型變量,存放數(shù)據(jù)
struct tree *left,*right;
// 左子樹指針,右子樹指針
};/* 定義結(jié)構(gòu)指針變量,作用創(chuàng)建二叉樹
*/ struct tree *create_btree(struct tree *root,struct tree *r,char info);/* 定義結(jié)構(gòu)指針變量,作用查詢數(shù)據(jù)
*/ struct tree *search_btree(struct tree *root,char key);/* 定義子函數(shù),作用打印二叉樹
*/ void print_btree(struct tree *r,int l);
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 主函數(shù)
*/ void main(){
char s[100],c,key=' ';
struct tree *root=0;
// 定義結(jié)構(gòu)指針根結(jié)點(diǎn),初始化為0
/* 讀入二叉樹的各個(gè)結(jié)點(diǎn)的值,并將其插入到二叉樹中
*/
do {
printf(“Enter a letter:”);
gets(s);
// 數(shù)據(jù)輸入過程
if(!root)
root=create_btree(root,root,*s);
// 如果二叉樹還未建立,則建立根結(jié)點(diǎn)并保存數(shù)據(jù)
else
create_btree(root,root,*s);// 如果二叉樹已建立,則建立新的子樹
}
while(*s);
// 直到s字符串為空,停止輸入
print_btree(root,0);光信0804廖娟
U200813197
/* 查找具有指定值的結(jié)點(diǎn)
*/ key='1';while(key){
printf(“Enter a key to find:”);
scanf(“%s”,&c);
root=search_btree(root,c);
printf(“press to continuen”);} }
/* Btree.C 結(jié)束
*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 創(chuàng)建二叉樹
*/ struct tree *create_btree(struct tree *root,struct tree *r,char info)/* struct tree *root:根結(jié)點(diǎn)
struct tree *r:要增加的結(jié)點(diǎn)
char info:要保存的數(shù)據(jù)
*/ {
if(r==0)
// 如果當(dāng)前位置無結(jié)點(diǎn),則將新結(jié)點(diǎn)插入此處
{
r=new(struct tree);
// same as function: malloc(sizeof())
if(r == 0)
{
printf(“Out of memoryn”);
return 0;
}
r->left= 0;
r->right=0;
r->info=info;
// root為空,則插入后保存至根結(jié)點(diǎn)處
if(root)
// 如果二叉樹存在,則將新建結(jié)點(diǎn)與二叉樹連接起來
{
if(info
root-> left=r;
else
root-> right=r;
// 按左結(jié)點(diǎn)<父結(jié)點(diǎn)<=右結(jié)點(diǎn),保存數(shù)據(jù)
}
else
// 如果根結(jié)點(diǎn)不存在,即二叉樹不存在,則將新建一個(gè)二叉樹
{
r->right=0;
r->left=0;軟件課程設(shè)計(jì)
2010年1月
}
return r;}
/* if = = 0 接下頁
*/
/* 判斷要插入的節(jié)點(diǎn)應(yīng)該在當(dāng)前節(jié)點(diǎn)的左子樹或右子樹,遞歸插入
*/ if(info < r->info)
create_btree(r,r->left,info);if(info>=r->info)
create_btree(r,r->right,info);}
/* create_btree(root,r,info)*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 查詢數(shù)據(jù)
*/ struct tree *search_btree(struct tree *root,char key)/* struct tree *root:要查詢的二叉樹首地址
char key:要查詢的數(shù)據(jù)
*/ {
if(!root)
// 如果二叉樹指針為空,輸出Empty btree {
printf(“Empty btreen”);
return root;
}
while(root->info!=key)
{
if(key
// 按照“左結(jié)點(diǎn)<父結(jié)點(diǎn)<=右結(jié)點(diǎn)”查找
root=root->left;
else
root=root->right;
if(root==0)
// 如果指針為空,則退出查找
{
printf(“Search Failuren”);
break;
} } /* while(root->info!=key)*/ if(root!=0)
// 如果二叉樹指針不為空,即查找成功給出信息,返回
printf(“Successful searchn key=%cn”,root->info);return root;} /* *search_btree(root,key)*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ 光信0804廖娟
U200813197
/* 打印二叉樹
*/ void print_btree(struct tree *r,int l)/* struct tree *r:二叉樹首地址
int l:當(dāng)前結(jié)點(diǎn)的高度,根結(jié)點(diǎn)為0
輸出的二叉樹為正常樹逆旋轉(zhuǎn)90°后成鏡像的結(jié)果
*/ {
int i;if(r == 0)
return;
//如果傳入指針為0,則返回
print_btree(r->left,l+1);
//打印左結(jié)點(diǎn)
for(i=0;i printf(“ ”); //打印空格,用來排版控制格式 printf(“%cn”,r->info); //打印根結(jié)點(diǎn) print_btree(r->right,l+1); //打印右結(jié)點(diǎn) } /* *print_btree(root,0) */ 軟件課程設(shè)計(jì) 2010年1月 廖娟#軟件課程設(shè)計(jì).cpp #include */ #include /* 定義二叉樹結(jié)構(gòu) */ struct tree { char info; // 定義char型變量,存放數(shù)據(jù) struct tree *left,*right; // 左子樹指針,右子樹指針 };/* 定義結(jié)構(gòu)指針變量,作用創(chuàng)建二叉樹 */ struct tree *create_btree(struct tree *root,struct tree *r,char info);/* 定義結(jié)構(gòu)指針變量,作用查詢數(shù)據(jù) */ struct tree *search_btree(struct tree *root,char key);/* 定義子函數(shù),作用打印二叉樹 */ void print_btree(struct tree *r,int l);/* 定義子函數(shù),作用先序遍歷 */ void PreorderTraversal(struct tree *root);/* 定義子函數(shù),作用中序遍歷 */ void InorderTraversal(struct tree *root);/* 定義子函數(shù),作用后序遍歷 */ void PostorderTraversal(struct tree *root); /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 主函數(shù) */ void main(){ char s[100],c; int n;struct tree *root=0; // 定義結(jié)構(gòu)指針根結(jié)點(diǎn),初始化為0 printf(“ ###”);printf(“## ##”);printf(“## 軟件課程設(shè)計(jì): 二叉樹的查找 ##”);printf(“## ##”);printf(“## 班 級(jí): 光 信0 8 0 4 ##”);光信0804廖娟 U200813197 printf(“## ##”);printf(“## 姓 名: 廖 娟 ##”);printf(“## ##”);printf(“## 學(xué) 號(hào): U 2 0 0 8 1 3 1 9 7 ##”);printf(“## ##”);printf(“ ###”);printf(“n”);printf(“ 程 序 運(yùn) 行 開 始 啦!!nn”); /* 讀入二叉樹的各個(gè)結(jié)點(diǎn)的值,并將其插入到二叉樹中 */ do { printf(“ 請(qǐng) 輸 入 一 個(gè) 字 符:”); gets(s); // 數(shù)據(jù)輸入過程 printf(“n”); if(!root) root=create_btree(root,root,*s); // 如果二叉樹還未建立,則建立根結(jié)點(diǎn)并保存數(shù)據(jù) else create_btree(root,root,*s); // 如果二叉樹已建立,則建立新的子樹 } while(*s); // 直到s字符串為空,停止輸入 printf(“ 打 印 的 二 叉 樹 如 下:n”);print_btree(root,0); printf(“ ###”); printf(“## ##”); printf(“## ★★★★★★★★★ 請(qǐng)輸入您想要執(zhí)行的操作!: ★★★★★★★★★ ##”); printf(“## ##”); printf(“## 選擇1—————————————進(jìn)行先序遍歷 ##”); printf(“## ##”);軟件課程設(shè)計(jì) 2010年1月 printf(“## 選擇2—————————————進(jìn)行中序遍歷 ##”); printf(“## ##”); printf(“## 選擇3—————————————進(jìn)行后序遍歷 ##”); printf(“## ##”); printf(“## 選擇4—————————————進(jìn)行查詢結(jié)點(diǎn) ##”); printf(“## ##”); printf(“## 選擇5—————————————進(jìn)行退出操作 ##”); printf(“## ##”); printf(“## ★★★★★★★★★ 溫馨提示:請(qǐng)選擇數(shù)字鍵0~5 ★★★★★★★★★ ##”); printf(“## ##”); printf(“ ###”);while(1){ scanf(“%d”,&n); switch(n) { case 1: printf(“ 先 序 遍 歷 為:n”); PreorderTraversal(root); printf(“nn”); break; case 2: printf(“ 中 序 遍 歷 為:n”); InorderTraversal(root); printf(“nn”); break; case 3: printf(“ 后 序 遍 歷 為:n”); PostorderTraversal(root); printf(“nn”); break; case 4: 光信0804廖娟 U200813197 printf(“ 請(qǐng) 輸 入 您 要 查 詢 的 結(jié) 點(diǎn):n”); scanf(“%s”,&c); printf(“ 您 要 查 詢 的 結(jié) 點(diǎn) 為:n”); root=search_btree(root,c); printf(“n”); break; case 5: printf(“ 光 信 0 8 0 4 ———— 廖 娟nn”); printf(“ 0 1 0 年 1 月nn”); return; default: printf(“ 您 的 輸 入 有 誤,請(qǐng) 重 新 輸 入!!n”); break; } } } /* Btree.C 結(jié)束 */ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ struct tree *create_btree(struct tree *root,struct tree *r,char info)/* struct tree *root:根結(jié)點(diǎn) struct tree *r:要增加的結(jié)點(diǎn) char info:要保存的數(shù)據(jù) */ { if(r==0) // 如果當(dāng)前位置無結(jié)點(diǎn),則將新結(jié)點(diǎn)插入此處 { r=new(struct tree); // same as function: malloc(sizeof()) if(r == 0) { printf(“ Out of memoryn”); return 0; } r->left= 0; r->right=0; r->info=info; // root為空,則插入后保存至根結(jié)點(diǎn)處 if(root) // 如果二叉樹存在,則將新建結(jié)點(diǎn)與二叉樹連接起來 軟件課程設(shè)計(jì) 2010年1月 { if(info root-> left=r; else root-> right=r; // 按左結(jié)點(diǎn)<父結(jié)點(diǎn)<=右結(jié)點(diǎn),保存數(shù)據(jù) } else // 如果根結(jié)點(diǎn)不存在,即二叉樹不存在,則將新建一個(gè)二叉樹 { r->right=0; r->left=0; } return r;} /* if = = 0 接下頁 */ /* 判斷要插入的節(jié)點(diǎn)應(yīng)該在當(dāng)前節(jié)點(diǎn)的左子樹或右子樹,遞歸插入 */ if(info < r->info) create_btree(r,r->left,info);if(info>=r->info) create_btree(r,r->right,info);} /* *create_btree(root,r,info)*/ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 查詢數(shù)據(jù) */ struct tree *search_btree(struct tree *root,char key)/* struct tree *root:要查詢的二叉樹首地址 char key:要查詢的數(shù)據(jù) */ { tree *t;t=root;if(!t) // 如果二叉樹指針為空,輸出Empty btree { printf(“ Empty btree!!n”); return root; } while(t->info!=key) { if(key // 按照“左結(jié)點(diǎn)<父結(jié)點(diǎn)<=右結(jié)點(diǎn)”查找 t=t->left; else t=t->right; if(t==0) // 如果指針為空,則退出查找 光信0804廖娟 U200813197 { printf(“ Search Failure!!n”); break; } } /* while(root->info!=key)*/ if(t!=0) // 如果二叉樹指針不為空,即查找成功給出信息,返回 printf(“ Successful search!!n key=%cn”,t->info);return root;} /* *search_btree(root,key)*/ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 打印二叉樹 */ void print_btree(struct tree *r,int l)/* struct tree *r:二叉樹首地址 int l:當(dāng)前結(jié)點(diǎn)的高度,根結(jié)點(diǎn)為0 輸出的二叉樹為正常樹逆旋轉(zhuǎn)90°后成鏡像的結(jié)果 */ { int i;if(r == 0) return; //如果傳入指針為0,則返回 print_btree(r->left,l+1); //打印左結(jié)點(diǎn) for(i=0;i printf(“ ”); //打印空格,用來排版控制格式 printf(“%cn”,r->info); //打印根結(jié)點(diǎn) print_btree(r->right,l+1); //打印右結(jié)點(diǎn) } /* *print_btree(root,0) */ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 先序遍歷 */ void PreorderTraversal(struct tree *root){ if(root==0) return;printf(“%c”,root->info);PreorderTraversal(root->left);PreorderTraversal(root->right);} 軟件課程設(shè)計(jì) 2010年1月 /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 中序遍歷 */ void InorderTraversal(struct tree *root){ if(!root) return;InorderTraversal(root->left);printf(“%c”,root->info);InorderTraversal(root->right);} /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 后序遍歷 */ void PostorderTraversal(struct tree *root){ if(!root) return;PostorderTraversal(root->left);PostorderTraversal(root->right);printf(“%c”,root->info);} 參考文獻(xiàn) 《數(shù)據(jù)結(jié)構(gòu)》(c語言版)嚴(yán)蔚敏 吳偉民 編著 清華大學(xué)出版社 《C語言程序設(shè)計(jì)》 譚浩強(qiáng) 編著 清華大學(xué)出版社 《C程序上機(jī)指導(dǎo)》 譚浩強(qiáng) 編著 清華大學(xué)出版社 《標(biāo)準(zhǔn)c語言程序設(shè)計(jì)及應(yīng)用》 周純杰 編著 華中科技大學(xué)出版社