JAVA实训评测报告聊天室.docx
《JAVA实训评测报告聊天室.docx》由会员分享,可在线阅读,更多相关《JAVA实训评测报告聊天室.docx(16页珍藏版)》请在冰豆网上搜索。
JAVA实训评测报告聊天室
《Java实训》设计报告
电子信息项目学院
专业:
软件技术
班级:
1班
实训:
聊天室
项目简介
项目名称
聊天室
项目功能
运用java程序编写聊天室,实现简单的聊天功能。
它是图形界面,线程,流与文件系统等技术的综合应用。
其界面主要采用了java.awt包,java.swing包以及java.util包等。
程序实现了聊天室的基本功能,其中有:
1、启动服务器。
2、进入客户端界面。
3、登录聊天室。
4、发送信息<实现按回车键发送消息)。
5、关闭服务器
项目目的
1.能在程序中熟练应用Java多线程技术
2.熟悉JavaC/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方法,计算器从该类开始执行。
二详细代码设计
聊天室程序设计详细代码如下:
客户端代码:
packageclient。
importjavax.swing.UIManager。
publicclassClient{
publicClient(>{
Frame1frame=newFrame1(>。
frame.setVisible(true>。
frame.validate(>。
}
publicstaticvoidmain(String[]args>{
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(>>。
}catch(Exceptione>{
e.printStackTrace(>。
}
newClient(>。
}
}
packageclient。
importjava.awt.*。
importjava.awt.event.*。
importjavax.swing.*。
import.*。
importjava.io.*。
publicclassFrame1extendsJFrameimplementsRunnable{
privateJPanelcontentPane。
privateTextAreatextArea1=newTextArea(>。
privateLabellabel1=newLabel(>。
privateJTextFieldtextField1=newJTextField(>。
privateJButtonbutton1=newJButton(>。
privateJButtonbutton2=newJButton(>。
privateJButtonbutton3=newJButton(>。
Socketsocket=null。
BufferedReaderin=null。
PrintWriterout=null。
JTextFieldserver=newJTextField(>。
JLabeljLabel1=newJLabel(>。
JLabeljLabel2=newJLabel(>。
JTextFieldport=newJTextField(>。
JScrollPanejScrollPane1=newJScrollPane(>。
JListjList1=newJList(>。
JLabeljLabel3=newJLabel(>。
DefaultListModell1=newDefaultListModel(>。
publicFrame1(>{
try{
init(>。
}catch(Exceptione>{
e.printStackTrace(>。
}
}
privatevoidinit(>throwsException{
server.setText(InetAddress.getLocalHost(>.getHostAddress(>>。
server.setBounds(newRectangle(69,252,74,22>>。
contentPane=(JPanel>this.getContentPane(>。
textArea1.setEditable(false>。
textArea1.setFont(newjava.awt.Font("Dialog",Font.PLAIN,14>>。
textArea1.setBounds(newRectangle(11,9,383,199>>。
textArea1.setBackground(newColor(66,00,233>>。
textArea1.setForeground(newColor(255,00,00>>。
contentPane.setLayout(null>。
this.setSize(newDimension(506,314>>。
this.setTitle("客户端">。
label1.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12>>。
label1.setForeground(newColor(110,110,250>>。
label1.setText("消息:
">。
label1.setBounds(newRectangle(26,213,32,27>>。
button1.setActionCommand("发送">。
button1.setBounds(newRectangle(334,216,62,23>>。
button1.setEnabled(false>。
button1.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12>>。
button1.setText("发送">。
button1.setForeground(newColor(110,110,250>>。
button1.addActionListener(newjava.awt.event.ActionListener(>{
publicvoidactionPerformed(ActionEvente>{
button1_actionPerformed(e>。
}
}>。
button2.setBounds(newRectangle(266,251,58,24>>。
button2.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12>>。
button2.setText("连接">。
button2.setForeground(newColor(110,110,250>>。
button2.addActionListener(newjava.awt.event.ActionListener(>{
publicvoidactionPerformed(ActionEvente>{
button2_actionPerformed(e>。
}
}>。
button3.setBounds(newRectangle(333,251,62,22>>。
button3.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12>>。
button3.setText("退出">。
button3.setForeground(newColor(110,110,250>>。
button3.addActionListener(newjava.awt.event.ActionListener(>{
publicvoidactionPerformed(ActionEvente>{
button3_actionPerformed(e>。
}
}>。
jLabel1.setFont(newjava.awt.Font("Dialog",Font.PLAIN,12>>。
jLabel1.setToolTipText("">。
jLabel1.setHorizontalAlignment(SwingConstants.RIGHT>。
jLabel1.setHorizontalTextPosition(SwingConstants.RIGHT>。
jLabel1.setText("服务器:
">。
jLabel1.setForeground(newColor(110,110,250>>。
jLab