java聊天室程序
郑州大学
Zhengzhou University
JAVA课程设计
题目: JAVA 小型聊天室程序设计报告
学院:信息工程学院
专业:计算机科学与技术
年级:大三
学号:20127610559 组长:赵豪
组员:朱建宁 学号:20127610661
组员:杜旭伟 学号:20127611106
组员:毛胜火 学号:20127610631
一、系统需求分析
1、课题背景
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、微信、微博、陌陌等网络聊天类的聊天系统的发展日新月异因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。本课程适用于软件工程等本科专业。参加本课程设计的学生,应当认真完成本课程设计全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。
2、功能要求
运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序实现了聊天室的基本功能,其中有:
1、启动服务器端。
2、启动客户端
3、进入聊天室。
、发送信息(实现按回车键发送消息) 4
5、退出聊天室
3、运行环境
本程序基于java开发环境,可以在一般的装有windows系统的主机上运行。
4、功能实现
1、采用套接字实现网络中的数据传输
2、尽量使用某个或某些应用层的
实现系统的部分功能
3、系统设计规范合理,操作流程方便简单
二、系统总体设计
1、设计思路
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程
序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。 1(首先通过继承JFrame类构造服务器界面。
2(设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色
和大小。
3(设计侦听程序,使其显示登录的ip地址,通过侦听按钮可以调用客户端程序,实现聊天
功能
2、各个模块详细的功能描述。
1、服务器端功能描述:
启动服务器端;
显示IP地址;
设置聊天字体颜色大小和类型;
回复信息(实现按回车键回复消息);
查看聊天记录和清屏
2、客户端功能描述:
启动客户端;
显示主机名称和IP地址;
设置聊天字体颜色大小和类型
发送信息(实现按回车键发送消息);
查看聊天记录和清屏
退出聊天室;
三、系统详细设计
1、界面设计
主要由类TestServer和TestClient来实现,界面实际总体如下; 输入主机名和IP地址以及接受消息的文本域
设置字体大小的文本框,设置字体类型的文本框,设置字体颜色的文本框 发送消息文本域;
发送按钮;清屏按钮;消息记录按钮;
2、具体设计实际代码
//服务器端:
import java.net.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.text.*;
import java.util.Date;
public class TestServer extends JFrame implements ItemListener{
private static final long serialVersionUID = 1L;
public JPanel jp1;
public JPanel jp2;
public JPanel jp3;
public JButton jb;
public JButton jb3;
public JButton jb4;
public JTextArea jta1;
public JTextArea jta2;
public JScrollPane jsp1;
public JScrollPane jsp2;
public DataOutputStream dos;
public DataInputStream dis;
public List list1;
public List list2;
public List list3;
public JLabel image1;
public JLabel image2;
public static String s="";
public TestServer() {//主构造方法及布局
try {
ServerSocket ss=new ServerSocket(8888);//服务器建立端口号8888
Socket s1 = ss.accept();//服务器监听是否有连接
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp1.setBackground(Color.green);
jp3.setBackground(Color.yellow);
jp2.setBackground(Color.green);
jb = new JButton("发送");
jb3 = new JButton("清屏");
jb4 = new JButton("消息记录");
list1=new List(3,false);
list2=new List(3,false);
list3=new List(3,false);
this.setLayout(new BorderLayout());
this.add(jp1, "North");
this.add(jp2, "South");
this.add(jp3, "Center");
ImageIcon icon1=new ImageIcon("img2.jpg");
ImageIcon icon2=new ImageIcon("img1.jpg");
image1=new JLabel(icon1);
image2=new JLabel(icon2);
this.setTitle("服务器端");
jta1 = new JTextArea(12, 35);/////////////////////////////
jsp1 = new JScrollPane(jta1);
jta1.setEditable(false);
String s="对方有聊天请求,IP地址为:\n"+s1.getInetAddress()+"\n";
jta1.append(s);
jp1.add(jsp1);
jp1.add(image1);
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
String fontName[]=ge.getAvailableFontFamilyNames();
int sizeName[]={5,10,13,16,19,21,24,27,30,35,40,45,50,55};
String colorName[]={"红色","黑色","蓝色","绿色","黄色","灰色","青色"};
for(int i=0;i