久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

全方位課程設計之初探

時間:2019-05-14 18:41:31下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《全方位課程設計之初探》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《全方位課程設計之初探》。

第一篇:全方位課程設計之初探

全方位課程設計之初探

桃園縣中壢市自立國小/賴暄頤

ㄧ、前言

我國特殊教育法(2006)第ㄧ條:「為使身心障礙及資賦優異之國民,均有接受適性教育之權利,充分發展身心潛能、培養健全人格,增進服務社會能力,特制定本法。」由此可知,我國的特殊教育非常強調為每個特殊學生提供適切且個別化的課程及專業服務。而我國身心障礙學生的安置大都在普通班,所以教師必須針對學生的需求作教學上的調整,目前我國已實施的課程調整模式(盧臺華,2003)包括:

1.普通教育課程:指特殊生的核心課程內容與基礎能力要求與普通班學生相同。2.調整性的普通教育課程:由簡化、減量、分解、替代等方式改變普通教育的目標與內容,並在教材與作業呈現方式作個別化的調整,提供學生學習的支援。

3.功能性課程:適用於落後程度較多的學生,若特殊生不能適應普通教育,即採用功能性課程。此類課程是針對無法採用普通教育課程的特殊生,而另外設計符合特殊學生需要的生活技能課程。

4.全方位課程:全方位課程設計是將既有的教學材料或教學活動予以彈性設計,並有效整合教學與媒體資源,提供給不同背景或能力差異學生之替代性課程,讓課程符合其學習需求,從而有機會達成普通教育預定的學習目標(Burgstahler,2001)。

前三項課程內容已有許多學者介紹過,所以本研究即針對全方位課程來做介紹。

二、全方位課程設計的源起

全方位課程設計的概念源自於三十多年前的一位建築師Ron Mace,Mace認為在設計設施時,要考量所有使用該空間設施的個體差異之需求,特別是那些有特殊需求的身心障礙人士,以便能設計出滿足最多使用需求的建築物、空間規劃及相關設施,為實現此理想,在1980年代初期,Mace和他在北卡羅萊那州立大學的夥伴成立全方位設計中心(the center for universal design;CUD),而CAST(the center for applied special technology)也在1990年代初期,開始將全方位設計的想法應用在課程的教材與教師的教學上,讓身心障礙學生較不會因為生理限制而影響學習效果。這觀念也反應在柯林頓總統1997年簽署通過美國殘障者教育法案(Individuals with Disabilities Education Act,1997),其中提出普通教育課程需考量身心障礙學生的「可及性」;也就是學生可以使用多元的方式來達到學習的目的。之後學者即藉由這個議題,產生全方位課程設計的理念。

由於全方位課程設計重視每一位學生教材的替代性與選擇性,滿足每位學生的學習需求,是以美國的No Children Left Behind(NCLB,2001)與,Individuals With Disabilities Education Act(IDEA,1997;2004)即以此為重要政策。希望教學者能依不同個體做課程調整,使每位學生皆能達成有效學習的目標。

三、全方位課程設計的支持理論

全方位課程的支持依據有二:一為認知神經學的理論基礎;二為Vygotsky的近側發展區(Rose,Meyer,& Hitchcock,2006)。以下將做簡單的介紹:(一)認知神經學的研究: 根據認知神經學的研究指出:人腦的活動量和其分佈區域的不同,會影響其學習風格和學習方式,所以必須設計多元的教學活動,來滿足每個人的學習需求。以下針對Rose和 Meyer(2002)所提出的大腦學習交互網絡來做詳細的說明: 1.辨識系統(recognition systems)是指能分辨感覺器官所接收的刺激,並做出適當反應的系統。將此理論應用在教育上,即教師必須準備不同的教材教法讓每位學生可以依自己的學習興趣和能力來做選擇。

2.策略系統(strategic systems)是指個體接收資訊後,如何計畫、組織、監控和執行資訊的能力。這種能力在學習上扮演著極關鍵的角色,所以教師必須依照學生不同的學習能力設計合適的支持系統來幫助學生學習。如:學生的記憶能力很差,教師可使用關鍵字法或字勾法來輔助學生學習。3.情意系統(affective systems)是指個體會依照自己的情緒和動機,來決定何者為重要、應優先完成的事務,並應採取何種行動完成系統。此系統會受個體的主觀意識所影響。學習若在此發生問題,會導致習得無助,從而影響學習信心和意願。例如:對學習沒有自信的學生,教師就可以設計符合學生能力的課程,並運用其優勢管道來學習,以此來提升學習動機和自信心。(二)Vygotsky的近側發展區

近側發展區(Zone of Proximal Development:ZPD)是介於兒童自己所能達到的水平與經他人協助後可能達到的水平,兩水平間的距離,即為該兒童的近側發展區。因此,若給予一個兒童無法自己單獨完成的任務,在根據兒童的近側發展區,提供所需的鷹架輔助,將能更有效地幫助兒童發展內在潛能。相反的,太少的鷹架輔助或太艱難的任務,會使學生沒有意願參與活動或產生學習的挫敗感。因此,清楚了解學生的特質和能力,提供適合的鷹架教學和溫馨卻具有挑戰性的學習環境,才符合針對每位學生能力作教學支援的目的。

四、全方位課程設計的理念

Orkwis & Mclane(1998)提及「不論是身心障礙或學習障礙者,每個學生都需要接受有意義且能發揮其長才的課程」,也就是說,全方位課程設計是以滿足每個學生的學習需求為目標,讓所有學習者均能透過合適的學習管道去學習(Rose & Meyer,2002)。除此之外,全方位課程設計也強調教學、學習和評量兼顧。

另外,全方位課程設計強調:

一、課程是適合所有學生的;

二、課程內容、教學過程和結果的評量必須考慮學生的個別化;也就是說,全方位課程設計強調設計所有學生都可使用的課程。其課程設計,依Rose & Meyer(2002)的說明,有三項重要課程設計的原則,茲說明如下:(一)提供多元表徵的學習路徑:

包括兩種不同的意義,ㄧ是指用各種不同的方式來呈現學科教材,讓學習者能透過多感官來學習;其二是指用不同複雜度的教材來呈現,讓學生自由選擇適合自己能力的教材,使學習更有效率。(二)提供多元表達的反應方式: 是指讓學生可以依自己的能力、興趣來選擇評量的方式,如:學生可以用檔案呈現、音樂創作等方式來表達自己的想法(Rose & Meyer,2002)(三)提供多元參與的動機誘因

是指課程內容要有彈性,使學生可以依照自己的喜好來決定自己的學習內容、學習時間和學習速度。以此方式來提升學生學生學習參與的意願,同時可以提升學生的自信心和安全感。

而Orkwis和Mclane(1998)更將上述原則轉化成五項全方位課程設計的具體步驟:

(一)將教科書內容以數位化方式呈現(二)將所有錄音內容輔以文字說明(三)將教材中的圖片輔以價值性的敘述(四)將影帶內容提供有教育價值的說明(五)將課程的內容和活動提供認知支持

全方位設計的創意即在強調為不同需求的人來設想,而教育相關的學者即將此想法發展到教育上,希望能針對特殊學生的學習能力、障礙需求等來做考量,發展一套教材是所有的學習者皆能參與的,達到「學習無障礙的」目的。

五、結論

由於融合教育的興起,越來越多的特殊生在普通班中就讀,因此,兼顧特殊生與普通生的課程設計對普通班教師將會是一項挑戰。而全方位課程設計正好可以提供教師課程設計的依據,讓學生有多元且彈性的學習內容與學習環境,達到學習無障礙的目的。

而目前的研究大都顯示全方位課程設計可以提升學生的學習成效,並改善學生專注力不足的問題,增進學生對教材的學習興趣和動機。因此,建議在教導特殊生時,考慮學生的獨特性,以彈性、多元的方式呈現上課教材,讓學生更容易了解學習內容,提高學習的效果。

六、參考文獻

教育部(2006)。特殊教育法。臺北:教育部。盧臺華(2003)。全方位課程設計談普通教育課程在特殊教育上之應用–以九年一貫課程為例。2003特殊教育學術研討會會議手冊,29-36頁。臺灣師大特殊教育系。

Blamires, M.(1999).Universal design for learning: Re-establishing differentiation

as part of the inclusion agenda.Support for Learning, 14(4), 158-163.Burgstahler,S.(2001).Universal design of instruction.(ERIC Document Reproduction Service No.ED 468709).Dolan , R.P., Hall , T.E., Banerjee, M.,Chun, E., & Strangman, N.(2005).Applying

principles of universal designto test delivery: The effect ofcomputer-based Read-aloud

on testperformance of high school studentswith learning disabilities.TheJournal of Technology, Learning,and Assessment, 3(7), 1-32.Eagleton,M.B.,Guinee,K., & Langlais,k.(2006).Teaching internet literacy strategies:The hero inquiry project.IN Rose,D,H.,& Meyer,A.(Eds.),A practical reader in universal design for learning(pp.149-161).Orkwis,R., & Mclane,K.(1998).A curriculum every student can use:design principle for student access.Reston,VA:Council for Exceptional Chindren.(ERIC Document Reproduction Service No,ED 423654).Pisha, B., & Coyne, P.(2001).Smart from the smart: The promise of universal design for

learning.Remedial and Special Education, 22(4), 197-203.Rose, D.H., & Meyer, A.(2002).Teaching every student in the digital age:Universal design for learning.Alexandria, VA: Association for Supervision and Curriculum Development.Rose,D.H,.Meyer,A., & Hitchcock,C.(Eds).(2006).The univerasally designed classroom:accessible curriculum and digital technologies.Camgridge,MA:Harvard Education Press.Spooner, F., Baker, J.N., Harris, A.A.,Ahlgrim-Delzell, L., & Browder, D.M.(2007).Effects

of training in universal design for learning on lesson plan development.Remedial and Special Education, 28(2), 108-116.Twyman,T., Tindal,G.(2006).Using a computer-adapted,conceptually based history text to increase comprehension and problem-soving skills of students with disabilities.Journal of Special Education Technology,21(2),5-16.姓名:賴暄頤

服務機構:桃園縣中壢市自立國小 職稱:特教班教師 郵政編碼320 聯絡電話:0932150671 通訊地址:桃園縣中壢市龍崗路3段412巷3號

第二篇:JAVA課程設計之簡單聊天室

課程設計報告

課程名稱 課程代碼 題

目 年級/專業/班 學生姓名 學

號 指導老師 開題時間 完成時間 Java程序設計

簡單聊天室

孟青 09308910203

I

: : : : : : : : :

摘要..............................................................................................................................................................I 1 引言...........................................................................................................................................................1 2 設計任務與目的.......................................................................................................................................1 3 需求分析...................................................................................................................................................1 3.1 系統用例圖............................................................................................................................1 3.2 主要用例分析........................................................................................................................2 4 系統設計.................................................................................................................................................3 4.1 總體設計........................................................................................................................................3 4.1.1 系統類圖.............................................................................................................................3 4.1.2 主要時序圖.........................................................................................................................6 4.2 詳細設計........................................................................................................................................8 4.2.1 ChatServer類......................................................................................................................9 4.2.2 ServerListen類..................................................................................................................10 4.2.3 ServerReceive類...............................................................................................................10 4.2.4 PortConf類.......................................................................................................................11 4.2.5 Help類..............................................................................................................................11 4.2.6 UserLinkList類.................................................................................................................11 4.2.7 Node類.............................................................................................................................12 4.2.8 ChatClient類.....................................................................................................................13 4.2.9 ConnectConf類.................................................................................................................15 4.2.10 UserConf類....................................................................................................................15 4.2.11 Help類............................................................................................................................16 4.2.12 ClientReceive類.............................................................................................................16 5 系統實現.................................................................................................................................................16 5.1 系統主要用例的實現..................................................................................................................16 5.1.1 聊天室服務端用例運行效果...........................................................................................17 5.1.2 聊天室客戶端用例運行效果...........................................................................................18 5.2 系統發布與運行..........................................................................................................................18 5.2.1 系統打包...........................................................................................................................18 5.2.2 系統發布與運行...............................................................................................................18 6 結束語.....................................................................................................................................................19 參考文獻.......................................................................................................................................................19 致謝...............................................................................................................................................................19 附錄A:系統源程序...................................................................................................................................20

1、ChatServer類..........................................................................................................................20

2、ServerListen類.......................................................................................................................31

3、ServerReceive類.....................................................................................................................32

4、UserLinkList類.......................................................................................................................36

5、Node類...................................................................................................................................39

I

6、PortConf類.............................................................................................................................40

7、Help類....................................................................................................................................42

8、ChatClient類...........................................................................................................................44

9、ClientReceive類.....................................................................................................................56

10、ConnectConf類.....................................................................................................................58

11、UserConf類...........................................................................................................................61

12、Help類..................................................................................................................................63 附錄B:編碼規范.......................................................................................................................................66

II

摘要

本課程設計我們通過聊天室的代碼實現,體會到將理論知識與具體實現相結合,鞏固Java相關方法。聊天室共分為服務器端和客戶端兩部分,服務器端程序主要負責偵聽客戶端發來的消息,客戶端需登陸到服務器才可以實現正常的聊天功能。本聊天系統以聊天交流為主,為廣大用戶提供一個借助網絡進行人際交往的平臺,也是網絡與現實最貼近的實用型網站。

關鍵詞:(3-5個,每個之間用分號隔開)聊天室;多線程;C/S模式

Abstract

The course design our chat room through the code, understand the theoretical knowledge and practical realization of the combination, the consolidation of java-related methods.Chat client and the server is divided into two parts, the client, server-side program is mainly responsible for listening client sent the news to be landing the client to the server will be realized only if the normal chat.The chat system to exchange-based chat, in order to provide customers with a network platform for interpersonal communication, but also network with the reality of the practical is the closest site.Key words: Chat rooms, multi-threaded, C / S mode I

簡單聊天室 引言

隨著互聯網逐步普及,人們的生活和工作也越來越離不開信息網絡的支持,而聊天室是人們最常見,最直接的網上交流的方式。本聊天系統以聊天交流為主,為廣大用戶提供一個借助網絡進行人際交往的平臺,也是網絡與現實最貼近的實用型網站。本文所介紹的網絡聊天系統是基于開放的JAVA應用程序開發設計的,其主要特性是能動態、實時的完成信息的傳遞,且具有高效的交互性,更有效的處理客戶請求,且具有脫離數據庫技術方法,易于維護和更新的特點。設計任務與目的

本聊天室程序基于C/S模式,聊天室共分為服務器端和客戶端兩部分,服務器端程序主要負責偵聽客戶端發來的消息,客戶端需登陸到服務器才可以實現正常的聊天功能。

通過本項目的設計實踐,力求熟練掌握GUI程序設計、多線程技術、基于TCP的Socket通信編程。需求分析

本系統所要實現的主要功能是為廣大用戶提供一個借助網絡進行人際交往的平臺。因為服務端采用多線程,所以性能有很大提升。因為服務端和客戶端之間采用TCP協議進行網絡通信,建立的是可靠的、端到端的網絡連接,所以可靠性和安全性都很好。

3.1 系統用例圖

圖3-1 系統用例圖

3.2 主要用例分析 服務器端的主要功能如下:

1,在特定端口上進行偵聽,等待客戶端連接

2,用戶可以配置服務端的偵聽端口,默認端口為8888.3,向已經連接到服務端的用戶發送系統消息。4,統計在線人數

5,當停止服務時,斷開所有的用戶連接。客戶端的主要功能如下:

1,連接到已經開啟的聊天服務的服務端。

2,用戶可以配置要連接服務器端的IP地址和端口號。3,用戶可以配置連接后顯示的用戶名。

4,當服務器端開啟的時候,用戶可以隨時登錄和注銷。5,用戶可以向所有人或者某一個人發送消息。

系統設計 4.1 總體設計

4.1.1 系統類圖

圖4-1-1 服務端系統類圖

圖4-1-2 客戶端系統類圖

4.1.2 主要時序圖

圖4-2-1 服務端主要時序類圖

圖4-2-2 客戶端主要時序類圖

4.2 詳細設計

聊天室服務器端的設計

聊天室服務端主要包括7個類,放在server包中:

4.2.1 ChatServer類

圖4-3 ChatServer類圖

ChatServer.java 包含名為ChatServer的public類,其主要功能為定義服務器端的界面,添加時間

監聽與時間處理。調用ServerListen類來實現服務端用戶上線與下線的監聽,調用ServerListen來實現服務器端的消息收發。

4.2.2 ServerListen類

圖4-4 ServerListen類圖

ServerListen.java 該類實現服務器用戶上線與下線的監聽。該類對用戶上線下線的監聽是通過調用用戶鏈表類(UserLinkList)來實現的。當用戶上線與下線情況發生變化時,該類會對主類的界面進行相應的修改。

4.2.3 ServerReceive類

圖4-5 ServerReceive類圖

ServerReceive.java 該類是實現服務器消息收發的類,該類分別定義了向某用戶及所有人發送消息的方法,發送的消息會顯示在主界面類的街面上。

4.2.4 PortConf類

圖4-6 PortConf類圖

PortConf.java

該類繼承自Jdialog,是用戶對服務器端監聽端口進行修改配置的類。

4.2.5 Help類

圖4-7 Help類圖

Help.java

服務端程序幫助類。

4.2.6 UserLinkList類

圖4-8 UserLinkList類圖

UserLinkList.java

用戶鏈表節點的具體實現類。該類通過構造函數構造用戶鏈表,定義了添加用戶、刪除用戶、返回用戶數、根據用戶名查找用戶、根據索引查找用戶這5個方法。

4.2.7 Node類

圖4-9 Node類圖

Node.java 用戶鏈表的節點類,定義了鏈表中的用戶。該類與前面所講的鏈表節點Node類的功能相當。聊天室客戶端設計

聊天室客戶端主要包括5個類,放在client包中:

4.2.8 ChatClient類

圖4-10 ChatClient類圖

ChatClient.java 包含名為ChatClient的public類,其主要功能為定義客戶端的界面,添加時間監聽與事件處理。該類定義了Connect()與DisConnect()方法實現與客戶端的連接與斷開連接。當登陸到指定的服務器時,調用ClientReceive類實現消息收發,同時該類還定義了SendMessaga()方法來其他用戶發送帶有表情的消息或悄悄話。

4.2.9 ConnectConf類

圖4-11 ConnectConf類圖

ConnectConf.java 該類繼承自Jdialog,是用戶對所有要連接的服務器IP及監聽端口進行修改配置的類。

4.2.10 UserConf類

圖4-12 UserConf類圖

UserConf.java

該類繼承自Jdialog,是用戶對鏈接到服務器時所顯示的用戶名進行修改配置的類。

4.2.11 Help類

圖4-13 Help類圖

Help.java 客戶端程序的幫助類。

4.2.12 ClientReceive類

圖4-14 ClientReceive類圖

ClientReceive.java 該類是實現服務器端與客戶端消息收發的類。系統實現

5.1 系統主要用例的實現

5.1.1 聊天室服務端用例運行效果

圖5-1 聊天室服務端用例運行效果圖

5.1.2 聊天室客戶端用例運行效果

圖5-2 聊天室客戶端用例運行效果圖

5.2 系統發布與運行

5.2.1 系統打包

使用MyEclipse自帶的打包工具分別將server包和client包中的.class文件打成兩個Jar包:ChatServer.jar和CharClient.jar。

5.2.2 系統發布與運行

將server包和client包中的.class文件打成兩個Jar包,就可以發布系統了。直接分別雙擊兩個Jar包(ChatServer.jar和CharClient.jar),就可以運行服務端和客戶端了。

結束語

Java面向對象程序設計是一門應用廣泛并且實用性極強的高級程序設計語言。通過本次課程設計,我們對面向對象的基本思想有了進一步的理解,對項目的各個階段的任務也有了一定的了解。設計開始階段必須明確設計的目的與需求分析,總體設計要全面分析聊天室系統的架構。通過這次設計,使我們認識到體系的架構是最重要的,只有準確的系統設計、很好的定義各個模塊及模塊之間的關系,才能在編碼階段更輕松的的實現。

通過這次課程設計,對我們的邏輯思維能力是一個很大的鍛煉,它不僅加強了我們的系統思考問題的能力,而且還改變了我們以前不好的編程習慣,雖然花費了不少的時間,但是我們學到了豐富的知識。

另外,此次課程設計也提高了我們的團對合作精神,讓我們明白不是不能一個人能單獨完成,而是要集思廣益,結合更多的人的創意思維。讓我們大家深刻的體會到理論與實際相結合的重要性與微妙之處。對于不同的想法我們都會集中討論并對好的意見加以借鑒,在這個討論的過程中,還更正了不少我們各自自身對于某個知識點的誤區。

這次程序設計也是一個毅力的考驗過程。有時候往往只是一個小小的錯誤,卻要花出幾小時甚至是一兩天的時間才可能發現它。所以在這個過程不能過于急躁,要很有耐心將程序反復調試,參考文獻

[1] 張廣彬,孟紅蕊,張永寶.Java課程設計案例精編[M].北京:清華大學出版社,2007,1.[2] 黃曉東.Java課程設計案例精編[M].北京:中國水利水電出版社,2004,5.[3] 求是科技.Java信息管理系統開發實例導航[M].北京:人民郵電出版社,2005,4.[4] 求是科技.Java數據庫系統開發實例導航[M].北京:人民郵電出版社,2004,9.[5]廖衛東Java程序設計實用指南[M].北京:機械工業出版社,2002.1[3] [6]李衛華,傅曉東.Java語言基礎及其應用[M]北京:中國水利水電出版社,1996[5]

致謝

本次課程由上海杰普公司三為指導老師以及我們任課老師郭老師精心輔導,讓我們大家深刻的體會到理論與實際相結合的重要性與微妙之處。使我們對java有了更深刻的認識,產生濃厚的學習興趣。我們由衷對他們表示感謝。

附錄A:系統源程序

1、ChatServer類

功能:為定義服務器端的界面,添加時間監聽與時間處理。調用ServerListen類來實現服務端用戶上線與下線的監聽,調用ServerListen來實現服務器端的消息收發。代碼:

package server;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;/* * 聊天服務端的主框架類 */ public class ChatServer extends JFrame implements ActionListener{

/** * */ private static final long serialVersionUID = 1L;

public static int port = 8888;//服務端的偵聽端口

ServerSocket serverSocket;//服務端Socket JComboBox combobox;//選擇發送消息的接受者

JTextArea messageShow;//服務端的信息顯示

JScrollPane messageScrollPane;//信息顯示的滾動條

JTextField showStatus;//顯示用戶連接狀態

JLabel sendToLabel,messageLabel;JTextField sysMessage;//服務端消息的發送

JButton sysMessageButton;//服務端消息的發送按鈕

UserLinkList userLinkList;//用戶鏈表

//建立菜單欄

JMenuBar jMenuBar = new JMenuBar();//建立菜單組

JMenu serviceMenu = new JMenu(“服務(V)”);//建立菜單項

JMenuItem portItem = new JMenuItem(“端口設置(P)”);JMenuItem startItem = new JMenuItem(“啟動服務(S)”);

JMenuItem stopItem=new JMenuItem(“停止服務(T)”);JMenuItem exitItem=new JMenuItem(“退出(X)”);

JMenu helpMenu=new JMenu(“幫助(H)”);JMenuItem helpItem=new JMenuItem(“幫助(H)”);//建立工具欄

JToolBar toolBar = new JToolBar();//建立工具欄中的按鈕組件

JButton portSet;//啟動服務端偵聽 JButton startServer;//啟動服務端偵聽 JButton stopServer;//關閉服務端偵聽 JButton exitButton;//退出按鈕

//框架的大小

Dimension faceSize = new Dimension(400, 600);

ServerListen listenThread;JPanel downPanel;GridBagLayout girdBag;GridBagConstraints girdBagCon;/** * 服務端構造函數 */ public ChatServer(){ init();//初始化程序

//添加框架的關閉事件處理

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();//設置框架的大小

this.setSize(faceSize);//設置運行時窗口的位置

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((int)(screenSize.widthfaceSize.getHeight())/ 2);this.setResizable(false);this.setTitle(“聊天室服務端”);//設置標題

setVisible(true);

//為服務菜單欄設置熱鍵'V'

serviceMenu.setMnemonic('V');

//為端口設置快捷鍵為ctrl+p

portItem.setMnemonic('P');

portItem.setAccelerator(KeyEvent.VK_P,InputEvent.CTRL_MASK));

//為啟動服務快捷鍵為ctrl+s

startItem.setMnemonic('S');

startItem.setAccelerator(KeyEvent.VK_S,InputEvent.CTRL_MASK));

//為端口設置快捷鍵為ctrl+T

stopItem.setMnemonic('T');

stopItem.setAccelerator(KeyEvent.VK_T,InputEvent.CTRL_MASK));

//為退出設置快捷鍵為ctrl+x

exitItem.setMnemonic('X');

exitItem.setAccelerator(KeyEvent.VK_X,InputEvent.CTRL_MASK));

//為幫助菜單欄設置熱鍵'H'

helpMenu.setMnemonic('H');

//為幫助設置快捷鍵為ctrl+p

helpItem.setMnemonic('H');

helpItem.setAccelerator(KeyEvent.VK_H,InputEvent.CTRL_MASK));

}

/** * 程序初始化函數

*/ public void init(){

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

(KeyStroke.getKeyStroke

(KeyStroke.getKeyStroke

(KeyStroke.getKeyStroke

(KeyStroke.getKeyStroke

(KeyStroke.getKeyStroke

//添加菜單欄

serviceMenu.add(portItem);serviceMenu.add(startItem);serviceMenu.add(stopItem);serviceMenu.add(exitItem);jMenuBar.add(serviceMenu);helpMenu.add(helpItem);jMenuBar.add(helpMenu);setJMenuBar(jMenuBar);//初始化按鈕

portSet = new JButton(“端口設置”);startServer = new JButton(“啟動服務”);stopServer = new JButton(“停止服務”);exitButton = new JButton(“退出”);//將按鈕添加到工具欄 toolBar.add(portSet);toolBar.addSeparator();//添加分隔欄 toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();//添加分隔欄 toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);//初始時,令停止服務按鈕不可用 stopServer.setEnabled(false);stopItem.setEnabled(false);//為菜單欄添加事件監聽

portItem.addActionListener(this);startItem.addActionListener(this);stopItem.addActionListener(this);exitItem.addActionListener(this);helpItem.addActionListener(this);

//添加按鈕的事件偵聽

portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionListener(this);exitButton.addActionListener(this);

combobox = new JComboBox();combobox.insertItemAt(“所有人”,0);combobox.setSelectedIndex(0);23

messageShow = new JTextArea();messageShow.setEditable(false);//添加滾動條

messageScrollPane = new JScrollPane(messageShow, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400));messageScrollPane.revalidate();

showStatus = new JTextField(35);showStatus.setEditable(false);

sysMessage = new JTextField(24);sysMessage.setEnabled(false);sysMessageButton = new JButton();sysMessageButton.setText(“發送”);//添加系統消息的事件偵聽

sysMessage.addActionListener(this);sysMessageButton.addActionListener(this);sendToLabel = new JLabel(“發送至:”);messageLabel = new JLabel(“發送消息:”);downPanel = new JPanel();girdBag = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel(“ ”);girdBag.setConstraints(none,girdBagCon);downPanel.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);girdBagCon.ipadx = 5;24

girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon);downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(combobox,girdBagCon);downPanel.add(combobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon);downPanel.add(messageLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessage,girdBagCon);downPanel.add(sysMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 2;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessageButton,girdBagCon);downPanel.add(sysMessageButton);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 4;girdBagCon.gridwidth = 3;girdBag.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);

//關閉程序時的操作

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

stopService();25

}

System.exit(0);

} });/** * 事件處理 */ public void actionPerformed(ActionEvent e){ Object obj = e.getSource();if(obj == startServer || obj == startItem){ //啟動服務端

startService();} else if(obj == stopServer || obj == stopItem){ //停止服務端

int j=JOptionPane.showConfirmDialog(this,“真的停止服務嗎?”,“停止服務”,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);

if(j == JOptionPane.YES_OPTION){

stopService();

} } else if(obj == portSet || obj == portItem){ //端口設置

//調出端口設置的對話框

PortConf portConf = new PortConf(this);

portConf.setVisible(true);} else if(obj == exitButton || obj == exitItem){ //退出程序

int j=JOptionPane.showConfirmDialog(this,“真的要退出嗎?”,“退出”,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);

if(j == JOptionPane.YES_OPTION){

stopService();

System.exit(0);

} } else if(obj == helpItem){ //菜單欄中的幫助

//調出幫助對話框

Help helpDialog = new Help(this);

helpDialog.setVisible(true);} else if(obj == sysMessage || obj == sysMessageButton){ //發送系統消息

sendSystemMessage();} } /** * 啟動服務端 */ public void startService(){ try{

serverSocket = new ServerSocket(port,10);

messageShow.append(“服務端已經啟動,在”+port+“端口偵聽...n”);

startServer.setEnabled(false);

startItem.setEnabled(false);

portSet.setEnabled(false);

portItem.setEnabled(false);

stopServer.setEnabled(true);

stopItem.setEnabled(true);

sysMessage.setEnabled(true);} catch(Exception e){

//System.out.println(e);} userLinkList = new UserLinkList();

listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();} /** * 關閉服務端 */ public void stopService(){ try{

//向所有人發送服務器關閉的消息

sendStopToAll();

listenThread.isStop = true;

serverSocket.close();

int count = userLinkList.getCount();

int i =0;27

while(i < count){ Node node = userLinkList.findUser(i);

node.input.close();node.output.close();node.socket.close();

i ++;} stopServer.setEnabled(false);stopItem.setEnabled(false);startServer.setEnabled(true);startItem.setEnabled(true);portSet.setEnabled(true);portItem.setEnabled(true);sysMessage.setEnabled(false);messageShow.append(“服務端已經關閉n”);

combobox.removeAllItems();

combobox.addItem(“所有人”);} catch(Exception e){

//System.out.println(e);} } /** * 向所有人發送服務器關閉的消息 */ public void sendStopToAll(){ int count = userLinkList.getCount();

int i = 0;while(i < count){

Node node = userLinkList.findUser(i);

if(node == null){

i ++;

continue;

}

try{

node.output.writeObject(“服務關閉”);28

node.output.flush();

}

catch(Exception e){

//System.out.println(“$$$”+e);

}

i++;} } /** * 向所有人發送消息 */ public void sendMsgToAll(String msg){ int count = userLinkList.getCount();//用戶總數

int i = 0;while(i < count){

Node node = userLinkList.findUser(i);

if(node == null){

i ++;

continue;

}

try{

node.output.writeObject(“系統信息”);

node.output.flush();

node.output.writeObject(msg);

node.output.flush();

}

catch(Exception e){

//System.out.println(“@@@”+e);

}

i++;} sysMessage.setText(“");} /** * 向客戶端用戶發送消息 */ public void sendSystemMessage(){ 29

} String toSomebody = combobox.getSelectedItem().toString();String message = sysMessage.getText()+ ”n“;

messageShow.append(message);

//向所有人發送消息

if(toSomebody.equalsIgnoreCase(”所有人“)){ sendMsgToAll(message);} else{ //向某個用戶發送消息

Node node = userLinkList.findUser(toSomebody);

try{

node.output.writeObject(”系統信息“);

node.output.flush();

node.output.writeObject(message);

node.output.flush();} catch(Exception e){

//System.out.println(”!!“+e);} sysMessage.setText(”“);//將發送消息欄的消息清空 } public static void main(String[] args){ try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch(ClassNotFoundException e){

// TODO Auto-generated catch block

e.printStackTrace();} catch(InstantiationException e){

// TODO Auto-generated catch block

e.printStackTrace();} catch(IllegalAccessException e){

// TODO Auto-generated catch block

e.printStackTrace();} catch(UnsupportedLookAndFeelException e){

// TODO Auto-generated catch block

e.printStackTrace();} new ChatServer();} 30

}

2、ServerListen類

功能:實現服務器用戶上線與下線的監聽。該類對用戶上線下線的監聽是通過調用用戶鏈表類(UserLinkList)來實現的。當用戶上線與下線情況發生變化時,該類會對主類的界面進行相應的修改。

代碼:

package server;

import javax.swing.*;import java.io.*;import java.net.*;/* * 服務端的偵聽類 */ public class ServerListen extends Thread { ServerSocket server;

JComboBox combobox;JTextArea textarea;JTextField textfield;UserLinkList userLinkList;//用戶鏈表

Node client;ServerReceive recvThread;

public boolean isStop;

/* * 聊天服務端的用戶上線于下線偵聽類

*/ public ServerListen(ServerSocket server,JComboBox combobox,JTextArea textarea,JTextField textfield,UserLinkList userLinkList){

this.server = server;

this.combobox = combobox;

this.textarea = textarea;

this.textfield = textfield;

this.userLinkList = userLinkList;

isStop = false;}

public void run(){

while(!isStop &&!server.isClosed()){

try{

client = new Node();

client.socket = server.accept();

client.output = new ObjectOutputStream(client.socket.getOutputStream());

client.output.flush();

client.input = new ObjectInputStream(client.socket.getInputStream());

client.username =(String)client.input.readObject();

//顯示提示信息

combobox.addItem(client.username);

userLinkList.addUser(client);

textarea.append(”用戶 “ + client.username + ” 上線“ + ”n“);

textfield.setText(”在線用戶“ + userLinkList.getCount()+ ”人n“);

recvThread = new ServerReceive(textarea,textfield,combobox,client,userLinkList);

recvThread.start();

}

catch(Exception e){

}

} } }

3、ServerReceive類

功能:實現服務器消息收發的類,該類分別定義了向某用戶及所有人發送消息的方法,發送的消息會顯示在主界面類的街面上。

代碼:

package server;

import javax.swing.*;/* * 服務器收發消息的類 */ public class ServerReceive extends Thread { JTextArea textarea;JTextField textfield;JComboBox combobox;

Node client;UserLinkList userLinkList;//用戶鏈表

public boolean isStop;

public ServerReceive(JTextArea textarea,JTextField textfield, JComboBox combobox,Node client,UserLinkList userLinkList){ this.textarea = textarea;this.textfield = textfield;this.client = client;this.userLinkList = userLinkList;this.combobox = combobox;

isStop = false;}

public void run(){ //向所有人發送用戶的列表

sendUserList();

while(!isStop &&!client.socket.isClosed()){

try{

String type =(String)client.input.readObject();

if(type.equalsIgnoreCase(”聊天信息“)){

String toSomebody =(String)client.input.readObject();

String status =(String)client.input.readObject();

String action =(String)client.input.readObject();

String message =(String)client.input.readObject();

String msg = client.username

+” “+ action

+ ”對 “

+ toSomebody

+ ” 說 : “

+ message

+ ”n“;

if(status.equalsIgnoreCase(”悄悄話“)){

msg = ” [悄悄話] “ + msg;

}

textarea.append(msg);

if(toSomebody.equalsIgnoreCase(”所有人“)){ 33

sendToAll(msg);//向所有人發送消息

} else{

try{

client.output.writeObject(”聊天信息“);

client.output.flush();

client.output.writeObject(msg);

client.output.flush();

}

catch(Exception e){

//System.out.println(”###“+e);

}

Node node = userLinkList.findUser(toSomebody);

if(node!= null){

node.output.writeObject(”聊天信息“);

node.output.flush();

node.output.writeObject(msg);

node.output.flush();

} } } else if(type.equalsIgnoreCase(”用戶下線“)){ Node node = userLinkList.findUser(client.username);userLinkList.delUser(node);

String msg = ”用戶 “ + client.username + ” 下線n“;int count = userLinkList.getCount();

combobox.removeAllItems();combobox.addItem(”所有人“);int i = 0;while(i < count){ node = userLinkList.findUser(i);if(node == null){

i ++;

continue;} combobox.addItem(node.username);i++;} combobox.setSelectedIndex(0);34

textarea.append(msg);

textfield.setText(”在線用戶“ + userLinkList.getCount()+ ”人n“);

sendToAll(msg);//向所有人發送消息

sendUserList();//重新發送用戶列表,刷新

break;

}

}

catch(Exception e){

//System.out.println(e);

} } } /* * 向所有人發送消息 */ public void sendToAll(String msg){ int count = userLinkList.getCount();

int i = 0;while(i < count){

Node node = userLinkList.findUser(i);

if(node == null){

i ++;

continue;

}

try{

node.output.writeObject(”聊天信息“);

node.output.flush();

node.output.writeObject(msg);

node.output.flush();

}

catch(Exception e){

//System.out.println(e);

}

i++;} }

} /* * 向所有人發送用戶的列表 */ public void sendUserList(){ String userlist = ”“;int count = userLinkList.getCount();

} int i = 0;while(i < count){ Node node = userLinkList.findUser(i);if(node == null){

i ++;

continue;}

userlist += node.username;userlist += 'n';i++;}

i = 0;while(i < count){ Node node = userLinkList.findUser(i);if(node == null){

i ++;

continue;}

try{

node.output.writeObject(”用戶列表“);

node.output.flush();

node.output.writeObject(userlist);

node.output.flush();} catch(Exception e){

//System.out.println(e);} i++;}

4、UserLinkList類

功能:用戶鏈表節點的具體實現類。該類通過構造函數構造用戶鏈表,定義了添加

用戶、刪除用戶、返回用戶數、根據用戶名查找用戶、根據索引查找用戶這5個方法。

代碼:

package server;/** * 用戶鏈表 */ public class UserLinkList { Node root;Node pointer;int count;

/** * 構造用戶鏈表

*/ public UserLinkList(){

root = new Node();

root.next = null;

pointer = null;

count = 0;}

/** * 添加用戶

*/ public void addUser(Node n){

pointer = root;

while(pointer.next!= null){

pointer = pointer.next;

}

pointer.next = n;

n.next = null;

count++;

}

/** * 刪除用戶

*/ public void delUser(Node n){

pointer = root;

while(pointer.next!= null){

if(pointer.next == n){

pointer.next = n.next;

count--;

break;

}

pointer = pointer.next;} } /** * 返回用戶數 */ public int getCount(){ return count;} /** * 根據用戶名查找用戶 */ public Node findUser(String username){ if(count == 0)return null;

pointer = root;

while(pointer.next!= null){

pointer = pointer.next;

if(pointer.username.equalsIgnoreCase(username)){

return pointer;

} }

return null;} /** * 根據索引查找用戶 */ public Node findUser(int index){ if(count == 0){

return null;38

}

} }

if(index < 0){ return null;}

pointer = root;

int i = 0;while(i < index + 1){ if(pointer.next!= null){

pointer = pointer.next;} else{

return null;}

i++;}

return pointer;

5、Node類

功能:用戶鏈表的節點類,定義了鏈表中的用戶。該類與前面所講的鏈表節點Node類的功能相當。

代碼:

package server;

import java.net.*;import java.io.*;/** * 用戶鏈表的結點類 */ public class Node { String username = null;Socket socket = null;ObjectOutputStream output = null;ObjectInputStream input = null;

Node next = null;39

}

6、PortConf類

功能:該類繼承自Jdialog,是用戶對服務器端監聽端口進行修改配置的類。代碼:

package server;

import java.awt.*;import javax.swing.*;import java.awt.event.*;/** * 生成端口設置對話框的類 */ public class PortConf extends JDialog { /** * */ private static final long serialVersionUID = 1L;JPanel panelPort = new JPanel();JButton save = new JButton();JButton cancel = new JButton();public static JLabel DLGINFO=new JLabel(” 默認端口號為:8888“);

JPanel panelSave = new JPanel();JLabel message = new JLabel();

public static JTextField portNumber;

public PortConf(JFrame frame){

super(frame, true);

try {

jbInit();

}

catch(Exception e){

e.printStackTrace();

}

//設置運行位置,使對話框居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((int)(screenSize.width600)/ 2 + 150);

this.setResizable(false);40

}

private void jbInit()throws Exception {

this.setSize(new Dimension(300, 120));

this.setTitle(”端口設置“);

message.setText(”請輸入偵聽的端口號:“);

portNumber = new JTextField(10);

portNumber.setText(”“+ChatServer.port);

save.setText(”保存“);

cancel.setText(”取消“);

panelPort.setLayout(new FlowLayout());

panelPort.add(message);

panelPort.add(portNumber);

panelSave.add(new Label(” “));

panelSave.add(save);

panelSave.add(cancel);

panelSave.add(new Label(” “));

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(panelPort, BorderLayout.NORTH);

contentPane.add(DLGINFO, BorderLayout.CENTER);

contentPane.add(panelSave, BorderLayout.SOUTH);

//保存按鈕的事件處理

save.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent a){

int savePort;

try{

savePort=Integer.parseInt(PortConf.portNumber.getText());

if(savePort<1 || savePort>65535){

PortConf.DLGINFO.setText(” 偵聽端口必須是0-65535之間的整數!“);

PortConf.portNumber.setText(”“);

return;

}

ChatServer.port = savePort;

dispose();

} 41

catch(NumberFormatException e){

PortConf.DLGINFO.setText(” 錯誤的端口號,端口號請填寫整數!“);

PortConf.portNumber.setText(”“);

return;

}

}

});

//關閉對話框時的操作

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

DLGINFO.setText(”

為:8888“);

}

});

//取消按鈕的事件處理

cancel.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

DLGINFO.setText(”

為:8888“);

dispose();

}

});} }

7、Help類

功能:服務端程序幫助類。代碼:

package server;

import java.awt.*;import javax.swing.*;import java.awt.event.*;/** 42

默認端口號默認端口號

* 生成設置對話框的類 */ public class Help extends JDialog {

/** * */ private static final long serialVersionUID = 1L;JPanel titlePanel = new JPanel();JPanel contentPanel = new JPanel();JPanel closePanel = new JPanel();

JButton close = new JButton();JLabel title = new JLabel(”聊天室服務端幫助“);JTextArea help = new JTextArea();

Color bg = new Color(255,255,255);

public Help(JFrame frame){

super(frame, true);

try {

jbInit();

}

catch(Exception e){

e.printStackTrace();

}

//設置運行位置,使對話框居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((int)(screenSize.width320)/ 2);

this.setResizable(false);}

private void jbInit()throws Exception {

this.setSize(new Dimension(400, 200));

this.setTitle(”幫助“);

titlePanel.setBackground(bg);;

contentPanel.setBackground(bg);

closePanel.setBackground(bg);

help.setText(”

1、設置服務端的偵聽端口(默認端口為8888)。n“+

2、點擊 啟動服務 按鈕便可在指定的端口啟動服務。n“+

3、選擇需要接受消息的用戶,在消息欄中寫入消息,之后便可發送消息。n“+ 43

}

} ”

4、信息狀態欄中顯示服務器當前的啟動與停止狀態、“+ ”用戶發送的消息和n 服務器端發送的系統消息。“);help.setEditable(false);titlePanel.add(new Label(” “));titlePanel.add(title);titlePanel.add(new Label(” “));contentPanel.add(help);closePanel.add(new Label(” “));closePanel.add(close);closePanel.add(new Label(” “));Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout());contentPane.add(titlePanel, BorderLayout.NORTH);contentPane.add(contentPanel, BorderLayout.CENTER);contentPane.add(closePanel, BorderLayout.SOUTH);close.setText(”關閉“);//事件處理

close.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

dispose();

} });

8、ChatClient類

功能:定義客戶端的界面,添加時間監聽與事件處理。該類定義了Connect()與DisConnect()方法實現與客戶端的連接與斷開連接。當登陸到指定的服務器時,調用ClientReceive類實現消息收發,同時該類還定義了SendMessaga()方法來其他用戶發送帶有表情的消息或悄悄話。

代碼:

package client;

import java.awt.*;import java.awt.event.*;import javax.swing.*;

import java.io.*;import java.net.*;/* * 聊天客戶端的主框架類 */ public class ChatClient extends JFrame implements ActionListener{

/** * */ private static final long serialVersionUID = 1L;String ip = ”127.0.0.1“;//連接到服務端的ip地址

int port = 8888;//連接到服務端的端口號

String userName = ”匆匆過客“;//用戶名

int type = 0;//0表示未連接,1表示已連接

JComboBox combobox;//選擇發送消息的接受者

JTextArea messageShow;//客戶端的信息顯示

JScrollPane messageScrollPane;//信息顯示的滾動條

JLabel express,sendToLabel,messageLabel;

JTextField clientMessage;//客戶端消息的發送

JCheckBox checkbox;//悄悄話

JComboBox actionlist;//表情選擇

JButton clientMessageButton;//發送消息

JTextField showStatus;//顯示用戶連接狀態

Socket socket;ObjectOutputStream output;//網絡套接字輸出流

ObjectInputStream input;//網絡套接字輸入流

ClientReceive recvThread;

//建立菜單欄

JMenuBar jMenuBar = new JMenuBar();//建立菜單組

JMenu operateMenu = new JMenu(”操作(O)“);//建立菜單項

JMenuItem loginItem = new JMenuItem(”用戶登錄(I)“);JMenuItem logoffItem = new JMenuItem(”用戶注銷(L)“);JMenuItem exitItem=new JMenuItem(”退出(X)“);

JMenu conMenu=new JMenu(”設置(C)“);JMenuItem userItem=new JMenuItem(”用戶設置(U)“);JMenuItem connectItem=new JMenuItem(”連接設置(C)“);

JMenu helpMenu=new JMenu(”幫助(H)“);JMenuItem helpItem=new JMenuItem(”幫助(H)“);//建立工具欄

JToolBar toolBar = new JToolBar();//建立工具欄中的按鈕組件

JButton loginButton;//用戶登錄 JButton logoffButton;//用戶注銷 JButton userButton;//用戶信息的設置 JButton connectButton;//連接設置 JButton exitButton;//退出按鈕

//框架的大小

Dimension faceSize = new Dimension(400, 600);JPanel downPanel;GridBagLayout girdBag;GridBagConstraints girdBagCon;

public ChatClient(){ init();//初始化程序

//添加框架的關閉事件處理

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();//設置框架的大小

this.setSize(faceSize);//設置運行時窗口的位置

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((int)(screenSize.widthfaceSize.getHeight())/ 2);this.setResizable(false);this.setTitle(”聊天室客戶端");//設置標題 setVisible(true);//為操作菜單欄設置熱鍵'V' operateMenu.setMnemonic('O');46

第三篇:課程設計之法蘭盤夾具設計

畢 業 設 計

設計題目 設計法蘭盤零件的加工工藝

及鉆7-Φ9孔的鉆床夾具

班 級 檢測121 設計人員 曾雄、張純、張子揚、朱雄波 指導老師 蔣帥

完成日期 2014 年 12 月 20 日

目 錄

設計任務書 …............................................................................1 畢業設計說明書正文…..............................................................2

一、序言..............................................1 1.1 夾具的現狀及生產對其提出新的要求..............1 1.2 現代夾具的發展方向............................2

二、零件的分析........................................4 2.1零件的作用.....................................4 2.2零件的工藝分析.................................4

三、工藝規程設計......................................5 3.1 確定毛坯的制造形式............................5 3.2 基面的選擇....................................5 3.3 制定工藝路線..................................6 3.4 機械加工余量,工序尺寸及毛坯尺寸的確定........9 3.5 確定切削用量及基本尺寸.......................10

四、夾具設計.........................................12 4.1問題的提出....................................12 4.2定位基準的選擇................................13 4.3切削力及夾緊力計算............................14 4.4定位誤差分析..................................15 4.5夾具設計及操作簡要說明........................16 總結.................................................19 致謝.................................................22 參考文獻.............................................23

摘 要

本次設計了一套法蘭盤的專用夾具設計。經過查閱資料,首先要對零件進行工藝分析,經過工藝分析,對工序進行對比,通過選定某一工序設計專用夾具,選擇定位基準、定位方法和定位元件,進行定位誤差分析。在文檔中第一部分,主要敘述了專用夾具設計基本要求和特點,對零件的工藝分析,完成了工藝方案的確定。第二部分,對夾具設計,對夾具設計計算。最后對主要零部件的設計和標準件的選擇,以及為裝配圖各尺寸提供依據。通過前面的設計方案畫出模具各零件圖和裝配圖。

本次設計闡述了專用夾具結構設計及工作過程。本夾具性能可靠,運行平穩,提高生產效率,降低勞動強度和生產成本。

關鍵字:夾具設計;基本要求;工藝分析;

一、序 言

夾具最早出現在1787年,至今經歷了三個發展階段。第一階段表現為夾具與人的結合。在工業發展初期。機械制造的精度較低,機械產品工件的制造質量主要依賴勞動者個人的經驗和手藝,而夾具僅僅作為加工工藝過程中的一種輔助工具;第二階段是隨著機床、汽車、飛機等制造業的發展,夾具的門類才逐步發展齊全。夾具的定位、夾緊、導向(或對刀)元件的結構也日趨完善,逐漸發展成為系統的主要工藝裝備之一;第三階段,即近代由于世界科學技術的進步及社會生產力的迅速提高,夾具在系統中占據相當重要的地位。這一階段的主要特征表現為夾具與機床的緊密結合。

1.1夾具的現狀及生產對其提出新的要求

現代生產要求企業制造的產品品種經常更新換代,以適應市場激烈競爭,企業中多品種生產的工件已占工件種類數的85%左右。然而目前,一般企業習慣與采用傳統的專用夾具,在一個具有大批量生產的能力工廠中約擁有13000~15000套專用夾具。另一方面,在多品種生產的企業中,約隔4年就要更新80%左右的專用夾具,而夾具的實際磨損量只有15%左右,特別最近年來柔性制造系統(FMS)、數控機床(NC),加工中心(MC)和成組加工(GT)等新技術被應用和推廣,使中小批生產的生產率逐步趨近于大批量生產的水平。

綜上所述,現代生產對夾具提出了如下新的要求: 1.能迅速方便地裝備新產品的投產以縮短生產準備周期 2.能裝夾一組相似性特征的工件 3.適用于精密加工的高精度的機床 4.適用于各種現代化制造技術的新型技術

5.采用液壓汞站等為動力源的高效夾緊裝置,進一步提高勞動生產率

1.2現代夾具的發展方向

現代夾具的發展方向表現為精密化、高效化、柔性化、標準化等四個方面: 1.精密化

隨著機械產品精度的日益提高,勢必也相應提高對其精度要求。精密化夾具的結構類型很多,例如用于精密分度的多齒盤,其分度可達正負0.1,用于精密車削的高精度三爪卡盤,其定心精度為5um,又如用于軸承套圈磨削的電磁無心夾具,工件的圓讀可達0.2~0.5um。2.高效化

高效化夾具主要用來減少工件加工的機動時的和輔助時的,以提高勞動生產率,減少工人勞動強度,常見的高效化夾具有:自動化夾具、告訴化夾具、具有夾緊動力模塊的夾具等。例如使用電動虎鉗裝夾工件,可使工件效率比普通虎鉗提高了5倍左右;而高速卡盤則可保證卡爪在轉速9000r/min的條件下能正常夾緊工件,使切削速度大幅度提高。3.柔性化

夾具的柔性化與機床的柔性化相似,它是通過調組合等方式,以適應工藝可變因素的能力。工藝的可變因素主要有:工序特征、生產批量、工件的形狀和尺寸等,具有柔性化特征的新型夾具種類主要有:組合夾具、通用可調夾具、成組夾具、模塊夾具、數控夾具等,在較長時間內,夾具的柔性化趨向將是夾具發展的主要方向。4.標準化

夾具的標準化與通用化是相互聯系的兩個方面,在制造典型夾具,結構的基礎上,首先進行夾具元件和部件的通用化,建立典型尺寸系列或變型,以減少功能用途相近的夾具元件和不見的形成:舍棄一些功能低劣的結構,通用化方法包括:夾具、部件、元件、毛呸和材料的通用化夾具的標準化階段是通用化的深入并為工作圖的審查創造了良好的條件。目前,我國已有夾具零件、部件的國家標準:GB2148~2249-80,GB2262~2269-80以及通用夾具標準,組合夾具標準等。夾具的標準化也是夾具柔性化高效化的基礎,作為發展趨勢,這類夾具的標準化,有利于夾具的專業化生產和有利于縮短生產準備周期,降低生產總成本。

二、零 件 的 分 析

2.1零件的作用

題目所給定的零件是法蘭盤,法蘭盤起聯接作用是車床上的重要零件。零件上精度要求較高的兩個平面用以裝配。

圖1

2.2零件的工藝分析

法蘭盤是一回轉體零件,有一組加工表面,這一組加工表面以Φ38,Φ50,Φ62為中心 ,包括:兩個左右端面,端面上面的7-Φ9和7-Φ15的階梯孔.和M12孔和斜孔Φ6孔, 以及退刀槽。

這組加工表面是以右端面為中心,其余加工面都與它有位置關系,可以先加工它的一個端面,再借助專用夾具以這個端面為定位基準加工另一端面,然后再加工其它加工表面.2.3工藝規程設計

2.1確定毛配的制造形式

零件材料為HT200,由于該零件是中批生產,而且零件輪廓尺寸不大,故采用金屬模鑄造,法蘭盤因毛坯比較簡單,采用鑄造毛坯時一般是成隊鑄造,再進行機械加工。這從提高生產率,保證加工精度上考慮也是應該的。

工藝路線方案

工序1 選擇鑄造毛坯 工序2 時效處理

工序3 夾工件左端面,Φ55*14外端圓,粗車右端面Φ87*42外圓端面,粗車右端面至72 工序4 夾工件右端面,Φ85*43外圓端面,粗車左端面外圓Φ52*13,粗車左端面至70 工序5 夾工件左外圓端面,加工內控,Φ35*22.5,粗車Φ48*47.5,粗車Φ60*38.5 工序6 夾工件左外圓端面,半精加工內孔Φ37*22.5,半精車Φ48*47.5半精車Φ61*38.5 工序7 夾工件左外圓端面,精加工內孔Φ38*22.5 精加工Φ50*47.5 精加工Φ62*38.5內孔

工序8 夾工件左外圓端面,倒Φ50*47.5處外圓角R=3,加工Φ62*38.5和Φ62*4兩處內槽Φ65*3 工序9 半精車右端面外圓Φ86,精車至Φ85,精車右端面至Φ69.5 工序10 夾工件右端面,倒內孔Φ38圓角,半精車外圓Φ50.5*12.5精車至Φ50*12.5,精車右端面至69 工序11 半精車,精車3*1退刀槽 工序12 精鉆7*Φ9內孔

工序13 在7*Φ9內孔基礎上锪孔7*Φ15 工序14 鉆M12螺紋孔 工序15 鉆Φ6斜孔

工序16 精銑工件表面達尺寸要求 工序17 去毛刺 工序18 檢驗 工序19 入庫

2.4機械加工余量、工序尺寸及毛坯尺寸的確定 “法蘭盤”零件材料為HT200,毛坯重量約為1.4kg,生產類型為中批生產,采用鑄造毛坯。

根據上述原始資料及加工工藝,分別確定各加工表面的機械加工余量,工序及毛坯尺寸如下:

“法蘭盤”零件材料為HT200,硬度190HBS,毛坯重量約為2.8KG,生產類型為中批生產,采用鑄造毛坯。2.2基面的選擇

基面選擇是工藝規程設計中的重要工作之一。基面選擇得正確與合理,可以使加工質量得到保證,生產率得以提高。否則,加工工藝過程中會問題百出,更有甚著,還會造成零件大批報廢,使生產無法正常進行。1)粗基準的選擇

選擇粗基準主要是選擇第一道機械加工工序的定位基準,以便為后續的工序提供精基準。選擇粗基準的出發點是:一要考慮如何分配各加工表面的余量:二要考慮怎樣保證不加工面與加工面間的尺寸及相互位置要求。這兩個要求常常是不能兼顧的,但對于一般的軸類零件來說,以外圓作為粗基準是完全合理的。對本零件而言,由于每個表面都要求加工,為保證各表面都有足夠的余量,應選加工余量最小的面為粗基準(這就是粗基準選擇原則里的余量足夠原則)現選取Φ45外圓柱面和端面作為粗基準。在車床上用帶有子口的三爪卡盤夾住工件,消除工件的六個自由度,達到完全定位。2)精基準的選擇

主要應該考慮基準重合的問題。當設計基準與工序基準不重合時,應該進行尺寸換算。2.3制定工藝路線

制定工藝路線的出發點,應當是使零件的幾何形狀,尺寸精度及位置精度等技術要求能得到合理的保證。在生產綱領一確定為中批生產的條件下,可以考慮采用通用性的機床配以專用工夾具,并盡量使工序集中來提高生產率。除此以外,還應當考慮經濟效果,以便使生產成本盡量下降。

三、夾具設計

為了提高勞動生產率,保證加工質量,降低勞動強度,需要設計專用夾具。經過與指導老師協商,本夾具將用于Z5125立鉆床,設計在第10工序—鉆4×φ9的孔的鉆床夾具。此道工序主要考慮的是如何提高勞動生產率,降低勞動強度。

4.1 問題的提出

本夾具主要用于鉆7-Φ9孔,精度要求不高,為此,只考慮如何提高生產效率上,精度則不予考慮。因為M12螺紋孔和Φ62K7中心孔有垂直度要求,因此我們要以已加工的Φ62K7孔為定位基準。采用蓋板式鉆模板加工,用固定套定位,另外用一擋銷,即可實現完全定位。

4.2 定位基準的選擇

擬定加工路線的第一步是選擇定位基準。定位基準的選擇必須合理,否則將直接影響所制定的零件加工工藝規程和最終加工出的零件質量。基準選擇不當往往會增加工序或使工藝路線不合理,或是使夾具設計更加困難甚至達不到零件的加工精度(特別是位置精度)要求。因此我們應該根據零件圖的技術要求,從保證零件的加工精度要求出發,合理選擇定位基準。此零件圖沒有較高的技術要求,也沒有較高的平行度和對稱度要求,所以我們應考慮如何提高勞動效率,降低勞動強度,提高加工精度。Φ62的孔已加工好,為了使定位誤差減小,選擇已加工好的Φ62孔和其端面作為定位基準,來設計本道工序的夾具,以兩銷和已加工好的Φ62孔及其端面作為定位夾具。為了提高加工效率,縮短輔助時間,決定用簡單的螺母作為夾緊機構。4.3切削力和夾緊力的計算

由于本道工序主要完成工藝孔的鉆孔加工,鉆削力。由《切削手冊》得: 鉆削力 F?26Df0.8HB0.6 式(5-2)

鉆削力矩 T?10D1.9f0.8HB0.6 式(5-3)

11式中:D?9mm HB?HBmax??HBmax?HBmin??187??187?149??174

f?0.20mm?r?1代入公式(5-2)和(5-3)得

F?26x9x0.200.8x1740.6?1863N

T?10x919x0.200.8x1740.6?47127N.m

本道工序加工工藝孔時,夾緊力方向與鉆削力方向相同。因此進行夾緊立計算無太大意義。只需定位夾緊部件的銷釘強度、剛度適當即能滿足加工要求。

4.4定位誤差分析

本工序選用的工件以圓孔在定位銷上定位,定位銷為水平放置,由于定位副間存在徑向間隙,因此必將引起徑向基準位移誤差。在重力作用下定位副只存在單邊間隙,即工件始終以孔壁與心軸上母線接觸,故此時的徑向基準位移誤差僅存在Z軸方向,且向下,見下圖。夾具的主要定位元件為浮動支撐板和定位銷。支撐板的定位表面與夾具體底面平行度誤差不超過0.05;定位銷選取標準件,夾具體上裝定位銷銷孔的軸線與夾具體底面的垂直度誤差不超過0.05。夾具的主要定位元件為長定位銷限制了4個自由度,另一端面限制1個自由度,繞軸線旋轉方向的自由度無須限制。因零件對形位公差及尺寸公差均要求不高,且各定位件均采用標準件,故定位誤差在此可忽略。

?Yz???TD?Td2?0.014?0.022?0.034?0.070

式中 ?——定位副間的最小配合間隙(mm);

TD——工件圓孔直徑公差(mm);

Td——定

(mm)。

定位銷水平放置時定位分析圖 圖2 4.5鉆削力的計算:

PX?419DS0.8kp

刀具選用高速鋼材料

查《機床夾具設計手冊》表1-2-8 ?HB?k??p?190??0.6200?1900.6?1.03

D?8.4、S1?0.25、S2?0.125

px1?419DS0.8kp?419?8.4?0.250.8?1.03?1195.8Npx2?419DS0.8kp?419?9?0.1250.8?1.03?735.9N

在計算切削力時,要考慮安全系數,安全系數K=K1K2K3K4 式中 K1——基本安全系數,K1=1.5 K2 —— 加工性質系數,K2=1.1 K3 —— 刀具鈍化系數,K3=1.1 K4 —— 斷續切削系數, K4=1.1 于是 F1=KPx1=1.5×1.1×1.1×1.1×1195.8N=2387N 4.6夾緊力計算:

氣缸選用φ100mm,當壓縮空氣單位壓力為p=0.4MPa時,氣缸推力為3900N。

因此N氣已大于所需的2387N的夾緊力,故本夾具可安全工作。

4.7 夾具設計及操作簡要說明

如前所述,在設計夾具時,應該注意提高勞動生產率避免干涉。應使夾具結構簡單,便于操作,降低成本。提高夾具性價比。本道工序為鉆床夾具選擇了螺母夾緊方式。我們采用蓋板式鉆模板,本工序為鉆切削余量小,切削力小,所以一般的手動夾緊就能達到本工序的要求。

本夾具的最大優點就是結構簡單緊湊。夾具的夾緊力不大,故使用手動夾緊。為了提高生產力,使用快速螺旋夾緊機構。

圖3 3.6夾具結構設計及操作簡要說明

3.6.1 底座 底座使用HT200的鑄造成型,進行時效處理,消除內應力,具有較好的抗壓強度,剛度和抗振性。在四角有U型槽,與T型螺釘配合使用,將夾具固定在工作臺上。

3.6.2 固定導向件

固定導向件由45鋼的鋼板和型材焊接而成,退后處理,保證尺寸的穩定性,且在裝配后修正尺寸,保證夾具的精度。焊接件制造方便,生產周期短,成本低。

圖4 3.6.3 鉆套、襯套的選擇

因為為中批量生產,為了便于更換磨損的鉆套,所以選擇使用標準可換

F7鉆套,材料為T10A。查機械手冊,鉆套與襯套之間采用配合,襯套與鉆模

m6H7之間采用配合。當鉆套磨損一定后,可卸下螺釘,更換新的鉆套。螺釘能n6防止鉆套加工時轉動及退刀時脫出。

圖5

3.6.4夾緊機構

夾緊使用氣動推動移動軸,使工件上移,工件的φ90圓的上表面與導向件相接觸,并夾緊。由于工件所需的夾緊力并不大,所以直接夾緊未采用其他的機構。

圖6

如前所述,在設計夾具時,為了提高勞動生產效率,應首先著眼于機動夾緊方式。而且考慮到環保,所以選用氣動源夾緊。氣動反應速度快,環保,但工作壓力小,所以氣缸體積大。本工序為鉆鉸加工,由于夾緊方向為垂直向上,要克服零件和移動軸所受重力,可以在適當的提高壓縮空氣的工作壓力(由0.4MPa增至0.5MPa),以增加氣缸推力。

裝配圖:

圖7

夾具體:

圖8

總 結

課程設計是綜合性實踐環節,目的是通過課題的設計研究,培養綜合運用各門課程知識的能力,培養獨立分析問題和解決問題的能力。但是,高職學生的畢業設計不能完全等同于本科生,應密切與生產實際相結合,應與培養職業能力相結合,應體現職高的特點。通過本次持續三周的夾具設計,首先通過零件圖來確定加工余量,會毛坯圖,而后通過小組的合作分工計算切削余量,繪制工藝卡。通過繪制工藝卡片,確定每道工序的定位與夾緊方式,有老師分配任務進行夾具設計。整個過程中對以往所學的知識進行了回顧和復習,同時也是一種查缺補漏的鞏固過程。通過老師的指導,對很多設計過程遇到的問題進行了解決,也學到很多知識,獲益匪淺。

在指導教師李老師安排和精心指導下,這次畢業設計從確定設計課題、擬定設計方案、設計過程都按照工作計劃進行。

第一,確定課程設計課題。

選好課程設計題目是實現畢業設計目標、保證畢業設計質量的前提,我們的畢業設計的課題取自企業生產實際。這個課題能較全面地應用學生所學專業知識或者將來工作所需的專業技術,達到綜合運用的目的,既能夠解決企業急需解決的生產技術問題,又能夠培養學生的職業崗位能力,難度不是很大,符合我們高職專科生的專業理論知識水平和實際設計能力,工作量恰當,能夠在規定時間內完成。

第二,確定產品設計方案。

明確課題的性質、意義、設計內容、設計要達到的技術經濟指標和完成時間,并確定好正確合理的設計方案是完成設計任務的保證,指導教師、和同學一起參與設計方案的討論,使我對設計方案心中有數。

第三,虛心求教,仔細認真地進行課程設計。

我們高職學生基礎理論知識不夠扎實,設計能力較差,為了使我們很快地進入工作狀態,指導教師耐心向我們介紹機械產品設計方法、一般步驟和設計過程中應注意的事項。在設計中能主動請教指導老師,培養綜合運用機械制圖、工程材料與熱處理、公差配合、計算機繪圖、機械制造工藝等專業知識的能力,培養查閱技術資料和其它專業文獻的能力。培養嚴謹的工作態度和踏實的工作作風。明確必須有高度責任心、嚴肅認真的工作習慣,才能做好設計工作,減少工作失誤,避免給企業生產造成損失。充分發揮主觀能動性,積極思考,大膽創新。

第四,完善設計 完整的設計包括設計圖紙和設計說明書等技術文件。根據設計任務書要求,全面檢查設計技術資料,按照指導教師的批改,認真修改圖紙錯誤,認真修改設計說明書.應該說,在指導教師的認真指導下,我基本完成了這套夾具的設計工作,通過這次設計,學到了很多知識和技術。

致 謝

這次設計使我收益不小,為我今后的學習和工作打下了堅實和良好的基礎。但是,查閱資料尤其是在查閱切削用量手冊時,數據存在大量的重復和重疊,由于經驗不足,在選取數據上存在一些問題,不過我的指導老師每次都很有耐心地幫我提出寶貴的意見,在我遇到難題時給我指明了方向,最終我很順利的完成了畢業設計。

這次設計成績的取得,與指導老師的細心指導是分不開的。在此,我衷心感謝我的指導老師,特別是每次都放下他的休息時間,耐心地幫助我解決技術上的一些難題,他嚴肅的科學態度,嚴謹的治學精神,精益求精的工作作風,深深地感染和激勵著我。從課題的選擇到項目的最終完成,他都始終給予我細心的指導和不懈的支持。多少個日日夜夜,他不僅在學業上給我以精心指導,同時還在思想、生活上給我以無微不至的關懷,除了敬佩指導老師的專業水平外,他的治學嚴謹和科學研究的精神也是我永遠學習的榜樣,并將積極影響我今后的學習和工作。在此謹向指導老師致以誠摯的謝意和崇高的敬意。

參 考 文 獻

1.切削用量簡明手冊,艾興、肖詩綱主編,機械工業出版社出版,1994年 2.機械制造工藝設計簡明手冊,李益民主編,機械工業出版社出版,1994年 3.機床夾具設計,哈爾濱工業大學、上海工業大學主編,上海科學技術出版社出版,1983年

4.機床夾具設計手冊,東北重型機械學院、洛陽工學院、一汽制造廠職工大學編,上海科學技術出版社出版,1990年

5.金屬機械加工工藝人員手冊,上海科學技術出版社,1981年10月

第四篇:課程設計之測量實習報告

實習報告

苦心經營的十四天測量實習結束了,在這十四天,有風有雨也有晴,有苦有慮也有笑。詩曰:桃之夭夭,灼灼其實。花開結下豐滿的果實,辛勤的實習也要產生他的累累果實。實習報告就是果實!

可以說這次實習就是對我們整個學期以來本科目的一次大檢閱,但是我們誰都明白這次測量任務不輕,責任很重,誰也不敢掉以輕心。一周多以來,我們都堅守在自己的“陣地”,觀測、記錄、計算、描點......我們分工合作,力求更好更快地完成我們的任務。在整個測量過程中,我們遇到了不少的問題和疑難,也出現了不少的錯誤,對整個測量進度造成了一定的影響.,我們也從中得到了不少的教訓和體會。撰寫實習報告是實踐學習的進一步深入,溫故而知新,可以為師矣。在下面的報告中,我將概述外業內業的工作情況,特別注重撰寫結合書本理論知識的某一方面體會與收獲。

6月13日(實習規定時間的前一天),在實習正式開始之前,任課老師給我們大概講述了這兩周實習的任務,以及在實習中可能遇到的問題和注意事項,并給各小組下發了任務書。小組將嚴格根據任務書的指導,循序漸進的完成本次實習。老師給我們講話完后,就帶領我們到測區查看已知的圖根控制點,接著認領測量實習中要用到的儀器以及設備,這樣實習正式開始了。

是日下午,我們小組聚到一起,商量本小組工作的計劃與時間安排,也就是本小組的實習小規劃。根據規劃,我們選定了十六周的星期一測量外也得開始時間。這天下午我們決定先把測區的控制點選好,以備明日工作的順利進行。于是乎,大家就帶上涂改液(標志導線點之用),浩浩蕩蕩出發開始了征程。

我們的測區東西走向250米,南北走向200米,主要包括紅樓、學海花園、北院配電房、新北高速一段、電教,以及紡織學院大樓。根據實地考察,目測加上比畫,我們一一精細的選擇我們的導線點。工作進行中,我們發現選點要注意的問題是兩個導線點之間的距離要小于100米,選的導線點獨立或相互配合工作要能將所有的地形特征點通過已有儀器設備測出。經過仔細認真的工作,大家討論選擇點的合理性,最終我們選出了12個導線點,以b點為基本控制點,bc為定位導線。選定后,大家各自回去,準備第二天的正式作戰。

6月14日,十六周的星期一上午,天氣非常晴朗,大家依據規劃興致勃勃的扛著全站儀,棱鏡架等儀器設備來到了測量現場。我們從基本控制點b點開始測,按照逆時針方向,一一測量。上午的任務是將導線點的平面方位角和水平距離測出。這個測量看起來貌似蠻簡單的,但真正要做到數據有效,也就是誤差在允許范圍內,還是有一定難度的,在這個測量上,我們就遇到了很多問題。

起初,由于對全站儀的使用還不是十分掌握,在調平和對中上我們就花了一些時間摸索;之后我們還認為測水平距離要輸入儀器高,就傻傻的每次測量儀器高度,直到已經測量了兩三個點之后才發現這完全是沒有必要的,只是徒費時間而已;再后面,因為

天氣炎熱,和大家都覺得操作好簡單,加快了測量速度,在中午時分,任務“完成”。到底是初經沙場,不知測量稍有粗心釀成不必要的誤差就會令整個測量崩盤,再加上個別人員的粗心不認真仔細操作,急于求成,直接導致測量誤差大得驚人——閉合差達到幾度。當然組長沒有敦促組員嚴格操作也是有大責任的,所以身為組長的我,從中也認識到“做一個領導人,就要領導大家把工作按正規要求做好”的道理。次日通過計算發現誤差后,我們決定重測!

前事不忘后事之師,有了那次教訓,我們重點就我們忽略大意的地方一絲不茍的進行操作。我們同樣以b點開始,逆時針方向進行;我們務求調平對中準確無疑,棱鏡架水平無偏差,工作求質不求速,仔細瞄準,仔細讀數,仔細記錄。毫無疑問,我們得到的數據是非常有效的,我們的閉合差是182秒,而容許值是208秒。雖然反工了,但我們得到了精準的數據,喜悅不禁,反攻的苦楚大家都忘得一干二凈了。Gratulations!Boys.(祝賀,小伙子們)

星期一下午,我們進行的是高程的控制測量。因為我們學校依山傍水,地勢高低起伏不平,高程測量不平面控制測量就要來的復雜一些了,因為他要設很多的轉點。同樣的,我們仍然由b點開始,逆時針方向開工。我們使用的是自動安平水準儀。水準儀與全站儀相比,使用起來人工因素誤差就要明顯的多了。出來調平外,立尺也要有一定的水平。還有由于水準測量天生的詬病,為了消除儀器誤差而采用的紅黑面方法,測站居中,測站偶數法等等。為了得到精準的數據,我們必須比使用全站儀更加認真的使用水準儀。在測量過程中,我們小組遇到了一位職業測量人員,他來學校玩玩,看到我們在測量,就饒有興致的過來與我們交談。他告訴我們,“水準測量在工程測量中非常的重要,不同的建設精度要求不一樣,比如橋梁的建設對水準的要求就很高,精度不高可能導致橋無法對接,那就嘻哈了;而道路就要求低些了。測量中的各種誤差消除法都是很常見的方法,你們要牢牢掌握,如你們也在用的紅黑面方法、測站偶數法。測量工作一定要認真,認真就是對工作負責,對工程建設負責,沒有強烈的責任心是不能成為一個合格的工程建設者的。”我們小組六人團結合作,一絲不茍各司其職,操作水準儀的認真操作,讀數的認真讀數,立尺的認真立尺,記數的認真記數。在地勢升降大的地方,我們細致的設置轉點,采用偶數測站法消除兩尺的磨損不同引起的誤差。這么嚴謹的工作,怎么能不得到嚴格符合要求的數據?!

這樣第一期的外業任務就圓滿完成了,接下來是第一期的內業了。第一期的內業實在星期三進行的。大家在組長的帶領下,齊聚湖南工程學院學生宿舍九棟201,展開數據計算和表格制作與填寫。同樣是分工合作,兩個計算數據,四個制作表格與填寫。計算數據我們按照書本上正規的計算方法進行,多次運算,確保無錯;再計算出誤差,在誤差容許的條件下,根據測站數進行調整。我們制作了一個電子表格來記錄平面測量中方位角的讀數,記錄數據認真細膩,無差錯的完成了。這樣的話,第一期的全部工作就圓滿完成了。這夜,大家在一起吃了個飯以示慶祝。

十六周的星期天,我們迎來了本次實習的第二期任務——測繪測區地形圖。同樣,正式開始前,老師給我們講述了一些要點,包括畫圖要注意的地方,花圃怎么畫啊、臺階怎么畫啊等等。去了一些舊的,來了一些新的儀器,碎部測量在大家的勃勃興致之手下,又展開了。

第二期的任務是在前期處理準備好的控制點上進行碎部測量。因為可以用經緯儀也可以用全站儀,而我們的全站儀很好用,且他自動化高,數據處理上非常之方便,所以盡管其他組使用的是經緯儀,我們第六小組依然選擇了全站儀來陪伴我們地形圖的測繪工作。由于測量與畫圖同時進行(以便及時發現錯誤補救),第二期花了好幾天時間。為了能讓繪圖員了解何數據對應何點,我特意畫了一副測區草圖,在上面給特征點標上一些號碼,然后依據號碼記錄數據,測圖員一目了然,測繪工作得以準確而快速的進行。我們的測繪從紅樓學海花園開始,按逆時針畫過去。測量上,我們力求做到準確無差,選點上我們力求細致入微,盡可能反映地形圖的特征。其實測繪工作開始時,我們也試著用經緯儀測過。但是,一人工誤差大,二計算量繁,我們毅然放棄了經緯儀的使用。我們小組的繪圖工作是由方勵同學一個人完成的,他嚴格按照老師和任務書上的要求,根據制圖圖標和制圖格式來繪圖。定位針打遍了所有的控制點,量角器不知轉了數千圈,他的工作是繁多的,他認真的態度讓所有人滿意鼓舞。我們呈上精確的數據,他交出精準的地形圖。六組組員通力合作,辛勤耕耘四天,將第二期的地形測繪工作圓圓滿滿的Complish(完成)了。

感悟實習:這次實習我最大的感悟是,工作必須要抱有十分嚴謹的態度,特別是工程工作。不嚴謹,就不精確無誤,就會使整個工作崩潰,這個后果是個人無法承擔。據說,法國人浪漫,英國人享受,德國人嚴謹,所以德意志民族的工業工程制造技術是全世界一流的,他們的奔馳寶馬奧迪舉世無雙。還有一點,我感受到了作為小組領導人的責任與重要,領導者是大家行動的指南,大家分工協作各司其職的保證。領導者工作什么態度,大家就什么態度,做一作為領導者首先就要做到嚴格要求自己,滿懷責任心。故《大學》有曰:一言僨事,一人定國。又曰:君子先諸己而后求諸人,無諸己而后非諸人。

第五篇:軟件工程課程設計報告 之 總結性報告

總結性報告

1. 時間

飛Q2012項目從擬定好課題起,經過問題定義,可行性研究,需求分析,概要設計,詳細設計,主要編程,分布測試,總體測試,到整體裝配完成歷時一個半月。

2. 人員

主程序員(組長):王昌帥

輔程序員:司吉峰、王璐、紀曉文、王松松

文檔管理員:王璐、紀曉文

3. 遇到的困難

服務器方面:最開始我們選用的登錄模式是利用sqlsever從硬盤上的數據庫中讀取賬號密碼進行匹配登錄,但這種讀取機制降低了登錄速度,經過修改,改用了將好友賬號密碼預讀入內存中,直接在內存中進行讀取,大幅度節省了登錄時間。

客戶端方面:區別于類似的大多數即時聊天工具的消息傳送機制(即向服務器發送消息經服務器轉發),我們利用了典型的p2p(點對點)機制,當好友聊天時,服務器避免了接收和轉發消息的負荷,減少了線程數量,既減輕了服務器壓力同時又提高了好友間消息傳送的速度和質量。

4. 系統性總結

本系統具有以下特點:

?采用 C/S通信模型設計,有效減輕了服務器的負擔,便于后臺的管理。將任務合理分配到 Client端和Server端來實現,降低了系統的通訊開銷。

?采用了Java語言,因為用Java設計的系統是跨平臺的,在任何操作系統上,只要安裝了Java虛擬機,就可以運行本系統,不用受平臺的限制。

? 在客戶端都和服務器端都實現了多線程編程技術,以提高系統的效率。使用線程可以把占據長時間的程序中的任務放到后臺去處理。

本系統這實現了網絡聊天工具所具備的基本功能,即注冊、登錄、查找好友,添加好友、更改個人資料、查看好友資料、添加刪除分組、各分組之間轉移好友、發送消息、接收消息、接收系統消息等,還添加了一些特色功能,如隱身,頭像的變化,系統管理員可以向每個客戶端發送系統消息,上線下線在好友客戶端都有提示,密碼丟失可以通過密碼找回功能通過設置的密保問題找回密碼,并可以判斷密碼的安全等級等。本系統實現了一個與Tencent QQ相似的友好操作界面,簡單,易用,適合用戶的操作習慣。

該系統具備了網絡聊天工具所具備的基本功能,但還有一些功能還沒完善,如用戶聊天之間的方式僅限于文本通信,還沒實現文本傳輸功能。還沒實現修改用戶資料的功能等。系統或許存在一些未知的Bug,還需要進一步的改進和測試。在以后的研究中,我們還會研究安全通信協議,保障通信的安全,提高系統的實用性等

本課題需要繼續完善的功能有:

?

?

?

?設計測試用例,全面、系統地測試該系統所存在的一些缺陷;

? 擴展即時消息系統的服務范圍,增強系統工作的穩定性和健壯性。

5. 收獲與經驗

本次課程設計是自大一以來工作量最大的同時也是歷時最長的一次大作業任務。與之前大作業不同的在于,這次課程設計所設計的項目課題,所用的編程語言,用到的知識都是以前沒有接觸過的,完全通過自學掌握。所以工作進度最初進展很慢,不過通過對新知識的學習,和項目實踐的鍛煉,深入學習java可視化編程,完善操作界面,使其更加適合用戶的操作習慣; 設計安全通信機制,保障通信的安全; 加入文件傳輸功能,豐富用戶的信息交流方式;

掌握專業知識的同時,更重要的是項目經驗,以及實踐中處理各種問題能力的培養。

通過本次項目的復習,我們了解了一個完整的軟件開發過程,包括課題定義、可行性研究,需求分析,概要設計,詳細設計,測試工作,進一步完善,設計使用說明書,總結提交實驗報告。以及其中不同人員和不同的工作,主程序員是一個項目團隊的核心,指導整個項目組各個成員的工作,規劃整個項目的結構,統一各個部分函數接口,承擔著編程過程中最核心的任務,以其為核心各個部分才可以慢慢擴展開來。輔助程序員主要負責各個獨立部分的編程設計,對輔助程序員來說,獨立性較主程序員的任務更大一些,但是,卻要求輔助程序員對自己承擔的任務有必須清晰的了解,因為到后期各個部分連接的時候肯定會出現一些問題,修改這些錯誤要求必須對不同部分有很詳細的了解。文檔管理員承擔著大部分文檔編輯工作,但對具體的程序代碼也要有一定的了解。

本次課程設計最重要的是讓我們收獲了一些寶貴的項目開發經驗:項目最開始的全局規劃,接口統一工作很重要以及數據結構的選擇因為這涉及到以后各部分連接時的統一問題,一旦剛開始沒有統一好,連接時會有很多問題,導致各部分不能很好的連接,很多功能或屬性沒有很好的利用。另外,項目后期的bug修改也很重要,因為由不同程序員編寫程序在正確性、高效性,和格式上都有很大的不同,自然會在連接時產生一些問題,更改這些問題時便不再是某個部分的問題,而是全局的問題,需要各個程序員協調完成修改工作,而且我們也了解到,工程項目越大,后期產生的bug也會越多,起初我們忽視了后期bug修改的工作量,導致在完成時間上一拖再拖。

總而言之,盡管本次課程設計使我們糾結了很長的時間,遇到了很多困難,但我們真心的為我們所獲得工作經驗和成果而高興,截止到完成文檔時,我們的飛QQ2012已經實現了局域網內以及校園內網各個客戶端的即時聊天,并且速度和質量得到了各用戶的好評,我們還將繼續完善飛Q2012,讓更多人知道了解它,繼續學習繼續努力。

下載全方位課程設計之初探word格式文檔
下載全方位課程設計之初探.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式課程設計之觸摸屏程序設計

    嵌入式課程設計 設計題目:觸摸屏驅動程序設計 班級: 學號: 姓名: 指導老師: 設計時間:2010年12月25日--12月28日 目錄 第一部分 要求 ................................................

    化工原理課程設計之心得體會

    化工原理課程設計之心得體會 這次化工原理設計我們用了兩周時間去做,我們這次的任務是做列管式換熱器。時間不長,但卻學到了很多東西。 由于第一次接觸課程設計,我起初心里充滿......

    單片機課程設計之秒表五篇范文

    單片機課程設計報告題目:基于stc89c52rc的秒表設計學生:唐偉軒 11071339指導老師:日期:2013年12月8日基于stc89c52rc的秒表設計此設計中硬件部分由王華杲完成,軟件由唐偉軒完成一......

    課程設計之繪本閱讀(格式修改版)

    教案:繪本閱讀 課程名稱: 繪本閱讀(一、二、三年級) 課時: 四課時(每周兩節,共兩周) 授課老師: 龍川 教學目的: 1. 培養閱讀的興趣 2. 培養孩子養成閱讀的習慣 3. 提高孩子們的閱讀能......

    新版商業車險條款之全方位解讀(精選5篇)

    新版商業車險條款之全方位解讀 亮點解讀: 新版商業車險 附加險:部分統一 車身劃痕險、玻璃單獨破碎險等,目前投保中幾種常用的附加險在2007新版車險中進行了統一,客戶在選擇......

    人員培訓與開發之培訓課程設計專題

    上海美特斯邦威遭投訴“門” 投訴事件: “美特斯邦威”服飾質量劣、服務差 我們通過網絡得知,近日,福建、河北、山東、上海等消費者反映,稱購買了上海美特斯邦威股份有限公司生......

    國學誦讀之三字經課程設計(5篇)

    國學誦讀之《三字經》 一、 科目開發背景 中國歷史上下五千年,淵源流長,古國的文明深奧而博大,浩如煙濤。《三字經》便是一本學習中華文化不可多得的入門之書。這本自南宋以來......

    數字電路課程設計之循環移位器

    課程設計2 循環移位器 2012019120008江明杰 一、 設計要求 設計一個8位的循環移位器:輸入8位二進制數據X[7:0],在控制輸入N[2:0]和D的控制下進行向左或向右循環移位,N和D分別表......

主站蜘蛛池模板: 国产一区二区精品久久| 2020国产成人精品影视| 日本精品巨爆乳无码大乳巨| 99亚洲乱人伦aⅴ精品| 欧洲美女粗暴牲交免费观看| 性色av浪潮av色欲av| 久久久久久久久久久综合日本| 欧美黑人性暴力猛交高清| 曰批免费视频播放免费| 色窝窝无码一区二区三区成人网站| 丰满人妻被黑人猛烈进入| 亚洲成亚洲成网| 无码人妻精品一区二区三区9厂| 国产一区二区三区在线视頻| 国产一区二区三区导航| 乱码一二三入区口| 黑人30厘米少妇高潮全部进入| 又色又爽又黄18禁美女裸身无遮挡| 久久人人做人人妻人人玩精品va| 色老头在线一区二区三区| 中国少妇内射xxxhd| 久久久久人妻一区精品色欧美| 日韩人妻无码免费视频一区二区三区| 国产美女久久久亚洲综合| 成人区人妻精品一区二区不卡视频| 日韩高清亚洲日韩精品一区二区| 国产免费啪嗒啪嗒视频看看| 丰满少妇被猛烈进入高清播放| 精品国产成人亚洲午夜福利| 欧美最猛性xxxx| 成人无遮挡18禁免费视频| 性色av极品无码专区亚洲| 成人免费无码精品国产电影| 亚洲国产欧美在线人成人| 少妇高潮潮喷到猛进猛出小说| 国产日韩精品视频无码| 国产精品自在自线视频| 自拍偷自拍亚洲精品被多人伦好爽| 99成人国产综合久久精品| 精品国产这么小也不放过| 蜜臀少妇人妻在线|