基于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技能培训有关的各个方面的业务、并期望能够取得比较好的效益和提高各项教育产品的质量以迎接新的挑战,需要全面地提升本土化的信息化项目建设的进度。
基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第3部分)

基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第3部分)1.1.1用户界面设计规范1、设计说明本文档主要针对即时通讯系统的用户界面设计风格标准进行描述,从而为客户提供界面设计参考。
2、概念和定义(1)用户界面即人机界面,实现用户与计算机信息交换的软件与硬件部分,主要表现为用户与计算机之间的通信,以控制计算机或进行用户和计算机之间的数据传送的系统部件。
(2)GUI(Graphical User Interface)即图形用户界面,又称为图形用户界面接口,一种可视化的用户界面,它使用图形界面代替正文界面显示计算机操作用户界面,以实现更为轻松的人机互动。
3、用户群体假定使用本系统的用户定义为:对计算机与浏览器的基本用法有一定了解,希望系统界面设计能够实现一般即时通讯系统的功能,并且体现公司特色、符合公司形象,便于公司员工之间的交流,提高工作效率,对实时性、易用性、简洁性、安全性有较高的要求的用户。
4、用户界面设计原则(1)即时通讯系统坚持图形用户界面(GUI)设计原则界面直观、清晰,对用户透明化(即用户接触系统时不需要进行进一步的培训,就可以对系统的功能一目了然,进行所需操作)(2)即时通讯系统采用简约的设计风格便于用户识别,易于用户操作。
界面风格以干净、简洁为主,更适于人机交互。
(3)即时通讯系统各个功能界面坚持风格统一简洁干净,充分考虑用户的各种需求,利于提高公司效率,并保证了一定的信息安全性。
(4)界面一致性在界面设计中应该保持界面的一致性。
一致性既包括程序内部一致性,即为使用统一的界面元素、标准的控件,也包括使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致;保持与约定俗成的习惯保持一致性,遵循界面规范。
从而确保界面整体风格以及细节风格具有一致性、整体感。
(5)显示信息一致性标准1)标签提示:字体为加重、楷体、黑色、蓝底或透明、无边框、居中、带冒号、一般情况为12px;2)日期:正常字体、宋体、白底黑字、3-D lowered;3)对齐方法:●居中:一般文字、单个数字、等。
(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 S2SH架构的仿腾讯QQ的即时通讯系统项目——详细设计说明书(第1部分)

(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课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯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部分)

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")));。
(完整word版)APP需求规格说明书
移动客户端概要规格说明书版本:1.0作者:审批:日期:日期:目录1.概述 。
..。
..。
.。
.。
.。
.。
..。
.。
.。
.。
.....。
.。
..。
.。
.。
.。
.。
..。
.。
...。
..。
...。
..。
.。
...。
.。
.。
..。
.。
.。
..。
.。
..。
...。
..。
...。
3 1.1 目的 .。
......。
....。
.。
.。
..。
.。
.。
..。
..。
..。
.。
..。
..。
.。
.。
...。
..。
.。
.。
.。
....。
.。
.。
....。
..。
.。
.。
..。
.。
..。
.。
.。
.。
..。
.。
...。
.。
3 1.2 范围 。
.。
..。
.。
.。
...。
.。
....。
....。
.。
..。
.。
....。
...。
...。
..。
.。
..。
..。
.。
.。
.。
.。
...。
...。
.。
..。
.。
.。
.。
.。
...。
.。
.。
.。
.。
......。
.。
3 2.功能需求 .。
....。
.。
......。
.。
.。
.。
.。
.。
..。
.。
....。
.。
.。
..。
.。
..。
..。
..。
.。
.。
..。
.。
..。
.。
.。
.。
.。
..。
.。
..。
...。
..。
.....。
....。
4 2.1服务端部署 。
.。
..。
....。
.。
..。
.。
.....。
..。
....。
...。
...。
.。
..。
..。
.。
.。
..。
...。
..。
.....。
.。
.。
.....。
.。
..。
..。
.。
.。
.。
....。
.。
..。
. 5 2.2登陆界面 。
.。
..。
.........。
..。
.。
.。
.。
.。
..。
...。
.。
.。
..。
.。
....。
.。
.。
.。
.。
.。
..。
.。
.。
.。
......。
..。
.。
..。
.。
..。
.。
..。
.。
..。
.。
....。
...。
6 2。
3书籍信息查询 .。
....。
.。
...。
.....。
......。
.。
....。
..。
..。
.。
.。
...。
..。
.。
.。
..。
.。
.。
..。
.....。
.。
......。
.。
...。
..。
基于J2EE S2SH架构的仿腾讯QQ的即时通讯系统项目——项目实训总结报告
1.1.2 张三同学的项目实训个人总结
这次的实训结束了, 作为一个项目小组的组长, 我不仅在学习知识方面有了很大的收获, 在项目管理上也懂得了许多。 首先作为项目负责人,必须需要一种责任,形成一个好的团队对组员负责是一个关键的 问题。所以在项目的开始我规定了进度控制、任务安排、制定了成员学习计划,并且在整 个开发过程中随时了解成员工作状态以及学习进度。在组员遇到问题的时候,我和技术总工 及时为他们解决,提出可行的解决方法,通过讨论和沟通大家一起同甘共苦的去完成那些 最艰难的问题。 在整个开发过程中我熟练地进行 Java 程序编码。通过参与项目需求、架构设计、详细 设计、O/R Mapping 设计、项目控制、版本管理、项目的单元测试及功能和性能测试,我 掌握了所学的技术和知识地综合应用的技巧、并培养和增强了项目的管理能力。在此期间 我与技术总工一起分析和思考,找出项目中所可能存在的缺陷或者不足,努力让项目更完
杨教授大学堂,版权所有,盗版必究。 2/26 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
善,更符合需求。 作为项目组长最重要的一个特点是要细致,在安排和检查工作的时候尤其要细致。在检 查的同时,我作为后备的编码人员,融入到团队中和大家一起开发,并且帮助他们解决主 要问题。大家一起努力,互相学习,编码知识有了极大的提高,也提高了小组的开发效率, 增加了项目开发的经验。 由于是第一次作为项目组长,以前还没有开始从头到尾开发和管理过一个项目,这次负 责一个完整的项目。刚开始以为这些工作没有什么技术含量,比较枯燥,然而出我所料的 是,经过一个多月的管理工作,却领会到了很多软件或项目开发领域中的学问,从技术的 角度来说,每个设计最终都可以做出来,但是一个项目的成功与否,不仅仅取决于技术上 的实现,还与完成的时间,产品的质量,团队的配合密切相关,所以良好的团队协作,透 明坦诚的项目沟通,精细周密的研发安排,充裕人员安排,这样才能保证一个项目的成功。 一个开发团队确实非常需要规范,这样维护起来才能把花费的精力减少,也减少了错误隐 患。我经过这次体会之后,一定会渐渐养成一个好的开发习惯,尽力做到规范。 在短短一个多月的实训中每位老师都能充分将自己的知识传授给我们, 并且有耐心的给 我们讲解所有问题,帮助每位同学了解企业的事务。希望在今后的生活学习与工作中充分 发挥自己的作用将所学到的知识运用到生活实践中为企业做出自己的贡献。
J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)系统需求说明书(第2部分)
J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)项目需求说明书(第2部分)蓝梦教育集团IM(即时通讯)系统——项目需求说明书目录第一章引言.................................................................................. 错误!未定义书签。
1.1编写目的.......................................................................... 错误!未定义书签。
1.2背景.................................................................................. 错误!未定义书签。
1.3定义.................................................................................. 错误!未定义书签。
1.4参考资料.......................................................................... 错误!未定义书签。
第二章任务概述.......................................................................... 错误!未定义书签。
2.1目标.................................................................................. 错误!未定义书签。
2.2用户的特点...................................................................... 错误!未定义书签。
SGPSHN-SRS_软件需求规格说明书-客户识别及受理 _第2版
河南客户识别及受理需求设计(第2版)1、界面概述对客户识别及业务受理页面进行合并,减少由于界面跳转造成的性能影响。
减少不必要的输入项目,减少操作过程,加快业务受理速度。
来电应答后,系统自动弹出识别及受理页面。
按1024*768分辨率全屏设计。
界面从上至下,从左至右分为:①来电及客户识别区、②上次来电记录区、③业务受理区(公共)、④、业务受理区(专项)、⑤操作区。
2、来电及客户识别区来电后,系统从话务平台获取来话号码、来话时间、客户拨打电话时所处的地市和区县。
(需话务平台提供数据)(时间自动保存)(来话所处的地市和区县待用)来电后,系统自动将“来话号码”带入“客户识别”的电话号码中,自动查询一次,精确查询C_CONTACT表中的“办公电话/住宅电话/移动电话/传真号码”。
●确)查询。
●●出框关闭,按输入条件进行查询。
●条件包括:用户编号(精确)、用电地址(左右模糊)、自定义查询号(精确)、缴费卡号(精确)、电表出厂编号(左右模糊)。
查询结果如下所列:,由操作员选择。
,与现有功能一致。
性能分析:首次查询为精确查询。
关联两个表,C_CONS(千万级)、C_CONTACT(百万级),及相关参数表。
3、上次来电记录区来电后,系统自动查询来电号码的最后一次来电记录(查询S_SRV_REQ. CALLING_NO来话号码码相同,精确查询),列出受理时间、工单编号(关联S_95598_WKST表)、业务类型、时长(S_95598_WKST. TIME_LEN)、受理人、工单状态、受理内容、处理结果(取最后一次)。
同时,查询S_SRV_REQ. CALLING_NO来话号码码相同的,时间为30日内的来电数量。
带入,清空其他所有条件(仅来话号码码),自动查询一次。
如果该号码没有历史服务记录,则该区数据为空。
性能分析:精确查询。
关联三个表,S_SRV_REQ(百万级)、S_95598_WKST(百万级)、O_STAFF (万级)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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技能培训有关的各个方面的业务、并期望能够取得比较好的效益和提高各项教育产品的质量以迎接新的挑战,需要全面地提升本土化的信息化项目建设的进度。
随着网络的普及,互联网上的交流越来越多,互联网上的各种娱乐业成为人们娱乐的焦点。
为了满足员工交流的方便本软件实现了即时通讯,又为了满足员工在闲暇时间的娱乐活动,拟计划开发出蓝梦教育集团即时通讯系统提高企业内部的工作效率。
本软件主要包括即时通讯的核心功能以满足广大员工对计算机的使用。
利用企业即时通讯(Instant Messenger,简称IM系统)可以建立一个以自身公司为核心的即时通讯平台,创造新型办公沟通模式,提升办公效率,降低企业通信费用,增强企业内部沟通能力,改善企业与客户之间的沟通渠道。
用户可以直接用邮箱、IM号和手机号登录,提供即时通讯等方面的功能。
本软件产品是一项独立的软件,而且全部内容自含。
本软件包括了通讯,新闻,远程协助,个人空间等,真正意义上的实现了一个软件的应用,多种功能的实现。
非常简洁易懂的操作适合各类员工。
2、为什么要开发此系统项目企业要应对WTO的挑战,特别是国有企业要实现跨地区、跨行业、跨所有制、跨国经营的战略目标,要实现技术创新战略、管理战略和市场开拓战略,要将企业工作重点转向技术创新、管理创新和制度创新的方向上来,信息化是必然选择和必要手段。
企业信息化涉及到对企业管理理念的创新,管理流程的优化,管理团队的重组和管理手段的革新。
蓝梦教育集团即时通讯系统一旦投入使用,将使集团公司在战略目标上取得大幅升级:(1)大幅提升公司形象,建立现代化信息管理体制。
(2)规范并优化企业内部各部门、各办事机构的业务流程,再造业务规范,对重点业务实行全面质量监控。
(3)实现各部门间的协同作、无纸办公。
(4)达到公司内部各部门、使用权限明了,杜绝互相推诿现象。
(5)开发决策支持系统,为企业决策层提供图形化、报表化的市场分析数据,能够对未来的公司业务发展、客户需求发展、市场发展作出预测。
(6)预留标准的EDI数据接口,可以方便地实现与关系部门的数据共享和交换。
(7)建设企业INTRANET/INTERNET网络平台。
(8)通过INTERNET实现全天候实时服务,充分满足客户的各种需求,全面提升客户服务水平,大大加强与客户的紧密度,将应用企业塑造成国际化企业的首选品牌。
3、用户的特点——本软件最终用户本软件的最终使用者是蓝梦教育集团的全体员工,其主要构成为教育工作者,特点是自身素质较高,但缺乏计算机方面的专业知识。
因此本软件在提供即时通讯的功能上,还要保证软件操作界面的友好、易用和便捷,以方便使用人员更好的操作,提高工作效率和质量。
(1)应用人员普通的公司员工,计算机水平可能很低,只能进行基本的计算机操作。
(2)管理人员需要具有一定的计算机水平,可以进行相应的数据管理与维护。
可以对计算机的实现原理不是很清楚,但必须对业务流程清楚。
4、假定和约束本软件假定面向的是公司员工进行通讯及娱乐的工具,该系统用户总数控制在200人以内。
假定整个软件开发周期要在半学期之内。
1.1.3系统的功能性需求规定1、系统上下文2、系统角色本系统主要有两种类型的用户:第一种是使用软件的用户,他们主要用软件进行通讯以及一些其他的功能。
另一种是系统管理员,管理员主要负责系统的维护,系统信息的查询,以及一些页面内容的更新等。
3、系统的功能模块4、系统相关的用例图(1)管理员用例图(2)用户用例图5、系统的功能描述(1)ADMIN101 管理员登陆登陆功能是任何一个系统都必须具备的基本功能,用户可以注册帐号并凭借此帐号成功登陆系统,还可以借助系统找回丢失的密码。
(2)ADMIN201 添加新管理员并赋予权限(3)ADMIN202修改用户信息(4)ADMIN203 删除用户(5)ADMIN204 添加用户(6)ADMIN205 各种查询(7)ADMIN206 新闻页面管理(8)USER301 用户登录登陆功能是任何一个系统都必须具备的基本功能,用户可以注册帐号并凭借此帐号成功登陆系统,还可以借助系统找回丢失的密码。
(9)USER401 添加删除好友(10)USER402 文字聊天作为一款即时通讯软件,其基本功能就是满足用户的文字聊天功能。
通过该系统,用户可以与好友进行文字聊天,同时可以参与群聊天。
用户还可以对一些基本信息,如个人信息,群信息,好友信息进行维护和管理。
(11)USER403 传输文件本聊天工具提供的文件传输功能具体包括:传输文件或文件夹、传输离线、文件断点传输。
功能描述如下:1)用户可以向好友发送文件或者文件夹,如果接收方在线,那么用户可以直接与对方进行传输;如果接收方不在线(离线或响应超时,时限设为1分钟),那么系统将提示用户选择离线发送或发送邮件的方式来发送文件。
2)当用户选择向好友发送离线文件时,系统将会将用户上传的文件保存在服务器中(保存时限为7天,文件在大小10M以下),并提示接收方用户及时查收文件,如果超过时限,那么离线传输将被自动取消。
3)如果用户在发送文件中出现网络问题(例如,接收方或发送方掉线,等等),抑或是传输双方主动进行中断传输的操作,导致发送行为被中断,系统向传输双方显示提示信息,并且在用户再次打开对话框的时候,提示用户可以进行继续进行传输。
断点一般最多能保此7天,超过此时限后需重新传输。
4)在传输的过程中,接收方和发送方都可以选择终止传输,暂停传输(断点传输),或重新开始传输。
在文件传输结束之后,系统显示传输成功提示消息,以便用户进行确认。
(12)USER404 语音聊天为使用户间聊天更加便捷,系统添加语音聊天功能。
用户在正常登陆本系统后,选择需要进行语音聊天的对象,点击语音聊天功能按钮,系统会向该对象发送语音聊天请求并等待对方响应,在系统允许的响应时间内建立用户之间的语音连接。
语音连接成功建立后,系统会显示连接状态及音量控制等信息并可以正常断开连接。
用户也可以接收来自其他客户机的语音聊天请求,用户可以自己选择是否同意与其建立连接,如果同意,则建立连接成功可以正常语音通话,如果不同意,则系统退出语音请求页面。
当然,如果客户机没有支持此功能的硬件设备如声卡,则系统无法调用此功能。
(13)USER405 视频聊天用户在正常登陆本系统后,选择需要进行视频聊天的对象,点击视频聊天功能按钮,系统会向该对象发送视频聊天请求并等待对方响应,在系统允许的响应时间内建立用户之间的视频连接。
视频连接成功建立后,用户可以与对方视频通信,同时系统会显示连接状态及音量控制等信息用户也可以接收来自其他客户机的视频聊天请求,用户可以自己选择是否同意与其建立连接,如果同意,则建立连接成功可以正常视频通信,并且系统支持用户选择开启语音在视频通信的同时进行语音聊天。
如果不同意,则系统退出视频请求页面。
当然,如果客户机没有支持此功能的硬件设备如摄像头,则系统无法调用此功能。
(14)USER406 邮件辅助(15)USER407 发送短信(16)USER501 远程协助(17)USER601 新闻浏览用户登录即时通讯系统后,系统自动弹出窗口,显示当日新闻标题。
用户点击标题,可进入链接,看到具体的新闻内容。
用户也可点击“X”按钮关闭该窗口。
在需要浏览时,可在系统面板中点击“资讯通”按钮,进入新闻窗口(即登录初自动弹出窗口)。
窗口首页为“蓝梦教育集团”,以标签形式将新闻按不同类别分类,如“新闻,财经,娱乐,体育,汽车”等。
点击不同标签,进入相应类别新闻总汇。
(18)USER602 个人空间(19)USER701 信息管理(20)USER702 当前状态(21)USER703 系统设定实现即时聊天系统操作的设置。