Java聊天室系统项目设计书Word文档格式.docx
- 文档编号:19101626
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:32
- 大小:23.76KB
Java聊天室系统项目设计书Word文档格式.docx
《Java聊天室系统项目设计书Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java聊天室系统项目设计书Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
代码实现:
JAVA与数据库编程。
6.所采用的工具
开发工具:
MicrosoftJAVALE(jdk1.4)+JCreatorLE
开发环境:
windowsXP+个人电脑
第三部分项目设计
1.需求分析
随着经济的日益发展,网络的观念深入人心。
人们越来越需要通过网络高效简捷的交流,聊天室就是其中的一个工具。
2.软件主要功能
程序中要用到的类
1、客户端
2、服务器端
3概要设计
聊天室的程序至少需要建立两个程序:
一个服务器端,负责监听客户端发送过来的请求,一但监听到客户端的请求,先判断它是登陆信息还是聊天信息,若是登陆信息,那么允许客户端登陆,并把登陆的客户名返回给客户端显示在用户在线列表框内。
如果是聊天信息,则把它群发给每个客户端。
服务器端不对聊天的信息作公聊和私聊的判断,由客户端收到消息后判断是否是发给自己的信息,以及是否显示在聊天面板上面。
客户端的程序需要运用图形化编程做出一个界面。
我们小组所做的界面是在聊天室界面的左上方为一个在线用户列表框,列表框的下面有用户登陆的文本域和密码输入框。
右边是聊天面板,聊天面板的下面是输入聊天信息的文本域,以及发送和清空按纽。
当输入用户名和密码登陆后,在用户列表框内会显示当前在线的所有的用户姓名并且在聊天面板上显示某用户进入了聊天室。
然后屏蔽掉登陆和密码输入框。
在信息输入框中输入聊天信息后点击发送,在所有客户端的聊天面板上会看到你发送的聊天信息。
在用户列表框选择某个用户,勾选私聊复选框然后发送消息,这时只有被你选择的客户端能看到你发送的信息。
4详细设计
服务器端代码:
//聊天室服务器端程序
importjava.io.*;
import.*;
importjava.util.*;
publicclassHomeworkimplementsRunnable{
Threadthread;
staticVectorvector;
ServerSocketserver;
publicHomework(){
try{
server=newServerSocket(8000);
System.out.println("
服务器已启动"
);
}catch(IOExceptione){
}
vector=newVector(100);
thread=newThread(this);
thread.start();
}
publicvoidrun(){
while(true){
Socketsocket=server.accept();
PThreadpt=newPThread(this,socket);
pt.setPriority(Thread.MAX_PRIORITY);
pt.start();
vector.addElement(pt);
}
}catch(IOExceptionr){
publicstaticvoidmain(Stringargs[]){
newHomework();
synchronizedpublicvoidbroadcast(Stringname)
{
PThreadcg;
Stringuser;
if(name.startsWith("
login"
))
{
for(inti=0;
i<
vector.size();
i++)
cg=(PThread)vector.elementAt(i);
try{
cg.dout.writeUTF(name+"
高兴地走进了聊天室.ok!
"
}catch(IOExceptiont){
}elseif(name.startsWith("
public"
System.out.println(name.substring(6));
for(inti=0;
cg.dout.writeUTF(name);
}catch(IOExceptiona){
private"
System.out.println(name.substring(7));
i++){
}catch(IOExceptionf){
}//
}
classPThreadextendsThread{
protectedSocketsocket;
protectedHomeworkhome;
protectedDataInputStreamdin;
protectedDataOutputStreamdout;
Stringmessage,message1;
PThreadcg;
publicPThread(Homeworkhome,Socketsocket){
this.socket=socket;
this.home=home;
din=newDataInputStream(socket.getInputStream());
dout=newDataOutputStream(socket.getOutputStream());
}catch(IOExceptionw){
message1=din.readUTF();
if(message1.startsWith("
{
message=message1.substring(5,message1.indexOf("
"
)+1);
if(true){
for(inti=0;
home.vector.size();
{
cg=(PThread)home.vector.elementAt(i);
dout.writeUTF("
list"
+cg.message);
}
home.broadcast("
+message);
System.out.println(message+"
登陆了"
}
}if(message1.startsWith("
{
message=message1.substring(6,message1.indexOf("
]"
));
if(true){
for(inti=0;
cg=(PThread)home.vector.elementAt(i);
//dout.writeUTF("
home.broadcast("
}
message=message1.substring(7,message1.indexOf("
客户端代码:
//聊天室客户端程序
importjava.awt.*;
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.Date;
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(this);
DataInputStreamdin;
//数据输入流;
DataOutputStreamdout;
//数据输出流;
/*面板的编写*/
publicvoidinit(){
/*定义左边的组件(用户名、用户列表、登陆按纽等)*/
/*将左边组件进行网格包布局,并添加到面板*/
//ThreadCthread;
//创建一个和客户端进行通信的线程;
UesrNameList=newList(19);
UesrNameList.setBackground(Color.WHITE);
UesrNameList.setForeground(newColor(255,0,255));
UesrNameList.setFont(newFont("
cg"
Font.BOLD,14));
UserName=newJLabel("
用户姓名"
UserName.setFont(newFont("
Font.ITALIC,14));
UName=newJLabel("
姓名"
UN=newTextField(11);
UN.setFont(newFont("
Font.BOLD,13));
PassWord=newJLabel("
密码"
PWord=newTextField(11);
PWord.setEchoChar('
*'
Enterbutton=newJButton("
Enterbutton.setBackground(newColor(136,193,255));
Enterbutton.setToolTipText("
点此连接服务器"
Quitbutton=newJButton("
Quitbutton.setToolTipText("
点此离开聊天室"
Quitbutton.setEnabled(false);
Quitbutton.setBackground(newColor(136,193,255));
C_music=newChoice();
//初始化音乐控件;
C_music.add("
遇见.mid"
十年.mid"
SoundBar=newJMenuBar();
SoundBar.setBackground(newColor(136,193,255));
Start=newJMenu("
Start.setBackground(newColor(136,193,255));
Play=newJMenuItem("
播放"
Loop=newJMenuItem("
循环"
Stop=newJMenuItem("
停止"
Start.add(Play);
Start.add(Loop);
Start.add(Stop);
SoundBar.add(Start);
Sound=getAudioClip(getCodeBase(),"
JPanelpanel_0=newJPanel();
panel_0.setBackground(newColor(136,193,255));
GridBagLayoutgb_0=newGridBagLayout();
GridBagConstraintsgc_0=newGridBagConstraints();
gc_0.fill=GridBagConstraints.NONE;
gc_0.weightx=0.0;
gc_0.weighty=0.0;
gb_0.setConstraints(C_music,gc_0);
gb_0.setConstraints(SoundBar,gc_0);
panel_0.setLayout(gb_0);
panel_0.add(C_music);
panel_0.add(SoundBar);
JPanelpanel_1=newJPanel();
panel_1.setBackground(newColor(136,193,255));
panel_1.add(UName);
panel_1.add(UN);
JPanelpanel_2=newJPanel();
panel_2.setBackground(newColor(136,193,255));
panel_2.add(PassWord);
panel_2.add(PWord);
JPanelpanel_3=newJPanel();
panel_3.setBackground(newColor(136,193,255));
panel_3.add(Enterbutton);
panel_3.add(Quitbutton);
JPanelNO1panel=newJPanel();
NO1panel.setBackground(newColor(136,193,255));
GridBagLayoutgb_1=newGridBagLayout();
GridBagConstraintsgc_1=newGridBagConstraints();
gc_1.anchor=GridBagConstraints.NORTHWEST;
gc_1.gridx=0;
gc_1.gridy=0;
gb_1.setConstraints(panel_0,gc_1);
gc_1.gridy=1;
gb_1.setConstraints(UserName,gc_1);
gc_1.gridy=2;
gb_1.setConstraints(UesrNameList,gc_1);
gc_1.gridy=3;
gb_1.setConstraints(panel_1,gc_1);
gc_1.gridy=4;
gb_1.setConstraints(panel_2,gc_1);
gc_1.gridy=5;
gb_1.setConstraints(panel_3,gc_1);
NO1panel.setLayout(gb_1);
NO1panel.add(panel_0);
NO1panel.add(UserName);
NO1panel.add(UesrNameList);
NO1panel.add(panel_1);
NO1panel.add(panel_2);
NO1panel.add(panel_3);
/*定义右下方中间的组件*/
Quient=newCheckbox("
false);
Quient.setBackground(newColor(136,193,255));
Quient.setSize(1,1);
Vslabel=newJLabel("
Vslabel.setSize(1,1);
forField=newJTextField(7);
forField.setEditable(false);
Saylabel=newJLabel("
Saylabel.setSize(1,1);
Sayfield=newJTextField(28);
Sayfield.setFont(newFont("
Font.ROMAN_BASELINE,14));
Sayfield.setEditable(false);
Sendbutton=newJButton("
Sendbutton.setEnabled(false);
Sendbutton.setBackground(newColor(136,193,255));
/*定义右下方下层组件*/
Stylelabel=newJLabel("
Stylelabel.setSize(1,1);
Wordlabel=newJLabel("
表情"
Wordlabel.setSize(1,1);
Frontlabel=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 聊天室 系统 项目 设计