目 录 1 引言... 1 内容来自论文无忧网 www.paper51.com 1.1 项目开发背景... 1 copyright paper51.com 1.1.1 项目背景... 1 copyright paper51.com
1.1.2 技术背景... 1 内容来自www.paper51.com
1.2 该系统设计的意义... 2 copyright paper51.com 2相关理论及基础技术与开发平台... 2 copyright paper51.com
2.1 即时通讯应用工作原理分析... 2 http://www.paper51.com 2.2所用技术... 3 http://www.paper51.com
2.3工具及开发平台... 4 内容来自论文无忧网 www.paper51.com 2.4 系统配置要求... 5 内容来自论文无忧网 www.paper51.com 3系统体系结构的设计... 5 http://www.paper51.com 3.1 需求描述... 5 内容来自www.paper51.com 3.2系统架构设计... 5 内容来自论文无忧网 www.paper51.com 3.3 系统的总体功能设计... 7 内容来自www.paper51.com 3.3.1总体功能设计... 7 内容来自www.paper51.com 3.3.2注册模块设计... 7 内容来自www.paper51.com
3.3.3 登录模块设计... 9 copyright paper51.com 3.3.4用户间交互模块设计... 11 http://www.paper51.com 4系统实现... 13 http://www.paper51.com 4.1网络通讯编码实现... 13 http://www.paper51.com
4.1.1聊天客户端部分代码... 13 内容来自www.paper51.com 4.1.2服务器端监听与转发消息代码... 14 copyright paper51.com
4.1.3服务端单线程上线处理代码... 15 http://www.paper51.com 4.2 系统运行的效果图... 17 内容来自www.paper51.com 4.2.1 登录界面... 17 内容来自论文无忧网 www.paper51.com 4.2.2 主界面... 17 copyright paper51.com
4.2.3 好友聊天界面... 18 http://www.paper51.com 5 系统测试与运行... 19 copyright paper51.com 结 论... 21 内容来自论文无忧网 www.paper51.com 参考文献... 21 paper51.com 致 谢... 22 内容来自www.paper51.com
声 明... 1 内容来自论文无忧网 www.paper51.com 内容来自论文无忧网 www.paper51.com 3.3 系统的总体功能设计 http://www.paper51.com 3.3.1总体功能设计 http://www.paper51.com 根据上述需求的描述,对该系统按照功能进行了模块的细化,主要包括注册登录、好友聊天、好友组管理、群聊天4个模块,还有很多其它小模块,这4个模块是实现该系统的核心模块,模块之间的耦合程度非常低。下图是上述的4个重要模块的用例交互图。 内容来自www.paper51.com
内容来自www.paper51.com 图4 总功能用例图 内容来自论文无忧网 www.paper51.com
3.3.2 登录模块设计 内容来自www.paper51.com 该模块主要给注册成功的用户提供一个登录界面,用户根据自己注册的帐号信息可以与服务器交互,如果提供的信息通过服务器的验证便可以成功的登录系统,成功登录系统之后,可以进行一些操作,比如和好友聊天等,使用该模块之前必须安装一个客户端。登录模块只是一个简单的界面,主要填写用户名、密码之类的信息,登录成功后的主界面包含了系统的大部分功能,比如添加和删除好友、添加和删除好友分组、和朋友聊天等功能。下图是登录模块的用例图。 copyright paper51.com 内容来自www.paper51.com 图8 登录用例图 内容来自www.paper51.com
copyright paper51.com
下边的登录模块的活动图,主要是对用户提供的用户名和密码提供验证。 http://www.paper51.com
内容来自论文无忧网 www.paper51.com
图9 登录活动图 内容来自www.paper51.com 下边是用户之间交互信息的时序图,主要包括从用户登录到通过验证然后进行信息的发送,给好友发送信息包含两种情况,第一,如果好友在线的话消息直接通过服务器中转发送给好友,如果对应的好友不在线,则讲发送的信息保存到数据库中,当该好友上线的时候从数据库中读出相应的信息进行发送。 内容来自www.paper51.com 内容来自论文无忧网 www.paper51.com 图10 用户信息交互图 内容来自论文无忧网 www.paper51.com
3.3.4用户间交互模块设计 http://www.paper51.com 该模块主要实现已用户之间的信息交流,用户交流的前提是先要添加好友,可以通过查找功能进行好友的查找,找到要添加的好友后,通过发送好友申请消息来添加好友,当对方通过添加好友的验证消息后,便可以成功的添加好友。只有成功的添加好友之后,才可以进行用户之间的信息的相互交互。下边是用户交互的用例图。 copyright paper51.com http://www.paper51.com 图11 用户交互用例图 copyright paper51.com 用户之间聊天的信息主要通过聊天服务器进行中转,用户之间聊天内容主要存储在客户端的一些文件中,可以通过查看聊天功能来进行对这些聊天信息的读取。下图是用户交互的活动图: paper51.com
copyright paper51.com N 内容来自www.paper51.com Y 内容来自www.paper51.com
图12 用户交互活动图 内容来自论文无忧网 www.paper51.com 下边是好友添加的时序图 内容来自论文无忧网 www.paper51.com paper51.com 图13 好友添加时序图 http://www.paper51.com
4系统实现4.1网络通讯编码实现 http://www.paper51.com 4.1.1聊天客户端部分代码 内容来自www.paper51.com 下边是聊天客户端的核心代码,它用来判定消息的来源以及针对该消息所进行的相应的操作。 http://www.paper51.com for(int i=0;i<MyPersonTree.alist.size();i++) //判断是哪个好友发来的信息 http://www.paper51.com { copyright paper51.com p=(Person)MyPersonTree.alist.get(i); 内容来自www.paper51.com if(p.getID().equals(hisJICQ)) copyright paper51.com break; 内容来自论文无忧网 www.paper51.com elsep=null; 内容来自论文无忧网 www.paper51.com } copyright paper51.com
if(p!=null) //队列中有该好友 http://www.paper51.com { copyright paper51.com JICQChatFrame jchatExist=null; 内容来自www.paper51.com intisExistFrame=0;//判定聊天窗口是否已经打开 http://www.paper51.com for(inti=0;i<MyPersonTree.vector.size();i++) //遍历向量 内容来自论文无忧网 www.paper51.com { copyright paper51.com jchatExist=(JICQChatFrame)MyPersonTree.vector.get(i); http://www.paper51.com if(jchatExist.JICQ.equals(hisJICQ)) http://www.paper51.com { 内容来自www.paper51.com isExistFrame=1;//聊天窗口已经打开 http://www.paper51.com break; paper51.com
} 内容来自论文无忧网 www.paper51.com } 内容来自www.paper51.com if(isExistFrame==0)//聊天窗口没有打开,新建一个窗口 http://www.paper51.com { 内容来自论文无忧网 www.paper51.com JICQChatFramejchat=new JICQChatFrame(p,this); copyright paper51.com MyPersonTree.vector.addElement(jchat); copyright paper51.com jchat.setMessage(headmsg,msg); 内容来自论文无忧网 www.paper51.com } paper51.com else copyright paper51.com
{//在聊天窗口中显示该信息 http://www.paper51.com jchatExist.setMessage(headmsg,msg); http://www.paper51.com }} else http://www.paper51.com { 内容来自论文无忧网 www.paper51.com JICQChatFramejchatExist=null; paper51.com intisExistFrame=0; paper51.com for(inti=0;i<MyPersonTree.UnKonwVector.size();i++) //陌生人的信息 http://www.paper51.com { http://www.paper51.com
jchatExist=(JICQChatFrame)MyPersonTree.UnKonwVector.get(i); http://www.paper51.com if(jchatExist.JICQ.equals(hisJICQ)) 内容来自论文无忧网 www.paper51.com { 内容来自www.paper51.com isExistFrame=1; copyright paper51.com break; 内容来自论文无忧网 www.paper51.com } paper51.com } 内容来自www.paper51.com } 内容来自www.paper51.com
|