基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第1部分)

合集下载

Java语言程序设计课程设计实训项目——应用Eclipse Swing可视化开发实现仿QQ程序的界面(第1部分)

Java语言程序设计课程设计实训项目——应用Eclipse Swing可视化开发实现仿QQ程序的界面(第1部分)

1.1应用Eclipse Swing可视化开发实现仿QQ程序的界面(第1部分)1.1.1利用Eclipse Swing可视化开发实现QQ登录主窗口本示例的操作结果如下所示:1、新建一个名称为IMSystem的Java项目2、在该项目中新建QQ登录主窗口(1)选择File>New>Other... ,然后再选择MyEclipse>Swing>Matisse Form,点击Next按钮。

(2)输入包名称为com.px1987.imsystem.frame,类名称为QQLoginMainFrame,并选择Swing JFrame类型点击“Finish”按钮,将进入可视化设计器视图同时也会在项目中自动添加系统库swing-layout-1.0.3.jar和AbsoluteLayout.jar()包文件3、设置QQLoginMainFrame窗口的属性(1)由于需要监控窗口的关闭行为,因此不应该再直接关闭窗口和退出程序因此首先选中主窗口,然后在属性面板中设置defaultCloseOperation项目为DO_NOTHING_ON_CLOSE。

(2)将窗口的标题条属性title项目设置为“QQ登录主窗口”(3)设置窗口内的文字的字体为“宋体”、12号、正常体由于font属性为对象属性项目,因此需要点击最右面的“浏览”按钮,进入自定义对话框中进行设置,如下图所示——在预览中识别是否为中文“宋体”:(4)设置窗口的图标由于iconImage也是对象属性,同样也需要进入自定义对象的对话框,并选择该属性的设置方式为“Custom code”类型——而采用其他方式时的图像文件都是本地磁盘的绝对路径。

然后输入下面黑体形式的代码——下面的代码是创建出一个Image类型的对象实例:java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/loginframe/qqicon.jpg"))当然,首先需要在项目中拷贝相关的图像文件,系统最后会自动地产生出下面形式的语句:this.setIconImage(java.awt.Toolkit.Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/loginframe/qqicon.jpg")));(5)设置窗口的背景颜色为[232, 245, 255](6)再设置窗口的如下属性项目this.setResizable(false); //不能改变大小this.setAlwaysOnTop(true); //设置为最顶层的窗口(7)设置窗口的宽度和高度——在源代码窗口中找到下面的代码this.setSize(390, 350);this.setLocationRelativeTo(null); //居中显示4、测试目前的效果(1)由于系统在该类中已经自动添加了main()方法准备好项目中所需要的各种图标图像文件,由于在窗口类中自动添加有main方法,因此可以直接执行。

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第1部分)

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第1部分)
如果用户连续 5 次使用同一个 IP 登录,软件将不要求用户在登录时输入验证码。 2)用户注册
Input
昵称 性别
生日
密码
邮箱地址
手机号
验证码
Processing Output
检验用户输入信息是否合法,若是,创建新用户记 录,将用户信息写入数据库,为用户分配 ID 号,并 将 ID 号返回给用户。 注册成共,获取 ID 号或注册失败。
1922processing根据用户选择的好友在数据库中删除聊天记录output删除好友聊天记录成功或失败3刷新聊天记录input选择要刷新的好友名字processing根据用户选择的好友在数据库中刷新聊天记录output刷新好友聊天记录成功或失败4回复信息input选择要回复的好友processing根据用户选择的好友在数据库中回复聊天记录output回复好友聊天记录成功或失败5导入聊天记录input选择要导入的好友聊天记录processing在数据库中导入好友的聊天记录output导入好友聊天记录成功或失败6导出聊天记录input选择要导出的好友聊天记录processing在数据库中导出好友的聊天记录output导出好友聊天记录成功或失败5相关接口模块名称消息管理模块子模块接收消息模块
就读取上一次传送时候保存的文件传输进度,并将该进度(已发送字节数)和整个
文件传输给服务器,当接收方上线时,服务器将进度发送给接收方,接收方据此设
置文件指针,并继续进行传输(提出问题:如果是发送方掉线的情况下应该如何处
理?)。如果 A 在第 10 次传输时发现 B 掉线(很可能 B 是在传输了 2KB 的时候掉线),
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
基于 J2EE S2SH 架构的仿腾讯 QQ 的即时通讯系统项目——详细设计说明 书(第 1 部分)

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——需求规格说明书

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——需求规格说明书

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——需求规格说明书1.1.1引言1、项目背景待开发的软件系统为蓝梦教育集团即时通讯系统。

本项目的提出者为蓝梦教育集团高层管理部及系统开发部,开发者为蓝梦教育集团系统开发部,用户为蓝梦教育集团所有员工。

利用企业即时通讯(Instant Messenger,简称IM系统)可以建立一个以自身公司为核心的即时通讯平台,创造新型办公沟通模式,提升办公效率,降低企业通信费用,增强企业内部沟通能力,改善企业与客户之间的沟通渠道——因为公司工作效率很大程度上取决于信息在公司内部流通的速度,以及工作人员彼此之间的熟悉默契程度。

用户可以IM帐号登录,提供即时通讯等方面的功能。

同时该系统的使用可以避免员工使用其他即时通讯系统带来的工作中分散注意力的不良现象。

2、编写目的本软件说明书的目的是挖掘出这个即时通讯系统的全部的需求包括功能上的与非功能的,并对其进行详细的描述。

提供了UML用例图以及详细的用例描述。

需求分析为下一步的软件设计打下基础,也为将来的代码实现提供依据,并且要让项目成员组中的每一个成员知道我们到底要完成的是一个什么样的系统。

这样在以后的步骤中成员之间可以更好的协同高质量的完成任务,本文档的编写为项目开发人员下阶段的设计、开发提供依据,为项目组成员对需求的详尽理解,以及开发过程中协同、高质、高效的工作提供强有力的保证。

此需求说明书也会成为项目验收的依据之一。

3、预期读者本需求说明书面向的读者主要是本项目的全部成员,以及验收人员,将来还会面对系统的维护与升级人员。

4、定义(1)IM企业即时通讯(Instant Messenger),简称IM系统。

(2)客户项目投资方,在此为蓝梦教育集团。

(3)用户产品的最终使用者,在此为蓝梦教育集团的员工。

(4)UIUser Interface 用户界面。

(5)B/SBrowser/Server 浏览器/服务器。

5、参考资料(1)J2EE项目实训Hibernate框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(2)J2EE项目实训Spring框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(3)J2EE项目实训UML及设计模式(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(4)J2EE项目实训Struts框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社2008 年10月(5)《精通Struts设计与开发》作者:孙卫琴电子工业出版社(6)《Spring从入门到精通》作者:郭锋清华大学出版社(7)《Hibernate开发技术祥解》作者:孙卫琴电子工业出版社(8)《J2EE应用开发技术祥解》作者:刘晓华电子工业出版社(9)《设计模式》作者:Erich Gamma等机械工业出版社1.1.2任务概述1、目标某国际化的著名教育企业蓝梦教育集团(Blue Dream Group),为了能够在中国迅速地开展与教育产品和IT技能培训有关的各个方面的业务、并期望能够取得比较好的效益和提高各项教育产品的质量以迎接新的挑战,需要全面地提升本土化的信息化项目建设的进度。

毕业设计即时通讯系统设计说明书

毕业设计即时通讯系统设计说明书
总的说来,国外关于即时通讯的研究还不够系统和深入。
1.3
聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出实现的相关理论与知识。
本课题主要研究容包括以下几个方面:
2.3.5 Socket 技术6
2.3.6TCP/IP 协议6
2.3.7 Client/Server 结构(客户端/服务器模式)7
2.4 本章小结7
第三章 数据库设计8
3.1SQL Server数据库介绍8
3.2 理论基础8
3.3 数据库E-R图9
3.4数据库设计9
3.4.1 数据库逻辑设计9
3.4.2 数据库物理设计10
本科毕业设计(论文)说明书
即时通讯系统的设计与实现
学院计算机工程学院
专业班级09软件工程1班
摘 要
即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。
2.1.1 系统包含的功能
本聊天系统需包含如下基本功能:
(1)客户端的主要功能:
用户注册
用户登录
添加好友
获取好友列表
与好友聊天
发送表情功能
文件传输
(2)服务器端的主要功能:
启动服务
建立连接
监听客户请求
2
聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。根据聊天的通信步骤,系统的功能模块如图2-1所示。

(java)类似QQ的聊天软件论文

(java)类似QQ的聊天软件论文

即时消息系统--本科毕业设计收藏摘要随着网络通信技术和计算机技术的进一步发展,即时消息正在成为网络在线活动中不可缺少的业务。

本课题在现有的网络通信技术、数据库技术和编程技术的基础上设计并实现了网络即时消息系统。

该系统采用三层 C/S网络系统构架,采用多线程实现服务器的并发处理,采用 ODBC 接口访问 SQL Server2000数据库设计数据管理模块,采用J2SE 平台和java语言去开发系统。

该系统按照软件工程思想采用面向对象和模块化设计方法设计,其中采用了网络通信技术、数据库技术、多线程技术等计算机技术,实现了网络通信的基本功能,具有通信即时性的特点。

在论文中,我们将会讨论网络即时消息系统的现状和发展,研究实现此系统的技术背景。

然后我们对系统进行需求分析。

按照要求,我们将进行总体设计和详细设计,如服务器端的设计,数据库的设计和客户端的设计。

最后实现系统的配置和使用。

本毕业设计所完成的网络即时消息系统的主要功能如下:1.服务器端:后台启动、监视用户和发送系统消息;2.用户登录和注册;3.好友管理:查找好友、添加好友和删除好友;4.通信:发送消息、接收消息和聊天记录5.上线和隐身。

关键词:即时消息系统,C/S三层结构,TCP/IP, J2SE平台AbstractWith the further development of network communication technology and computer technology, Instant Messaging has been a requirement of on-line activities. This project design and implementation,the instant messaging based on the topic of the existing network communication technology, database technology and programming technology.This system uses composite structure of three-tier C/S to design system architecture, uses multi-threading to implement server’s parallel processing, uses ODBC interface to access to SQL Server database to design data management module, uses J2SE(Java 2 Standard Edition) and Object-oriented programming language ,java,to develop the system.This system is designed by object-oriented and modular design method, which used computer technologies based on network communication technology, database technology, Multi-threading technology, software reuse and so on, this system has basic functions of network communication, , and has features of instant.In my dissertation,we will discuss the status and development of network instant messenger,and research in the relevant technology background.After that we will analyse the requirement of the system. With the requirement analysis,we will make the general design and detailed design,such as server design ,database design and client design.In the last part ,we will implement the system and put it into practice.The system has completed the following major functions:1.Server:Startup,surveillance and send systemic message.;2.User management: registration login and logout;3.Friend management: find ,add and delete;4.Communication:sending message,receriving message and receiving system message;5.Online and hide.Key Words:Instant Messenger,C/S Three-layer Construction, TCP/IP,J2SE Platform目录摘要Abstract目录第一章绪论1.1选题背景1.1.1 即时消息系统的研究现状1.1.2 即时消息系统的发展趋势1.1.3论文研究的主要内容1.2 技术背景1.2.1 C/S 模型1.2.2 TCP/IP 协议1.2.3编程技术第二章系统分析与设计2.1 需求分析2.2系统总体框架2.2.1总体设计2.2.2功能模块2.3系统详细设计2.3.1多线程设计2.3.2数据库设计2.3.3服务器的设计2.3.4客户端的设计2.3.5消息通信的设计第三章系统实现3.1数据库部署3.1.1建立数据库3.1.2 配置ODBC数据源3.2 开发环境3.2.1 构建Java SE平台3.2.2 安装开发工具 eclipse3.3 服务器端的实现3.3.1 启动服务器后台3.3.3 发送系统消息3.4 客户端的实现3.4.1 用户注册3.4.2 登录3.4.3程序主界面3.4.3 添加好友3.4.4 上线与隐身3.4.5 聊天通信第四章总结参考文献致谢。

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)—构建出服务器端项目(第1部分)

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)—构建出服务器端项目(第1部分)

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——构建出服务器端项目(第1/4部分)1.1.1构建出服务器端项目1、新建服务器端项目IMServerWebApp(1)项目名为IMServerWebApp,Context名称为/webimapp,并且选择J2EE的版本为J2EE5.0(2)将出现下面的结果2、在Web项目中添加JSTL标签库jstl.jar和standard.jar3、Commons-HTTPClient组件及有关的系统库文件Commons-httpclient-3.1.jar、commons-codec-1.3.jar和commons-logging.jar等系统库文件4、XML解析技术的系统库jdom5、添加与JDIC系统包有关的各个文件(1)与Java有关的系统类:jdic.jar和jdic_stub.jar(2)针对Windows系统平台下的系统库jdic.dll和tray.dll文件jdic.dll和tray.dll是针对Windows系统平台中的本地系统库,它们都要放在C:\\Windows 目录(Windows 2003操作系统)或者C:\\WINNT目录(Windows 2000操作系统)中。

这些文件包含jdic.jar 的Java 方法和本机操作系统方法之间的“桥接”方法。

(3)JDIC中的浏览器组件JDIC允许把用户主机中默认的Web浏览器嵌入到Java Swing的应用程序中,并且浏览器组件的API允许程序员在程序中编程浏览器的各种事件以及实现对历史记录的控制(向前、后退、刷新)等功能。

为此,需要将IeEmbed.exe或者MozEmbed.exe放到本地操作系统的工作目录中。

浏览器组件将立刻使用本机操作系统中的默认Web浏览器——它们通常是Internet Explorer或Mozilla等,但需要将JDIC系统库中的IeEmbed.exe或者MozEmbed.exe程序拷贝到本地操作系统的工作目录中——对于Windows系统则为C:\\Windows目录(Windows 2003操作系统)或者C:\\WINNT目录(Windows 2000操作系统)中。

《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——信息主窗口类中的各个子面板和弹出式菜单程序类(第2部分)

《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——信息主窗口类中的各个子面板和弹出式菜单程序类(第2部分)

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端系统信息主窗口类中的各个子面板和弹出式菜单程序类(第2/2部分)1.1.1实现相关的弹出式菜单的功能1、FriendInfoTreeNodeSelfPopupMenu类(1)类名称为FriendInfoTreeNodeSelfPopupMenu,包名称为com.px1987.imsystem.client.frame.imsystemmainframe.tree,继承于ponent.SelfDefineJPopupMenu_ImageBar类(2)编程该类package com.px1987.imsystem.client.frame.imsystemmainframe.tree;import javax.swing.ImageIcon;import javax.swing.JCheckBoxMenuItem;import javax.swing.JMenuItem;import ponent.SelfDefineJCheckBoxMenuItem;import ponent.SelfDefineJMenuItem;import ponent.SelfDefineJPopupMenu_ImageBar;import com.px1987.imsystem.client.frame.IMSystemMainFrame;public class FriendInfoTreeNodeSelfPopupMenu extends SelfDefineJPopupMenu_ImageBar { private static final long serialVersionUID = -3719946677412611465L;private IMSystemMainFrame oneIMSystemMainFrame=null;public IMSystemMainFrame getOneIMSystemMainFrame() {return oneIMSystemMainFrame;}public void setOneIMSystemMainFrame(IMSystemMainFrame oneIMSystemMainFrame) { this.oneIMSystemMainFrame = oneIMSystemMainFrame;}private JMenuItem imSpaceMenuItem = null;private JMenuItem onePersonInfoMenuItem = null;private JMenuItem updateMyHeadImageMenuItem = null;private JCheckBoxMenuItem showMyHeadImageCheckBoxMenuItem = null;private JMenuItem netRecordMenuItem = null;private JMenuItem graftMenuItem =null;public FriendInfoTreeNodeSelfPopupMenu() {super();}public FriendInfoTreeNodeSelfPopupMenu(String label,IMSystemMainFrame oneIMSystemMainFrame) {super(label);this.oneIMSystemMainFrame=oneIMSystemMainFrame;createThisTreeNodeSelfPopupMenu();}public FriendInfoTreeNodeSelfPopupMenu(String label) {super(label);}public FriendInfoTreeNodeSelfPopupMenu(ImageIcon imageIcon) {super(imageIcon);}private void createThisTreeNodeSelfPopupMenu(){imSpaceMenuItem = new SelfDefineJMenuItem();imSpaceMenuItem.setText("IM 空间");imSpaceMenuItem.setIcon(newImageIcon(getClass().getResource("/images/treePopMenu/sefttree1.jpg")));this.add(imSpaceMenuItem);onePersonInfoMenuItem= new SelfDefineJMenuItem();onePersonInfoMenuItem.setText("个人资料");this.add(onePersonInfoMenuItem);updateMyHeadImageMenuItem = new SelfDefineJMenuItem();updateMyHeadImageMenuItem.setText("更改我的头像");this.add(updateMyHeadImageMenuItem);showMyHeadImageCheckBoxMenuItem = new SelfDefineJCheckBoxMenuItem();showMyHeadImageCheckBoxMenuItem.setSelected(true);showMyHeadImageCheckBoxMenuItem.setText("显示我的头像");this.add(showMyHeadImageCheckBoxMenuItem);netRecordMenuItem = new SelfDefineJMenuItem();netRecordMenuItem.setText("网络备完录");netRecordMenuItem.setIcon(newImageIcon(getClass().getResource("/images/treePopMenu/sefttree2.jpg")));this.add(netRecordMenuItem);graftMenuItem = new SelfDefineJMenuItem();graftMenuItem.setText("送礼许愿");graftMenuItem.setIcon(newImageIcon(getClass().getResource("/images/treePopMenu/sefttree3.jpg")));this.add(graftMenuItem);}}2、FriendInfoTreeNodePopupMenu类(1)类名称为FriendInfoTreeNodePopupMenu,包名称为com.px1987.imsystem.client.frame.imsystemmainframe.tree,继承于ponent.SelfDefineJPopupMenu_ImageBar类(2)编程该类package com.px1987.imsystem.client.frame.imsystemmainframe.tree;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JCheckBoxMenuItem;import javax.swing.JMenu;import javax.swing.JMenuItem;import ponent.SelfDefineJCheckBoxMenuItem;import ponent.SelfDefineJMenu;import ponent.SelfDefineJMenuItem;import ponent.SelfDefineJPopupMenu_ImageBar;import com.px1987.imsystem.client.frame.IMSystemMainFrame;importcom.px1987.imsystem.client.frame.imsystemmainframe.treeevent.FriendInfoTreeNodePopupMe nu_ActionListenerEventHandler;import com.px1987.imsystem.client.util.IMSystemClientUtils;public class FriendInfoTreeNodePopupMenu extends SelfDefineJPopupMenu_ImageBar { private static final long serialVersionUID = 8215073581183947613L;private IMSystemMainFrame oneIMSystemMainFrame=null;private JMenu personHeadImageMenu = null;private JCheckBoxMenuItem bigHeadImageMenuItem = null;private JCheckBoxMenuItem smallHeadImageMenuItem =null;private JCheckBoxMenuItem standardHeadImageMenuItem = null;private JCheckBoxMenuItem showMyHeadImageMenuItem = null;private JMenu nameInfoShowMenu =null;private JCheckBoxMenuItem showAnnotationInfoMenuItem = null;private JCheckBoxMenuItem showLoveNameInfoMenuItem = null;private JMenu columnShowMenu = null;private JCheckBoxMenuItem singleShowMenuItem = null;private JCheckBoxMenuItem multiShowMenuItem = null;private JCheckBoxMenuItem showClearInfoMenuItem = null;private JCheckBoxMenuItem slideEffectMenuItem = null;private JMenu sortShowMenu = null;private JCheckBoxMenuItem sortByIDMenuItem = null;private JCheckBoxMenuItem sortByUpdateTimeMenuItem =null;private JCheckBoxMenuItem sortByNameMenuItem = null;private JMenuItem showOnLinePersonInfoMenuItem = null;private JCheckBoxMenuItem showNoKnownPersonGroupInfoMenuItem =null;private JCheckBoxMenuItem showBlockNameListMenuItem = null;private JMenuItem addNewGroupInfoMenuItem = null;private JMenuItem addNewFriendMenuItem = null;private JMenuItem renameMenuItem = null;private JMenuItem deleteThisGroupMenuItem = null;public FriendInfoTreeNodePopupMenu() {super();}public FriendInfoTreeNodePopupMenu(String label) {super(label);}public FriendInfoTreeNodePopupMenu(String label,IMSystemMainFrame oneIMSystemMainFrame) {super(label);this.oneIMSystemMainFrame=oneIMSystemMainFrame;createThisTreeNodePopupMenu();}public FriendInfoTreeNodePopupMenu(ImageIcon imageIcon) {super(imageIcon);}private void createThisTreeNodePopupMenu(){initThisTreeNodePopupMenu();createAllMenuAndMenuItemForThisPopup();}private void initThisTreeNodePopupMenu(){this.setBackground(IMSystemClientUtils.getNoSerializableVOInstance().getLoginFormBgColor());}private void createAllMenuAndMenuItemForThisPopup(){personHeadImageMenu = new SelfDefineJMenu();personHeadImageMenu.setText("头像显示方式");personHeadImageMenu.setIcon(new ImageIcon(getClass().getResource("/images/treePopMenu/headimage.jpg")));this.add(personHeadImageMenu);ButtonGroup oneButtonGroup=new ButtonGroup();bigHeadImageMenuItem = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(bigHeadImageMenuItem);smallHeadImageMenuItem = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(smallHeadImageMenuItem);standardHeadImageMenuItem = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(standardHeadImageMenuItem);bigHeadImageMenuItem.setText("大头像");bigHeadImageMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "bigHeadImageMenuItem_onClick"));smallHeadImageMenuItem.setText("小头像");smallHeadImageMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "smallHeadImageMenuItem_onClick"));standardHeadImageMenuItem.setText("标准头像");standardHeadImageMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "standardHeadImageMenuItem_onClick"));showMyHeadImageMenuItem = new SelfDefineJCheckBoxMenuItem();showMyHeadImageMenuItem.setText("显示我的头像");showMyHeadImageMenuItem.setSelected(true);showMyHeadImageMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "showMyHeadImageMenuItem_onClick"));personHeadImageMenu.add(bigHeadImageMenuItem);personHeadImageMenu.add(smallHeadImageMenuItem);personHeadImageMenu.add(standardHeadImageMenuItem);personHeadImageMenu.addSeparator();personHeadImageMenu.add(showMyHeadImageMenuItem);nameInfoShowMenu = new SelfDefineJMenu();nameInfoShowMenu.setText("名称显示");this.add(nameInfoShowMenu);ButtonGroup twoButtonGroup=new ButtonGroup();showAnnotationInfoMenuItem = new SelfDefineJCheckBoxMenuItem();twoButtonGroup.add(showAnnotationInfoMenuItem);showLoveNameInfoMenuItem = new SelfDefineJCheckBoxMenuItem();twoButtonGroup.add(showLoveNameInfoMenuItem);showAnnotationInfoMenuItem.setText("显示备注");showAnnotationInfoMenuItem.setSelected(true);showAnnotationInfoMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "showAnnotationInfoMenuItem_onClick"));showLoveNameInfoMenuItem.setText("显示昵称");showLoveNameInfoMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "showLoveNameInfoMenuItem_onClick"));nameInfoShowMenu.add(showAnnotationInfoMenuItem);nameInfoShowMenu.add(showLoveNameInfoMenuItem);columnShowMenu = new SelfDefineJMenu();columnShowMenu.setText("列表显示");this.add(columnShowMenu);ButtonGroup threeButtonGroup = new ButtonGroup();singleShowMenuItem = new SelfDefineJCheckBoxMenuItem();threeButtonGroup.add(singleShowMenuItem);multiShowMenuItem = new SelfDefineJCheckBoxMenuItem();threeButtonGroup.add(multiShowMenuItem);singleShowMenuItem.setText("单列显示");singleShowMenuItem.setSelected(true);singleShowMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "singleShowMenuItem_onClick"));columnShowMenu.add(singleShowMenuItem);multiShowMenuItem.setText("多列平铺");multiShowMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "multiShowMenuItem_onClick"));columnShowMenu.add(multiShowMenuItem);columnShowMenu.addSeparator();showClearInfoMenuItem = new SelfDefineJCheckBoxMenuItem();showClearInfoMenuItem.setText("显示清爽资料");showClearInfoMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "ShowClearInfoMenuItem_onClick"));columnShowMenu.add(showClearInfoMenuItem);slideEffectMenuItem = new SelfDefineJCheckBoxMenuItem();slideEffectMenuItem.setText("滑动效果");slideEffectMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "slideEffectMenuItem_onClick"));columnShowMenu.addSeparator();columnShowMenu.add(slideEffectMenuItem);this.addSeparator();sortShowMenu = new SelfDefineJMenu();sortShowMenu.setText("排序显示");this.add(sortShowMenu);ButtonGroup fourButtonGroup = new ButtonGroup();sortByIDMenuItem = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByIDMenuItem);sortByUpdateTimeMenuItem = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByUpdateTimeMenuItem);sortByNameMenuItem = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByNameMenuItem);sortByIDMenuItem.setText("按身份标识排序");sortByUpdateTimeMenuItem.setText("按服务更新排序");sortByNameMenuItem.setText("按名称排序");sortShowMenu.add(sortByIDMenuItem);sortShowMenu.add(sortByUpdateTimeMenuItem);sortShowMenu.add(sortByNameMenuItem);this.addSeparator();showOnLinePersonInfoMenuItem = new SelfDefineJMenuItem();showOnLinePersonInfoMenuItem.setText("显示在线联系人");this.add(showOnLinePersonInfoMenuItem);this.addSeparator();showNoKnownPersonGroupInfoMenuItem = new SelfDefineJCheckBoxMenuItem();showNoKnownPersonGroupInfoMenuItem.setText("显示陌生人分组");showNoKnownPersonGroupInfoMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "showNoKnownPersonGroupInfoMenuItem_onClick"));this.add(showNoKnownPersonGroupInfoMenuItem);showBlockNameListMenuItem = new SelfDefineJCheckBoxMenuItem();showBlockNameListMenuItem.setText("显示黑名单");showBlockNameListMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "showBlockNameListMenuItem_onClick"));this.add(showBlockNameListMenuItem);this.addSeparator();addNewGroupInfoMenuItem = new SelfDefineJMenuItem();addNewGroupInfoMenuItem.setText("添加分组");addNewGroupInfoMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "addNewGroupInfoMenuItem_onClick"));this.add(addNewGroupInfoMenuItem);addNewFriendMenuItem = new SelfDefineJMenuItem();addNewFriendMenuItem.setText("添加联系人");addNewFriendMenuItem.setIcon(new ImageIcon(getClass().getResource("/images/treePopMenu/addFriend.jpg")));addNewFriendMenuItem.addActionListener(new FriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "addNewFriendMenuItem_onClick"));this.add(addNewFriendMenuItem);this.addSeparator();renameMenuItem = new SelfDefineJMenuItem();renameMenuItem.setText("重命名");renameMenuItem.addActionListener(newFriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "renameMenuItem_onClick"));deleteThisGroupMenuItem = new SelfDefineJMenuItem();deleteThisGroupMenuItem.setText("删除该组");deleteThisGroupMenuItem.setIcon(new ImageIcon(getClass().getResource("/images/treePopMenu/deleteGroup.jpg")));deleteThisGroupMenuItem.addActionListener(new FriendInfoTreeNodePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "deleteThisGroupMenuItem_onClick"));this.add(renameMenuItem);this.add(deleteThisGroupMenuItem);}public JMenuItem getDeleteThisGroupMenuItem() {return deleteThisGroupMenuItem;}public JMenuItem getRenameMenuItem() {return renameMenuItem;}public JMenuItem getAddNewGroupInfoMenuItem() {return addNewGroupInfoMenuItem;}}3、FriendInfoTreeNodePopupMenu_byClickOut类(1)类名称为FriendInfoTreeNodePopupMenu_byClickOut,包名称为com.px1987.imsystem.client.frame.imsystemmainframe.tree,继承于ponent.SelfDefineJPopupMenu_ImageBar类(2)编程该类package com.px1987.imsystem.client.frame.imsystemmainframe.tree;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JCheckBoxMenuItem;import javax.swing.JMenu;import javax.swing.JMenuItem;import ponent.SelfDefineJCheckBoxMenuItem;import ponent.SelfDefineJMenu;import ponent.SelfDefineJMenuItem;import ponent.SelfDefineJPopupMenu_ImageBar;import com.px1987.imsystem.client.frame.IMSystemMainFrame;importcom.px1987.imsystem.client.frame.imsystemmainframe.event.IMSystemMainFrame_ActionList enerEventHandler;public class FriendInfoTreeNodePopupMenu_byClickOut extends SelfDefineJPopupMenu_ImageBar {private static final long serialVersionUID = -8871613980569893992L;private IMSystemMainFrame oneIMSystemMainFrame=null;private JMenu personHeadImageMenu_byClickOut = null;private JCheckBoxMenuItem bigHeadImageMenuItem_byClickOut = null;private JCheckBoxMenuItem smallHeadImageMenuItem_byClickOut = null;private JCheckBoxMenuItem standardHeadImageMenuItem_byClickOut = null;private JCheckBoxMenuItem showMyHeadImageMenuItem_byClickOut = null;private JMenu nameInfoShowMenu_byClickOut = null;private JCheckBoxMenuItem showAnnotationInfoMenuItem_byClickOut = null;private JCheckBoxMenuItem showLoveNameInfoMenuItem_byClickOut = null;private JMenu columnShowMenu_byClickOut = null;private JCheckBoxMenuItem singleShowMenuItem_byClickOut = null;private JCheckBoxMenuItem multiShowMenuItem_byClickOut =null;private JCheckBoxMenuItem ShowClearInfoMenuItem_byClickOut = null;private JCheckBoxMenuItem slideEffectMenuItem_byClickOut = null;private JMenu sortShowMenu_byClickOut = new SelfDefineJMenu();private JCheckBoxMenuItem sortByIDMenuItem_byClickOut = null;private JCheckBoxMenuItem sortByUpdateTimeMenuItem_byClickOut = null;private JCheckBoxMenuItem sortByNameMenuItem_byClickOut = null;private JMenuItem showOnLinePersonInfoMenuItem_byClickOut = null;private JCheckBoxMenuItem showNoKnownPersonGroupInfoMenuItem_byClickOut =null;private JCheckBoxMenuItem showBlockNameListMenuItem_byClickOut = null;public FriendInfoTreeNodePopupMenu_byClickOut() {super();}public FriendInfoTreeNodePopupMenu_byClickOut(String label) {super(label);}public FriendInfoTreeNodePopupMenu_byClickOut(String label,IMSystemMainFrame oneIMSystemMainFrame) {super(label);this.oneIMSystemMainFrame=oneIMSystemMainFrame;createThisTreeNodePopupMenu_byClickOut();}public FriendInfoTreeNodePopupMenu_byClickOut(ImageIcon imageIcon) { super(imageIcon);}private void createThisTreeNodePopupMenu_byClickOut(){personHeadImageMenu_byClickOut = new SelfDefineJMenu();personHeadImageMenu_byClickOut.setText("头像显示方式");personHeadImageMenu_byClickOut.setIcon(new ImageIcon(getClass().getResource("/images/treePopMenu/headimage.jpg")));this.add(personHeadImageMenu_byClickOut);ButtonGroup oneButtonGroup=new ButtonGroup();bigHeadImageMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(bigHeadImageMenuItem_byClickOut);smallHeadImageMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(smallHeadImageMenuItem_byClickOut);standardHeadImageMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();oneButtonGroup.add(standardHeadImageMenuItem_byClickOut);bigHeadImageMenuItem_byClickOut.setText("大头像");bigHeadImageMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"bigHeadImageMenuItem_onClick"));smallHeadImageMenuItem_byClickOut.setText("小头像");smallHeadImageMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"smallHeadImageMenuItem_onClick"));standardHeadImageMenuItem_byClickOut.setText("标准头像");standardHeadImageMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"standardHeadImageMenuItem_onClick"));showMyHeadImageMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();showMyHeadImageMenuItem_byClickOut.setText("显示我的头像");showMyHeadImageMenuItem_byClickOut.setSelected(true);showMyHeadImageMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"showMyHeadImageMenuItem_onClick"));personHeadImageMenu_byClickOut.add(bigHeadImageMenuItem_byClickOut);personHeadImageMenu_byClickOut.add(smallHeadImageMenuItem_byClickOut);personHeadImageMenu_byClickOut.add(standardHeadImageMenuItem_byClickOut);personHeadImageMenu_byClickOut.addSeparator();personHeadImageMenu_byClickOut.add(showMyHeadImageMenuItem_byClickOut);nameInfoShowMenu_byClickOut = new SelfDefineJMenu();nameInfoShowMenu_byClickOut.setText("名称显示");this.add(nameInfoShowMenu_byClickOut);ButtonGroup twoButtonGroup=new ButtonGroup();showAnnotationInfoMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();showAnnotationInfoMenuItem_byClickOut.setText("显示备注");showAnnotationInfoMenuItem_byClickOut.setSelected(true);showAnnotationInfoMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"showAnnotationInfoMenuItem_onClick"));twoButtonGroup.add(showAnnotationInfoMenuItem_byClickOut);showLoveNameInfoMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();twoButtonGroup.add(showLoveNameInfoMenuItem_byClickOut);showLoveNameInfoMenuItem_byClickOut.setText("显示昵称");showLoveNameInfoMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"showLoveNameInfoMenuItem_onClick"));nameInfoShowMenu_byClickOut.add(showAnnotationInfoMenuItem_byClickOut);nameInfoShowMenu_byClickOut.add(showLoveNameInfoMenuItem_byClickOut);columnShowMenu_byClickOut = new SelfDefineJMenu();columnShowMenu_byClickOut.setText("列表显示");this.add(columnShowMenu_byClickOut);ButtonGroup threeButtonGroup = new ButtonGroup();singleShowMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();threeButtonGroup.add(singleShowMenuItem_byClickOut);multiShowMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();threeButtonGroup.add(multiShowMenuItem_byClickOut);singleShowMenuItem_byClickOut.setText("单列显示");singleShowMenuItem_byClickOut.setSelected(true);singleShowMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"singleShowMenuItem_onClick"));columnShowMenu_byClickOut.add(singleShowMenuItem_byClickOut);multiShowMenuItem_byClickOut.setText("多列平铺");multiShowMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"multiShowMenuItem_onClick"));columnShowMenu_byClickOut.add(multiShowMenuItem_byClickOut);columnShowMenu_byClickOut.addSeparator();ShowClearInfoMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();ShowClearInfoMenuItem_byClickOut.setText("显示清爽资料");ShowClearInfoMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"ShowClearInfoMenuItem_onClick"));columnShowMenu_byClickOut.add(ShowClearInfoMenuItem_byClickOut);slideEffectMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();slideEffectMenuItem_byClickOut.setText("滑动效果");slideEffectMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"slideEffectMenuItem_onClick"));columnShowMenu_byClickOut.addSeparator();columnShowMenu_byClickOut.add(slideEffectMenuItem_byClickOut);this.addSeparator();sortShowMenu_byClickOut.setText("排序显示");this.add(sortShowMenu_byClickOut);ButtonGroup fourButtonGroup = new ButtonGroup();sortByIDMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByIDMenuItem_byClickOut);sortByUpdateTimeMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByUpdateTimeMenuItem_byClickOut);sortByNameMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();fourButtonGroup.add(sortByNameMenuItem_byClickOut);sortByIDMenuItem_byClickOut.setText("按身份标识排序");sortByUpdateTimeMenuItem_byClickOut.setText("按服务更新排序");sortByNameMenuItem_byClickOut.setText("按名称排序");sortShowMenu_byClickOut.add(sortByIDMenuItem_byClickOut);sortShowMenu_byClickOut.add(sortByUpdateTimeMenuItem_byClickOut);sortShowMenu_byClickOut.add(sortByNameMenuItem_byClickOut);this.addSeparator();showOnLinePersonInfoMenuItem_byClickOut = new SelfDefineJMenuItem();showOnLinePersonInfoMenuItem_byClickOut.setText("显示在线联系人");this.add(showOnLinePersonInfoMenuItem_byClickOut);this.addSeparator();showNoKnownPersonGroupInfoMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();showNoKnownPersonGroupInfoMenuItem_byClickOut.setText("显示陌生人分组");showNoKnownPersonGroupInfoMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"showNoKnownPersonGroupInfoMenuItem_onClick"));this.add(showNoKnownPersonGroupInfoMenuItem_byClickOut);showBlockNameListMenuItem_byClickOut = new SelfDefineJCheckBoxMenuItem();showBlockNameListMenuItem_byClickOut.setText("显示黑名单");showBlockNameListMenuItem_byClickOut.addActionListener(newIMSystemMainFrame_ActionListenerEventHandler(oneIMSystemMainFrame,"showBlockNameListMenuItem_onClick"));this.add(showBlockNameListMenuItem_byClickOut);}}4、FriendInfoTreeNodeSendMessagePopupMenu类(1)类名称为FriendInfoTreeNodeSendMessagePopupMenu,包名称为com.px1987.imsystem.client.frame.imsystemmainframe.tree,继承于ponent.SelfDefineJPopupMenu_ImageBar类(2)编程该类package com.px1987.imsystem.client.frame.imsystemmainframe.tree;import javax.swing.ImageIcon;import javax.swing.JMenu;import javax.swing.JMenuItem;import ponent.SelfDefineJMenu;import ponent.SelfDefineJMenuItem;import ponent.SelfDefineJPopupMenu_ImageBar;import com.px1987.imsystem.client.frame.IMSystemMainFrame;importcom.px1987.imsystem.client.frame.imsystemmainframe.treeevent.TreeNodeSendMessagePopup Menu_ActionListenerEventHandler;public class FriendInfoTreeNodeSendMessagePopupMenu extends SelfDefineJPopupMenu_ImageBar {private static final long serialVersionUID = 2935447048505581114L;private IMSystemMainFrame oneIMSystemMainFrame=null;private JMenuItem sendIMMessageToSomeOneMenuItem = null;private JMenuItem sendMessageByMobileMenuItem = null;private JMenuItem sendMailMenuItem = null;private JMenuItem sendFilesMenuItem = null;private JMenuItem talkMethodOneMenuItem =null;private JMenuItem talkMethodTwoMenuItem = null;private JMenuItem someOneFriendMenuItem = null;private JMenuItem moveToBlackListMenuItem = null;private JMenuItem deleteSomeOneFriendMenuItem = null;private JMenuItem noticeSomeOneMenuItem = null;private JMenuItem updateNameMenuItem = null;private JMenuItem setupPrivateMenuItem = null;private JMenuItem messageRecordMenuItem = null;private JMenuItem viewInfoMenuItem =null;public FriendInfoTreeNodeSendMessagePopupMenu() {super();}public FriendInfoTreeNodeSendMessagePopupMenu(String label) {super(label);}public FriendInfoTreeNodeSendMessagePopupMenu(String label,IMSystemMainFrame oneIMSystemMainFrame) {super(label);this.oneIMSystemMainFrame=oneIMSystemMainFrame;createThisTreeNodeSendMessagePopupMenu();}public FriendInfoTreeNodeSendMessagePopupMenu(ImageIcon imageIcon) { super(imageIcon);}private void createThisTreeNodeSendMessagePopupMenu(){sendIMMessageToSomeOneMenuItem = new SelfDefineJMenuItem();sendIMMessageToSomeOneMenuItem.setIcon(new ImageIcon(getClass().getResource( "/images/chatFrameImage/popUpMenu/3.jpg")));sendIMMessageToSomeOneMenuItem.setText("发送即时消息");sendIMMessageToSomeOneMenuItem.addActionListener(newTreeNodeSendMessagePopupMenu_ActionListenerEventHandler(oneIMSystemMainFrame, "sendIMMessageToSomeOneMenuItem_onClick"));this.add(sendIMMessageToSomeOneMenuItem);sendMessageByMobileMenuItem = new SelfDefineJMenuItem();sendMessageByMobileMenuItem.setText("发送手机信息");sendMessageByMobileMenuItem.setIcon(new ImageIcon(getClass().getResource("/images/chatFrameImage/popUpMenu/4.jpg")));this.add(sendMessageByMobileMenuItem);sendMailMenuItem = new SelfDefineJMenuItem();sendMailMenuItem.setText("发送电子邮件");this.add(sendMailMenuItem);talkMethodOneMenuItem = new SelfDefineJMenuItem(); talkMethodOneMenuItem.setText("交谈方式一");JMenu talkByVideoMenu = new SelfDefineJMenu();talkByVideoMenu.setText("影音交谈");talkByVideoMenu.add(talkMethodOneMenuItem); talkMethodTwoMenuItem = new SelfDefineJMenuItem(); talkMethodTwoMenuItem.setText("交谈方式二");talkByVideoMenu.add(talkMethodTwoMenuItem);this.add(talkByVideoMenu);sendFilesMenuItem = new SelfDefineJMenuItem();sendFilesMenuItem.setText("发送文件");this.add(sendFilesMenuItem);this.addSeparator();someOneFriendMenuItem = new SelfDefineJMenuItem(); someOneFriendMenuItem.setText("朋友");JMenu removeSomeOneMenu = new SelfDefineJMenu(); removeSomeOneMenu.setText("移动联系人至"); removeSomeOneMenu.setIcon(new ImageIcon(getClass().getResource("/images/chatFrameImage/popUpMenu/5.jpg"))); removeSomeOneMenu.add(someOneFriendMenuItem);this.add(removeSomeOneMenu);moveToBlackListMenuItem = new SelfDefineJMenuItem(); moveToBlackListMenuItem.setText("移至黑名单");this.add(moveToBlackListMenuItem); deleteSomeOneFriendMenuItem = new SelfDefineJMenuItem(); deleteSomeOneFriendMenuItem.setText("删除好友"); deleteSomeOneFriendMenuItem.setIcon(new ImageIcon(getClass().getResource( "/images/chatFrameImage/popUpMenu/6.jpg")));。

仿QQ系统需求规则说明书

仿QQ系统需求规则说明书

仿QQ系统需求规则说明书班级:信工11201姓名:吴义高学号:201205950目录第1章引言 (2)1.1 目标与功能 (3)1.2 系统概述 ................................................... . (3)1.3 约束条件 (3)第2章信息描述 (3)2.1 信息流 ..................................................... (3)2.2 对象描述 .................................................. . (5)2.3 数据关系 .................................................. .. (5)2、4 数据字典 (5)第3章功能描述 (7)3、1 处理说明 (7)3、2 性能说明 (8)第4章开发环境与开发工具 (8)4、1 开发环境 (8)4、2 开发工具 (8)第1章引言1.1 目标与功能局域网仿Q聊天工具是仿照腾讯QQ的主要功能设计,它主要针对当今社会节奏生活,主要特点包含通用性即在每个局域网内可以运行,系统具有较高的可移植性和使用性、也包含实用性各及时性,但系统双方的交流可以在短期内进行,以达到最快速度。

该项目主要功能包括:1、注册账号 2、登陆 3、个人信息管理 4、聊天处理 5、查找增加好友管理 6、群管理 7、聊天记录管理1.2 系统概述从技术上讲,系统就是采用当前先进的开发技术, 以客户机/服务器体系结构为系统基本框架的,基于VC++技术机制中基于SOCKET的局域网通信,以事务处理为核心的,具有开放性和正确性、健壮性、高效性、安全性、简捷性.它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。

而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(9)《设计模式》
作者:Erich Gamma 等
机械工业出版社
1.1.2 系统程序的结构
1、系统结构图
杨教授大学堂,版权所有,盗版必究。 2/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
2、体现系统架构的程序包图 (1)客户端程序包图
杨教授大学堂,版权所有,盗版必究。 3/22 页
操作权限
登录
用户登录
所有注册了改系统的用户
用户注册
所有用户
(3)系统性能
事务页面平均处理及响应时间:1—3 秒以内,最大不超过 5 秒。
(4)输入 - 处理 – 输出(IPO)流程
1)用户登录
Input
用户名(或邮箱或手机号);
杨教授大学堂,版权所有,盗版必究。 5/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
杨少波 编著 清华大学出版社 2008 年 10 月
(5)《精通 Struts 设计与开发》
作者:孙卫琴
电子工业出版社
(6)《Spring 从入门到精通》
作者:郭锋
清华大学出版社
(7)《Hibernate 开发技术祥解》
作者:孙卫琴
电子工业出版社
(8)《J2EE 应用开发技术祥解》
作者:刘晓华
电子工业出版社
如果用户连续 5 次使用同一个 IP 登录,软件将不要求用户在登录时输入验证码。 2)用户注册
Input
昵称 性别
生日
密码
邮箱地址
手机号
验证码
Processing Output
检验用户输入信息是否合法,若是,创建新用户记 录,将用户信息写入数据库,为用户分配 ID 号,并 将 ID 号返回给用户。 注册成共,获取 ID 号或注册失败。
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
基于 J2EE S2SH 架构的仿腾讯 QQ 的即时通讯系统项目——详细设计说明 书(第 1 部分)
1.1.1 引言
1、编写目的 本详细设计说明书的编写目的是在概要设计的基础上,对蓝梦教育集团 IM(即时通讯)
系统的设计进行详细的规划和描述,以对以后的工作的进行提供依据,并为之后的功能实 现作准备。具体目的有: (1)为项目经理为开发人员分配任务和控制项目进度提供依据; (2)为开发人员接下来要进行的编码工作提供依据; (3)为测试人员编写测试计划和设计测试用例提供依据; 2、预期读者
(5)相关的接口 模块名称
用户登陆模块
子模块
用户登录; 用户注册; 用户获取密码;
参数赋值和调用方式
public static boolean userLogin(); public void userRegister(user u); public void getPassword(int uid);
杨教授大学堂,版权所有,盗版必究。 6/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
关联的数据结构 补充说明
(6)流程逻辑设计 1)用户登录
User,userdao User 封装用户信息; Userdao 封装对用户信息的操作
用户通过客户端进行登录。填写 IM 号,邮箱或手机号与密码;登录时如果有错误(不 存在 IM 号,邮箱或手机号,密码错误)将返回错误信息;如果登陆成功将进入主页面。
2)用户注册
杨教授大学堂,版权所有,盗版必究。 7/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
用户通过客户端打开网页进行注册。填写相应信息;提交时如果有错误(必填信息不 完整,非法邮箱地址等)将转到错误页面提示相应错误信息;如果提交无误将完成注册并 返回成功信息并返回 IM 号。 (7)相关的类图
对本系统进行技术支持、维护管理的具有特定权限的用户,其工作内容包括对系统参 数配置、权限管理、系统软/硬件维护管理。 (5)功能权限
系统对各个功能进行了定义,用户只有具有相应功能的权限,才能使用该功能,目前 系统中展现的功能菜单受功能权限控制,即如果用户未被授予该项功能权限,相关的功能 菜单不可见。 (6)数据权限
密码;
登陆状态。
Processing
根据用户填写的登录信息查询数据库相关数据,数 据匹配即登录成功。
Output
登录成功或重新登录。
用户 A 登录,通知服务器自己在线,服务器通过系统广播通知 A 的好友 A 已上线(例 如,B 的好友列表中的 A 的头像亮起)。如果 A 设置隐身,那么服务器仍然将其作为在线 处理,但是会告诉 A 的好友,A 现在处于离线状态(A 的头像变灰)。
1)用户登录的类图
杨教授大学堂,版权所有,盗版必究。 8/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
杨教授大学堂,版权所有,盗版必究。 1/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
用户能够对哪些数据具有访问权限,即E 项目实训 Hibernate 框架技术(21 世纪高等学校实用软件工程教育规划教材)
杨少波 编著 清华大学出版社 2008 年 5 月
本详细设计说明书的预期读者为项目开发小组全体人员,尤其是项目的编码人员,及 本项目的客户——蓝梦教育集团的工作人员。 3、定义 (1)IM
企业即时通讯(Instant Messenger),简称 IM 系统。 (2)客户
项目投资方,在此为蓝梦教育集团。 (3)用户
产品的最终使用者,在此为蓝梦教育集团的员工。 (4)系统管理员
(2)J2EE 项目实训 Spring 框架技术(21 世纪高等学校实用软件工程教育规划教材)
杨少波 编著 清华大学出版社 2008 年 5 月
(3)J2EE 项目实训 UML 及设计模式(21 世纪高等学校实用软件工程教育规划教材)
杨少波 编著 清华大学出版社 2008 年 5 月
(4)J2EE 项目实训 Struts 框架技术(21 世纪高等学校实用软件工程教育规划教材)
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
(2)服务器端程序包图
杨教授大学堂,版权所有,盗版必究。 4/22 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
3、用户登陆和注册模块设计说明
(1)程序功能描述
设计目的:实现用户注册系统、登陆系统的功能。
(2)功能模块
模块名称 子功能模块
相关文档
最新文档