java课程设计Word文件下载.docx

上传人:b****3 文档编号:16712145 上传时间:2022-11-25 格式:DOCX 页数:28 大小:391.67KB
下载 相关 举报
java课程设计Word文件下载.docx_第1页
第1页 / 共28页
java课程设计Word文件下载.docx_第2页
第2页 / 共28页
java课程设计Word文件下载.docx_第3页
第3页 / 共28页
java课程设计Word文件下载.docx_第4页
第4页 / 共28页
java课程设计Word文件下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

java课程设计Word文件下载.docx

《java课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《java课程设计Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。

java课程设计Word文件下载.docx

2.登录界面

显示登录的端口号,ip地址,昵称,通过按动登录按钮进入客户端界面,或取消登录操作。

3.客户端功能描述;

显示登录昵称,显示聊天记录,更改背景颜色,设置字体颜色,放送信息,关闭聊天窗口。

四.详细设计

程序中引入的包:

import.*;

importjava.io.*;

importjava.util.*;

importjava.awt.event.*;

importjava.awt.*;

importjavax.swing.*;

服务器端代码中用户自定义的类:

类名;

server

作用:

服务器的启动

继承的类:

JFrame,构造服务器界面。

定义的对象:

TextArea文本域

java.awt.List在线客户列表

ServerSocket服务器

Socket客户端

主要的成员方法:

voidinit()构造服务器端的界面

publicvoidactionPerformed(ActionEvente)按钮监听器

publicvoidkeyPressed(KeyEvente)键盘监听器

类名:

start

作用:

启动服务器的线程

继承的类名:

thread

主要的成员方法:

publicvoidrun()启动服务器的线程

类名;

SgService

publicvoidrun()处理单个客户的线程

(2)用户登录相关的类:

login

构造登录界面

JFrame

实现的接口:

ActionListener

构造方法;

publicLogin()

publicvoidactionPerformed(ActionEvente)实现"

登录"

和"

取消"

按钮的监听器

LoginStart

Thread

主要的方法;

publicvoidrun()

作用:

如果登录成功,则弹出客户端聊天窗口,如果登录失败,则打印出"

登录失

败"

以告知客户

(3)客户端相关的类

Client

publicClient(PrintStreamout,BufferedReaderin,Stringname)

publicvoidreceive()接受服务端发来的信息

1.功能函数的调用关系图

2.各功能函数的数据流程图

互相通信

3.重点设计及编码

//聊天室服务器

classServerextendsJFrame{

privateTextAreamsgA=newTextArea();

//服务器用来输入的文本域

privateTextAreaarea=newTextArea();

//服务器显示消息的文本域

privateTextFieldportT=newTextField("

8888"

);

privatejava.awt.Listlist=newjava.awt.List();

//在线客户列表

privateServerSocketserver;

//服务器

privateSocketclient;

//客户端

privateMap<

String,Socket>

container=newHashMap<

();

//HashMap

voidinit(){

//设置几个面板//

Panelp1=newPanel();

Panelp2=newPanel();

Panelp3=newPanel();

Panelp4=newPanel();

Panelp5=newPanel();

Panelp6=newPanel();

Panelp7=newPanel();

Panelp8=newPanel();

Panelp9=newPanel();

Panelp10=newPanel();

//设置两个主要的文本框

Labellb1=newLabel("

服务器界面"

lb1.setBackground(newColor(250,120,150));

Labellb2=newLabel("

port"

BorderLayoutborder1=newBorderLayout();

p1.setLayout(border1);

p1.add(BorderLayout.CENTER,area);

BorderLayoutborder2=newBorderLayout();

p5.setLayout(border2);

p5.add(BorderLayout.NORTH,p3);

p5.add(BorderLayout.CENTER,msgA);

BorderLayoutborder3=newBorderLayout();

p7.setLayout(border3);

p7.add(BorderLayout.CENTER,p1);

p7.add(BorderLayout.SOUTH,p5);

p7.setBackground(newColor(250,150,200));

JButtonstartButton=newJButton("

启动服务"

JButtonsendButton=newJButton("

发送"

JButtonflushButton=newJButton("

刷新列表"

FlowLayoutfl=newFlowLayout(FlowLayout.LEFT);

p8.setLayout(fl);

p8.add(lb2);

p8.add(portT);

p8.add(startButton);

p8.add(sendButton);

p8.add(flushButton);

p8.setBackground(newColor(250,120,150));

BorderLayoutborder4=newBorderLayout();

p9.setLayout(border4);

p9.add(BorderLayout.CENTER,p7);

p9.add(BorderLayout.SOUTH,p8);

p10.setLayout(newBorderLayout());

Labellb3=newLabel("

在线用户"

lb3.setBackground(newColor(250,120,150));

p10.add(lb3,BorderLayout.NORTH);

p10.add(list,BorderLayout.CENTER);

area.setEditable(false);

BorderLayoutborder=newBorderLayout();

this.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEventarg0){

System.exit(0);

}

});

this.setLayout(border);

this.add(BorderLayout.NORTH,lb1);

this.add(BorderLayout.CENTER,p9);

this.add(BorderLayout.EAST,p10);

this.setTitle("

聊天服务器"

this.setBounds(100,100,600,550);

this.setVisible(true);

//"

按钮监听器

startButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Threadt=newStart();

t.start();

//启动按钮监听器----end

//发送按钮监听器

sendButton.addActionListener(newActionListener(){

Stringmsg=msgA.getText();

if(msg!

=null&

&

msg!

="

"

){//如果消息不为空

Calendarca=newGregorianCalendar();

inthh=ca.get(Calendar.HOUR_OF_DAY);

intmm=ca.get(Calendar.MINUTE);

intss=ca.get(Calendar.SECOND);

Stringtime=newString(hh+"

:

+mm+"

+ss+"

"

broadcast(time+"

[系统消息]:

+msg);

//那么广播这条系统消息

area.append(time+"

+msg+"

\n"

msgA.setText("

//end

//刷新按钮监听器

flushButton.addActionListener(newActionListener(){

if(list!

=null){

list.removeAll();

//清空在线用户列表,以便刷新

Set<

Map.Entry<

>

mySet=container.entrySet();

for(Iterator<

it=mySet.iterator();

it.hasNext();

){//刷新列表

Map.Entry<

me=it.next();

StringaClientName=me.getKey();

SocketaClient=me.getValue();

StringaClientAddress=aClient.getInetAddress().getHostAddress();

list.add(aClientName+"

----"

+aClientAddress);

}//endoffor

}//endofactionPerformed

msgA.addKeyListener(newKeyAdapter(){//键盘监听器---按下Enter发送信息

publicvoidkeyPressed(KeyEvente){

intvalue=e.getKeyCode();

if(value==KeyEvent.VK_ENTER){

}

}//endofinit()

classStartextendsThread//启动服务器的线程

{

publicvoidrun(){

try{

if(server!

!

server.isClosed()){

area.append("

警告!

服务器已在启动中!

else{

server=newServerSocket(Integer.parseInt(portT.getText()));

//启动服务器

area.append((newDate()).toString()+'

\n'

+"

[恭喜!

^_^]"

+"

服务器启动成功!

+"

\n\n"

while(true){

client=server.accept();

ThreadsgS=newSgService(client);

//为每位登录的客户创建一个线程

sgS.start();

//启动客户线程

catch(Exceptione){

System.out.println("

cuowu1"

e.printStackTrace();

}//endofrun()

}//endofStart

//处理单个客户的线程

classSgServiceextendsThread//SgService---begin

privateSocketclient=null;

//客户套接字

privateBufferedReaderbr=null;

//输入流

privatePrintStreamps=null;

privateintcounter=0;

//记录是第几次接受用户的信息

privateintmark=0;

//记录用户说不文明用语的次数

privateStringname=null;

SgService(Socketclient){//构造方法

this.client=client;

publicvoidrun(){//run()----begin

br=newBufferedReader(newInputStreamReader(client.getInputStream()));

ps=newPrintStream(client.getOutputStream());

Stringmsg=null;

while((msg=br.readLine())!

=null){//无限循环,意味着可以和客户进行无限次交互

if(counter==0){

name=msg;

container.put(name,client);

list.add(name+"

+client.getInetAddress().getHostAddress());

Stringtime=hh+"

;

broadcast(time+name+"

上线了!

area.append(time+name+"

counter++;

else{

if(msg.equals("

你是个笨蛋"

)){

mark=mark+1;

if(mark<

3){

singleCom(time+"

警告!

请注意文明用语!

client);

//在服务器端显示这个用户说不文明语言的次数

+name+"

第"

+mark+"

次使用了不文明用语,特此警告!

else{//如果客户第三次说不文明的话,系统就把他踢出聊天室

if(mark==3){

singleCom(time+"

由于您多次使用了不文明用语,经警告无效,现已被踢出聊天室!

//告诉他本人

removeClient(name,client);

//从系统列表中删除这个人的信息

//并向所有人广播这一消息

+name+"

由于多次使用了不文明用语,经警告无效,现已被踢出聊天室!

area.append(time+name+"

说:

+msg+"

//将客户发送的消息显示在服务器的窗口中

broadcast(time+name+"

+msg+"

//同时向每个在线客户广播这则消息

}//endofwhile

catch(Exceptionex){

下线了!

list.remove(name+"

container.remove(name);

}//run()---end

}//SgService-----end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

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

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