第一篇:課設規范
電 子 工 程 學 院 課程設計報告格式及要求
一、封面:單獨1頁(見樣件)
二、摘要、關鍵詞:中文(250~300字)、英文;單獨1頁
中文摘要前加:“摘要:”,英文摘要前加“Abstract:”。
關鍵詞一般是3-6個,中英文關鍵詞一一對應,中文前冠以“關鍵詞:”,英文前冠以“Key words:”。
三、目錄:內容必要對應頁碼號。目錄包括設計總結報告的章節標題、附錄的內容所對應的頁碼。章節標題的排列如下格式進行:
1.........................................................................(第1級)
1.1………………………………………………(第2級)
1.1.1………………………………………(第3級)
(1)……………………………………(第4級)
①……………………………………….(第5級)
a……………………………………….(第6級)
四、正文:正文是設計總結報告的核心。設計總結報告正文的主要內容包含有:系統設計、單元電路設計、軟件設計、系統測試、結論等。
字體要求:
設計報告統一用A4紙打印,設計報告正文內容用小四號宋體。報告從正文開始統一編頁碼。左側裝訂。
一級標題:小二號黑體,居中占5行,標題與題目之間空一個漢字的空。二級標題:三號標宋,居中占三行,標題與題目之間空一個漢字的空。三級標題:四號黑體,頂格占兩行,標題與題目之間空一個漢字的空。四級標題:小四號粗楷體,頂格占一行,標題與題目之間空一個漢字的空。
標題中的英文字母均采用“Times New Roma”體,字號同標題字號。四級標題下的分級標題的標題字號為五宋。
所有文中圖和表要先說明再有圖表。圖要清晰、并與文中的敘述要一致,對圖中內容的說明盡量放在文中。圖序、圖題(必須有)為小五號宋體,居中排與圖的正下方。表序、表題為小五號黑體,居中排于表的正上方;圖和表中的文字為六號宋體;表格四周封閉,表跨越時另起表頭。
圖和表的注釋、注腳為六號宋體;數學公式居中排,公式中字母正斜體和大小寫前后要統一。
公式另行居中,公式末不加標點,有編號時可靠右側頂邊線;若公式前有文字,例
如、解等,文字頂格寫,公式任居中;公式中的外文字母之間、運算符號與各量符號之間應空半個數字的間距;若對公式有說明,可接排,如式中,A-XX(雙字線);B-XX;當說明較多時另起行頂格寫“式中A-XX”;回行與A對齊寫“B-XX”;公式中矩陣要居中且行列上下左右對齊。
物理量及技術術語全文要統一,要采用國際標準。
五、參考文獻:參考文獻部分應列出在設計過程中參考的主要書籍、刊物、雜志等。參考文獻的格式如下:
(1)專著、論文集、學術論文、報告
[序號]主要責任者(.)文獻提名[專著([ M ].);論文集([C].);學術論文([ D].);報告([ R].)](.)出版地(:)出版者(,)出版年(.)起止頁碼(.)
(2)期刊文章
[序號]主要責任者(.)文獻提名([ J ].)刊名(,)年(,)卷(期)(:)起止頁碼(.)
(3)國際、國家標準
[序號]標準編號(,)標準名稱([ S ])
六、附錄:附錄包括元器件明細表、儀器設備清單、電路圖圖紙、設計的程序清單、系統(作品)使用說明等。
設計要求:單獨1頁(由指導教師給出)1. 設計報告正文:
一、前言: 總體方案設計:
包括方案比較、方案論證、方案選擇(以方框圖的形式給出各方案)單元模塊設計:
各單元模塊功能介紹及電路設計; 電路參數的計算及元器件的選擇; 特殊器件的介紹; 各單元模塊的聯接。軟件設計:
① 說明軟件設計原理及設計所用工具; 畫出軟件設計結構圖、說明其功能; 畫出主要軟件設計流程框圖。系統調試:
包括系統硬件及軟件調試,說明調試方法與調試內容。系統功能、指標參數:
①說明系統能實現的功能;②系統指標參數測試,說明測試方法,要求有測試參數記錄表;③系統功能及指標參數分析(與設計要求對比進行)。設計總結:
包括:①對設計的小結;②設計收獲體會;③對設計的進一步完善提出意見或建議。
第二篇:畢設規范
河北經貿大學本科生畢業論文寫作規范
1、論文結構要求
學位論文應采用漢語撰寫;一般由六部分組成,依次為:封面、摘要、目錄、正文、附錄、參考文獻。各部分具體要求如下:
(1)封面(采用河北經貿大學統一印制的封面)
論文題目:應是整個論文總體內容的體現,要引人注目,力求簡短,嚴格控制在25字以內。當論文的內容比較豐富時,可以用副標題對正題加以補充。
(2)摘要
摘要是論文內容的簡要陳述,是一篇具有獨立性和完整性的短文。摘要應包括本論文的基本研究內容、研究方法、創造方法、創造性成果及其理論與實際意義。摘要中不宜使用公式、圖表、不標注引用文獻編號。避免將摘要寫成目錄式的內容介紹。
為便于國際交流,畢業論文(設計)應有英文摘要。英文摘要內容應與中文摘要對應,力求語法準確,語句通順,文字流暢。
關鍵詞:關鍵詞是供檢索用的主題詞條,應采用能覆蓋論文主要內容的通用詞條。關鍵詞一般列3—5個,按詞條的外延層次從大到小排列。
(3)目錄
按三級標題編寫,要求層次清晰,且要與正文標題一致,主要包括正文主要層次標題、附錄、參考文獻等,且標明頁數。
(4)正文
論文正文包括緒論、論文主體及結論部分。(5)附錄
附錄內容一般包括正文內不便列出的冗長公式推導、輔助性數學工具、符號說明(含縮寫)、計算程序及說明等。
(6)參考文獻
畢業論文的參考文獻必須是學生本人真正閱讀過的,數目一般應不少于15項(至少有1項外文文獻),應有近兩年的參考文獻,以近期發表的雜志類文獻為主,圖書類文獻不能過多,且要與論文工作直接相關。可以包括連續出版物、專(譯)著、論文集、學位論文、專利、技術標準等參考文獻。其排列順序為:連續出版物、專(譯)著、論文集、學位論文、專利、技術標準,同類參考文獻按其在論文中的參考順序排列。引用網上文獻時,應注明該文獻的準確網頁地址,網上參考文獻不包含在上述規定的文獻數量之內。
2、正文字數
畢業論文一般為0.6—1.2萬字,學院可根據學科專業特點提出具體要求。
3、論文書寫要求(1)摘要
摘要的字數(以漢字計)一般為500字左右,以能將規定內容闡述清楚為原則。摘要頁不需寫出論文題目,題頭“摘要”應居中,加黑2號宋體,然后隔行打印摘要的正文部分,為小4號宋體。英文摘要在中文摘要后另起一頁書寫。
關鍵詞(小4號黑體)空一格(詞);(詞);?;(詞)(小4號宋體)關鍵詞如需轉行應同第一個關鍵詞對齊(空4格)。(2)目錄
題頭“目錄”應居中,加黑2號宋體,然后隔行打印目錄的內容。目錄中各一級題序及標題用小4號黑體,其余用小4號宋體。
(3)論文書寫
畢業論文一律要求在計算機輸入、以Word格式編排打印。要求正文中文用宋體,標題中文用黑體,英文及阿拉伯數字為Times New Roman。
畢業論文開本為B5。頁邊距設置:上下分別為2.5cm,左側為2.5 cm,右側為2cm。正文每頁32行,每行35個字符,頁碼在版芯下邊線之下隔行居中放置;摘要、目錄部分的頁碼用羅馬數字單獨編排,正文以后的頁碼用阿拉伯
數字編排。
(4)標題字號和層次代碼
正文中應有論文題目,用4號黑體字并居中。
一、二級標題上下均空一行。標題字號:
一級標題 4號黑體 二級標題 4號黑體 三級標題 小4號黑體 正 文 小4號宋體 層次代碼:
一、××××(空兩格)
(一)××××(空兩格)
1、××××(空兩格)(1)××××(空兩格)
理工類等專業可以采用1、1.1、1.1.1、1.1.1.1形式。(5)頁眉及頁碼
畢業論文除封面及扉頁外,各頁均應加頁眉,頁眉文字居中,為“河北經貿大學畢業論文”。頁眉的文字用5號宋體。(6)注釋
注釋是對論文正文中某一特定內容的進一步解釋、補充說明或引文,要求排印在該頁地腳。注釋用數字加圓圈標注(如①②?)。序號按頁分別編號,不采用通篇文章統一編號方式。
(7)參考文獻
參考文獻是作者寫作論文時所參考的文獻書目,要求另起一頁集中列于文末。參考文獻序號用方括號標注。幾種主要參考文獻著錄表的格式為:
[1]連續出版物:作者,文題,刊名,年,卷號(期號):起止頁碼。[2]專(譯)著:作者,書名(譯者),出版地:出版者,出版年,起止頁碼。[3]論文集:作者,文題,編者,文集名,出版地:出版者,出版年,起止頁碼。[4]學位論文:作者,文題,博士(或碩士學位論文),授予單位,授予年。[5]專利:申請者,專利名,國名,專利文獻種類,專利號,授權日期。
[6]技術標準:發布單位,技術標準代號,技術標準名稱,出版地:出版者,出版日期。(8)外文字母的正、斜體用法
變量符號用斜體,計量單位等符號均用正體。(9)數字
除習慣用中文數字表示的以外,一般均采用阿拉伯數字(參照附錄)。(10)公式
公式原則上應居中書寫。若公式前有文字(如“解”、“假定”等),文字空兩格寫,公式仍居中寫。公式末不加標點。
公式較長時最好在等號“=”處轉行,如難實現,則可在+、-、*、/等運算符號后斷開,而在下一行開頭不應重復這一記號。
(11)插表
表格不加左、右邊線,上、下邊線為粗實線(1.5磅)余為細實線(0.5磅)。每個表格均應有表題(由表序和表名組成)。表序與表名之間空一格,表名中不允許使用標點符號,表名后不加標點。表題置于表上,居中排寫,要求用5號宋體。表題與表格、表格與表格后段落間均設6磅。表頭設計應簡單明了,盡量不用斜線。全表如用同一單位,則將單位符號移至表頭右上角。
表中數據應準確無誤,書寫清楚。數字空缺的格內加橫線“——”(占2個數字寬度)。表內文字及表的說明文字均用小5號宋體。
(12)插圖
插圖與文字緊密配合,文圖相符,內容正確。選圖要力求精煉。
每個圖均應有圖題(由圖號圖名組成)。圖題置于圖下,用中文居中書寫,要求用5號字。圖題與圖之間的豎向距離同插表。有圖注或其它說明時應置于圖題之下。圖名在圖號之后空一格排寫。引用圖應注明出處,在圖題右上角加引用文獻號。圖內文字均用小5號宋體。
有數字標注的坐標圖,必須注明坐標單位。(13)附錄
對需要收錄于畢業論文中且又不適合書寫于正文中的附加數據、資料、詳細公式推導等有特色的內容,可做為附錄排寫,序號采用“附錄1”、“附錄2”等。
(14)開題報告
開題報告用B5紙打印,格式參照正文,頁碼單獨編排,附在《河北經貿大學本科畢業論文(設計)開題報告申請書》(見附件)之后。
4、論文裝訂
(1)論文要求左側裝訂(封面除外),裝訂順序依次為:扉頁、摘要、目錄、正文、開題報告申請書、開題報告、教師指導意見記錄、河北經貿大學本科畢業論文指導教師評分表、河北經貿大學本科畢業論文答辯小組評分表。英文摘要裝訂到中文摘要后面,中英文摘要單獨編排頁碼;目錄單獨編排頁碼;開題報告裝訂到正文后面,頁碼單獨編排(詳見樣例)。
(2)裝訂后用學校統一印發的封面粘貼并切割整齊。
附錄 有關數字用法的規定
除習慣用中文數字表示的以外,一般數字均用阿拉伯數字。
1、世紀、年代、年、月、日和時刻一律用阿拉伯數字,如20世紀,80年代,4時3刻等。年號要用四位數,如1989年,不能用89年。
2、數與計算(含負整數、分數、小數、百分比、約數等)一律用阿拉伯數字,如3/4,4.5%,10個月,500多種等。
3、一個數值的書寫形式要照顧到上下文。不是出現在一組表示科學計量和具有統計意義數字中的一位數字可以用漢字,如一個人,六條意見。星期幾一律用漢字,如星期六。鄰近兩個數字并列連用,表示概數,應該用漢字數字,數字間不用頓號隔開,如三五天,七八十種,四十五六歲,一千七八百元等。
4、數字作為詞素構成定型的詞、詞組、慣用語、縮略語等應當使用漢字。如二倍體,三葉蟲,第三世界,“七五”規劃,相隔十萬八千里等。5、5位以上的數字,尾數零多的,可以寫為以萬、億為單位的數。一般情況下不得以
十、百、千、十萬、百萬、千萬、十億、百億、千億作為單位,如345 000 000公里可寫為3.45億公里或34 500萬公里,但不能寫為3億4 500萬公里或3億4千5百萬公里。
6、數字的書寫不必每格一個數碼,一般每兩數碼占一格,數字間分節不用分位號“,”,凡4位以上的數都從個位起每3位數空半個數碼(1/4漢字)。“3 000 000”,不寫成“3,000,000”,小數點后的數從小數點起向右按每三位一組分節。用阿拉伯數字書寫的多位數不能從數字中間轉行。
第三篇:數據結構課設
數據結構課設 大整數計數器 1.問題描述
實現大整數(200位以內的整數)的加、減、乘、除運算。2.設計要求
設計程序實現兩個大整數的四則運算,輸出這兩個大整數的和、差、積、商及余數。
3.數據結構
本課程設計采用順序串來實現。4.問題分析
由于整數數據存儲位數有限,因此引入串的概念,將整型數據用字符串進行存儲,利用字符串的一個字符存儲大整數的一位數值,然后根據四則運算規則,對相應位依次進行相應運算,同時保存進位,從而實現大整數精確的運算。具體設計思路如下:
(1)計算大整數加法時,采用數學中列豎式的方法,從個位(即字符串的最后一個字符)開始逐位相加,超過或達到10則進位,同時將該位計算結果存到另一個字符串中,直至加完大整數的所有位為止。
(2)計算大整數減法時,首先調用庫函數strcmp判斷這兩個大整數是否相等,如果相等則結果為0,否則用compare函數判斷被減數和減數的大小關系,進而確定結果為正數還是負數,然后對齊位依次進行減法,不夠減則向前借位,直至求出每一位減法之后的結果。
(3)計算大整數乘法時,首先讓乘數的每一位都和被乘數進行乘法運算,兩個乘數之積與進位相加作為當前位乘積,求得當前位的同時獲取進位值,進而實現大整數的乘法運算。
(4)計算大整數除法時,類似做減法,基本思想是反復做減法,從被除數里最多能減去多少次除數,所求得的次數就是商,剩余不夠減的部分則是余數,這樣便可計算出大整數除法的商和余數。
需求分析(1)任何一個表達式都是由操作數、運算符和界限符組成的,我們稱之為單詞.(2)表達式求值首先要符合四則運算規則: ① 先乘除,后加減 ② 從左到右進行運算 ③ 先括號內,后括號外(3)功能實現: ① 若當前單詞為數字串,則壓入數值棧 ② 若當前單詞為運算符并大于運算棧的棧頂符號,則進棧 ③ 若當前單詞為運算符并等于運算棧的棧頂符號,去括號,輸出 ④ 若當前單詞為運算符并小于運算棧的棧頂符號,則進行運算
課程設計的目的 通過課程設計全面掌握《C語言程序設計》關鍵知識點,掌握C語言中數組、指針、結構體、文件等方面的基本知識。
通過課程設計了解并掌握C語言程序設計的方法,熟悉C程序設計的開發環境及C程序的
調試過程。
培養學生查閱參考資料、手冊的自學能力,通過獨立思考深入鉆研有關問題,學會自己分析、解決問題的方法。
課程設計的任務和要求 任務: 編程求出輸入的兩個正整數之和,這兩個正整數的可能達到200位。
要求:
輸入:
共有兩行,第一行為第1個正整數;第二行為第2個正整數。
輸出:
2個正整數之和。
主要參與成員
姓 名 學 號
系 別 班 級 主要作用(分工)
成果形式
設計 軟件 作品 其他:
完成情況及以后的拓展設想 通過用C語言編寫函數基本實現了大整數相加這個程序,但該程序仍存在一些不足,還可以加上一些語句使程序具有容錯功能,并且可以正確計算一個負數和一個正數相加。
課 程 設 計 鑒 定 情 況 表 小組鑒定意見
小組長簽名:
年 月 日
指導教師意見
教師簽名:
****年**月**日
課程設計成績 優 良 及格 不及格 教研室意見
年 月 日 備注 《C語言程序設計》課程設計報告書 作者:廖 序 課程設計概述 課程設計名稱
大整數相加 任務要求: 編程求出輸入的兩個正整數之和,這兩個正整數的可能達到200位。
輸入:
共有兩行,第一行為第1個正整數;第二行為第2個正整數。
輸出:
2個正整數之和。開發環境: C語言。C語言是目前世界上流行、使用最廣泛的高級程序設計語言。1972年,C語言在美國貝爾實驗室里問世,后來又被多次改進,并出現了多種版本。80年代初,美國國家標準化協會(ANSI),根據C語言問世以來各種版本對C語言的發展和擴充,制定了ANSIC標準。
目前,在微機上廣泛使用的C語言編譯系統有MicrosoftC、Turbo C、Borland C等。這些C語言版本不僅實現了ANSIC標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。
C語言的特點: C語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便于實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。
由于C語言實現了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統軟件的開發,也適合于應用軟件的開發。
此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
參考資料
李錚、葉艷冰、汪德俊,C語言程序設計基礎與應用,清華大學出版社,2005 [2]CSDN技術中心
二、概要設計
為了實現大整數相加這個程序,將程序劃分為了三個模塊: 輸入數據。運算。輸出結果。
首先定義了子函數Input()來存儲用戶輸入的兩個加數,為了滿足任意位數的兩個大整數相加,在子函數Input()中嵌套調用子函數Init()使sum數組里面存放的數初始化為”0”。
然后定義子函數Long_Add()使兩個大整數作加法運算,從后面往前面相加,附帶進位。定義子函數Output()實現輸出結果。
最后如下圖所示,在主函數main中調用Input(),Long_Add(),Output()三個子函數實現程序。
三、詳細設計
程序的流程圖:
四、調試過程 第一次 測試數據a=***7,b=111111 編譯運行后不能輸出結果,檢查函數后編譯正確。再次分析,發現如果直接把a,b,sum定義為unsigned int型的話,計算出來的和的范圍只能在0~65535之間,否則就會出現錯誤。嘗試將a,b,sum存放到字符數組中,從個位開始,一位一位相加。
第二次 測試數據a=***7,b=111111 編譯運行后仍不能輸出結果。分析原因,在用于輸出的子函數Output()中,輸出數組字符數組sum[]前未確定和的最高非零位。
嘗試加入for(i=0;i 第三次 測試數據a=99999919,b=99 編譯運行后發現計算出來結果不正確。經過分析,函數中沒有對最后 一個進位進行處理。 嘗試加入while(carry > 0)語句,再次進行調試。 { tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} 第四次 測試數據a=99999919,b=99 編譯運行后得到正確結果。 第五次 隨意輸入幾組數據進行測試,結果都是正確的。程序得到實現。 五、結論與體會 通過不斷的調試、修改,本課程設計最終實現了200位以內的兩個大整數相加,但程序還 可以進一步完善,程序中仍存在一些不足之處,比如缺少容錯功能,不能準確計算負整數加正整數,等等問題 雖然C語言程序設計在上學期做為我們的必修課已經學習過了,但書到用時方恨少,這次課程設計的學習程序設計中暴露出的我自身的問題更是非常明顯。 一開始看到題目認為非常簡單,直接將兩個數都定義為整型。編寫程序并運行后發現并不能達到題目的要求,計算出來的和只能小于等于65535,否則就會出現錯誤。分析后,將數據作為字符串來處理,用for循環語句從存數的字符數組中一位一位的取數出來,按照數位對齊,從個位開始,按位相加,逢十進一的運算規則進行運算。最后用字符輸出函數putchar()輸出計算出來的結果。由于程序偏大且較復雜,將程序劃分為了輸入數據、運算、輸出數據三個子程序。數次編譯調試后,最終使程序得以實現。 經過三個星期的上機實踐學習,使我對C語言有了更進一步的認識和了解,讓我能夠進一步的掌握和運用C語言來編寫程序。要想學好C語言要重在實踐,要通過不斷的上機操作才能更好地學習它,通過實踐,我也發現我的好多不足之處和薄弱環節。 首先,基礎掌握不牢固,對于C語言中的許多基本語法尚沒有熟練掌握,在設計過程中仍需請教其它同學,查閱課本,設計效率很低。 其次,經典算法掌握不牢。在完成作業的過程中還需查閱書籍和借鑒他人。 再次,程序量過大的時候,頭緒理不清。雜亂無章,無系統性,不便調試和閱覽,自己也易于出錯。 并且對C語言中經常出現的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。 通過實踐的學習,我認到學好計算機要重視實踐操作,不僅僅是學習C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。 六、源程序清單 #include t;string.h> #define Max 1000 char sum[Max+1];/*和*/ char a[Max],b[Max];/*兩個加數*/ int len1,len2;void Input(char a[],char b[]){ int i,len;void Init(char a[]);/*對Init()函數進行聲明*/ printf(“Please enter two integer:n”);scanf(“%s %s”,a,b);len1=strlen(a);len2=strlen(b);Init(sum);len=strlen(a);for(i=len-1;i>=0;i--)sum[Max+i-len] = a[i];} void Init(char a[]) { int i;for(i=0;i void Long_Add(char sum[],char new[]){ int i,j;int len;int tempsum;int carry = 0;/*進位*/ len = strlen(new);/*從個位開始,按位相加,逢十進一*/ for(i=Max-1,j=len-1;i>=0,j>=0;i--,j--){ tempsum = sum[i]-'0'+new [j]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;} while(carry > 0)/*處理最后一個進位*/ { tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} return;} void Output(char sum[]){int i,n;/*尋找和的最高非零位*/ for(i=0;i Long_Add(sum,b);Output(sum);getch();return 0; 計算機網絡應用課程設計 報告 系(院): 計算機科學學院 專業班級: 計科11511 姓 名: 鐘燦均 學 號: 201503687 指導教師: 余紹文 設計時間: 2017.6.12-2017.6.23 設計地點: 12教1樓機房 一、課程設計目的和意義 計算機網絡課程設計的目的,是為了讓我們更深入地掌握計算機網絡的核心內容,實現理論與實踐相結合。讓學生用具體的實踐成果,體現對理論知識的掌握程度。有利于學生提高計算機網絡的實踐能力,加深對計算機網絡理論知識的理解。其基本目的是: 1. 培養學生理論聯系實際的設計思想,訓練綜合運用所學的基礎理論知識,結合生產實際分析和解決網絡應用中問題的能力,從而使基礎理論知識得到鞏固和加深。2. 學習掌握網絡應用工程的一般設計過程和方法。 二、設計題目和要求 1.編寫程序,實現系統的基本功能; 2.要有用戶界面:要求至少采用文本菜單界面;鼓勵采用圖形菜單界面; 3.寫課程設計報告,內容包括: ? 封面(參見附錄I) ? 需求分析:以無歧義的陳述說明程序設計的任務,強調的是程序要做什么?給出功能模塊圖和流程圖。同時明確規定:輸入的形式和輸出值的范圍;輸出的形式;程序所能夠達到的功能;測試數據,包括正確的輸入及其輸出結果和含有錯誤的輸入及其輸出結果。? 概要設計:包括程序設計組成框圖,程序中使用的存儲結構設計說明(如果指定存儲結構請寫出該存儲結構的定義)。 ? 詳細設計:包括模塊功能說明(如函數功能、入口及出口參數說明,函數調用關系描述等),每個模塊的算法設計說明(可以是描述算法的流程圖)。其中源程序要按照寫程序的規則來編寫,結構清晰,重點函數的重點變量,重點功能部分要加上清晰的程序注釋。? 運行結果:包括典型的界面、輸入和輸出數據等; ? 總結:包括課程設計中遇到的問題,解決問題的過程及體會、收獲、對課程設計的認識與思考等。 ? 附錄:包括主要程序清單,要有適當的注釋,使程序容易閱讀。? 開發環境:windows 10 ? 開發工具: vs2008 題目3:基于UDP協議的簡易聊天機器人 設計目標: 1.了解Socket通信的原理,在此基礎上編寫一個聊天程序; 2.理解upd原理;課程設計系統組成及模塊功能: 此課程設計實現了基于UDP的客戶/服務器通信程序,需要實現以下一些基本功能: 1.客戶端連接聊天機器人服務器; 2.消息發送:客戶端發送消息給機器人服務器。 3.消息接收:客戶端接收到機器人服務器發送給他的消息。4.可以有多個客戶端同時連接 5.智能回復功能:根據用戶發送的消息內容,稍微有點智能回復。 運行效果: 服務器端和客戶端截圖 三、設計內容 1、UDP傳送數據前并不與對方建立連接,即UDP是無連接的,在傳輸數據前,發送方和接收方相互交換信息使雙方同步。 2、UDP不對收到的數據進行排序,在UDP報文的首部中并沒有關于數據順序的信息(如TCP所采用的序號),而且報文不一定按順序到達的,所以接收端無從排起。 3、UDP對接收到的數據報不發送確認信號,發送端不知道數據是否被正確接收,也不會重發數據。 4、UDP傳送數據較TCP快速,系統開銷也少。 5、由于缺乏擁塞控制(congestion control),需要基于網絡的機制來減小因失控和高速UDP流量負荷而導致的擁塞崩潰效應。換句話說,因為UDP發送者不能夠檢測擁塞,所以像使用包隊列和丟棄技術的路由器這樣的網絡基本設備往往就成為降低UDP過大通信量的有效工具。數據報擁塞控制協議(DCCP)設計成通過在諸如流媒體類型的高速率UDP流中增加主機擁塞控制來減小這個潛在的問題。 從以上UDP協議特點可知,UDP提供的是無連接的、不可靠的數據傳送方式,是一種盡力而為的數據交付服務。 1.服務端 1.2.3.4.5.加載協議棧; 創建套接字; 將套接字綁定到一個本地地址和端口bind; 等待接收數據recvfrom;關閉套接字; 2.客戶端 1.2.3.4.加載協議棧; 創建套接字socket; 向服務器發送數據sendto;關閉套接字; 3.相關代碼顯示:(客戶端) int main(int argc, char* argv[]){ system(“@color 0e”);WORD socketVersion = MAKEWORD(2, 2);WSADATA wsaData;if(WSAStartup(socketVersion, &wsaData)!= 0){ } sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = inet_addr(m);int len = sizeof(sin);return 0;以上代碼為相關版本信息及熱啟動的一些操作;; 結構體端口號及相關地址信息以及轉化函數,將輸入的信息轉化為計算機可識別的二進制代碼,進行相關構造 char * sendData = new char[255];cout << “主人:”;cin >> sendData;while(strcmp(sendData, “#”)!= 0){ sendto(sclient, sendData, strlen(sendData), 0,(sockaddr *)&sin, len);char recvData[255];int ret = recvfrom(sclient, recvData, 255, 0,(sockaddr *)&sin, &len);if(ret > 0){ } recvData[ret] = 0x00;cout << “機器人:”;printf(recvData);4.相關代碼展示:(服務端) SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if(serSocket == INVALID_SOCKET){ } printf(“socket error!”);return 0;3 if(bind(serSocket,(sockaddr *)&serAddr, sizeof(serAddr))== SOCKET_ERROR){ } sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);char * sendData = new char[255];char recvData[255];while(true){ int ret = recvfrom(serSocket, recvData, 255, 0,(sockaddr *)&remoteAddr, //printf(recvData);if(ret > 0){ } struct Ro { char recv[255];char send[255];recvData[ret] = 0x00;printf(“接受到一個連接:%s rn”, inet_ntoa(remoteAddr.sin_addr));cout << “主人:”;printf(recvData);printf(“bind error!”);closesocket(serSocket);return 0;以上為對套接字的綁定及判斷綁定是否成功,以及對于相關信息的初始化 &nAddrLen);}Ro;FILE *fp;fp = fopen(“G:機器人問答機制.txt”, “r”);while(!feof(fp)){ } fscanf(fp, “%s %s”, Ro.recv, Ro.send);if(strcmp(recvData, Ro.recv)== 0){ } else { } strcpy(sendData, Ro.send);break;strcpy(sendData, “對不起,我不知道”);4 fclose(fp);cout << endl;cout << “機器人:” << sendData << endl;sendto(serSocket, sendData, strlen(sendData), 0,(sockaddr *)&remoteAddr, nAddrLen); 四、設計成果以及心得 1.成果 2.心得 通過對課設的相關的操作,加強了對于相關知識的理解,對于知識的應用也得以加強,在課設過程中,聊天機器人制作較為有趣,對于TCP與UDP的通信方式有了進一步的理解和加強,對于socket編程的相關基礎也得以進一步的理解和學習。在今后的學習過程中希望可以將所學知識應用于實際,學以致用。而且對于課設中存在的問題和不足,以及通過老師的講解,對一些算法加以分析和改進,從而不斷完善課設內容,對內容的理解得以加深。 指導老師意見: 成績: 教師簽名: 2017年6月23日 本次課程設計我們小組順利的完成了鍋爐內膽水溫與循環水流量串級控制系統。我們通過討論對過程參數方面的知識有了更加深入的了解。我負責的是傳模擬量采集模塊。 和以前做過的課程設計一樣,經過兩周的課程設計和學習鞏固過程,我充分認識到理論聯系實際能力的重要性。另外還讓我知道設計過程中應自始至終持有嚴謹的科學態度,不能存有一絲的僥幸心理。首先設計中發現自己的理論知識掌握的不牢固。其次就是在設計過程中出現了很多問題,但是自己不會具體情況具體分析。本次工程實踐就是利用THJ-4型過程控制實驗裝置為硬件基礎做鍋爐內膽水溫控制系統實驗分析,采用MCGS組態軟件在上位機實現顯示和控制。通過本次工程實踐,來熟悉工業過程控制的控制流程以及其控制原理。 同學的幫助在為期一周的課設候中有至關重要的作用。因為一個人的能力是有限的。在同學的點滴幫助下不斷的自我完善,從而達到目的。 我覺得作為一名自動化專業的學生,傳感器的課程設計是很有意義的。更重要的是如何把自己平時所學的東西應用到實際中。雖然自己對于這門課懂的并不多,很多基礎的東西都還沒有很好的掌握,覺得很難,也沒有很有效的辦法通過自身去理解,但是靠著這一個禮拜的“學習”,在小組同學的幫助和講解下,漸漸對這門課逐漸產生了些許的興趣,自己開始主動學習并逐步從基礎慢慢開始弄懂它。我認為這個收獲應該說是相當大的。覺得課程設計反映的是一個從理論到實際應用的過程,但是更遠一點可以聯系到以后畢業之后從學校轉到踏上社會的一個過程。小組人員的配合﹑相處,以及自身的動腦和努力,都是以后工作中需要的。第四篇:計算機網絡課設
第五篇:課設小結