最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

JAVA实训报告--聊天室

日期:2020-03-14  类别:最新范文  编辑:学科吧  【下载本文Word版

  JAVA实训报告--聊天室的相关参考范文,JAVA实训报告--聊天室本文关键词:实训,聊天室,报告,JAVAJAVA实训报告--聊天室本文简介:《Java实训》设计报告《Java实训》设计报告电子信息工程学院专业:软件技术班级:1班实训:聊天室项......

JAVA实训报告--聊天室 本文关键词:实训,聊天室,报告,JAVA

JAVA实训报告--聊天室 本文简介:《Java实训》设计报告《Java实训》设计报告电子信息工程学院专业:软件技术班级:1班实训:聊天室项目简介项目名称聊天室项目功能运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包以及java.

JAVA实训报告--聊天室 本文内容:

《Java实训》设计报告

《Java实训》设计报告

电子信息工程学院

专业:

软件技术

班级:

1班

实训:聊天室

项目简介

项目名称

聊天室

项目功能

运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序实现了聊天室的基本功能,其中有:

1、启动服务器。

2、进入客户端界面。

3、登录聊天室。

4、发送信息(实现按回车键发送消息)。

5、关闭服务器

项目目的

1.能在程序中熟练应用Java

多线程技术

2.熟悉Java

C/S

程序的结构和工作原理

3.能开发客户端应用程序

4.会编写服务器端多线程应用程序。

5.熟悉Java

数据库连接方法,

能在程序中读写数据库

主要技术

Java编程语言、javaSwing组件

开发环境

jdk1.6.0_10

使用组件构建的C/S应用程序

各项功能的组织合理搭配应用

图标控制功能实现

构建基于C/S架构的应用程序

Swing组件应用

事件监听的应用

方法的编写

Swing组件的应用

事件监听器的使用

异常处理

方法简便的选择

系统总体设计

1、设计思路

聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:

在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

1.首先通过继承JFrame类构造服务器界面。

2.设计客户端程序使其能够完成正常的通信功能。

3.设计监听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。

2、各个模块详细的功能描述。

1、服务器端功能描述:

启动服务器端。

2、客户端功能描述:

启动客户端;

显示登录昵称:

显示聊天记录:

发送信息;

退出聊天室。

系统详细设计

1、界面设计

主要由类ChatRoom来实现,界面实际总体如下:输入昵称的文本框,输入IP地址的文本框以及输入端口的文本框;连接的按钮;退出按钮;接受消息的文本域;发送消息文本框;发送按钮。

项目设计

在设计聊天室时,编写3个Java源文件:Client.java、Frame1.java、ServerThread.java;

分别放在两个包中,一个是client,放Client.java、Frame1.java;一个是server,放ServerThread.java;聊天室除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。

下面是Java源文件的总体设计。

Client(主类)客户端

Client类负责创建聊天室客户端的主窗口,该类含有main方法,计算器从该类开始执行。

ServerThread(主类)服务器

ServerThread类负责创建聊天室服务器的主窗口,该类含有main方法,计算器从该类开始执行。

二详细代码设计

聊天室程序设计详细代码如下:

客户端代码:

package

client;

import

javax.swing.UIManager;

public

class

Client

{

public

Client(){

Frame1

frame=new

Frame1();

frame.setVisible(true);

frame.validate();

}

public

static

void

main(String[]

args){

try{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}catch(Exception

e){

e.printStackTrace();

}

new

Client();

}

}

package

client;

import

java.awt.*;

import

java.awt.event.*;

import

javax.swing.*;

import

java.net.*;

import

java.io.*;

public

class

Frame1

extends

JFrame

implements

Runnable{

private

JPanel

contentPane;

private

TextArea

textArea1=new

TextArea();

private

Label

label1=new

Label();

private

JTextField

textField1=new

JTextField();

private

JButton

button1=new

JButton();

private

JButton

button2=new

JButton();

private

JButton

button3=new

JButton();

Socket

socket=null;

BufferedReader

in=null;

PrintWriter

out=null;

JTextField

server=new

JTextField();

JLabel

jLabel1=new

JLabel();

JLabel

jLabel2=new

JLabel();

JTextField

port=new

JTextField();

JScrollPane

jScrollPane1=new

JScrollPane();

JList

jList1=new

JList();

JLabel

jLabel3=new

JLabel();

DefaultListModel

l1=new

DefaultListModel();

public

Frame1(){

try{

init();

}catch(Exception

e){

e.printStackTrace();

}

}

private

void

init()

throws

Exception{

server.setText(InetAddress.getLocalHost().getHostAddress());

server.setBounds(new

Rectangle(69,252,74,22));

contentPane=(JPanel)this.getContentPane();

textArea1.setEditable(false);

textArea1.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,14));

textArea1.setBounds(new

Rectangle(11,9,383,199));

textArea1.setBackground(new

Color(66,00,233));

textArea1.setForeground(new

Color(255,00,00));

contentPane.setLayout(null);

this.setSize(new

Dimension(506,314));

this.setTitle(“客户端“);

label1.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

label1.setForeground(new

Color(110,110,250));

label1.setText(“消息:“);

label1.setBounds(new

Rectangle(26,213,32,27));

button1.setActionCommand(“发送“);

button1.setBounds(new

Rectangle(334,216,62,23));

button1.setEnabled(false);

button1.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

button1.setText(“发送“);

button1.setForeground(new

Color(110,110,250));

button1.addActionListener(new

java.awt.event.ActionListener(){

public

void

actionPered(ActionEvent

e){

button1_actionPered(e);

}

});

button2.setBounds(new

Rectangle(266,251,58,24));

button2.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

button2.setText(“连接“);

button2.setForeground(new

Color(110,110,250));

button2.addActionListener(new

java.awt.event.ActionListener(){

public

void

actionPered(ActionEvent

e){

button2_actionPered(e);

}

});

button3.setBounds(new

Rectangle(333,251,62,22));

button3.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

button3.setText(“退出“);

button3.setForeground(new

Color(110,110,250));

button3.addActionListener(new

java.awt.event.ActionListener(){

public

void

actionPered(ActionEvent

e){

button3_actionPered(e);

}

});

jLabel1.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

jLabel1.setToolTipText(““);

jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);

jLabel1.setHorizontalTextPosition(SwingConstants.RIGHT);

jLabel1.setText(“服务器:“);

jLabel1.setForeground(new

Color(110,110,250));

jLabel1.setBounds(new

Rectangle(11,254,58,20));

jLabel2.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

jLabel2.setToolTipText(““);

jLabel2.setHorizontalAlignment(SwingConstants.RIGHT);

jLabel2.setHorizontalTextPosition(SwingConstants.RIGHT);

jLabel2.setText(“端口:“);

jLabel2.setForeground(new

Color(110,110,250));

jLabel2.setBounds(new

Rectangle(172,253,27,18));

port.setText(“8000“);

port.setBounds(new

Rectangle(202,251,40,22));

jList1.setFont(new

java.awt.Font(“Dialog“,Font.PLAIN,12));

jLabel3.setBounds(new

Rectangle(406,254,91,21));

jLabel3.setForeground(new

Color(110,110,250));

textField1.setBounds(new

Rectangle(58,215,271,24));

jScrollPane1.setBounds(new

Rectangle(404,14,94,226));

jScrollPane1.getViewport().add(jList1);

contentPane.add(button3,null);

contentPane.add(button2,null);

contentPane.add(button1,null);

contentPane.add(server,null);

contentPane.add(jLabel1,null);

contentPane.add(textField1,null);

contentPane.add(textArea1,null);

contentPane.add(jLabel2,null);

contentPane.add(port,null);

contentPane.add(label1,null);

contentPane.add(jScrollPane1,null);

contentPane.add(jLabel3,null);

jList1.setModel(l1);

}

void

button1_actionPered(ActionEvent

e){

out.println(jLabel3.getText()+“对“+l1.getElementAt(jList1.getSelectedIndex())+“说:“+textField1.getText());

out.();

textField1.setText(““);

}

void

button3_actionPered(ActionEvent

e){

try{

out.println(“大家尽情聊,再见!“);

out.();

}catch(Exception

e2){}

finally{

System.exit(0);

}

}

void

button2_actionPered(ActionEvent

e){

Thread

thread=new

Thread(this);

thread.start();

}

public

void

run(){

try{

socket=new

Socket(server.getText(),Integer.parseInt(port.getText()));

in=new

BufferedReader(new

StreamReader(socket.getStream()));

out=new

PrintWriter(socket.getOutputStream());

button1.setEnabled(true);

receiver

r=new

receiver();

Thread

t=new

Thread(r);

t.start();

textArea1.append(“欢迎加入聊天室/n“);

//

button2.setEnabled(false);

}catch(Exception

e){

textArea1.append(“连接失败!请确认服务器地址并且服务器已启动/n“);

}

}

private

class

receiver

implements

Runnable{

public

void

run(){

String

s1=null;

try{

s1=in.readLine();

while(s1!=null){

if(s1.equals(“Clear

users!“)){

l1.removeAllElements();

l1.addElement(“大家“);

jList1.setSelectedIndex(0);

}else

if(jLabel3.getText().equals(““)){

jLabel3.setText(s1);

}else

if(s1.length()<8

}else

if(!jLabel3.getText().equals(s1)){

textArea1.append(s1+“/n“);

}

s1=in.readLine();

}

in.close();

out.close();

socket.close();

}catch(Exception

e){}

button1.setEnabled(false);

}

}

}

服务器端代码:

package

server;

import

java.net.*;

import

java.io.*;

public

class

ServerThread

implements

Runnable{

ServerSocket

server=null;

BufferedReader

in=null;

PrintWriter

out=null;

InetAddress

myServer=null;

Object

users[]=new

Object[1000];

static

int

userCount=0;

public

ServerThread(){

try{

init();

}catch(Exception

e){

e.printStackTrace();

}

}

private

void

init()

throws

Exception{

Thread

thread=new

Thread(this);

thread.start();

}

public

void

run(){

try{

server=new

ServerSocket(8000);

Socket

socket;

while(true){

socket=server.accept();

if(socket!=null){

users[userCount]=socket;

Receiver

r=new

Receiver(socket,userCount);

Thread

t=new

Thread(r);

t.start();

userCount++;

}

}

}catch(Exception

e){

e.printStackTrace();

}

}

private

class

Receiver

implements

Runnable{

Socket

socket;

int

user;

Receiver(Socket

socket,int

user){

this.socket=socket;

this.user=user;

}

public

void

run(){

BufferedReader

in=null;

PrintWriter

out=null;

String

s1=null;

int

userNo;

try{

out=new

PrintWriter(socket.getOutputStream());

out.println(“user“+user);

out.();

for(int

j=0;j

if(users[j]==null)

continue;

out=new

PrintWriter(((Socket)users[j]).getOutputStream());

out.println(“Clear

users!“);

out.();

for(int

k=0;k

out.println(“user“+k);

out.();

}

}

in=new

BufferedReader(new

StreamReader(socket.getStream()));

s1=in.readLine();

while(!s1.equals(“大家尽情聊,再见!“)){

int

temp=s1.indexOf(“对“);

int

temp1=s1.indexOf(“说“);

String

temps=s1.substring(temp+1,temp1);

if(temps.equals(“大家“)){

for(int

j=0;j

if(users[j]==null)

continue;

out=new

PrintWriter(((Socket)users[j]).getOutputStream());

out.println(s1);

out.();

}

}else{

try{

userNo=Integer.parseInt(temps.substring(4));

out=new

PrintWriter(((Socket)users[userNo]).getOutputStream());

out.println(s1);

out.();

}catch(Exception

e){}

}

s1=in.readLine();

}

System.out.print(“User

go“);

in.close();

out.close();

socket.close();

}catch(Exception

e){}

}

}

public

static

void

main(String[]args){

new

ServerThread();

}

}

运行结果

1、

连接服务器

小结

这次设计经过长期的不懈努力,程序基本满足聊天的需要。完成后的程序实现了用户登陆聊天室、用户在线聊天、用户退出等功能。

程序设计期间,通过询问老师,同学和网上搜索相关解答等多种方式学习到很多课堂上没有的知识,还积累了一定的实践经验,增强了动手能力和解决实际问题的能力。在此之前,对于Java编程技术或网络socket编程知识都只是略知皮毛,缺乏深入的认识,对其工作方式和原理缺乏透彻的认识。在这段时间里,我认真学习了Java语言开发,Applet小程序实现,对编程思想有了进一步的体会,养成了一些良好的编程习惯。程序虽然完成,但是距离优秀仍存在一定差距,用JAVA开发大型项目还有很多我需要去努力学习的知识。希望自己能不断学习和实践,争取以后做得更好。

    以上《JAVA实训报告--聊天室》范文由学科吧精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »学科吧»最新范文»JAVA实训报告--聊天室
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 学科吧 如对《JAVA实训报告--聊天室》有疑问请及时反馈。All Rights Reserved