手机聊天室设计与开发毕业设计说明书_第1页
手机聊天室设计与开发毕业设计说明书_第2页
手机聊天室设计与开发毕业设计说明书_第3页
手机聊天室设计与开发毕业设计说明书_第4页
手机聊天室设计与开发毕业设计说明书_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计说明书手机聊天室设计与开发学生姓名: 学号: 学 院: 专 业: 指导教师: 2011年 6 月手机聊天室设计与开发摘 要网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室。本毕业设计论文介绍用java语言设计和实现一个手机网络聊天室的过程,本系统采用c/s架构设计,整个项目分为服务器端和客户端。使用了最新的java 2标准swing组件,开发出简洁美观和布局合理的用户和服务器界面;利用socket网络开发技术实现客户端和服务器端的连接访问,实现网络功能;通过对数据流操作的合理设计,实

2、现信息传递、接受和数据保存。同时,采用多线程、多任务的设计思想,开发出性能稳定,功能全面的服务器。完整的实现系统的功能。通过本次毕业设计可以学到如何应用和实现面向对象的各种方法,如何使用eclipse集成开发环境来创建和开发项目,从而完成系统的完整开发。关键词:聊天室;java;应用程序;swing组件;socket技术design and development of mobile chat roomsabstractthe network chat room is a kind of applied extensive network chat method, operate in eas

3、e and the function is abundant, it can be used as a good case for learning of java design language and the object-oriented programming language, there is many programming language of design to develop a network chat room with perfect function.this graduation thesis of design introduction how to use

4、the java language design and carry out network chat room, the system adoption the c/ s structure design, the whole system is divided into the server and client .used standard modules of swing of latest java2, develop a simple and direct beauty user interface ,we make use of the socket technology to

5、interconnect the server and client by net-work ;organize the data by good design of data stream to sent or accept the message between users and to record the message for ever; we also use the multi-thread multi-action to make the program with many function.i have leaned many method and things to use

6、 the object-oriented programming. and make me know how use the development environment eclipse to new program and the process to make the program.keyword: chat;java;application;swing component;socket目 录1 引言52 需求分析521 编写目的522 研究背景523 定义624 任务概述62.4.1 开发目标62.4.2 应用目标625 功能需求72.5.1 功能描述726 相关需求72.6.1 硬

7、件接口72.6.2 软件接口827 质量性能需求82.7.1 容错性需求82.7.2 稳定性需求82.7.3软件设计可靠性82.7.4安全性92.7.5 扩展性92.7.6 易用性93 概要设计93.1 编写目的93.2 定义93.3 总体设计103.4主要模块描述及流程图103.4.1模块描述103.4.2主流程图124 详细设计124.1 编写目的124.2 聊天室服务器端设置134.2.1 serversocketconnection接口的使用134.3 聊天室客户端设置144.3.1 socketconnection接口的使用145 编码打包156 系统测试156.1 测试举例156.

8、1.1 测试程序登陆界面156.1.2 测试程序主界面156.1.3 测试程序退出166.2 测试项目166.2.1 单元测试166.2.2 组合测试176.2.3 确认测试176.2.4 系统测试176.2.5 用户验收测试176.3 测试方法187 缺陷与完善187.1 软件存在的问题187.2 界面变得更加美观188 结 论19参 考 文 献20致 谢211 引言手机及其他无线设备在给人们带来便利的同时,自身的一些缺陷也影响了其发展:出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。sun 公司倡导的j2me 技术,在通信、娱乐等应

9、用上产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。随着j2me 技术的不断发展,它获得了手机制造商越来越广泛的支持。利用j2me 平台可以为手机提供很好的扩展选择。j2me 为java 技术的一部分,是专门为移动设备设计的java 平台,其应用程序可以运行在不同制造商的不同设备上,充分体现了sun 公司倡导的“一次编写,随处运行”的理念。它以其不断发展的技术优势获得了手机制造商越来越广泛的支持。j2me 平台被认为是当前移动开发领域中最杰出的手机程序开发平台之一,它已被开发者、设备制造商、网络通信公司和消费者广泛接受。针对现有手机短信业务存在的无

10、法提供多人之间交流的不足,本文利用j2me 提供的聊天通信功能,开发一套简单的手机网络聊天系统,实现多人聊天功能。2 需求分析21 编写目的明确用户对手机聊天室的功能需求和性能需求,并将这些需求用规范化的语言和规范化的结构完整、准确地表达清楚,以此统一软件开发者和用户对该软件的理解和认识,并使用户了解工作流程。需求分析是整个软件开发的依据,它对以后阶段的工作起指导作用。本章也是项目完成后系统验收的依据。22 研究背景随着手机的日益普及,短信业务的一些缺点也日益显现:(1)不能实现一条短信发送到多个不同号码(一些手机上的群发功能只是将短信反复发送,实际仍需反复计费)。(2)短信长度限制(一般为7

11、0 个汉字或140 个字母)限制了用户的使用。本文针对上述短信业务的不足,利用手机能够方便接入无线网络的优势,设计了一套手机聊天系统。这套系统通过gprs 网络发送信息(信息无长度限制),然后由服务器对消息进行转发(不再对发送方产生费用),实现了多人之间较为便捷的交流。23 定义需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。24 任务概述2.4.1 开发目标手机网络聊天室是一项应用广泛,并且实用性强的一个应用,虽然其功能简单,但是在其开发技术和过程中,能够充分学习和使用j2me的技术,要求实现一个手机收发消息的应用软件

12、,该软件采用j2me技术实现软件的流程控制、逻辑处理和记录存储等功能。基本功能包括:服务器端开发,客户端开发,尽量添加一些辅助性的功能以使功能更完美。使用 swing组件技术,实现网络的功能使用 socket/server socket 技术,实现数据的保存使用jdbc数据库连接和操作技术,并且在开发过程当中,能充分的使用和体会面向对象技术的原理和方法。 所以该项目可以使自己在java技术方面得到全面应用,使自己项目开发能力的一个很好体现。2.4.2 应用目标应用目标:实现一个手机收发消息的应用软件,该软件采用j2me技术实现软件的流程控制、逻辑处理和记录存储等功能。25 功能需求2.5.1

13、功能描述基于j2me 的手机客户端程序支持建立网络连接、传送请求和远程访问服务器,是直接与用户交互的平台。而服务器端用于接收客户端的请求,执行与数据库的通信,并完成后台逻辑的运算,最后将处理结果返回给手机客户端。本系统是java基于c/s模式的聊天室程序。聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。(1)服务器端的主要功能有:a.在特定端口上进行侦听,等待客户端连接。b.用户可以配置服务器的侦听端口,默认是8888。c.可以向已经连接的客户端发送体统消息。d.统计在线人数。e.停止服务时,断开所有的用户连接。(

14、2)客户端的主要功能有:a.连接到已经开启聊天服务的服务端。b.用户可以配置要连接的服务器ip地址和端口号。c.用户可以配置连接后的用户名。d.服务器开启时,用户可以随时登录与注消。c.用户可以想所有的人或者指定的个人发送消息。26 相关需求2.6.1 硬件接口不需要特定的硬件或硬件接口进行支撑。2.6.2 软件接口开发环境:windows(xp/vista/win7)+eclipse+eclipseme+wtk开发语言:javacldc: 1.0midp: 1.0应用程序类型:jar打包文件27 质量性能需求2.7.1 容错性需求当出现代码异常时,出现正确的提示,不会影响整个系统的运行。用户

15、之间信息传输不会因为数据封装问题出现丢失或乱码。因用户的误操作产生的异常应做出及时的处理或信息提示。2.7.2 稳定性需求软件应正常完成所有功能需求。服务器端应长时间运行无故障,故障修复时间一般控制在3小时内,除非出现恶性攻击、病毒破坏、系统资源不足、硬件故障、操作系统或数据库系统崩溃网络中断等情况,要求系统连续运行一周,不允许出现内存泄露。要求系统可以承受告警风暴和大数据量的冲击,不出现内存溢出等现象。2.7.3软件设计可靠性要确定合适的模块粒度,各模块之间要求松耦合,高内聚;从而使整个系统的可靠性和稳定性得到提高,并且便于系统维护,和新模块的添加。2.7.4安全性安全性是防止网络方面的攻击

16、。2.7.5 扩展性系统建成后,应在现行系统上不需要做大的改动或不影响整个系统结构,就可以增加功能模块,这就必须在系统设计时留有接口,使其具有可扩展性和维护性。2.7.6 易用性系统操作的界面必须简洁、操作方便易用、设计合理。3 概要设计3.1 编写目的从该阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描述出软件的概貌。本概要设计说明书的目的就是进一步细化软件阶段得出的软件的总体概貌,把它加工成灾程序细节上非常接近源程序的软件表示。该阶段目的在于明确网络聊天室系统的数据结构和软件总

17、体结构,各个软件模块的功能说明,数据结构的细节,系统运行配置与应用方式以及使用的关键技术。3.2 定义概要设计:是把需求分析得到的dfd转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。3.3 总体设计socket通信是网络通信的基本方式之一,通常由服务器端和客户端两部分组成。服务器端socket首先要处于等待连接的监听状态,实时监控指定端口,等待客户端socket连接服务器端的socket,连接时需要指定服务器的地址和连接端口。

18、当服务器端socket监听到或者接收到客户端socket的连接请求时,就对客户端socket的请求进行响应,建立一个新的线程,并把服务器端socket的描述发给客户端,这样就建立了一个socket连接。连接建立后,通过输入或者输出流发送或接收数据,而服务器端的socket继续处于监听状态,等待其他客户端的连接。在数据传输完毕后,客户端会断开连接,这样一个完整的数据传输过程就完成了。基本socket的数据传输的基本步骤:1. 服务器端打开并监听接口;2. 客户端进行连接;3. 连接确认并打开输入输出流;4. 传输数据;5. 关闭连接。midp中提供了socketconnection和server

19、socketconnection接口用来实现对socket通信的支持,其中socketconnection用于实现客户端的socket连接,serversocketconnection用于服务器端的socket连接。3.4主要模块描述及流程图3.4.1模块描述本手机聊天室系统分为服务端和聊天室客户端,服务端与客户端之间通过套接口socket(tcp)连接。在java中使用套接口相当简单,java api为处理套接口的通信提供了一个类.socket.,使得编写网络应用程序相对容易服务器采用多线程以满足多用户的请求,通过jdbc与后台数据库连接,并通过创建一个serversocket对象来监听来自

20、客户的连接请求,默认ip地址为:127.0.0.1默认端口为8888。(1)聊天室服务端模块图:聊天室服务端端口服务发送系统消息退出服务器消息显示停止服务启动服务端口服务:输入要侦听的端口,默认为8888;启动服务:启动服务器,并开始在设置的端口中侦听,客户端用户可以登录并开始聊天;停止服务:关闭服务器,侦听结束。客户端用户不能再聊天;发送系统消息:服务器端给所有人或者个别用户发送消息。消息显示:可以显示所有用户的聊天记录,和上线、下线信息。退出服务器:退出程序,并停止服务;(2)聊天室客户端模块图:聊天室客户端用户设置用户注销连接设置发送/接收聊天消息退出用户登录用户设置:用户可以设置自己的

21、用户名进行聊天;连接设置:用户可以设置自己的服务器的ip地址和端口号,默认的连接地址为:127.0.0.1:8888;用户登录:只能在聊天室服务端已开启的情况下,用户才能登录,用户登录之后才能开始聊天,登录后不能再修改用户设置和连接设置;用户注销:退出聊天,可以继续修改用户设置和连接设置;发送和接收聊天信息:用户可以给所有人或者个别用户发送信息,并能看到其他用户发送给自己或所有人的消息;退出:关闭所有聊天并退出客户端。3.4.2主流程图启动服务端口服务聊天室服务器 设置侦听端口 默认端口:8888聊天进入用户设置聊天室客户端 设置用户名 默认连接地址或用户名连接设置退出 设置ip地址和端口4

22、详细设计4.1 编写目的详细设计说明书是对系统架构进行详细直观描述,从而完成详细设计,是软件实现的基础。此文档主要是说明手机电话薄的功能范围,各个层次中的每个程序(每个模块或子程序)的设计考虑,为程序员编写程序提供依据,可以有针对性的进行系统开发、测试、验收等各方面的工作。4.2 聊天室服务器端设置4.2.1 serversocketconnection接口的使用serversocketconnection接口实现了对服务器端socket连接的支持,客户端的socket可以连接由serversocketconnection创建的服务器socket连接。使用connector类的open(str

23、ing url)方法返回一个serversocketconnection,其中参数与创建serversocketconnection时的参数基本一样,只是不需要指定主机地址。获取ip地址和端口号的方法:getlocaladdress()/返回本地的ip号;getlocalport9()/返回本地的端口号.服务器端程序处于等待状态,一直到接收到客户端的socket连接请求,然后创建socket连接并返回表示该连接的socketconnection实例。建立服务器端socket的代码基本结构如下:/获取服务器端的socketserversocketconnectionserver=( server

24、socketconnection)connector.open(“socket:/:1080”)/等待连接socketconnection sc=(socketconnection)server.acceptandopen();/设置服务器端socket属性server.setsocketoption(socketconnection.rcvbuf,128);server.setsocketoption(socketconnection.sndbuf,128);/得到socket对象的输入流,用于读取数据inputstream is=server.openinputstream();待添加的隐

25、藏文字内容2/得到socket对象的输出流,用于发送数据outputstream os=server.openoutputstream();4.3 聊天室客户端设置4.3.1 socketconnection接口的使用socketconnection接口实现了对客户端socket连接的支持,是使用connector类的open(string url)方法,但返回的是socketconnection,其中参数url的基本格式为:socket:/.其中,hostport是以host:port格式出现的服务器地址和链接端口号字符串,服务器的地址是主机名或者是具体的ip地址。获取ip地址和端口号的方法

26、:getaddress()/返回服务器端的ip地址getlocaladdress()/返回本机的ip地址getlocalport()/返回本地的端口号getport()/返回服务器的端口号通过setsocketoption()方法设置连接选项:public void setsocketoption(byte option,int value)建立客户端socket的代码基本结构如下:/获得客户端的socketsocketconnectionsc=( socketconnection)connector.open(“socket:/localhost:1080”);/设置客户端socket属性s

27、c.setsocketoption(socketconnection.linger,6);/得到socket对象的输入流,用于读取数据inputstream is=server.openinputstream();/得到socket对象的输出流,用于发送数据outputstream os=server.openoutputstream();5 编码打包先设置.jad文件夹里面的参数,required中的参数一般都设计为最低,以配合真机更好的运用,在midlets中添加上游戏的名字以及对应主函数名。然后在工程右键j2mecreate package就可以完成打包了,打完的包会存在工程目录下的de

28、ployed中。然后发到支持java的手机就可以了。6 系统测试为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程举例说明如下:6.1 测试举例6.1.1 测试程序登陆界面打开程序后,首先出现的是登录页面,在设置好网络ip和端口号之后,输入用户名和密码,如果连接服务器成功则提示用户输入的用户名和密码是否正确,否则提示连接不到服务器,并提示正确设置服务器ip和服务端口。其中端口号只能设置1024之后的端口号,前面的地址为服务器作为保留地址用,否则程序会提示错误。6.1.2 测试程序主界面进入主界面后,主页面会显示在线用户列表区、信息显示区、功能设置区、信息发送区、功

29、能按钮区。用户可以在用户列表中看到目前在线的其他用户,并在信息显示区内看到系统提示。用户可以在信息发送区内输入自己的发送内容,在主界面的显示区中可以不断的查看到其他用户发送过来的信息,并可以通过点击查看记录按钮查看保存的聊天记录。6.1.3 测试程序退出当单击退出按钮或窗体的关闭时,用户将发送退出信息,离开聊天室,其他用户可以得到系统提示用户下线并刷新用户列表。当服务器出线异常或关闭时,客户端将提示服务中断并退出系统。6.2 测试项目由于实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是软件开发过程中为保证

30、软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占软件开发总工作量的30%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测

31、试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。6.2.1 单元测试单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。6.2.2 组合测试组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是

32、指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。6.2.3 确认测试确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度

33、出发。6.2.4 系统测试系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。6.2.5 用户验收测试在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合

34、理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。6.3 测试方法一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试。因为时间和项目的关系,没有完全按照上述的测试方法进行系统的测试,但在在开发的过程当中,保证部分合理的测试,并正确运行验证,证明

35、本系统具有相当程序的稳定性。7 缺陷与完善7.1 软件存在的问题软件已经编写好了,但是还有许多可以改进的地方;同时还存在着一些小问题。还有一些功能上的缺陷,这里我列举一下,并提出一些解决的办法,希望以后可以改进。(1)操作的方便性、登陆时添加一个主界面;(2)在功能方面可以进一步增加,如实现用户间的文件传输,并可以进行视屏,共享音乐等高级功能。(3)执行效率方面可以有待提高,优化代码结构,减少系统内存泄露,提高运行稳定性等7.2 界面变得更加美观由于一直专注于功能的实现,从而忽略了界面的设计,本软件今后可以添加背景,并可以使窗体风格更合理和更美观,并且要使用户有更多的自定义功能,设置自己的喜好

36、和风格等等。8 结 论随着移动通信技术的发展和移动终端设备的广泛应用,基于j2me 的手机程序正成为移动增值服务的热点,支持移动商务和个人移动通信的应用程序正得到快速的发展和广泛应用。本文采用j2me/servlet 技术构建了一个手机聊天系统模型,并对其进行了分析、模拟实验,其结果表明这一构想是一个具有较好创意的移动应用。首先,我选择本课题缘由是对项目有较深的理解和对聊天通讯软件有丰富的使用和接触经验,可以设计和开发本项目时更有效率。并且对网络开发有浓厚的兴趣,对具有网络功能的项目更有成就感。学习期间,通过学校开设的基础课程,扎实系统的学习了软件的基础知识,并对面向对象编程语言有了进一步的理

37、解,对软件专业逐步的建立起自己的知识体系框架。通过这次的毕业设计,使自己在java2编程语言的使用方面得到一个全面锻炼自己的机会,在个模块的界面开发方面,充分的学习和利用了java swing界面开发技术,使自己在界面应用和布局方面得到更多的实践,应用socket技术实现网络连接功能,对网络的实现和通信方面有了进一步的理解,并通过多线程方面的应用,使客户端和服务端可以实现多任务功能,在整个开发过程当中应用软件工程的开发步骤,使自己专业理论知识的到进一步的巩固,项目开发经验有不少的收获。通过完成这次毕业设计项目,使自己在项目实际开发方面有了进一步的提高,并使自己感觉到成功的喜悦,并对自己在专业的未来发展更充满信心,对自己在今后的工作中更好的帮助。参 考 文 献1 美rogers cadenhead. java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,20072美bruce eckel. thinking in java.英文第4版.北京:机械工业出版社,20073陈轶.姚晓昆编著.j

温馨提示

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

评论

0/150

提交评论