简单聊天系统的设计与实现_第1页
简单聊天系统的设计与实现_第2页
简单聊天系统的设计与实现_第3页
简单聊天系统的设计与实现_第4页
简单聊天系统的设计与实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、 JISHOUUNIVERSITY专业课课程论文题 目:简单聊天系统的设计与实现作 者:学 号:所属学院:信息科学与工程学院专业班级:总 评 分:完成时间:吉首大学信息科学与工程学院 简单聊天系统的设计与实现(吉首大学信息科学与工程学院,湖南 吉首 416000)摘 要网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的

2、开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面 向对象的思想和设计方法解决实际问题的能力。 本程序正是用 java 语言实现了简单聊天功能。它是图形界面,线程,流与 文件系统等技术的综合应用。 其界面主要采用了 java.awt 包, java.swing 包等。关键词:网络聊天室;java;面向对象;通信机制;图形界面目 录第一章 引言1第二章 关键技术2 2.1开发技术2 什么是Java2 2.1.2主要特性2 2.1.3 Java中的布局3 2.2 开发工具32.2.1 Eclipse.32.2.2 SQL S

3、ever数据库.3第三章 需求分析4 3.1可行性分析4 3.1.1 经济可行性.4 3.1.2 操作可行性.4 3.1.3 技术可行性.4 3.2功能分析4 3.2.1 注册.4 3.2.2 登录.5 3.2.3 私聊.5第四章 概要设计6 4.1系统总体结构6 4.2数据库设计6第五章 详细设计8 5.1登录模块设计8 5.2注册模块设计9 5.3消息格式化设计.10 5.4 界面设计.10 5.4.1 登录界面.10 5.4.2 注册界面.11 5.4.3 聊天界面.11结束语12参考文献. .13 第一章引言当今主流的聊天工具有QQ,MSN,网易泡泡等,国内最热门的聊天工具当属腾讯QQ

4、,是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。你可以通过QQ和你的亲朋好友进行交流,即时收发消息,文件传输,语音视频,发送邮件等功能,QQ不仅仅在电脑在应用,还能通过移动电话登录手机腾讯网址或者下载手机可用的手机客户端进行QQ的登录使用。QQ支持显示好友的在线信息,即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/98/NT/2000/XP/Win7操作系统下运行,是十分灵活的网络通信工具。虽然QQ软件是免费的,而且功能也是越来越强大。但是唯一的不足的地方就是都需要在电脑联网的情况下才能使用,脱离了Internet根本就是一个只能看不能用的软件,为了

5、能在脱离了Internet的情况下使用的局域网聊天工具,那就必须要有服务器端,而本系统就是包括服务器端和客户端,可以在局域网聊天的一个软件。第二章关键技术2.1 开发技术什么是JavaJava是一种可以跨平台应用的面向对象的程序设计语言,他是由Sun公司在1995年推出的程序设计语音。Java具有很高的通用性,安全性,跨平台等特点。 Java与一般的编译执行计算机语音和解释执行计算机语音不同。他它首先是将源代码编译成二进制的字节码,然后在各种不同平台的虚拟机上来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台的特性,这也是Java语言最大的特点。Sun公司在推出Java后就将它作为一种

6、开放式的技术,从而吸引了很多编程开发者。而Sun公司的口号之一就是“Java语言是靠群体的力量而非公司的力量”,并且获得了广大软件开发商的认可。2.1.2主要特性Java语言的主要特性有: 1)Java语言是简单的。Java语言的语法和C语言,C+语言很相近,从而使得大多数的程序员很容易学习。2)Java语言是一个面向对象的。比C+更纯粹的面向对象程序设计语言。3)Java语言是分布式的。Java的网络能力强大且易于使用。4)Java语言是健壮的。Java的强类型机制,异常处理,废料的自动收集等是Java程序健壮性的重要保证。5)Java语言是安全的。Java通常应用在网络环境中,因此Java

7、提供了一个安全机制来防止恶意代码的攻击。6)Java语言是体系结构中立的。Java程序在Java平台上被编译为体系结构中立的字节码格式, 然后可以在实现这个Java平台的任何系统中运行。7)Java语言是可移植的。这种可移植行又来源于体系结构的中立性。8)Java语言是解释型的。Java程序在Java平台上被编辑为字节码格式,然后才可以在这个Java平台的任何系统中运行。9)Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。10)Java语言是多线程的。在Java语言中,线程是特殊的对象,它必须由Thread类或其子类来创建。通常有两种方法创建:第一,从Thread类

8、派生出子类并重写run方法,使用该子类创建的对象即为线程。第二,实现Runnable接口。2.1.3 Java中的布局边框布局BorderLayout、流布局FlowLayout、网格布局GridLayout、分组布局 GroupLayout、Box类布局。2.2 开发工具2.2.1 EclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将Eclipse当作J

9、ava集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C+和COBOL等

10、编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBM RationalSoftwareArchitect,它构成了IBM Java开发工具系列的基础。2.2.2 SQL Server数据库SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Asht

11、on-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2012年3月份推出的SQL SERVER 2012。特点:1)真正的客户机/服务器体系结构。2)图形化用户界面,使系统管理和数据库管理更加直观、简单。3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。4)SQL Server与Windo

12、ws NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。 5)具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。6)对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。7)SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。第三章需求分析3.1可行性分析3.1.1 经济可行性 本系统需要一个SQL Server数据库服务器,由于使用人数比较少,安装一个

13、免费的SQL Server数据库完全可以应付需要,所以成本就不用考虑了。3.1.2 操作可行性 只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。3.1.3 技术可行性 本系统采用Java语言,是基于CS架构的。开发这个系统需要开发者对socket 编程和 Java Swing这两方面的技术比较熟。 由于本人长期从事于java语言编程,所以技术方面是可行的。3.2功能分析3.2.1 注册 服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过JDBC与后台数据库连接,然后向数据库添加记录,如果成功,便

14、向客户返回其号码。客户收到服务器返回的信息后,便打开主登陆窗口。3.2.2 登录 在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JDBC读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,得到好友的号码后,再在icq表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量用以存储好友的呢称,号码。3.2.3 私聊 私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。例如服务器接收到一个

15、A发给B的消息先判断B是否已经在线,如果在线就将信息发送过去。B接收到A发来的信息,如果是未建立对话窗口,就询问是否建立对话,否则就丢弃信息。第四章概要设计4.1系统总体结构 4.2数据库设计 1.用户表(UserInfo): 属性:用户编号(uid),用户名(uname),密码(upass),登录ip 和端口号(ipport),状态(status)。 关系:一个用户可以有多个好友。 一个用户可以有多条消息。1用户编号uid整数2用户名uname字符型3密码upass字符型4登录ip和端口号ipport字符型5状态status布尔型 2.好友表(Friends): 属性:好友编号(fid),用

16、户好友编号(fuid)。1好友编号fid整数2用户好友编号(外键,引用UserInfo中的uid)fuid整数 3.消息表(Messages): 属性:消息编号(mid),接受消息的用户编号(ruid),发送消息 的用户编号(suid),发送消息的时间(sendTime),消息 类型(mtype)。1消息编号mid整数2接受用户的编号(外键,引用UserInfo中的uid)ruid整数3发送用户的编号(外键,引用UserInfo中的uid)suid整数4发送时间sendTime日期类型5消息类型mtype布尔型第五章详细设计5.1登录模块设计 该模块的界面是仿照腾讯QQ的界面,界面与腾讯QQ相

17、比虽然不是那么美观,但是基本的功能也与其差不多了,在这个界面上用户的主要操作有用户输入用户名,密码,如果还没有注册用户名的网友可以通过登录界面的用户注册,从而使用该程序。在登录该程序之前需要开启服务器,当用户把用户名和密码输入好后点击登录按钮后,就开始与服务器建立连接,服务器收到后开始通过JDBC的方式读取数据库的内容,然后与用户输入的用户名和密码进行比较,如果用户名不存在或者用户的密码错误则登录失败,并且提示失败的原因,如果有时候没有把服务器开启的话,则在登录失败后,会提示连接服务器超时。登录成功后直接跳到程序的主窗口,开始向服务器请求读取好友分组和好友名单。5.2注册模块设计 该模块是对于

18、那些尚未注册的用户进行注册使用,在这个界面注册的用户需要填写的有,昵称,密码,确认密码,密保问题,问题答案,当这些内容填写完成以后,就可以点击提交注册按钮。点击这个按钮后就会创建一个与服务器端的连接。连接成功就会将填写的信息发送到服务器端。如果服务器写入数据库成功,那么你便注册成功,成功后会返回一个数字帐号给用户,这个时候你可以用你刚才注册成功的数字帐号和密码进行登录。5.3消息格式化设计 5.4界面设计5.4.1 登录界面 运行程序后,弹出登录界面,等待用户操作。 5.4.2 注册界面在登录界面,点击“注册”,弹出注册界面,按要求输入信息。 5.4.3 聊天界面 结束语课程设计的第一天我不是

19、拿到任务书就开始敲代码,一整天我都是在看书上网络编程的知识。然后就是在网上找资料,找插件。本来最先开始我使用的是TCP协议进行通信,但是后来感觉聊天系统不需要对数据的传输有绝对的正确,况且是在通信状况非常好的局域网,所以我把协议改成了UDP。设计的聊天窗口需要输入对方IP,如果对方也启动了程序就可以相互发送消息。如果不输入IP则默认的是向本机发送。数据库的连接也遇上了点小麻烦,查询数据库还比较顺利的,可是当要修改数据库时,试了多次都没添加进去。后来发现是因为我写的数据库连接的类查询和插入必须用两个不同的实例。不然数据集会在查询以后有所改变。界面的设计是用的我在网上找的jigloo插件。因为这个插件功能比较完善,而且添加的也很方便,直接解压到ECLIPSE文件夹就行了。起初我以为有了这个插件就可以像VB那样拖一拖就能完成。可是后来发现它与VB的界面设计完全不一样。最终还是要自己动手修改代码。所以我采取的措施是先把组件都设置好,然后自己添加事件、数据库的连接等等。好在组件设置好以后的JFRAME类的代码写的非常清楚。一个MAIN函数新建窗体实例,然后构造函数新建窗体,运用initGUI()方法将组件都赋值,设置大小等。清楚简洁,所

温馨提示

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

评论

0/150

提交评论