MothzChat聊天室设计总报告.docx
《MothzChat聊天室设计总报告.docx》由会员分享,可在线阅读,更多相关《MothzChat聊天室设计总报告.docx(35页珍藏版)》请在冰豆网上搜索。
MothzChat聊天室设计总报告
重庆邮电大学
《网络编程》课程结业报告
课程结业选题:
基于JAVA的聊天室系统
学院名称:
计算机科学与技术学院
学生姓名:
专业:
计算机科学与技术
班级:
学号:
指导教师:
填表时间:
2011年6月
摘要
计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。
各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具。
随着网络的日益普及,各种聊天工具也层出不穷,要实现简单的网络通讯也就不再是个梦想。
接下来的设计就是针对一个简单的网络聊天程序,利用Myeclipse,Mysql实现一款聊天室软件的基本功能。
一般说来聊天室程序分为服务器端和客户端两部分,其核心部分是服务器端,在网络聊天程序中客户端一切核心功能都要依赖于服务器(如:
依靠服务器转发聊天信息,通过服务器进行建立P2P连接进行文件传输),鉴于此本程序采用常见的c\s体系结构,即客户机/服务器体系结构,服务器专门用来监控用户状态和响应用户的请求。
本设计所完成的网络聊天室具有常用聊天室的所有功能,包括多人同时聊天、两人间的私密聊天、传送文件、播放多媒体文件、发布系统公告、还能显示用户列表。
同时,为了管理聊天室中的用户,设计了用户注册登陆功能、管理员删除普通用户的功能。
本文首先介绍了该系统的设计思路和需求分析,接着介绍了该系统的设计思路,功能设计,包括数据库的设计与创建;然后介绍本系统的计算模式和用到的相关技术;最后介绍本系统的具体实现。
关键词:
聊天室系统c\s体系结构私聊在线用户
前言
随着电脑和互联网的普及,网络聊天已经成为人们工作生活中传递信息、交流感情的重要工具。
网络版的聊天软件种类繁多,如QQ、OICQ、MSN等,实现了随时随地上网聊天,给人们带来了很大的方便。
但是这些聊天软件也存在以下不足:
用户必须连接Internet;用户再工作时容易沉迷于网络聊天。
为了方便单位企业内部的信息交流,减少不必要的财力和人力资源浪费,开发一个局域网聊天软件是非常必要的。
本系统采用基于Socket的局域网通信工具的设计与实现的方法。
基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。
它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。
基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。
第一章MothzChat系统功能概述
我们设计的软件主要是给大家提供一个即时交流的平台,该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。
第一节系统需求分析
该系统分为超级管理员、管理员与普通用户三个等级,管理员可以发布系统消息和对在这个聊天室系统中的用户进行删除账号的操作。
此外,管理员还可以修改其他管理员的登录密码以及添加新的管理员。
超级管理员除了拥有管理员的权限外还可以对管理员账户进行删除处理。
普通用户可以登录聊天室进行群聊与私聊这两项基本的操作,可以进行文件传输,还可以打开客户端自带的播放器播放本地的多媒体文件。
第二节系统功能
服务器端具有建立侦听服务,转发聊天信息,帮组客户端进行P2P连接,响应用户下线,统计在线人数,发送系统消息,删除用户的功能。
客户端具有请求登陆,请求下线,发送群体消息,接收群体消息,发送私聊消息,接收私聊消息,播放多媒体,接收系统信息,发送与接收文件的功能。
第三节系统的特点
本系统采用Cient/Server(C/S)体系结构,及客户机/服务器体系结构。
C/S结构主要应用于构造数据库系统,它包括连接在一个网络中的多台计算机。
处理应用程序并请求另一台计算机服务。
其特点是客户只装载应用软件,而把数据库放在服务器上,这样就可以使客户端不需要存储数据,从而简化客户端软件。
体系结构可以如图:
网络聊天系统也多采用C/S结构,聊天服务器专门用于监控用户状态和转发消息,当客户端进行多播或广播时,客户端只需把接收消息的用户序列和消息文本发送到服务器,然后由服务器转发到各个用户,而不需要向每个用户建立了连接后在发送消息,这样就大大减轻了客户端的任务。
第二章系统概要设计
第一节系统设计思想
聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户发来请求信息,客户端登录到服务器端才可以实现正常聊天和传输文件的功能。
第二节数据流图
数据流图是用来表示系统功能的工具,它表示系统的逻辑模型、描述了数据流在系统中流动的情况,它是一种功能模型。
采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具。
数据流程图表示求解某一问题的数据通路。
同时规定了处理的主要阶段和所用的各种数据媒体。
箭头表示数据流、圆圈表示加工、双横线表示存储、方框表示数据的原点和终点。
下面简要介绍部分需求的数据流图:
2.2.1会员注册的数据流图
注册页面
注册信息
注册信息
注册结果
聊天室会员是本聊天室的主要用户,要想进入聊天室,使用聊天室功能,就必须先得注册,通过注册成为本系统的合法用户就能获得系统提供的相关信息和权限。
具体数据流图如下:
2.2.2信息收发的数据流图
用户A填写聊天信息,选择聊天对象,并完成聊天的一些设置,比如是否私聊等,然后点击发送按钮,所有聊天信息经过系统处理,可以在本地生成聊天记录,显示在聊天对象的信息接收窗口,在信息处理的同时,会对信息进行入库处理。
具体数据流图如下:
2.2.3显示在线人数的数据流图
在线人数是聊天室的访问率高低的直接反应,当用户登录成功后,聊天室的访问人数就加1。
具体的过程以数据流图(DFD)表示如下:
第三节系统用例图
第四节系统功能模块划分
根据上面的系统功能分析,可以画出系统的功能模块图,本系统从客户端,服务器端对功能模块加以描述。
1、服务器端功能模块设计
(1)开启服务器,初始化服务器套接字,并使其处于监听状态;
(2)可以接收客户端发来的注册密码并生成一个随机账号,并将账号和密码写入注册表中;
(3)当用户登陆时,将目前在线用户列表发给该用户,在服务器列表中记录该用户的登录信息,将该用户添加到在线用户列表中,并对当前在线人数+1;
(4)普通管理员可以添加新的管理员和修改其它管理员的密码,超级管理员可以删除普通管理员账号;
(5)将用户的聊天信息转发至接收方;
(6)管理员可以删除普通用户的账号;
(7)发送消息,可以对用户发送系统消息;
(8)通过建立P2P连接实现文件传输;
(9)当用户注销时,向所有的在线用户发出通知,同时在服务器列表中记录该用户的注销信息,并从登陆用户列表中将该用户删除。
2、客户端功能模块设计
(1)连接服务器,把用户名信息发送给服务器,建立一个连接;
(2)接收服务器消息,对不同的消息采用不同的处理方法;当收到服务器连接消息时,从中提取已登录用户列表,并逐个增加到用户列表中;收到用户发来的消息,显示在消息框中;收到其他用户注销的消息,从用户列表中删除该用户,更新用户列表;
(3)发送消息,对不同的消息发送方式采用不同的处理方法;有群发消息和私聊消息两种消息发送方式;
(4)可以对指定用户进行文件传输;
(5)可以播放本地多媒体;
(6)断开连接,若用户断开与服务器的连接,则发送注销消息给服务器。
第三章数据库设计
第一节数据模型设计
根据前面的需求描述,本系统中所涉及的可以抽象出来的数据模型有:
用户(clients)、管理员(Ad)两个。
用户(clients):
代表用户实体。
主要属性有用户ID(id)、密码(password)、密码提示(forget),主键是用户ID。
管理员(ad):
主要属性有管理员(id)、密码(password)、密码提示(forget),管理员姓名(Addname),最近登录时间(LastTime),管理员权限(Fetlle)。
第二节数据库逻辑结构设计
对应于数据模型,设计出的数据库一共分为两张表,即用户表(user)和管理员表。
数据库的名称为javachat,表的具体结构如下:
一、用户信息表
用户表(user)有如下字段:
用户ID(id)、密码(password)、密码提示(forget)。
其中id为主键,不允许重复,不允许为空。
其定义如表3.1所示:
表3.1用户信息表
字段名
字段类型
字段长度
是否允许为空
是否为主键
描述
Id
Varchar
10
不允许
是
用户ID
Password
Varchar
20
不允许
否
密码
Forget
Varchar
20
不允许
否
密码提示
下面是建立用户信息表的SQL语句:
CREATETABLE`clients`(
`id`varchar(10)NOTNULL,
`password`varchar(20)DEFAULTNULL,
`forget`varchar(20)DEFAULTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
二、管理员信息表
用户表(Ad)有如下字段:
管理员ID(id)、密码(password)、管理员权限(Fettle),管理员姓名(Addname)管理员最近登录时间(LastTime)。
其中id为主键,不允许重复,不允许为空。
其定义如表3.2所示:
表3.2用户信息表
字段名
字段类型
字段长度
是否允许为空
是否为主键
描述
Id
Varchar
10
不允许
是
管理员ID
Password
Varchar
20
不允许
否
管理员密码
AdName
Varchar
20
允许
否
管理员姓名
LastTime
Varchar
50
不允许
否
管理员最近登录时间
Fettle
Int
10
不允许
否
管理员权限识别
CREATETABLE`ad`(
`ID`varchar(10)NOTNULL,
`Password`varchar(20)DEFAULTNULL,
`AdName`varchar(20)DEFAULTNULL,
`LastTime`varchar(50)DEFAULTNULL,
`Fettle`int(10)DEFAULTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
创建好表之后的数据库如下图所示:
第四章系统详细设计
MothzChat分为管理员和普通用户两类,管理员可以发布系统消息和对在这个聊天室系统中的用户进行删除账号的操作。
此外,管理员还可以修改其他管理员的登录密码以及添加新的管