JAVA聊天室实训报告
聊天室程序设计报告
题 目:聊天室程序设计
院系名称: 专业名称: 班 级: 学号(8位):******* 指导教师:
一. 设计目的
在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。
此次设计的题目为聊天室,可以巩固所学的java语言基础知识,增进java语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面掌握java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
二. 设计内容
运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包等。程序实现了聊天室的基本功能,其中有: 1.启动服务器。 2.启动登陆界面。 3.进入客户端界面。 4.发送信息。
5.离开客户端界面。 6.关闭服务器。 三.概要设计
1.首先通过继承JFrame类构造服务器界面。使服务器能够为每一个客户启动一个线程,记录客户的上下线行为、登陆的ip,放送消息的时刻,监视客户的聊天记录,对于出现不文明的话语,在客户端进行屏蔽,并统计出现不文明话语的次数,超过三次提示警告信息,并将其踢出聊天室。
2.设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色。
3.设计登录程序,使其显示登录的ip地址端口号,以及用户昵称,通过登录按钮可以调用客户端程序,实现聊天功能。
1. 功能模块图;
2. 各个模块详细的功能描述。
1,服务器端功能描述:记录用户的上下线,显示系统时间,显示在线用户的用户名和ip地址,监听客户的聊天记录,刷新列表,启动服务,对于重复启动,显示警告信息,屏蔽用户的不文明言语,对于多次使用不文明用语的用户将其踢出聊天室,并向客户端放送相应信息。向个客户端广播系统消息。
2.登录界面
显示登录的端口号,ip地址,昵称,通过按动登录按钮进入客户端界面,或取消登录操作。
3.客户端功能描述;显示登录昵称,显示聊天记录,更改背景颜色,设置字体颜色,放送信息,关闭聊天窗口。
四.详细设计
程序中引入的包: import http://www.77cn.com.cn.*; import java.io.*; import java.util.*;
import java.awt.event.*; import java.awt.*; import javax.swing.*;
服务器端代码中用户自定义的类: 类名;server
作用:服务器的启动
继承的类:JFrame,构造服务器界面。
定义的对象:
TextArea 文本域
java.awt.List 在线客户列表 ServerSocket 服务器 Socket 客户端 主要的成员方法:
void init() 构造服务器端的界面
public void actionPerformed(ActionEvent e) 按钮监听器 public void keyPressed(KeyEvent e) 键盘监听器 类名:start
作用: 启动服务器的线程 继承的类名:thread 主要的成员方法:
public void run() 启动服务器的线程 类名; SgService 继承的类名:thread
主要的成员方法:public void run() 处理单个客户的线程 (2)用户登录相关的类: 类名:login
作用:构造登录界面 继承的类:JFrame
实现的接口: ActionListener 构造方法; public Login()
主要的成员方法:public void actionPerformed(ActionEvent e) 实现"登录"和"取消"按钮的监听器 类名:LoginStart 继承的类:Thread
主要的方法; public void run()
作用:如果登录成功,则弹出客户端聊天窗口,如果登录失败,则打印出"登录失 败",以告知客户
(3)客户端相关的类 类名:Client
继承的类:JFrame
构造方法; public Client(PrintStream out,BufferedReader in,String name) 主要的成员方法:public void receive()接受服务端发来的信息 1.功能函数的调用关系图 2.各功能函数的数据流程图
3.重点设计及编码
//聊天室服务器 import http://www.77cn.com.cn.*; import java.io.*;
import java.util.*;
import java.awt.event.*; import java.awt.*; import javax.swing.*;
class Server extends JFrame {
private TextArea msgA = new TextArea();//服务器用来输入的文本域 private TextArea area = new TextArea();//服务器显示消息的文本域 private TextField portT = new TextField("8888");
private java.awt.List list = new java.awt.List();//在线客户列表 private ServerSocket server;//服务器 private Socket client;//客户端
private Map<String, Socket> container = new HashMap<String, Socket>();//HashMap void init() {
//设置几个面板// Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); Panel p4 = new Panel(); Panel p5 = new Panel(); Panel p6 = new Panel(); Panel p7 = new Panel(); Panel p8 = new Panel(); Panel p9 = new Panel(); Panel p10 = new Panel(); //设置两个主要的文本框
Label lb1 = new Label("服务器界面"); lb1.setBackground(new Color(250,120,150)); Label lb2 = new Label("port");
BorderLayout border1 = new BorderLayout(); p1.setLayout(border1);
p1.add(BorderLayout.CENTER, area);
BorderLayout border2 = new BorderLayout(); p5.setLayout(border2);
p5.add(BorderLayout.NORTH, p3);
p5.add(BorderLayout.CENTER, msgA);
BorderLayout border3 = new BorderLayout(); p7.setLayout(border3);
p7.add(BorderLayout.CENTER, p1); p7.add(BorderLayout.SOUTH, p5);
p7.setBackground(new Color(250,150,200)); JButton startButton = new JButton("启动服务"); JButton sendButton = new JButton("发送");
JButton flushButton = new JButton("刷新列表"); FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
p8.setLayout(fl); p8.add(lb2); p8.add(portT);
p8.add(startButton); p8.add(sendButton); p8.add(flushButton);
p8.setBackground(new Color(250,120,150)); BorderLayout border4 = new BorderLayout(); p9.setLayout(border4);
p9.add(BorderLayout.CENTER, p7); p9.add(BorderLayout.SOUTH, p8); p10.setLayout(new BorderLayout()); Label lb3 = new Label("在线用户");
lb3.setBackground(new Color(250,120,150)); p10.add(lb3,BorderLayout.NORTH); p10.add(list,BorderL …… 此处隐藏:13989字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教学研究]2012西拉科学校团少队工作总结
- [教学研究]建筑工程公司档案管理制度
- [教学研究]小学数学人教版六年级上册圆的周长和面
- [教学研究]ERP电子行业解决方案
- [教学研究]钢支撑租赁合同范本
- [教学研究]预应力自动张拉系统用户手册Rev1.0
- [教学研究]MOOC课程:金瓶梅人物写真(每章节课后
- [教学研究]追加被执行人申请书(适用追加夫妻关系)
- [教学研究]2014年驾考科目一考试最新题库766
- [教学研究]2013-2014学年度九年级物理第15章《电
- [教学研究]新版中日交流标准日本语初级下26课-客
- [教学研究]小导管注浆施工作业指导书
- [教学研究]一般财务人员能力及人岗匹配评估表
- [教学研究]打1.2.页 小学一年级暑假口算100以内加
- [教学研究]学习贯彻《中国共产党党和国家机关基层
- [教学研究]2012年呼和浩特市中考试卷_35412
- [教学研究]最简易的电线电缆购销合同范本
- [教学研究]如何开展安全标准化建设
- [教学研究]工作分析与人岗匹配
- [教学研究]2016-2017学年高中历史第七单元现代中
- 山东省义务教育必修地方课程小学三年级
- 台湾宜兰大学互联网交换技术课程 01_In
- 思想品德:第一课《我知我家》课件(人
- SAR合成孔径雷达图像点目标仿真报告(附
- 利辛县“十三五”规划研究报告
- 2015-2020年中国手机APP行业市场发展趋
- 广告策略、创意表现、媒体方案
- 企业如何申请专利的的几点思考
- 《中国教育简史》网上作业
- 高中历史第二单元西方人文精神的起源及
- 年终晚会必备_精彩的主持稿_精心整理_
- 信息工程专业自荐书
- 2019高考历史人教版一轮练习:第十二单
- JAVA俱乐部管理系统软件需求规格说明书
- 2016-2021年中国小型板料折弯机行业市
- (人教新课标)六上_比的基本性质课件PPT
- 辽宁省公务员考试网申论备考技巧:名言
- 神经阻滞麻醉知情同意书
- 施工企业信息填报、审核和发布的相关事
- 初一(七年级)英语完形填空100篇




