基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】

基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】

ID:429990

大小:435.36 KB

页数:57页

时间:2017-08-01

上传者:U-944
基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】_第1页
基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】_第2页
基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】_第3页
基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】_第4页
基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】_第5页
资源描述:

《基于Java的即时通讯系统设计与实现【开题报告+文献综述+毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业论文本科毕业设计开题报告计算机科学与技术基于Java的即时通讯系统设计与实现一、综述本课题国内外研究动态,说明选题的依据和意义即时通讯(InstantMessenger,简称IM)是一个终端连往一个即时通讯网路的服务。从1996年至今,即时通讯的发展历经了三波浪潮:即时通讯的第一波,主要以1996年年底,4个以色列人编写的ICQ为代表,这就是即时通讯产品的雏形。最初的即时通讯产品仅限于文字的沟通,而即时通讯产业在这个阶段也基本属于技术培育期。即时通讯的第二波,属于基础产品应用期,主要由美国开始蔓延全世界;2000年前后,全球范围内的IM普及已经展开,在美国,AOL收购ICQ,微软推出MSN,雅虎推出Messenger。不同从业者的加入极大的推动了IM产品在应用层面的发展,逐渐地,用户的交流已经不满足于单纯的文字沟通,他们需要直观表达丰富的感情,以及传递声音和图像。针对用户的需求变化,IM产品新增了表情设计,再到后来,IM实现了语音和视频交流,增值功能和服务也越来越多,IM在这个阶段得到了高速的成长。在经过前9年的技术培育期、基础产品应用期之后,现如今的即时通讯工具,不仅更加丰富了自身的交流形式和开发出更多的新应用,同时也正在整合各种已有的通信方式,如Email、短信等,逐渐使自身成为一个全方位的网上即时交流平台,一个以用户体验为显著特征的崭新阶段——即时通讯社区文化正在成为现实。即时通讯之所以深受青睐,完全得益于它在沟通中为用户带来的极大满足。随着移动和互联网越来越深入的走进生活,人们渴望在任何时间、任何地点将尽可能多的通讯工具融合在互联网同一个沟通环境下,实现各种通讯工具的互补和整合。人们不再局限于单一的网上或网下的沟通,而是希望通过跨平台、多终端的通讯技术来实现一种集声音、文字、图像的低成本高效率的通讯服务,即时通讯将担负起这种重要责任。46 毕业论文作为即时通讯的一种运用的聊天软件,它继承了即时通讯软件的优点,它具有文字聊天、语音聊天、传送文件、拨打电话、远程协助、视频聊天、邮件辅助、发送短信、浏览咨询等等功能。开发基于桌面的,面向个人的大众化聊天软件,可以满足网民在网络交流的需要,和电话、手机有着异曲同工之妙,但较之电话和手机,聊天软件具有方便快捷,功能强大,交流成本低等优点。通过上述的分析和总结,本文从普通网民用户的角度出发,开发基于Socket通信的聊天软件。该软件采用了客户端/服务器(C/S)体系结构,由于Java是当下最流行的开发语言,它一开始就内置了对网络编程的支持,它提供的强大的API,可以使程序员很轻松地开发出强大的网络应用程序,所以我选用Java作为开发语言。该软件主要分为二部分:服务器端和客户端。服务器:负责处理各个客户端的信息,并负责将信息进行转发。①服务器主要负责响应客户端的的各种信息,包括用户的登陆,用户的注册,各个客户端的信息相互转发。②服务器的实现有以下几个类构成:Server类,ServerThread类,其中Server类主要是进行初始化的工作,ServerThread类负责对用户登陆信息,各个客户端信息的处理。客户端:用户使用界面,负责接受信息以及与服务器进行通信。①客户端负责为用户提供登陆界面,将信息发送至服务器,接受服务器的反馈信息等一系列的工作。②客户端的实现有以下几个类构成:Client类,ChatClient类。ChatClient类进行登陆界面初始化的工作,Client类负责与服务器,其它客户端进行通讯。设计一款面向普通大众的聊天软件,应该具有聊天软件的一般功能。具体的功能应该包括如下几个:(1)注册登陆功能:新用户可以通过注册获得登录帐号,用户们只有通过了系统的登录功能验证通过后才能进入系统的聊天主界面。(2)显示功能:用户登录成功后进入到系统主界面中显示用户本人的基本信息,比如姓名、帐号、图片等相关信息,同时要显示在线好友的基本信息,还有就是用户加入过的所有群信息。(3)好友管理:可以查找其他在线用户,并可以向他们发送加好友请求,删除和修改好友的信息。(4)群管理:可以查找群的信息,同时也能够选定加入某个群。(5)一对一聊天:用户既可以选定一个或多个在线好友聊天,这时他们聊天都是在一个个独立的窗口中进行的,也可以接收到其他在线好友的聊天请求。(6)一对多聊天:用户可以向所有同群成员发送消息,也可以接受到同群的所有成员的信息等等。二、研究的基本内容,拟解决的主要问题:1.客户机/服务器通信的实现问题。46 毕业论文2.响应客户端请求的Socket操作类问题。3.Java中客户/服务器模型的设计。三、研究步骤、方法及措施:1.总体设计在需求分析的基础上,对即时通讯系统进行体系架构,划分模块,设计数据库,并对所需要的技术进行研究。2.详细设计在设计前对Socket技术进行详细技术分析,并有针对性的进行客户端和服务器端的设计,及与数据库的连接设计。3.编码阶段用java语言实现各个模块的功能,设计聊天通讯功能,编译各部分代码,设计好接口程序,处理好客户端与服务器端连接程序的设计,以及服务器端和客户端的编码。4.测试阶段对系统进行单元测试,集成测试,系统测试等。5.编写设计论文构思论文总体结构,书写论文草稿,反复修改论文。参考文献:[1]A.J.Herbert,R.HaytonandM.Bursell.MobileJavaObjects.BTTechnologyJournal,1999,Volume17,Number2,Pages115-125[2]MarianaLNeves,José-MaríaCarazoandAlbertoPascual-Montano.AJavalibraryforextractingandnormalizinggeneandproteinmentions.BMCBioinformatics,2010,Volume11,Number1,157[3]黄聪明.Java行动通讯程式设计——J2MEMIDP[M].清华大学出版社,2002.6[4]埃克尔.Java编程思想[M].机械工业出版社,2007.6[5]孙卫琴.JAVA面向对象编程[M].电子工业出版社,2006.7[6]霍顿.Java2入门经典[M].机械工业出版社.,2006.1[7]高永强.Java编程艺术[M].清华大学出版社,2009.7[8]李文泽,郑逢斌等.Java程序设计专家门诊[M].清华大学出版社,2006.1246 毕业论文[9]Deitel.Java大学简明教程[M].电子工业出版社,2005.2[10]郎波.JAVA怨言程序设计[M].清华大学出版社.2005.546 毕业论文毕业论文文献综述计算机科学与技术基于Java的即时通讯系统设计与实现随着计算机网络的迅猛发展,人们越来越依赖于网络来解决现实问题,其中即时通讯软件就是网络技术的一种重要运用,而作为即时通讯的聊天软件,因为其便利快捷的特性,受到了网民的青睐。一、即时通讯系统的开发背景自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能。由于互联网的方便快捷的优点,人与人之间的交流也更多的是在网络上进行。在这样的时代背景下,即时通讯软件也顺势而生[1]。即时通讯(InstantMessenger,简称IM)是一个终端连往一个即时通讯网路的服务。即时通讯,在过去,网民通常都会将IM等同于一个网络寻找朋友的工具、聊天的工具。但是,随着即时通讯软件功能和应用的逐渐丰富和完善,IM已经演化成一个综合的桌面通讯平台。目前,无论从娱乐角度还是从商务角度来看,即时通讯工具在国内外已经成为了一种富有价值的通讯工具,并且在一些公司的每天业务运作中发挥着重要的作用。桌面即时通讯软件是一个潜力巨大的支付窗口,它拥有能够把眼球转化成信息流乃至现金流的魔力。目前的即时通讯软件已经向游戏、音乐、社区,甚至门户等领域的发展,人们已经更乐于用这些即时通讯软件来交朋结友,发送手机短信,甚至传送文件。二、即时通讯系统的开发语言开发基于Socket通信的聊天软件,该软件采用了客户端/服务器(C/S)体系结构,由于Java是当下最流行的开发语言,它一开始就内置了对网络编程的支持,它提供的强大的API,可以使程序员很轻松地开发出强大的网络应用程序[2]。网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,Socket是面向客户/服务器模型设计的,Socket通常用来实现客户方和服务方的连接。客户程序可以向Socket写请求,服务器将处理此请求,然后通过Socket将结果返回给用户。46 毕业论文Socket通信机制提供了两种通讯方式:有联接和无联接方式,分别面向不同的应用需求。使用有联接方式时,通信链路提供了可靠的,全双工的字节流服务。在该方式下,通信双方必须创建一个联接过程并建立一条通讯链路,以后的网络通信操作完全在这一对进程之间进行,通信完毕关闭此联接过程。使用无联接方式时其系统开销比无联接方式小,但通信链路提供了不可靠的数据报服务,不能保证信源所传输的数据一定能够到达信宿,在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行[3]。Java语言的优点主要表现在:简单、面向对象、多线程、分布性等方面。(1)简单性Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加简便,同时减少了出错的可能。(2)面向对象Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。Java是一种完全面向对象的程序设计语言,它除了数组、布尔和字符三个基本数据类型外的其它类都是对象,它不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。Java同样支持继承特性,Java的类可以从其它类中继承行为,但Java只支持类的单重继承,即每个类只能从一个类中继承。Java支持界面,界面允许程序员定义方法但又不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。(3)多线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。46 毕业论文Java程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率。(4)分布性Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。三、即时通讯系统的环境及研究重点作为即时通讯的一种运用的聊天软件,它继承了即时通讯软件的优点,它具有文字聊天、语音聊天、传送文件、拨打电话、远程协助、视频聊天、邮件辅助、发送短信、浏览咨询等等功能。开发基于桌面的,面向个人的大众化聊天软件,可以满足网民在网络交流的需要,和电话、手机有着异曲同工之妙,但较之电话和手机,聊天软件具有方便快捷,功能强大,交流成本低等优点[4]。即时通讯软件是基于桌面的综合的通讯的平台,它集文字聊天,视频聊天,语音聊天,文件传输等功能于一体,具有实时通讯的优点,所以能够深受网民的喜爱。现在的即时通讯功能逐渐强大,不仅能够解决普通人们上网聊天需求,而且它也逐渐被用于企业管理中。四、即时通讯系统的发展及推动因素从1996年至今,即时通讯的发展历经了三波浪潮:即时通讯的第一波,主要以1996年年底,4个以色列人编写的ICQ为代表,这就是即时通讯产品的雏形。最初的即时通讯产品仅限于文字的沟通,而即时通讯产业在这个阶段也基本属于技术培育期。即时通讯的第二波,属于基础产品应用期,主要由美国开始蔓延全世界;2000年前后,全球范围内的IM普及已经展开,在美国,AOL收购ICQ,微软推出MSN,雅虎推出Messenger。不同从业者的加入极大的推动了IM产品在应用层面的发展,逐渐地,用户的交流已经不满足于单纯的文字沟通,他们需要直观表达丰富的感情,以及传递声音和图像。针对用户的需求变化,IM产品新增了表情设计,再到后来,IM实现了语音和视频交流,增值功能和服务也越来越多。IM在这个阶段得到了高速的成长[5]。在经过前9年的技术培育期、基础产品应用期之后,现如今的即时通讯工具,不仅更加丰富了自身的交流形式和开发出更多的新应用,同时也正在整合各种已有的通信方式,如Email、短信等,逐渐使自身成为一个全方位的网上即时交流平台,一个以用户体验为显著特征的崭新阶段——46 毕业论文即时通讯社区文化正在成为现实。我们认为,即时通讯的下一个发展阶段将进入由中国领导的即时通讯全面社会化的阶段[6]。五、即时通讯系统的未来研究方向首先是即时通讯的应用将更加的丰富化; 最近几年,可以清楚的感觉到,随着即时通讯工具本身应用越来越丰富,用户对即时通讯聊天之外的娱乐需求正在不断增长,更加丰富化的娱乐应用已经成为即时通讯未来重点的发展方向。为了满足用户日益旺盛的娱乐应用需求,许多即时通讯服务提供商都在不断的开发基于即时通讯平台的丰富化应用,例如:虚拟形象、魔法表情以及虚拟宠物等新的应用层出不穷[7]。其次是即时通讯将更加汇聚人气,体现社区化和互动性;分析显示,即时通讯之所以在近几年发展迅猛,除了其本身的功能强大之外,互联网用户迅速汇聚的人气也是重要的推动因素,据CNNIC统计报告显示,截止到2004年6月30日,我国上网用户总数为8700万,上网计算机达到3630万台,即时通信服务正和电子邮件、搜索引擎、上网浏览资讯等网络应用一样最大化的融入到了网民的日常生活中。人气汇聚所带来的就是社区化和互动性。据有关专家预测,在线生活在未来两三年内将成为互联网应用的热点,网络用户可以在网上进行买房,买车,养宠物等等与真实生活相似的网络生活。同时,一个纯粹的通讯工具,正在被赋予新的内涵,成为一个丰富的个人空间,这里面不仅有可以聊天的朋友,还有游戏、新闻、社区、日记本等等。互联网企业在网络上开办校友录,开创社区,为网络用户提供日记撰写的平台,让用户建立自己的blog,正是为了满足这些网络用户对在线生活的需求[8]。第三,即时通讯与本地化应用的融合;随着即时通讯产品个人属性的加强和应用范围延伸,与本地化应用的融合将成为即时通讯产品的主要发展趋势。这种融合的趋势将首先体现在即时通讯服务商对本地用户资源的管理、分析,对本地文化的理解,以及基于本地用户需求基础上,对产品应用的不断优化。46 毕业论文参考文献:[1]黄聪明.《Java行动通讯程式设计——J2MEMIDP》.清华大学出版社,2002.6[2]埃克尔.《Java编程思想》.机械工业出版社,2007.6[3]孙卫琴.《JAVA面向对象编程》.电子工业出版社,2006.7[4]霍顿.《Java2入门经典》.机械工业出版社,2006.1[5]高永强.《Java编程艺术》.清华大学出版社,2009.7[6]李文泽,郑逢斌等.《Java程序设计专家门诊》.清华大学出版社,2006.12[7]Deitel.《Java大学简明教程》.电子工业出版社,2005.2[8]郎波.《JAVA怨言程序设计》.清华大学出版社,2005.5[9]A.J.Herbert,R.HaytonandM.Bursell.MobileJavaObjects.BTTechnologyJournal,1999,Volume17,Number2,Pages115-125[10]MarianaLNeves,José-MaríaCarazoandAlbertoPascual-Montano.AJavalibraryforextractingandnormalizinggeneandproteinmentions.BMCBioinformatics,2010,Volume11,Number1,15746 毕业论文本科毕业论文(20届)基于Java的即时通讯系统设计与实现专业:计算机科学与技术46 毕业论文摘要随着计算机网络的迅猛发展,人们越来越依赖于网络来解决现实问题,其中即时通讯软件就是网络技术的一种重要运用,而作为即时通讯的聊天软件,因为其便利快捷达到信息交流共享的特性,受到了网民的青睐。由于JAVA语言为即时通讯系统开发提供了强大的技术支持。所以本系统在C/S模式下采用JAVA语言及采取SOCKET技术来实现客户端与服务器端的联系交流工作,运用SQLSERVER建立的数据库,来最终实现客户之间的数据交流和沟通。本论文在对系统进行需求分析和总体设计的基础上,设计并实现了即时通讯所需的基本的功能模块,包括即时在线聊天功能和在线聊天管理子系统等,本系统能够很好的满足用户之间信息交流和文件共享的要求,在用户聊天沟通,信息互动及好友管理等方面能够很好的展现自己的功能。【关键词】jdbc,数据库,即时通讯,java46 毕业论文DesignandimplementationofinstantcommunicationsystemBasedonjavaAbstractWithcomputernetworks,peopledependincreasinglyonthenetworktosolvepracticalproblemstowhichsoftwareisanimmediatecommunicationnetworktechnologyimportanttouse,andinstantcommunicationssoftwareforachat,asthefacilitiesandtoshareinformationandcommunicationbynetizensconfidence.Thejavalanguageisanimmediatecommunicationsystemdevelopedtoprovidestrongsupport.Thissysteminc/smodetousejavalanguageandtechniquestoachieveasockettheclientandserverconnectionwithsqlserver,exchangeofworktoestablishadatabase,thefinalrealizationofcustomerdataexchangeandcommunication.Thispapertosystemsrequirementsanalysisandtheoveralldesign,onthebasisofthedesignandimplementationoftheimmediatecommunicationmodulesincludingbasicfunctions,immediateandonlinechatsonlinechatsmanagementsystem,thissystemcanbeverynicetomeetuserinformationanddocumentsharing,auserinteractionandcommunicationandinformationmanagementtoaclosefriendofhisownfeatures.【Keywords】thedatabase,jdbc,real-timecommunications,java46 毕业论文目录摘要IAbstractII1.绪论11.1即时通讯系统设计背景21.2即时通讯系统国内外发展状况21.3即时通讯系统的未来研究方向31.4本文工作42.实现即时通讯系统关键技术52.1JAVA简介52.1.1JAVA的发展历史52.1.2JAVA命令62.2SQLSERVER简介72.3Socket技术82.4Eclipse简介82.5系统运行环境要求93.系统分析103.1可行性研究103.1.1技术可行性分析103.1.2经济可行性分析103.1.3操作可行性分析103.1.4其他可行性分析113.2需求分析113.2.1业务流程分析113.2.2概念结构设计114.系统设计134.1总体设计1346 毕业论文4.2详细设计134.2.1即时在线聊天功能134.2.2在线聊天管理子系统154.2.3在线聊天好友管理系统175.数据库设计195.1数据库需求分析195.2数据库表的创建225.3数据库与程序的连接编译235.3.1JDBC简介235.3.2JDBC语句编译和配置236.系统实现256.1用户登陆和注册界面256.2登陆后和聊天界面296.3文件的发送与接收377.总结41参考文献:4246 毕业论文1.绪论即时通讯(InstantMessenger,简称IM)是一个终端连往一个即时通讯网路的服务。从1996年至今,即时通讯的发展历经了三波浪潮:即时通讯的第一波,主要以1996年年底,4个以色列人编写的ICQ为代表,这就是即时通讯产品的雏形。最初的即时通讯产品仅限于文字的沟通,而即时通讯产业在这个阶段也基本属于技术培育期。即时通讯的第二波,属于基础产品应用期,主要由美国开始蔓延全世界;2000年前后,全球范围内的IM普及已经展开,在美国,AOL收购ICQ,微软推出MSN,雅虎推出Messenger。不同从业者的加入极大的推动了IM产品在应用层面的发展,逐渐地,用户的交流已经不满足于单纯的文字沟通,他们需要直观表达丰富的感情,以及传递声音和图像。针对用户的需求变化,IM产品新增了表情设计,再到后来,IM实现了语音和视频交流,增值功能和服务也越来越多,IM在这个阶段得到了高速的成长[1]。在经过前9年的技术培育期、基础产品应用期之后,现如今的即时通讯工具,不仅更加丰富了自身的交流形式和开发出更多的新应用,同时也正在整合各种已有的通信方式,如Email、短信等,逐渐使自身成为一个全方位的网上即时交流平台,一个以用户体验为显著特征的崭新阶段——即时通讯社区文化正在成为现实。即时通讯之所以深受青睐,完全得益于它在沟通中为用户带来的极大满足。随着移动和互联网越来越深入的走进生活,人们渴望在任何时间、任何地点将尽可能多的通讯工具融合在互联网同一个沟通环境下,实现各种通讯工具的互补和整合。人们不再局限于单一的网上或网下的沟通,而是希望通过跨平台、多终端的通讯技术来实现一种集声音、文字、图像的低成本高效率的通讯服务,即时通讯将担负起这种重要责任[2]。作为即时通讯的一种运用的聊天软件,它继承了即时通讯软件的优点,它具有文字聊天、语音聊天、传送文件、拨打电话、远程协助、视频聊天、邮件辅助、发送短信、浏览咨询等等功能。开发基于桌面的,面向个人的大众化聊天软件,可以满足网民在网络交流的需要,和电话、手机有着异曲同工之妙,但较之电话和手机,聊天软件具有方便快捷,功能强大,交流成本低等优点46 毕业论文1.1即时通讯系统设计背景自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能。由于互联网的方便快捷的优点,人与人之间的交流也更多的是在网络上进行。在这样的时代背景下,即时通讯软件也顺势而生。即时通讯(InstantMessenger,简称IM)是一个终端连往一个即时通讯网路的服务。即时通讯,在过去,网民通常都会将IM等同于一个网络寻找朋友的工具、聊天的工具。但是,随着即时通讯软件功能和应用的逐渐丰富和完善,IM已经演化成一个综合的桌面通讯平台。目前,无论从娱乐角度还是从商务角度来看,即时通讯工具在国内外已经成为了一种富有价值的通讯工具,并且在一些公司的每天业务运作中发挥着重要的作用。桌面即时通讯软件是一个潜力巨大的支付窗口,它拥有能够把眼球转化成信息流乃至现金流的魔力。目前的即时通讯软件已经向游戏、音乐、社区,甚至门户等领域的发展,人们已经更乐于用这些即时通讯软件来交朋结友,发送手机短信,甚至传送文件[3]。1.2即时通讯系统国内外发展状况中国的大部分网络用户都拥有自己的QQ号码。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具——腾讯即时通信TencentInstantMessenger,简称TIM或腾讯QQ。腾讯QQ经过三年时间的发展,到2002年,其用户群成为中国最大的互联网注册用户群,注册用户达到1亿6000万,其中活跃用户总数超过5000万。自此腾讯QQ成为中国最大的即时通信服务提供商。腾讯公司是中国最早也是目前中国市场上最大的本土互联网即时通信软件开发商。公司成立7年多以来,一直以追求卓越的技术为导向,始终处于稳健、高速发展的状态。腾讯QQ超过4.3亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件[4]。46 毕业论文ICQ和MSN是在国外比较盛行的即时聊天工具,腾讯QQ的开发对MSN和ICQ都进行了借鉴。ICQ是ISeekYou(我找你)的缩写,最初是一家以色列公司开发出来的免费软件,中文名称目前可以称之为“网络呼叫器”,它在全球拥有超过4000万的用户。事实上这种软件最主要的功能就是让用户知道网络上的朋友现在有没有上线(前提是对方也有安装ICQ),然后可以互送Messages(消息)交谈或是交换档案等等,比电子邮件更具即时性。正如一位ICQ软件的最初程序设计员所说:“当你登录因特网之后,你周围都是些自己熟悉的人,而且,你还可以和他们分享这种体验,这的确是一件令人激动的事情[5]。”MSN是微软推出的聊天软件,是一套类似ICQ的网上即时通讯软件,它以最简单的方式为用户提供强有力的即时消息支持,同时能使MicrosoftOutlookExpress(R)和MSNHotmail(R)变得更简单易用。MSNMessengerService还可使用户间的联机交谈变得更加轻松愉快,了解谁在联机以及查看用户何时联机并与其交换即时消息。用户间可以进行单独的聊天,或者在同一个对话窗口中与多达四个的联系人进行聊天。自动的输入指示器可让用户知道何时联系人正在输入答复,还可以进行全球电话呼叫——以非常低的费用呼叫世界的任何地方。用户可以选择所要使用的电话服务提供商,从服务提供商的列表中选择最适合的提供商。用交谈取代键盘输入,使用计算机上的话筒和扬声器就可以和位于世界各地的朋友进行交谈,甚至可以呼叫联系人将文本消息发送到联系人的移动电话和传呼机上(注:此特性仅适用于美国和加拿大),而进入“聊天室”结识新朋友,或加入与名人聊天,此特性在所有地区都适用。用户可以使用MSNMessenger与朋友交换照片、喜爱的音乐或任何其他文件,也可以监视新的电子邮件并查看用户有多少新的电子邮件。MSNMessenger能在收到新的Hotmail邮件时通知用户,还能邀请联系人进行联机DirectPlay兼容游戏[6]。1.3即时通讯系统的未来研究方向首先是即时通讯的应用将更加的丰富化; 最近几年,可以清楚的感觉到,随着即时通讯工具本身应用越来越丰富,用户对即时通讯聊天之外的娱乐需求正在不断增长,更加丰富化的娱乐应用已经成为即时通讯未来重点的发展方向。为了满足用户日益旺盛的娱乐应用需求,许多即时通讯服务提供商都在不断的开发基于即时通讯平台的丰富化应用,例如:虚拟形象、魔法表情以及虚拟宠物等新的应用层出不穷。其次是即时通讯将更加汇聚人气,体现社区化和互动性;46 毕业论文分析显示,即时通讯之所以在近几年发展迅猛,除了其本身的功能强大之外,互联网用户迅速汇聚的人气也是重要的推动因素,据CNNIC统计报告显示,截止到2004年6月30日,我国上网用户总数为8700万,上网计算机达到3630万台,即时通信服务正和电子邮件、搜索引擎、上网浏览资讯等网络应用一样最大化的融入到了网民的日常生活中。人气汇聚所带来的就是社区化和互动性。据有关专家预测,在线生活在未来两三年内将成为互联网应用的热点,网络用户可以在网上进行买房,买车,养宠物等等与真实生活相似的网络生活。同时,一个纯粹的通讯工具,正在被赋予新的内涵,成为一个丰富的个人空间,这里面不仅有可以聊天的朋友,还有游戏、新闻、社区、日记本等等。互联网企业在网络上开办校友录,开创社区,为网络用户提供日记撰写的平台,让用户建立自己的blog,正是为了满足这些网络用户对在线生活的需求。第三,即时通讯与本地化应用的融合;随着即时通讯产品个人属性的加强和应用范围延伸,与本地化应用的融合将成为即时通讯产品的主要发展趋势。这种融合的趋势将首先体现在即时通讯服务商对本地用户资源的管理、分析,对本地文化的理解,以及基于本地用户需求基础上,对产品应用的不断优化[7]。1.4本文工作随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。本文主要对聊天软件的文字聊天和文件传送等相关功能的实现原理进行了研究。本文基于java即时通讯系统的设计与实现,通过java语言的编程,来实现即时通讯系统中即时在线聊天通信文件传送交流沟通的功能。本系统主要采用client/server模式架构,采取SOCKET技术来实现客户端与服务器端的联系交流工作,通过数据库的建立,来最终实现客户之间的数据交流沟通。本系统能够很好的满足用户之间信息交流和文件共享的要求,在用户聊天沟通,信息互动等方面能够很好的展现自己的功能。通过这次的系统开发和设计后,也使我对于JAVA语言有了更深层次的认识,并使自己的实践开发能力有了质的提高。通过这次的开发,也发现了自己存在的问题,开发能力不强,分析能力不足,看待问题的思考角度不够广阔,专业技能知识不够扎实等缺点。这些都需要我在今后的学习当中不断地去改正,更加的完善改进自己所做的程序系统。46 毕业论文2.实现即时通讯系统关键技术2.1JAVA简介Java语言是SUN公司于1995年5月推出的新一代面向对象的计算机通用编程语言,是继WWW之后又一引起世界轰动的产品。Java语言的特点是跨平台和强大的网络编程功能。在Java语言诞生之前,Internet已存在,所以Java语言本身就封装了大量进行网络编程的类库,使得网络编程功能强大,同时又简化了网络编程的操作。因此利用Java语言可以开发出功能强大的网络应用程序[8]。2.1.1JAVA的发展历史1990年12月,SUN公司成立了一个名为(GreenTeam)绿色项目的小组,JamesGosing(也就是Java之父)也是这个小组的成员。这个小组的主要目标是开发一种能够在消费性电子产品上运行的分布式的系统架构,以掌握这种应用的趋势。1992年9月3日(GreenTeam)绿色项目小组展示了Start7手持设备,它类似于今天的PDA,但是功能比PDA还强大,拥有5寸的彩色LCD显示屏、PCMCIA接口并且支持无线通信。这个设备中的程序是使用OAK程序设计语言实现的,OAK名字的由来是因为JamesGosing的办公室窗外有一棵橡树,根据这棵橡树而命名。但是,在注册商标时却发现这个名字已经被别的公司占用了,后来更名为Java。1993年,全世界第一个Internet网页浏览器Mosaic诞生了,JamesGosling认为Internet与Java的特性不谋而合,便使用Java在Internet平台上编写出高交互性的网页程序,这就是JavaApplet。JDK附带的Applet的DEMO程序,读者可以在JDK安装文件夹中找到更多更有趣的DEMO。在那个年代,还没有其他的程序设计语言能够做到这一点。1995年,OAK被命名为Java编程语言,并于5月23日正式对外发布JDK(JavaSEDevelopment46 毕业论文Kits)1.0版本,Java语言正式诞生了。Java是一种极富创造力的面对对象的程序设计语言,同时也是一种跨平台的程序设计语言。用Java语言编写的程序,可以运行在任何平台和设备上,例如跨越IBM个人电脑、Windows视窗系统、MAC苹果系统、手机应用程序、各种电子设备等系统和硬件平台。Java非常适合于企业网络和Internet环境,并且已成为Internet中最有影响力、最受欢迎的编程语言之一[9]。2.1.2JAVA命令功能:Java归档工具语法:jar[命令选项][manifest]destinationinput-file[input-files]jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将javaapplet或应用程序打包成单个归档文件。将applet或应用程序的组件(.class文件、图像和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar还能压缩文件,从而进一步提高了下载速度。此外,它允许applet的作者对文件中的各个项进行签名,因而可认证其来源。jar工具的语法基本上与tar命令的语法相同。命令选项:-c:在标准输出上创建新归档或空归档。-t:在标准输出上列出内容表。-x[file]:从标准输入提取所有文件,或只提取指定的文件。如果省略了file,则提取所有文件;否则只提取指定文件。-f:第二个参数指定要处理的jar文件。在-c(创建)情形中,第二个参数指的是要创建的jar文件的名称(不是在标准输出上)。在-t(表(或-x(抽取)这两种情形中,第二个参数指定要列出或抽取的jar文件。-v:在标准错误输出设备上生成长格式的输出结果。-m:包括指定的现有清单文件中的清单信息。用法举例:“jarcmfmyManifestFilemyJarFile*.class”-0:只储存,不进行ZIP压缩。-M:不创建项目的清单文件。-u:通过添加文件或更改清单来更新现有的JAR文件。例如:“jar-uffoo.jarfoo.class”将文件foo.class添加到现有的JAR文件foo.jar中,而“jarumfmanifestfoo.jar”则用manifest中的信息更新foo.jar的清单。-C:在执行jar命令期间更改目录。例如:“jar-uffoo.jar-Cclasses*”将classes目录内的所有文件加到foo.jar中,但不添加类目录本身。程序示例1:将当前目录下所有CLASS文件打包成新的JAR文件:jarcffile.jar*.class46 毕业论文2:显示一个JAR文件中的文件列表:jartffile.jar3:将当前目录下的所有文件增加到一个已经存在的JAR文件中[10]:jarcvffile.jar*2.2SQLSERVER简介SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。SQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出的最新版本。SQLServer特点:1.真正的客户机/服务器体系结构。2.图形化用户界面,使系统管理和数据库管理更加直观、简单。3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。4.SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQLServer也可以很好地与MicrosoftBackOffice产品集成。5.具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台使用。6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。7.SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMSSQLServer2000新特性:1.支持XML(ExtensiveMarkupLanguage,扩展标记语言)2.强大的基于Web的分析3.支持OLEDB和多种查询4.支持分布式的分区视图[11]46 毕业论文2.3Socket技术Socket是著名的网络应用编程接口(API)之一,而Java语言是网络编程的主要语言,提供了强大和独特的网络通讯支持机制和能力。在Java网络编程中,Socket层次,即传统网络编程经常采用的方式,通过在Client/Server(客户机/服务器)结构的应用程序之间建立Sock-et套接字连接,然后在连接之上进行数据通信,是一种经常采用的通信模式。套接字类型Socket根据其传输数据类型的不同,可以分为以下三种类型:1)字节流套接字(Socket-stream),提供了一个双向的、面向连接的、可靠的、无差错的字节流通信,无重复的发送且按发送顺序接收。内设流量控制,避免数据流超限;不保持信息边界。实现这种特性的通信协议在收到差错时将重传信息,若在连接已经切断后再发数据则返回错误信息,FTP协议即采用流式套接字;2)数据报套接字(SocketDgram);提供了一个无连接服务,每个数据包都有地址。数据包以独立包形式被发送,但不保证顺序,不保证可靠或不重复。网络文件系统NFS使用数据报式套接字。3)原始数据套接字(SocketRaw),该接口允许对较低层次协议,如IP、ICMP直接访问。这不是给普通用户使用的,而是给要开发新协议或对低层协力议有兴趣的人使用[12]。2.4Eclipse简介Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在[13]。46 毕业论文2.5系统运行环境要求系统的性能要求通常指系统需要的存储容量以及后援存储,重新启动和安全性,运行效率等方面的考虑。硬件系统环境:1.客户机无特殊要求,只要能上连接互联网即可;2.服务器端处理器:Intel奔4,内存:512M或更大,硬盘:40G或更大,软件系统环境:1.客户机上为Windowsvista/xp/7系统即可;2.服务上为Windowsvista/xp/7,MicrosoftSQLSERVER2000,MicrosoftOffice200346 毕业论文3.系统分析3.1可行性研究3.1.1技术可行性分析JAVA技术日趋成熟,JAVA的平台无关性使得用JAVA写的应用程序不用修改就可在不同的软硬件平台上运行,它支持数据分布和操作分布这两种分布性,对于前者,Java提供了一个叫做URL的对象,利用这个对象,你可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java的applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便实现JAVA的分布式特性。另外Java还支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。从以上技术要求来看,当今现有的技术绝对能够满足设计这个系统的要求。3.1.2经济可行性分析开发此网络通信系统所需的硬件(计算机及相关硬件)和软件环境(Eclipse开发工具;数据库SQLServer),在市场上都很容易购买到或从相关网站免费下载,开发系统成本主要集中本系统的开发与维护上,对用户不造成过重的经济负担。而一旦此系统投入使用,可作为公司,企业内部交流工具使用,一方面既充分利用网络资源,又保证内部信息的安全。所节省的大量人力、财力产生的效益将远远大于本系统的开发成本,所以从经济方面上讲开发此系统是可行的。3.1.3操作可行性分析46 毕业论文此网络通信系统具备友好的用户界面,使用方便、快捷,操作简单且易于维护,易于被用户接受,用户只需熟练操作计算机,和对此系统使用做简单的了解即可方便使用,而且使用此系统可以大大促进人们之间的交流和沟通,从操作方面看,此系统的开发是可行的。3.1.4其他可行性分析本系统的开发,是典型的Mis开发,主要是对数据的处理,包括数据的收集,数据的变换,及数据的各种报表形式的输出。采用流行的Java+SQLSERVER体系,已无技术上的问题。所有技术资料都为合法。开发过程中不存在知识产权问题。未抄袭任何网站,不存在侵犯版权问题。开发过程中未涉及任何法律责任。综上所述,本系统的开发从技术上、从经济上、从法律上都是完全可靠的。3.2需求分析3.2.1业务流程分析在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。本课题设计的即时通讯系统业务流程如下:1.系统启动服务器。2.客户端向服务器注册,告知服务器它在监听某主题。3.客户注册之后,向服务器发送有关事件处理消息,如发送消息给好友,接收好友的消息,发送文件,接收文件,添加好友等等。4.服务器再把相应的消息发送给所有监听此主题的客户。3.2.2概念结构设计本系统用户之间关系是实现系统聊天功能的关键,用户与用户之间实现聊天功能必须要在建立起好友关系的基础之上才能进行聊天,每个用户选择自己好友的同时都需要首先知道好友的各种资料,而资料的填写在用户注册中完成,用户注册的相关资料和用户之间关系的的概念模型(E-R图)如下图:46 毕业论文NN注册用户A好友关系注册用户B图3-1用户关系图用户的号码用户的资料用户的E-Mail用户状态用户的性别用户的IP地址用户的籍贯注册用户A用户的昵称用户的密码图3-2用户注册模型图46 毕业论文系统设计4.1总体设计此聊天软件系统是模拟现今国内最为流行的即时性通讯工具OICQ而设计的,能够实现注册、登录、添加好友、文字聊天等功能。该聊天软件系统是采用C/S结构,即客户端与服务器端的结构体系。基于对该聊天软件功能的分析,本文分别对客户端与服务器端进行了设计。该聊天软件服务器端的功能是实现对客户端提交的用户信息进行处理。服务器设计内容包含:信息接收、注册、登录、添加好友等。“信息接收”是提供服务器接受客户端发送信息的功能;“注册”是服务器端接受到用户的注册信息请求后,将请求信息写入到数据库,为用户的注册提了相关服务;“登录”是服务器通过验证登录信息来实现相关的服务;“好友添加”是服务器对添加的好友信息进行处理等相关操作。客户端即用户使用的应用程序端。用户通过该聊天软件的客户端来实现网上聊天的相关功能:注册、登录、添加好友、文字聊天等。注册功能是提交用户相关信息以及获得一个属于自己登录该聊天软件系统的用户ID号;登录功能是实现验证用户信息与合法使用该聊天软件系统的权限;添加好友是实现用户之间好友添加的操作;添加好友成功后,就可以与好友之间开始文字聊天、文件传输等功能。接下来本文将分析实现即时通讯系统的三个主要功能模块的要求和具体架构设计,这三个功能模块分别为即时在线聊天功能,在线聊天管理子系统和好友管理模块,他们决定了聊天系统的功能实现的主要过程,对其进行分析和架构能更好的认识即时通讯系统的工作流程。4.2详细设计4.2.1即时在线聊天功能本系统采用的设计模型为平时所说的C/S架构,Client/Server,该系统功能主要包括三层,客户端,服务器端,以及数据库服务器,客户端用来提供用户的登录,服务器端用来对登录的用户进行管理以及用来处理信息之间的转发,数据库通过与服务器端连接存放一些重要的信息。它们之间的关系如图4-1所示:46 毕业论文后台数据库SQLServer2000服务器客户客户客户JDBCODBCSocket(TCP)Socket(TCP)Socket(TCP)UDPUDPUDP图4-1客户端/服务器端模型图客户端标示层客户端逻辑层客户端网络层服务器网络层服务器逻辑处理层服务器数据操作层数据库服务器统称服务器逻辑层对数据库的操作逻辑主要负责处理一些通讯方面的逻辑服务器层又分成四个部分如图4-2:图4-2服务器层的构成46 毕业论文4.2.2在线聊天管理子系统一.对于新用户的数据注册管理功能注册新用户首先进入注册界面后,其中会出现相应的注册内容需要用户去进行填写,在填写相关的用户信息后,会把相应的用户数据信息从客户端发送至服务器端,与数据库进行连接,在数据库中存储如新的用户数据,并进行数据验证,将数据存储信息反馈给客户端的用户,告知其注册的结果是否成功,成功后则可以进行用户登录工作,若出现与数据库连接或存储失败,则也会反馈给客户端告知其注册失败,请重新确认连接是否正确后继续注册工作完成注册工程的主要代码如下:publicstaticbooleanAddNewUser(Stringname,Stringpassword){try{Class.forName(driverName);DBdb=newDB(driverName,dbURL,userName,userPwd);db.connectDB();db.openStatement();if(db.Adduser(name,password)){db.closeStmt();returntrue;}else{db.closeStmt();returnfalse;}}catch(Exceptione){//db.closeStmt();e.printStackTrace();}returnfalse;46 毕业论文}下图4-3便是服务器之间的用例交互图提交注册资料验证结果客户端服务器图4-3用例交互图二.对数据库中的在线用户信息和非在线用户进行管理。对于在线用户和非在线用户管理及发送的信息管理如下图4-4结构:存储信息导入数据库在线?监听服务接收者不在线向发送者返回信号接收者在线处理发送信息NY图4-4信息管理图46 毕业论文这样能很好的保存非在线用户的数据,并在界面中显示出在线以及非在线用户的状态。本程序将首先在发送用户信息的时候,先判断用户在线与否,若数据库的在线与否标志为未在线,将会返回发送账号,显示对方账号会不在线状态,无法将信息发送给对方用户,将会把信息存储到数据库中,并向发送者返回信号。若判断为对方在线用户为在线状态,则将信息发送给对方账号,并且对方账号状态中将会显示为有消息,来提示对方账户查看消息内容。三.对数据库中的聊天信息进行管理。首先在界面中添加好友,并获得同意后,将会在界面中显示出用户的具体信息,头像等内容,点击用户将会弹出一个新窗口,为对话框,在对话框中输入信息后,将信息发送至服务器端,进行数据处理,服务器判断对方客户端反应状态,将存储的数据信息再次发送至对方客户端中,完成了数据交换工作,对方客户端收到的数据即为之前发送的聊天信息,在对方收到数据信息后,会通知对方账户显示为有消息,提示对方查看信息。4.2.3在线聊天好友管理系统好友管理系统作为即时通讯系统中的重要模块,对于整个系统的正常运行起着关键性作用。好友管理系统很好的为用户提供了好友信息和好友状态,来判断好友是否在线,并可以通过服务器的数据交流,在客户端显示出用户现在的信息状态,是否有好友给用户发送了信息,从而保证信息的及时性,也能够帮助用户选择自己需要的用户进行交流,可以说好友管理系统在整个系统当中起着承载的作用,是程序的核心系统之一.本程序的好友管理系统实现了用户通过账户信息来添加好友列表中的好友,并可以查看好友的具体信息如好友签名,在客户的列表中也将会显示好友的状态为是否在线,从而能正确的选择与在线的好友进行聊天,在聊天中,当用户发送信息后,也能及时的在对方用户列表中显示出有消息状态,来提示用户读取信息,保证了信息的即时性。在好友管理中时刻与数据库进行连接,通过与服务器的信息交流和反馈,来获得最新的好友列表,并时刻保证更新,在发送消息的时候,也将通过监听服务器进行监听,并对对方用户发送信号,提示其有消息,并将信息发送至对方客户端中。好友管理系统整个功能如下图所示:好友添加过程图如图4-5所示:46 毕业论文数据库服务器用户1用户N服务器与数据库之间的信息互相交流提交好友添加好友确认信息用户1向用户N发出添加好友请求信息发送反馈信息用户之间的通信图4-5好友添加工程好友在线状态管理示意图如图4-6所示:上线用户连接服务器连接数据库,获取好友列表Run()函数线程监听利用循环语句判断是哪个好友上线,并显示好友状态结束操作图4-6好友在线状态管理图46 毕业论文5.数据库设计数据库设计是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建议中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。5.1数据库需求分析数据库结构设计的第一个阶段,也是非常重要的一个阶段时数据库需求分心。在这个阶段主要时收集基本数据以及数据处理的流程,为以后进一步设计打下基础。一.内容调查应用系统用户所需要操作的数据,决定在数据库中存储什么数据。本程序所需要操作的数据为用户账号,用户名,用户账号的密码,用户账号的头像信息,用户账号的签名等数据,应当针对于以上数据设计好其数据类型并进行设置。二.处理l处理逻辑名:用户注册说明:新的用户首先要进行注册,生成用户的号码和登录密码之后才能进行服务器登录。处理逻辑编号:1输入的数据流:用户名、密码,昵称等信息处理过程:用户首先将自己的信息资料输入,包括用户的号码,昵称,用户名称,用户头像,用户签名等信息输出的数据流:用户信息表处理频率:对每个用户基本信息表处理一次l处理逻辑名:用户登录46 毕业论文说明:客户登录,进行网络聊天通信处理逻辑编号:2输入的数据流:用户名、密码处理过程:服务器连接数据库,查询用户信息表,判断登录信息是否正确输出的数据流:服务器返回的登录处理数据流处理频率:对每个用户基本信息表处理一次l处理逻辑名:好友管理说明:上线的用户根据自己需要进行查找好友,添加好友,删除好友等操作处理逻辑编号:3输入的数据流:用户的相关操作信息处理过程:根据用户提出的操作要求,连接服务器,进行数据库查询,得到符合条件的相关信息,服务器将结果返回给用户。输出的数据流:服务器返回的相应处理结果处理频率:依用户要求进行处理l处理逻辑名:消息通信说明:两个或多个用户通过连接服务器,进行网络通信处理逻辑编号:4输入的数据流:用户的发送消息或接收消息流。处理过程:用户通过在好友列表中好友的IP地址,利用UDP协议与其他用户进行信息交流。输出的数据流:符合条件的发送(接收)消息流处理频率:依用户要求进行处理一.数据项数据项是数据结构中讨论的最小单位,是数据记录中最基本的、不可分的有名数据单位。数据项可以是字母、数字或两者的组合。通过数据类型(逻辑的、数值的、字符的等)及数据长度来描述。数据项用来描述实体的某种属性。在地理信息系统中,数据项描述对象是地理实体各要素及其属性,分为几何属性(地理位置和形状)和非几何属性,包括标量属性(各种量测值)和名称属性(地名及地物名)等。本程序中的数据项46 毕业论文包括名称、含义、类型、取值范围、长度以及和其他数据项之间的逻辑关系。一.数据结构若干个数据项有意义的集合,包括名称、含义以及组成数据结构的数据项。本程序的数据流图如下图5-1:用户A1注册2登陆3好友管理4消息通信用户BD1D2用户基本信息表用户好友表登录注册请求读取好友信息的请求信息发送信息接收消息图5-1通讯系统数据流图数据条目l用户基本信息表编号:D1来源:客户端写入去向:数据库数据流量:每位用户1份组成:用户的号码+用户的昵称+用户的密码+用户的状态+IP地址+用户的头像+用户的签名l用户好友表编号:D2来源:客户端写入去向:数据库数据流量:每位客户1份组成:用户的号码+好友的号码46 毕业论文5.2数据库表的创建表5-1用户基本信息表列名数据类型说明应用举例ID主键自动编号包含一个作为记录识别标志的长整数的数字域。采用自动编号。是用户表的主索引。1Name文本包含用户ID的文本域。76876862IP文本包含用户计算机当前IP的文本域。192.168.0.1UnderWrite文本包含用户的的个人签名努力。。加油Color文本包含用户发言时字体的颜色的文本域。BlackEmail文本用户的电子邮箱号码Zgt3276101@qq.compic文本用户的头像号1.gifLogintime日期/时间包含用户登录时间的日期变量SunMay2222:43:06CST2011Sex文本包含用户的性别女表5-2用户好友信息表列名数据类型说明应用举例ID主键自动编号包含一个作为记录识别标志的长整数的数字域。采用自动编号。是用户表的主索引。2Name文本包含用户好友ID的文本域76876861IP_Friend文本包含用户好友计算机当前IP的文本域。192.168.0.2Flag文本消息状态显示2Pic文本用户好友的图像信息2.gifUnderWrite文本用户好友的签名信息加油吧。46 毕业论文5.3数据库与程序的连接编译5.3.1JDBC简介JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,同时,JDBC也是个商标名。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。5.3.2JDBC语句编译和配置本系统的JDBC编译语句如下publicstaticvoidmain(String[]args){StringdriverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";StringdbURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=PersonDB";StringuserName="sa";StringuserPwd="sa";ConnectiondbConn;46 毕业论文try{Class.forName(driverName);DBdb=newDB(driverName,dbURL,userName,userPwd);db.connectDB();db.openStatement();System.out.println("ConnectionSuccessful!");//Statementstmt=dbConn.createStatement();if(db.Modify("test","1023"))System.out.println("ok");elseSystem.out.println("error");}catch(Exceptione){e.printStackTrace();}同时载入msbase.jar,mssqlserver.jar和msutil.jar于lib文件下使JAVA程序与数据库进行连接图5-2连接添加JAR图46 毕业论文6.系统实现6.1用户登陆和注册界面这个部分主要是实现登陆界面和注册界面的架构设计,并完成用户的注册和登陆工作。JAVA的容器是Conponent的抽象类的一个子类。一个容器可以容纳多个组件,并使它们成为一个整体。用户登陆界面和注册界面的设计就是运用了Frame框架的架构,在Frame中可以作为JAVA的顶级窗口使用,它是Window类的子类,带有标题并可改变大小。同时用add()方法向Frame中添加,登陆,取消,注册组件。并完成框架大小尺寸,背景颜色的设计。接着设计按钮事件,通过addActionListener事件的添加设置发送密码验证按钮事件和窗体关闭事件。在设计窗体的同时还要完成配置文件和连接服务器程序通过与Helptool连接配置与服务器连接并读取配置文件信息,才能进行后来的验证和登陆工作。定义actionPerformed,创建SOCKET来发送验证信息并等待服务器发送的验证结果,如果验证成果正确,则完成登陆工作。完成设计后的登陆界面具体如图6-1所示图6-1登陆界面在账户窗口中输入相应的注册过的账户号,在密码窗口中输入相应注册账号的密码,并选择登陆按钮,鼠标单击登陆按钮后,将会将密码发送至服务器进行验证工作,验证成功后完成登陆工作进入用户界面。若验证未成功,将无法完成登陆工作,仍然显示为登陆界面。若要关闭窗口则鼠标点击结束按钮,将会关闭登陆界面框架。若未有账户和密码则要先进行注册工作,请先鼠标点击注册按钮。进入注册人界面进行注册工作,注册工作将在下面进行介绍。其下为登陆界面设计的主要代码publicclassLoginFrame{46 毕业论文Framejf1=newJFrame("login");JPaneljp1=newJPanel();JLabell1=newJLabel("账户");JLabell2=newJLabel("密码");JLabell3=newJLabel("JAVA模拟聊天窗口");JTextFieldjtf1=newJTextField(15);JPasswordFieldjtf2=newJPasswordField(15);JButtonjb1=newJButton("登陆");JButtonjb2=newJButton("结束");JButtonjb3=newJButton("注册");Propertiesp=newProperties();//服务器信息Socketsocket;booleanisreg=false;publicLoginFrame(){//读取配置文件,连接服务器需要HelpTool.ReadServerConfig(p,".\server.txt");System.out.println(p.getProperty("server")+p.getProperty("port"));//设置窗体关闭事件jf1.addWindowListener(newWindowAdapter(){@OverridepublicvoidwindowClosing(WindowEventarg0){//TODOAuto-generatedmethodstubSystem.exit(1);}});46 毕业论文  在登录之前我们还需先进行用户注册的过程,点击用户注册的按钮,进行用户注册工作,在新弹出的用户注册界面进行用户注册,填入用户相关的注册信息,并将信息发送至数据库进行存储。用户注册框架的设计与登陆界面设计类同,也是Frame框架的具体设计,在框架中添加了新的对话jlabel账号,密码,昵称,头像,签名信息。并设计了newJButton提交,返回,结果按钮。并设计监听事件,完成按钮和输入框的具体实现工作。提交的监听工作具体为向服务器发送验证信息,在接受服务器的验证结果后,向服务器的数据库写入用户名和密码,并在本地生成相应的文件,如果注册失败,则在界面的最下方显示注册失败,请重新进行相应的注册程序。而注册提交时间中的注册信息,将从设计的jlabel中提取,在jlabel中用户将输入自己的具体注册信息,在提交时间中将用户输入的具体信息提交至服务器进行验证存储工作,最后实现用户的账号注册,才能在接下来完成登陆的具体工作。用户注册的功能实现后的操作图如图6-2所示:图6-2用户注册注册具体过程的在登陆界面点击注册按钮后进入注册界面,请在注册界面的相应的对话框中填入用户的账户,账户为阿拉伯数字,密码,昵称和签名,并选择自己喜欢的头像,在注册信息确认无误后请点击提交按钮,若注册成功,则会在注册表结果那一栏显示注册成功,成功后请点击返回按钮,返回至登陆界面进行登陆操作,如果与服务器连接失败与数据库连接失败或数据输入为空或有数据库中有相同的账户,则为注册失败,将在结果栏内显示注册失败,请认真核对注册信息,重新填写注册。注册整个过程实现的相应主要代码如下:publicclassRegFrame{//注册窗口JFramejf=newJFrame();JPaneljp1=newJPanel();JLabeluserjl1=newJLabel("账号");46 毕业论文JLabelpwdjl1=newJLabel("密码");JLabelQjl2=newJLabel("昵称");JLabelimgjl1=newJLabel("头像");JLabeltitlejl1=newJLabel("签名");JTextFieldusertext=newJTextField(15);JPasswordFieldjtf2=newJPasswordField(15);JTextFieldjtf3=newJTextField(15);JComboBoxjcb1;//=newJComboBox();JTextFieldtitletext=newJTextField(15);JButtonjb1=newJButton("提交");JButtonjb2=newJButton("返回");JLabeljLabel=newJLabel("结果");LoginFramelf1;publicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstublf1.isreg=true;Propertiesp=lf1.p;try{Socketsock=newSocket(p.getProperty("server"),Integer.parseInt(p.getProperty("port")));lf1.socket=sock;Stringusername=usertext.getText();Stringpwd=jtf2.getText();OutputStreamos=sock.getOutputStream();PrintStreamps=newPrintStream(os);//发送验证信息ps.println("reg:"+username+":"+pwd);BufferedReaderbr=newBufferedReader(newInputStreamReader(sock.getInputStream()));//接受验证结果Stringresult=br.readLine();if(result.equals("ok")){//注册成功,在服务器写入用户名和密码,在本地生成相应的文件jLabel.setText("注册成功");Filefile=newFile(".\"+username);file.mkdir();file=newFile(".\"+username+"\my.txt");file.createNewFile();Filef2=newFile(".\"+username+"\friends.txt");f2.createNewFile();46 毕业论文Stringindex=newInteger(jcb1.getSelectedIndex()).toString();Propertiesp2=newProperties();p2.setProperty("myQname",jtf3.getText());p2.setProperty("mytitle",titletext.getText());p2.setProperty("myimg",index);FileOutputStreamoStream=newFileOutputStream(file.getAbsolutePath());p2.store(oStream,null);}else{jLabel.setText("注册失败");}6.2登陆后和聊天界面账号密码验证完成后,即完成登陆过程。进入用户界面。用户界面为整个程序的核心界面,用户之后的聊天,添加好友,文件传送等工作都将通过用户界面中的功能来进行实现。首先制作用户界面也先用Frame框架进行整体的框架设计,在框架中添加Newlabel好友列表,添加newJButton添加好友,修改密码按钮。建立NewJList好友列表。同时定义newProperties()存储个人信息,newHashMap()朋友列表对应的哈希表,用于存储每个朋友对应的窗口,键值为账号,接下来建立MyCellRenderer类,实现好友列表显示,并通过person.status的值的定义来判断好友列表中好友的在线状态和消息接收状态。接下来建立鼠标双击事件mouseListener=newMouseAdapter(),如果双击好友列表中的好友成功,则会转至chatFrame也就是聊天框内,进行聊天过程。在这些之前,用户界面会先进行用户好友列表初始化过程,通过SOCKET与服务器进行连接,获取用户初始用户列表的具体性息,并显示在用户界面中,在用户界面中如若想与其他未加入好友列表中的好友进行聊天的话,首先也要进行好友添加的工作。首先我们先制作好友添加事件,添加ActionListener(new46 毕业论文ActionListener()好友添加监听事件,通过TRY,CATHCH函数,来实现用户所输入账号信息与服务器信息确认验证的过程,如果验证正确,则将会将输出信息显示在相应的添加好友的用户界面中,提示其添加需求,确认后,完成用户的添加过程。在整个界面的最下方还有一个监听事件为修改密码,设置修改密码监听事件,首先通过SOCKET连接服务器,对数据库中的信息进行连接更新,将新输入的信息更新至数据库中,进行数据的更新,来达到修改的目的。用户界面如图6-3所示图6-3用户界面用户添加还有示意图如图6-4所示图6-4添加确认过程完成添加好友后如图6-5所示:46 毕业论文图6-5添加好友的界面信息鼠标双击用户界面显示聊天框如图6-6所示图6-6聊天窗口登陆界面中点击修改密码后的窗口如图6-7所示图6-7修改密码窗口其中用户界面的主要编译代码如下:publicclassMainFrameextendsJFrame{46 毕业论文JPaneljp=newJPanel();JLabeltitle;//标题JLabeljl1=newJLabel("好友列表");JPaneljp1=newJPanel();JButtonset=newJButton("添加好友");JButtonmodifyp=newJButton("修改密码");JTextFieldaddfriend=newJTextField(10);JScrollPanejsp=newJScrollPane();//JComboBoxjcb;//=newJComboBox(picture);Propertiesp=newProperties();//用于存储个人信息HashMapfriends=newHashMap();//朋友列表对应的哈希表,键值为账号HashMapChatFrames=newHashMap();//用于储存每个朋友对应的窗口,键值为账号DefaultListModellistModel=newDefaultListModel();JListfriendList=newJList(listModel);//好友列表SocketclientSocket;//和服务器的连接SocketStringmyname;//用户的账号Personme;//保存使用这个主窗口的客户classMyCellRendererextendsJLabelimplementsListCellRenderer{publicComponentgetListCellRendererComponent(JListlist,//thelistObjectvalue,//valuetodisplayintindex,//cellindexbooleanisSelected,//isthecellselectedbooleancellHasFocus)//doesthecellhavefocus{Personperson=(Person)value;intimg=person.getImg();setIcon(HelpTool.iis[img]);46 毕业论文if(person.status==1)setText(person.getQname()+"(在线)");elseif(person.status==2)setText(person.getQname()+"(有消息)");elsesetText(person.getQname());if(isSelected){setBackground(list.getSelectionBackground());setForeground(list.getSelectionForeground());}else{setBackground(list.getBackground());setForeground(list.getForeground());}setEnabled(list.isEnabled());setFont(list.getFont());setOpaque(true);returnthis;}}修改密码信息的主要编译代码如下:publicModifyFrame(finalSocketclient,finalStringname)//publicModifyFrame(){this.client=client;this.name=name;//设置OK按钮的发送事件ok.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){if(!newpwd.getText().equals(newpwd1.getText())||jl1.getText().equals(""))JOptionPane.showMessageDialog(null,"pleaseinputthesame46 毕业论文password!","errormessage",JOptionPane.INFORMATION_MESSAGE);else{try{OutputStreamos=client.getOutputStream();PrintStreamps=newPrintStream(os);ps.println("modify:"+name+":"+newpwd.getText());}catch(IOExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}jf.setVisible(false);}}});//设置CANCEL按钮的发送事件cancel.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){jf.setVisible(false);}在进入用户界面并添加好友后,本程序主要实现的功能也以实现聊天功能为主。聊天功能首先建立一个新的聊天对话框架运用frame建构新的聊天框架结构在聊天框架中设计出JButton发送消息,发送文件功能按钮,接着publicChatFrame(finalSocketclient,Personperson),获得传进来的Socket和用户名,启动接收线程recv.start(),并设置按钮的发送消息事件,利用TRY,CATCH语句,OutputStreamos=client.getOutputStream()和PrintStreamps=newPrintStream(os),来实现语句的输入为客户端向服务器的输入信息,并在ChatRecord中显示为“我说”:+输入的信息的形式显示。在C/S模式结构下,服务器接收客户端输入的显示信息,进行验证,验证成功后,发送至聊天对象客户端中,聊天客户的界面中的Person.status=2,则在聊天框中用户显示为有消息,提示用户双击好友,触发鼠标双击事件,打开对话框,显示对话内容。聊天过程的示意图如图6-8所示46 毕业论文图6-8发送消息过程图在发送消息后好友界面框中显示的有消息图如图6-9所示图6-9界面状态显示除了单体私聊外,本程序还进行了群聊的开发,实现多人聊天的功能。本程序的多人聊天也是基于单体私聊功能的基础上进行扩展的。针对于单体之间一对一的聊天,群聊可以面向更多更广的对象,实现一对多的互动聊天。程序的设计上也与单聊的设计有一定的类似性,只不过开启的监听线程比私聊的更多,通过服务器交换的数据也要比私聊的更多,将同一个数据,通过服务器传输给更多的用户,实现一人发送,多人接收的过程。通过群聊的开发,可以更好的掌握聊天功能的开发,对于聊天功能的掌握有着更进一步加深。具体的群聊功能的使用过程如下图6-10所示:46 毕业论文图6-10群聊的聊天过程完成聊天过程编译的主要代码如下publicclassChatFrame{JFramejf=newJFrame();JPaneljp=newJPanel();JPaneljp1=newJPanel();JTextPaneChatRecord=newJTextPane();JTextPaneChatStr=newJTextPane();JButtonsendbtn=newJButton("send");JButtonsendfilebtn=newJButton("sendfile");JScrollPanesp1=newJScrollPane(ChatRecord);JScrollPanesp2=newJScrollPane(ChatStr);Socketclient;Personop;JLabeljl1;publicChatFrame(finalSocketclient,Personperson){this.client=client;46 毕业论文this.op=person;jl1=newJLabel(HelpTool.iis[op.getImg()]);endbtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){Stringsendstr=ChatStr.getText();try{OutputStreamos=client.getOutputStream();PrintStreamps=newPrintStream(os);ps.println("talk:"+op.getName()+":"+sendstr);Stringrecord=ChatRecord.getText();ChatRecord.setText(record+"我说:"+sendstr+" ");ChatStr.setText("");}catch(IOExceptione1){e1.printStackTrace();}}});6.3文件的发送与接收 本聊天系统还可以进行文件的在线传送与接收功能,在弹出的新对话框右下角即有发送文件的按钮,点击按钮后会弹出选择文件列表菜单,在菜单中选择自己将要发送的文件并确定。确定后在对方用户会弹出提示框,提示对方放松文件给你,并确认是否要接收,在确定要接收后,会弹出新的对话框,选择接收文件保存的位置,并确定选择,即进行文件传输工作,文件传输完成,出现提示框,提示文件传送完成。传送文件功能的设计首先在Chatframe设计按钮发送文件,并定义发送文件按钮事件sendfilebtn.addActionListener,建立文件发送和接收类,并建立FileRecvlistenThread46 毕业论文接收监听事件,对文件传输过程进行监听。文件传输过程首先通过SOCKET与服务器进行连接,从客户端读取数据java.io.InputStream,并启动线程,系统打印出准备传送。选择要传输的数据,数据Datebefor=newDate,并将字符串StringFilenames=newString(filename,0,ends),接着将选择的文件名信息和文件信息从客户端读取出,FileOutputStreamfos=newFileOutputStream(fileout),之后好友客户端读入相应的数据信息,进行接收文件工作,接收的数据Dateafter=newDate,并弹出对话框显示接收的时间longdiff=after.getTime()-befor.getTime(),INFO信息为保存到的文件名+文件大小+文件格式+字节+共用的时间信息。本程序的编写主要在于文件信息通过客户端的读取,传送,并在另一个客户端进行接收的工程,通过C/S模式,有服务器来完成读取传送的工作,在下一个客户端中进行接收,最终完成文件的发送整个过程。文件的整个传送过程的示意图如下图所示:图6-11选择文件框选择文件后弹出确认框图6-12确认接收选择确定后即进行文件的传送。文件接收和传送的具体代码编译如下publicclassFileReceiverThreadextendsThread{46 毕业论文privatejava.net.Socketsocket=null;privatejava.io.InputStreamin=null;//从客户端读数据的privatejava.io.PrintWriterout=null;//向客户端写数据privateStringserverMsg;Stringpath;publicFileReceiverThread(Socketsocket,Stringpath){try{this.socket=socket;//连接SOCKETthis.path=path;this.in=this.socket.getInputStream();this.out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(this.socket.getOutputStream())),true);}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}this.start();//启动线程}JFileChooserjfc=newJFileChooser("choosefile");//选择传送的文件jfc.setDialogTitle("Chose...");intresult=jfc.showOpenDialog(null);jfc.setVisible(true);FileselectedFile=null;if(result==JFileChooser.APPROVE_OPTION){selectedFile=jfc.getSelectedFile();if(selectedFile.exists()){OutputStreamos;try{os=client.getOutputStream();PrintStreamps=newPrintStream(os);ps.println("sendfile:"+op.getName()+":"+selectedFile.getName());Sockets=newSocket(HelpTool.server_ip,HelpTool.fileport);//连接服务器.SendFileThreadsfr=newSendFileThread(selectedFile,s);//发送文件sfr.start();}catch(IOExceptione){46 毕业论文e.printStackTrace();}System.out.println("Yes!Youhaveselectedtherightfile."+selectedFile.getName());//打印传送的文件信息}else{System.out.println("No!Youdidnotselecttherightfile.");}}elseif(result==JFileChooser.CANCEL_OPTION){System.out.println("Cancelbuttonispushed.");}elseif(result==JFileChooser.ERROR_OPTION){System.err.println("Errorwhenselectfile.");}}46 毕业论文7.总结我在这次的毕业设计中收获了不少,通过这几个月的对JAVA知识的更进一步,更加细致的了解。从中获取了更多无法在课堂中所能学习到的实践经历,尤其是对于自己的编写程序是一次不可能多得的锻炼。虽然其中遇到许多的困难,但在导师的帮助下,我都能迎难而上,顺利解决。在困难中收获颇多,也改正了许多在过去中编写程序经常犯下的错误,对今后我在这方面的继续发展提供了不少的帮助。这一次的论文设计,将会是我今后人生发展的一次重要经历,给予我今后的生活学习提供了不少宝贵的经验和教训。在这次论文和程序的编写制作工程中,我也发现了许多在我们今后需要注意和学习延续的东西,例如,在论文和编写程序中的坚持不懈的精神,值得我们在今后的生活和学习中更好的发扬下去。还有在JAVA语言编写和运用当中,有许多的知识都是在课本中尚未接触到的,这就需要我们学会去借鉴,去吸取他人的成功经验,并要学会博学,好问,在课本无法解决,自己尚未知道解决方案时候,应当及时去寻求书本或者一些网络的视频或者问一些有经验的人去获取相关的知识,来补充扩展自己的思维,寻求最佳的解决方案。同时我们还要学会合理的借鉴他人的长处优势,在分析其他人的完整的程序后,要能够根据这个程序的思路,将好的地方运用到自己的程序当中来,使得自己的程序更加完善。本程序的制作仍然存在许多方面的欠缺,亟待去完善和改进,例如本程序的好友管理系统过于简陋,不能很好的实现好友删减和信息删除功能,并在与公共信息发布方面仍未做成功,对于信息交流中的其他功能,例如语音聊天,视频聊天等功能还未开发,并且对于一些聊天所需要的周边功能还能更加进一步的设计开发,这些都是本程序所欠缺的方面,这些需要我在今后的学习当中更进一步细致的了解JAVA语言的开发,通过更多的实践操作,来完善自己程序,使即时通讯系统的功能更加的完善,只有让程序不断的更新,改进,也才能使一个程序有一个更加长久的生命,也才能使程序更加适合于大众的需求,而不被时代给淘汰。因此,我应该在今后的学习中更加的努力,去扩充自己的知识面,提高自己的实践能力,在今后做出更加完善出色的程序。46 毕业论文参考文献:[1]黄聪明.《Java行动通讯程式设计——J2MEMIDP》.清华大学出版社,2002.6[2]埃克尔.《Java编程思想》.机械工业出版社,2007.6[3]孙卫琴.《JAVA面向对象编程》.电子工业出版社,2006.7[4]霍顿.《Java2入门经典》.机械工业出版社,2006.1[5]高永强.《Java编程艺术》.清华大学出版社,2009.7[6]李文泽,郑逢斌等.《Java程序设计专家门诊》.清华大学出版社,2006.12[7]Deitel.《Java大学简明教程》.电子工业出版社,2005.2[8]郎波.《JAVA怨言程序设计》.清华大学出版社,2005.5[9]BruceEckel.《Java编程思想》.机械工业出版社,2003.10[10]耿祥义,张跃平.《JAVA实用教程》.清华大学出版社,2003.5[11]Brown等.《JSP编程指南(第二版)》.电子工业出版社,2003.3[12]清宏计算机工作室.《JSP编程技巧》.机械工业出版社,2004.5[13]朱红,司光亚.《JSPWeb编程指南》.电子工业出版社,2001.9[14]赛奎春.《JSP工程应用与项目实践》.机械工业出版社,2002.8[15]孙一林,彭波.《Java数据库编程实例》.清华大学出版社,2002.8[16]郭志强,王云亮.《基于B/S模式的网络实验系统的设计与实现》.《天津理工大学学报》2010.2[17]王丽辉,王东来.《在Web系统中用连接池访问数据库》.《吉林农业科技学院学报》2010.1[18]回健永.《基于Java的底层网络通信的实现》.《农业网络信息》2011.2[19]冯玉光,尹洪伟,吴亮,李双明.《基于JavaSocket的SCPI命令解释器研究与实现》.《国外电子测量技术》2011.2[20]樊红珍.《JavaScript框架jQuery和ExtJS的对比研究》.《现代计算机:下半月版》2011.1[21]A.J.Herbert,R.HaytonandM.Bursell.MobileJavaObjects.BTTechnologyJournal,1999,Volume17,Number2,Pages115-125[22]LucasBFigueiraandAntonioCRoque.AJava-basedsimulationenvironmentfornetworksofsimplifiedneuronmodels.BMCNeuroscience,2009,Volume10,Supplement46 毕业论文1,P55[23]OakleyE.GordonandThomasE.Malloy.On-lineHomework/Quiz/Examapplet:FreelyavailableJavasoftwareforevaluatingperformanceonline.BehaviorResearchMethods,2002,Volume34,Number2,Pages241-244[24]MarianaLNeves,José-MaríaCarazoandAlbertoPascual-Montano.AJavalibraryforextractingandnormalizinggeneandproteinmentions.BMCBioinformatics,2010,Volume11,Number1,157[25]SarahC.Webb,AnthonyAttwood,TonyBrooks,TomFreemanandPhilGardner,etal.TheJAVA-basedapplicationanddatabaseformicroarrayexperimenttracking.MammalianGenome,2004,Volume15,Number9,Pages740-74746

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭