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

下载本文档

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

文档简介

1、目录1. 选题背景12. 开发技术概述13. 功能需求分析13.1 功能设计2登录界面功能表2注册界面功能表3聊天界面功能表4文件功能表5系统流程分析55.1系统总体设计流程图55.2详细设计流程图66.2 界面设计96.1登录界面9注册界面9聊天界面104. 系统测试11关键代码说明13小结16参考文献17选题背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多.目前国内外做即时通讯软件的公司很多,产品也琳琅满目,国内有诸如腾讯QQ新浪UC网易泡泡、淘宝旺旺等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台的米聊等。QQ是

2、国内即时通讯软件市场上无可争议的”老大”,您使用QQ可以与好友交流,信息及时发送,及时回复,收发及时功能全面。QQ与国外最大的即时通讯软件MSN功能强大,但它们唯一不足的地方就是必须要联网或者下载到它们的服务端,否则无法脱离Internet使用。本聊天系统,是可以在局域网聊天的一个工具。无需联网,即可进行群聊。所以也存在局限性,只有在同一局域网内的用户才能聊天交流,除此之外,该系统未设置私聊功能。开发技术概述本系统采用java技术开发,使用文件保存数据,集成开发环境使用eclipse。开发者应有java程序设计语言、SWINC基本GUI组件、多线程、文件使用、socket编程、使用eclips

3、e的基本知识和技能。系统采用两层c/s体系结构,c端负责通过GUI与客户交互,实现注册、登录、收发信息、退出等功能;c端和s端是通过网络交互的。首先服务器启动,建立一个专门用于接收客户端请求的”倾听Socket”,然后等待客户的连接请求。当客户想聊天时,从界面输入信息,然后与服务器建立Socket连接,服务器端的“倾听Socket”收到连接请求后,一般会接收连接请求,并生成一个服务器端socket,专门负责与此客户端socket的通信。一旦连接请求成功,通过I/O流来实现数据的输入输出。用多线程来实现多人聊天功能。功能需求分析使得第一次使用的用户可以通过填写个人信息来注册,已注册用户可以在验证

4、他的登录信息后登录,允许在线用户查看其他在线用户的列表,允许用户在公共聊天室中聊天。客户端和用户端的需求如下:(1) 客户端用户注册界面及结果用户登录界面及结果用户发送信息及结果用户得到信息及结果用户退出界面及结果服务器端处理用户注册处理用户登录处理用户发送信息处理用户退出保存服务器日志保存用户聊天信息功能设计4.1登录界面功能表表4-1登录功能表序号功能内容控件对象名备注1.用户名输入框JTextFieldtextfield2.密码输入框JPasswordFipasswordeld3.登录JButtonb14.取消JButtonb25.注册JButtonb36.存放组件的容器JPanelP1

5、存放b1b2b37.盒式容器BoxbaseBox存box1box28.盒式容器Boxbox1box29.标签JLabel标记用户名密码亨号功能内容控件对象名备注1.用户名输入框TextFieldtextfield12.密码输入框TextFieldPw13.确认密俏输入框TextFieldPw24.年龄输入框TextFieldtextfield25.复选框男JCheckBoxC1选定6.旻选框女JCheckBoxC27.注册按钮JButtonbsubmit8.取消按钮JButtonbcancel9.存放组件的容器JPanelP1存放信息10.存放组件的容器JPanelP2存放两个提交取消按钮11

6、.存放组件的容器JPanelP3存放性别选项,号功能内容控件对象名备注12.聊天内容显示框TextAreatextareaMessage13.用户列表显示框TextAreatextareaList14.发送内容输入框TextFieldtextfield15.用户列表标签JLabeluserlist16.聊天室标签JLabelchatroom17.退出按钮JButtonbuttonout18.发送按钮JButtonbuttonsent19.存放组件的容器JPanelpanelout存放退出按钮20.存放组件的容器JPanelP21.显示指定组件内容JScrollPanemessagepanelt

7、extareaMessage22.显示指定组件内容JScrollPanelistpaneltextareaList23.显示指定组件内容JScrollPanesendpaneltextfield24.格式布局GridBagLayout()25.GridBagLayout类布置的组件的约束GridBagConstraintsbgc4.4文件功能表表4-4文件功能表亨号功能内容控件对象名备注1.指定流里面读取对象ObjectlnputStreambr2.从流里读取内容getlnputStream3.文件写PrintWriterpw4.读对象readObject5.客户端套接字SocketfromC

8、lient建立连接6.服务器端套接字ServerSocketserver建立连接系统流程分析5.1系统总体设计流程图聊天应用程序包括登录界面和注册界面,当启动登录界面,用户填写信息后登录,登录的信息将反馈给聊天服务器,服务器验证用户信息,若验证成功则跳到聊天界面,否则,服务器反馈给登录界面拒绝登录消息。启动注册界面,用户在界面填写注册信息,注册信息反馈给服务器,服务器要验证用户信息,验证成功,跳到登录界面,否则,服务器反馈给注册界面,显示错误消息。开始(结束I图5-1系统总体流程图5.2详细设计流程图1.服务器结构服务器端,处理用户的请求,当收到“来白定时器”消息时,服务器给客户反馈,客户端在

9、聊天界面更新消息和在线用户信息;服务器收到“登录信息”请求时,验证登录信息,验证成功则更新聊天界面里的消息和在线用户信息,否则给客户端反馈“用户不存在”消息;当服务器端接收到“注册消息”请求时,服务器验证注册信息,若验证成功,将注册信息写入文件保存,并反馈给客户端“注册成功”信息,跳到登录界面,否则在注册界面给客户端反馈“用户已经存在”消息。来自Timer来11客户信息用户退出消息维用户已经存在”注册界而结束图5-2服务器结构流程图2.客户端结构登录界面,将登录消息发送给聊天服务器,聊天服务器验证登录消息,如果验证成功将“欢迎”消息发送给登录界面,登录界面向用户显示聊天界面;如果验证不成功,则

10、将拒绝消息发送给登录界面,登录界面显示错误对话框。注册界面,同登录界面。开始杼录界血将登录信必发送给聊天服务器叩天服务器证登录信息=y登录痒面尊示错误对活框登录界面向用户显示聊天界立结束图5-3登录界面流程图聊天界面,服务器接收“来白定时器”的消息,随时更新消息和在线用户信息,若用户在聊天界面中单击“发送”按钮,服务器接收用户“发送”请求,服务器将用户的发送信息保存,向聊天界面,若用户退出,服务器收到用户“用户退出”请求,将在线列表中删除用户,并更新聊天界面里的消息和在线用户信息。Ff111r聊天服务器更新消息和在线用户信息从在线列表中删除用户结束图5-4聊天界面流程图开始聊天界面将“来白定时

11、器”的消息发送给服务器用户在聊天界面中单击“发送”按钮将“用户退出”消息发送给服务器界面设计6.1登录界面运行Login.java程序会出现如下界面图6-1登录界面6.2注册界面运行Resigter.java可出现如下界面,注册信息时,用户名不能为中文,程序采用了RandomAccessFile来随机读取文件,为单独设置类来处理中文字符,用户若注册用户名信息含有中文将无法读取,尽管注册成功,登录时将报错:用户名或密码错误。图6-2注册界面6.3聊天界面用户先注册,在登录,登录成功可以出现如下界面图6-3聊天界面系统测试两个用户都能看用户xiaowang和wang注册后登录聊天室,xiaowan

12、g在聊天室里发送消息:你好;wang发送消息:到彼此所发的信息。图7-1系统测试runv<iirg聊天至|蟀退出图7-2系统测试8.关键代码说明表8-1关键代码表序号事件内容事件名对象名1登录JButtonbl2注册JButtonb23聊天JButtonb34发送JButtonIbuttonsent/建立一个用户publicConnect(SocketinFromClient)(/vcList=newVector<String>();Stringmsg=""Stringmesg=""try(/服务器端先读再写streamFromClie

13、nt=newBufferedReader(newInputStreamReader(inFromClient.getlnputStream();/System.out.println(”客户端连接成功");streamtoClient=newObjectOutputStream(inFromClient.getOutputStream();/System.out.println(”服务器反馈信息给用户”)msg=streamFromClient.readLine();System.out.println(”从客户获得的信息为:”+msg);if(msg.equals("来白

14、定时器")(streamtoClient.writeObject(vector);/将指定的对象写入/ObjectOutputStreamstreamtoClient.writeObject(vcList);elseif(msg.equals("登录消息")(msg=streamFromClient.readLine();System.out.println(intver=verify(msg);”客户信息为:"+msg);System.out.println(”验证消息为:"+ver);if(ver=1)(Stringcolon=newStr

15、ing(":J;intindex=msg.lastlndexOf(colon);Stringusername=msg.substring(0,index);System.out.println("usernaem->>"+username);if(!(vcList.indexOf(username)>=0)(/如果用户列表中不存在该用户则在列表中添加该用户streamtoClient.writeObject("欢迎”);/addElement将指定的组件添加到此向量的末尾,将其大小增加/1。如果向量的大小比容量大,则增大其容量。vcLi

16、st.addFlement(String)username);System.out.println("用户列表人数为:"+vcList.size();else(/已经登录了/"+vcList.size();反馈信息elsestreamtoClient.writeObject("欢迎”);System.out.println(”用户列表人数为:streamtoClient.writeObject("拒绝登录;/给客户端elsestreamtoClient.writeObject("该用户不存在');if(msg.equals(&

17、quot;注册消息")msg=streamFromClient.readLine();System.out.println(”从客户端接收的信息为:”+msg);intret=checkFile(msg);System.out.println(”用户存在为0”+et);if(ret=0)streamtoClient.writeObject("用户已经存在”);if(ret=1)FileOutputStream(System.out.println(”在文件中写入信息;FileOutputStreamout=new"UsrPwd.txt”,true);PrintSt

18、reamp=newPrintStream(out);p.println();p.println(msg);p.close();streamtoClient.writeObject("注册成功”);System.out.println(”注册成功”);elseelseif(msg.equals("用户退出”)System.out.println("用户退出”);Stringremuser=streamFromClient.readLine();/booleanb=vcList.removeElement(remuser);/vcList.removeElement(

19、remuser);发送信息message=message+msg;移除退出用户/创建在文件中写入的文件流System.out.println("message:"+message);vector.addElement(message);/向聊天列表中添加用户发送的聊天信息streamtoClient.writeObject(vector);/反馈给用户现在的向量集合catch(Exceptione1)e1.printStackTrace();System.out.println(”无法获取客户端的流对象”+e1);/try.catch结束finallytryinFromCl

20、ient.close();catch(IOExceptione2)e2.printStackTrace();System.out.println("发生异常"+e2);小结本次系统设计总结,我将对我在做这次系统设计中遇到过的问题以及新学的内容进行总结。本系统的登录界面,我采用了Box容器来排版界面格式,注册界面与聊天界面采用了GirdBagLayout()布局格式,来排版界面。用Vector类来实现添加、删除用户的操作,Vector后进行添加或Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建移除项的操作。用RandomAccessFile来实现文件内容的读取,RandomAccessFile创建从中读取和向其中写入的随机访问文件流,类里面有getFilePointer方法来返回文件中的当前偏移

温馨提示

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

评论

0/150

提交评论