综合课程设计报告网络聊天工具系统的设计与实现学生姓名:指导教师:所在系:电子信息系所学专业:计算机科学与技术年级:08级(2)班2010年12月目录摘要 (1)第1章前言 (2)1.1 系统前景 (2)1.2 开发环境简介 (2)1.3 系统主要功能 (2)第2章需求分析 (3)2.1 功能需求 (3)2.2应用平台需求 (3)2.3 其他需求 (3)第3章概要设计 (4)3.1 系统总体结构 (4)3.2 网络聊天系统模块设计 (4)3.2.1 用户上下线信息显示模块 (4)3.2.2 转发信息模块 (4)3.2.3 用户注册模块 (5)3.2.4 修改密码模块 (5)3.2.5 用户登录模块 (5)3.2.6 群聊模块 (5)3.2.7 私聊模块 (5)第4章详细设计 (6)4.1 服务器 (6)4.2 客户端 (7)4.2.1客户端整体设计 (7)4.2.2登录模块设计 (8)4.2.3修改模块设计 (8)4.2.4注册模块设计 (10)4.2.5消息格式化模块 (11)4.2.6 群聊模块 (11)4.2.7 私聊模块 (12)第5章系统测试 (15)5.1 程序主界面 (15)5.2 服务器 (15)5.3 用户注册 (15)5.4 用户修改 (16)5.5 群聊对话 (17)5.6私聊对话 (18)第六章小结 (20)参考文献 (21)摘要本应用软件运用java语言编写,针对用户对网络实时聊天工具的需求设计,可实现基本的在线聊天功能。
其主要功能如下:1)用户注册、登录及用户密码修改;2)在线用户群聊;3)在线用户与某一用户私聊。
本系统基于TCP传输协议设计,运用Swing组件构建界面,利用JA V A面向对象的思想开发。
开发过程中利用了计算机网络编程的基本理论知识。
通过Socket实现客户端与服务器的连接,利用对象输入、输出流对信息进行读取与转发,采用多线程的方式实现多客户端聊天。
关键字:Swing 多线程 TCP Socket第1章前言1.1 系统前景随着社会的发展,计算机网络日新月异,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系已经成为当今社会人们主流的联系方式。
两台计算机之间进行即时通讯等交流方式已经成为必然的潮流,因此出现了QQ等聊天工具。
然而QQ等聊天工具虽然方便、实用,但是,娱乐功能太多,占据内存空间过大,从一定程度上来说,演变成了一种娱乐工具,不能作为即时通讯的专用工具。
而我们的设计的网络聊天工具是专用于实现计算机之间即时通讯的,消耗内存小,界面友好、简洁。
本系统使用当前流行的JAVA语言编写,采用面向对象的思想设计,基于TCP传输控制协议。
切实考虑大众用户的需求,为方便用户之间的沟通,可为大家提供了一个很好的交流渠道和聊天环境。
1.2 开发环境简介Java语言自1995年诞生以来在短短的几年时间内以迅猛的速度席卷全球,已形成一种专门的技术。
它是一种简单的、面向对象的、分布式的、强壮的、安全的、体系结构中立的、可移植的,高性能的、多线程的和动态的语言。
1.3 系统主要功能本系统可以实现用户注册,登陆及密码的修改本系统可以实现多用户在线群聊本系统可以实现在线用户私聊第2章需求分析2.1 功能需求(1)用户可以注册新用户(2)用户可以用注册成功的用户名和密码登陆系统(3)用户注册的帐号密码可以自动保存(4)用户可以修改自己的密码(5)多个用户之间可以进行群聊(6)用户可以查看到所有在线好友(7)用户可以点击好友昵称进行一对一私聊(8)用户可以清空聊天窗口中的消息2.2应用平台需求操作系统:windows xp2.3 其他需求系统功能简洁,界面美观、友好,操作方便。
运行速度快,消耗内存空间较小,跨平台性较强。
第3章概要设计3.1 系统总体结构图3.1 网络聊天工具系统总体结构3.2 网络聊天系统模块设计3.2.1 用户上下线信息显示模块服务器开启6666端口用于监听,有用户请求连接时,通过套接字获取客户端ip地址,从而显示在线用户信息;当用户下线时,连接异常抛出,处理异常,显示下线信息。
3.2.2 转发信息模块服务器定义map数组用于存储要求请求连接用户的端口号以及该端口客户发送的信息,该数组服务器、客户端共享,客户端读取该信息,从而实现信息转发。
3.2.3 用户注册模块通过jdbc将Java与数据库连接,用户输入用户名、密码,若通过合法性检测,则将该用户注册的信息写入后台数据库。
3.2.4 修改密码模块用户输入用户名、旧密码、新密码,若通过合法性检测,则把修改后的信息重新写入后台数据库。
3.2.5 用户登录模块用户输入用户名、密码以及服务器ip地址,如果通过合法性检测则进入聊天主界面。
3.2.6 群聊模块客户端点击“发送信息”按钮,该客户端的ip地址、端口号以及信息内容一起打包写入服务器map数组,客户端通过线程可以读取该数组中的内容,从而实现群聊。
3.2.7 私聊模块客户端用户点击“开始私聊”按钮,输入对方的昵称以及ip地址,从而该用户开启端口用于监听,同时定义输入、输出流文件,客户端延迟片刻,然后与该端口取得连接。
当任意一方点击“发送信息”按钮时,和群聊同一机理,通过读取共享文件内容实现私聊。
第4章详细设计4.1 服务器图4.1 服务器流程图说明:(1)服务器界面仅显示用户上线与下线的信息。
(2)程序运行过程中,服务器首先创建套接字Socket和ServerSocket,开设本地端口。
ServerSocket用于监听用户连接请求,当请求到达后,服务器接受连接请求,返回一个新的对应于此次连接的套接字,该套接字用于和客户端进行通信,而原来的套接字则返回等待另一客户请求。
(3)服务器不可用于聊天,只用于将客户端群聊时发送的信息转发给每一个在线用户。
4.2 客户端4.2.1客户端整体设计图4.2 客户端整体流程图说明:(1)运行时,应先建立数据源,再建立用户名数据库,用来存放用户信息。
(2)客户端界面启动后,点击相应按钮,实现相应功能。
4.2.2登录模块设计说明:进入客户端主界面后,填写用户名、密码、IP ,进行合法性验证,若通过验证,即可进入群聊界面进行群聊。
同时,右侧在线好友列表显示当前在线好友昵称,服务器界面显示当前IP 地址的用户在线。
4.2.3修改模块设计否图4.3 登录模块流程图说明:用户进入客户端主界面后,点击修改即可修改密码。
正确输入各项信息,即可成功修改密码。
点击取消,回到客户端主界面。
否4.4 修改模块流程图图4.5 注册模块流程图说明:用户进入客户端主界面后,选择注册按钮,若用户名、密码长度不超过10位,并且全为数字和字母组成则连接数据库,检查该用户是否已经存在,若不存在,则注册成功信息录入数据库。
点击返回按钮,返回客户端主界面。
图4.6 消息格式化流程图说明:消息在整个传递过程中都遵循特定的格式,对象输入输出流中的信息的传输格式由消息格式化类决定,同时消息格式化类将消息整合,固定成特定的格式显示到用户的聊天窗口中。
4.2.6 群聊模块图4.7 群聊模块流程图说明:群聊时,客户端点击主界面发送消息按钮,信息写入对象输出流,经过套接字传输至服务器,服务器将消息格式化后转发给各个在线用户。
4.2.7 私聊模块(1)私聊模块中的客户端模块图4.8 私聊客户端流程图说明:私聊时,发起方作为客户端,好友作为服务器,发起方等待服务器先启动,服务器启动后,发起方开始连接,连接成功后开始传送消息。
(2)私聊模块中服务器端模块说明:私聊时,接受方作为服务器,开启本地端口用于监听连接,当有连接时,进行私聊,读取消息并发送。
否图4.9 私聊服务器模块流程图第5章系统测试、安装与使用说明在该系统中,群聊、私聊的功能基本实现,并且运行正常。
用户可选择安装客户端软件或者服务器软件,安装客户端软件的用户需预先建立数据源MyQQ,连接到安装包下的数据库QQUser。
正确操作后即可使用。
5.1 程序主界面运行程序后,弹出QQ登陆界面,等待用户操作。
如图5.1所示图5.1 QQ登陆界面5.2 服务器连接客户端,传输客户端之间的对话信息和显示用户上下线情况。
如图5.2所示图5.2 服务器上下线情况统计界面5.3 用户注册在QQ登陆界面,点击“注册”,弹出注册页面,按要求输入帐户和密码。
如图 5.3所示图 5.3 注册账户和密码界面例如,在QQ账户栏输入“123”,QQ密码栏输入“123”,再点击“完成”,显示“注册成功!”,再点击“确定”,则可以返回QQ登陆界面进行登录操作。
如图 5.4所示图 5.4注册成功后界面5.4 用户修改在QQ登陆界面,点击“修改”,则会跳转到用户修改界面。
如图 5.5所示图5.5 修改用户密码界面例如,在用户名栏输入123.旧密码栏输入123,新密码和确认新密码栏都输入456,再点击“确定”,弹出相应的信息框提示。
点击“确定”,则可以进行QQ登陆操作。
如图 5.6所示图5.6 修改成功后界面5.5 群聊对话在QQ登陆界面输入正确的帐户,密码和服务器IP地址。
例如在QQ账户栏分别输入123、,aaa,QQ密码栏输入456、bbb;服务器IP地址栏均输入“127.0.0.1”,再点击“登陆”,则会弹出相应的信息框提示。
如图 5.7所示图5.7 验证成功界面分别点击“确定”,则弹出两个对话框,即进入群聊状态,等待用户输入对话文字。
如图5.8所示图5.8 群聊对话框在任意一方文本框内输入文字,例如,在文本框内输入“你好呀!我是新来的~”,再点击“发送信息”,则两个客户的粉红色信息显示框中均会显示信息内容。
如图5.9所示图5.9 发送消息5.6私聊对话点击右上方私聊对象,弹出提示框,如图5.10所示图 5.10输入好友昵称和好友IP地址例如,在好友IP地址栏输入“127.0.0.1”,再点击“确定”,则会弹出私聊对话框。
如图5.11所示图 5.11私聊对话界面任意一方发出信息,对方皆可以正常接收,从而实现私聊,如图5.12所示图5.12 私聊的实现界面第六章小结程序设计过程中遇到的问题以及解决方案:(1)最初的程序当中,我们没有考虑到用户使用的方便性,IP地址的更改都是在代码当中实现的,在老师的提示下,我们认识到了这种方式是不可行的。
后来,在登录界面中增加了IP地址输入框,使用户使用更方便,系统更加合理。
(2)在发起私聊时,最初的程序要求用户在群聊消息输入框中输入好友的昵称,再点击私聊按钮,才可以发起私聊,在老师的提示下,我们认识到了这种操作方式的不方便性。
于是将好友列表显示框由JtextArea改成了Jlist,点击好友昵称即可弹出IP地址输入框,方便、快捷,也增加了程序的安全性、合法性。