企业内部通信系统的设计与实现 计算机论文_第1页
企业内部通信系统的设计与实现 计算机论文_第2页
企业内部通信系统的设计与实现 计算机论文_第3页
企业内部通信系统的设计与实现 计算机论文_第4页
企业内部通信系统的设计与实现 计算机论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文)题目企业内部通信系统的设计与实现院系计算机科学系专业计算机科学与技术姓名学号指导教师教师职称填写日期2012年5月7日贵阳学院毕业设计(论文)摘要随着企业的不断增多,社会经济的飞速发展,越来越多的企业开始使用内部通信软件来解决人员的工作沟通问题,它成本低,通信速度快,不仅方便人员的技术交流,还解决了电话的单线程通讯和费用高昂等问题。企业内部通信软件可以很好的解决企业内部通信问题,使每个员工都能及时的了解自己的工作内容和获取需要的资料,加强了团队的沟通。此系统基于UDP/IP协议,采用JAVA语言设计和实现,使用ECLIPSE和WINDOWBUILDERPRO插件进行开发。系统实现了信息通信、系统设置、搜索用户、访问公共资源、互访对方主机五大功能。本系统结构清晰、界面友好、操作简单、通用性强,可以大大提高了企业的工作效率。关键词企业;信息通信;JAVA;UDP/IP贵阳学院毕业设计(论文)IABSTRACTWITHTHEINCRESINGOFTHEENTERPRISES,ANDTHERAPIDECONOMICDEVELOPMENTOFSOCIETY,MOREANDMOREOFTHEENTERPRISESARESTARTINGTOUSEINTERNALCOMMUNICATIONSSOFTWARESOLVINGCOMMUNICATIONPROBLEMOFSTAFFITISLOWCOST,HIGHSPEEDCOMMUNICATIONS,NOTONLYFACILITATETHETECHNOLOGYTRANSFERBUTALSOSOLVETHESINGLETHREADEDCALLSCOMMUNICATIONANDCOSTLYPROBLEMSENTERPRISEINSTANTMESSAGINGSOFTWARECANSOLVEINTERNALCOMMUNICATIONPROBLEMS,SOTHATEVERYEMPLOYEEISABLETOUNDERSTANDTHEIRWORKCONTENTANDACCESSTOREQUIREDINFORMATIONENHANCECOMMUNICATIONBETWEENTHETEAMTHISSYSTEMBASEDONUDP/IP,USESTHEJAVALANGUAGEDESIGNANDIMPLEMENTATION,USEECLIPSEANDWINDOWBUILDERPROPLUGINDEVELOPMENTTHISSYSTEMREALIZESFIVEFUNCTIONSINCLUDINGTHEINFORMATIONCOMMUNICATION,SYSTEMSETTINGS,SEARCHUSERS,VISITTHEPUBLICRESOURCESANDOTHERHOSTVISITS,THISSYSTEMSTRUCTUREISCLEAR,FRIENDLYINTERFACE,EASYTOOPERATESTRONGUNIVERSABILITY,ITCOULDBEGREATLYIMPROVETHEEFFICIENCYOFENTERPRISESKEYWORDSENTERPRISE;INFORMATIONCOMMUNICATION;JAVA;UDP/IP贵阳学院毕业设计(论文)II目录摘要IABSTRACTII第一章前言1第二章概述2第一节开发背景2第二节课题现状2第三节软硬件需求2第三章系统分析3第一节需求功能分析3第二节可行性分析3一、可行性要求、目标3二、技术可行性分析3三、经济可行性分析4第四章系统设计5第一节系统目标5第二节系统功能5第三节数据库结构设计5一、数据库分析5二、企业内部通信系统的ER图6三、数据库结构设计7第五章详细设计和代码实现8第一节主窗体模块的设计与实现8一、界面设计8二、实现过程8第二节公共模块的设计与实现10一、界面设计10二、实现过程11第三节系统托盘模块的设计与实现13一、界面设计13二、实现过程13第四节系统工具模块的设计与实现14一、界面设计14贵阳学院毕业设计(论文)III二、实现过程15第五节用户管理模块的设计与实现17一、界面设计17二、实现过程18第六节通信模块的设计与实现20一、界面设计20二、实现过程23第六章总结27致谢28参考文献29贵阳学院毕业设计(论文)0第一章前言从20世纪90年代开始,公共的即时消息和实时通信逐渐成为了人们重要的沟通工具,如MAIL、QQ、MSN等。但是,公共的即时信息给人们带来方便的同时,也带来了极大的安全隐患,当今网络,木马程序、病毒和其他恶意软件横行,稍不注意,电脑就会中毒。对于企业,使用公共的即时消息是一种安全威胁,企业的IT部门对于公共即时消息的使用计划无法控制。公共的即时通信,正成为病毒和其他恶意软件入侵企业计算机的一个渠道,这意味着最终用户能够把敏感的数据外传。为此企业内部通信工具应运而生,本工具从源头上解决了这一隐患,专为企业而设计,通信服务器就直接置于企业内部,所有信息由企业自己管理,让企业以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通信服务的功能。企业内部通信工具可以很好的解决企业通信问题,面对工作目标和团队工作中可能出现的问题,必须加强团队的沟通,使每个员工都能及时地了解自己的工作内容和获取需要的资料。为解决这一问题,开发一个界面友好、易于操作的内部通信软件成为企业的首选。本系统应用了JDK60新增的系统托盘技术和JAVADB数据库。系统托盘可以在程序主窗体最小化之后,使用托盘控制窗体的相应操作,例如打开主窗体;JAVADB使用灵活,可以应用到不同的系统平台中,只要该平台有支持JAVA的环境。整个系统从操作简便、界面友好、灵活、实用、安全的要求出发,实现信息通信、系统设置、搜索用户、访问公共资源、互访对方主机等功能。贵阳学院毕业设计(论文)1第二章概述第一节开发背景近几年,随着网络的迅速发展和全球信息化速度的加快,网络通信已经不算是新鲜事物了,但大多数网络通信需要借助INTERNET上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如遭遇到网络攻击、病毒入侵等等。由于互联网上的网络通信工具有时会给企业内部信息交流带来不便,所以为了方便企业内部用户之间的沟通、保证企业内部局域网的安全,需要开发一个基于局域网的信息收发系统的即时通信工具。第二节课题现状企业内部通信系统是基于局域网的即时通信工具,可以说是一个INTERNET通信工具的小规模版本,一般采用UDP或者TCP协议体系等来实现,开发技术已经比较成熟,国外的通信工具较有名的有ICQ、MSNMESSENGER、国产的QQ、新浪UC都实现了广域网的即时通信。在最近几年,国内的局域网通信工具较有代表性有飞鸽传书、飞秋,这两款软件的快速、实效、迷你、简单的特点受到了广大企业的好评。这些工具的实现方式具体细节不易得之,但它无非是利用各种平台上的网络通信接口,基于TCP/IP或者UDP/IP协议架构下的软件产品。对于一个企业内网,这些功能的实现相比于广域网更加简单。所以还是有很大研究价值的1。第三节软硬件需求本系统运行时需要以下条件。硬件平台CPUPENTIUM418GHZ内存128MB以上硬盘空间100MB软件平台操作系统WINDOWS2000、WINDOWSXP、WINDOWS2003等开发工具ECLIPSE、JDK60数据库JAVADB贵阳学院毕业设计(论文)2第三章系统分析第一节需求功能分析本系统的设计目标是实现一个企业内部局域网通信系统,企业内部职工可以方便的进行交流,可以大大的提高职工的工作效率。根据企业对局域网通信的需求,本系统主要包括信息通信、系统设置、搜索用户、访问公共资源、访问对方主机五大功能。各功能概述信息通信信息通信是企业内部通信系统的核心功能,它用于不同职工之间的通信,这种通信方式能够实现多个职工之间的通信,而不存在类似电话占线的问题,增加了任务分配的新方式,从而提高企业的工作效率。系统设置系统设置用于设置用户界面、公共路径、公告栏等的功能。用户搜索用户搜索用于搜索企业局域网内的其他用户,系统会根据用户所设置的IP搜索范围搜索所有计算机上的用户。访问公共资源访问公共资源用于实现企业内部公共服务器上资源访问的功能。访问对方主机访问对方主机用于两人聊天情况下对对方主机的访问和控制的功能。第二节可行性分析一、可行性要求、目标企业内部通信系统必须提供网络通信功能,在通信过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上机资料的丢失以及其他损失。最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务器中转和记录通信内容,可以独立完成通信任务,排除职工对领导监视工作进度等行为的逆反心理。企业内部通信系统的目标是实现企业的信息化通信,提高企业通信能力,提高任务理解和执行能力,减少没有必要的人员流动和资金损耗,以最快的速度提升企业的市场竞争力。二、技术可行性分析局域网通信系统的技术已经非常成熟,首先,从硬件上讲,计算机硬件速度现在已贵阳学院毕业设计(论文)3经不是问题,高速便捷的网络已经十分普遍,这些为本系统的运行打下坚实的基础。从软件的角度上讲,数据库技术已经相当成熟(目前用得比较多的有SQLSERVER,JAVADB等),并且处理能力也非常强,这为海量数据的存储和处理打下了坚实的基础,同时,使用JAVA开发图形界面程序也相当普遍。有了这些技术的支持,我们成功开发一个局域网通信系统没有任何技术风险。三、经济可行性分析经济可行性主要是对项目的经济效益进行评价。本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。本系统开发经费对于企业在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以该企业内部通信系统在经济上是可行的。贵阳学院毕业设计(论文)4第四章系统设计第一节系统目标系统根据企业对内部通信系统的要求,本系统可以实现以下目标1操作简单、界面简洁美观。2更方便访问企业公共资源。3及时显示企业公共信息。4在通信窗口显示对方IP信息。5局域网内网用户自动搜索。6系统运行稳定、安全可靠。第二节系统功能系统功能结构图如下企业内部通信系统信息通信系统设置用户搜索访问公共资源访问对方主机图41系统功能结构图第三节数据库结构设计一、数据库分析该系统是一个桌面应用程序,它不像WEB应用那样需要配置到指定的服务器上,所贵阳学院毕业设计(论文)5以数据库和该系统应存在于同一计算机中,这样,不仅节省了开销,而且还提高了系统的安全性。该系统所用数据库为JAVADB数据库。由于该数据库的运行环境平台要求较低,一般的电脑都可以满足它的硬件条件2。二、企业内部通信系统的ER图该系统的实体包括用户和窗口位置两个实体,分别记录着通信窗口的绝对位置和用户的信息。(1)用户实体用户实体主要包括IP信息、PC名称、用户信息、系统信息等,它记录了搜索到的用户和所有的用户信息。用户实体的ER图如下所示用户实体头像提示文本用户信息IP地址主机名称图42用户实体ER图2窗口位置实体窗口位置实体记录着窗体最后的移动位置和窗体大小等信息,主要包括窗体位置的横坐标和竖坐标(下图用X、Y轴坐标表示)、窗体的高度和宽度。窗口实体的ER图如下所示贵阳学院毕业设计(论文)6X坐标窗口实体Y坐标窗体高度窗体宽度图43窗口实体ER图三、数据库结构设计在该系统中的数据库DB_EQ包含两个数据表,分别为用户信息表TB_USERS和窗体位置信息表TB_LOCATION。(1)TB_USERS用户信息表用户信息表用来保存企业内的通信用户,表TB_USERS如下所示表41用户信息表TB_USERS字段名数据类型是否为空是否主键默认值描述IPVARCHAR(16)NOYES用户IPHOSTVARCHAR(30)YESNONULL主机名称NAMEVARCHAR(20)YESNONULL姓名TOOLTIPVARCHAR(50)YESNONULL提示文本ICONVARCHAR(50)YESNONULL头像图标(2)TB_LOCATION(窗体位置信息表)窗体位置表用来保存窗体的位置和大小,表TB_LOCATION如下所示表42窗体位置信息表TB_LOCATION字段名数据类型是否为空是否主键默认值描述XLOCATIONINTYESNONULLX轴坐标YLOCATIONINTYESNONULLY轴坐标HEIGHTINTYESNONULL窗体高度WIDTHINTYESNONULL窗体宽度贵阳学院毕业设计(论文)7第五章详细设计和代码实现第一节主窗体模块的设计与实现一、界面设计主窗体界面是本系统的用户列表,它由用户列表、系统选项卡、公告提示等组成。其中系统选项卡用于切换不同的管理界面,包括系统设计和系统工具界面3。主窗体的效果图如下所示图51主窗体界面示意图二、实现过程主窗体实现部分包括创建主窗体和记录窗体位置。其中创建主窗体的步骤如下1创建JXCFRAME类,在类中创建窗体的对象,为窗体添加选项卡面板,并添加用户列表、系统工具、系统设置3个选项卡和状态栏标签、公告按钮等属性。在构造方法贵阳学院毕业设计(论文)8中初始化窗体上的控件。数据库操作类、首选项对象等属性,为窗体添加时间监听器、为公告信息按钮添加监听器等。2初始化SOCKET服务器,指定端口为1111,如初始化失败,则提示服务器端口被占用或本软件已运行,并退出本系统。用于接收其他用户发送的通信信息。关键代码如下TRY/启动通讯服务端口SSNEWDATAGRAMSOCKET1111CATCHSOCKETEXCEPTIONE2IFE2GETMESSAGESTARTSWITH“ADDRESSALREADYINUSE“SHOWMESSAGEDIALOG“服务端口被占用,或者本软件已经运行。“SYSTEMEXIT03CHECKPLACARD方法,用于检测系统公告,当公告路径中存在系统公告时,将从文件中获取完整信息,调用PUSHMESSAGE()方法将信息压入公告信息栈中。关键代码如下PRIVATEVOIDCHECKPACARD/检测公告信息方法STRINGPLACARDDIRPREFERENCESGET“PLACARDPATH“,NULLIFPLACARDDIRNULLPUSHMESSAGE“未设置公告路径“RETURNFILEPLACARDNEWFILEPLACARDDIRTRYIFPLACARDEXISTSSCANNERSCNEWSCANNERNEWFILEINPUTSTREAMPLACARDWHILESCHASNEXTLINEPLACARDSTRAPPENDSCNEXTLINEPUSHMESSAGEPLACARDSTRTOSTRINGCATCHFILENOTFOUNDEXCEPTIONEPUSHMESSAGE“公告路径错误,或公告文件不存在“4INITUSERINFOBUTTON()方法用于初始化本地用户信息,并在主窗体左上角显示本地贵阳学院毕业设计(论文)9用户的头像和名称,会在用户更改本地用户名称时同步更新。5MAIN()方法,本方法首先获取用户设置的界面外观,然后调用UIMANAGER类设置指定的外观,生成主窗体对象。最后初始化服务器端口和系统栏图标。关键代码如下PUBLICSTATICVOIDMAINSTRINGARGSTRYSTRINGLAFPREFERENCESGET“LOOKANDFEEL“,“JAVA默认“/获取用户选择的外观IFLAFINDEXOF“当前系统“1UIMANAGERSETLOOKANDFEELUIMANAGERGETSYSTEMLOOKANDFEELCLASSNAME/设置外观EQFRAMENEWEQFRAMESETVISIBLETRUE/显示窗体FRAMESYSTEMTRAYINITIAL/初始化系统栏FRAMESERVER/启动服务端口FRAMECHECKPLACARD/检测系统公告CATCHEXCEPTIONEEPRINTSTACKTRACE记录窗体的位置步骤如下1为窗体添加监听器,当改变窗体的位置和大小时,将调用SAVELOCATION方法将窗体和位置大小保存到数据库中。2SAVELOCATION,该方法中调用了DAO类中的UPDATELOCATION将窗体的位置和大小保存到数据库中。第二节公共模块的设计与实现一、界面设计在本系统的项目空间中,有部分模块是公用的,或者多个模块甚至整个系统的配置信息是被多个模块重复调用完成业务的逻辑。其中有关数据库的操作、连接数据库、创建本机IP的默认用户(并添加到数据库中)、从数据库中获取窗体位置和大小、添加或删除指定用户、更新用户信息等4。贵阳学院毕业设计(论文)10二、实现过程公共模块包括数据库操作类和系统工具类。其中DAO类主要负责有关数据库的操作,该类在构造方法中驱动并连接数据库,然后将构造方法设置为PRIVATE私有属性,通过静态的GETDAO获取DAO类的实例对象,这是简单的单例模式。在连接数据库时,可以指定CREATE参数为TRUE直接创建数据库,但在此之前需要调用DBEXIST方法判断数据库是否存在。DAO类的关键代码如下PUBLICCLASSDAO/数据库驱动PRIVATESTATICFINALSTRINGDRIVER“ORGAPACHEDERBYJDBCEMBEDDEDDRIVER“PRIVATESTATICSTRINGURL“JDBCDERBYDB_EQ“/数据库URLPRIVATESTATICCONNECTIONCONNNULL/数据库连接PRIVATESTATICDAODAONULLPRIVATEDAOTRYCLASSFORNAMEDRIVERIFDBEXISTSCONNDRIVERMANAGERGETCONNECTIONURL“CREATETRUE“CREATETABLEELSECONNDRIVERMANAGERGETCONNECTIONURLADDDEFUSERCATCHEXCEPTIONEEPRINTSTACKTRACEJOPTIONPANESHOWMESSAGEDIALOGNULL,“数据库连接异常,或者本软件已经运行。“SYSTEMEXIT0PRIVATEBOOLEANDBEXISTS/测试数据库是否存在BOOLEANBEXISTSFALSEFILEDBFILEDIRNEWFILE“DB_EQ“IFDBFILEDIREXISTS贵阳学院毕业设计(论文)11BEXISTSTRUERETURNBEXISTSPUBLICSTATICDAOGETDAO/获取DAO实例IFDAONULLDAONEWDAORETURNDAOPUBLICLISTGETUSERS/获取所有用户LISTUSERSNEWARRAYLISTTRYSTRINGSQL“SELECTFROMTB_USERS“STATEMENTSTMCONNCREATESTATEMENTRESULTSETRSSTMEXECUTEQUERYSQLWHILERSNEXTUSERUSERNEWUSERUSERSETIPRSGETSTRING1USERSETHOSTRSGETSTRING2USERSETNAMERSGETSTRING3USERSETTIPTEXTRSGETSTRING4USERSETICONRSGETSTRING5USERSADDUSERRSCLOSECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNUSERSRESOURCE类是企业内部通信系统中的工具类,该类中的方法都是静态的,可以直接调用,而不用创建RESOURCE类的实例对象。这些工具方法包括搜索用户的方法、登录公共资源的方法、信使群发的方法和单条信息发送的方法。贵阳学院毕业设计(论文)12第三节系统托盘模块的设计与实现一、界面设计系统托盘模块用于定义系统栏图标。本系统的主窗体是继承对话框窗体编写的,该窗体在系统任务栏不会显示任务标题,如果主窗体最小化之后将会隐藏,这时必须使用快捷键或者系统托盘中的图标执行显示窗体的命令。系统托盘包含相应的菜单,右键点击会弹出选择菜单,菜单包括三个选项,分别是“访问服务器”、“打开”、“退出”。系统托盘的设计效果图如下所示图52系统托盘示意图二、实现过程在JDK60中,AWT新增加了SYSTEMTRAY类和TRAYICON类,它们可以在系统托盘区创建一个托盘程序。SYSTEMTRAY类表示桌面右下角的系统托盘,系统托盘由运行在桌面上的所有应用程序共享,可以使用GETSYSTEMTRAY方法获取系统托盘对象,该方法总是对每个应用程序返回相同的实例。并不是所有的操作系统都支持系统托盘,如果当前系统不支持托盘的话,该方法将自动抛出异常。为避免程序出现错误,在获取系统托盘实例之前,需要检查系统托盘是否支持。可以调用ISSUPPORT来实现5。SYSTEMTRAY类可以包含一个或多个TRAYICON类的实例,即系统栏图标,可以使用ADD将它们添加到托盘,TRAYICON对象由图像、弹出菜单和一组相关监听器组成。创建系统托盘的关键代码如下TRYSTRINGTITLE“EQ通讯软件“/系统栏提示文本的标题STRINGCOMPANY“贵州省XXX科技有限公司“/系统栏提示文本SYSTEMTRAYSYSTRAYSYSTEMTRAYGETSYSTEMTRAY/获取系统托盘对象IMAGEIMAGETOOLKITGETDEFAULTTOOLKITGETIMAGEEQCLASSGETRESOURCE“/ICONS/SYSTRAYPNG“/系统栏图标TRAYICONNEWTRAYICONIMAGE,TITLE“N“COMPANY,CREATEMENU/创建系统栏图标对象贵阳学院毕业设计(论文)13TRAYICONSETIMAGEAUTOSIZETRUE/设置自动大小TRAYICONADDACTIONLISTENERNEWSYSTRAYACTIONLISTENER/添加监听器SYSTRAYADDTRAYICON/添加系统栏图标到系统托盘TRAYICONDISPLAYMESSAGETITLE,COMPANY,MESSAGETYPEINFOCATCHEXCEPTIONEEPRINTSTACKTRACE第四节系统工具模块的设计与实现一、界面设计本系统的工具模块起到维护系统的作用,包括更换程序外观、。设置IP范围、用户搜索和系统更新、设置系统公告路径、设置公共程序路径、系统登录等功能。在该系统第一次运行的时,用户搜索功能可以搜索内部网络中所有正在运行的计算机。本系统工具模块中使用了JAVA的LOOKANDFEEL外观技术,不同的外观中控件的外观也会不同,就比如我们常用的电脑中,WINDOWS经典样式和WINDOWSXP样式外观的按钮、列表、菜单、工具栏甚至窗体的外观都不相同。在本系统中提供了“当前系统”和“JAVA默认值”两个外观选项,其中“JAVA默认值”是SWING默认的外观,不需要特别设置,而“当前系统”外观需要使用相应的方法获取当前系统的外观名称,然后将该外观应用于默认的外观6。系统工具的设计效果图如下所示贵阳学院毕业设计(论文)14图53系统工具界面示意图二、实现过程(1)CREATESYSTOOLPANEL方法,用于创建系统工具选项卡,在该选项卡中包括界面选择、用户搜索和系统操作3部分,其中系统操作用于程序更新,它们都被添加到系统工具面板中,CREATESYSTOOLPANEL方法必须设置好面板的布局和初始化工作。关键代码如下PRIVATEJSCROLLPANECREATEUSERLIST/用户列表面板JSCROLLPANESCROLLPANENEWJSCROLLPANESCROLLPANESETHORIZONTALSCROLLBARPOLICYSCROLLPANECONSTANTSHORIZONTAL_SCROLLBAR_NEVERADDUSERPOPUPCHATTREE,GETPOPUPMENU/为用户添加弹出菜单SCROLLPANESETVIEWPORTVIEWCHATTREESCROLLPANESETBORDERNEWEMPTYBORDER0,0,0,0CHATTREEADDMOUSELISTENERNEWCHATTREEMOUSELISTENER贵阳学院毕业设计(论文)15RETURNSCROLLPANE(2)在CREATESYSTOOLPANEL方法中创建界面选择部分,该部分以列表控件显示了两种外观选择,当用户选择其中以种外观并单击“确定”按钮之后,选择外观会保存到首选项中,然后提示重新运行本软件。(3)在CREATESYSTOOLPANEL方法中创建用户搜索部分,包括搜索列表、搜索进度条和“搜索新用户”3个控件,当单击“搜索新用户”按钮时,系统会根据用户在系统设置界面所设置的IP搜索范围搜索所有计算机信息,并创建相应的用户对象,然后保存到数据库中。(4)创建“搜索新用户”按钮的事件监听器SEARCHUSERACTIONLISTENER类,调用RESOURCE工具类的SEARCHUSERS方法搜索指定IP范围内的所有用户。系统工具类中的SEARCHUSERS()方法,该方法用于搜索局域网内的通信用户,也就是搜索企业内的所有职工。本方法将获取用户指定的IP范围,并在该范围内搜索所有可以访问的计算机,如果用户没有指定IP范围,系统默认的是192168011921680255。关键代码如下TRYFORINTLIPSINT0L添加“IP“CATCH(EXCEPTIONE)EPRINTSTACKTRACE第五节用户管理模块的设计与实现一、界面设计用户管理模块类似于聊天软件的好友列表,其中包含所有用户信息,另外在用户名称上单击鼠标右键,会弹出相应的管理菜单,在该菜单中包含“添加用户”、“更名”、“删除用户”、“信使群发(在没有多选用户的情况下无法进行信使群发)”、“访问主机资源”和“访问公共程序”,其中“访问主机资源”是访问该用户的共享文件夹7。界面设计的效果图如下所示图54用户管理界面示意图贵阳学院毕业设计(论文)17二、实现过程(1)创建USERTREERANDERER类,该类继承JPANEL类成为一个面板控件,同时该类也实现了TREECELLRENDERER接口成为树节点的渲染器。该类的构造方法接受3个图标参数,分别用于树节点的打开、关闭和叶节点的图标。(2)在USERTREERANDERER类中的GETTREECELLRENDERERCOMPONENT方法,渲染树节点的界面样式。本方法获取主窗体的宽度,并使用该宽度设置节点的宽度,是节点与窗体同宽度,当选择某个节点时,该方法将使用指定颜色绘制节点的边框,以突出该节点被选择的效果。(3)创建CHATTREE类,该类继承JTREE自定义的树控件,并且使用了之前定义的USERTREERANDERER树节点渲染器,SORTUSERS方法,此方法是一个内部线程,该线程获取本地的IP地址,使用该地址从数据库中获取本地用户对象,并将本地用户设置在用户列表首位。然后从数据库中获取其它用户对象。使第一个用户处于被选择状态,并更新状态栏的用户人数。关键代码如下PRIVATESYNCHRONIZEDVOIDSORTUSERS/排序用户列表NEWTHREADNEWRUNNABLEPUBLICVOIDRUNTRYTHREADSLEEP100ROOTREMOVEALLCHILDRENSTRINGIPINETADDRESSGETLOCALHOSTGETHOSTADDRESS/获取本地IPUSERLOCALUSERDAOGETUSERIP/从数据库中获取自己的信息IFLOCALUSERNULL/把自己显示在首位DEFAULTMUTABLETREENODENODENEWDEFAULTMUTABLETREENODELOCALUSERROOTADDNODEUSERMAPDAOGETUSERSITERATORITERATORUSERMAPITERATORWHILEITERATORHASNEXT/遍历用户集合USERUSERITERATORNEXTIFUSERGETIPEQUALSLOCALUSERGETIPCONTINUE贵阳学院毕业设计(论文)18ROOTADDNEWDEFAULTMUTABLETREENODEUSER/添加用户到根节点TREEMODELRELOADCHATTREETHISSETSELECTIONROW0/使第一个节点被选择IFEQNULLEQSETSTATIC“总人数“GETROWCOUNT/更新状态栏标签CATCHEXCEPTIONEEPRINTSTACKTRACESTART(4)在CHATTREE中的DELUSER方法,用于删除当前用户列表中选择的用户对象。该方法首先获取选择的树节点,从该节点中获取绑定的用户对象,经用户确认后删除用户信息,最后调用根节点的REMOVE方法删除该用户节点。另外是ADDUSER方法,用于在用户列表中添加新用户。本方法首先使用传递的IP参数到数据库中获取对应的用户对象,如成功获取,说明数据库已存在该用户,系统会提示“已存在”,当确定该IP可以访问后,为该IP地址创建一个新的用户并添加到数据库中。关键代码如下PUBLICBOOLEANADDUSERSTRINGIP,STRINGOPRATION/添加用户TRYIFIPNULLRETURNFALSEUSEROLDUSERDAOGETUSERIP/从数据库中获取IP相同用户IFOLDUSERNULL/如果数据库中不存在该用户INETADDRESSADDRINETADDRESSGETBYNAMEIP/该用户可以访问IFADDRISREACHABLE1500STRINGHOSTADDRGETHOSTNAME/获取它的主机名称ROOTADDNEWDEFAULTMUTABLETREENODENEWUSERHOST,IPUSERNEWUSERNEWUSER/创建新用户对象NEWUSERSETIPIP/设置IPNEWUSERSETHOSTHOST/设置主机名称NEWUSERSETNAMEHOST/设置用户姓名NEWUSERSETICON“1GIF“/设置头像DAOADDUSERNEWUSER/添加该用户到数据库中贵阳学院毕业设计(论文)19SORTUSERS/用于重新加载用户列表IFOPRATIONEQUALS“SEARCH“JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“用户“HOST“添加成功“,“添加用户“,JOPTIONPANEINFORMATION_MESSAGERETURNTRUEELSE/如果该用户IP不可访问IFOPRATIONEQUALS“SEARCH“/并且不是系统自动搜索JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“检测不到用户IP“IP,“错误添加用户“,JOPTIONPANEERROR_MESSAGE/对话框提示错误RETURNFALSEELSE/如果数据库中存在该IP用户IFOPRATIONEQUALS“SEARCH“/并且不是系统自动搜索JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“已经存在用户IP“IP,“不能添加用户“,JOPTIONPANEWARNING_MESSAGE/提示已存在RETURNFALSECATCHEXCEPTIONEEPRINTSTACKTRACERETURNFALSE第六节通信模块的设计与实现一、界面设计通信模块是本系统中的核心模块,它用于局域网内的用户之间的通信,而却这种通信方式能够实现多个用户之间的通信,不会存在像我们打电话一样时的占线问题,增加了任务分配的方式。本模块可以使用UDP协议和信史两种方式发送信息8。通信的聊天界面设计效果图如下所示贵阳学院毕业设计(论文)20图57聊天界面示意图我们通常所说的通信工具,都是采用的客户机/服务器C/S架构的,C/S结构是这样的一种结构它包括一个客户机或前端,一个服务器或称后端,客户机的作用是访问和处理远程服务器上的数据,服务器的作用是接收和处理客户机的数据请求。有时,可能有多个客户向同一个服务器同时请求服务,这就需要服务器决定怎样处理这些请求。CLIENT/SERVER结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。CLIENT/SERVER模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答8。其工作示意图如下贵阳学院毕业设计(论文)21图55C/S模式下的网络拓扑图但是本系统如果要做成C/S架构的话,需要在局域网内设置一个服务器,而在企业局域网内,网络结构不是集中式的而是分布式的,可能没有一台机器来充当服务器这个角色,同样用服务器会增加本系统的设置难度,不符合本系统方便、快捷的特色,同时增加服务器后,所有数据都会经过服务器保存处理,需要有专人看管维护服务器,显得更麻烦。所以本系统采用每个程序自己既充当客户机,又充当服务器,自己来维护网络上的用户列表,每两个客户端进行连接的时候都直接连通而不用增设服务器中转。示意图如下图56无公共服务器模式下的网络拓扑图当然,上述图示只是通信数据的一个流向示意图,不是真正的网络拓扑结构,也就贵阳学院毕业设计(论文)22是说其中的服务器可能只是装了服务器软件的一台普通工作站。在底层的数据流向中,也就是网络的物理连结,并非我们这个软件所能决定的,我们的所做都是在一个透明的数据通信层之上的。在该模块中,使用基于UDP协议的数据报和套接字实现计算机之间的信息通信。UDP(USERDATAGRAMPROTOCOL)协议就是“用户数据报协议”,它是一种无连接的协议,在该协议进行数据传输时,发送方只需要知道对方的IP地址和端口号就可以发送数据了,并不需要进行连接,当远程主机端口号处于监听状态时,则UDP必须处于连接状态。JAVA中对UDP数据报的发送和接收是通过DATAGRAMSOCKET类实现的,DATAGRAMPACKET类表示UDP数据包,它封装了数据报的属性和数据9。这两个类的工作流程图如下所示图58DATAGAMSOCKET和DATAGRAMPACKET类的工作流程图二、实现过程(1)创建TELFRAME类,在该类中集成JFRAME类实现SWING的窗体,定义窗体需要的所有控件,列入发送按钮、接受信息的文本框、输入发送信息的文本框、信使按钮以及各种滚动面板等,定义访问数据库的DAO实例,在通信窗口右侧显示的用户列表使用DAO实例从数据库中获取10。(2)GETINSTANCE方法,用于获取唯一的窗体实例。该方法创建的所有窗体实例都DATAGRAMSOCKET端口1234DATAGRAMPACKET目的HOST4321DATAGRAMPACKET目的HOST4321DATAGRAMPACKET目的HOST4321DATAGRAMSOCKET端口4321DATAGRAMSOCKET端口1234DATAGRAMSOCKET端口4321DATAGRAMPACKET目的HOST4321贵阳学院毕业设计(论文)23会保存到MAP集合类的实例中,窗体的实例对象会一直保存在这个集合类中,并且用户再次打开已存在的窗体时,将直接从集合类中获取,不再创建新的窗体实例。关键代码如下PUBLICSTATICSYNCHRONIZEDTELFRAMEGETINSTANCEDATAGRAMSOCKETSSARG,DATAGRAMPACKETDP,CHATTREETREEARGSTRINGTMPIPDPGETADDRESSGETHOSTADDRESS/获取数据报的IP地址IFINSTANCECONTAINSKEYTMPIP/如果集合中不存在该用户窗体TELFRAMEFRAMENEWTELFRAMESSARG,DP,TREEARG/创建窗体实例INSTANCEPUTTMPIP,FRAME/将窗体实例保存到集合中FRAMERECEIVEINFOTREEARG/接受信息IFFRAMEISVISIBLE/如果窗体处于隐藏状态FRAMESETVISIBLETRUE/显示窗体FRAMESETSTATEJFRAMENORMALFRAMETOFRONT/将窗体放置在最前端RETURNFRAMEELSE/如果集合中包含该用户窗体TELFRAMEFRAMEINSTANCEGETTMPIP/从集合中获取该窗体实例FRAMESETBUFSDPGETDATAFRAMERECEIVEINFOTREEARG/接受信息IFFRAMEISVISIBLEFRAMESETVISIBLETRUE/显示窗体FRAMESETSTATEJFRAMENORMALFRAMETOFRONTRETURNFRAME(3)在构造方法中初始化TELFRAME类的所有控件属性,该构造方法接收DATAGRAMSOCKET、DATAGRAMPACKET和CHATTREE类的三个参数,他们分别是数据SOCKET服务、数据报和用户列表的实例对象。(4)RECEIVEINFO方法,用于接收其它用户发送的通信信息。该方法中首先从数据报中获取发送信息的用户IP地址,然后从数据库中获取该IP用户的姓名,同时将这些用户IP、用户姓名和发送时间以蓝色字体显示到信息文本框中,最后将数据报中的通信信息文本追加到信息文本框中。贵阳学院毕业设计(论文)24关键代码如下PRIVATEVOIDRECEIVEINFOFINALCHATTREETREE/接收信息IFBUFLENGTH0STRINGRTEXTNEWSTRINGBUFREPLACE“CHAR0,“STRINGHOSTADDRESSDPGETADDRESSGETHOSTADDRESSSTRINGINFODAOGETUSERHOSTADDRESSGETNAMEINFOINFO“NEWDATETOLOCALESTRING”APPENDRECEIVETEXTINFO,COLORBLUEAPPENDRECEIVETEXTRTEXT“N“,NULL(5)创建“发送”按钮的事件监听器SENDACTIONLISTENER类,它实现了ACTIONLISTENER接口,拥有处理按钮事件的能力,它在ACTIONPERFORMED方法中获取数据报中的通信信息。创建MESSAGEBUTTONACTION内部类,该类是“信使”按钮的事件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论