ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:35.88KB ,
资源ID:6687190      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6687190.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(QQ聊天工具的设计与实现论文java.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

QQ聊天工具的设计与实现论文java.docx

1、QQ聊天工具的设计与实现论文java中北大学毕业设计(论文)题 目: QQ聊天工具的设计与实现 指导教师: 姓 名: 学 号: 专 业 班 级 摘 要Java技术的合理应用能实现跨平台的网络通讯。 本人按照软件工程的原则,运用TCP/UDP通信协议,以及套接字、数据库、线程等技术,依靠强大的跨平台开发软件JBuilder9.0,以当今流行的QICQ为模板,仿照QICQ设计出简单而实用的、具有基本聊天功能的、基于JAVA的聊天工具。 本论文主要讲述了此设计所采用的开发工具、总体规划与设计方案,以及详细设计和主要功能模块的工作原理及其图解。在文中提供了部分功能模块实现的源代码。最后,本文还粗略地探

2、讨了软件的测试用例设计和完成此次设计的心得体会。关键词:JAVA; 数据库; 线程; JBuilder9.0; QICQABSTRACTThe reasonable application of Java technology can achieve network communication which can be run at any environment.According to the principle of the Software Engineering,using TCP/UDP protocol, socket,database and thread etc,depend

3、ing on the powerful tool JBuilder9.0,refering to the template of QICQ,imitating QICQ,I design a simple、practicable and having chat functional talk tool which is based on JAVA.The paper not only mainly described development tool、collectivity layout and designing scheme about this designing,but also d

4、escribed detailing 、working law about main functions module and its diagrammatizing. In the paper we provide some source code with achieving part of function modules. At last we can learn experience in this designing and roughly discuss software test example designing.KEYWORDS:JAVA;database;thread;J

5、Builder9.0;QICQ目 录摘要 IAbstractII1 序言 12开发工具 12.1 JBuilder 9.0 12.2 SQL SERVER 2000 22.1.1 SQL简介 22.1.3 SQL数据库体系结构 22.1.4 SQL的组成 33 总体规划与设计方案 33.1 需求分析 33.1.1 基本功能需求 33.1.2 环境需求 33.1.3 性能需求 33.1.4 界面需求 43.1.5 用户需求 43.2 方案的选择以及模块设计 43.2.1 通讯协议的选择 43.2.2 数据库系统的选择 43.2.3 线程技术的应用 63.2.4套接字SOCKET的应用 73.3

6、整体方案的制定 84 详细设计 94.1 数据表设计 94.2 系统的类设计 104.2.1 类规范设计 104.2.2 类的UML图 134.3 应用功能的设计 134.4主要界面设计 165 软件功能测试 176 总结 186.1 设计体会 186.2 实现中所遇到的问题 186.3 今后研究的方向 18参考文献 19附录 201 序言21世纪是信息社会的时代,科学和技术和社会的发展正在迎接这个时代的到来,当前信息网络得到飞速的发展,尤其是计算机和通信技术的发展和结合,改变了人民的生活、学习和工作方式,减轻工作的负担,提高生活水平,推动社会的进步。当前电子商务、ERP、WAP等技术正深深的

7、影响着我们。尤其值得一提的是,网络聊天和网络游戏逐步成为大部分年轻人休闲和娱乐的方式,其深入人心的程度不亚于电视媒体的普及程度,甚至有赶超的趋势。做为一个学习计算机专业的人来说,对网络的痴迷以及对网络的未知的领域的探索成为了我一直向往的事情,不断学习和钻研。当前,网民中无人不知QICQ这个即时的聊天工具,其简单,易操作性风靡全国。QICQ其实是获得成功的ICQ的本土化产品,ICQ是英文“I seek you “的简称,中文意思是我找你的意思。ICQ的最大功能是信息交流,只要记得对方号码,上网时间可以呼他,无论他在哪里,只要他上网打开ICQ,人门可以随时交流。ICQ源于以色列物拉维夫的Mirab

8、ils公司。该公司成立于1996年7月,也就是在这个时候,互联网上最出名,下载使用人数最多的免费软件ICQ诞生了。可能是其不断增加的用户和广阔的前景以及广泛的应用 前景和巨大的市场潜力,Mirabils的ICQ最终被美国在线AOL公司收购。由于ICQ的成功,推动了ICQ的本土化,就中文ICQ而言,著名的深圳腾迅公司推出的QICQ(现在由于版权的问题,已经改名为Tencent QQ),还有新浪公司的UC等。这些软件都很好,而且简单易用,成为中国网名最喜欢的通讯软件。由于QICQ极其出色的通信性能以及普及程度,让我萌发了设计自己的ICQ的念头,模仿ICQ的使用过程,基本实现其聊天功能。2开发工具2

9、.1 JBuilder 9.0Jbuilder9.0是目前开发JAVA程序的最佳选择,它不但有图形化的界面,而且有完整的编译工具,可以明显的缩短程序的开发时间。Borland JBuilder 是业界领先的Java 可视化开发环境,可用于构建基于Java 2 平台的应用程序、Applets、JSP/Serverlets、JavaBeansTM、Enterprise JavaBeans,以及分布式J2EE 应用。JBuilder 6 最新特性包括:EJBTM 2.0 可视化设计器快速开发J2EETM 应用程序;将应用分发至以下应用服务器:Borland Application Server、BE

10、A WebLogic、IBM WebSphere 和iPlanetTM Application Server;简化数据库应用开发与分发的各种向导、工具和组件;采用JSPTM 和Serlets 进行Web 应用程序的开发和分发;UML 代码可视化功能;重构和单元测试;集成业界领先的版本控制系统;XML 工具可跨设备公布和集成商务数据2.2 SQL SERVER 20002.1.1 SQL简介 SQL全称是“结构化查询语言(Structured Query Language)”。最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQ

11、L语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,SQL语言已被确定为关系数据库系统的国际标准,被绝大多数商品化关系数据库系统采用,如Oracle 、Sybase、DB2、Informix、SQL Server这些数据库管理系统都支持SQL语言作为查询语言。 结构化查询语言SQL是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的功能极强的关系数据库标准语言。在SQL语言中不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。 2.1.3 SQL数据库体系结构 SQL数据库的体系结构基

12、本上也是三级模式。SQL术语与传统的关系模型术语不同。在SQL中,外模式对应于视图,模式对应于基本表,元组称为“行”,属性称为“列”。内模式对应于存储文件。 SQL数据库的体系结构特征: 一个SQL模式(Schema)是表和约束的集合。 一个表(Table)是行(Row)的集合,每行是列(Column)的序列,每列对应一个数据项。 个表可以是一个基本表,也可以是一个视图,基本表是实际存储在数据库中的表。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图的数据,视图是一个虚表。 一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个

13、或多个基本表,一个表可以带若干索引,索引也存放在存储文件中。每个存储文件与外部存储器上一个物理文件对应。存储文件的逻辑结构组成了关系数据库的内模式。 用户可以用SQL语句对视图和基本表进行查询等操作。在用户看来,视图和基本表是一样的,都是关系(即表格)。 SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用;SQL语言也能作为独立的用户接口,供交互环境下的终端用户使用。2.1.4 SQL的组成 SQL主要分成四个部分: 数据定义:这一部分也称为“DDL”,用于定义SQL模式、基本表、视图和索引。 数据操纵:这一部分也称为“DML”,数据操纵分成数据查询和数据更新两

14、类,其中数据更新又分成插入、删除和修改三种操作。 数据控制:这一部分也称为“DCL”。数据控制包括对基本表和视图的授权,完整性规则的描述,事务控制语句等。3 总体规划与设计方案3.1 需求分析3.1.1 基本功能需求新用户注册:一般用户都想知道其他用户的一些基本资料,比如姓名、年龄、地址、IP地址、电子邮箱等一些信息。查找以及添加好友:用户为了实现和其他人聊天,必须查找哪些人在线或者查找有哪些人使用该聊天工具.通过查找到的用户号码来实现添加其为好友。文字聊天:本聊天工具其实现的目的就是为了实现和用户间的沟通和交流,所以说文字聊天是必须具备的一项基本功能。用户个性化资料:用户申请的号码应该可以实

15、现用户根据自己的喜好选择自己喜欢的图象、自我介绍。查看聊天记录:用户在聊天的时候,难免会遇到把聊天窗口关掉,这样用户间的聊天信息也就看不到了,这样有可能导致用户不记得和其他用户聊的内容,导致这种结果对用户的聊天带来很大的不便,所以应该实现聊天信息的记录保存和查找。用户管理:用户有时候要修改和查看自己的用户资料,这样本系统应该实现用户资料的查询和修改这基本功能。3.1.2 环境需求支持WIN95/98/NT/2000/XP操作系统C200,32M内存以上可以正常运行其他无特殊要求3.1.3 性能需求尽量减少服务器的开销及数据传送负担,提高数据利用效率和数据传送效率,避免无效数据的传输。3.1.4

16、 界面需求界面友好,聊天对话框线程支持,实现无限制数量用户聊天。服务器端无特殊要求3.1.5 用户需求现在社会是信息化的社会,什么都追求着快、新、好。在这种快节奏的生活方式中,人们之间的通讯联系就显得非常的重要了。商业之间的合作,人们之间的友谊交往,甚至热门谈到的网上恋爱等等都需要通讯联系。而过去的鸿雁传书已经是满足不了现代人的欲望了。既然这网络这么的流行,过去的联系方式又这么的落后,因此人们的目光就转向了网络通讯。聊天工具就是一种网上很普遍但是又很重要的通讯方式。3.2 方案的选择以及模块设计3.2.1 通讯协议的选择TCP与UDP有各自的优点。TCP是面向连接的协议,能满足大范围的应用程序

17、的要求,能调节网际的动态环境,建立和管理本地通信进程之间的对话,维护TCP在流出和流入传输层TCP的模块的每个用户的状态和信息,拥有窗口流量控制机制和重传机制,实现非常可靠的数据传输,它的安全性和可靠性比UDP要高出很多。UDP是面向非连接的传输协议,UDP的应用程序在高可靠性、低延迟的网络中运行很好,在通讯子网QoS相对低下的情况下,可能无法正常运行,因为在于数据包的频繁丢失。虽然UDP如此不可靠,但是由于它传输的高效率,仍然被广泛采用。在某些场合的一来一往只有两次数据报的交换中,UDP比TCP更加有效,因为TCP的建立连接和撤消连接的开销往往要大得多。QICQ在客户端与服务器端的协议采用了

18、UDP,虽然在效率上占了优势,因为依照目前网络通讯的发展,通信子网在其性能上的提高,使得UDP可以发挥其强大的优势,但是安全性却实在令人担忧。综合考虑的结果,在本聊天工具的客户端和服务器端的通讯采用TCP协议。而客户与客户端的通讯采用UDP协议。3.2.2 数据库系统的选择在使用数据库时,我已经学过ACCESS和SQL Server两种数据库,综合考虑,我选择SQL Server。因为:Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造

19、成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。 SQL Server数据库的特征及其与Access数据库的区别:表3.1 SQL Server数据库的特征与Access数据库的区别内容Access特征MS SQL特征版本桌面版网络版

20、 可支持跨界的公司异地使用数据库的要求节点一人工作,要锁定,其他人无法使用节点多,支持多重路由器管理权限否管理权限划分细致,对内安全性高防黑客功能否数据库划分细致,对外防黑客能力高并发处理能力100人或稍多同时支持万人在线提交,在其他硬件例如网速等条件匹配的情况下可完全实现导出XML格式可以,需要单作程序可导出成为XML格式,与Oracle数据库通用,减少开发成本数据处理能力一般快是否被优化过否是3.2.3 线程技术的应用 在单线程系统中,如果系统进行如网络数据发送等在后台进行工作的应用程序时,程序界面就会处于死锁状态,无法接受用户的输入。但在WIN95/NT中实行的是抢占式多任务,每一个进程

21、可以同时执行多个任务,对于本系统,既要进行网络耗时工作,又要保持对用户的响应,使用多线程是最佳选择。以下是关于线程的一些概念。一般来说,把正在计算机中执行的程序叫做进程(Process) ,而不将其称为程序(Program)。所谓线程(Thread),是进程中某个单一顺序的控制流。现代的操作系统,如Mac,Windows NT,Windows 95等,大多采用多线程的概念,把线程视为基本执行单位。线程也是Java中的相当重要的组成部分之一。 甚至最简单的Applet也是由多个线程来完成的。在Java中,任何一个Applet的paint()和update()方法都是由AWT(Abstract W

22、indow Toolkit)绘图与事件处理线程调用的,而Applet 主要的里程碑方法init(),start(),stop()和destory() 是由执行该Applet的应用调用的。 单线程的概念没有什么新颖的地方,我感兴趣的是在一个程序中同时使用多个线程来完成不同的任务。某些地方用轻量进程(Lightweight Process)来代替线程,线程与真正进程的相似性在于它们都是单一顺序控制流。然而线程被认为轻量是由于它运行于整个程序的上下文内,能使用整个程序共有的资源和程序环境。 作为单一顺序控制流,在运行的程序内线程必须拥有一些资源作为必要的开销。例如,必须有执行堆栈和程序计数器。在线程

23、内执行的代码只在它的上下文中起作用,因此某些地方用执行上下文来代替线程。 (1)线程体 所有的操作都发生在线程体中,在Java中线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。 (2)线程状态 新线程态(New Thread) 产生一个Thread对象就生成一个新线程。当线程处于新线程状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。 可运行态(Runnable) start()

24、方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻只能有一个处于可运行态的线程占用处理 机。Java通过调度来实现多线程对处理机的共享。 非运行态(Not Runnable) 当以下事件发生时,线程进入非运行态。 suspend()方法被调用; sleep()方法被调用; 线程使用wait()来等待条件变量; 线程处于I/O等待。 死亡态(Dead) 当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 。通常Applet使用它的

25、stop()方法来终止它产生的所有线程。 (3)线程优先级 虽然我们说线程是并发运行的。然而事实常常并非如此。正如前面谈到的,当系统中只有一个CPU时,以某种顺序在单CPU情况下执行多线程被称为调度(scheduling)。Java采用的是一种简单、固定的调度法,即固定优先级调度。这种算法是根据处于可运行态线程的相对优先级来实行调度。当线程产生时,它继承原线程的优先级。在需要时可对优先级进行修改。在任何时刻,如果有多条线程等待运行,系统选择优先级最高的可运行线程运行。只有当它停止、自动放弃、或由于某种原因成为非运行态低优先级的线程才能运行。如果两个线程具有相同的优先级,它们将被交替地运行。 J

26、ava实时系统的线程调度算法还是强制性的,在任何时刻,如果一个比其他线程优先级都高的线程的状态变为可运行态,实时系统将选择该线程来运行。 (4)幽灵线程 任何一个Java线程都能成为幽灵线程。它是作为运行于同一个进程内的对象和线程的服务提供者。例如,HotJava浏览器有一个称为 后台图片阅读器的幽灵线程,它为需要图片的对象和线程从文件系统或网络读入图片。 幽灵线程是应用中典型的独立线程。它为同一应用中的其他对象和线程提供服务。幽灵线程的run()方法一般都是无限循环,等待服务请求。 (5)线程组 每个Java线程都是某个线程组的成员。线程组提供一种机制,使得多个线程集于一个对象内,能对它们实

27、行整体操作。譬如,你能用一个方法调用来启动或挂起组内的所有线程。Java线程组由ThreadGroup类实现。当线程产生时,可以指定线程组或由实时系统将其放入某个缺省的线程组内。线程只能属于一个线程组,并且当线程产生后不能改变它所属的线程组。 3.2.4套接字SOCKET的应用3.2.4.1 套接字SOCKET的一些基本概念所谓socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。 以J2SDK-1.5为例,Socket和ServerSocket类库位于包中。ServerSocket用于服务器端,Socket是建立网络连

28、接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 重要的Socket API: .Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。 Accept方法用于产生阻塞,直到接受到一个连接,并且返回一个客户端的Socket对象实例。阻塞是一个术语,它使程序运行暂时

29、停留在这个地方,直到一个会话产生,然后程序继续;通常阻塞是由循环产生的。 5兴uilder_getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例。 getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。 注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。3.2.4.2 .利用socket 开发一个Server-Client模型的程序的开发原理:服务器,使用ServerSocket监

30、听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。3.3 整体方案的制定服务器端后台数据库线程处理线程处理TCP套接字监听端口TCP套接字 客户端2UDP套接字UDP套接字客户端1TCP套接字TCP套接字图3.2 聊天工具的系统运行图4 详细设计4.1 数据表设计本聊天工具建立的数据库中各个表的设计结果如下面表格所示。每个表格表示数据库中的一个表。(1) 用户的基本信息表(表名personalinfo)字段名称数据类型说明qnum数字用户号码petname文本用户呢称password文本用户密码name文本用户姓名sex文本用户性别email文本用户EMAILstatus是否用户是否在线picindex数字用户图象号ip文本用户IP地址其中qnum字段为自动增加。(其他还可以添

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1