网络聊天工具系统的设计与实现.docx
《网络聊天工具系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《网络聊天工具系统的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。
网络聊天工具系统的设计与实现
综合课程设计报告
网络聊天工具系统的设计与实现
学生姓名:
指导教师:
所在系:
电子信息系
所学专业:
计算机科学与技术
年级:
08级
(2)班
2010年12月
摘要
本应用软件运用java语言编写,针对用户对网络实时聊天工具的需求设计,可实现基本的在线聊天功能。
其主要功能如下:
1)用户注册、登录及用户密码修改;2)在线用户群聊;3)在线用户与某一用户私聊。
本系统基于TCP传输协议设计,运用Swing组件构建界面,利用JAVA面向对象的思想开发。
开发过程中利用了计算机网络编程的基本理论知识。
通过Socket实现客户端与服务器的连接,利用对象输入、输出流对信息进行读取与转发,采用多线程的方式实现多客户端聊天。
关键字:
Swing多线程TCPSocket
第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应用平台需求
操作系统:
windowsxp
2.3其他需求
系统功能简洁,界面美观、友好,操作方便。
运行速度快,消耗内存空间较小,跨平台性较强。
第3章概要设计
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服务器
说明:
(1)服务器界面仅显示用户上线与下线的信息。
(2)程序运行过程中,服务器首先创建套接字Socket和ServerSocket,开设本地端口。
ServerSocket用于监听用户连接请求,当请求到达后,服务器接受连接请求,返回一个新的对应于此次连接的套接字,该套接字用于和客户端进行通信,而原来的套接字则返回等待另一客户请求。
(3)服务器不可用于聊天,只用于将客户端群聊时发送的信息转发给每一个在线用户。
4.2客户端
4.2.1客户端整体设计
说明:
(1)运行时,应先建立数据源,再建立用户名数据库,用来存放用户信息。
(2)客户端界面启动后,点击相应按钮,实现相应功能。
4.2.2登录模块设计
说明:
进入客户端主界面后,填写用户名、密码、IP,进行合法性验证,若通过验证,即可进入群聊界面进行群聊。
同时,右侧在线好友列表显示当前在线好友昵称,服务器界面显示当前IP地址的用户在线。
4.2.3修改模块设计
说明:
用户进入客户端主界面后,点击修改即可修改密码。
正确输入各项信息,即可成功修改密码。
点击取消,回到客户端主界面。
4.2.4注册模块设计
说明:
用户进入客户端主界面后,选择注册按钮,若用户名、密码长度不超过10位,并且全为数字和字母组成则连接数据库,检查该用户是否已经存在,若不存在,则注册成功信息录入数据库。
点击返回按钮,返回客户端主界面。
4.2.5消息格式化模块
说明:
消息在整个传递过程中都遵循特定的格式,对象输入输出流中的信息的传输格式由消息格式化类决定,同时消息格式化类将消息整合,固定成特定的格式显示到用户的聊天窗口中。
4.2.6群聊模块
说明:
群聊时,客户端点击主界面发送消息按钮,信息写入对象输出流,经过套接字传输至服务器,服务器将消息格式化后转发给各个在线用户。
4.2.7私聊模块
(1)私聊模块中的客户端模块
图4.8私聊客户端流程图
说明:
私聊时,发起方作为客户端,好友作为服务器,发起方等待服务器先启动,服务器启动后,发起方开始连接,连接成功后开始传送消息。
(2)私聊模块中服务器端模块
说明:
私聊时,接受方作为服务器,开启本地端口用于监听连接,当有连接时,进行私聊,读取消息并发送。
第5章系统测试、安装与使用说明
在该系统中,群聊、私聊的功能基本实现,并且运行正常。
用户可选择安装客户端软件或者服务器软件,安装客户端软件的用户需预先建立数据源MyQQ,连接到安装包下的数据库QQUser。
正确操作后即可使用。
5.1程序主界面
运行程序后,弹出QQ登陆界面,等待用户操作。
如图5.1所示
图5.1QQ登陆界面
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地址输入框,方便、快捷,也增加了程序的安全性、合法性。
有待解决的问题:
(1)用户下线时,服务器不能显示该下线用户的ip地址,只能监测有用户下线;
(2)注册的用户可以重复登陆;
(3)由于开设端口的问题,仅能供一对用户私聊。
课程设计的心得体会:
首先我们由衷感谢老师提供给我们这样一个锻炼自己的机会,让我们感受到学来的知识不只是用来完成试卷的。
其次我们在完成课程设计的过程中体会到团队合作的乐趣。
我们学会了积极的同团队成员交流,取长补短,共同进步。
最后,在这次实训中,虽然我们已经对程序进行了不断的修改,但是很多地方还存在着严重的不足,由于时间的限制我们只完成到了这个层次,今后的学习中,我们将进一步对其进行修改。
参考文献:
[1]朱福喜.面向对象与Java程序设计.北京:
清华大学出版社,2010
[2]朱福喜,唐晓军编著.Java编程技巧与开发实例.北京:
人民邮电出版社,2004
[3]朗波.JAVA语言程序设计.北京:
清华大学出版社,2005
[4]赵池龙,姜义平,张建.软件工程实践教程.北京:
电子工业出版社,2006
[5]赵文清,姜波.基于Socket的Java语言网络通讯机制和程序设计信息技术.北京:
清华大学出版社,2006
安徽师范大学皖江学院
课程设计成绩评定单
题目:
学生姓名
指导教师
李杰
指导教师评语:
指导教师评定
设计成绩等级
指导教师(签章):
200年月日