《基于J2SE的QQ聊天系统的设计本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于J2SE的QQ聊天系统的设计本科毕业论文.doc(39页珍藏版)》请在三一办公上搜索。
1、本科毕业论文题目:基于J2SE的QQ聊天系统 基于J2SE的QQ聊天系统摘 要Java编程语言是目前世界上最流行的计算机编程语言之一,拥有面向对象,分布式,性能优异,多线程等特性。越来越多的企业, 因为使用了Java而提高了生产效率。绝大多数IT企业都选择用Java来进行软件开发,如此众多的企业青睐,使Java在所有语言中的排名中名列前茅。本课题主要研究的是利用J2SE编程语言的多线程技术和Socket的优越性,将软件中的视图、业务逻辑互相分离,设计与实现局域网聊天软件,此系统分为服务器和客户端,服务器提供转发信息及广播系统消息功能,而客户端主要实现私聊和群聊功能,同时能利用线程同步完成文件的
2、传送。关键词: J2SE,Socket通信,多线程,QQ聊天系统Design and Implementation of the QQ chatting system based on J2SEAbstractThe Java programming language is one of the worlds most popular computer programming language, object-oriented, distributed, high-performance, multi-threaded. More and more enterprises, because o
3、f the use of Java and improve production efficiency. The vast majority of IT companies have chosen to use Java software development, so many companies favor, the Java ranked among the best in all languages. The main subject of the study is the use of the J2SE programming language multi-threading tec
4、hnology and Socket superiority separated from each other, views, business logic software, design and implementation of LAN chat software, this system is divided into server and client, the server provides forwarding information and broadcasting system messages, the client achieve private chat and gr
5、oup chat feature, while thread synchronization completed document delivery.Key words:J2SE, Socket communication, multi-threaded, QQ chat system目 录摘 要III关键词IIIABSTRACTIIIKEY WORDSIII第一章 前言11.1系统背景11.2系统开发的目的和意义11.3 对现阶段聊天软件的分析11.4本系统优势及开发方案1第二章 关键技术概述32.1 Java语言概述32.2 Java Swing简介3第三章 系统分析43.1 需求分析43
6、.2 功能分析4 3.2.1 用户注册和登录4 3.2.2 聊天功能分析5 3.2.3发送接收文件6 3.2.4 查看聊天记录6 3.2.5启动、停止服务6 3.2.6 查看好友资料73.3系统开发环境7第四章 系统概要设计94.1 系统用例图94.1.1 客户端用户用例图94.1.2 服务器端管理员用例图94.2 系统功能模块设计94.2.1 系统功能模块图10第五章 系统详细设计115.1 服务器设计思想115.2 服务器端界面115.2.1 服务器端各主要类的定义及其功能115.2.2 服务器端管理功能设计125.2.3 服务器端显示消息的功能设计125.3 客户端设计思想125.4 客
7、户端界面135.4.1 客户端类的定义以及功能实现135.4.2 客户端发送消息的设计135.4.3 客户端显示收到消息的设计145.4.4 客户端发送接收文件的设计145.4.5 查看好友和个人资料设计14第六章 系统具体实现156.1登陆系统的实现156.2 服务器端模块功能实现156.3 显示在线用户166.4 公聊和私聊功能代码实现166.5 客户端模块功能实现166.6 客户端接收发送消息功能代码186.7 用户发送接收文件功能代码19第七章 系统功能测试217.1软件测试技术217.2 测试用户注册登录217.3 测试用户聊天记录217.4 测试聊天及其文件传送227.5测试启动停
8、止服务器服务22第八章 结论23致谢24参考文献25第一章 前言1.1系统背景QQ聊天软件,是一种聊天工具,使用者通过安装软件可以进行多人之间的即时沟通。它除了能加强网络之间的信息沟通外,最主要的是可以将网站信息与聊天用户紧密联系在一起。QQ聊天软件不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台,不仅比传统沟通方式更节省办公费用,而且还使工作更有效率。1.2系统开发的目的和意义由于互联网发展迅速,人们的工作和生活也越来越离不开信息网络的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本设计的主要目的是为了满足人们通讯交流的便捷,实现灵活、全面的音、视频信
9、息的传递和服务。课题的主要任务是设计在局域网里进行聊天的应用软件。本系统开发采用C/S(Client/Server)模式,通过客户机与服务器结构,在MyEclipse开发环境下,使用Java编程语言进行本软件的开发。本文将设计与实现基于Java多线程和Socket技术的QQ聊天系统。1.3 对现阶段聊天软件的分析MSN Messenger、QQ、Skype、网易泡泡(POPO)、ICQ(“I seek you”)等是现在网络上比较流行的几款在线聊天软件,它们都具备在Internet上聊天、发送消息和文件传送等功能。通过对几种流行的在线聊天软件介绍,我们可以总结出:这几种聊天软件在常用功能上基本
10、差不多,包括:文字、语音、视频、收发文件等;做为普通网民安装一种就可以了。由于这几种聊天工具之间是不可以相互连接、相互对话,为了满足各路网络游侠的爱好和习惯,因此才会使用多种聊天工具,这就是在线聊天软件所存在的缺陷。1.4本系统优势及开发方案传统的局域网聊天软件,大部分显示层和业务逻辑层混杂在一起,对于系统的使用和维护管理非常困难;并且,不管是哪种在线聊天软件,它们最大的缺陷就是服务器固定的,用户必须连接上指定的服务器才能进行聊天等操作。本系统基于Java编程语言开发,通过将业务逻辑层、显示层分离,为系统开发提供了可扩展性和易维护性。并解决了上述的各种难题。本课题设计方案包括:系统需求分析,系
11、统总体设计、业务流程设计,服务器端和客户端设计,系统测试。本系统基于C/S架构设计,采用J2SE语言开发。将显示层和业务逻辑层分层设计,两层各司其职,只需更改需求变化的层中的业务逻辑代码而不会影响到其它层中的代码;本系统选择自定义文件类型存储用户聊天日志以及服务器操作日志,确保聊天记录安全性,这样可大大增强了系统的健壮性和可维护性以及可移植性。第二章 关键技术概述2.1 Java语言概述Java是一种电脑编程语言,拥有跨平台、面向对象、泛型编程的特性。Java是由Sun微系统公司所发展出来的程序语言,它本身是一种对象导向(Object-Oriented)的程序语言。2.2 Java Swing
12、简介Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。Swing是一个标准的MVC结构。 ComponentUI代表View, 负责描画组件。 组件尤其Model层,比如JTextField的Document,JTable的TableModel,JTree的TreeModel等等。 而Control可能不是很明显, 我们或许可以简单的将其Event机制看作一个Swing团队开发给开发者的Controll
13、er。第三章 系统分析系统需求分析是整个开发过程的第一个阶段,也是最重要的一步。为了确定本系统的业务流程和每个功能点具体的功能实现,通过分析,我为开发系统制定了以下合理的方案和需求分析:3.1 需求分析聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首先来看一下服务器端的任务:1. 服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。2. 服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。以上就是服务器端最主要的两个任
14、务。不难看出,服务器端的任务并不复杂。客户端应该完成的工作包括:1. 与服务器端建立通信通道,向服务器端发送信息。2. 接收来自服务器的信息。相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。3.2 功能分析首先是确定本系统的主要功能类别,及其子功能模块。通过分析,本系统要实现的功能如下:用户注册、登录;查找好友;私聊、群聊;查看个人资料查看好友资料;文件传送;查看聊天记录。3.2.1 用户注册和登录1.注册服务器收到用户的注册请求,便开始接受客户传递的信息,诸如用户的账号(必须为6-10个字符),昵称,性别,籍贯,个人资料等,接受
15、完毕后,便通过JDBC与后台MYSQL数据库连接,然后向数据库添加记录。客户端收到服务器返回的信息后,便显示主登陆窗口。2.登陆在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器登录信息,服务器收到后,开始通过JDBC读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客户端向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,得到好友的号码后,再在数据表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量(Vector)用以存储好友的昵称,号码。登陆流程结束客户端主窗体错误提醒服务器监听登陆验证发送请求有连接请
16、求登陆成功没有响应连接失败注册图 3.1 客户端用户登录流程3.2.2 聊天功能分析1.私聊私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。例如服务器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。B接收到A发来的信息,如果是未建立对话窗口,就询问是否建立对话,否则就丢弃信息。2.群聊群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是服务器会将信息转发给指定群的所有成员。业务流程:编辑消息内容接收消息读取聊天记录显示聊天记录显示消息发送消息结束操作图3.2 客户端聊天流程图3.2.3发送接收文件功能描述:发送文件给指定用
17、户,用户接收文件,保存在指定目录。业务流程:选择用户选择文件发送文件监听接收文件监听接收文件接收文件结束中断接收中断发送文件取消取消发送接收图 3.3 客户端维护聊天记录流程3.2.4 查看聊天记录功能描述:显示聊天历史记录,清除聊天历史记录,将聊天记录导出文件。业务流程:清除聊天记录导出聊天记录读取聊天记录清除聊天记录清除聊天记录结束操作显示文件信息返回错误文件是否存在YN图 3.4 客户端维护聊天记录流程3.2.5启动、停止服务功能描述:自动设置服务器端套接字,启动服务后监听客户端的请求,同时显示连接状态和接收请求的信息。向客户端发送消息,关闭服务器端的套接字,断开与客户端的连接,显示服务
18、器状态。业务流程:启动服务监听客户端显示请求内容结束接收请求无请求图3.5 服务器端启动服务流程停止服务向客户端发送消息断开与客户端连接结束操作图3.6 服务器端停止服务流程3.2.6 查看好友资料用户登录以后,想在客户端得到好友的资料并显示在聊天主界面上,可以把好友的账号发送到服务器进行数据库连接从而得到该用户的信息,并发送到客户端进行显示。登录系统点击好友图标选择好友资料显示好友资料信息图3.7 查看好友资料3.3系统开发环境MyEclipse 是一个十分优秀的用于开发Java、J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支
19、持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。本系统开发平台将选用MyEclipse进行编码实现。第四章 系统概要设计4.1 系统用例图4.1.1 客户端用户用例图图4.1 客户端用户用例图4.1.2 服务器端管理员用例图图4.2 服务器端用例图4.2 系统功能模块设计本系统设计包括概要设计和详细设计,概要设计的主要任务是概要地设计软件的整体结构,也就是要确定系统每个功
20、能是由哪些模块组成,以及这些模块的相互关系。详细设计包括业务对象模型设计、功能逻辑设计和界面设计等工作,详细设计是系统实现的依据,需要认真的考虑所有的细节。详细设计的根本目标是确定系统功能模块的具体设计方案,并得出对系统的精确描述,从逻辑上实现系统每个模块的功能,设计出简明易懂的处理过程,为编码实现奠定基础。本系统涉及到一个服务器端和N个客户端。客户向服务器发送请求,服务器对请求作出响应。客户尝试与服务器建立连接。一旦连接建立起来,客户和服务器就可以通过套节字进行通信。本系统主要分为两个功能模块:服务器端功能模块和客户端功能模块。此外还增加了登陆功能和文件传送功能。聊天系统服务器客户端文件传送
21、截图图4.3 系统全局功能模块图4.2.1 系统功能模块图服务器开始监听广播系统消息保存聊天日志显示在线用户关闭监听显示系统配置退出系统图4.4 服务器端功能模块图客户端登陆/退出密码找回公聊/私聊个人及好友资料操作文件传送显示好友退出系统图4.5 客户端功能模块图第五章 系统详细设计由于服务器端是整个系统的核心,它包含了监听客户端请求、转发客户端消息和控制服务的开启和关闭等功能。5.1 服务器设计思想设计服务器,应考虑以下问题:安全性:服务器的安全性包括两部分,一是服务器端软硬件配置上的安全性,比如防止系统漏洞;二是服务器和客户端通讯协议的安全性设计,防止通过协议本身导致服务器被非法攻击等。
22、服务器在监听到一个客户以后,它就会创建一个线程去管理这个用户。至于如何去管理这个用户,服务器端不做任何干涉,完全由监听线程决定。监听线程主要对客户端的请求进行响应,做到有求必应。接收到信息后,首先判断该信息是哪种类型,如果是要访问数据库服务器,则直接根据发送信息内容操作数据库。如果是聊天内容,服务器会将该信息再次转发到目的地。这些判断将会全放部在一个线程的run方法中。5.2 服务器端界面图5.1 启动服务器主界面5.2.1 服务器端各主要类的定义及其功能ServerStart:这个类是服务器端程序运行的入口,EventQueue.invokeLater()是Swing程序启动的标准做法,Sw
23、ing代码放入实现了Runnable接口的类的run方法中,然后创建一个该类的对象并将其传入静态的invokeLater或invokeAndWait方法。SetScreenCenterUtil:所有调用该类的setScreenCenter()方法,将窗体居中显示,调用setScreenRight方法,将居右显示。5.2.2 服务器端管理功能设计服务器端的主要任务是客户端之间相互通信交流,即对客户端进行管理功能的实现很重要的。关键代码:Overridepublic void dealWithMessage(Flag flag, String message,TCP tcp)switch(flag
24、)case LOGIN:doLogin(message,tcp);break;/如果是登录case GET_FRIEND_INFO:doGetFriendInfo(message,tcp);break;/处理用户发来的请求好友资料的事件5.2.3 服务器端显示消息的功能设计服务器端作为客户端消息的中转站和系统消息发出站,对消息的处理也是比较重要的一个功能,如果服务器端失去了消息发送消息的功能,聊天室就不需要服务器端了。5.3 客户端设计思想在客户端的设计中,应当加入客户端登陆界面、主界面、接收发送信息以及发送接收文件功能的多线程,由于本系统是为了满足局域网内交流的实现,并且服务器要求并不固定,
25、达到要求的任何终端都可以做为服务器,客户端的功能要求复杂了一些,除了要实现基本的交流功能外,还应该实现文件传送、截图功能以及对于系统消息和个人聊天记录的保存。5.4 客户端界面图 5.2 客户端用户聊天主界面5.4.1 客户端类的定义以及功能实现ClientStart:客户端的启动的main方法就在这个类中。将图像界面和业务逻辑分层处理。LoginFrame:link()方法是用于用户登录,填写昵称、选择性别后可以进行登陆操作。此外实现了监听事件,当服务器未开启时,利用JOptionPane的showMessageDialog方法提示登陆错误信息;客户端的登陆界面的初始化写在initCompo
26、nents()方法中,主界面初始化在ChatMainFrame构造方法中,其组成与服务器端界面类似,Swing组件通过与服务器端的监听器相连。5.4.2 客户端发送消息的设计用户发送消息由ActionListener监听器监听,具体功能是由actionPerformed方法来监听的。该方法首先获得要监听的对象是接收、发送文件还是私聊、公聊。如果是私聊,当选中checkbox后,则加上privateTrue字符串。然后把提示信息、聊天的对象、聊天方式和聊天内容依次通过输出流发送给服务器端,服务器端会根据接收到的内容作相应的转发处理。关键代码:public CS_TCP(String server
27、IP, int serverPort) throws Exceptionsuper(serverIP, serverPort);Overridepublic void dealWithMessage(Flag flag, String message)System.out.println(测试+flag.toString()+,+message);switch(flag)case LOGIN:doLogin(message);break;/如果是登录case REGISTER:doRegister(message);break;/如果是注册5.4.3 客户端显示收到消息的设计在接收消息模块中定
28、义了一个while循环,只要用户没有下线或与服务器的连接没有中断,则消息一直处于等待接收状态。当输入流读取到服务器发送的消息后用if条件语句判断是何种类型的信息,并对其做加上相应的类型提示信息的处理。最后在主界面的消息面板进行显示。关键代码:5.4.4 客户端发送接收文件的设计在ChatMainFrame类的按钮监听方法中,如果监听的资源为sendfile按钮时。单击发送按钮的时候,发送文件线程类将用户发送的文件以及接收文件的用户信息转交给SendFileThread这个类处理;它继承了Thread线程类,在其run方法中,OutputStream将文件转化为字节流通过Socket传送到服务器
29、。由服务器转发给指定的用户接收文件。5.4.5 查看好友和个人资料设计在SearchUserInfoAction类中,通过判断searchType判断是查看好友资料还是个人资料。查看个人资料则类型为0,好友资料则为1。然后查找用户表,将查询的信息显示在用户界面。第六章 系统具体实现6.1登陆系统的实现在登陆时,用户需要输入用户名和密码,服务器接收数据后进行验证,如果正确,则可以登录。本界面主要负责将用户的信息包装成一个Users对象。注册按钮一旦被点击,就会试图创建一个与服务器端的连接。连接创建成功就会将填写的信息发送到服务器端。如果服务器写入数据库成功,使用这个账号,用户可以登陆到系统中。图
30、6.1 登陆界面关键代码:/ 点击登录时public void link() throws Exception / 连接服务器hostname = hostText.getText().trim();port = Integer.parseInt(portText.getText();Client = new Socket();InetSocketAddress address = new InetSocketAddress(hostname, port);client.connect(address, 8000);/ 设置八秒后登陆超时6.2 服务器端模块功能实现实现服务器Swing界面的类
31、是ServerManageFrame,作为聊天室系统的服务器,包含了客户端接入以及处理其发出请求的一系列方法,是整个系统的核心,客户发送的信息就是通过服务器转发给其他用户的。服务器端也可以广播系统信息。图6.2 服务器主界面设计6.3 显示在线用户当有用户登录系统时,将在线人数显示在服务器,具体实现关键代码如下: serverSocket = new ServerSocket(port); InetAddress addr = InetAddress.getLocalHost(); serverManageFrame.ip.setText(addr.getHostAddress().toStr
32、ing(); serverManageFrame.name.setText(addr.getHostName(); serverManageFrame.port.setText(serverSocket.getLocalPort() + ); serverSocket.setReceiveBufferSize(50); serverManageFrame.maxNum.setText(50 + 人); int count = serverManageFrame.userList.getModel().getSize(); serverManageFrame.userNum.setText(co
33、unt + 人);6.4 公聊和私聊功能代码实现客户端发送消息到服务器,如果是私聊,则加上字符串privateTrue;反之,加上字符串privateFalse。这样让服务器很容易的区分公聊、私聊操作。if (privateTalkFlag) outmsg = withWho + & + privateTrue + &+ withWho + & +words; insert(myMsgArea, 您对 + withWho + 说: + mywords);6.5 客户端模块功能实现用户登录系统后,将进入聊天系统主界面。整个界面布局采用window风格,客户端聊天的主功能界面,用户登陆后可以实现发
34、送公聊信息、发送私聊信息、接受服务器发送的系统信息;在线用户相互之间可以发送接收对方传来的文件,并且可以个人聊天记录。主界面是系统的核心部分。它可以列出所有好友和客户所有加入的群,也可以提供文件传输功能。如果用户服务双击好友分组或群,好友列表或群成员列表将会显示出来。双击一个好友,可以与他进行私聊。双击一个群成员,可以与群里的所有成员对话。本界面还提供了以下右键菜单:添加好友分组、查找好友并加为好友、查找群并加为群、创建群、移动好友到其它分组、查看好友资料、查看群资料。关键代码如下:try / 使用Windows的界面风格UIManager.setLookAndFeel(com.sun.jav
35、a.swing.plaf.windows.WindowsLookAndFeel); catch (Exception e) e.printStackTrace();客户端主界面如下图所示:图6.3客户端主界面设计图6.4 客户端聊天主界面设计6.6 客户端接收发送消息功能代码如果是群聊,则调用ChatServerThread中的sendMessageToAll发送到每一个客户端。期间会服务器获取所有用户,将信息发送给每一个在线的用户。如果是私聊,服务器会根据用户名查找是哪个用户,再调用sendMessageToOne方法将消息发送到指定客户端。图 6.5 消息提示框 mywords = inM
36、sgField.getText(); / 不能发送空消息也不能都发空格if (mywords.trim().length() != 0) if (withWho.equals(所有人) insert(myMsgArea, myName + : + mywords); else / 对某个人交谈outmsg = withWho + & + privateFalse + &+ withWho + & + mywords;if (privateTalkFlag) outmsg = withWho + & + privateTure + &+ withWho + & + mywords;insert(
37、myMsgArea, 您对 + withWho + 说: + mywords); else insert(myMsgArea, myName + 对 + withWho + 说: + mywords);6.7 用户发送接收文件功能代码使用文件传输的客户端要正确配置好服务器的IP和端口号,以及下载好的文件的存放目录。如果其中之一配置不好,文件下载将会失败。设置好以后,点击保存按钮,如果配置正确,这时将会看到下载的文件。当看到一个文件以后,可以双击该文件夹并查看文件夹里面的文件。图 6.6 文件传输界面用户在界面双击要发送到的联系人,勾选“私聊”选框后,把要发送的文件拖拽到“欲发送的文件”区域,点
38、击“发送文件”按钮即可。若开始或中途想放弃传送则可单击“取消发送”按钮。用户点击发送后,在悄悄话区域会告知接收者发来文件,若接收者接收则单击“接收文件”按钮,然后设定本地保存位置;若不接收则点击“拒绝接收”按钮。通过Java多线程,将文件接收放在线程中处理。图 6.7 是否接收文件大小的友好提示关键代码如下:接收文件线程处理类:AcceptFileThreadnetIn = chatMainFrame.acceptfilesocket.getInputStream();in = new DataInputStream(new BufferedInputStream(netIn);byte bu
39、f = new byte8000000;/ 创建网络服务器接受客户请求chatMainFrame.fileserver = new ServerSocket(chatMainFrame.port);/ 创建网络输出流并提供数据包装器try netOut = chatMainFrame.sendfilesocket.getOutputStream();doc=new DataOutputStream(new BufferedOutputStream(netOut); catch (IOException e1) System.out.print(发送文件创建网络输出流并提供数据包装器异常);第七
40、章 系统功能测试7.1软件测试技术软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题与用户需求、预先定义的不一致性。软件测试技术-软件测试的分类:1、从是否需要执行被测试软件的角度分类(静态测试和动态测试)。2、从测试是否针对软件结构与算法的角度分类(白盒测试和黑盒测试)。3、从测试的不同阶段分类(单元测试、集成测试、系统测试、验收测试)。本设计抽取其中部分功能进行测试操作。7.2 测试用户注册登录测试名称:用户登录客户端功能:用户输入昵称、性别、服务器IP和端口,与服
41、务器建立连接,连接成功后登录服务器,显示客户端主界面。测试流程:用户注册,填写昵称、性别、等个人信息。用户请求登录。客户端检查用户填写的内容是否合法,如果未通过检查,则提示用户正确输入。客户端程序向服务器发送连接请求,如果出现连接超时,则提示用户连接失败。服务器接收请求,连接成功。服务器验证用户名和性别,在列表显示性别和用户。验证通过,显示客户端程序主窗体。测试结果:按照上述测试流程,达到预期结果。7.3 测试用户聊天记录测试名称:用户聊天记录查看客户端功能:查看用户的聊天记录。测试流程:用户登录后,可以查看用户的聊天记录。用户请求查看聊天记录。测试结果:按照上述条件,正常完成操作 。7.4
42、测试聊天及其文件传送测试名称:聊天功能测试及文件传送测试。客户端用户通过发送聊天信息,服务器根据条件转发信息给指定用户。客户端用户向指定用户发送文件。测试流程:用户请求与某个在线用户聊天。用户向服务器发送消息。聊天信息发送至服务器。如果发送失败,提示发送失败。服务器接收用户发送的信息,转发给指定的用户。用户向指定用户发送文件。服务器接收请求后,获取文件路径,转发给指定用户。该用户接收文件,保存指定位置。文件保存成功。取消接收文件。提示文件被拒绝接收。测试结果:聊天双方可以正常通信。服务器关闭后,提示服务器关闭。测试功能正常。传送文件中断后,提示文件已经中断接收。文件发送成功后,成功保存文件,打
43、开保存的文件,文件内容完好。文件传送正常。7.5测试启动停止服务器服务测试名称:启动服务器服务。服务器端功能:启动服务器,侦听客户端发送的请求,响应客户端请求。显示服务器名称、IP、在线人数、聊天日志等。测试流程:运行服务器端程序。获取本地IP地址,从本地配置文件中读取端口号。显示服务器配置信息。弹出服务器端主窗体,菜单栏上“启动服务按钮”的状态应为不可以用。服务器启动成功,进入侦听状态,侦听客户端发送的请求。显示客户端聊天日志。测试结果:服务器启动成功,功能正常运行。第八章 结论本课题讨论了如何利用java编程语言开发仿QQ聊天系统,并满足了分层处理、界面友好、响应速度快、服务安全性以及稳定
44、性等特点。该课题从设计、规划、编码、运行到测试,已完成所有的研究项目。整个研究开发过程中,是一个不断探索不断学习的过程。其开发过程大致可以分为一下三个大的阶段:第一个阶段是该软件的开发计划,需求分析和调研阶段,在这个阶段里,大致的学习了Java的相关技术,分析了目前流行的聊天软件的性能和功能。第二阶段就是软件的设计与实现。在这过程中,开始是该软件的需求分析与初步设计以及实现阶段,这是该软件的第一个模型。然后是对软件的结构进行改进的阶段,这是该软件的第二个模型。经过一段时间的测试对界面做了改进。可以说该软件的总体开发模式采用原型演化的开发模型。现在该项目已经基本上完成了所有的要求,还扩展了一些功
45、能。第三个阶段是软件的测试和论文整理阶段,完成了对软件的所有的功能的测试,并且认真完成论文的编写。系统侧重于研究并实现了Java网络编程的部分。根据实现的情况看,具有友好的聊天界面效果,以及流畅的网络通信效果。生成的聊天室可以达到基本的聊天要求,具有较高的研究价值。系统具有目前聊天室的基本功能:包括支持字体样式选择,支持私聊和公聊,支持文件传送。具有速度快,高稳定性,占用系统资源少,用户界面友好等特点。通过毕业设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅。同时在导师的指导下,及时总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。致谢在课堂上我学习了诸多的理论知识,也进行了一定的上机实训和一些大小实验,但是从没有独立解决一个生活中实际问题,如果没有实践将没有积累的经验,现在缺少