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