《Java课程设计》需求分析文档要求_第1页
《Java课程设计》需求分析文档要求_第2页
《Java课程设计》需求分析文档要求_第3页
《Java课程设计》需求分析文档要求_第4页
《Java课程设计》需求分析文档要求_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录 1 选题背景 1 2 开发技术概述 1 3 功能需求分析 1 4 功能设计 2 4 1 登录界面功能表 2 4 2 注册界面功能表 3 4 3 聊天界面功能表 4 4 4 文件功能表 5 5 系统流程分析 5 5 1 系统总体设计流程图 5 5 2 详细设计流程图 6 6 界面设计 9 6 1 登录界面 9 6 2 注册界面 9 6 3 聊天界面 10 7 系统测试 11 8 关键代码说明 13 小结 16 参考文献 17 0 1 选题背景 在网络越来越发达的今天 人们对网络的依赖越来越多 越来越离不开网络 由此而 产生的聊天工具越来越多 目前国内外做即时通讯软件的公司很多 产品也琳琅满目 国 内有诸如腾讯 QQ 新浪 UC 网易泡泡 淘宝旺旺等 国外有著名的 MSN 新版改名为 Live Messenger 以及跨平台的米聊等 QQ 是国内即时通讯软件市场上无可争议的 老 大 您使用 QQ 可以与好友交流 信息及时发送 及时回复 收发及时功能全面 QQ 与国 外最大的即时通讯软件 MSN 功能强大 但它们唯一不足的地方就是必须要联网或者下载到 它们的服务端 否则无法脱离 Internet 使用 本聊天系统 是可以在局域网聊天的一个工具 无需联网 即可进行群聊 所以也存 在局限性 只有在同一局域网内的用户才能聊天交流 除此之外 该系统未设置私聊功能 2 开发技术概述 本系统采用 java 技术开发 使用文件保存数据 集成开发环境使用 eclipse 开发 者应有 java 程序设计语言 SWING 基本 GUI 组件 多线程 文件使用 socket 编程 使 用 eclipse 的基本知识和技能 系统采用两层 c s 体系结构 c 端负责通过 GUI 与客户交 互 实现注册 登录 收发信息 退出等功能 c 端和 s 端是通过网络交互的 首先服务器启动 建立一个专门用于接收客户端请求的 倾听 Socket 然后等待客 户的连接请求 当客户想聊天时 从界面输入信息 然后与服务器建立 Socket 连接 服 务器端的 倾听 Socket 收到连接请求后 一般会接收连接请求 并生成一个服务器端 socket 专门负责与此客户端 socket 的通信 一旦连接请求成功 通过 I O 流来实现数据 的输入输出 用多线程来实现多人聊天功能 3 功能需求分析 使得第一次使用的用户可以通过填写个人信息来注册 已注册用户可以在验证他的登 录信息后登录 允许在线用户查看其他在线用户的列表 允许用户在公共聊天室中聊天 客户端和用户端的需求如下 a 客户端 1 用户注册界面及结果 2 用户登录界面及结果 3 用户发送信息及结果 4 用户得到信息及结果 5 用户退出界面及结果 b 服务器端 1 处理用户注册 2 处理用户登录 3 处理用户发送信息 4 处理用户退出 5 保存服务器日志 6 保存用户聊天信息 1 4 功能设计 4 1 登录界面功能表 表 4 1 登录功能表 序号序号功能内容功能内容控件控件对象名对象名备注备注 1 用户名输入框JTextFieldtextfield 2 密码输入框JPasswordFi eld password 3 登录 JButtonb1 4 取消 JButton b2 5 注册 JButton b3 6 存放组件的容器JPanelP1存放 b1 b2 b3 7 盒式容器Box baseBox存 box1 box2 8 盒式容器Box box1 box2 9 标签JLabel标记用户名 密码 2 4 2 注册界面功能表 表 4 2 注册功能表 序号序号功能内容功能内容控件控件对象名对象名备注备注 1 用户名输入框 TextFieldtextfield1 2 密码输入框 TextFieldPw1 3 确认密码输入框 TextField Pw2 4 年龄输入框 TextFieldtextfield2 5 复选框 男 JCheckBoxC1 选定 6 复选框 女 JCheckBoxC2 7 注册按钮 JButtonbsubmit 8 取消按钮 JButtonbcancel 9 存放组件的容器 JPanelP1 存放信息 10 存放组件的容器 JPanelP2 存放两个提 交 取消按钮 11 存放组件的容器 JPanelP3 存放性别选 项 3 4 3 聊天界面功能表 表 4 3 聊天功能表 序号序号功能内容功能内容控件控件对象名对象名备注备注 12 聊天内容显示框 TextAreatextareaMessage 13 用户列表显示框 TextAreatextareaList 14 发送内容输入框 TextFieldtextfield 15 用户列表标签 JLabel userlist 16 聊天室标签 JLabelchatroom 17 退出按钮 JButtonbuttonout 18 发送按钮 JButtonbuttonsent 19 存放组件的容器 JPanel panelout 存放退出按 钮 20 存放组件的容器 JPanelp 21 显示指定组件内容 JScrollPanemessagepaneltextareaMes sage 22 显示指定组件内容 JScrollPanelistpaneltextareaLis t 23 显示指定组件内容 JScrollPanesendpaneltextfield 24 格式布局 GridBagLayout 25 GridBagLayout 类布置的 组件的约束 GridBagConstr aints bgc 4 4 4 文件功能表 表 4 4 文件功能表 序号序号功能内容功能内容控件控件对象名对象名备注备注 1 指定流里面读取对象 ObjectInputSt ream br 2 从流里读取内容 getInputStrea m 3 文件写 PrintWriter pw 4 读对象 readObject 5 客户端套接字 SocketfromClient 建立连接 6 服务器端套接字 ServerSocketserver 建立连接 5 系统流程分析 5 1 系统总体设计流程图 聊天应用程序包括登录界面和注册界面 当启动登录界面 用户填写信息后登录 登录的 信息将反馈给聊天服务器 服务器验证用户信息 若验证成功则跳到聊天界面 否则 服务器 反馈给登录界面拒绝登录消息 启动注册界面 用户在界面填写注册信息 注册信息反馈给服 务器 服务器要验证用户信息 验证成功 跳到登录界面 否则 服务器反馈给注册界面 显 示错误消息 5 聊天应用程序 登录界面注册界面 将登录消息发送给服务器将注册消息发送给服务器 聊天服务器 聊天服务器 验证登录消息 验证登录消息 否决登录显示错误消息 聊 天 界 面 否否 是 是 开始 结束 图 5 1 系统总体流程图 5 2 详细设计流程图 1 服务器结构 服务器端 处理用户的请求 当收到 来自定时器 消息时 服务器给客户反馈 客户端 在聊天界面更新消息和在线用户信息 服务器收到 登录信息 请求时 验证登录信息 验证 成功则更新聊天界面里的消息和在线用户信息 否则给客户端反馈 用户不存在 消息 当服 务器端接收到 注册消息 请求时 服务器验证注册信息 若验证成功 将注册信息写入文件 保存 并反馈给客户端 注册成功 信息 跳到登录界面 否则在注册界面给客户端反馈 用 户已经存在 消息 6 来自客户信息 来自Timer用户退出登录消息注册消息 聊天服务器 更新消息和在 线用户信息 验证登录信息验证注册信息 聊天界面 是 登录界面 是否 消息 用户已经存在 注册界面 否 开始 结束 图 5 2 服务器结构流程图 2 客户端结构 登录界面 将登录消息发送给聊天服务器 聊天服务器验证登录消息 如果验证成功将 欢迎 消息发送给登录界面 登录界面向用户显示聊天界面 如果验证不成功 则将拒绝消 息发送给登录界面 登录界面显示错误对话框 注册界面 同登录界面 7 登录界面 将登录信息发送给聊天服务器 聊天服务器 验证登录信息 将拒绝登录消息发送给登录界面将 欢迎 消息发送给登录界面 登录界面显示错误对话框登录界面向用户显示聊天界面 否是 开始 结束 图 5 3 登录界面流程图 聊天界面 服务器接收 来自定时器 的消息 随时更新消息和在线用户信息 若用 户在聊天界面中单击 发送 按钮 服务器接收用户 发送 请求 服务器将用户的发送 信息保存 向聊天界面 若用户退出 服务器收到用户 用户退出 请求 将在线列表中 删除用户 并更新聊天界面里的消息和在线用户信息 8 聊天界面 将 来自定时器 的 消息发送给服务器 用户在聊天界面中 单击 发送 按钮 将 用户退出 消 息发送给服务器 聊天服务器 更新消息和在 线用户信息 从在线列表中 删除用户 开始 结束 图 5 4 聊天界面流程图 6 界面设计 6 1 登录界面 运行 Login java 程序会出现如下界面 图 6 1 登录界面 6 2 注册界面 运行 Resigter java 可出现如下界面 注册信息时 用户名不能为中文 程序采用了 RandomAccessFile 来随机读取文件 为单独设置类来处理中文字符 用户若注册用户名信 息含有中文将无法读取 尽管注册成功 登录时将报错 用户名或密码错误 9 图 6 2 注册界面 6 3 聊天界面 用户先注册 在登录 登录成功可以出现如下界面 10 图 6 3 聊天界面 7 系统测试 用户 xiaowang 和 wang 注册后登录聊天室 xiaowang 在聊天室里发送消息 你好 wang 发送消息 好 两个用户都能看到彼此所发的信息 11 图 7 1 系统测试 12 图 7 2 系统测试 8 关键代码说明 表 8 1 关键代码表 序号序号事件内容事件内容事件名事件名对象名对象名 1登录 JButton b1 2注册 JButton b2 3聊天 JButton b3 4发送 JButtonbuttonsent 13 public Connect Socket inFromClient 建立一个用户 vcList new Vector String msg String mesg try 服务器端先读再写 streamFromClient new BufferedReader new InputStreamReader inFromClient getInputStream System out println 客户端连接成功 streamtoClient new ObjectOutputStream inFromClient getOutputStream System out println 服务器反馈信息给用户 msg streamFromClient readLine System out println 从客户获得的信息为 msg if msg equals 来自定时器 streamtoClient writeObject vector 将指定的对象写入 ObjectOutputStream streamtoClient writeObject vcList else if msg equals 登录消息 msg streamFromClient readLine System out println 客户信息为 msg int ver verify msg System out println 验证消息为 ver if ver 1 String colon new String int index msg lastIndexOf colon String username msg substring 0 index System out println usernaem username if vcList indexOf username 0 如果用户列表 中不存在该用户则在列表中添加该用户 streamtoClient writeObject 欢迎 addElement 将指定的组件添加到此向量的末尾 将其大 小增加 1 如果向量的大小比容量大 则增大其容量 vcList addElement String username System out println 用户列表人数为 vcList size else 已经登录了 14 streamtoClient writeObject 欢迎 System out println 用户列表人数为 vcList size streamtoClient writeObject 拒绝登录 给客户端 反馈信息 else streamtoClient writeObject 该用户不存在 else if msg equals 注册消息 msg streamFromClient readLine System out println 从客户端接收的信息为 msg int ret checkFile msg System out println 用户存在为 0 ret if ret 0 streamtoClient writeObject 用户已经存在 if ret 1 创建在文件中写入的文件流 System out println 在文件中写入信息 FileOutputStream out new FileOutputStream UsrPwd txt true PrintStream p new PrintStream out p println p println msg p close streamtoClient writeObject 注册成功 System out println 注册成功 else if msg equals 用户退出 System out println 用户退出 String remuser streamFromClient readLine boolean b vcList removeElement remuser 移除退出用 户 vcList removeElement remuser else 发送信息 15 message message msg System out println message message vector addElement message 向聊天列表中添加用户发送的聊天 信息 streamtoClient writeObject vector 反馈给用户现在的 向量 集合 catch Exception e1 e1 printStackTrace System out println 无法获取客户端的流对象 e1 try catch 结束 finally try inFromClient close catch IOException e2 e2 printStackTrace System out println 发生异常 e2 小结 本次系统设计总结 我将对我在做这次系统设计中遇到过的问题以及新学的内容进行 总结 本系统的登录界面 我采用了 Box 容器来排版界面格式 注册界面与聊天界面采用 了 GirdBagLayout 布局格式 来排版界面 用 Vector 类来实现添加 删除用户的操作 Vector 类可以实现可增长的对象数组 与数组一样 它包含可以使用整数索引进行访问 的组件 但是 Vector 的大小可以根据需要增大或缩小 以适应创建 Vector 后进行添 加或移除项的操作 用 RandomAccessFile 来实现文件内容的读取 RandomAccessFile 创 建从中读取和向其中写入的随机访问文件流 类里面有 getFilePointer 方法来返回文件 中的当前偏移量 到此文件开头的偏移量 在该位置发生下一个读取或写入操作 采用 objectOutputSt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论