JAVA聊天室详细设计文档(菜鸟级)



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


目录

第一部分 项目概况                     

 

1.项目说明………………………………………………………………………..4

2.项目背景………………………………………………………………………..4

 

第二部分 项目计划

 

1.    项目目标……………………………………………………………… ………4

2.    项目范围……………………………………………………………… ………4

3.    项目策略……………………………………………………………… ………4

4.    项目开发周期………………………………………………………… ………4

5.    每项任务所需技能…………………………………………………… ……. ..5

6.    所采用的工具和技术清单…………………………………………………….5

    

第三部分 项目设计

 

1 需求分析……………………………………………………………………….5

2 软件功能……………………………………………………………………….5

3 概要设计……………………………………………………………………….6

4 详细设计……………………………………………………………………….6

 

第四部分 项目测试

1.  测试阶段

2.程序界面.…………………………………………………………………7

3.程序运行的条件

4.参考的资料

第五部分 活动总结

 

 

 

 

第一部分 项目概况

1.项目说明

项目名称:JAVA聊天室系统。

    户:一般大众。

2、项目背景

软件学院两年多的办学历程中,采用了印度NIIT的先进教学法,学生从中极大地提高了专业知识能力,对于学生的动手能力也得到了明显的提高。为了进一步地考察学生的专业知识能力,让其能够明确自我专业知识水平,提高学习的兴趣,弄清专业发展方向,为以后的就业打好基础,现特向我院领导申请举办软件学院首届“软件科技月”活动。本次活动面向全校计算机爱好者,并且与成都多所高校及IT企业联合开展系列活动。活动以软件学院学生为主体对象,主张“接触IT企业,明确专业方向,苦修专业知识”。

 

第二部分 项目计划

1.  项目目标

1),允许新用户注册,同时开设帐户。

2),允许用户进行在线的公聊和私聊。

3),可以创建留言版面并且留言。

4),允许用户创建私人包间、查找包间并且在包间内聊天。

5),可通过帐户ID号对用户资料进行查询。

6),友好的欢迎界面并显示上次登陆时间。

2. 项目范围

本软件适用于一般大众。

3. 项目策略

通过可视化编程的JAVA程序和SQL数据库的方式进行实现。

通过增量开发的方法进行此项目的设计与开发。

使用套节字进行客户与服务端的通讯。

 

 

4.项目开发周期

第一周

需求分析及初步设计阶段(决定每个功能所需的类及数据类型)

第二周

根据相应功能设计出各类所用到的方法及数据类型

第三周

具体实现各个类中的各个方法

第四周

对各个界面和服务器进行调整及测试完善工作

5. 每项任务所需技能

数据库建立:熟练的SQL数据库编程。

服务端与客户端的连接:熟悉网络编程中的协议及数据流

程序界面设计:可视化编程技能。

代码实现:JAVA与数据库编程。

6. 所采用的工具

开发工具:Microsoft JAVALEjdk1.3+ Microsoft SQL Server

开发环境:windows2000+个人电脑

 

第三部分 项目设计

1.需求分析

着经济的日益发展,网络的观念深入人心。人们越来越需要通过网络高效简捷的交流,聊天室就是其中的一个工具。

2.软件主要功能

1),允许新用户注册,同时开设帐户。

2),允许用户进行在线的公聊和私聊。

3),可以创建留言版面并且留言。

4),允许用户创建私人包间、查找包间并且在包间内聊天。

5),可通过帐户ID号对用户资料进行查询。

6),友好的欢迎界面并显示上次登陆时间。

 

 

程序中要用到的类

1、客户端                             

BaojianNew    >>创建包间

BaoJianFind   >>查找包间加入包间

BaoJianEnter  >>进入包间

BaoJianQu    >>包间区聊天

NewPanel     >>界面背景图处理

PrivateMessage >>私聊功能

UserFind       >> 查找用户功能

Register       >> 注册功能

EnterGUI      >> 登陆功能

ChatRoom     >> 公共聊天功能

LiuYan        >>留言板

SocketConstants>>接口(包含服务端IP地址,以及自定义端口号#6655

 

2、服务端

Server

     >>处理聊天内容

 

 

 

 

 

三、设计细节与构造

(一)   编写服务端程序

(1)   问题陈述

需要在JAVA中开发一个中间层服务器应用程序,其功能如下:

a.接受用户注册信息并保存在一个表中(需连接数据库).

b.执行用户的设定的查找功能.

c.能够允许注册过的用户登陆聊天界面并可以聊天.

d.能够接受私聊信息并发送给特定的用户

e.能够接受用户创建的包间信息并保存到一张表中BaoJian

f.能够允许用户查找,登陆,加入包间并进行聊天

g.能够接受用户的留言,并保存到以用户名为文件名的文件内

h.服务器运行在自定义的端口上#1001

(2)   计划解答

a. 选择创建网络服务器应用程序所需引用的类和方法。

b、确定用户自定义的类、他们的目的、方法。

c、确定用户自定义的类中的数据类型和变量。

d、确定服务器的IP地址和端口号。

e、确定何时连接到数据库中。

f、确定查询参数。

g、确定要处理的例外。

h、确定例外的出错信息。

 

任务a. 选择创建网络服务器应用程序所需引用的类和方法。

任务

解答来源

结果

 

选择创建网络服务器应用程序所需引用的类和方法。

 

方法

Serversocket

accept ()

Thread

Start(),run()

Socket

getInputStream(),getOutputstream()

ObjectInputStream

readObject()

ObjectOutputStream

writeObject()

BufferedReader

readLine()

Vector

 

addElement(),removeElement()

 

 

 

任务b、确定用户自定义的类、他们的目的、方法。

任务

解答来源

结果

确定用户自定义的类、他们的目的、方法。

 

目的

方法

Serversocket

监听客户请求

run(), ServerSocket()

Connect

处理客户端的各种操作

Connect(),enter(),register(),find()

send(),  enter(),  time()

Members

保留申请人信息

 

BaoJian

保留包间信息

 

Applicant

保留留言信息

 

 

任务c、确定用户自定义的类中的数据类型和变量。

任务

解答来源

结果

确定用户自定义的类中的数据类型和变量。

 

数据类型

变量

Serversocket

ServerSocket

Socket

Thread

Server

FromClient

serverThread

Connect

Members

ObjectInputStream

ObjectOutputStream

PrintStream

BufferedReader

String

StringBuffer

Vector

Vector

Vector

Vector

Result

data

ObjIn

streamFromClient

out

in

user

vmessage

vprivate,vprivatemessage

vbaojian,vbaojianmessage

vbaojianClient

vpeople

result2

Members

 

 

 

 

 

 

 

 

String

String

String

String

String

String

String

String

memberID;

memberName;

memberPassword;

memberSex;

memberAddress;

memberPosition;

memberAge;

memberInterest;

BaoJian

 

String

String

String

BaoJianID

BaoJianName;

BaoJianMiaoShu;

Applicant

String

utxt

 

 

任务d、确定服务器的IP地址和端口号。

任务

解答来源

结果

确定服务器的IP地址和端口号。

 

IP地址:本机IP地址

端口:1001

 

任务e、确定何时连接到数据库中。

任务

解答来源

结果

确定何时连接到数据库中。

 

(1)   当用户注册时,插入注册信息

(2)   当用户登陆时,检验是否存在ID

(3)   当用户查找时,选出有关信息

(4)   当用户创建,查找,加入,进入包间时

任务f、确定查询参数。

任务

解答来源

结果

确定查询参数。

 

vMemberPasswordvMemberNamevBaoJianID

任务g、确定要处理的例外。

任务

解答来源

结果

确定要处理的例外。

 

例外

发生场合

Exception

 

 

 

 

 

 

IOException

InvalidClassException

NotSerializableException

创建Thread对象时,

当调用accept()方法时,

当调用getInputStream()

以及getOutputStream()方法时,

当调用writeObject(),println (),readLine()方法时当连接数据库时

 

当调用readObject()方法时

当调用readObject()方法时

当调用readObject()方法时

任务h、确定例外的出错信息。

任务

解答来源

结果

确定例外的出错信息。

 

例外

出错信息

Exception

 

 

 

 

 

 

 

IOException

InvalidClassException

NotSerializableException

"Cannot start the Thread"

"not listen to the client"

"the wrong is this :"+e

"the wrong is here :"+e

"the wrong is here :"+e

"the wrong is here3 :"+e

"the wrong .......... :"+e

"cannot read from client :"+e

"cannot write the vmessage"+e

"cannot serialize Members class"+e

"Object is not serializable"+e

 

 

(3)   实施解答

a. 编写服务器程序

b. 保存程序

c. 编译程序

d. 运行程序

(4)验证解答: 在创建好客户端后进行验证.

   

 

(二)            编写客户端程序

1、编写注册界面程序

(1)   问题陈述:

编写一个客户端程序将用户注册的信息发送给服务端.

(2)   计划解答

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

任务a.选择创建该程序所需要引用的类和方法

任务

解答来源

结果

选择创建该程序所需要引用的类和方法

 

 

方法

Socket

ObjectOutputStream

PrintStream

BufferedReader

ObjectInputStream                                                          PrintStream out=null;                                                       BufferedReader in=null;                                                   ObjectInputStream objIn;                                                 ObjectOutputStream objOut=n                                          PrintStream out=null;                                                       BufferedReader in=null;                                                   ObjectInputStream objIn;                                                 ObjectOutputStream objOut=n                                          PrintStream out=nu                                                         BufferedReader                                                                  

getOutputStream()

writeObject()

println();

readLine();

readObject();

任务b.确定用户自定义的包、类、它们的目的及方法

任务

解答来源

结果

.确定用户自定义的包、类、它们的目的及方法

 

 

目的

方法

Members

保留申请人信息

 

Register

实现界面及功能

openRegister()

main()

register()

actionPerformed()

任务c.确定用户定义类中的数据类型和变量

任务

解答来源

结果

确定用户定义类中的数据类型和变量

 

数据类型

变量

Members

String

String

String

String

String

String

String

String

memberID;

memberName;

memberPassword;

memberSex;

memberAddress;

memberPosition;

memberAge;

memberInterest;

Register

Socket

ObjectOutputStream

以及其中的许多空控件

ClientSocket

objOut

任务d.确定建立连接时服务器的IP地址和端口号

任务

解答来源

结果

d.确定建立连接时服务器的IP地址和端口号

 

 

IP地址:本机IP地址

端口号:1001

任务e.确定提交到服务器上的数据

任务

解答来源

结果

e.确定提交到服务器上的数据

 

Members类中的一个对象

任务f.确定何时提交数据

任务

解答来源

结果

确定何时提交数据

 

点击buttonHandIn按钮时

任务g.确定要处理的例外

任务

解答来源

结果

.确定要处理的例外

 

例外

发生场合

InvalidClassException

NotSerializableException

IOException

当调用writeObject()方法时

当调用writeObject()方法时

当调用writeObject()方法时

任务h.确定例外的出错信息

任务

解答来源

结果

确定例外的出错信息

 

 

例外

出错信息

InvalidClassException

NotSerializableException

IOException

"The RegisterApply class is invalid :"+e1

"The object is not serializable :"+e2

"Cannot write to the server :"+e3

 

(3)   实施解答

(4)   验证解答

2、编写查找界面程序

(1)   问题陈述

     编写一个查找界面的程序,将信息显示在文本框内.

(2)   计划解答(略)

(3)   实施解答

a. 编写注册界面程序

b. 保存程序

c. 编译程序

d. 运行程序

(4)   验证解答:输入一个已经注册的ID执行后看有关信息是否显示;

         输入一个没有注册的ID执行后看其效果;

 

3、编写登陆界面程序

(1)   问题陈述

(2)计划解答(略)

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

 

(2)   实施解答

a. 编写注册界面程序

b. 保存程序

c. 编译程序

d. 运行程序

(4)验证解答

4、编写聊天界面程序

(1)问题陈述

(2)计划解答

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

任务a.选择创建该程序所需要引用的类和方法

任务

解答来源

结果

选择创建该程序所需要引用的类和方法

 

方法

hread

Socket

PrintStream

BufferedReader

ObjectInputStream

ObjectOutputStream

Vector

Timer

run()

getInputStream(),get……..

println()

readLine();

readObject();

writeObject()

elementAt(),size()

.start(),actionPerformed

任务b.确定用户自定义的包、类、它们的目的及方法

任务

解答来源

结果

确定用户自定义的包、类、它们的目的及方法

 

 

目的

方法

ChartingRoom.Room

Room

 

 

 

TimeAction

处理消息的

 

 

 

发送定时地接受消息并显示在文本区内

main()

OpenRoom()

actionPerformed()

run()

actionPerformed()

 

 

任务c.确定用户定义类中的数据类型和变量

任务

解答来源

结果

确定用户定义类中的数据类型和变量

 

 

数据类型

变量

Socket

PrintStream

BufferedReader

ObjectInputStream

Vector

String

Int

clientSocket,time clientSocket

out, timeout

in, timein;

objIn,timeobjIn;

vmessage,vpeople

sDate,sTime,sStatus;

countmessage,countpeople

任务d.确定建立连接时服务器的IP地址和端口号

任务

解答来源

结果

确定建立连接时服务器的

IP地址和端口号

 

IP地址:本机IP地址

端口号:6655

任务e.确定提交到服务器上的数据

任务

解答来源

结果

确定提交到服务器上的数据

 

发送区内地消息

任务f.确定何时提交数据

任务

解答来源

结果

确定何时提交数据

 

 

当点击按钮 ”send”

任务g.确定要处理的例外

任务

解答来源

结果

确定要处理的例外

 

 

例外

发生场合

InvalidClassException

NotSerializableException

IOException

Exception

InterruptedException

接受消息时

接受消息时

接受消息时

Timer 启动时

时间线程启动时

 

任务h.确定例外的出错信息

任务

解答来源

结果

确定例外的出错信息

 

InvalidClassException

NotSerializableException

IOException

Exception

InterruptedException

"The RegisterApply class is invalid :"+e

"The object is not serializable :"+e

"Cannot write to the server :"+e

"Timer has wrong "+ e6 Timer

println(e)

(3)实施解答

a. 编写注册界面程序

b. 保存程序

c. 编译程序

d. 运行程序

(4)验证解答

5.编写登陆界面程序

( 1 ) 问题陈述

(2)计划解答(略)

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

 

(3)   实施解答

a. 编写包间界面程序

b. 保存程序

c. 编译程序

d. 运行程序

6.  编写创建包间界面程序

( 1 ) 问题陈述

(2)计划解答(略)

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

 

(4)   实施解答

a. 编写注册界面程序

b. 保存程序

c. 编译程序

d. 运行程序

7.编写查找包间界面程序

                         i.              问题陈述

(2)计划解答(略)

a.选择创建该程序所需要引用的类和方法

b.确定用户自定义的包、类、它们的目的及方法

c.确定用户定义类中的数据类型和变量

d.确定建立连接时服务器的IP地址和端口号

e.确定提交到服务器上的数据

f.确定何时提交数据

g.确定要处理的例外

h.确定例外的出错信息

 

                       ii.              实施解答

a. 编写注册界面程序

b. 保存程序

c. 编译程序

d. 运行程序

8.  入包间以及在包间内聊天(略)

9.   私聊界面(略)

10.留言界面(略)

 

控制

条件

预期结果

实际结果

结论

整理

按钮"发送"

None

被点击

消息显示

YES

OK

OK

按钮"查找"

None

被点击

打开查找界面

YES

OK

OK

按钮"退出"

None

被点击

退出

在用户列表中清除了用户名

OK

OK

TimeAction

 

None

自动执行

不断更新消息

YES

OK

OK

菜单“留言”

None

被点击

 

YES

OK

OK

菜单“界面

 

None

被点击

 

YES

OK

OK

菜单项“创建”

None

被点击

 

YES

OK-----

OK-----

菜单项“查找”

None

被点击

 

YES

OK----

OK---

菜单项“进入”

None

被点击

 

打开包间界面

OK----

OK---

用户列表

 

None

被双击

 

打开私聊界面

OK

OK

发送区

None

按下Enter

 

发送信息

OK

OK

 

2、注册界面

控制

条件

预期结果

实际结果

结论

整理

按钮“Register

表中没有同一ID

被点击

插入表中

YES

OK

OK

按钮“ReWrite”

None

被点击

清除内容

YES

OK

OK

按钮“GoOut”

None

被点击

退出

YES

OK

OK

 

3、登陆界面

控制 

条件

预期结果

实际结果

结论

整理

按钮”Enter”

表中存在ID并且Password正确

被点击

进入聊天室,并且

名字显示在标题上

YES

OK

OK

按钮”Register”

None

被点击

进入注册界面

YES

OK

OK

按钮”ReWrite”

None

被点击

清除所填内容

YES

OK

OK

按钮”GoOut”

None

被点击

退出

YES

OK

OK

4、查找界面

控制 

条件

预期结果

实际结果

结论

整理

按钮“Find”

表中存在ID

被点击

显示出查找用户的信息

YES

OK

OK

按钮”GoOut”

None

被点击

退出

YES

OK

OK

5.私聊界面

控制 

条件

预期结果

实际结果

结论

整理

按钮 回复

发送信息

被点击

 

YES

OK

OK

按钮返回“

None

被点击

退出

YES

OK

OK

发送区

 

Enter

发送

 

 

 

Timer对象

定时接受

自动

接受信+显示

 

 

 

6.包间聊界面(与私聊界面相似)

控制 

条件

预期结果

实际结果

结论

整理

按钮 回复

发送信息

被点击

 

YES

OK

OK

按钮返回“

None

被点击

退出

YES

OK

OK

发送区

 

Enter

发送

 

 

 

Timer对象

定时接受

自动

接受信+显示

 

 

 

7.包间查找创建界面(略)

8.留言界面

 

控制 

条件

预期结果

实际结果

结论

整理

按钮“提交

None

被点击

提交信息

YES

OK

OK

按钮返回

None

被点击

退出

YES

OK

OK

 

你可能感兴趣的:(JAVA聊天室详细设计文档(菜鸟级))