Java聊天室系统项目设计书.docx

上传人:b****9 文档编号:25584858 上传时间:2023-06-10 格式:DOCX 页数:29 大小:22.67KB
下载 相关 举报
Java聊天室系统项目设计书.docx_第1页
第1页 / 共29页
Java聊天室系统项目设计书.docx_第2页
第2页 / 共29页
Java聊天室系统项目设计书.docx_第3页
第3页 / 共29页
Java聊天室系统项目设计书.docx_第4页
第4页 / 共29页
Java聊天室系统项目设计书.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

Java聊天室系统项目设计书.docx

《Java聊天室系统项目设计书.docx》由会员分享,可在线阅读,更多相关《Java聊天室系统项目设计书.docx(29页珍藏版)》请在冰豆网上搜索。

Java聊天室系统项目设计书.docx

Java聊天室系统项目设计书

Java聊天室系统项目设计书

第一部分项目概况

1.项目说明

项目名称:

JAVA聊天室系统。

客户:

一般大众。

2、项目背景

NIIT的课程重在对实际动手能力的培养。

通过一段时间JAVA课程的学习,需要对所学的知识作一个综合的运用。

由于JAVA强大的网络编程能力,需要写一个简单的聊天室程序的项目,主要能实现在网络上的多线程间的通讯。

项目的目的在于巩固前段时间所学的知识以及锻炼小组成员之间团队合作的能力。

第二部分项目计划

1.项目目标

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

〔2,登陆后在用户列表框显示所有的用户。

〔3,允许用户进行在线的公聊和私聊。

〔4,把客户端的界面放在Applet上面,在聊天时可以对面版进行一些简单设置。

2.项目围

本软件适用于一般大众。

3.项目策略

通过可视化编程的JAVA程序的方式进行实现。

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

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

4.项目开发周期

第一天

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

第二天

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

第三天~第五天

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

第六天

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

5.每项任务所需技能

服务端与客户端的连接:

网络编程中的协议及数据流,异常处理,多线程。

程序界面设计:

GUI图形用户组件,布局管理,事件监听。

代码实现:

JAVA与数据库编程。

6.所采用的工具

开发工具:

MicrosoftJAVALE〔jdk1.4+JCreatorLE

开发环境:

windowsXP+个人电脑

第三部分项目设计

1.需求分析

随着经济的日益发展,网络的观念深入人心。

人们越来越需要通过网络高效简捷的交流,聊天室就是其中的一个工具。

2.软件主要功能

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

〔2,登陆后在用户列表框显示所有的用户。

〔3,允许用户进行在线的公聊和私聊。

〔4,把客户端的界面放在Applet上面,在聊天时可以对面版进行一些简单设置。

程序中要用到的类

1、客户端

2、服务器端

3概要设计

聊天室的程序至少需要建立两个程序:

一个服务器端,负责监听客户端发送过来的请求,一但监听到客户端的请求,先判断它是登陆信息还是聊天信息,若是登陆信息,那么允许客户端登陆,并把登陆的客户名返回给客户端显示在用户在线列表框。

如果是聊天信息,则把它群发给每个客户端。

服务器端不对聊天的信息作公聊和私聊的判断,由客户端收到消息后判断是否是发给自己的信息,以及是否显示在聊天面板上面。

客户端的程序需要运用图形化编程做出一个界面。

我们小组所做的界面是在聊天室界面的左上方为一个在线用户列表框,列表框的下面有用户登陆的文本域和密码输入框。

右边是聊天面板,聊天面板的下面是输入聊天信息的文本域,以及发送和清空按纽。

当输入用户名和密码登陆后,在用户列表框会显示当前在线的所有的用户并且在聊天面板上显示某用户进入了聊天室。

然后屏蔽掉登陆和密码输入框。

在信息输入框中输入聊天信息后点击发送,在所有客户端的聊天面板上会看到你发送的聊天信息。

在用户列表框选择某个用户,勾选私聊复选框然后发送消息,这时只有被你选择的客户端能看到你发送的信息。

4详细设计

服务器端代码:

//聊天室服务器端程序

importjava.io.*;

import.*;

importjava.util.*;

publicclassHomeworkimplementsRunnable{

Threadthread;

staticVectorvector;

ServerSocketserver;

publicHomework<>{

try{

server=newServerSocket<8000>;

System.out.println<"服务器已启动">;

}catch{

}

vector=newVector<100>;

thread=newThread;

thread.start<>;

}

publicvoidrun<>{

try{

while{

Socketsocket=server.accept<>;

PThreadpt=newPThread;

pt.setPriority;

pt.start<>;

vector.addElement;

}

}catch{

}

}

publicstaticvoidmain{

newHomework<>;

}

synchronizedpublicvoidbroadcast

{

PThreadcg;

Stringuser;

if>

{

for;i++>

{

cg=vector.elementAt;

try{

cg.dout.writeUTF

">;

}catch{

}

}

}elseif>

{

System.out.println>;

for;i++>

{

cg=vector.elementAt;

try{

cg.dout.writeUTF;

}catch{

}

}

}elseif>

{

System.out.println>;

for;i++>{

cg=vector.elementAt;

try{

cg.dout.writeUTF;

}catch{

}

}

}

}//

}

classPThreadextendsThread{

protectedSocketsocket;

protectedHomeworkhome;

protectedDataInputStreamdin;

protectedDataOutputStreamdout;

Stringmessage,message1;

PThreadcg;

publicPThread{

this.socket=socket;

this.home=home;

try{

din=newDataInputStream>;

dout=newDataOutputStream>;

}catch{

}

}

publicvoidrun<>{

try{

while{

message1=din.readUTF<>;

if>

{

message=message1.substring<5,message1.indexOf<"">+1>;

if{

for;i++>

{

cg=home.vector.elementAt;

dout.writeUTF<"list"+cg.message>;

}

home.broadcast<"login"+message>;

System.out.println;

}

}if>

{

message=message1.substring<6,message1.indexOf<"]">>;

if{

for;i++>{

cg=home.vector.elementAt;

//dout.writeUTF<"public"+message>;

}

home.broadcast<"public"+message>;

}

}if>

{

message=message1.substring<7,message1.indexOf<"]">>;

if{

for;i++>{

cg=home.vector.elementAt;

//dout.writeUTF<"private"+message>;

}

home.broadcast<"private"+message>;

}

}

}

}catch{

}

}

}

客户端代码:

//聊天室客户端程序

importjava.awt.*;

importjava.applet.Applet;

importjava.applet.AudioClip;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

importjava.util.Date;

import.*;

publicclassHomework_client1extendsAppletimplementsRunnable

{

ListUesrNameList;//显示用户名的列表;

TextAreaText_Area;//显示用户发言的文本域;

JLabelUserName;//显示"用户";

JLabelUName;//"用户"面板;

JLabelPassWord;//显示"登陆口令";

TextFieldPWord;//"登陆口令"文本框;

TextFieldUN;//"用户"文本框;

JTextFieldforField;//"说"文本框;

JTextFieldSayfield;//"发送"文本框;

JLabelVslabel;//"对"面板;

JLabelSaylabel;//"说"面板;

JLabelFrontlabel;//"前景色"面板;

JLabelBacklabel;//"背景色"面板;

JLabelStylelabel;//"字体"面板;

JLabelWordlabel;//"字号"面板;

JButtonEnterbutton;//"进入"按纽;

JButtonQuitbutton;//"退出"按纽;

JButtonSendbutton;//"发送"按纽;

JButtonCanecelbutton;//"刷新"按纽;

CheckboxQuient;//"私聊"复选框;

ChoiceC_style;//"字体"选择框;

ChoiceC_word;//"字号"选择框;

ChoiceC_front;//"前景色"选择框;

ChoiceC_back;//"背景色"选择框;

ChoiceC_music;//"音乐"选择框;

AudioClipSound;//音乐播放器;

JMenuItemPlay;//"play";

JMenuItemLoop;//"loop";

JMenuItemStop;//"stop";

JMenuStart;//"播放器"菜单;

JMenuBarSoundBar;//加载播放菜单;

Socketsocket;//客户端;

ThreadCthread=newThread;

DataInputStreamdin;//数据输入流;

DataOutputStreamdout;//数据输出流;

/*面板的编写*/

publicvoidinit<>{

/*定义左边的组件<用户名、用户列表、登陆按纽等>*/

/*将左边组件进行网格包布局,并添加到面板*/

//ThreadCthread;//创建一个和客户端进行通信的线程;

UesrNameList=newList<19>;

UesrNameList.setBackground;

UesrNameList.setForeground>;

UesrNameList.setFont>;

UserName=newJLabel<"用户姓名">;

UserName.setFont>;

UName=newJLabel<"姓名">;

UN=newTextField<11>;

UN.setFont>;

PassWord=newJLabel<"密码">;

PWord=newTextField<11>;

PWord.setEchoChar<'*'>;

Enterbutton=newJButton<"进入">;

Enterbutton.setBackground>;

Enterbutton.setToolTipText<"点此连接服务器">;

Quitbutton=newJButton<"退出">;

Quitbutton.setToolTipText<"点此离开聊天室">;

Quitbutton.setEnabled;

Quitbutton.setBackground>;

C_music=newChoice<>;//初始化音乐控件;

C_music.add<"遇见.mid">;

C_music.add<"十年.mid">;

SoundBar=newJMenuBar<>;

SoundBar.setBackground>;

Start=newJMenu<"音乐">;

Start.setBackground>;

Play=newJMenuItem<"播放">;

Loop=newJMenuItem<"循环">;

Stop=newJMenuItem<"停止">;

Start.add;

Start.add;

Start.add;

SoundBar.add;

Sound=getAudioClip,"遇见.mid">;

JPanelpanel_0=newJPanel<>;

panel_0.setBackground>;

GridBagLayoutgb_0=newGridBagLayout<>;

GridBagConstraintsgc_0=newGridBagConstraints<>;

gc_0.fill=GridBagConstraints.NONE;

gc_0.weightx=0.0;

gc_0.weighty=0.0;

gb_0.setConstraints;

gb_0.setConstraints;

panel_0.setLayout;

panel_0.add;

panel_0.add;

JPanelpanel_1=newJPanel<>;

panel_1.setBackground>;

panel_1.add;

panel_1.add;

JPanelpanel_2=newJPanel<>;

panel_2.setBackground>;

panel_2.add;

panel_2.add;

JPanelpanel_3=newJPanel<>;

panel_3.setBackground>;

panel_3.add;

panel_3.add;

JPanelNO1panel=newJPanel<>;

NO1panel.setBackground>;

GridBagLayoutgb_1=newGridBagLayout<>;

GridBagConstraintsgc_1=newGridBagConstraints<>;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=0;

gb_1.setConstraints;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=1;

gb_1.setConstraints;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=2;

gb_1.setConstraints;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=3;

gb_1.setConstraints;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=4;

gb_1.setConstraints;

gc_1.anchor=GridBagConstraints.NORTHWEST;

gc_1.gridx=0;

gc_1.gridy=5;

gb_1.setConstraints;

NO1panel.setLayout;

NO1panel.add;

NO1panel.add;

NO1panel.add;

NO1panel.add;

NO1panel.add;

NO1panel.add;

/*定义右下方中间的组件*/

Quient=newCheckbox<"私聊",false>;

Quient.setBackground>;

Quient.setSize<1,1>;

Vslabel=newJLabel<"对">;

Vslabel.setSize<1,1>;

forField=newJTextField<7>;

forField.setEditable;

Saylabel=newJLabel<"说">;

Saylabel.setSize<1,1>;

Sayfield=newJTextField<28>;

Sayfield.setFont>;

Sayfield.setEditable;

Sendbutton=newJButton<"发送">;

Sendbutton.setEnabled;

Sendbutton.setBackground>;

/*定义右下方下层组件*/

Stylelabel=newJLabel<"字体">;

Stylelabel.setSize<1,1>;

Wordlabel=newJLabel<"表情">;

Wordlabel.setSize<1,1>;

Frontlabel=newJLabel<"前景色">;

Frontlabel.setSize<1,1>;

Backlabel=newJLabel<"背景色">;

Backlabel.setSize<1,1>;

Canecelbutton=newJButton<"刷新">;

Canecelbutton.setBackground>;

C_style=newChoice<>;//字体选择框

C_style.addItem<"BLOD">;

C_style.addItem<"ITALIC">;

C_style.addItem<"PLAIN">;

C_word=newChoice<>;//表情选择框

C_word.setSize<2,1>;

C_word.addItem<"无">;

C_word.add

展开阅读全文
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1