工作板的设计与实现_第1页
工作板的设计与实现_第2页
工作板的设计与实现_第3页
工作板的设计与实现_第4页
工作板的设计与实现_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

北京邮电大学毕业设计绪论1.1引言在网络飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上存在大量的信息所以信息交换也显得尤为重要。人们一直在寻找一种方便、低廉的交流信息的工具,因此网上聊天便成为人们的首选。基于Java网络编程的强大功能,本次毕业设计使用Java编写一个工作板即基于局域网工作交流平台系统。工作板即基于局域网工作交流平台利用的是互联网线路,通过文字、文件的信息交流与互动,有效节省了沟通双方的时间与经济成本;工作板即基于局域网工作交流平台不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台,致力于帮助企业提高运作效率,降低沟通成本、拓展商业机会,它给员工提供更方便的沟通方式,增强了企业的信息共享和沟通能力,提高员工日常工作效率,减少企业内部通讯费用和出差次数,从而为企业节省开支,同时也提高了员工的合作意识,增强了企业的凝聚力。一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用Oracle11g完成并通过JDBC访问数据库。本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用MyEclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。基于局域网工作交流平台系统完成后将可进行用户间的聊天、对好友进行添加、对新用户的注册、发送消息、接受消息等等功能。1.2国内外企业即时通讯(工作交流平台)研究现状企业即时通信:简称EIM(EnterpriseInstantMessaging),它是一种面向企业终端使用者的网络沟通工具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。交流内容包括文字、界面、语音、视频及文件互发等。相对于个人即时通信工具而言,企业即时通信工具剔除了娱乐等因素,且更加强调安全。

目前,市场上的企业级即时通信工具主要包括:腾讯公司的RTX、IBM公司的LotusSametime、微软公司的UC、点击科技的GKE、中国互联网办公室的IMO、红杉树公司的EasyTouch、亿企通的Jingoal等。经过几年来的市场考验和同行竞争,提供企业级即时通信软件服务的厂商也经历了大浪淘沙的艰难历程,目前的市场格局主要分为三类:第一类是介入即时通信领域时间较早的国际企业,如IBM、微软等。其优势在于起步早,产品在进入中国前已在国外企业用户中得到了广泛应用,企业知名度和产品知名度较高;缺点是在面对中国企业用户的特定需求时,其产品的适应度还较差,另外,国际厂商为了实现大而全的目的,它们的即时通信产品往往与自身的其他软件系统关联度、依赖度很强(如微软OCS和ExchangeServer2003的紧密捆绑,IBMSametime与Lotus的紧密结合),这无疑会增加企业用户的采购成本。第二类是以腾讯为代表的国产软件企业。它们的产品设计更加贴近中国企业的实际需求,产品操作更加贴近中国人的使用习惯,并亦具有很高的品牌知名度。目前,此类企业已经成为中国企业级即时通信市场的主导力量,据第三方统计数据,仅腾讯RTX就已占到超过70%的市场份额。第三类是众多创业性的新兴企业。他们的特点是灵活性高,每个项目的定制性强;缺点是产品不成熟,品牌影响力差。该类企业由于其自身的资金和技术等薄弱环节,目前还不足以对企业即时通信市场造成影响。

总之,目前中国企业即时通信领域的一个显著特征就是,国内外厂商都在争夺这个未来被普遍看好的市场,未来中国企业即时通讯行业发展的方向为:统一通信化、功能定制化、移动终端化、竞争激烈化和行业整合化。1.3研究的意义近年来,随着全球信息化的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量地增加,企业内部多的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。为了解决上述矛盾,人们提出了开发工作板即局域网工作交流平台的构想,通过局域网工作交流平台软件,企业员工可以随时的进行即时信息传递,凿开网络会议等,有利于提高工作效率,同时有保护了企业内部的信息安全。1.4本文的主要工作随着用户对软件功能的需求不断提高,企业即时通讯的产品也不断地更新换代。企业即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。本文首先对工作板即基于局域网工作交流平台软件的发展以及其对人们的生活有何影响作了简述,并对开发环境和工具进行了相应说明并对此工作交流平台软件系统进行了较为详细的分析;进而提出了该多功能交流平台软件的设计方案。在本次多功能工作交流平台软件的设计与开发中,本人主要设计开发登录模块、注册模块、聊天模块、并对此工作交流平台软件系统的登录模块、注册模块、聊天模块的设计与实现进行了较详细的说明和分析。

2相关技术及环境简介在确定系统的开发前景、意义、目标之后,就是选择好开发工具以及运用相关的技术来开发系统。在模式上,我们选择C/S架构的操作模式,这样可以方便公司统一管理,使得公司只需维护服务器,员工只要安装客户端即可做相关操作。接下来,将对本系统所用到的开发环境、语言和相关技术进行介绍,主要是对本次开发涉及到的理论知识和用到的开发工具做相关阐述。2.1MyEclipse介绍MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。在结构上,MyEclipse的特征可以被分为7类:JavaEE模型WEB开发工具EJB开发工具应用程序服务器的连接器JavaEE项目部署服务数据库服务MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse5.5以前版本需先安装Eclipse。MyEclipse5.5以后版本安装时不需安装Eclipse。2.2Java语言Java语言是SUN公司于1995年5月推出的新一代面向对象的计算机通用编程语言,是继WWW之后又一引起世界轰动的产品。Java语言的特点是跨平台和强大的网络编程功能。在Java语言诞生之前,Internet已存在,所以Java语言本身就封装了大量进行网络编程的类库,使得网络编程功能强大,同时又简化了网络编程的操作。因此利用Java语言可以开发出功能强大的网络应用程序。2.2.1Jar命令功能: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中,但不添加类目录本身。2.2.2Java和InternetTCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层)。大多数基于internet的应用程序被看作TCP/IP协议的上一层.如:ftp,http,smtp,pop3,telnet,nntp等。Java提供的网络功能有三大类:URL,Socket,Datagram.其中,URL是三大功能中最高级的一种,通过URLJava程序可以直接送出或读入网络上的数据。Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道。Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上。2.3C/S模式介绍20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机—终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位:一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力。客户机和服务器之间通过相应的网络协议来进行通讯。客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。C/S模式是目前占主流的网络计算模式。该模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务(过程如下):打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。等待某个客户请求到达该端口。接收到重复服务请求,处理该请求并发送应答信号。返回第二步,等待另一客户请求。关闭该服务器。客户端:打开一个通信通道,并连接到服务器所在主机的特定端口。向服务器发送服务请求报文,等待并接收应答;继续提出请求。请求结束后关闭通信通道并终止。分布运算和分布管理是客户机/服务器模式的特点。最后选择了C/S模式。2.4Socket编程2.4.1Socket简介Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个Socket,通过读写和客户端通信。Socket程序的工作过程:建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。数据通信:利用虚拟连接通道传送数据信息进行通道。关闭:通信结束时,再将所建的虚拟连接拆除。具体如下图2-17.关闭3.客户端socket6.写5.读5.读6.写7.关闭4.接收2.监听1.服务器socket:7.关闭3.客户端socket6.写5.读5.读6.写7.关闭4.接收2.监听1.服务器socket图2-1Socket套接字原理图2.4.2关于TCP/IP协议TCP协议是网络通信的基石,对此Java专门提供了Socket的类库,在其中抽象出TCP协议通信的常用方法:TCP协议与三次握手。为了实现客户端同服务器端的通信,客户端首先发送一个“SYN”数据包。如果服务器收到SYN标记,它将发回一个“SYN+ACK”数据包。接着,客户端为了表示收到了这个SYN+ACK信息,会向服务器发送一个最终确认信息(ACK包)。这种SYN,SYN+ACK,ACK的步骤被称为TCP连接建立时的“三次握手”,在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。这种通信模式也叫客户端/服务器(C/S)模式。如下图2-2:第一次握手,主机A向主机B发送连接请求第一次握手,主机A向主机B发送连接请求第二次握手,主机B收到主机A的请求,向主机A回发一个确认,同时向主机A发送一个连接请求第二次握手,主机B收到主机A的请求,向主机A回发一个确认,同时向主机A发送一个连接请求主机A主机B SYN=1,SEQ= ACK=1,SYN=1,SEQ=第三次握手,主机A收到主机B发送的数据包再向主机B发送一个确认连接第三次握手,主机A收到主机B发送的数据包再向主机B发送一个确认连接 ACK=1图2-2三次握手协议由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。2.4.3服务器和客户机网络最基本的目的就是让两台机器连接到一起,并相互“交谈”或者“沟通”。一旦两台机器都发现了对方,就可以展开一次令人愉快的双向对话。但它们怎样才能“发现”对方呢?这就像在游乐园里那样,一台机器不得不停留在一个地方,侦听其他机器说:“嘿!你在哪里呢?”

“停留在一个地方”的机器叫做“服务器”(Server),到处“找人”的机器则叫做“客户机”(Client)或者“客户”。它们之间的区别只有在客户机试图同服务器连接的时候才显得非常明显。一旦连通,就变成了一种双向通信,谁来扮演服务器或者客户机便显得不那么重要了。

所以服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。而客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO数据流对象。从这时开始,我们可以像读写一个普通的文件那样对待连接。所以一旦建好连接,我们只需使用自己熟悉的IO命令即可。这正是Java联网最方便的一个地方。如下图2-3:服务器服务器 Socket(TCP)Socket(TCP)Socket(TCP)………… UDPUDPUDP图2-3服务器和客户机的连接2.5编程运行环境1.硬件环境:CPU:Inter(R)Core(TM)i5CPU内存:3GB硬盘:500GB2.软件环境:操作系统:Windows7应用软件:MyEclipse8.5+JDK1.7+Oracle11g2.6ORACLE数据库简介ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。Oracle数据库最新版本为OracleDatabase12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如OracleMultitenant可快速整合多个数据库,而AutomaticDataOptimization和HeatMap能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c2.7JDBCJDBC(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实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。2.8小结本章主要是介绍本系统设计及开发所要涉及的相关技术。从程序员的角度简单概括性地介绍了相关知识,如用到的开发工具、开发环境、系统需要的技术支持,系统运行环境等,从而能从整体上对现系统的技术层次有一定的了解。本章作为此次设计的第二章,主要是考虑到有些知识事先介绍能让读者对于系统的框架和内容初步的认识,而且能够更好的理清此次设计思路和开发方案。

3需求分析3.1可行性分析3.1.1经济可行性由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行Java软件的电脑便可,相关资料参考文献可从网上和图书馆查找,所以不用考虑到经济问题。3.1.2技术可行性技术上的可行性分析主要分析技术条件能顺利完成开发工作,硬、软件能满足开发者的需要等。系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。本系统的开发利用Oracle11g作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。3.1.3操作可行性本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。3.1.4需求可行性分析可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ等现有即时通讯工具的界面,使用户能很容易看懂并使用。开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。3.1.5性能可行性从时间上看,在三个月的时间里学习相关知识,并开发系统,时间上是有点紧,但是可以实现,通过三个多月的努力功能基本上是可以实现的。综上所述,本系统的设计与开发在技术上和软、硬件设备上的条件都是满足的,因此,它在技术上是可行的。3.2系统功能需求本系统主要通过客户端、服务器端来体现工作板系统的基本功能。1、服务器端处理用户注册处理用户登录处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容处理用户得到信息处理用户退出存用户聊天信息。2、客户端(1)用户注册界面及结果

(2)用户登录界面及结果

(3)用户发送信息界面及结果

(4)用户得到信息界面及结果

(5)用户退出界面及结果3.3系统性能需求1.实用性:为局域网交流提供方便,有效进行作业管理。可应用于企业办公室,以及校园电子阅览室

2.操作简单:本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。

3.技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。4.安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。5.代码可读性好:文中的代码将尽可能简洁、易懂。3.4系统运行环境运行环境Windows7必要环境JDK1.6以上

硬件环境CPU400MHz以上,内存64MB以上

4概要设计在这里我们将该工作板即基于局域网工作交流平台系统命名为IMessaging,现在对该系统进行概要设计。采用客户机/服务器(C/S)的模式来设计,是一个2层的C/S结构:应用程序服务器→应用程序客户端,其分层机构如图4-1所示。图4-1C/S客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接口。若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。服务层又叫做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。软件开发过程中的概要设计,主要解决实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。4.1工作板即基于局域网工作交流平台系统的实施原理4.1.1工作方式和技术原理本系统的IM工作方式如下:登陆IMessaging通讯服务器,获取一个自建立的历史的交流对象列表(同事列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,从技术上来说,聊天系统的基本技术原理如下:第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(OnlinePresence)。第二步,根据用户A存储在IM服务器上的好友列表(BuddyList),服务器将用户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。4.1.2通讯方式在本系统中,如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通讯方式(PeerToPeer)。4.2软件设计流程因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤:先进行需求分析,再是系统设计,然后是详细设计与编码,其次是软件的测试,最后是软件的运行和维护。在实际过程中这些步骤经常是重叠和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图4-2所示。需求分析需求分析系统设计详细设计与编码软件测试 软件运行与维护图4-2工作板即基于局域网工作交流平台系统开发流程图4.3系统功能模块根据以上分析,本系统主要完成以下几方面的功能,如图4-3客户端工作板(工作交流平台)操作数据库服务器端聊天添加好友查找好友用户登录用户注册监听客户建立连接客户端工作板(工作交流平台)操作数据库服务器端聊天添加好友查找好友用户登录用户注册监听客户建立连接交互图4-3系统功能模块1、服务器端在服务器端,主要的功能模块是建立连接、操作数据库和监听客户。2、客户端在客户端,系统主要实现的功能模块有用户注册、用户登录、查找好友、添加好友、聊天和文件传输。4.4客户端实现流程图客户端的实现流程具体如下:用户首先进行注册,注册成功后,将注册信息保存到数据库中。接下来用户就可以登陆系统,通过数据库验证用户名和密码,若用户名和密码存在且正确,则登陆成功,反之,则重新注册。登陆成功后,系统会自动从数据库中更新用户的好友列表,双击好友头像,打开聊天窗口就可以同好友进行交流。如图4-4所示:登录点击登录,连接到数据库用户名和密码是否为空登录点击登录,连接到数据库用户名和密码是否为空是是注册是否成功 注册是否成功否否 验证用户名注册用户名是否存在 否注册用户名是否存在开始密码是否正确 是开始密码是否正确 是我的好友列表 我的好友列表双击我的好友双击我的好友聊天窗口聊天窗口结束结束图4-4客户端实现流程图4.5类模块设计各类模块设计概要:LoginFrame类:用户登陆,主程序入口类,启动各个主要线程ChatFrame类:用户交流

RegFrame类:用户注册

RecvThread类:接收消息线程

SendFileThread类:发送文件FileRecvListenThread类:文件传输监听线程FileReceiverThread类:接受文件………由于该系统文件很多,更多请参照系统源文件4.6程序设计的重点1、界面设计

界面统一,色彩大气,通用,操作流程化,按钮、字体中规中矩,快捷键一致。2、功能设计由于该系统牵涉到的功能很多,设计的时候应该注意主次分明,应该把每一个模块设计好,各个模块之间互不干扰。4.7接口设计1.外部接口

(1)用户界面本软件的屏幕格式,按钮格式,输入输出方式等都是完全按照人性化的设计,方便用户执行各种操作。各个按钮简单明了,互动性强,适用于各类人群。用户通过主界面的按钮进行系统的控制,同时系统返回一个信息。

(2)硬件接口

本软件产品的用户需要通过键盘及鼠标进行操作,进入主界面后点击相应的按钮,进行规定的键盘操作,然后分别在主界面有相应的动作反应。

(3)本软件与操作平台无关,能适用于各种操作系统。2.内部接口

内部模块之间的接口是通过内部函数完成,在程序设计中用设计软件本身所带的调用函数实现。

5详细设计5.1系统功能要求5.1.1基于局域网工作交流平台的要求此软件是模拟现今国内最为流行的即时性通讯工具QQ而设计的,能够实现注册、登录、添加好友、文字聊天、等功能。该软件是采用C/S结构,即客户端与服务器端的结构体系。基于对该软件功能的分析,本文分别对客户端与服务器端进行了设计。该软件服务器端的功能是实现对客户端提交的用户信息进行处理。服务器设计内容包含:信息接收、注册、登录、添加好友等。“信息接收”是提供服务器接受客户端发送信息的功能;“注册”是服务器端接受到用户的注册信息请求后,将请求信息写入到数据库,为用户的注册提了相关服务;“登录”是服务器通过验证登录信息来实现相关的服务;“好友添加”是服务器对添加的好友信息进行处理等相关操作。客户端即用户使用的应用程序端。用户通过该软件的客户端来实现网上聊天的相关功能:注册、登录、添加好友、文字聊天、聊天等。注册功能是提交用户相关信息以及获得一个属于自己登录该聊天软件系统的用户ID号;登录功能是实现验证用户信息与合法使用该聊天软件系统的权限;添加好友是实现用户之间好友添加的操作;添加好友成功后,就可以与好友之间开始文字聊天、文件传输、聊天等功能。5.1.2基于局域网工作交流平台的管理子系统要求对数据库中的在线用户信息进行管理。对数据库中的非在线用户信息进行管理。对数据库中的聊天信息进行管理。5.2系统性能要求系统的性能要求一般包括:计算和查询响应时间、处理容量、存储容量、人机交互的友好性、系统的安全性、可靠性以及容错能力等,如果是网络系统还应包括系统传输交换能力。本系统非网络系统,所以符合系统的一般性能要求即可。系统的性能要求应从以下几个方面确定:(1)容量要求:确定系统的容量要求,如处理的记录数和处理数据的最大容量等(2)精度要求:确定系统的精度要求,如数据或数值检索的精度要求、数据传输的精度要求等。(3)时间特性要求:确定系统的时间特性要求。如处理时间、响应时间及其峰值负载期间允许偏离范围,系统各项功能的顺序关系,由于输入类型的不同和操作方式的变化引起的有限顺序的变化。(4)适应性要求:必须指明反映系统环境变化的系统适应能力和系统适应能力的各种参数。说明当需求发生变化时系统的适应能力,指出为适应这些变化而需要设计的软件和过程。(5)人机交互友好性:要有适应与用户特点的智能化人机交互界面,便于用户操作使用。(6)系统可靠性:为提高系统可靠性必须采用模块化、结构化设计,需要对容错处理的模块提供备份,以减少系统故障。(7)系统可维修性:系统应具有奥好的可维修性,以便在系统故障时能迅速恢复运行。本系统应具有如下性能:(1)数据库系统的扩充能力(2)快速的信息交换能力(3)快速的响应能力(4)具有较大的数据存储能力(5)系统迅速恢复能力5.3数据库设计基于局域网工作交流平台是一个数据库应用系统,系统的所有信息都是保存在数据库中。在数据库应用系统的开发中,数据库的结构设计是一个非常重要的问题。我们这里所说的数据库结构设计是指数据库中各个表结构的设计,包括信息存在哪个表中、各个表的结构如何以及各个表之间的关系。数据库结构设计的好坏,将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等。本系统使用的是ORACLE数据库。5.3.1数据库需求分析数据库结构设计的第一个阶段,也是非常重要的一个阶段时数据库需求分心。在这个阶段主要时收集基本数据以及数据处理的流程,为以后进一步设计打下基础。1.内容:调查应用系统用户所需要操作的数据,决定在数据库中存储什么数据。2.处理:调查应用系统用户要求对数据进行什么样的处理,理清数据库中各种数据之间的关系。3.数据项:包括名称、含义、类型、取值范围、长度以及和其他数据项之间的逻辑关系。4.数据结构:若干个数据项有意义的集合,包括名称、含义以及组成数据结构的数据项。5.3.2数据库逻辑结构设计概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计.也就是要将概念上的结构转化为数据库系统所支持的实际数据模型。第一种转化是将实体转化为关系表。这种转化比较简单,只需要将实体的属性定义为表的属性即可。第二种转化是联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。在上面工作的基础上的基础上归纳出人员管理数据库表格的组成、列的属性、表格之间的联系等等。该数据库系统要求具有以下方面的特点:结构合理;所建立的数据冗余度小,独立性强;建档、修改、查询、统计快准确;保密性、可靠性好。。5.3.3数据库表的创建工作板即基于局域网工作交流平台系统中各个表格的设计结果如下面的各表格所示。每个表格表示数据库中的一个表。本系统中,主要包含两个表:一个是保存用户用户名和密码的P_user表,另一个是保存用户基本信息的dtproperties表。具体内容如下:表5-1dtproperties表列名数据类型说明ID主键Number包含一个作为记录识别标志的长整数的数字域。是用户表的主索引。ObjectidNumber包含用户的ID。PropertyVarchar2包含用户存储个人信息ValueVarchar2包含用户注册密码UvalueVarchar2包含用户昵称LvalueBlob包含用户头像表5-2P_user表列名数据类型说明P_usernameVarchar2包含用户名P_passwordVarchar2包含用户登录密码5.4系统基本功能设计与实现本设计主要完成的是服务器程序模块,以及客户端登录、注册模块、添加好友模块、聊天模块和文件传输模块,本节对系统主要功能模块设计进行详细的说明。5.4.1服务器程序模块设计与实现服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,JavaAPI为处理套接口的通信提供了一个类.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为8000,然后无限循环调用accept()方法接受客户程序的连接。服务器具有以下功能:启动服务,建立侦听,接受客户端连接。从流中读取经过序列化的对象。分析读取的对象进行相应的操作(登录信息的验证反馈、注册信息的验证和反馈、转发聊天信息等)。向客户端发送系统消息。保存日志。关闭服务,并向客户端发送服务器关闭消息。服务器程序模块源码:ServerSocketserverSocket;//服务器套接字staticVectoru=newVector(1,1);//初始聊天用户对象集staticVectorv=newVector(1,1);//初始聊天信息对象集publicvoidrun() { Try //无限循环实现多线程,实现与多个用户的同时连接 while(true) { //监听并接受客户的请求 Socketclient=serverSocket.accept(); //继承Thread支持多线程 newConnection(client,u,v); }} catch(IOExceptione) {fail(e,"不能监听!");} }当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。5.4.2用户注册模块设计与实现客户端通过RegFrame.java请求注册,填写用户名、密码、昵称和头像等注册信息,并验证用户名是否与数据库中的用户名重复,用户名和密码是否为空。如果用户名不与数据库中的信息重复,且用户名和密码不为空,则注册成功;反之,则系统提示重新输入。相关界面如图5-1。验证要求如下:1、验证用户名是否为空:即用户名的字符长度不为0,,如果验证通过,就继续下面验证,否则返回错误信息。2、验证密码是否为空:即密码的字符长度不为0,如果验证通过,就继续下面验证,否则返回错误信息。图5-1注册界面主要实现代码如下:jb1.addActionListener(newActionListener(){@Override publicvoidactionPerformed(ActionEventarg0){ lf1.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(); 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("注册失败"); } }catch(NumberFormatExceptione){ e.printStackTrace(); }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace();} }});5.4.3用户登录模块设计与实现系统的登录模块是比较重要的,这是用户的一个身份验证,是通讯系统必须的一个功能模块。用户在注册获得账号和密码后,在LoginFrame.java登录界面填写用户名和密码,并封装成对象,通过建立在Socket的连接至上的对象输出流将用户登录信息提交给服务器,服务器通过用户提交过来的信息和数据库中原有的用户信息进行比较和验证,如果结果一致表明验证成功,并将该用户的状态改为在线,最后将登录结果返回给客户端。如果登录成功,客户端将继续启动聊天主界面。如果不一致,给用户返回登录错误信息。验证要求如下:1、验证用户名是否为空:即用户名的字符长度不为0,如果验证通过,就进行继续下面验证,否则返回错误信息。2、验证密码是否为空:即密码的字符长度不为0,如果验证通过,就进行继续下面验证,否则返回错误信息。以下为登录验证的流程图:验证输入信息登录系统开始验证输入信息登录系统开始 不符合结束进入系统符合结束进入系统图5-2用户登录流程图当以上信息验证成功时,客户端将打开与服务之间的Socket连接,用对象输出流包装后将用户登录的信息发送给服务器端,并接收服务器处理完用户登录的信息。

当客户端收到服务器返回的信息时,将会用信息对话框的形式告知用户是否登录成功,若成功则显示收发主界面MainFrame,关闭Socket连接。相关界面如图5-3。图5-3登录界面主要实现代码如下://登录界面publicLoginFrame(){//读取配置文件,连接服务器需要 HelpTool.ReadServerConfig(p,".\\server.txt"); System.out.println(p.getProperty("server")+p.getProperty("port")); //设置窗体关闭事件 jf1.addWindowListener(newWindowAdapter(){ @Override publicvoidwindowClosing(WindowEventarg0){ System.exit(1); } }); //设置发送密码验证按钮事件 jb1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ try{ //创建Socket来发送验证信息 if(!isreg) socket=newSocket(HelpTool.server_ip,HelpTool.port); OutputStreamos=socket.getOutputStream(); PrintStreamps=newPrintStream(os); ps.println("new:"+jtf1.getText()+":"+jtf2.getText()); //等待服务器发送验证结果BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream())); Stringresult=br.readLine(); if(result.equals("right")) { jf1.setVisible(false); MainFramemf=newMainFrame(socket,jtf1.getText()); } }catch(UnknownHostExceptione1){ e1.printStackTrace(); }catch(IOExceptione1){ e1.printStackTrace(); } } });5.4.4添加好友模块设计与实现用户在登录成功后会进入客户端界面。如果想和朋友进行聊天,就将好友的用户名输入到文本框中并用鼠标点击击添加好友,好友收到对方请求后,点击“是”,则成功添加好友。相关界面如图5-4。图5-4添加好友界面主要实现代码如下: 1.在MainFrame.java界面中,当用户点击“添加好友”按钮时,触发添加好友事件。代码如下://添加好友事件 set.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ Stringname=addfriend.getText(); if(!name.isEmpty()) { try{ OutputStreamos=clientSocket.getOutputStream(); PrintStreamps=newPrintStream(os); ps.println("addfriend:"+name+":"+me); }catch(IOExceptione){ e.printStackTrace(); } } } });2.在RecvThread.java中,当添加好友的请求传送到服务器时,服务器启动线程处理添加好友的请求,处理代码如下://有人请求添加好友 elseif(ss[0].equals("addfriend")) { Stringinfo=ss[1]+"想加你为好友,你是否接受?";intresult=javax.swing.JOptionPane.showConfirmDialog(null,info,"添加好友",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.INFORMATION_MESSAGE);if(result==JOptionPane.YES_OPTION) { OutputStreamos=s.getOutputStream(); PrintStreamps=newPrintStream(os);ps.println("sendfriend:"+ss[1]+":"+me.getName()+":"+me.getQname()+":"+me.getTitle()+":"+me.getImg()); Propertiesp=newProperties(); Personperson=newPerson(ss[1],ss[2],ss[3],Integer.parseInt(ss[4])); HelpTool.ReadServerConfig(p,".\\"+me.getName()+"\\friends.txt"); p.setProperty(ss[1],ss[2]+","+ss[3]+","+ss[4]); FileWriterfos=newFileWriter(".\\"+me.getName()+"\\friends.txt"); p.store(fos,null); friends.put(ss[1],person); listModel.addElement(person); changeStatus(ss[1],1); }}5.4.5聊天模块设计与实现聊天信息的发送与接收都是通过Socket类实现的。将要发送的内容输入文本框,当用户点击完发送按钮后,程序开始将当前用户名、聊天对象和聊天内容进行封装,然后获取Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。图5-5好友聊天界面主要实现代码如下:1.在MainFrame.java界面中,在成功添加好友,双击好友头像,即打开了聊天界面ChatFrame.java(如图5-5),具体实现代码如下://双击好友头像事件 MouseListenermouseListener=newMouseAdapter(){ publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()==2){ intindex=friendList.locationToIndex(e.getPoint()); Personperson=(Person)listModel.get(index); try{ Objecttmp=ChatFrames.get(person.getName()); if(tmp==null) { ChatFramecFrame=newChatFrame(clientSocket,person); ChatFrames.put(person.getName(),cFrame); cFrame.jf.setVisible(true); } else { ChatFramecf=(ChatFrame)tmp; cf.jf.setVisible(true); } }catch(NumberFormatExceptione1){ e1.printStackTrace(); }System.out.println("DoubleclickedonItem"+person.getQname());}}};2.在ChatFrame.java界面中的文本框中输入要发送给好友的内容,当用户点击完“发送”按钮后,程序开始将当前用户名、聊天对象和聊天内容进行封装,然后获取Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。具体实现代码如下://确认添加好友,并发送自己的信息 elseif(ss[0].equals("sendfriend")) { System.out.println(str); Propertiesp=newProperties(); Personps=newPerson(ss[1],ss[2],ss[3],Integer.parseInt(ss[4])); HelpTool.ReadServerConfig(p,".\\"+me.getName()+"\\friends.txt"); p.setProperty(ss[1],ss[2]+","+ss[3]+","+ss[4]); FileWriterfos=newFileWriter(".\\"+me.getName()+"\\friends.txt"); p.store(fos,null); listModel.addElement(ps); friends.put(ss[1],ps); changeStatus(ss[1],1);}//设置发送按钮的发送事件 sendbtn.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+"\n"); ChatStr.setText(""); }catch(IOExceptione1){ e1.printStackTrace(); } } });5.4.6文件传输模块设计与实现在用户聊天窗口中,点击“发送文件”,在发送文件窗口中选择要发送的文件,好友收到对方请求后,好友同意,此时就可以给好友发送文件。相关界面如图5-6,5-7,,5-8。图5-6选择文件界面图5-7是否接收文件对话框图5-8文件传输界面主要实现代码如下:1.在ChatFrame.java界面中,当用户点击完“发送文件”按钮后,触发发送文件事件,出现如图5-6的选择文件窗口。代码如下://设置发送文件按钮的发送事件 sendfilebtn.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ 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){ 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."); } } });2.在选择文件窗口中,选择好准备发送给好友的文件,点击“打开”,系统则自动为好友弹出一个确认是否接收文件的对话框(如图5-7)。代码如下//确认接收文件 elseif(ss[0].equals("sendfile")) { Stringinfo=ss[1]+"想给你传送文件:"+ss[2]+",你是否接受?";intresult=javax.swing.JOptionPane.showConfirmDialog(null,info,"文件传输",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.INFORMATION_MESSAGE); if(result==JOptionPane.YES_OPTION) { JFileChooserjfc=newJFileChooser("choosefile"); jfc.setDialogTitle("Chose..."); jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); intresult1=jfc.showOpen

温馨提示

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

最新文档

评论

0/150

提交评论