PAGE \* MERGEFORMAT18

JAVA程序设计

多人聊天室

设计目的

Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。本次课程设计旨在应用JAVA编程语言中的网络通信,多线程,数据库编程,图形界面编程等技术实现一个基本的多人在线网络聊天室。并以此巩固JAVA基础知识,体会面向对象的设计方法。

平台要求

使用:

搭载JAVA运行环境的平台即可。

开发环境:

Windows10 64bit

JDK 1.8

Eclipse 4.4

Window Builder

需求分析

管理员:启动服务器,关闭服务器,强制用户退出,聊天房间增添改查。

用户:GUI,注册,登陆,聊天等。

用例图:

概要设计

服务器设计

将客户端的请求抽象化,每种请求服务器都会产生一个特定的类的对象去处理它。服务器负责接受客户端请求,根据请求内容完成指定工作。为提高效率,采用多线程结合线程池设计技术,对于每个请求在线程池内得到一个线程去处理请求。如图3-1所示。

客户端设计

5图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 1服务器概要图

5

图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 1服务器概要图

43

4

3

7612图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 2客户端概要图

7

6

1

2

详细设计

服务器详细设计

服务器要完成的任务是接受客户请求并在自己维护的数据结构上进行相应处理最终将处理结果返回给客户端。具体涉及到多线程,数据库,网络通信几项技术,同时为了实时根据请求产生特定类的对象使用了反例技术。

总体概览

服务器端的入口类为ServerMain。聊天室服务器端代码可分为以下八个部分。除最后两个部分外其他部分为串行执行。在接听后,创建的线程会并发处理客户请求。由于各个处理并发的特点,使得服务器的响应不会应为某个而用户阻塞,提高了效率。

图 STYLEREF 1 \s 5 SEQ 图 \* ARABIC \s 1 1聊天室服务器代码布局

服务器将用户操作抽象为不同的工作类,在接收到请求后根据消息协议在当前实现的工作类名列表中找到类名(通过下标在CommandList类中的List commandsList属性中得到),通过反例技术直接生成类的对象。各个类对象负责具体工作,他们都继承ServerWorkClass。而ServerWorkClass继承自WorlClass因为客户端对服务器的回复也应当有特定的类去处理它。目前实现的类有以下五种。当要添加新功能时只需向commandsList属性静态添加索引。进一步,也可在以后加入新的机制实现动态添加功能。

表 STYLEREF 1 \s 5 SEQ 图 \* ARABIC \s 1 2工作类名及其工作内容

类名

服务器端动作

HouseRelative

处理用户的进入、离开房间请求

Login

处理用户的上线、下线请求

Messages

处理用户的消息发送请求

UserDelAdd

处理用户注册请求

UserInfo

处理用户的用户信息查询设置请求

服务器中涉及到的类图如下所示:

协议约定及实现

由于要考虑客户端的各个请求需要完成不同的操作,需要根据数据来内容来做特定的工作,本聊天室将通信协议定义如下:

userID:服务器通过此ID确定消息是由哪个用户发出的。

authorization code:服务器对用户身份进行认证的域,每次在接受用户请求后都会更新一个随机数,并且将内容返回,而用户在请求服务器时必须使用最新的验证码否则不会得到服务器响应。这防止了非法用户的不正当操作。

command:表示用户的请求类型其值为具体操作的工作类在commandsList中的下标,服务器通过此下标找到类名产生类的对象。到这里为止的工作都是由一个CommandHandler的类的对象来完成,它实现了Runnable接口,在Accepter类的对象接受到消息后产生一个线程来执行对消息的下一步处理,其主要工作就是通过WorkingClassFactory使用反例技术产生具体工作类,之后调用工作类的doJob()方法完成任务。

command2:一个具体工作类是对一类操作的抽象,如与房间相关的操作可能包括进房间和出房间,而具体内容就是根据command2来标示的。从这里开始的工作已经进入到了WorkingClass的代码区域。

result:是服务器向客户端告知请求是否正常完成的字段。

之后就是具体消息的定义区域。首先一个MessageAmount来表示消息个数,而之后每条消息都

计算机html大作业聊天室,java大作业设计报告-JAVA聊天室.docx相关推荐

  1. java学生课程设计报告,Java课程设计报告学生管理系统

    Java课程设计报告学生管理系统 JAVAJAVA 程序设计程序设计 课程设计报告课程设计报告 课课 题题 学生信息管理系统学生信息管理系统 姓姓 名名 学学 号号 设计时间设计时间 2014.6.2 ...

  2. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx

    java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...

  3. 《JAVA》课程设计报告--企业人力资源管理系统

    XXX大学  <JAVA> 课程设计报告 题目  企业人力资源管理系统        学生姓名 XXXXXXX    学    号20XXXXXX XXXXXXXX XXXXXXXXX   ...

  4. java题目 万年历 计划书,Java版万年历设计报告及流程图

    <Java版万年历设计报告及流程图>由会员分享,可在线阅读,更多相关<Java版万年历设计报告及流程图(7页珍藏版)>请在人人文库网上搜索. 1.Java课程设计题目 万年历 ...

  5. Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc

    基于JAVA的记事本设计报告 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 11 页 XX学校计算机系综合性实验 实 验 报 告 课程名称 Java程序设计 实验学期 至 学年 第 学期 ...

  6. java游戏课程设计报告_java课程设计报告游戏_相关文章专题_写写帮文库

    时间:2019-05-14 00:00:44 作者:admin 课 程 设 计 课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 ...

  7. java科学计算器报告心得,Java计算器课程设计报告---模拟科学计算器

    Java计算器课程设计报告---模拟科学计算器 高级编程技术课程设计高级编程技术课程设计 模拟科学计算器模拟科学计算器 一一.概述概述 1.程序程序具备的功能具备的功能 (1)使用图形用户界面一个文本 ...

  8. java万年历课程设计代码,JAVA《万年历系统》课程设计

    JAVA<万年历系统>课程设计 面向对象程序设计面向对象程序设计 课程设计报告课程设计报告 题目题目 万年历系统万年历系统 专业专业 计算机科学与技术计算机科学与技术 班级班级 姓名姓名 ...

  9. 《Java程序设计》实验报告——Java的基本程序设计结构

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学技术18(3) 姓  名 申屠志刚 学  号 20 ...

最新文章

  1. 一个TensorFlow的新模型,Kaparthy小哥用了都说好
  2. 数据蒋堂 | 倍增分段技术
  3. handler消息机制入门
  4. 10年后,阿里给千万开源人写了一封信
  5. [Usaco2007 Jan]Telephone Lines架设电话线
  6. 服务器机房 维护,服务器机房建设与管理维护.pdf
  7. 数据存储和界面展示(二)
  8. 群聊金山云与英特尔的“AI as a Service”,你都get到了什么?
  9. 计算机科学与python编程导论_计算机科学入门和使用Python编程
  10. 去除html标签的工具类,Java正则匹配过滤移除html标签以及获取img完整标签工具类...
  11. 从零基础入门Tensorflow2.0 ----五、22TF1.0计算图构建
  12. 【Spring-IOC】bean扫描器ClassPathBeanDefinitionScanner详解
  13. 电机学重难点归纳(长期更新)
  14. 【GlobalMapper精品教程】001:GlobalMapper23 Pro-x64中文安装教程(附软件包下载)
  15. PetaLinux 添加启动后自动执行脚本
  16. sql 导入linux问题:ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-m
  17. 弘辽科技:如何制作一个高点击率主图,这些细节一定要记住
  18. C语言用字符串sex储存,《C语言》上机实验题及参考答案2
  19. Itext生成图表类型PDF
  20. 如何在删除ibdata1的情况下恢复

热门文章

  1. 对话美团 CEO 王兴:太多人关注边界,而不关注核心
  2. MFC CStdioFile简单用法
  3. C++鼠标锁定或乱跳(坑人必备)
  4. OpenCV图像阈值
  5. CSS笔记(美化超链接)
  6. 矩阵的行列式、秩的意义
  7. JULIA学习材料合集
  8. 今天的打拼,是为了与众不同的明天!
  9. BGA焊点气泡的分布与原因
  10. 【虚幻】武器插槽:拾取武器