版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、jqq 即时通讯系统的设计与实现 计算机科学与技术专业 摘摘 要要 运用 internet 和 java 开发技术,采用 c/s 模式,建立一个基于应用的 即时通讯系统。本系统实现了用户注册,用户登陆,分组管理,好友管理,查询用户, 用户即时通讯,查看聊天记录等功能。用户注册是通过系统来添加新的用户;用户登 录用来验证用户的信息是否合法;分组管理功能主要是对分组的管理,如添加分组、 删除分组等;好友管理功能主要是对好友的管理,如添加好友、删除好友等;查询用 户是查询所有已注册的用户以便加为好友进行通讯;用户即时通讯使成为好友的双方 可以即时在线交流;查看聊天记录保存了与好友通讯的所有记录。 关
2、键词关键词即时通讯系统;c/s 模式;tcp;udp jqq instant messaging system design and implementation computer science and technology major abstract: 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, u
3、ser login, group administration, 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 a
4、s adding a group, delete 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 exch
5、ange real-time online; 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 绪论 .1 1.1 项目背景 .1 1.2 国内外研究现状 .1 1.3 预期目标和经济效益 .2 1.4 课题简要介绍 .3 1.5 系统创新点.3 2 需求分析 .3 2.1 功能需求 .3 2.1.1 用户管理.3 2.1.2 分组管理.4 2.1.3 好友管
6、理.4 2.1.4 即时通讯.5 2.2 通讯模型的特点 .5 2.2.1 适用性.5 2.2.2 扩展性.5 2.3 可行性研究 .5 2.3.1 技术可行性分析.5 2.3.2 不确定性分析.6 2.3.3 分析结论.6 2.4 运行环境 .6 3 概要设计 .6 3.1 框架设计 .6 3.2 拓扑结构 .7 3.3 功能设计 .9 3.2.1 用户注册模块.9 3.2.2 用户登录模块.10 3.2.3 分组管理模块 .10 3.2.4 好友管理模块.10 3.2.5 查询用户模块.11 3.2.6 即时通讯模块.11 3.2.7 聊天记录模块.12 3.4 设计原则及一般要求 .12
7、 4 系统设计 .12 4.1 模块设计 .12 4.2 即时通讯系统关系型数据库的实现 .12 4.2.1 数据库分析.13 4.2.2 数据库概念设计.13 4.2.3 数据库逻辑结构设计.14 5 系统实现 .15 5.1 注册模块 .15 5.2 登录模块 .17 5.3 分组管理模块 .18 5.3.1 添加分组 .18 5.3.2 删除分组 .20 5.4 好友管理模块 .21 5.4.1 添加好友.21 5.4.2 删除好友.23 5.5 查询用户模块 .24 5.6 即时通讯模块 .25 5.7 聊天记录模块 .26 6 测试报告 .28 6.1 测试基本要求 .28 6.1.
8、1 内容检查.28 6.1.2 易用性测试.28 6.1.3 功能检查.28 6.1.4 容错性测试.28 6.2 测试用例方法举例.29 6.2.1 功能测试.29 6.2.3 性能测试.29 结论及尚存在的问题 .30 参考文献 .30 致谢 .31 1 绪论 即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。无论近在咫尺,还是 远隔重洋,通讯也只是在键盘和鼠标之间就可以解决问题。即时通讯服务非常适合企 业内部或企业和客户之间的交流。网络聊天程序.越来越影响着我们的网络生活。 随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各 种事务的目的,越来越多的企业和单位在其内
9、部使用局域网来进行工作和交流。在内 部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效 率。然而,随着局域网规模的扩大,业务量的增加,在局域网上运行的应用越来越多, 如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息 吞吐、处理能力的要求也越来越高。这些在原有局域网设计之初未曾考虑到的新情况 的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效 率,反而成为工作效率的瓶颈。基于 socket 的局域网聊天室是局域网通信软件的具体 实例之一,它很好地诠释了 socket 通信的原理,并且在局域网部通信、教学、讨论等 应用中都具
10、有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资 源低,占用服务器吞吐能力低,易于编程实现等优点。 1.1 项目背景 即时聊天使亲友的沟通突破时空极限,使人与人的沟通突破上下级极限,使陌生 人的沟通突破环境极限,使自我与外界的沟通突破心理极限 作为使用频率最高的网络软件,即时聊天已经突破了作为技术工具的极限,被认 为是现代交流方式的象征,并构建起一种新的社会关系。它是迄今为止对人类社会生 活改变最为深刻的一种网络新形态,没有极限的沟通将带来没有极限的生活。 聊天一直是网民们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天 室、论坛变为以 msn、oicq(又称 qq)为代
11、表的即时通讯软件。迄今为止,全球约有一 亿多人使用即时通讯软件在网上交流。中国网民惯用的即时聊天工具腾讯 qq 从 1999 年 2 月诞生到现在,注册用户已超过 1.6 亿,在线用户最高时超过 200 万人,而每天 独立上线人数更是达到一千二百多万,拥有活跃用户 5500 万,几乎覆盖所有中国网民。 即时通讯工具使用频率之高,超出任何一种网络软件。电子邮件曾是最重要的通 讯交流工具,是互联网最早的“杀手级应用。到 2004 年,即时通讯软件已取代电子邮 件,成为最流行的互联网通讯工具 1.2 国内外研究现状 即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能 够让您迅速地
12、在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且, 现在不少即时通讯软件还集成了文件共享、语音聊天、网络会议等功能。截止到目前, 全球约有近 3 亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计 的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间, 即时通讯市场硝烟四起。除了腾讯 qq 和国外的几款著名即时通讯软件纷纷推出新版本, 网易也推出了一种新的即时通讯软件网易泡泡。朗玛公司也推出了名为 uc 的通讯 工具。 即时通讯软件最早发布于 1996 年 11 月 15 日,以色列特拉维文的 mirabilis ltd. 发表了一个题为e.t
13、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,电子邮件和即时通讯)。 在国内,1999 年 2 月,深圳腾讯公司正式发布 oicq99 beta build
14、 0210,开通腾 讯即时通讯服务。2000 年 5 月,腾讯 qq 同时在线用户突破 10 万;2001 年 2 月 l0 日, 腾讯 qq 同时在线用户突破 100 万。2004 年 4 月份腾讯 qq 同时在线人数最高记录已经 突破了 600 万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已 经将即时通讯与手机短信息(sms)成功结合起来。即时通讯软件涉及和影响的领域已近 越来越广,其竞争也越来越激烈。国内 qq 最大的敌手朗玛 uc 从 2001 年开始研发, 2002 年的 12 月份 uc 正式发布,并且首创了很多技术:uc 是国内第一个做场景聊天的; uc 是第一
15、个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一 个把发送动画与即时通讯相结合的。在一年的发展里,uc 一度达到峰值在线 30 万人, 注册用户达到 7000 万。 纵观即时通讯软件业的迅速发展,设计并开发一个即时通讯平台,对于现阶段的 学习和研究,都是极为有意义的,基于这个前提和起因,我选择了设计一个名为 jqq 的即时通讯系统作为我的毕业设计。 1.3 预期目标和经济效益 即时通讯简称 im(instant messaging) ,它是一种面向终端使用者的网络沟通工 具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。 即时通信利用的是互联网线路,通
16、过文字、语音、视频、文件的信息交流与互动, 有效节省了沟通双方的时间与经济成本。即时通信不再是一个单纯的聊天工具,它已 经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体 的综合化信息平台。 即时通讯系统一旦开发完成,只需要一些基本维护和简单扩展的费用,产生的经 济效益源源不断,相当乐观,有着很广阔的发展前景。 1.4 课题简要介绍 本课题之前:充分调查了市场主流类似通讯软件的优点与缺点;对大数操作者的 年龄、职业、文化层次等做了一系列调查;在结合行业自身的特点的同时,也充分考 虑到设计者自身的条件与现有技术成熟程度的基础上做出的一款适合大多数人使用的 即时通讯软件。
17、产品定位: 大多数人能够使用,操作者有无相关专业知识都可 主要功能有: 用户注册 用户登陆 分组管理 好友管理 即时通讯 查询用户 查询聊天记录 实现技术: myeclipse 7.1 sql server 2000 数据库 1.5 系统创新点 操作简单、方便,快捷、准确、数据存储安全可靠,针对自身特点去除了不必要 的冗余东西,使系统负担最小,速度最快;采用更高的安全机制,使数据更加安全, 用户可以放心的使用。 2 需求分析 2.1 功能需求 2.1.1 用户管理 即时通讯系统拥有多个账户,允许多个用户注册;一个用户可以注册多个标识; 注册所使用的帐号类型为字母数字的组合;注册新用户时必须填写
18、符合要求的信息; 注册后只有用户名与密码验证成功才能正确登录。用户管理如图 2-1 所示。 图 2-1 用户管理用例图 2.1.2 分组管理 分组管理部分要能够实现分组的添加与删除,所添加的分组名称可以是中文也可 以是字母数字的组合,通过对分组的有效管理以便于更方便的管理好友。分组管理如 图 2-2 所示。 图 2-2 分组管理用例图 2.1.3 好友管理 用户可以查询所有用户;选择适当的可以加为好友;一个用户可以添加多个人为 好友,一个用户也可以被多个人添加为好友;用户可以删除好友;用户只可以将好友 放在一个组中。好友管理如图 2-3 所示。 图 2-3 好友管理用例图 2.1.4 即时通讯
19、 即时通讯模块用户可以与在线的好友进行聊天,用户首先查看好友是否在线,如 果在线即可进行即时通讯,并且用户可以查看与好友的所有聊天记录。即时通讯如图 2-4 所示。 图 2-4 即时通讯用例图 2.2 通讯模型的特点 2.2.1 适用性 作为一个一般性的模型,本通讯模型适用于无线网络和 internet 上现存的多种系 统。模型中的 jqq 可以是 internet 上的应用程序,也可以是移植到移动电话和其他各 种无线手持设备上的应用程序。即时通讯和服务可以是 internet 上 icq 服务,可以是 gsm 标准中的 sms(short message service,短信息服务),也可以
20、是 ntt do co me 的 i-mode 服务。 2.2.2 扩展性 模型具有很强的扩展性。本模型并没有规定服务必须采用中央服务器。在模型实 现的时候,可以使用基于中央服务器的星形结构,也可以使用对等网络结构甚至其他 混合结构。例如,深圳腾讯 qq 的通讯服务系统使用的是基于中央服务器的 client/server 的混合星型结构,而即时通讯服务使用的是对等网络加客户机服务 器结构。 2.3 可行性研究 2.3.1 技术可行性分析 (1)项目开发过程中遇到难以克服的技术问题,该怎么办。 这一方面,我们庆幸的是在学校我们有好多的老师在背后支持着我们,同时学校 的网络比较方面,给我们解决问题
21、提供了方便。而且,凭借借阅图书馆收藏图书更增 加了我们解决技术问题的信心。 (2)软件的质量如何。 有些应用对实时性要求很高,如果软件运行慢如蜗牛,即便功能完备也毫无实用 价值。有些高风险的应用对软件的正确性与精确性要求极高,如果软件出了差错而造 成用户利益损失,那么软件开发在某种意义上说也就失败了。 鉴于此,我们在编码测试的时候,找专业老师做为技术支持。并且在完成之后, 实际验证可行性,同时要考虑到机器硬件设备的不同而给软件带来的不可预知的结果, 所以在机房的不同电脑上运行软件达到测试目的。 2.3.2 不确定性分析 需要格外考虑的实际情况也可以说是面临的一个现实问题就是:毕业生面临着毕 业
22、与找工作,还有就是最后的毕业答辩与论文设计。这个过程中,学校会有许多有关 毕业生的信息要安排,事物要处理。在进行课题设计的时候,难免会有一些格外的因 素,如,时间被耽误,在规定的时间中无法完成相应的任务;有问题存在的时候,老 师也恰巧也有事情,问题无法及时解决等一系列问题,都是要考虑在内的。 再有就是,最害怕在做系统的中途遇到系统崩溃而东西又无法保存;或者是东西 全部做好之后,忘记了备份,而更为不巧的是以染上了病毒,而致使几个月的辛苦负 于东流。这些是容易忽视的也是最容易出现的情况。所以要在设计的时候做足这方面 的准备,不让那种情况发生。 2.3.3 分析结论 通过上面简要的分析,最后做出的结
23、论是:方案可以按照时间要求、保证质量的 基础上运用 myeclipse 与 sql server 2000 数据库进行系统的开发。 2.4 运行环境 操作系统:windows2000server 中文版、windows 2003 server 或者 windows xp sp3 数据库:sql server 2000 中文个人版 开发工具:myeclipse 7.1 硬件配置:cpu 1.7ghz 以上,内存 512mb 以上 3 概要设计 3.1 框架设计 本系统总体框架如图 3-1 所示。 图 3-1 系统总体框架图 3.2 拓扑结构 系统的拓扑结构如图 3-2 所示。 s1 s3 s2
24、c1 c2 c3 客户端服务器星型结构 服务器服务器对等结构 模式一 s1 s3 s2 c1 c2 c3 客户端服务器星型结构 服务器服务器对等结构 客户端客户机对等结构 模式二 c s服务器客户端 客户端客户端连接 客户端服务器连接 服务器服务器连接 图 3-2 系统的拓扑结构图 现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时 通讯服务上面采用模式二(例如,深圳腾讯的 qq 服务中的即时通讯服务,发信者首先 考虑直接与即时收信箱进行通讯,如果发现直接通讯超时,会转为使用服务器中转完 成通讯)。 模式一是一种非常成熟的模式,大多数 tcp/ip 应用系统,例如 smtp
25、 服务、dns 服 务、www 服务等都是使用这种模式。模式二,对于模式一是一个技术上的修正,虽然这 个修正带来了新的问题,但是其实用性是不可质疑的;jqq 正是实用模式二作为服务模 式。 jqq 的服务是由服务器构成的;jqq 中每个实体都由一个寄主服务器管理。个体必 须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时 通讯服务外的实体,而即时收信箱则存在于寄主服务器中。jqq 的通讯系统中只有存在 发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他 用户的存在,与其他用户进行交流。 1) tcp 协议 tcp 和 udp 是 tcp/ip 协
26、议族的两个主要的传输协议,tcp 是面向连接的,udp 是 面向无连接的,而实际上他们最大的区别在于为应用协议提供不同的服务,tcp 协议为 应用程序提供点到点的通信:建立可靠的连接。如果有故障发生,阻碍分组到达远程 系统,或者服务器不接受连接,客户都会得到通知:数据可靠的交付,故障而不能交 付,发送方会得到通知;具有流控的传输;双工的传输,单个 tcp 连接允许同时双向 传送数据流模式,tcp 从发送方到接收方发送没有报文边界的字节。 2) udp 协议 udp 为应用程序提供多对多的通信,udp 在进行通讯的应用的数量上面,具有更大 的灵活性。多个应用可以向一个接收方发送报文,一个发送方向
27、也可以向多个接收方 发送报文。udp 还可以使用底层网络的广播和组播设施交付报文:udp 提供的是不可靠 交付语义,报文可能丢失、重复或者失序,而发送方是得不到通知的;缺乏流控制; 报文模式,当有数据交付的时候,必须制定报文边界。 3) 传输层协议的选定 由于 tcp 和 udp 的语义及其不同,如果要考虑应用协议所要求的语义,设计者就 不能不在面向连接和无连接的传输协议间作出选择。利用面向连接的 tcp 协议,可以 大大简化应用协议的设计工作。由于 udp 不提供可靠的交付,无连接传输要求应用协 议提供可靠性,并在必要时,使用一种称为自适应重传的复杂技术。为现有的应用程 序增加自适应重传比较
28、困难,它需要程序员具有相当地专业知识。 选择 tcp 一个很大的缺点就是,建立和中止连接的三次握手使 tcp 比起 udp 开销 大。在考虑是用 udp 还是用 tcp 作为域名服务系统的运输层协议是,设计者往往陷入 两难的境地。一个理想的解决方案应该既能提供可靠的数据传输,又不需要专门的建 立和释放连接,不需要报文的反段和重组,同时还能是两端的空闲状态所处的时间最 短。tcp 什么都好,只可惜他需要建立和释放连接。 还有一个严重的问题就是 tcp 在空闲的连接上根本不发送任何分组。假设客户与 某个服务器建立了连接,并与之交换请求和响应,接着便崩溃了。因为客户已经崩溃 了,它就不会再发送任何请
29、求了,然而,服务器到目前为止对它收到的所有请求都进 行了响应,它便不会再向客户发送更多的数据了。这种情况下,服务器拥有分配给该 连接的数据结构(包括缓存空间),这些资源不能被重新分配。服务器是设计成始终运 行的。如果不断有客户崩溃,服务器就会耗尽资源(如套接字、缓存空间、tcp 连接)从 而中止运行。 3.3 功能设计 系统功能设计,如图 3-3 所示。 客户端 用 户 注 册 用 户 登 录 分 组 管 理 好 友 管 理 查 询 用 户 即 时 通 讯 聊 天 记 录 服务器 登 录 服 务 查 找 好 友 在 线 服 务 端 口 分 配 图 3-3 系统功能设计图 3.2.1 用户注册模
30、块 用户需要正确填写自己的用户名、密码、真实姓名、性别、个性签名等信息,如 果用户名合法且未被占用,则可以注册成功。用户注册如图 3-4 所示。 图 3-4 用户注册流程图 3.2.2 用户登录模块 用户需要正确填写自己的用户名、密码,如果验证成功,则可以进入到 jqq 即时 通讯系统主面板,与在线好友进行即时通讯。用户登录如图 3-5 所示。 图 3-5 用户登录流程图 3.2.3 分组管理模块 分组管理模块包括对分组的添加与删除。添加分组过程中,分组不能为空并且不 能有重复的分组。删除分组过程中,只要选定要删除的分组,即可删除成功。分组管 理如图 3-6 所示。 图 3-6 分组管理流程图
31、 3.2.4 好友管理模块 好友管理模块包括对好友的添加与删除。添加好友过程中,好友不能为空,不能 加自己为好友,要添加的好友必须存在并且不能有重复的好友。删除好友过程中,只 要选定所属分组下的相应好友,即可删除成功。好友管理如图 3-7 所示。 图 3-7 好友管理流程图 3.2.5 查询用户模块 查询用户模块列出了除了自己的所有用户的基本信息包括是否在线,用户可以根 据需要加为好友并进行通讯,对于在线状态的好友可以进行在线交流。查询用户如图 3-8 所示。 图 3-8 查询用户流程图 3.2.6 即时通讯模块 即时通讯模块是本系统最关键的环节与目的所在。用户可以选择分组中的在线好 友进行即
32、时通讯,并且当交流完毕时自动保存聊天记录。即时通讯如图 3-9 所示。 图 3-9 即时通讯流程图 3.2.7 聊天记录模块 聊天记录模块主要记录了与相应好友的所有聊天内容,可以方便的浏览一些重要 信息和谈论话题等。 3.4 设计原则及一般要求 参照各模块的功能与具体的特点,我们设计的整个即时通讯系统应达到以下目的: (1)稳定性。整个系统应能稳定运行,硬件配置的局部改变不会影响整体的正常 运行,其它系统的差错不会导致即时通讯系统无法正确运作。 (2)准确性。系用户按操作要求操作产生的数据与数据库产生的变化应严格保持 一致,杜绝错误、异常等情况的出现。 (3)安全性。所有数据定时备份,错误的出
33、现由系统自动记录备份文件,以备查 验,避免用户误操作而造成不必要的损失。 (4)易使用性。即时通讯系统的界面与操作人员的交互性好,用 client/server(客户端/服务器)结构。 4 系统设计 4.1 模块设计 功能模块设计如表 4-1 所示: 表 4-1 功能模块设计表 用户注册模块1.用户注册 用户登录模块1.用户登录 分组管理模块 1.添加分组 2.删除分组 好友管理模块 1.添加好友 2.删除好友 查询用户模块1.查询用户 即时通讯模块1.即时通讯 功能模块 聊天记录模块1.查看聊天记录 4.2 即时通讯系统关系型数据库的实现 microsoft sql server 2000
34、是一个高性能的客户端/服务器结构的关系数据库管 理系统(rdbms) 。sql server 2000 是为支持高容量的事务处理(比如在线订购录入、 存货目录、记账或制造)以及数据仓库和决策支持系统而设计的。它运行在 microsoft windows nt4 或 microsoft windows 2000 server 上基于使用 intel 处理器的网络。 也能够为其他的 microsoft 操作系统提供很多客户端工具和网络接口。由于 sql server 的开放结构,其他系统也能和它交互操作。使用它可以完成事务处理、存储和 分析数据以及创建新的应用程序。其中 sql server 的
35、rdbms 负责维护数据库中数据之 间的关系,确保正确的存储数据和不违反定义数据之间的规则,而且在系统发生错误 时将所有数据恢复到某个已知的、具备一致性的检查点上。sql server 2000 就是关系 数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。sql server 2000 的优点在于它能使用数据表示图或自定义窗体收集信息。数据库在一个信息管理系统 中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的 效果产生影响。合理的数据库结构设计可以提高数据存储的效率,报填数据的完整和 一致。另外,合理的数据库结构将非常有利于程序的实现。设计数据可系统是应该首
36、先充分了解用户各个方面的要求,包括现有的以及将来可能增加的要求。 4.2.1 数据库分析 即时通讯系统需求包括对用户信息、分组信息、好友信息等各方面信息的管理, 这些信息都需要保存在数据库中,因此需要建立一些相应的表结构来存储这些相应的 数据。 针对这些情况,我们大致建立了以下若干表来存储相应的信息: 表名:用户表,分组表,好友表等。 1) 用户表:包括的数据项有:用户名、密码、真实姓名、性别、个性签名、是否 在线、登录 ip、绑定端口等。 2) 分组表:包括的数据项有:分组名称、用户等。 3) 好友表:包括的数据项有:好友名称、所在分组、用户等。 4.2.2 数据库概念设计 根据前面的需求分
37、析和概要设计规划出本系统所使用的实体对象,分别为:用户 实体、分组实体、好友实体。下面将给出几个关键实体的 e-r 图。 (1) 用户实体 用户实体包括用户名、密码、真实姓名、性别、个人签名、是否在线、登录 ip、 绑定端口等。其 e-r 图如下所示。 图 4-1 用户实体 e-r 图 (2) 分组实体 分组实体包括分组名称、用户等。其 e-r 图如下所示。 图 4-2 分组实体 e-r 图 (3) 好友实体 好友实体包括好友名称、所在分组,用户等。其 e-r 图如下所示。 图 4-3 好友实体 e-r 图 4.2.3 数据库逻辑结构设计 根据上面所做的总结,再参考系统的实际需要,表及逻辑结构
38、如下图所示: 1) 用户表 users,如下所示。 表 4-2 用户表 字段名数据类型字段说明备注 usernamevarchar(20) 用户名主键 password varchar(20)密码不允许为空 name varchar(50)真实姓名不允许为空 sex varchar(10)性别不允许为空 sign varchar(512)个性签名允许为空 isonline bit(1)是否在线不允许为空(默认 0) loginipvarchar(20) 登录 ip允许为空 bindportint(4) 绑定端口不允许为空(默认 0) 2) 分组表 groups,如下所示。 表 4-3 分组表
39、字段名数据类型字段说明备注 g_namevarchar(50) 分组名称主键 owner_group varchar(50)用户主键 3) 好友表 friends,如下所示。 表 4-4 好友表 字段名数据类型字段说明备注 friendvarchar(50) 好友名称主键 group_in varchar(50)所在分组主键 owner_friend varchar(50)用户主键 5 系统实现 5.1 注册模块 如果用户名不存在,则可以使用此用户名,然后输入用户的密码、真实姓名、性 别个性签名等成功注册。注册模块如图 5-1 所示。 图 5-1 用户注册图 主要代码实现如下: public
40、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(proverifyuser); int result = (integer) sp.send().intvalue(); return r
41、esult; 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 proadduser = new protocal(protocalnumber.adduser, reguser); se
42、ndpacket 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 用户注册成功图 5.2 登录模块 本部分主要用于用户的登录,只有在注册后才可以进入系统,用户登录时将按照 用户
43、名和密码进行验证,当输入错误时会出现相应的提示,当用户名和密码都正确时 进入程序主界面,才能进行日常管理工作。该模块的界面设计如图 5-3 所示。 图 5-3 登录界面 如果登录身份验证成功,则进入主界面如图 5-4 所示: 图 5-4 主界面 如果用户名或密码错误则会提示,需要重新输入。 主要代码实现如下: public void actionperformed(actionevent e) jbutton btnsource = (jbutton) e.getsource(); if (btnsource = btnlogin) int bindport = commondata.getb
44、indport(); 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 = new sendpacket(proverifyuser)
45、; int result = (integer) sp.send().intvalue(); if (result !=0) joptionpane.showmessagedialog(this,登录成功!, 用户登录, joptionpane.information_message); this.dispose(); new frmmain(ui.getusername(); else joptionpane.showmessagedialog(this, 用户名或密码错误!, 用户登录, joptionpane.information_message); this.txtusername.
46、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, 分组名称不能为空!, 添加分组,
47、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 = (i
48、nteger) 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 删除分组 主要功能是删除分组同时删除分组下的所
49、有好友。如图 5-6 所示。 图 5-6 删除分组界面 主要代码实现如下: public void actionperformed(actionevent e) /删除分组 if (e.getsource() = jbok) try string g_name=choicegroup.getselecteditem().tostring(); frienditem fi=new frienditem(); fi.setgroup_in(g_name); fi.setowner_friend(commondata.curruser.getusername(); protocal proexit
50、= new protocal(protocalnumber.deletegroup, commondata.curruser.getusername(), fi); sendpacket sp = new sendpacket(proexit); int result=(integer)sp.send().intvalue(); if(result!=0) joptionpane.showmessagedialog(this, 删除分组成功!, 删除分组, joptionpane.information_message); dispose(); else joptionpane.showmes
51、sagedialog(this, 删除分组失败!, 删除分组, joptionpane.information_message); catch(exception ee) joptionpane.showmessagedialog(this, 你的分组为空,无法删除!, 删除分组, joptionpane.information_message); 5.4 好友管理模块 5.4.1 添加好友 主要功能是添加已存在的用户为好友以便进行通讯,如图 5-7 所示。 图 5-7 添加好友界面 主要实现代码如下: public int verify() /验证用户是否存在 string username
52、 = jt.gettext().trim(); useritem ui = new useritem(); ui.setusername(username); protocal proverifyuser = new protocal(protocalnumber.verifyuser2, ,ui); sendpacket sp = new sendpacket(proverifyuser); int result = (integer) sp.send().intvalue(); return result; public void actionperformed(actionevent e
53、) /添加好友 if (e.getsource() = btnok) friend = (string) jt.gettext().trim(); if (friend.equals() joptionpane.showmessagedialog(this, 好友名称不能为空!, 添加好友, joptionpane.information_message); return; if (friend.equals(commondata.curruser.getusername() joptionpane.showmessagedialog(this, 你不能加自己为好友!, 添加好友, jopti
54、onpane.information_message); jt.settext(); return; int verify = verify(); if (verify = 0) joptionpane.showmessagedialog(this, 你要添加的好友不存在!, 添加好友, joptionpane.information_message); jt.settext(); return; else ui = new useritem(); ui.setusername(friend); fi = new frienditem(); fi.setfriend(ui); string g
55、_name = (string) choice.getselecteditem();fi.setgroup_in(g_name); fi.setowner_friend(commondata.curruser.getusername(); protocal proaddfriend = new protocal(protocalnumber.addfriend, commondata.curruser.getusername(), fi); sendpacket sp = new sendpacket(proaddfriend); int result = (integer) sp.send(
56、).intvalue(); if (result = 1) joptionpane.showmessagedialog(this, 此好友已添加过!, 添加好友, joptionpane.information_message); jt.settext(); return; if (result = 0) joptionpane.showmessagedialog(this, 添加好友成功!, 添加好友, joptionpane.information_message); this.dispose(); 5.4.2 删除好友 主要功能是删除相应分组下的对应好友,如图 5-8 所示。 图 5-8
57、 删除好友界面 主要实现代码如下: public void actionperformed(actionevent e) /删除好友 if (e.getsource() = btnok) try group = choicegroup.getselecteditem().tostring(); friend = choicefriend.getselecteditem().tostring(); frienditem fi = new frienditem(); fi.setowner_friend(commondata.curruser.getusername(); fi.setgroup_
58、in(group); useritem ui = new useritem(); ui.setusername(friend); fi.setfriend(ui); protocal proexit = new protocal(protocalnumber.deletefriend, commondata.curruser.getusername(), fi); sendpacket sp = new sendpacket(proexit); int result = (integer) sp.send().intvalue(); if (result != 0) joptionpane.s
59、howmessagedialog(this, 删除好友成功!, 删除好友, joptionpane.information_message); dispose(); catch (exception ee) joptionpane.showmessagedialog(this, 你的分组或好友为空,无法删除!, 删除好友, joptionpane.information_message); 5.5 查询用户模块 主要功能是查询当前用户外的所有用户基本信息(包括是否在线),如图 5-9 所示。 图 5-9 查询用户界面 主要实现代码为: public vector select() /查询用户
60、ui=new useritem(); ui.setusername(commondata.curruser.getusername(); protocal proverifyuser = new protocal(protocalnumber.selectuser, commondata.curruser.getusername(),ui); sendpacket sp = new sendpacket(proverifyuser); vector vv= (vector)sp.send(); return vv; 5.6 即时通讯模块 主要功能是在线用户之间的即时通讯,如图 5-10 所示。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁环保施工合同
- 矿物加工教师聘用合同
- 居住小区道路建设物业合同
- 商场电梯安全使用合同
- 农村基础设施招投标开标流程
- 书法用品租赁合同
- 屋顶修复快速施工合同
- 专题01 一元二次方程(5大基础题+4大提升题)(解析版)-2024-2025学年九年级数学上学期期中真题分类汇编
- 拆除工程爆破拆除
- 电视台内部贴壁纸施工合同
- 建设有特色的学校课程体系课件
- 动作分析分析课件
- 《标书制作流程培训》课件
- 建筑工程专业中级职称考试试题及答案解析精编
- 神经科护士的职责和工作范围
- 粤教版科学四年级上册全册试卷(含答案)
- 如何提高医务人员的个人防护装备使用效率
- 公共服务质量评价指标体系
- 2023中国智慧手术室发展与实践白皮书
- 江西省2023年高等职业院校单独招生考试-江西电力职业技术学院-样卷
- 《热力学基础 》课件
评论
0/150
提交评论