第一篇:全方位课程设计之初探
全方位課程設計之初探
桃園縣中壢市自立國小/賴暄頤
ㄧ、前言
我國特殊教育法(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切削力和夹紧力的计算
由于本道工序主要完成工艺孔的钻孔加工,钻削力。由《切削手册》得: 钻削力 F26Df0.8HB0.6 式(5-2)
钻削力矩 T10D1.9f0.8HB0.6 式(5-3)
11式中:D9mm HBHBmaxHBmaxHBmin187187149174
f0.20mmr1代入公式(5-2)和(5-3)得
F26x9x0.200.8x1740.61863N
T10x919x0.200.8x1740.647127N.m
本道工序加工工艺孔时,夹紧力方向与钻削力方向相同。因此进行夹紧立计算无太大意义。只需定位夹紧部件的销钉强度、刚度适当即能满足加工要求。
4.4定位误差分析
本工序选用的工件以圆孔在定位销上定位,定位销为水平放置,由于定位副间存在径向间隙,因此必将引起径向基准位移误差。在重力作用下定位副只存在单边间隙,即工件始终以孔壁与心轴上母线接触,故此时的径向基准位移误差仅存在Z轴方向,且向下,见下图。夹具的主要定位元件为浮动支撑板和定位销。支撑板的定位表面与夹具体底面平行度误差不超过0.05;定位销选取标准件,夹具体上装定位销销孔的轴线与夹具体底面的垂直度误差不超过0.05。夹具的主要定位元件为长定位销限制了4个自由度,另一端面限制1个自由度,绕轴线旋转方向的自由度无须限制。因零件对形位公差及尺寸公差均要求不高,且各定位件均采用标准件,故定位误差在此可忽略。
YzTDTd20.0140.0220.0340.070
式中 ——定位副间的最小配合间隙(mm);
TD——工件圆孔直径公差(mm);
Td——定
位
销
外
圆
直
径
公
差
(mm)。
定位销水平放置时定位分析图 图2 4.5钻削力的计算:
PX419DS0.8kp
刀具选用高速钢材料
查《机床夹具设计手册》表1-2-8 HBkp1900.62001900.61.03
D8.4、S10.25、S20.125
px1419DS0.8kp4198.40.250.81.031195.8Npx2419DS0.8kp41990.1250.81.03735.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,让更多人知道了解它,继续学习继续努力。