第一篇:民航機載電子設備課設感想
民航機載電子設備課設感想
小組成員:
負責任務:labview軟件學習與虛擬大氣數據儀表設計連接。收獲及體會:
經過一周的課設,個人感覺最大的收獲就是對labview軟件有了一定的了解,學會了初步制作虛擬儀器的方法。電路連接以及對儀器的調試及修改。
labview是一種用圖標代替文本行創建應用程序的圖形化編程語言,使用的是圖形化編輯語言G編寫程序,產生的程序是框圖的形式。labview提供很多外觀與傳統儀器(如示波器、萬用表)類似的控件,可用來方便地創建用戶界面。不像C語言編程那樣枯燥,只要很好的分析目標儀器所存在的各種關系及結構,就能用圖形化的結構把儀器構建出來。
在labview軟件中存在很多的標志和應用符號,接觸這款軟件之前還是很擔心的,因為自己安裝的是英文版的,所以很多功能都看不懂,需要對著參考書一條一條的去查詢、記錄。因為開始比較困難,安裝好了摸索了一晚上還是很多東西不懂,第二天去圖書館借了兩本參考書,一本就是LABVIEW虛擬儀器基礎知識,里面把每條的作用都詳細介紹,通過大家的探討學習,最終初步了解了軟件應用,使得我們小組的課設工作能夠順利的進行下去。
正所謂萬事開頭難,我們共同討論,得到最后的計算公式,著手設計儀表。開始的時候還是不知所措,因為感覺信息量很大,可是不知道該從哪開始。最后選擇先把所有輸入輸出量都列出來,然后分析、連接。然后是運算公式的輸入,這個費了很大的力氣,因為連線太多,而我自己比較粗心,經常會出現把線連錯的情況,以至于在調試的時候,興沖沖的打開,卻發現真空速根本不動,而其他的量動的毫無規律。而檢查的時候,因為之前連接電路時候把各個組件挨得太過緊密,而且雜亂無章,檢查了半天也看不出個所以然。最后經過考慮,以輸入、轉換、輸出的順序重新排列,拉大間距。最后再一條線一條線的檢查,才發現有幾根線接錯了,并且有一個公式中的變量輸入關系有問題,終于改完了所有的問題,調試也可以初步符合要求了,我們就開始了最后的完善和美化工作。
一周的課設結束,我最大的收獲學會了怎樣去接觸和學習一門新的知識。怎樣去熟息并應用一個軟件。更重要的是,團隊合作,相互支持。
第二篇:民航說課
《民航概論》課程說課稿
一、課程定位
“民航概論”課程是上海交通職業技術學院(南校區)航空機電設備維修、航空電子設備維修、航空商務、航空安全管理等專業必修的專業基礎課,課程設計總課時數為36學時。該課程是學生接觸專業和民航行業知識的啟蒙課程,是學習后續專業課程的重要基礎。
二、教學設計思路
《民航概論》課程是我院航空類專業普遍開設的一門專業入門課程,涉及的專業面廣,教學班級多,參與教學的教師多。將該門課程建設成為精品課程,有利于提高該課程的整體教學質量,將優質教學資源進行整合,培養學生的職業素養和職業能力,同時培養一批青年教師,規范教學內容及過程。
1、教學內容的針對性和適用性
我院堅持以培養民航機務維修、民航商務管理、民航安全管理、民航空中乘務等一線的高等技術應用性人才和管理人才為目標,學校面向全國招生,注重主動適應地方經濟和社會發展、行業建設的要求。“民航概論”課程是民航各專業學生學習后續專業課程的啟蒙課程,在教學內容上,除了要考慮基礎課程、專業基礎課程、專業課程之間的銜接外,還應充分考慮不同專業在崗位工作任務和職業能力要求上的差異,并兼顧各專業對于民航、航空公共知識的通用性方面的要求。基于上述兩點,將課程內容進行模塊化設計,分為“公共”和“專業”兩大類模塊,如下圖所示:
圖1 模塊化教學內容
2、教學方法設計
本課程作為航空類專業學生的一門入門課程,學生將通過本課程的學習,了解相關航空知識,民航運輸知識,飛機基本結構組成等。這些知識的獲取,將為學生學習后續專業知識奠定良好的基礎,并提高他們對民用航空事業的熱愛,激發其學習的興趣。考慮到課程所涉及到的知識面很廣,信息非常豐富,因此,在教學中,充分利用了多媒體、模擬實驗、實訓設備、校外實習基地等多種教學資源,并通過整合、調整教學內容,使教學內容貼近具體工作過程、崗位工作內容,充分體現職業教育對課程的職業性、實踐性和開放性的要求。
? 教學目標 基于對學生已有的知識基礎和認知能力的分析,根據《教學大綱》的要求,制定了如下的教學目標:
? 知識目標:
◇ 了解航空歷史、機體構成、飛行基本原理、飛機的基本運動;
◇ 了解航空運輸、機場的運營過程及安檢程序等。? 技能目標:
◇ 會在教師引導下,掌握相關航空基礎知識;
◇ 會初步應用飛行原理,分析飛機的基本運動及其控制;
◇ 提高觀察、分析、歸納的能力。? 情感目標:
◇ 了解偉大的航空發展史和相關航空知識,增強對航空的熱愛;
◇ 培養獨立探究能力和團結互助精神,獲取成功體驗。? 教法選擇
教法采用情境式、啟發式教學法。一方面“以教師為主導 ”,設置問題情境,啟發引導學生;另一方面充分發揮教師在語言表達、心理輔導等方面的特長。
? 學法指導
突出“以學生為主體”,強調主動參與、知識感悟和自我習得,在創設的問題情境中主動探究,提高學生的綜合能力。采用小組合作學習模式,激發學生學習興趣。
? 教學手段
以實例觀察、小組合作、師生互動等多樣化的方式來達成學生主動學習的目的。引導學生借助生活實例,學會觀察和分析;并以多媒體課件、模擬訓練、實驗實訓輔助教學,實現課堂容量的擴充,提高課堂效率。
圖2 校外實訓基地現場教學
圖3 校內實訓場所現場教學
圖4 訂單式培養 圖5 工學結合三、教學設施、環境和實訓實習場景介紹
1、網絡課程資源 在“民航概論”精品課程的開發過程中,課題組成員開發了該課程配套教學的全部多媒體教學課件、教案、題庫等網絡學習資源,并攝制了課程的全程錄像。
2、實驗、實訓設施
我院擁有航空模型陳列室、計算機輔助專用CBT教室、飛機機械實訓室、模擬候機樓、安檢實訓室、外場實訓機坪以及校外實訓基地等多種實驗、實訓場所和設施供本課程的教學。
① 航空模型陳列室
該陳列室內陳列了多種民用和軍用航空飛機模型,種類齊全,同時,還擁有一個機場模型,用于本課程的教學展示。
圖6 航空模型陳列室
② 計算機輔助CBT教室
我院擁有機務、安檢、商務等專業CBT輔助教室三間,教室均為50座學員機配置,組建有小型局域網,其中服務器1套、教師機1臺、工作站50 臺。安裝有B737/B757/A320/MD82等機型的機務專業教學培訓軟件,PW4000/GE/RR發動機培訓軟件、安檢專業x光機圖像識別教學軟件、民航客運、空乘等專業實訓、教學軟件,以計算機模擬實訓、演示極大地豐富了教學內容和教學手段,促進了教學質量的提高并提高了學生的學習興趣。
圖7 計算機輔助CBT教室
③ 飛機機械實訓室
飛機機械實訓室是我院最大的一個室內實訓場所,該教室占地二百多平米,分為:現場教學區、發動機及飛機部件展示區、實訓工作區等區域。
圖8 現場教學區
現場教學區配備了折疊式桌椅50座,移動黑板、投影儀等教學設施,供教師在實訓室進行現場教學,做學一體,增加了教學的直觀感。
圖9 發動機單元體 圖10 起落架液壓收放系統
發動機單元體展示區域可以為本課程中發動機一節內容提供現場教學條件,通過現場實物教學,使學生對發動機的各部件有一個直觀的認識。圖10所示為起落架液壓收放系統,可進行收放演示,為本課程中飛機機體構成一節的教學提供現場演示效果,非常形象。
圖11 現場實訓區
圖11所示為實訓室內的現場實訓區域,該區域有工作臺若干,飛機部件陳列架、工具間等,可供多位學生同時現場實訓,提供飛機機械維修、電子設備維修等專業實訓教學。
④ 模擬候機樓
該室內實訓室是我院商務類專業最大的一個室內實訓場所,占地約二百多平米,室內布局完全參照機場候機樓的布局安排,擁有售票處(該售票處與機場售票處可實施動態實時聯
網)、值機柜臺、安全檢查通道、貴賓休息室等區域,供我院安檢、商務等專業進行專業實訓,同時,也為本課程的航空運輸、機場等內容提供現場教學條件。
圖12 模擬候機樓
上:模擬售票處 左下:模擬辦票柜臺 右下:模擬安檢通道
⑤ 安檢實訓室
圖13 安檢實訓室 圖14 安檢監控室
我院擁有安檢專業實訓室、安檢監控室各一間。實訓室內配置有x光機2臺、安全門一臺、手持式金屬探測儀若干,供安檢專業實訓教學用。安檢監控室內配有一套監控設備,可提供多路監視,目前連接八個監控探頭,可進行圖像硬盤拷貝和編輯。該實訓場所為本課程的機場的教學提供實訓條件。
⑥ 外場機坪
我院擁有校內實訓用飛機和機坪,擁有An-24(運-7)飛機1架、An-2(運-5)飛機1架、IL-14飛機 1架,同時,在機坪一側,還擁有飛機機務維修實習車間(機電車間、電子車間以及綜合實習教室),供現場實訓教學使用。同時,飛機的機艙改造為乘務模擬實習客艙,供空乘專業學生實訓使用。
圖15 外場機坪
⑦ 校外實訓基地
除了校內豐富的實訓設施、實訓場所外,我院還與上海及華東地區的航空公司、機場建立了良好的校企合作關系,建立了多個校外實訓基地,如:常州奔牛機場就是我院的校外實訓基地之一,每年,學院都將組織學生到該基地進行認知性實習。
圖16 校外實訓基地——常州機場
四、課程特色與創新
1.在行業企業專業技術人員參與下,建立認知實習環節——課程現場教學——技能實訓的工學結合教學模式。首先安排3天的認知和企業參觀實習,然后進入課程學習,大部分內容在實訓室現場教學,隨后安排技能實訓。
2.開發了內容豐富的網絡教學資源,包括網絡教程、助教課件、電子教案、實踐教學、考核題庫、具有助學、助教及師生互動交流功能。
3.課程現場教學與技能實訓相結合,利用與企業建立的訂單式培養模式,將部分內容安排在委托方企業的相應的職業崗位和工作環境中進行,培養學生專業能力和職業素質。
五、課程改革的方向與途徑
1.教學內容要不斷更新,適時補充民用航空發展新知識、航空器的新技術、新結構等。2.繼續提高教學隊伍中主講教師,特別是青年教師的教學和專業技能水平。3.繼續完善相關實訓室的建設。
羅玉梅 上海交通職業技術學院(南校區)2008-11-11
第三篇:機械制造技術基礎課程設計課設感想(范文模版)
課設感想
本次課設主要鍛煉了我們的零件設計能力以及真正需要加工的時候需要的動手能力操作。我們通過金工實習老師的指導學會了包括銑床,車床,線切割以及鉆床的一系列機床的使用方法。因而我們可以更加熟練地操作與運用各種機床的操作,雖然期間有一些小瑕疵但是整體來說還是不錯的。因為通過多天的鍛煉我們已經可以熟練掌握多種機床的獨立操作了。所以我覺得如果能將課程設計放在一些課程學習中進行這樣大家可能會更融會貫通地理解所學習的內容并能充分理解。另外在此次課設中,我主要擔任銑床及線切割方面的加工任務以及一些孔加工也是由我負責,首先我們進行的是銑床方面的操作,銑床加工需要注意的就是一定要注意要將工件夾緊,不然很容易出現崩刀現象,同時我們還要一些比較好的加工手法,就是一定要平穩而緩和地轉動搖桿,令工件平穩移動,這樣就可以保證切削力的穩定而不會發生刀具過熱發生事故。在線切割方面,需要需要注意的主要就是在加工前的找正,在進行加工路線的制定中要注意程序的編寫以及方向的正反。這樣才能保證絲能按自己所希望地進行進給。
在進行孔的鉆機操作中,一定要先劃線,釘刻,再進行鉆床的鉆孔操作。鉆孔時要進給一些退出一些加入潤滑油,這樣能保證孔的粗糙度低而且也不容易使鉆頭卡住工件,發生事故。這就是本次課設我的感想。
第四篇:數據結構課設
數據結構課設 大整數計數器 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日第五篇:計算機網絡課設