当前位置:文档之家› 《Java聊天程序的设计与实现》

《Java聊天程序的设计与实现》

本科生毕业论文(设计)系(院)计算机科学学院专业计算机科学与技术论文题目Java聊天程序的设计与实现学生姓名车永华指导教师苏炳均(副教授)(姓名及职称)班级08级ACCP2班学号08339311完成日期:二0一一年十一月Java聊天程序的设计与实现车永华计算机科学学院计算机科学与技术08339311[摘要]:随着信息时代的来临,人们之间的交流也越来越趋向于网络。

因此各种聊天工具的使用也是非常频繁,如MSN、QQ之类的聊天工具也被广泛使用。

本文在研究局域网通信机制的原理和计算机网络编程基本原理的基础上,使用Java作为开发工具,开发出了一款在局域网中进行通信交流的软件。

[关键字]:Java 服务器端客户端数据传输引言当今主流的聊天工具有QQ,MSN,网易泡泡等,国内最热门的聊天工具当属腾讯QQ,是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。

你可以通过QQ和你的亲朋好友进行交流,即时收发消息,文件传输,语音视频,发送邮件等功能,QQ不仅仅在电脑在应用,还能通过移动电话登录手机腾讯网址或者下载手机可用的手机客户端进行QQ的登录使用。

QQ支持显示好友的在线信息,即时传送信息、即时交谈、即时发送文件和网址。

QQ可以在Win95/98/NT/2000/XP/Win7操作系统下运行,是十分灵活的网络通信工具。

虽然QQ软件是免费的,而且功能也是越来越强大。

但是唯一的不足的地方就是都需要在电脑联网的情况下才能使用,脱离了Internet根本就是一个只能看不能用的软件,为了能在脱离了Internet的情况下使用的局域网聊天工具,那就必须要有服务器端,而本系统就是包括服务器端和客户端,可以在局域网聊天的一个软件。

1 开发工具概述1.1什么是JavaJava是一种可以跨平台应用的面向对象的程序设计语言,他是由Sun公司在1995年推出的程序设计语音。

Java具有很高的通用性,安全性,跨平台等特点。

Java 与一般的编译执行计算机语音和解释执行计算机语音不同。

他它首先是将源代码编译成二进制的字节码,然后在各种不同平台的虚拟机上来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台的特性,这也是Java语言最大的特点。

Sun公司在推出Java后就将它作为一种开放式的技术,从而吸引了很多编程开发者。

而Sun公司的口号之一就是“Java语言是靠群体的力量而非公司的力量”,并且获得了广大软件开发商的认可。

1.2Java语言的主要特性Java语言的主要特性有:1)Java语言是简单的。

Java语言的语法和C语言,C++语言很相近,从而使得大多数的程序员很容易学习。

2)Java语言是一个面向对象的。

比C++更纯粹的面向对象程序设计语言。

3)Java语言是分布式的。

Java的网络能力强大且易于使用。

4)Java语言是健壮的。

Java的强类型机制,异常处理,废料的自动收集等是Java程序健壮性的重要保证。

5)Java语言是安全的。

Java通常应用在网络环境中,因此Java提供了一个安全机制来防止恶意代码的攻击。

6)Java语言是体系结构中立的。

Java程序在Java平台上被编译为体系结构中立的字节码格式, 然后可以在实现这个Java平台的任何系统中运行。

7)Java语言是可移植的。

这种可移植行又来源于体系结构的中立性。

8)Java语言是解释型的。

Java程序在Java平台上被编辑为字节码格式,然后才可以在这个Java平台的任何系统中运行。

9)Java是高性能的。

与那些解释型的高级脚本语言相比,Java的确是高性能的。

10)Java语言是多线程的。

在Java语言中,线程是特殊的对象,它必须由Thread类或其子类来创建。

通常有两种方法创建:第一,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。

第二,实现Runnable接口。

11)Java语言是动态的。

Java语言的设计目标之一是适应与动态变化的环境。

1.3 Java中的布局边框布局BorderLayout、流布局FlowLayout、网格布局GridLayout、分组布局GroupLayout、Box类布局。

2.总体设计2.1功能模块图该系统主要可以分为由2个比较主要的部分组成:1)文件传输系统;2)QQ聊天系统。

文件传输系统的功能主要是接收你的QQ好友给你传送来的各种文件,然后保存在自己电脑中。

聊天系统的功能:1)新用户的注册;2)用户登录;3)修改密码;4)找回密码;5)查找添加好友;6)删除好友;7)好友分组;8)发送聊天内容;9)发送聊天表情;10)聊天字体的切换;11)屏幕震动。

图1 系统功能模块图2.2数据库设计2.2.1E-R图用户表(UserInfo):属性:用户编号(uid),用户名(uname),密码(upass),登录ip和端口号(ipport),状态(status),密保问题(question),密保答案(answer)。

关系:一个用户可以有多个好友分组。

一个用户可以有多条消息。

好友分组表(Group)属性:组编号(gid),用户编号(guid),组名(gname),好友类型(gtype)。

关系:一条记录只对应一个用户,但是可以拥有多个组员。

好友表(Friends)属性:好友编号(fid),好友分组编号(fgid),用户好友编号(fuid),图 2 E-R图2.2.2表结构设计表1 用户表(UserInfo)表2 好友分组表(Group)表3 好友表(Friends)表4 消息表(Messages)以上各表的创建代码如下:1)创建用户表CREATE TABLE UserInfo(uid INT IDENTITY(1000,1) PRIMARY KEY, --用户编号,自动增长 uname V ARCHAR(50) NOT NULL, --用户名upass V ARCHAR(50) NOT NULL, --密码ipport V ARCHAR(50), --登录ip和端口号status BIT DEFAULT(0), --是否在线,0,默认不在线question V ARCHAR(50) NOT NULL, --密保问题,用于找回密码answer V ARCHAR(50) NOT NULL, --密保问题答案face V ARCHAR(50) NOT NULL, --头像)2)创建好友分组表CREATE TABLE [Group](gid INT IDENTITY(1,1), --好友分组编号,自动增长guid INT NOT NULL, --用户编号,外键,引用UserInfo表的uidgname V ARCHAR(50) NOT NULL, --组名gtype BIT DEFAULT(1), --好友类型,1-好友,0-黑名单PRIMARY KEY(guid,gname))3)创建好友表CREATE TABLE Friends(fid INT IDENTITY(1,1), --编号,自动增长fgid INT NOT NULL, --好友分组编号,外键,引用Group表的gidfuid INT NOT NULL, --用户好友编号,外键,引用UserInfo表的uidcontext V ARCHAR(50), --好友备注PRIMARY KEY(fgid,fuid) --共为主键,保证不能添加同一个好友两次)4)创建消息表CREATE TABLE Messages(mid INT IDENTITY(1,1) PRIMARY KEY, --主键,自动增长ruid INT NOT NULL, --接收消息的用户的编号,外键,引用UserInfo表的uidsuid INT NOT NULL, --发送消息的用户的编号,外键,引用UserInfo表的uidsendTime DATETIME DEFAULT(GETDATE()), --发送消息的时间mtype BIT DEFAULT(0), --消息类型,默认为0,表示聊天信息,1表示系统消息context V ARCHAR(200) NOT NULL --消息内容,非空)以下是各表的约束:ALTER TABLE UserInfoADD CONSTRAINT ck_utelCHECK(tel LIKE '[0-9][0-9][0-9][0-9]-'+REPLICATE('[0-9]',7)OR tel LIKE '1'+REPLICATE('[0-9]',10)OR tel LIKE '[0-9][0-9][0-9]-'+REPLICATE('[0-9]',8)), CONSTRAINT ck_idcardCHECK((idcard LIKE '[1-9]'+REPLICATE('[0-9]',16)+'[0-9X]' AND ISDATE(SUBSTRING(idcard,7,8))= 1)OR(idcard LIKE '[1-9]'+REPLICATE('[0-9]',13)+'[0-9]' AND ISDATE('19'+SUBSTRING(idcard,7,8))= 1)OR idcard=null)GOALTER TABLE [Group]ADD CONSTRAINT fk_guid FOREIGN KEY(guid) REFERENCES UserInfo(uid) GOALTER TABLE FriendsADD CONSTRAINT fk_fuid FOREIGN KEY(fuid) REFERENCES UserInfo(uid)GOALTER TABLE MessagesADD CONSTRAINT fk_ruid FOREIGN KEY(ruid) REFERENCES UserInfo(uid), CONSTRAINT fk_suid FOREIGN KEY(suid) REFERENCES UserInfo(uid) GO3详细设计及实现3.1界面设计1)登录界面(如图3)该界面仿照腾讯QQ的界面,界面与腾讯QQ相比虽然不是那么美观,但是基本的功能也与其差不多了,在这个界面上用户的主要操作有用户输入用户名,密码,如果还没有注册用户名的网友可以通过登录界面的用户注册,从而使用该程序。

在登录该程序之前需要开启服务器,当用户把用户名和密码输入好后点击登录按钮后,就开始与服务器建立连接,服务器收到后开始通过jdbc的方式读取数据库的内容,然后与用户输入的用户名和密码进行比较,如果用户名不存在或者用户的密码错误则登录失败,并且提示失败的原因,如果有时候没有把服务器开启的话,则在登录失败后,会提示连接服务器超时。

相关主题