版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安科技大学软件工程课程设计报告 题目: 文本聊天室TalkRoom 班级: 计科0902班 学号: 0908030201 姓名: 梁 利 锋 联系方式2012年7月6日目 录1 绪论1.1 选题目的及意义1.2 系统概述2 可行性研究报告3 需求规格说明书4 总体设计说明书5 详细设计说明书6 系统实现6.1 开发环境6.2 关键技术6.3 运行结果7测试分析报告参考文献1 绪论1.1选题目的及意义随着计算机网络的发展,网络服务的完善,聊天室成为比较广泛的网络服务之一,给网民的沟通带来了极大的方便,在线聊天室也成为很多网民上网的活动之一。按照功能划分,聊天室可以分为
2、音视频聊天室、语音聊天室、文本聊天室等。本实验报告将介绍多人在线文本聊天室的开发流程及聊天室开发过程中所涉及的知识和技巧。1.2系统概述该系统采用传统的Client/Server结构。其功能类似于Web聊天室,用户可以在聊天室中公开发言,也可以发送给某个用户,实现两人间的私聊,不过这个程序有自己的聊天服务器和客户端程序。架设好服务器,用客户端软件登陆上服务器就可以聊天了。客户端软件提供用户登录服务器,发送聊天信息的功能。服务器程序则负责接收用户的登录请求,转发用户的聊天信息,并提供了一个界面程序来对服务器进行管理。2可行性研究报告2.1技术可行性分析本程序是java平台下的windows应用程
3、序,利用网络编程进行两台计算机之间的通信,交换数据,Java SDK提供一些相对简单的API来完成这些工作,Socket就是其中之一。本应用程序的开发还应用了Java提供的集合框架,主要有以Collection为接口的元素集合类型,以Map为接口的映射集合类型。最后,本程序的运行还应用了Java的多线程技术。2.2操作可行性分析我们在本学期学习了软件工程的相关课程,对软件开发过程中应用文档的书写有一定的了解,很好地掌握了软件的开发流程。另外,我们还学习了Java语言的网络编程,这为本程序的开发提供了很好的语言工具。2.3经济可行性分析本程序的开发只需一台电脑和相关的软件,在经济上并无太多花费,
4、对于我们学生来说是可以承受的。3需求规格说明书3.1目标 文本聊天室TalkRoom软件主要是为了实现局域网中多人在线文本聊天的功能,促进信息的沟通与交流,不涉及音频和视频的聊天。3.2功能需求 (1)用户可以选择聊天的服务器进行登录; (2)用户使用登录名登陆到聊天室,这个登录名就是用户在聊天室中的昵称,要确保无重复; (3)可以选择与大家群聊,广播信息,使得所有用户都能看到聊天内容; (4)可以选择与某个用户私下聊天,其他用户无法得知聊天内容; (5)聊天信息要时时反映到聊天记录中;(6)用户登录或退出时,要给其他用户发出通知。3.3性能需求 该聊天室主要设计为局域网传递信息,沟通交流的作
5、用,无需对聊天内容加密传送,可以直接传送源文本信息,对安全策略不作要求,但要求聊天过程中无异常发生,用户可以正常交流,软件稳定性是首要任务,保证普通用户在使用过程中不会因错误不知所措。 为了后期可以增加更多更强的功能模块,聊天室软件在开发过程中要考虑可扩展性和可维护性,保证软件二次开发的可行性。 聊天室的运行界面要简洁、易用,方便操作,即使没有计算机基础的用户也可以很快熟练使用。 4 总体设计说明书4.1系统设计 根据TalkRoom的需求分析,在设计开发过程中,可以采用基于C/S的体系结构,即分别开发客户端程序Client和服务器端程序Server。用户使用客户端程序输入聊天信息和阅读聊天记
6、录,服务器端程序处理聊天的信息。 TalkRoom聊天室采用C/S模式,客户端启动后,主动向服务器发出连接请求,建立Socket连接。服务器启动后,监听固定端口9000,当有客户端请求时,便响应此连接,将此连接交给线程Talking类处理。整体流程图如下图所示单用户用户1.2建立连接1.1选择登陆1.3聊天全部用户活动连接存储图4-1 TalkRoom整体流程图4.2结构设计 在结构设计阶段主要是确定系统的软件结构。首先定义客户端和服务器都用到的接口,然后完成实现接口的服务器端和客户端的远程对象,最后编写控制和反映远程对象变化的界面。服务器端接口客户端接口服务器端远程对象客户端远程对象服务器端
7、界面对象客户端界面对象图4-2 TalkRoom程序的整体设计图5详细设计说明书5.1界面设计 界面的设计原则时方便易用,简洁明快。因为服务器端只提供处理聊天数据的业务,起到转发数据的作用,因此服务器端没有设计控制界面。客户端程序的界面有两个,分别是登陆界面和聊天界面,如下图所示。服务器:昵称: 确定 JFrameJlableJText FieldJbutton 图5-1 Client端登陆界面JFrameJScrollPaneJTextAreaJTextFieldJComboBox图5-2 Client端聊天界面5.2结构程序设计(1)服务器端程序设计 服务端程序由两个类实现,分别是Talk
8、RoomServer类和Talking类。TalkRoomServer类主要实现监听端口,处理用户接入。类Talking主要实现接收聊天用户的数据,并将其转发给与之聊天的用户,主要方法和功能见下表。 表5-3 服务器端程序类类 名功能描述主方法,创建服务器端初始化服务器端,并管理连接到服务器的用户TalkRoomServerTalking将连接到服务器上的用户信息交给线程创建线程并初始化处理用户的聊天信息,转发数据服务器端使用HashMap保存与客户端的连接Socket,当有新用户登陆后,便将此连接加入HashMap中,当用户退出时,将此连接从HashMap中删除,以便始终保存与服务器的活动连
9、接,通过HashMap的size()方法就可以知道客户端的活动连接数。 TalkRoomServer类在处理完连接后,便将转发与处理数据的任务交给Talking类。Talking类根据用户的聊天请求,将数据转发到与之对应的连接Socket中。如果用户选择“All”,则转发到HashMap中除自己之外的其他活动连接Socket;如果用户选择“XX用户”,则转发到与此用户连接的Socket。 服务器端的程序结构如下图所示TalkRoomServer启动ServeSocket监听9000端口群聊个人聊天是否群发是否有客户连接将活动Socket存入HashMap将活动Socket交给Talking类解
10、析客户端传递信息NoYesNoYes图5-4 服务器端程序框图(2)客户端程序设计 客户端程序主要由TalkRoomClient类实现,在客户端启动后首先要求用户输入服务器地址和登录名,登陆成功后,进入聊天室主界面。客户端程序的主要方法和功能如下表所示。 表5-5 TalkRoomClient类主要方法类 名功能描述TalkRoomClient客户端的构造方法,完成聊天室界面的初始化,添加侦听器等功能Mainrun初始化登录窗口,启动聊天室重写线程类run方法,实现聊天信息的发送与接收聊天室客户端的程序结构如下图所示处理消息添加聊友删除聊友将消息加入聊天记录二次处理消息发送消息接收消息进入聊天
11、室登陆界面客户端TalkRoomClientTextAddDel图5-6 客户端程序框图6 系统实现6.1 开发环境 基于Java编程平台的网络编程6.2 关键技术(1)Socket编程 网络编程实际上就是两台计算机间相互通信,交换数据而已,Java SDK提供一些相对简单的API来完成这些工作,Socket就是其中之一。所谓socket通常也称套接字,时Java中的一个接口,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。(2)事件处理模型 事件包含在java.awt.event包和javax.swing.event包中。在事件处理的过程
12、中,主要涉及三类对象:Event事件,Event Source事件源,Event handle事件处理者。(3)常用集合汇总 Java提供的集合框架主要有以Collection为接口的元素集合类型,以Map为接口的映射集合类型。(4)多线程 Java的多线程可以有两种方式实现,一种是继承Thread类,子类重写Thread类的run方法;另一种是实现Runnable接口,然后实现run方法。需要注意的是,当使用runnable接口时,不能直接创建所需类的实例,必须借助Thread类,从实例的内部运行它,以减少类的层次。6.3 运行结果在服务器端代码运行后,客户端代码的执行结构如图6-1所示.用
13、户可以在“服务器地址”栏中输入运行服务器端代码机器的IP地址,如果是本地保持默认localhost即可,在“聊天昵称”中,输入在聊天室中使用的昵称。图6-1 客户端登陆界面用户在登陆后,进入聊天室的主界面,如图6-2所示。聊天室的标题栏显示用户的登陆昵称;下拉列表框中显示当前的在线用户,选中聊天对象,即可按回车键发送消息聊天,默认是“群聊”;聊天内容被显示在聊天记录框中。图6-2 简易聊天室主界面当用户退出系统时,通知其他在线用户,如图6-3所示,并在下拉列表 框中删除该用户。 图6-3 用户退出提示 7测试分析报告 TalkRoom聊天室分为客户端和从服务器端程序,在测试过程中,可以在一台机器进行,上述代码不需要修改。如果在两台机器上进行测试,在客户端启动后,输入运行服务器端代码机器的IP地址即可。需要注意的是,要按照先运行服务器端代码,再启动客户端的顺序进行,否则会抛出异常NullPointerException,这是有下列客户端代码造成的。 /获取服务器端发送过来的信息 String text=in.readLine();/解析信息,以分隔符“:”分割字符串 StringTokenizer st=new StringTokenizer(text,“:”); readLine()方法属于阻塞式方法,该方法会一直等待服务器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年山西省部分学校高考语文模拟试卷(4月份)
- 企业营销人员培训课件讲解
- 北京八中怡海分校2025届高考数学三模试卷含解析
- 两人办理房产证协议书
- 2025届云南省中央民族大附属中学高三六校第一次联考数学试卷含解析
- 《俄罗斯世纪艺术》课件
- 第15课 《梅岭三章》(分层作业)(解析版)
- 高中+语文++《扬州慢》课件++统编版高中语文选择性必修下册
- 《人力资本投资理论》课件
- 小学五年级上册科学课件教科版第3课 地震的成因及作用
- 2.2大气受热过程-以新疆番茄为例课件高中地理人教版(2019)必修一
- 新质生产力赋能高质量发展的逻辑理路、关键着力点与实践路径
- 微积分试卷及规范标准答案6套
- 国家开放大学电大专科《土地利用规划》2023-2024期末试题及答案试卷代 1308
- 独家采购协议合同书
- 2024年安徽省中考数学试卷(含答案)
- 晶种法制备多元金属纳米晶体及燃料电池中的构效关系研究
- 我国保险行业发展现状与未来趋势分析
- 学习学术科研计划安排三篇
- 租车协议电子版租车协议电子版
- JGJ92-2016无粘结预应力混凝土结构技术规程
评论
0/150
提交评论