1、JQQ即时通讯系统的设计与实现JQQ即时通讯系统的设计与实现 摘 要运用Internet和Java开发技术,采用C/S模式,建立一个基于应用的即时通讯系统。本系统实现了用户注册,用户登陆,分组管理,好友管理,查询用户,用户即时通讯,查看聊天记录等功能。用户注册是通过系统来添加新的用户;用户登录用来验证用户的信息是否合法;分组管理功能主要是对分组的管理,如添加分组、删除分组等;好友管理功能主要是对好友的管理,如添加好友、删除好友等;查询用户是查询所有已注册的用户以便加为好友进行通讯;用户即时通讯使成为好友的双方可以即时在线交流;查看聊天记录保存了与好友通讯的所有记录。关键词即时通讯系统;C/S模
2、式;TCP;UDPJQQ instant messaging system design and ImplementationComputer Science and Technology MajorAbstract: The use of Internet and Java development technologies, using C / S mode, a real-time communication system based on application. The system implements user registration, user login, group adm
3、inistration, friends manage, query user, instant messaging, view the chat history. User registration is through the system to add new users; user login used to authenticate the users information is legitimate; group management functions mainly for the management of groups, such as adding a group, de
4、lete group, etc.; friends management functions mainly for friends management, such as adding friends, remove friends, etc.; query the user is the query to all registered users to add as friends to communicate; users to instant messaging to become friends of the two sides can exchange real-time onlin
5、e; view chat history with a good save Friends of the communication of all records.Key words: Instant messaging system; C / S mode; TCP; UDP目 录1 绪论11.1 项目背景11.2 国内外研究现状11.3 预期目标和经济效益21.4 课题简要介绍31.5系统创新点32 需求分析32.1 功能需求32.1.1 用户管理32.1.2 分组管理42.1.3 好友管理42.1.4 即时通讯52.2 通讯模型的特点52.2.1 适用性52.2.2 扩展性52.3 可行
6、性研究52.3.1 技术可行性分析52.3.2 不确定性分析62.3.3 分析结论62.4 运行环境63 概要设计63.1 框架设计63.2 拓扑结构73.3 功能设计93.2.1 用户注册模块93.2.2 用户登录模块103.2.3分组管理模块103.2.4 好友管理模块103.2.5 查询用户模块113.2.6 即时通讯模块113.2.7 聊天记录模块123.4 设计原则及一般要求124 系统设计124.1 模块设计124.2 即时通讯系统关系型数据库的实现124.2.1 数据库分析134.2.2 数据库概念设计134.2.3 数据库逻辑结构设计145 系统实现155.1 注册模块155.
7、2 登录模块175.3 分组管理模块185.3.1添加分组185.3.2删除分组205.4 好友管理模块215.4.1 添加好友215.4.2 删除好友235.5 查询用户模块245.6 即时通讯模块255.7 聊天记录模块266 测试报告286.1 测试基本要求286.1.1 内容检查286.1.2 易用性测试286.1.3 功能检查286.1.4 容错性测试286.2测试用例方法举例296.2.1 功能测试296.2.3 性能测试29结论及尚存在的问题30参考文献30致谢31JQQ即时通讯系统的设计与实现1 绪论即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。无论近在咫尺,还是远隔重洋
8、,通讯也只是在键盘和鼠标之间就可以解决问题。即时通讯服务非常适合企业内部或企业和客户之间的交流。网络聊天程序.越来越影响着我们的网络生活。随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业和单位在其内部使用局域网来进行工作和交流。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着局域网规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪
9、重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为工作效率的瓶颈。基于Socket的局域网聊天室是局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在局域网部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。1.1 项目背景即时聊天使亲友的沟通突破时空极限,使人与人的沟通突破上下级极限,使陌生人的沟通突破环境极限,使自我与外界的沟通突破心理极限 作为使用频率最高的网络软件,即时聊天已经突破了作为技术工具的极限,被认为是现代交流方式的象征,并构建起一种新的社会关系。它是
10、迄今为止对人类社会生活改变最为深刻的一种网络新形态,没有极限的沟通将带来没有极限的生活。 聊天一直是网民们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、OICQ(又称QQ)为代表的即时通讯软件。迄今为止,全球约有一亿多人使用即时通讯软件在网上交流。中国网民惯用的即时聊天工具腾讯QQ从1999年2月诞生到现在,注册用户已超过1.6亿,在线用户最高时超过200万人,而每天独立上线人数更是达到一千二百多万,拥有活跃用户5500万,几乎覆盖所有中国网民。 即时通讯工具使用频率之高,超出任何一种网络软件。电子邮件曾是最重要的通讯交流工具,是互联网最早的“杀手级应用。到200
11、4年,即时通讯软件已取代电子邮件,成为最流行的互联网通讯工具1.2 国内外研究现状即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享、语音聊天、网络会议等功能。截止到目前,全球约有近3亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。除了腾讯QQ和国外的几款著名即时通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件网易泡泡。朗玛公司也推出了名为UC的
12、通讯工具。即时通讯软件最早发布于1996年11月15日,以色列特拉维文的Mirabilis Ltd.发表了一个题为E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER INTERNET COMMUNICATIONS的新闻稿,同时发布了他们新产品ICQ(I Seek You)的Beta测试版。这天标志着Internet上的第一个成热的即时通讯系统(Instant Message System)的诞生。即时通讯服务在诞生之后的几年时间得到了迅猛发展,成为新增Internet用户的3个主要应用之一(WEB,电子邮件和
13、即时通讯)。在国内,1999年2月,深圳腾讯公司正式发布OICQ99 beta build 0210,开通腾讯即时通讯服务。2000年5月,腾讯QQ同时在线用户突破10万;2001年2月l0日,腾讯QQ同时在线用户突破100万。2004年4月份腾讯QQ同时在线人数最高记录已经突破了600万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息(SMS)成功结合起来。即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。国内QQ最大的敌手朗玛UC从2001年开始研发,2002年的12月份UC正式发布,并且首创了很多技术:UC是国内第一个做场景聊天的;UC是
14、第一个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一个把发送动画与即时通讯相结合的。在一年的发展里,UC一度达到峰值在线30万人,注册用户达到7000万。纵观即时通讯软件业的迅速发展,设计并开发一个即时通讯平台,对于现阶段的学习和研究,都是极为有意义的,基于这个前提和起因,我选择了设计一个名为JQQ的即时通讯系统作为我的毕业设计。1.3 预期目标和经济效益即时通讯简称IM(Instant Messaging),它是一种面向终端使用者的网络沟通工具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。即时通信利用的是互联网线路,通过文字、语音、视频、文件的信息
15、交流与互动,有效节省了沟通双方的时间与经济成本。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。即时通讯系统一旦开发完成,只需要一些基本维护和简单扩展的费用,产生的经济效益源源不断,相当乐观,有着很广阔的发展前景。1.4 课题简要介绍本课题之前:充分调查了市场主流类似通讯软件的优点与缺点;对大数操作者的年龄、职业、文化层次等做了一系列调查;在结合行业自身的特点的同时,也充分考虑到设计者自身的条件与现有技术成熟程度的基础上做出的一款适合大多数人使用的即时通讯软件。产品定位:大多数人能够使用,操作者有无相关专业知识都
16、可主要功能有:用户注册用户登陆分组管理好友管理即时通讯 查询用户 查询聊天记录实现技术:MyEclipse 7.1SQL Server 2000 数据库1.5 系统创新点操作简单、方便,快捷、准确、数据存储安全可靠,针对自身特点去除了不必要的冗余东西,使系统负担最小,速度最快;采用更高的安全机制,使数据更加安全,用户可以放心的使用。2 需求分析2.1 功能需求2.1.1 用户管理即时通讯系统拥有多个账户,允许多个用户注册;一个用户可以注册多个标识;注册所使用的帐号类型为字母数字的组合;注册新用户时必须填写符合要求的信息;注册后只有用户名与密码验证成功才能正确登录。用户管理如图2-1所示。图2-
17、1 用户管理用例图2.1.2 分组管理分组管理部分要能够实现分组的添加与删除,所添加的分组名称可以是中文也可以是字母数字的组合,通过对分组的有效管理以便于更方便的管理好友。分组管理如图2-2所示。图2-2 分组管理用例图2.1.3 好友管理用户可以查询所有用户;选择适当的可以加为好友;一个用户可以添加多个人为好友,一个用户也可以被多个人添加为好友;用户可以删除好友;用户只可以将好友放在一个组中。好友管理如图2-3所示。图2-3 好友管理用例图2.1.4 即时通讯即时通讯模块用户可以与在线的好友进行聊天,用户首先查看好友是否在线,如果在线即可进行即时通讯,并且用户可以查看与好友的所有聊天记录。即
18、时通讯如图2-4所示。图2-4 即时通讯用例图2.2 通讯模型的特点2.2.1 适用性作为一个一般性的模型,本通讯模型适用于无线网络和Internet上现存的多种系统。模型中的JQQ可以是Internet上的应用程序,也可以是移植到移动电话和其他各种无线手持设备上的应用程序。即时通讯和服务可以是Internet上ICQ服务,可以是GSM标准中的SMS(Short Message Service,短信息服务),也可以是NTT Do Co Me的I-MODE服务。2.2.2 扩展性模型具有很强的扩展性。本模型并没有规定服务必须采用中央服务器。在模型实现的时候,可以使用基于中央服务器的星形结构,也可
19、以使用对等网络结构甚至其他混合结构。例如,深圳腾讯QQ的通讯服务系统使用的是基于中央服务器的Client/Server的混合星型结构,而即时通讯服务使用的是对等网络加客户机服务器结构。2.3 可行性研究2.3.1 技术可行性分析(1)项目开发过程中遇到难以克服的技术问题,该怎么办。这一方面,我们庆幸的是在学校我们有好多的老师在背后支持着我们,同时学校的网络比较方面,给我们解决问题提供了方便。而且,凭借借阅图书馆收藏图书更增加了我们解决技术问题的信心。(2)软件的质量如何。有些应用对实时性要求很高,如果软件运行慢如蜗牛,即便功能完备也毫无实用价值。有些高风险的应用对软件的正确性与精确性要求极高,
20、如果软件出了差错而造成用户利益损失,那么软件开发在某种意义上说也就失败了。鉴于此,我们在编码测试的时候,找专业老师做为技术支持。并且在完成之后,实际验证可行性,同时要考虑到机器硬件设备的不同而给软件带来的不可预知的结果,所以在机房的不同电脑上运行软件达到测试目的。2.3.2 不确定性分析需要格外考虑的实际情况也可以说是面临的一个现实问题就是:毕业生面临着毕业与找工作,还有就是最后的毕业答辩与论文设计。这个过程中,学校会有许多有关毕业生的信息要安排,事物要处理。在进行课题设计的时候,难免会有一些格外的因素,如,时间被耽误,在规定的时间中无法完成相应的任务;有问题存在的时候,老师也恰巧也有事情,问
21、题无法及时解决等一系列问题,都是要考虑在内的。再有就是,最害怕在做系统的中途遇到系统崩溃而东西又无法保存;或者是东西全部做好之后,忘记了备份,而更为不巧的是以染上了病毒,而致使几个月的辛苦负于东流。这些是容易忽视的也是最容易出现的情况。所以要在设计的时候做足这方面的准备,不让那种情况发生。2.3.3 分析结论通过上面简要的分析,最后做出的结论是:方案可以按照时间要求、保证质量的基础上运用MyEclipse与SQL Server 2000 数据库进行系统的开发。2.4 运行环境操作系统:windows2000server中文版、windows 2003 Server或者Windows XP Sp
22、3数据库:SQL Server 2000 中文个人版开发工具:MyEclipse 7.1硬件配置:CPU 1.7GHz以上,内存512MB以上3 概要设计3.1 框架设计本系统总体框架如图3-1所示。图3-1 系统总体框架图3.2 拓扑结构 系统的拓扑结构如图3-2所示。S1S3S2C1C2C3客户端服务器星型结构服务器服务器对等结构模式一S1S3S2C1C2C3客户端服务器星型结构服务器服务器对等结构客户端客户机对等结构模式二CS服务器客户端客户端客户端连接客户端服务器连接服务器服务器连接图3-2 系统的拓扑结构图现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务
23、上面采用模式二(例如,深圳腾讯的QQ服务中的即时通讯服务,发信者首先考虑直接与即时收信箱进行通讯,如果发现直接通讯超时,会转为使用服务器中转完成通讯)。模式一是一种非常成熟的模式,大多数TCP/IP应用系统,例如SMTP服务、DNS服务、WWW服务等都是使用这种模式。模式二,对于模式一是一个技术上的修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的;JQQ正是实用模式二作为服务模式。JQQ的服务是由服务器构成的;JQQ中每个实体都由一个寄主服务器管理。个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。JQ
24、Q的通讯系统中只有存在发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。1) TCP协议TCP和UDP是TCP/IP协议族的两个主要的传输协议,TCP是面向连接的,UDP是面向无连接的,而实际上他们最大的区别在于为应用协议提供不同的服务,TCP协议为应用程序提供点到点的通信:建立可靠的连接。如果有故障发生,阻碍分组到达远程系统,或者服务器不接受连接,客户都会得到通知:数据可靠的交付,故障而不能交付,发送方会得到通知;具有流控的传输;双工的传输,单个TCP连接允许同时双向传送数据流模式,TCP从发送方到接收方发送没有报文边界的字节。2) U
25、DP协议UDP为应用程序提供多对多的通信,UDP在进行通讯的应用的数量上面,具有更大的灵活性。多个应用可以向一个接收方发送报文,一个发送方向也可以向多个接收方发送报文。UDP还可以使用底层网络的广播和组播设施交付报文:UDP提供的是不可靠交付语义,报文可能丢失、重复或者失序,而发送方是得不到通知的;缺乏流控制;报文模式,当有数据交付的时候,必须制定报文边界。3) 传输层协议的选定由于TCP和UDP的语义及其不同,如果要考虑应用协议所要求的语义,设计者就不能不在面向连接和无连接的传输协议间作出选择。利用面向连接的TCP协议,可以大大简化应用协议的设计工作。由于UDP不提供可靠的交付,无连接传输要
26、求应用协议提供可靠性,并在必要时,使用一种称为自适应重传的复杂技术。为现有的应用程序增加自适应重传比较困难,它需要程序员具有相当地专业知识。选择TCP一个很大的缺点就是,建立和中止连接的三次握手使TCP比起UDP开销大。在考虑是用UDP还是用TCP作为域名服务系统的运输层协议是,设计者往往陷入两难的境地。一个理想的解决方案应该既能提供可靠的数据传输,又不需要专门的建立和释放连接,不需要报文的反段和重组,同时还能是两端的空闲状态所处的时间最短。TCP什么都好,只可惜他需要建立和释放连接。还有一个严重的问题就是TCP在空闲的连接上根本不发送任何分组。假设客户与某个服务器建立了连接,并与之交换请求和
27、响应,接着便崩溃了。因为客户已经崩溃了,它就不会再发送任何请求了,然而,服务器到目前为止对它收到的所有请求都进行了响应,它便不会再向客户发送更多的数据了。这种情况下,服务器拥有分配给该连接的数据结构(包括缓存空间),这些资源不能被重新分配。服务器是设计成始终运行的。如果不断有客户崩溃,服务器就会耗尽资源(如套接字、缓存空间、TCP连接)从而中止运行。3.3 功能设计系统功能设计,如图3-3所示。客户端用户注册用户登录分组管理好友管理查询用户即时通讯聊天记录服务器登录服务查找好友在线服务端口分配图3-3 系统功能设计图3.2.1 用户注册模块用户需要正确填写自己的用户名、密码、真实姓名、性别、个
28、性签名等信息,如果用户名合法且未被占用,则可以注册成功。用户注册如图3-4所示。图3-4 用户注册流程图3.2.2 用户登录模块用户需要正确填写自己的用户名、密码,如果验证成功,则可以进入到JQQ即时通讯系统主面板,与在线好友进行即时通讯。用户登录如图3-5所示。图3-5 用户登录流程图3.2.3分组管理模块分组管理模块包括对分组的添加与删除。添加分组过程中,分组不能为空并且不能有重复的分组。删除分组过程中,只要选定要删除的分组,即可删除成功。分组管理如图3-6所示。图3-6 分组管理流程图3.2.4 好友管理模块好友管理模块包括对好友的添加与删除。添加好友过程中,好友不能为空,不能加自己为好
29、友,要添加的好友必须存在并且不能有重复的好友。删除好友过程中,只要选定所属分组下的相应好友,即可删除成功。好友管理如图3-7所示。图3-7 好友管理流程图3.2.5 查询用户模块查询用户模块列出了除了自己的所有用户的基本信息包括是否在线,用户可以根据需要加为好友并进行通讯,对于在线状态的好友可以进行在线交流。查询用户如图3-8所示。图3-8 查询用户流程图3.2.6 即时通讯模块即时通讯模块是本系统最关键的环节与目的所在。用户可以选择分组中的在线好友进行即时通讯,并且当交流完毕时自动保存聊天记录。即时通讯如图3-9所示。图3-9 即时通讯流程图3.2.7 聊天记录模块聊天记录模块主要记录了与相
30、应好友的所有聊天内容,可以方便的浏览一些重要信息和谈论话题等。3.4 设计原则及一般要求参照各模块的功能与具体的特点,我们设计的整个即时通讯系统应达到以下目的:(1)稳定性。整个系统应能稳定运行,硬件配置的局部改变不会影响整体的正常运行,其它系统的差错不会导致即时通讯系统无法正确运作。(2)准确性。系用户按操作要求操作产生的数据与数据库产生的变化应严格保持一致,杜绝错误、异常等情况的出现。(3)安全性。所有数据定时备份,错误的出现由系统自动记录备份文件,以备查验,避免用户误操作而造成不必要的损失。(4)易使用性。即时通讯系统的界面与操作人员的交互性好,用Client/Server(客户端/服务
31、器)结构。4 系统设计4.1 模块设计功能模块设计如表4-1所示:表4-1 功能模块设计表功能模块用户注册模块1.用户注册用户登录模块1.用户登录分组管理模块1.添加分组2.删除分组好友管理模块1.添加好友2.删除好友 查询用户模块1.查询用户即时通讯模块1.即时通讯聊天记录模块1.查看聊天记录4.2 即时通讯系统关系型数据库的实现Microsoft SQL Server 2000 是一个高性能的客户端/服务器结构的关系数据库管理系统(RDBMS)。SQL Server 2000是为支持高容量的事务处理(比如在线订购录入、存货目录、记账或制造)以及数据仓库和决策支持系统而设计的。它运行在Mic
32、rosoft Windows NT4或Microsoft Windows 2000 Server上基于使用Intel处理器的网络。也能够为其他的Microsoft操作系统提供很多客户端工具和网络接口。由于SQL Server的开放结构,其他系统也能和它交互操作。使用它可以完成事务处理、存储和分析数据以及创建新的应用程序。其中SQL Server的RDBMS负责维护数据库中数据之间的关系,确保正确的存储数据和不违反定义数据之间的规则,而且在系统发生错误时将所有数据恢复到某个已知的、具备一致性的检查点上。SQL Server 2000就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索
33、。SQL Server 2000 的优点在于它能使用数据表示图或自定义窗体收集信息。数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,报填数据的完整和一致。另外,合理的数据库结构将非常有利于程序的实现。设计数据可系统是应该首先充分了解用户各个方面的要求,包括现有的以及将来可能增加的要求。4.2.1 数据库分析即时通讯系统需求包括对用户信息、分组信息、好友信息等各方面信息的管理,这些信息都需要保存在数据库中,因此需要建立一些相应的表结构来存储这些相应的数据。针对这些情况,我们大致建立了以下若
34、干表来存储相应的信息:表名:用户表,分组表,好友表等。1) 用户表:包括的数据项有:用户名、密码、真实姓名、性别、个性签名、是否在线、登录IP、绑定端口等。2) 分组表:包括的数据项有:分组名称、用户等。3) 好友表:包括的数据项有:好友名称、所在分组、用户等。4.2.2 数据库概念设计根据前面的需求分析和概要设计规划出本系统所使用的实体对象,分别为:用户实体、分组实体、好友实体。下面将给出几个关键实体的E-R图。(1) 用户实体用户实体包括用户名、密码、真实姓名、性别、个人签名、是否在线、登录IP、绑定端口等。其E-R图如下所示。图4-1 用户实体E-R图(2) 分组实体分组实体包括分组名称
35、、用户等。其E-R图如下所示。图4-2 分组实体E-R图(3) 好友实体好友实体包括好友名称、所在分组,用户等。其E-R图如下所示。图4-3 好友实体E-R图4.2.3 数据库逻辑结构设计根据上面所做的总结,再参考系统的实际需要,表及逻辑结构如下图所示:1) 用户表users,如下所示。表4-2 用户表字段名数据类型字段说明备注usernameVarchar(20)用户名主键passwordvarchar(20)密码不允许为空namevarchar(50)真实姓名不允许为空sexvarchar(10)性别不允许为空signvarchar(512)个性签名允许为空isonlineBit(1)是否
36、在线不允许为空(默认0)loginIPvarchar(20)登录IP允许为空bindportInt(4)绑定端口不允许为空(默认0)2) 分组表groups,如下所示。表4-3 分组表字段名数据类型字段说明备注g_namevarchar(50)分组名称主键Owner_groupvarchar(50)用户主键3) 好友表friends,如下所示。表4-4 好友表字段名数据类型字段说明备注friendvarchar(50)好友名称主键group_invarchar(50)所在分组主键owner_friendvarchar(50)用户主键5 系统实现5.1 注册模块如果用户名不存在,则可以使用此用户
37、名,然后输入用户的密码、真实姓名、性别个性签名等成功注册。注册模块如图5-1所示。图5-1 用户注册图主要代码实现如下:public int Verify() /验证用户名是否存在String username = txtUserName.getText().trim();UserItem ui = new UserItem();ui.setUsername(username);Protocal proVerifyUser = new Protocal(ProtocalNumber.VERIFYUSER2, ,ui);SendPacket sp = new SendPacket(proVeri
38、fyUser);int result = (Integer) sp.Send().intValue();return result;public void actionPerformed(ActionEvent e) /用户注册JButton btnSource = (JButton) e.getSource();if (btnSource = btnOK) int res = Verify();if (res = 0) regUser = new UserItem(username, password, name,sex, sign, , false, 0); Protocal proAdd
39、User = new Protocal(ProtocalNumber.ADDUSER, regUser); SendPacket sp = new SendPacket(proAddUser); int result = (Integer) sp.Send().intValue(); if (result !=0) JOptionPane.showMessageDialog(this, 注册成功,请登陆!,注册用户, JOptionPane.INFORMATION_MESSAGE);new frmLogin();确认信息填写无误后,点击注册按钮就可注册成功,如图5-2所示:图5-2 用户注册成
40、功图5.2 登录模块本部分主要用于用户的登录,只有在注册后才可以进入系统,用户登录时将按照用户名和密码进行验证,当输入错误时会出现相应的提示,当用户名和密码都正确时进入程序主界面,才能进行日常管理工作。该模块的界面设计如图5-3所示。图5-3 登录界面如果登录身份验证成功,则进入主界面如图5-4所示:图5-4 主界面如果用户名或密码错误则会提示,需要重新输入。主要代码实现如下:public void actionPerformed(ActionEvent e) JButton btnSource = (JButton) e.getSource(); if (btnSource = btnLog
41、in) int bindport = CommonData.GetBindPort();String loginIP = CommonData.GetLocalIP();UserItem ui = new UserItem();ui.setUsername(username);ui.setPassword(password);ui.setBindport(bindport); ui.setLoginIP(loginIP);Protocal proVerifyUser = new Protocal(ProtocalNumber.VERIFYUSER, ui);SendPacket sp = ne
42、w SendPacket(proVerifyUser);int result = (Integer) sp.Send().intValue();if (result !=0) JOptionPane.showMessageDialog(this,登录成功!, 用户登录,JOptionPane.INFORMATION_MESSAGE); this.dispose();new FrmMain(ui.getUsername(); elseJOptionPane.showMessageDialog(this, 用户名或密码错误!, 用户登录,JOptionPane.INFORMATION_MESSAG
43、E); this.txtUserName.setText(); this.txtPassword.setText();5.3 分组管理模块5.3.1 添加分组主要功能是添加分组以便管理好友,如图5-5所示。图5-5添加分组界面主要代码实现如下:public void actionPerformed(ActionEvent e) /添加分组if (e.getSource() = jbok) g_name = (String) text.getText().trim();if (g_name.equals() JOptionPane.showMessageDialog(this, 分组名称不能为空
44、!, 添加分组, JOptionPane.INFORMATION_MESSAGE);return;gi = new GroupItem();gi.setG_name(g_name);gi.setOwner_group(CommonData.currUser.getUsername();Protocal proaddgroup = new Protocal(ProtocalNumber.ADDGROUP, CommonData.currUser.getUsername(), gi);SendPacket sp = new SendPacket(proaddgroup);int result =
45、(Integer) sp.Send().intValue();if (result = 1) JOptionPane.showMessageDialog(this, 此分组已添加过!, 添加分组, JOptionPane.INFORMATION_MESSAGE); text.setText();return;if(result =0) JOptionPane.showMessageDialog(this, 添加分组成功!, 添加分组, JOptionPane.INFORMATION_MESSAGE); this.dispose();5.3.2 删除分组主要功能是删除分组同时删除分组下的所有好友。如图5-6所示。图5-6 删除分组界面主要代码实现如下:public void actionPerformed(ActionEvent e) /删除分组if (e.getSource() = jbok) tryString g_name=choiceGroup.ge