Java聊天室的设计与实现方案_第1页
Java聊天室的设计与实现方案_第2页
Java聊天室的设计与实现方案_第3页
Java聊天室的设计与实现方案_第4页
Java聊天室的设计与实现方案_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、 Java 聊天室的设计与实现方案iJava 聊天室的设计与实现方案(WORD 版完整可编辑,需更多资料请联系)摘 要本次毕业设计主要实现了基于 Java 的聊天系统的功能。此系统在模仿 QQ 软件的基础增加了通信的安全性。在现在已有的聊天软件中,经常用户的帐号会被盗取,导致用户建立起来的与各个朋友的联系方式被盗取。因此对所有通过网络来传输的数据都需要进行加密来保证其安全性。通过分析聊天系统的功能以及性能等的需求,运用了 java 技术,设计并实现了基于 java 的聊天系统,并在 Eclipse 上搭建了项目及运行。该系统总体划分为两大功能模块:客户端功能模块和服务器端功能模块。客户端又分为

2、用户注册、已注册用户登录、用户的好友显示、用户之间的聊天、添加好友、查看用户好友信息六大服务功能模块。实现了聊天系统所需要的各项功能。此外,使用 SQL Server20005 数据库来实现数据存储,设计并编写 java 类来实现对 SQL Server2005 数据库中的数据的操作。关键字 Java 聊天系统; Eclipse;SQL Server2005 数据库 Java 聊天室的设计与实现方案iiDesign and implementation of Java chat roomAbstract The main achievement of the graduate design f

3、eatures Java-based chat system. This system is the basis of imitation QQ software to increase the security of communications. In the chat software now has regular users account will be stolen, causing the user to build up contacts with various friends was stolen. Therefore, all data transmitted over

4、 the network needs to be encrypted to ensure security.By analyzing the demand chat system functionality and performance, the use of java technology, design and implementation of java-based chat system, and built on the Eclipse project and run. The overall system is divided into two modules: the clie

5、nt and server-side functional modules function modules. Client is divided into user registration, registered user login, the users friends show chat between users, add friends, view the users friends information six service modules. Chat system implements the functions required. In addition, the use

6、 of SQL Server20005 database to store data, design and write java class to implement the data SQL Server2005 database operations. Keywords: Java chat system; Eclipse; SQL Server2005 database Java 聊天室的设计与实现方案iii目 录摘要.iABSTRACT.ii目 录.iii1. 引 言.11.1 系统的背景介绍.11.2 目标系统的概述.11.3 系统的前景.12. 系统的需求分析.32.1 聊天软件

7、的功能简介.32.1.1 聊天软件客户端功能.32.1.2 服务器功能.43. 系统的设计.53.1 系统的整体结构设计.53.2 系统的详细设计.53.2.1 服务器模块设计.53.2.2 客户端模块设计.74. 系统的实现.114.1 使用技术的介绍.114.2 编程工具的选择.134.3 数据库系统的实现.134.4 数据库的连接设计.145. 系统设计的独特思想.165.1 对腾讯 QQ 的基本功能的调查.165.2 本系统设计.166 .系统功能举例.187.系统测试.22结束语.24参考文献.25附 录.27部分模块代码.27 Java 聊天室的设计与实现方案iv外文原文.34中文

8、翻译.42 Java 聊天室的设计与实现方案11. 引 言1.1 系统的背景介绍近些年来,由于随着信息技术和网络的飞速发展,聊天软件成为了新的人与人交流的工具,于是各种聊天软件便随之诞生。此系统在模仿 QQ 软件的基础增加了通信的安全性。在现在已有的聊天软件中,经常用户的帐号会被盗取,导致用户建立起来的与各个朋友的联系方式被盗取。因此对所有通过网络来传输的数据都需要进行加密来保证其安全性。这是本软件相对于其他大部分软件的优势所在。本系统采用 Java 语言作为开发语言,而 Java 语言又以其优秀的安全性和可移植性,越来越多的被人们所青睐以及使用。基于局域网的即时通信工具,实际上是互联网即时通

9、信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用 UDP 或者 TCP 协议体系来实现 ,开发技术已经比较成熟,比如较早的 ICQ、MSN Messenger、YAHOO 通等国外开发的产品,还有国产的有名的 QQ、新浪 UC、LAVA-LAVA 等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如 ICQ 的巨大客户群,MSN 的个性化表情,YAHOO 通的易操作性等,而 QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方

10、面也各有所长,但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者 UDP/IP 协议的软件产品。在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要简单,但是可以借此理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。1.2 目标系统的概述我完成的题目java 聊天室的设计与实现该题目是我在了解当前聊天软件的现状,并通过对 Java 的学习后下决心完成的。通过学习 Java 使我了解它的优势,并通过与当前网络聊天软件的缺点对比,我发现Jav

11、a 语言能很好编写此聊天系统。 “Java 支持统一的数据库接口标准 JDBC(Java Database Connectivity) ,Java 可以通过 JDBC 驱动程序直接访问数据库。 ”等优秀的特性。我通过查阅网络上一些优秀聊天系统的设计思想和代码,并从中吸取了许多别人设计的系统的优点。我想有前人优秀的设计基础,以及我在大学中所学的专业知识,我对完成此次设计充满信心。1.3 系统的前景本聊天系统未来将作为未接入 internet 局域网的聊天软件,用户之间可以进行方便的信息交流和文件传输。 Java 聊天室的设计与实现方案2网络技术和数据库管理技术的不断发展,C/S 体系结构在软件的

12、开发中越来越流行。因为这种结构的局域网即时通讯软件可以充分发挥网络的作用和数据库系统的优势,以满足企业各种应用的需求。局域网内部文件传输及聊天工具平台,是在企业局域网内部使用的,员工之间用来交流和文件共享的一个工具,一般都会具有文本聊天、文件传输等功能,随着近来信息技术的发展,视频会议、远程协助、系统集成、分级管理、通知公告、群组讨论、企业文件柜等适合与企业内部使用,操作方便的功能点逐渐融入到局域网语音聊天工具之中,以其消耗少、使用简答、沟通安全等特点成为现今企事业单位内部沟通应用最广泛的软件之一。局域网聊天软件利用的是互联网线路,通过文字、语音、视频、文件的信息交流与互动,有效节省了沟通双方

13、的时间与经济成本;局域网聊天软件不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台,将日常办公的传统沟通方式替换,有效的减少办公费用的同时,较之更有效率百分之一。 Java 聊天室的设计与实现方案32. 系统的需求分析2.1 聊天软件的功能简介本软件系统主要有两大模块,分为服务器端功能部分和客户端功能部分。在服务器端主要是用来处理客户端传来的各种消息的,其消息包括用户登录连接请求,用户请求发送给哪位用户的消息区分并将此消息再传递给接收的用户,用户的退出等等。客户端主要是用来实现各种需求的,如注册、登录、登录之后显示登陆成功的主面板,生成需要聊天的聊天窗口,添加好友,

14、查看好友信息等等。其中客户端用例图如下:用户注册登录主面板聊天添加好友查看好友信息图 2.1 客户端用例图2.1.1 聊天软件客户端功能 (1) 用户注册新用户录入(用户登录名,密码与确认密码) ,如果用户登录名与系统中已注册的用户登录名不相同,命名符合指定的规则,且密码与确认密码一致,则系统报告“注册成功” ,否则系统将提示你“登录名已存在” ,或者提示“不符合命名规则” ,等相关信息,这时便需要重新注册。为了及时告诉注册用户其注册名是否符合规则,在此使用了响应时间的机制,在用户填写完毕,将光标聚焦到其他的输入框就开始判断,符合规则,不给予提示,否则会报告错误。(2) 用户登录注册用户输入登

15、录名与密码,如果与系统中已注册的用户登录名及密码匹配,则用户登录成功,否则提示错误。(3) 主面板用户登录成功后,系统会自动提取该登录用户的好友,按照好友所在的分组依次显示在各个分组之下,这些信息都显示在主面板之上。此外在主面板上还有添加好友 Java 聊天室的设计与实现方案4功能,显示选中的好友的相关信息。(4) 聊天用户通过点击好友列表需要聊天的好友,会弹出与其聊天好友的面板,在此面板可以向好友发送信息和显示来自好友的信息。(5) 添加好友用户通过点击此按钮,会弹出添加好友的对话框,在此对话框中添加需要添加的的好友的用户名,再添加完毕之后,同样是通过事先响应机制来查看是否此好友存在,如果不

16、存在,会给与提示。如果存在,分组下拉列表会显示当前用户所拥有的分组,然后用户就可以选择需要添加的好友的所在的分组。(6) 查看好友信息在好友列表中选中想查看的好友,然后点击“查看好友信息”按钮,会弹出一个一个对话框,显示可以查看的此好友的信息。包括好友的用户名,昵称,此好友拥有的好友数,以及此好友和当前登录者共同拥有的好友。2.1.2 服务器功能服务器主要是用来为来自客户端的各种消息提供各种服务,以及显示当前链接到服务器的用户的状态:包括哪些用户登录了,哪些用户断开连接,当前在线的用户的列表等相关信息。 Java 聊天室的设计与实现方案53. 系统的设计3.1 系统的整体结构设计按照需求分析的

17、要求我对本聊天系统主要进行了两大模块设计,现进行模块划分如图 3.1。聊天室系统客户端服务器图 3.1 聊天系统模块划分图3.2 系统的详细设计3.2.1 服务器模块设计1.服务器模块功能:此模块主要有菜单,文本框,列表,水平垂直滚动条以及标签组成。(1) 启动服务器,在服务器端监听发送过来的各种消息(2) 对于新的 socket 发送过来的消息,进行接收,将这个 socket 添加到服务器管理客户 socket 队列,并启动一个新的线程来为这个 socket 提供服务。(3) 每一个新的线程负责自己的客户的 socket,接收来自此 socket 的消息,分析这消息,将其进行相应的处理。这些

18、消息包括:用户登录连接和验证请求,客户端发送过来的消息进行解析,然后提取需要的发送给的接受者,将消息给负责接受者的线程,让接受者线程将消息发送给接受者。用户退出,在列表同样会显示退出的用户,并会刷新当前在线的用户。 Java 聊天室的设计与实现方案62.服务器模块的关系图如图 3.2 所示:启动服务器监听新的socket消息产生一个新的服务客户端的线程新的socketNY分析客户端的消息 图 3.2 服务器模块流程图3.服务器界面介绍:启动此类后,会看到一个菜单栏,启动服务器需要点击“文件”中的“连接”会在文本框中显示相关信息。 “文件”中“退出”即退出服务器,在退出前做一些处理操作,例如,如

19、果还有用户连接在此服务器,会告诉用户服务器退出。以及在服务器中用到的一些流或者套接字操作进行相应的关闭操作。防止退出服务器,还有一些对象在内存占据空间,造成不必要的浪费。服务器模块设计到得类如下图所示:图 3.3 客户端和服务器端类图 Java 聊天室的设计与实现方案73.2.2 客户端模块设计1.注册模块功能:(1) 用户名检验:命名规则验证和是否存在验证。其中命名规则验证时利用正则表达式进行验证是否符合规则,见代码块正则表达式部分。利用响应事件来判断,使用户尽早发现问题。此用户名是否存在利用通过查找数据库看是否存在此用户名已经存在。(2) 昵称:为了让用户使用自己喜欢的名字,不再受到各种约

20、束。(3) 密码:对用户输入的密码和确认密码进行比较,如果二者相等,会给与提示。(4) 确认:将用户的注册的信息添加到数据库的用户列表中,其中对添加的密码是经过加密操作的。(5) 取消:关闭此对话框此功能模块类中的主要属性和方法图 3.4 用户注册页面结构2.登录模块的功能在此获取要登录用户的用户名和密码,然后将这些信息加密发送到服务器上,然后由服务器调用数据库中的数据来查看是否用户发送的数据是否正确,然后将信息返回给客户端。如果错误会在登录框给与提示,否则将自动跳转到登录成功用户的主面板,并将好友显示;此模块由标签,编辑框,密码编辑框和按钮组成。此模块类主要的属性和方法如下图所示: Java

21、 聊天室的设计与实现方案8图 3.5 用户登录页面结构3.主面板模块的功能此模块主要由树控件,按钮组成。(1) 此模块主要是在初始化的时候显示如下的信息:a、根据登录成功的用户的在主面板的标题上显示登录用户的用户名,以来区分多个用户登录显示的多个主面板b、利用树的控件显示好友列表,根据登录的用户的好友所拥有的群组,按照群组进行分类,将好友显示在所在的分组中(2) 功能按钮:a、添加好友:为当前登录的用户添加好友到指定的组中b、查看好友信息:对自己好友列表中的好友可以通过对选中好友查看其可以看到的信息(3) 事件响应:在此控制面板中需要添加对选中的好友的信息进行提起,提取的信息一方面是用来生成与

22、选中的好友进行对话的聊天窗口,对生成的每个聊天窗口用一个 HashMap 进行统一的管理,以便从服务器来的消息可以区分出是来自那个对话者,然后让其显示在取其对话者的接受消息窗口中;另一方面是用来为查看好友的信息进行作准备。此模块对应的类的主要属性和方法如下图所示: 图 3.6 用户主面板页面结构4.聊天模块的功能此模块同样是采用在对话框中显示需要的功能。在此对话框中拥有接收消息和发送消息窗口,以及发送和取消按钮。在初始化中显示以上控件,并且在对话框的标题 Java 聊天室的设计与实现方案9栏显示与其对话者的用户名。(1) 发送消息窗口:在此窗口编辑要发送的消息(2) 接收消息窗口:在此窗口显示

23、编辑的发送消息和接受来自与其对话者发送过来的消息,并且对话者的每条消息都会在其消息前面添加对话者的用户名,以来区分是发送的消息还是接受的消息(3) 发送按钮:取出在发送消息窗口编辑的发送消息,对其进行加密处理,然后将消息发送到服务器上。(4) 取消按钮:将发送消息窗口的消息清空。此功能模块的类的主要的属性和方法如下图所示: 图 3.7 用户聊天页面结构5.添加好友模块的功能此模块首先要求输入添加的好友的用户名,然后选择将要添加到用户的分组中。在此模块中主要有标签,编辑框,下拉列表以及按钮控件组成。(1) 响应事件:对输入用户名编辑框添加相应事件,当用户输入完毕,进入下一控件进行相应的操作,会检

24、测此用户是否存在,如果不存在会给与提示,若存在就在下面组选择列表中显示所拥有组供用户选择。(2) 确定按钮:将用户要添加的好友的信息添加到当前在数据库中的用户的好友信息表中。模块的类图如下图所示: Java 聊天室的设计与实现方案10 图 3.8 用户添加好友页面结构6.查看好友信息模块的功能此模块的主要功能是对选中好的信息查看,信息包括好友的用户名,昵称,好友拥有的好友数目,以及好友与本人共同的好友列表。模块中涉及的控件主要有:标签,编辑框,列表。本模块主要涉及对数据库的操作,一个是直接提取好友的一些直接的信息,一个是计算此好友所拥有的好友的数量,再一个是涉及到本人和好友两个人的信息,计算出

25、共同的好友。此模块类中的主要属性和方法如下图所示: 图 3.9 用户查看好友页面结构7.启动客户端模块的功能本模块主要是作为客户端的启动模块,用来统一操纵上述的各个模块,使他们能够协调远转。另外本模块还定义了一些特别的属性,例如套接字,输出输入流,缓冲等,以提供给客户端各个模块使用。减少每次启动新的模块都要重复定义相同的属性,并且在模块退出时还需要进行相应处理,防止出现内存浪费的现象。虽然 Java 有回收机制,但是依靠这种机制在有些方面还是比较被动的。由于服务器给每个客户端来的新的套接字都分派一个新的服务进程来提供服务,如果每次都用新的套接字,会出现混乱的现象。此模块涉及到类的属性和方法:

26、Java 聊天室的设计与实现方案11图 3.10 客户端模块类图4. 系统的实现4.1 使用技术的介绍java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE, JavaME, JavaSE)的总称。Java 自面世后就非常流行,发展迅速,对 C+语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动

27、互联网的产业环境下,Java 更具备了显著优势和广阔前景。Java 的主要特性:JavaJava 语言是易学的语言是易学的。Java 语言的语法与 C 语言和 C+语言很接近,使得大多数程序员很容易学习和使用 Java。另一方面,Java 丢弃了 C+中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。JavaJava 语言是强制面向对象的语言是强制面向对象的。Java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并

28、支持类与接口之间的实现机制(关键字为 implements) 。Java 语言全面支持动态绑定,而 C+语言只对虚函数使用动态绑定。总之,Java 语言是一个纯的面向对象程序设计语言。JavaJava 语言是分布式的语言是分布式的。Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net) ,它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。JavaJava 语言是健壮的。语言是健壮的。Ja

29、va 的强类型机制、异常处理、垃圾的自动收集等是 Java程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。JavaJava 语言是安全的。语言是安全的。Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了 Java 语言具有的许多安全特性以外,Java 对通过网 Java 聊天室的设计与实现方案12络下载的类具有一个安全防范机制(类 ClassLoader) ,如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让Java 应用设置安

30、全哨兵。JavaJava 语言是体系结构中立的。语言是体系结构中立的。Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件) ,然后可以在实现这个Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。JavaJava 语言是可移植的。语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。6JavaJava 语言是解释型的。语言是解释

31、型的。如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。JavaJava 是性能略高的。是性能略高的。与那些解释型的高级脚本语言相比,Java 的性能还是较优的。JavaJava 语言是原生支持多线程的。语言是原生支持多线程的。在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable)的构造子将一个实现

32、了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized) 。JavaJava 语言是动态的。语言是动态的。Java 语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也

33、有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java 语言的优良特性使得 Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java 对对象技术的全面支持和 Java 平台内嵌的 API 能缩短应用系统的开发时间并降低成本。Java 的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是 Java 企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。Java 的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业

34、都产生了深远的影响:(1)软件 4A 目标要求软件能达到任何人在任何地方在任何时间对任何电子设备都能应用。这样能满足软件平台上互相操作,具有可伸缩性和重用性并可即插即用等分布式计算模式的需求。(2)基于构建开发方法的崛起,引出了 CORBA 国际标准软件体系结构和多层应用体系框架。在此基础上形成了 Java.2 平台和.NET 平台两大派系,推动了整个 IT 业的发展。(3)对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B 的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,

35、Java 聊天室的设计与实现方案13新的商机,新的管理。(4)对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。Java 技术已经成为当今 Internet 应用开发的核心与主流技术。这一方面是因为Java 语言具有面向对象、可移植性、强壮性与安全性等优良特性,另一方面也由于Java 技术对各个层次的应用都提供了全面系统的方法和技术。因此,随着时间的推移,Java 技术的应用会更加的广泛。4.2 编程工具的选择 本系统是以 Eclipse 为主要开发工具,Eclipse 是

36、免费的开发工具。Eclipse 具有强大的 IDE,这套强大的集成开发环境中,除了具备常用的编辑、编译、调试等基本功能外,还具备了开发者精心为程序员打造的项目管理、重构和 UML 建模等扩展功能。目前全球有上百万人在使用 Eclipse 进行开发。为什么 Eclipse 拥有如此众多的拥趸?这与 Eclipse 集众多特性于一身有很大关系。 Eclipse 是开放源代码的软件。这意味着 Eclipse 不仅可以免费使用,还可以通过研究源代码学习世界上顶尖开发人员的编程技术,并可以共享遍布全球的开发人员所贡献的公共开放源代码库。 Eclipse 是真正可扩展并可配置的。Eclipse 采用插件机

37、制,犹如一个花瓶,你可以随时向花瓶里面插花,也可以很容易将不再需要的花取出。目前,互联网上免费的、收费的插件遍地开花,插件开发工作在国内外也如火如荼。 Eclipse 支持众多的开发语言而不仅仅是 Java。Eclipse 只是给开发人员提供了一个能够扩展系统功能的最小核心,基于扩展点的插件体系结构使得 Eclipse 支持多种语言成为可能。只要安装相应语言的插件,Eclipse 就可以支持该种语言的开发。目前,Eclipse 已经可以支持 C/C+、 COBOL、PHP、Perl、Python 等多种语言。 (尽管 Eclipse 主要是一个 Java 开发环境,但其体系结构确保了对其它编程

38、语言的支持)。 Eclipse 提供了对多重平台特性的支持。开发者可以使用他们感觉最舒适、最熟悉的平台,例如 Windows、Linux、MacOS 等。Eclipse 对每个平台都有其单独的图形工具包,这使得应用程序具有接近本地操作系统的外观和更好的性能。 基于业界领先的 OSGi 规范。OSGi 规范最早由 Sun Microsystems、IBM、爱立信等于 1999 年推出,其服务平台包括:服务网关、汽车、移动电话、工业自动化、建筑物自动化、PDA 网格计算、 娱乐(如 iPronto)和 IDE 等。基于 OSGi 的系统以微内核形式运行,因而能够轻松实现软件业界梦寐以求的可热插拔、

39、动态改变行为、稳定高效的系统。Eclipse 从 3.1 开 始,毅然抛弃了其原有的已经获得业界认可的框架,采用 OSGi 作为其架构。从 Eclipse3.2 版本开始,Eclipse 提供了基于 OSGi 开发的支 持,开发者可以利用其开发基于 OSGi 的系统了。 Eclipse 美轮美奂的人机界面受到广泛赞誉。Eclipse 提供了全新的 SWT/JFace API(而不是 AWT/Swing) ,一改 SWT/Swing 单调、沉闷的界面风格,使得开发基于本地的具有丰富图形界面的应用程序成为可能,犹如一股春 风吹进 Java 的桌面开发领 Java 聊天室的设计与实现方案14域,给人

40、耳目一新的感觉。Eclipse 由业界领先者推出,具有强大的行业力量。Eclipse 基金会吸收了大量学术研究机构、商业组织,领导 Eclipse 的长远规划和发展,并确保 Eclipse 处于软件工具行业的领先地位。4.3 数据库系统的实现首先建设一个数据库名称 QQChat,该数据库主要由 userInfo 表和各个用户表构成。其中 userInfo 表主要是用来保存通过注册的用户的相关信息,而各个用户表是用来保存对应用户的好友。其中各个表的结构如下所示:表 4.1 userInfo 表的结构如下表:FieldTypeNullKey说明IDVarchar(20)PRIid 是用户的登录名P

41、asswordVarchar(50)Yes用户的登录密码,以密文的方式进行了保存NicknameVarchar(20)Yes用户为自己命名的昵称表 4.2 各个用户表的结构如下表:FieldType 说明Friends_IDVarchar(20)此用户的好有名GroupsVarchar(20)这位好友所在的组4.4 数据库的连接设计 首先数据库的连接方式采用 JDBC 的方式进行的连接。JDBC 是 Sun 提供的一套数据库编程接口 API 函数,由 Java 语言编写的类、界面组成。JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL

42、 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。用 JDBC 写的程序能够自动地将 SQL 语句传送给相应的数据库 管理系统。不但如此,使用 Java 编写的应用程序可以在任何支持 Java 的平台上运行,不必在不同的平台上编写不同的应用。Java 和 JDBC 的结合可以 让开发人员在开发数据库应用程序时真正实现“WriteOnce,RunEverywhere!”数据库的连接工作主要通过服务器由一个 java 类来完成。请见附录中Con

43、n.java 代码实现部分。创建一个以 JDBC 连接数据库的程序,包含 7 个步骤: 1、加载 JDBC 驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到 JVM(Java 虚拟机) , Java 聊天室的设计与实现方案15这通过 java.lang.Class 类的静态方法 forName(String className)实现。成功加载后,会将 Driver 类的实例注册到 DriverManager 类中。 2、提供 JDBC 连接的 URL 连接 URL 定义了连接数据库时的协议、子协议、数据源标识。 书写形式:协议:子协议:数据源标识 协议:在 JDBC 中总是以

44、jdbc 开始 子协议:是桥连接的驱动程序或是数据库管理系统名称。 数据源标识:标记找到数据库来源的地址与连接端口。 3、创建数据库的连接 要连接数据库,需要向 java.sql.DriverManager 请求并获得 Connection 对象, 该对象就代表一个数据库的连接。 使用 DriverManager 的 getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。 4、创建一个 Statement 要执行 SQL 语句,必须获得 java.sql.Sta

45、tement 实例,Statement 实例分为以下3 种类型: 执行静态 SQL 语句。通常通过 Statement 实例实现。 执行动态 SQL 语句。通常通过 PreparedStatement 实例实现。 执行数据库存储过程。通常通过 CallableStatement 实例实现。 5、执行 SQL 语句 Statement 接口提供了三种执行 SQL 语句的方法:executeQuery 、executeUpdate 和 execute ResultSet executeQuery(String sqlString):执行查询数据库的 SQL 语句,返回一个结果集(ResultSet

46、)对象。 int executeUpdate(String sqlString):用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL 语句,如:CREATE TABLE 和 DROP TABLE 等 execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 语句。 6、处理结果两种情况: 执行更新返回的是本次操作影响到的记录数。 执行查询返回的结果是一个 ResultSet 对象。 ResultSet 包含符合 SQL 语句中条件的所有行,并且它通过一套 get 方法提供了对这些行中数据的访问。 7、关闭 JDBC 对象 操作完成以后

47、要把所有使用的 JDBC 对象全都关闭,以释放 JDBC 资源,关闭顺序和声明顺序相反: 关闭记录集 关闭声明 关闭连接对象 Java 聊天室的设计与实现方案165. 系统设计的独特思想5.1 对腾讯 QQ 的基本功能的调查腾讯 QQ(简称“QQ” )是腾讯公司开发的一款基于 Internet 的即时通信(IM)软件。标志是一只戴着红色围巾的小企鹅。腾讯 QQ 支持在线聊天、视频聊天以及语音聊天、点对点断点续传文件、共享文件、网络硬盘、自定义面板、远程控制,QQ 邮箱等多种功能,并可与移动通讯终端等多种通讯方式相连。1999 年 02 月,腾讯正式推出第一个即时通信软件“OICQ” ,后改名为

48、腾讯 QQ。QQ 注册用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户,2014 年 4 月 11 日 21 点 11 分在线人数突破两亿,如今已成为腾讯公司的代表之作,是中国目前使用最广泛的聊天软件。QQ 支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和传送语音网址。QQ 可以自动检查您是否已联网,如果您的电脑已连入 Internet,可以搜索网友、显示在线网友,可以根据 QQ 号、昵称、姓名、Email 地址等关键词来查找,找到后可加入到通讯录中。当您的通讯录中的网友在线时,QQ 中朋友的头像就会显示Online,根据提示就可以发送信息,如果对方登记了寻

49、呼机或开通了 GSM 手机短消息,即使离线了,您的信息也可“贴身追踪” ,及时将信息传递给您的好友。 左键单击好友的头像,有收发讯息、传送文件、传送语音、二人世界、手机短讯、发送邮件、个人主页、查看信息等功能。具体如下: 收发消息:这是 QQ 最常用的功能,当您的 QQ 上线以后,您可以接收好友发来的QQ 消息或者发送、回复消息给好友。传送文件:您的好友在线时,只需用左键点击图标,选择“传送文件” ,选定要传送的文件,点击发送,等待对方接受请求即可。传送语音:利用此功能可以传送语音信息。插好话筒,左键点击图标,选择“传送语音” ,按提示先录好音,或者打开已录好的文件,发送出去。附言栏里可加入附

50、言文字。发送邮件:可以直接给 QQ 上的网友发邮件,而无须再输入 Email 地址。查看资料:查看及更新 QQ 上网友的个人信息资料。邮件检查:设置您自己的 Email,填好邮件 POP3 地址及 SMTP 地址,您可以选择定时检查时间,QQ 就会自动检查有否新邮件到达。BP 机短讯:您可以将短讯以文字的方式传给好友的 BP 机,不管他是否在网上。手机短讯:在 QQ 中,您还可以把您要讲的话用文字的方式发送给您的好友的手机,只要他的手机是 QQ 所支持的,并且开通了短消息服务功能。 Java 聊天室的设计与实现方案175.2 本系统设计在设计本聊天系统中,我参阅了不少较好的聊天程序代码。纯 j

51、ava 代码编写的聊天系统,像本软件。这个系统也是采用房间管理的机制,客户端/服务器模式。通过对别人设计的总结,我采用各种代码优势结合的方法。渐渐总结出自己的设计思想。 在用户登录、注册、主面板、消息接收或发送等都放在一个独立的模块用一个的类来实现,有利于生成多个同一个类的对象,符合面向对象的设计思想。 在页面编写中需要独立功能的放在一个类中实现,有利于在其他的类中直接生成其对使用就可,在程序开发中避免语句的重复编写,提高代码的利用率。如我设计中的 Conn.java,RegexChk.java,DESCipher.java。 尽量保持聊天室的页面流畅、负载能力强、灵活易用、性能稳定。 Jav

52、a 聊天室的设计与实现方案186 .系统功能举例1.服务器界面:服务器界面是在客户登陆之前需要打开的,以接受来自客户端的连接请求。在实现了界面之后,需要用户点击菜单栏的文件按钮,文件按钮的下拉菜单有连接按钮,点击链接才正式启动了服务器,启动后的服务器的界面如下图 6.1 所示:图 6.1 服务器界面2.登录界面 :登录界面是让用户完成登录功能的,有帐号的用户只要输入正确的用户名和密码即点击登录按钮可登录到聊天页面,登录界面如下图 6.2 所示: Java 聊天室的设计与实现方案19图 6.2 登录界面3.注册界面如果用户没有账户名,也可以先注册再登录。当用户要注册时,可以点击“注册”按钮,打开

53、注册界面,在注册界面,用户只需按照提示输入自己想使用的用户名和密码,用户名由 4-20 位数字、字母、下划线、汉字组成,结尾不允许为下划线,点击确认按钮可完成注册。注册界面如下图 6.3 所示:图 6.3 注册界面4.主面板界面当用户登录成功之后,会自动跳转到登陆成功用户的主面板界面显示相关的信息,会显示用户好友的分组及组中的列表,分组的类别为:朋友、同事和同学等。用户主面板如下图 6.4 所示: Java 聊天室的设计与实现方案20图 6.4 主面板界面5.聊天界面:聊天界面如图 6.5 所示。这里主要包含了用户聊天功能。当用户要发送信息时,只要在发送消息窗口编辑自己想要发送的消息,然后点击

54、“发送”按钮即可。发送的信息就会在分别在自己和聊天对象的接受消息窗口中显示。用户的聊天界面如下图6.5 所示:图 6.5 聊天界面6.添加好友界面:通过此界面就可以完成添加好友到指定的群组中。用户点击添加好友按钮进入添加好友界面,在添加好友的用户名中输入要添加的好友用户名,选择所在的组分别为:好友、同学和同事等,点击确定按钮就可以完成添加好友功能。添加好友界面如下图6.6 所示:图 6.6 添加好友界面 Java 聊天室的设计与实现方案217.查看好友界面: 对好友列表中的好友选中某一个,然后点击“主面板”中的“查看好友信息”按钮,就可以看到此好友相关的信息,有好友用户名、匿名、好友的好友个数

55、和查看你们的共同好友。查看好友界面如图 6.7 所示:图 6.7 查看好友信息界面 以上几个界面即本系统在运行时可以选择显示的。 Java 聊天室的设计与实现方案227.系统测试系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。流程如图 1 所示。系统测试的目的是验证最终软件系统是否满足用户规定的需求。主要内容包括:功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如产品需求规格说明书 。由于正确性是软件最重要的质量因素,所以功能测试必不可少。健壮性测试。

56、即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。本系统测试使用黑盒测试,下面是各个功能模块测试的测试用例:注册功能模块测试用例:表 7.1 注册功能模块无效的测试用例用户名密码111aaaa_111a111aa111aaa111aaaa111$aaaa111&aaaa111表 7.2 注册功能模块有效的测试用例用户名密码_wangwu111wangwu1111wangwu111王武111 Java 聊天室的设计与实现方案23登录功能模块测试用例:表 7.3 登录功能模块无效的测试用例用户名密码_libai111libai1111libai11

57、1李白111_wangwuaaaa111表 7.4 登录功能模块有效的测试用例用户名密码_wangwu111wangwu1111wangwu111王武111 Java 聊天室的设计与实现方案24结束语 系统的缺陷和不足1. 由于系统没有经过网络测试,在网速太慢情况下,用户能否正常登录和正常聊天不太清楚。2. 由于时间的原因,系统的在追求功能方面下了比较大的力气,在美观方面还有有缺陷的。 评价在信息化社会的今天,人们生活节奏的加快,网络已经是人生活不可缺少的一部分。人们应用网络的目的,主要有信息检索、网络办公和在线交流等。但随着网络用户的增加,网络资源显得越来越匮乏。一个流畅、负载能力强、灵活易

58、用、性能稳定的聊天室是人们所期盼的。所以以先进的 Java 技术开发的聊天系统正能满足人们的要求。事实上,也已经验证了 Java 技术在网络上有着的有利优势。由于我的水平有限,所作的工作远远不足人们对聊天室的要求。但我会继续努力,争取完善我的聊天室系统。我也相信将来会有基于 Java 更好的聊天室问世,功能也会满足人们的需求。我希望通过这次设计,能给我的大学生活留下个美好的回忆。 体会在这次设计中,我真正的体会到做一个系统的艰辛。从资料查阅,系统编码开发,到编码的测试,都需要扎扎实实地去学习和研究。尤其是开发的初期,在系统的需求分析和编程工具熟悉上非常重要。在短短几个月的系统设计中,我认识到自

59、己理论知识的不足,特别在编写程序时,总是出现一些注意不道的错误。这样会使我在调试程序,付出很多时间,才能慢慢的发现这些错误。这使我认识到,学习和掌握全面理论知识的重要性。我想通过本次设计,我学会了许多东西,而这些东西将在我以后的学习中,起到重要的作用。我也会以本次设计为契机,奔向更高目标。 Java 聊天室的设计与实现方案25参考文献1 美Rogers Cadenhead.Java 编程入门经典(第 4 版).梅兴文译.北京:人民邮电出版社,2007.3255 2 陈轶,姚晓昆.Java 程序设计实验指导.北京:清华大学出版社,2006.861053 杨昭.二级 Java 语言程序设计教程.北

60、京:中国水利水电出版社,2006.54164 4 赵毅.跨平台程序设计语言Java.西安:西安电子科技大学出版社,2006.1035 5 雍俊海.Java 程序设计习题集.北京:清华大学出版社,2006.1021326 朱福喜.Java 语言习题与解析.北京:清华大学出版社,2006.105155 7 谷铁涛.用 java 访问 SQL 2000 数据库.期刊:中国科技信息,2007(16).761048 王珊.数据库系统概论.西安:西安电子科技大学出版社,2006.34559 古乐,史九林等.软件测试技术概论.北京:清华大学出版社,2005.84102 10 贺平.软件测试技术.北京:机械工业出版社

温馨提示

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

评论

0/150

提交评论