局域网聊天系统的设计与实现-毕业论文 - 图文

更新时间:2024-05-13 12:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北方民族大学 学士学位论文

论文题目: 局域网聊天系统的设计与实现

院(部)名 称: 计算机科学与工程学院 学 生 姓 名: 李榜明 学 号: 20122115 专 业: 软件工程 指 导 教 师: 焦 舒 玉

北方民族大学教务处制

1

摘 要

随着互联网的不断进步和发展,网络通信在人们的生活中占据着越来越重要的地位。网络聊天工具已在不断更新换代,越来越多的聊天工具都有着很多的广泛的应用。对于人们,网上即时聊天已成为一种相互沟通的重要方式,网络上购物更是一种方便生活的理想选择。

本文通过对客户端/服务器与浏览器/服务器架构的特点进行分析,再结合系统的实际情况考虑,采用一种全新的C/S与B/S混合模式架构对局域网聊天系统进行设计,简要介绍了系统的每个功能模块的设计与实现。

本系统采用Java语言,在myEclipse工具上开发,采用Oracle 11数据库来对数据进行支撑。在聊天子系统中,采用java中Socket强大的网络编程功能,是实现客户端与服务器端相互通信的桥梁;采用IO流来对数据的传输与访问;用Java提供的多线程功能实现点对点与点对多聊天。在Web前端子系统和Chat后台管理中,采用Strut2框架来实现系统的业务逻辑,使用强大功能的OGNL标签来对参数进行传递;采用Hibernate框架来对数据库进行操作,它的对象/关系数据库映射特点,在使用时只需要操作对象,使得开发更具有对象化。局域网聊天系统的实现,意味着一个具有聊天、购物、后台管理的多功能系统的完成。

【关键字】局域网聊天系统,购物,java,socket,框架

I

ABSTRACT

With the progress and development of the Internet, network communication in the life of people occupies a more and more important position.Network chat tool has been constantly upgrading, more and more chat tool has a lot of widely used.For people, online instant messaging has become an important way to communicate, shopping on the Internet is the ideal choice for a convenient life.

Based on client/server and browser/server architecture is analyzed, the characteristics of the actual situation of combining system considering, using a new kind of C/S and B/S mixed mode architecture for LAN chat system design, this paper briefly introduces the system design and realization of each function module.

This system USES Java language, the myEclipse development tools, the Oracle 11 database to support data.In chat subsystem, using Java Socket in the powerful network programming, is the realization of client and server as a bridge to communicate with each otherAdopting the IO streams to the data transmission and access;With the multi-threaded functionality provided by the Java implementation point to point and point to chat more.In the Web front-end subsystem and Chat backstage management, adopting Strut2 framework to implement the business logic of the system, using the powerful function of OGNL tag to pass parameters;Using Hibernate framework to the database, object/relational database mapping characteristics of it, when using only need action object, make development has more objectivity.LAN chat system, means that a multi-function chat, shopping, background management system.

【KEY WORDS】 LAN chat system, shopping, Java, socket, framework

2

目 录

摘 要 ..................................................................... I ABSTRACT .................................................................. 2 目 录 ..................................................................... 3 第1章 绪论 ............................................................... 5 1.1系统的开发背景 ...................................................... 5 1.2国内外的研究现状 .................................................... 5 1.3系统需要解决的主要问题 .............................................. 6 1.4本文的主要工作 ...................................................... 6 第2章 系统需求分析 ....................................................... 7 2.1系统概述 ............................................................ 7 2.1.1总体目标 ......................................................... 7 2.1.2业务描述 ......................................................... 7 2.2项目开发过程 ........................................................ 8 2.2.1项目的软件开发生命周期模型 ....................................... 8 2.2.2项目实施计划 .................................................... 11 2.3功能性需求分析 ..................................................... 11 2.3.1聊天子系统功能性需求 ............................................ 11 2.3.2 Web前端子系统功能性需求 ........................................ 12 2.3.3 Chat后台管理子系统功能性需求 ................................... 12 2.4 非功能性需求分析 ................................................... 13 2.4.1操作需求 ........................................................ 13 2.4.2产品性能需求 .................................................... 13 2.4.3系统的安全性 .................................................... 13 第3章 系统设计 .......................................................... 14 3.1系统体系结构设计 ................................................... 14 3.2功能架构设计 ....................................................... 15 3.3逻辑结构设计 ....................................................... 18 3.3.1用例设计 ........................................................ 18 3.3.2逻辑数据模型设计 ................................................ 20 3.4数据库设计 ......................................................... 20 3.4.1数据库概念结构设计 .............................................. 20 3.4.2数据库逻辑结构设计 .............................................. 21 第4章 系统实现 .......................................................... 25 4.1聊天子系统的实现 ................................................... 25 4.2 WEB前端子系统的实现 ................................................ 28 4.2.1商品展示模块的实现 .............................................. 28

3

4.2.2订单处理模块的实现 .............................................. 29 4.2.3购物车管理模块的实现 ............................................ 31 4.2.4安全中心模块的实现 .............................................. 32 4.3 CHAT后台管理子系统的实现 ........................................... 33 4.3.1管理员管理模块的实现 ............................................ 33 4.3.2用户管理模块的实现 .............................................. 34 4.3.3报表管理模块的实现 .............................................. 34 第5章 系统测试与调试 .................................................... 36 5.1程序调试 ........................................................... 36 5.2功能调试 ........................................................... 37 5.3测试结果调试 ....................................................... 42 总 结 .................................................................... 44 结束语 ................................................................... 45 致 谢 .................................................................... 46 参考文献 ................................................................. 47

4

第1章 绪论

1.1系统的开发背景

随着互联网的飞速发展,各种先进的技术给人们的生活带来了深远的影响,它极大的改善我们的生活方式。网络聊天工具已经成为人们即时通讯的一种重要的信息交流工具。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有微信、腾讯QQ等等。虽然局域网聊天工具在市场上很多,比如飞鸽、飞秋等等,适用的范围也比较广,用的地方也比较多,但是这些工具目前来说都只是有通讯的功能,并不能满足人们的生活需要。为了满足当今社会的需要,做一个具有购物的局域网聊天系统很有必要,实现在局域网内进行沟通与交流,还可以购物,可以简化我们生活中繁琐的做事流程,提高工作效率,提高信息交换的速度。使用具有购物的局域网聊天系,可以达到局域网资源共享、建立完备的数据交换体系、快速的传递信息,可以避免局域网内部的资源通过Internet泄露到外部,从而保护了局域网内部信息的安全,也为我国IT行业的发展创建坚实的基础。

随着用户对软件功能的需求不断提高,网络通讯工具的不断地更新换代。随着人们思想觉悟以及生活水平的提高,如今的计算机已经走进了千家万户,对于大多数人来,足不出户的在自己的计算机上查看自己喜欢的商品,并购买商品已经很普遍了。通讯工具在扩展应用方面有着飞跃的发展,比如腾讯公司的QQ,最初只能发文字,如今有QQ游戏、QQ音乐、购物商城等等。人们已经越来越习惯于在家里从网上购物,常见的网上商城有当当网、淘宝网、京东商城等等。在我国,既能即时通讯又能网上购物的一体化产品相对相对较少,具有很大的发展空间。

1.2国内外的研究现状

如今,不管是国内还是国外,网络聊天系统的开发技术已经成熟。比如国外开发得比较早的产品有ICQ,MSN,Yahoo 通等等;还有国内一些比较有名的聊天工具,如腾讯的的QQ、微信,新浪UC等等,这一类网络聊天工具都实现广域网上的即时通信、即时聊天、传输文件等等,他们所实现的功能都各有各的特点。其实基于局域网的聊天系统只是广域网聊天系统的一个很小的模块,最大的区别就是在于网络,广域网的网络结构本身比局域网要复杂得多,广域网聊天工具就是利用各种平台上的网络通信接口,采用底层的TCP/IP,或者是UDP/IP协议的软件产品。局域网聊天工具如飞秋、飞鸽等等。不管是基于什么网的聊天工具,像具有购物功能和即时通信、聊天功能的一体化产品,在国内和国外几乎都没有研究。目前虽然有些聊天工具具有购物功能,但是他们是使用或超链接者对方的接口,比如腾讯的微信购物功能直接使用京东购物的超链接等。

5

1.3系统需要解决的主要问题

为了实现人们的即时通讯,提高生活水平与质量,需要解决的问题主要有: (1)给人们提供一个即时通讯,快捷购物的网络环境。 (2)提高信息传递的速度,从而提高人们的工作效率。

(3)保障局域网内信息交换的安全性,使用户可以放心的使用系统。 (4)给人们提供一个不出门就可方便又快捷的购物、销售商品的平台。

1.4本文的主要工作

本文通过对人们生活中的业务需求进行系统性的分析,借鉴对其他聊天系统的通信经验和购物系统的购物经验,再结合各个地方的实际情况,采用了非常先进的开发模式来开发系统。首先是对局域网聊天系统的需求分析和系统的设计,为系统的实现奠定了坚实的基础。通过本项目的快速开发和实施,可以有力地把人们即时通信和购物的思想贯穿在整个信息化系统的建设中,从而正真地提高人们的生活质量。下面是本文的主要工作:

其一,是通过比较国内外聊天工具的研究形状,来确定本项目所开发的背景及其研究方向。

其二,是根据客户对本系统所提的需求及自身的一些经验,来对局域网聊天系统进行需求的分析和定义,确定系统的功能性需求和非功能性需求;确定项目的软件开发生命周期模型,并对整个软件的开发制定一个合理的进度计划。

其三,是使用RUP方法对局域网聊天系统进行系统设计,首先是设计系统的体系结构、功能加架构,然后以某个用例为主进行类的详细设计,从而自动生成活动图、顺序图;最后设计数据库,从数据库的概念结构和逻辑结构展开设计。

其四,是简要介绍本系统的每个模块的实现方法,以及展示最终实现的每个模块的界面。

其五,是通过程序调试和功能调试两种方法来对局域网聊天系统进行调试,使系统能够达到最终理想的效果,最后通过系统测试,来记录和分析本系统中的bug。

其六,是通过自己在系统的实现过程中所遇到的问题和系统的调试与测试过程来总结本系统的不足之处和其它想法。

6

第2章 系统需求分析

2.1系统概述

2.1.1总体目标

(1)通过查阅资料,不断总结聊天和购物的经验;通过现场访问人们的需求,来完善对局域网聊天系统的需求的定义,要有效地收集和管理对本系统所涉及到的需求;对自己的研究方向有一个明确的定位;熟悉整个项目的业务流程,为系统做一个详细的设计。

(2)局域网聊天系统是一个具有购物功能的综合性管理系统,因此把局域网聊天系统设计为三个子系统,分别是聊天子系统、Web前端子系统、Chat后台管理系统;其中聊天子系统主要是基于java中的socket编程,来实现即时通信;Web前端子系统和Chat后台管理系统都是基于Web开发。

(3)本项目中需要采用两种应用服务器,其中Web前端子系统与Chat后台管理系统需要采用tomcat中间件,聊天子系统需要开发出一个Chat服务器,只处理聊天系统之间的数据交换。聊天子系统跟另外两个子系统需要具有独立性,Chat客户端需要具有很好的移植性。

(4)本项目的实现要能做到让人们在生活中正真地体验到生活的方便,足不出门即可办到想要做的事情,能够保障人们在通信之中的信息安全。 2.1.2业务描述

局域网聊天系统从使用对象的角度来看,所涉及到的业务包括三大方面: 第一,是用户涉及到的业务,用户自己可以自由在局域网内其它pc机上装chat客户端,如果本地服务器地址不是系统默认的服务器地址,则需要联系管理员把chat登录客户端的服务器地址长期固定下来,这样可以避免每次登录客户端都要修改服务器地址所带来的麻烦;用户可以用注册的账号来登录客户端,而非真实姓名,保护好自己的信息;用户为了及时地相应对方好友,可以发窗体抖动来提醒对方;用户具有一个多功能的环境,可以聊天、自由地播放背景音乐、发图片、购物等等;有的用户需要在购物时喜欢直接购买一种商品,还有的则是先把放入购物中,最后一起去购买;用户为了能够管理好自己的信息和订单等等,则需要在Web前端子系统进行登录,用户在登录之后,不仅可以查看订单,还可以对订单进行操作,比如继续支付、确认收货等等;大多数用户都提出,制定一种积分规则,只有积分满足的情况下,才可以在局域网商城做商家;有的用户提出需要对自己的账号进行安全性的保护,比如像QQ的那种,可以对自己的账号进行密保设置,以便密码忘记时找回密码;对于新用户来说,他们需要下载一个用

7

户操作手册进行参考,以便熟悉使用系统。

第二,是局域网内管理员所涉及的业务,管理员需要chat服务器和Tomcat中间件进行控制和管理,以便应用能够正常的使用,管理员需要对整个系统进行图形化的后台管理,比如可以添加其它权限不同的管理员,还可以对用户、商品、订单进行管理;管理员还需要对本系统商品交易情况或者用户进行报表统计。

第三,是我们的实施人员需要接触到的业务,比如把系统交互给用户时,需要部署到用户的服务器上,涉及到装oracle数据库、创建表空间、创建用户、创建表、装中间件、部署应用等等。

图2-1给出了局域网聊天系统数据流图。

申请注册注册成功用户信息注册用户信息记录用户信息库用户信息用户管理发送用户信息登录提示客户端登录用户信息验证结果服务器端验证用户信息记录用户信息记录用户信息用户聊天信息聊天信息客户端发送和接收消息聊天信息聊天信息服务器端转发消息商品信息用户信息记录商品下架商品信息库商品编辑商品信息统计报表报表信息商品发布用户信息开通成功开通会员商品管理商品信息管理员查询条件图书信息订购信息订单信息查询条件购买商品商品信息查询我的宝贝统计图书信息记录物流信息库订单管理管理员信息订单信息物流信息记录订单信息记录订单信息查询订单信息库订单信息订单信息管理员信息库管理员信息管理员管理

图2-1局域网聊天系统数据流图

2.2项目开发过程

2.2.1项目的软件开发生命周期模型

本系统才用迭代模型开发

8

项目计划需求分析系统系统设计系统测试系统实现

图2-2基于迭代开发的生命周期模型图

(1)理由

局域网聊天系统开发包括发送文字、发送图片、听音乐、购物、密保管理、报表统计等多方面的内容,涉及的功能非常多,范围非常广泛,开发人员又少,工期特别的紧张。在软件的开发过程中,需要通过快速原型向用户演示一下系统功能,以便更好的收集用户对系统的反馈,及时地修改对用户需求的理解差异,从而确保所开发的系统能够解决用户的实际问题。控制好开发项目的风险度。尽可能推广每一个成熟的功能,使广大用户能够早早地使用局域网聊天系统,满足用户对系统的迫切需求。由于早期需求可能会发生变化,选用迭代模型开发有利于降低风险度,并且可以在后续阶段中不断的细化,知道了问题的焦点所在,我的工作会更有效率,会加快整个开发工作的进度。迭代方法在设法解决项目重要度和风险度较低的方面之前,先开发最重要和风险高的方面,由此来降低在一个增量上的开支风险。在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。开发人员清楚问题的焦点所在,我们的工作会更有效率。其次,用户在开发期间可以较早的体验产品由,由于用户的需求并不能在一开始就做出完全的界定我们通常会在后续阶段中不断细化。如果,项目需放弃,通常出现在项目早期,因此可以降低损失。所以选择迭代开发我的项目。 (2)生命周期模型的描述与概要解释

基于迭代开发相联系的4个阶段是:开端、细化、构建和转换。

开端阶段:定义项目的开发范围,准备好业务的例子,准备好架构,准备项目的开发环境。在本项目中,比较重要的有,开发人员要参与人们的实际生活中,去了解用户在生活中存在着哪些业务,分析他们对局域网聊天系统的业务需求,与用户在系统的业务需求上达成一个统一的共识,对系统最终的目标能做出比较明确的定位,确定项目的可行性,理解用户需求,并准备一份软件开发计划。

细化阶段:本阶段主要是对用户的需求进行细化,并确定好系统的架构,为后面构建阶段创造一个很好的基础。在此阶段,开发人员需要清晰地认识到项目的边界和目标,

9

使需求的变更变少,能够让用户也参与到项目的开发中,能够积极地配合需求的细化工作,增进对问题域的理解,给出项目计划并识别关键项目风险。

构建阶段:构建阶段要对资源进行控制和管理,要关心的是系统设计,还要进行开发和测试。系统的各个功能模块并行开发,在开发过程中需要不断测试,要保证整个开发过程不会与用户的需求产生分离,测试的结果要让用户能够认可,最后把各个功能模块集成在一起,组成一个完整的系统,然会进入转换阶段。

转换阶段:转换阶段主要涉及到跟用户之间产品的交互过程,部署局域网聊天系统,对用户进行培训,试运行等工作。一般系统试运行二三个月,把软件所出现的故障排除掉,等待系统运行稳定以后,然后准备项目的验收。

(3)生命周期模型各阶段说明(阶段目标、输入、阶段的行为与任务、输出)

开端阶段:确定项目的可行性和范围,做出初步的成本估计,识别所有与系统交互的外部实体并定义这些交互。然后使用这些信息评估系统对业务的贡献。如果这个贡献是微小的,那么项目就要在此阶段结束时被取消。

细化阶段:明确成本,完成系统的需求模型,可能是一组用UML描述的用例、体系结构描述和开发计划。开发人员经过前期的沟通,为进一步细化需求做好了比较充分的准备,对系统构架设计影响最大的需求和用例有了比较清晰的认识,并通过一个或多个构架原型进行构架稳定性的讨论和评估。本阶段产生了比较详细的项目计划,细化的需求规格说明书以及架构设计说明书。

构建阶段:需要进行严格的成本监控,并且用户手册的编写贯穿该阶段。得到一个能工作的软件系统,还有能交付给用户的相关文档。移交阶段的需求变更已经比较少,在本阶段的制品除了可试运行的产品外,还进行了部署计划的编制和培训计划、培训文档编写的初期工作。

转换阶段:在实际环境当中投入并使用系统,通过不断完善系统所出现的bug,最后得到一个完整的系统和操作手册交给用户。

10

2.2.2项目实施计划

2015年 12月12/2012/271/32016年 01月1/101/171/241/312016年 02月2/72/142/212/282016年 03月3/63/133/203/272016年 04月4/34/10ID123456789101112131415任务名称明确项目概要信息选择软件开发模型项目实施计划与管理功能与非功能需求分析体系结构设计功能结构设计逻辑结构设计测试数据的收集与管理数据物理模型设计实现聊天子系统实现Web前端子系统实现chat后台管理子系统系统集成系统测试系统验收开始时间2015-12-162015-12-202015-12-272016-1-32016-1-82016-1-122016-1-162016-1-202016-1-212016-1-242016-2-142016-3-62016-3-272016-4-12016-4-15完成2015-12-202015-12-242016-1-22016-1-72016-1-112016-1-152016-1-192016-1-202016-1-242016-2-132016-3-52016-3-262016-3-312016-4-142016-4-24持续时间5d5d7d5d4d4d4d1d4d21d21d21d5d14d10d图2-3项目实施进度计划

2.3功能性需求分析

2.3.1聊天子系统功能性需求

1) 用户可以打开客户端登录窗体的注册按钮进入web前端子系统的注册页面进行注册。

2)客户端登录窗体根据chat服务器的各种状态返回给用户各种提示信息。 3)客户端好友管理器窗体中我的在线好友可以自动更新当前局域网内的在线好友,并且可以选择某个好友发送消息。

5)客户端好友管理器窗体中可以 播放与暂停背景音乐。

6)客户端好友管理器可以点击帮助按钮,查看系统信息;可以点击注销,结束应用。 7)用户在好友管理器中双击聊天对象,可以打开相应的聊天窗体进行聊天。 8)客户端对话窗体发送消息具有快捷键,可以点击发送和关闭。 9)客户端对话窗体可以发送窗体抖动,文件。

10)客户端通信器负责客户端与chat服务器之间通信最低层的数据传输与控制等工作。

11)服务器控制器开启服务,用户即可通过客户端登录到服务器端。

11

4)客户端好友管理器窗体中我的群可以向局域网内所有的在线好友发送消息。

12)服务器控制器停止服务,所有客户端自动掉线。 13)服务器控制器退出,即结束服务器端所有进程。 14)服务器控制器可以向所有客户端发送系统消息。

15)服务器传输器负责chat服务器与客户端之间和服务器与数据库之间通信最低层的数据传输与控制等工作。 2.3.2 Web前端子系统功能性需求

1)用户状态:如果用户已经注册为chat用户,则输入用户信息直接登录;如果用户是新用户,则输入详细信息进行注册,对新用户奖励10积分;如果用户忘记密码,可以打开找回密码进入安全中心去找回。

2)商品展示:用户可根据对商品的分类浏览和输入关键字进行本站包含商品的查找浏览,单击图片或者名称可以查看商品的详情。

3)热销排行榜:对畅销量高的前10种商品进行排行,为用户提供热门商品的选择。 4)我的用户:用户登陆之后可以查看和修改个人信息;浏览我的订单,如果订单状态还未支付,可以去支付、查看订单明细;我的用户,若积分大于10分,即可开通用户,开通之后可以发布商品、下架商品和编辑商品,还可以统计我的宝贝数量、月销售额等信息。

5)安全中心:修改密码、设置密保、找回密码。

6)购物车功能:用户可以先把自己想要购买的商品加入购物车,在购物车中可以修改商品数量和删除商品;购物车自动统计每一个商品的价格及所有商品的总价格,最后把所有商品一起去支付。

7)订单处理功能:用户在确认订单信息时,可以修改所选择的商品的数量和删除商品,也可以选择快递方式;确认订单之后,选择支付方式进行付款;付款成功,即订单处理完成,可以查看自己的订单明细。

8)用户每成功交易一笔,则自己的积分增加1分。 9)帮助:下载操作手册,介绍如何使用局域网聊天系统。 2.3.3 Chat后台管理子系统功能性需求

1)管理员状态:管理员输入登录信息后可以登录,也可以重置。登录之后,可以点击注销,退出应用。

2)管理员管理:超级管理员对本系统所有的管理员进行浏览、修改、删除、查看详情。

3)商品管理:商品管理员对商品进行浏览、查看详情、删除、添加、修改。 4)订单管理:订单管理员订单的查询和删除。

5)用户管理:用户管理员实现对用户的浏览、查询和删除。

6)报表统计:统计管理员对系统的用户、商品、订单进行统计,以便通知其他管理

12

员制定新的方针和计划。

7)所有管理员都可以查看和修改自己的详细信息,并且超级管理员拥有Chat后台管理子系统所有功能。

2.4 非功能性需求分析

2.4.1操作需求

1)用户界面是一个非常美观的界面,用户在使用过程中能够轻松愉快的完成操作。使用户能够建立起比较精确的心理模型,便于用户操作。

2)本软件对硬件或者硬件接口没有太大的要求,只需要在Windows2008系统以上的PC机上即可运行。

3)只需要正确配置好网络,即可使用系统,在Windows2008或者更高版本的操作系统上可以运行。

4)正常使用时不会出现任何错误,在运行时,不管系统内部出现什么错误,都能保证数据库中的数据完好无损。

5)本系统能够满足用户的需求,可以实所需要的各种功能。 2.4.2产品性能需求

1) 数据精确度:本系统对数据的查询采用两种方式,一种是精确查询,另一种是模糊查询。 在查询具体的某一条数据时,采用精确查询,如果输入格式不对,不会得到处理。模糊查询,只需要输入一个关键字,即可帮助我们查询大量的信息。

2) 时间特性:在用户操作之后,响应时间不能超过2s。

3) 适应性:能满足用户生活的需求。对系统所需要的运行环境都能满足。 2.4.3系统的安全性

1) 任何人都不能修改用户的信息,保证用户自身的信息安全性;超级管理员可以对其它普通管理员进行管理,如修改角色、删除等。

2) 用户的封闭性很好,用户所进行的每一步操作,都有温馨提示。

13

第3章 系统设计

3.1系统体系结构设计

(1)体系结构

本系统所采用B/S和C/S混合体系结构开发,B/S(Browser/Server)结构即浏览器和服务器结构,C/S(Client/Server)结构即客户端和服务器结构。本系统包含三个子系统,聊天子系统采用C/S结构,Chat后台管理子系统和Web前端子系统均采用B/S结构。C/S是一种两层架构,其中客户端是在用户的电脑上运行的程序,响应速度快,可移植性较强,且界面美观已操作,但是也有缺点,比如维护成本很高,每一次升级都要修改程序。B/S是一种三层架构,适应性很强,用户只需要安装Web浏览器即可访问或操作系统,升级也容易,只需要升级服务器即可,但也有缺点,如在扩浏览器时,界面的样式不尽人意等等。综合B/S与C/S架构的特点,故设计为三层架构,即表现层、业务逻辑层、数据访问层。表现层主要对用户的请求进行接收和数据的返回,业务逻辑层主要是实现业务逻辑,数据访问层主要是对数据库进行操作。系统的体系结构图,见图3-1。 (2)硬件基础

硬件要求:CPU在CPU Intel MMX 233MHz以上;内存在512M以上;硬盘空间7G以上(主分区、NTFS);显卡在8MB以上的PCI或AGP显卡。

操作系统:Windows xp / Windows 7或更高版本。

网络配置:必须正确配置服务器的网卡,添加固定的“TCP/IP”协议,使用多个交换机时,要保证有一台交换机是主交换机,并且没有写入固定的IP地址数据,倘若该交换机接入了互联网,不想影响用户使用互联网,则需要在本地连接中先固定互联网IP,然后高级属性里面添加系统所部属的服务器IP,需要保证整个网络是同一个局域网。

服务器配置:配置java环境,安装如下软件:myeclipse,tomcat7.0,oracle,sqldeveloper。

客户端配置:需要装java,正确配置环境变量保证Chat客户端正常运行;正确配置Chat客户端的服务器地址;装Web浏览器来访问或操作Web前端子系统。 (3)技术框架及开发环境

本设计中,UML建模工具采用Visio2003、PowerDesigner 12、RationalRose,图片处理工具采用PhotoShop5。聊天子系统的chat客服端和chat服务器均采用java面向对象、socket网络编程等技术;Web前端子系统与chat后台管理子系统的编程技术采用java面向对象、jdbc、jsp、javascript、hibernate、struts2、css等等,服务器

采用Tomcat 7.0,数据库采用Oracle 11g,数据库可视化管理工具采用sqldeveloper。

14

数据库Chat服务器Web服务器(tomcat)客户机客户机客户机客户机客户机

图3-1系统体系结构图

3.2功能架构设计

局域网聊天系统包括聊天子系统、Web前端子系统、Chat后台管理子系统,其总功能模块图如下:

局域网聊天系统聊天子系统Web前端子系统Chat后台管理子系统Chat客户端Chat服务器端商品展示热销排行榜用户登录我的用户安全中心处理订单购物车管理帮助管理员登录订单管理商品管理报表统计管理员管理用户管理

15

图3-2局域网聊天系统总功能模块图

聊天子系统功能模块图如下:

聊天子系统Chat客户端Chat服务器端用户登录好友管理对话窗体客户端通信器传输文件服务端通信器服务端控制器登录重置好友及群组展示注销帮助播放背景音乐传输文字开启服务停止服务退出服务

图3-3聊天子系统功能模块图

Web前端子系统功能模块图如下:

16

Web前端子系统用户状态我的用户商品展示处理订单购物车管理安全中心帮助登注注个录册销人资料查修看改详情我的订单确认收货继续支付开通会员我的会员我的宝贝分页展示分类查询搜索商品查看详情选择商品确认订单修改订单提交订单支付订添修删修找改回单加改除密密完数码码成量设置密保统计发布编辑下架

图3-4 Web前端系统功能模块图

Chat后台管理子系统系统功能如下:

Chat后台管理子系统管理员状态管理员管理用户管理订单管理商品管理报表统计登重注录置销查看详情删除添加分页展示分页展示查看详情删除分页展示查看详情删除分页展示添加更删新除统计用户统计商品统计订单

图3-5 Chat后台管理子系统系统功能模块图

17

3.3逻辑结构设计

3.3.1用例设计

局域网聊天系统涉及到两个角色,用户和管理员,其总用列图如下:

注册查看帮助重置登录注销查看好友及群组播放背景音乐开启服务用户控制chat客户端发送窗体抖动查看个人信息发送文字停止服务控制chat服务器端管理员退出服务管理我的用户修改确认收货查看所有管理管理员查看我的订单查看详情管理用户继续支付浏览图书管理我的会员统计宝贝管理我的宝贝上架处理订单删除开通会员添加管理商品选择商品编辑使用确认订单使用下架管理订单选择快递管理购物车修改数量查看订单完成提示支付选择支付方式删除图书查看报表

图3-6局域网聊天系统总用例图

以其中发送文字用例为主进行解说如下:

18

表1.1

用例名:发送文字 ID: 1.1 重要性级别: 高 主要参与者 : 用户 触发事件: 用户选择局域网内进行聊天的对象,发送文字进行聊天 类型: 外部的 主要输入: 描述 来源 主要输出: 描述 目标 我的在线好友或群组 chat好友管理器 好友列表显示 用户 聊天对象 chat好友管理器聊天对话窗口 用户 文字信息 用户 在发送窗口显示 用户 发送按钮或快捷键Ctrl+Z chat聊天窗体 将信息发送到服务器 chat服务器 服务器转发信息 chat服务器 将信息发送到目标好友 用户 聊天记录窗口消息 chat聊天窗体 聊天记录 用户 主要执行步骤 1.用户展开我的在线好友或群组 2.用户双击选择聊天对象 3.用户输入文字 4.用户单击发送按钮或按Ctrl+Z 5.服务器将信息转发到其他用户 6.用户通过下拉聊天记录窗体查看聊天记录信息 步骤所需信息 好友列表或群组 聊天对象 发送窗口 按钮和快捷键 Chat服务器 聊天记录窗口 19

3.3.2逻辑数据模型设计

商品-商品编号-商品名称-生产商-经营者-库存量-已售-单价-类型-图片-简介管理员-管理员编号-角色编号-登录账号-真实姓名-密码密保-密保编号-用户编号-密保问题-密保答案0.1...1角色-角色编号-角色名称1.2..n1.2..m权限-权限编号-权限名称0.1...1用户-用户编号-用户名-真实姓名-密码-性别-电话号码-邮编-地址-等级-积分-卖家名称订单-订单编号-用户编号-运单编号-是付款-订单日期-付款时间-付款方式-完成时间-订单状态运单11-运单编号-物流公司-收货地址-运送方式1.2...m1.2...n10.1...图3-7 局域网聊天系统数据建模

3.4数据库设计

3.4.1数据库概念结构设计

对局域网聊天系统进行数据库概念结构设计,本系统包括商品、用户、订单、密保、管理员、角色、权限、运单八个实体,其实体关系图如下:

20

商品编号商品名称生产商经营者库存量已售单价类型图片简介用户编号管理员编号订单编号用户编号运单编号实付款订单日期付款时间付款方式完成时间订单状态运单编号物流公司收货地址商品n产生m订单m拥有1用户1属于n密保1属于1运单运送方式密保编号用户编号密保问题密保答案用户名真实姓名登录账号密码性别电话号码邮编地址等级积分卖家名称角色编号真实姓名密码角色编号角色名称权限编号权限名称管理员n拥有1角色n拥有m权限

图 4-1 局域网聊天系统E-R模型图

3.4.2数据库逻辑结构设计 (1)数据库表清单如下: 表3.1数据库表清单 表名 CHAT_USER CHAT_SECURITY CHAT_COMMODITY CHAT_WAYBILL CHAT_ORDER CHAT_ROLE CHAT_ADMIN 描述 用户表,记录每一位用户的详细信息 密保表,记录每一个密保的详细信息 商品表,记录每一个商品的详细信息 运单表,订单处理完成后,系统自动模拟物流公司发货,此时记录运单详细信息 订单表,订单的详细信息 角色表,记录每一种角色的详细信息 管理员表,记录每一位管理员的详细信息 权限表,记录每一种权限的详细信息 21

CHAT_ORDER_COMMODITY 订单商品表,记录每一个订单中商品的信息 CHAT_RIGHT

CHAT_ROLE_RIGHT

(2)数据表定义

角色权限表,记录角色跟权限之间的对应关系 表3.2用户表(CHAT_USER) 字段名称 ID USER_NAME REAL_NAME USER_PASS SEX PHONE POSTCODE ADDRESS GRADE INTEGRAL SELLER_NAME 字段名称 ID USER_ID QUESTION 类型 NUMBER(6) VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) CHAR(1) VARCHAR2(20) VARCHAR2(6) VARCHAR2(120) CHAR(1) NUMBER(4) VARCHAR2(30) 类型 NUMBER(6) NUMBER(6) VARCHAR2(60) 备注 PRIMARY KEY NOT NULL UNIQUE NOT NULL 用户名,用于登录口令 NOT NULL NOT NULL NOT NULL CHECK(0,1) NULL NOT NULL NOT NULL 真实姓名 密码,用于登录口令 性别;0为男性,1为女生 电话号码 邮编 地址 描述 用户编号ID NOT NULL 等级;0代表普通用户,1CHECK(0,1) 代表会员 NULL NOT NULL 备注 PRIMARY KEY NOT NULL NOT NULL NOT NULL NOT NULL 备注 PRIMARY KEY NOT NULL NOT NULL NULL 用户编号 密保问题 密保答案 描述 商品编号ID 商品名称 生产商 积分 卖家名称 描述 密保编号 表3.3 密保表(CHAT_SECURITY)

ANSWER VARCHAR2(60) 表3.4商品表(CHAT_COMMODITY) 字段名称 ID COMMODITY_NAME MANUFACTURER OPERATOR STOCKS 类型 NUMBER(6) VARCHAR2(60) VARCHAR2(60) VARCHAR2(30) NUMBER(4) DEFAULT ‘局域经营者 网官方’ NOT NULL 库存量 22

SOLD PRICE KIND PHOTO NUMBER(4) NUMBER(8,2) VARCHAR2(30) VARCHAR2(11) DEFAULT 0 NULL NOT NULL NULL 已售,商品已出售的数量 单价 类型 图片 商品简介 描述 运单编号 物流公司 收件地址 BRIEF VARCHAR2(200) NULL 表3.5 运单表(CHAT_WAYBILL) 字段名称 ID COMPANY CARRYING_METHOD 类型 NUMBER(8) VARCHAR2(60) VARCHAR2(12) 备注 PRIMARY KEY NOT NULL NOT NULL CONSIGNEE_ADDRESS VARCHAR2(150) NOT NULL DEFAULT‘快递运送方式 包邮’ 备注 PRIMARY KEY NOT NULL FOREIGN KEY NOT NULL FOREIGN KEY NULL NULL NULL NULL NULL 描述 订单编号 用户编号 运单编号 实付款 付款时间 付款方式 完成时间 表3.6 订单表(CHAT_ORDER) 字段名称 ID USER_ID WAYBILL_ID REAL_PAY ORDER_DATE PAY_TIME PAY_METHOD ORDER_TIME TRADE_STATUS 说明:

1.订单跟用户是一对一关系,即一个订单只属于一个用户(注意:用户没有关联订单,所以不能理解为用户跟订单是一对多的关系)

2.订单状态: 0表示:等待买家付款,1,表示:已付款且已发货,2 交易成功 表3.7 订单商品表(CHAT_ORDER_COMMODITY) 字段名称 ORDER_ID

类型 NUMBER(8) NUMBER(6) NUMBER(8) NUMBER(12,2) DATE DATE VARCHAR2(12) DATE CHAR(1) DEFAULT SYSDATE 订单日期 NOT NULL CHECK 订单状态 (0,1,2) 类型 NUMBER(8) 备注 FOREIGN KEY 23

描述 订单编号 NOT NULL GOODS_ID GOODS_NUM 说明:

NUMBER(6) NUMBER(4) FOREIGN KEY NOT NULL NOT NULL 商品数量 商品编号 1.订单跟商品是多对对的关系,即一个订单可以拥有多种商品,一种商品可以被多个订单所包含4.7 角色表(CHAT_ROLE) 字段名称 ID ROLE_NAME 字段名称 ID ROLE_ID ADMIN_NAME ADMIN_CODE 类型 NUMBER(2) VARCHAR2(60) 类型 NUMBER(4) NUMBER(2) VARCHAR2(60) VARCHAR2(12) 备注 PRIMARY KEY NOT NULL NOT NULL 备注 PRIMARY KEY NOT NULL FOREIGN KEY NULL NOT NULL NOT NULL NOT NULL 备注 PRIMARY KEY NOT NULL RIGHT_NAME VARCHAR2(60) NOT NULL 表3.10 角色权限表(CHAT_ ROLE _RIGHT) 字段名称 ROLE_ID RIGHT_ID 类型 NUMBER(2) NUMBER(4) 备注 FOREIGN KEY NULL FOREIGN KEY NULL

权限编号 权限名称 描述 角色编号 真实姓名 登录账号 密码 描述 权限编号 角色编号 角色名称 描述 管理员编号 表3.8 管理员表(CHAT_ADMIN)

描述 角色编号 ADMIN_PASS VARCHAR2(12) 表3.9 权限表(CHAT_RIGHT) 字段名称 ID 类型 NUMBER(4) 24

第4章 系统实现

4.1聊天子系统的实现

(1)聊天子系统主要实现要点:

1)用户首先登录验证,通过new 一个socket,先跟服务器端建立连接,服务器连接成功后把这个socket交给线程池,然后把用户信息在此次通信socket里,进行分离,看操作命令,如果是检测用户命令,则拿到数据库中用户表去查询,如果验证不成功把原因反馈给用户,并关闭此次连接,如果存在,服务器则更新在线人数,并把在线人数和自己的用户名发给所有的用户;把用户名和输出流放到一个map集合中;同时把此次的socket和用户名保存到另一个map集合中;利用输出流返回客户端。

2)用户上线时,用户验证通过后,先返回一个消息,通知客户端,让他打开好友管理界面,把服务器在线的名字全部接收过来,对于本客户端,则把服务器给我的名单加载我的列表中,其他客户端上线或下线时,则自动更新自己的好友列表。

3)用Jtree来描述好友列表,自动增删Jtree节点不太容易,并且添加节点不注意会添加重复的,因此选择把用一个Set集合来存放名字,作为一个中间变量,对于名字的增删在Set集合中操作,每一次操作完之后,把Jtree清空,重新添加。

4)对于聊天窗体对象的问题,为了实现只要在线就能接受好友的信息,采用List集合来存储聊天对象,有多少好友包括群,就创建多少聊天窗口对象,只要更新好友,就创建。只是不让它显示,这样就能保证只要在线就能收到消息

5)关于socket关闭的问题,当客服端在登陆时,如果用户验证不通过,则先关闭服务器端的socket通信连接,然后再关闭当前对象的socket通信;当客服端已经与服务器建立了连接,即登陆成功时,需要关闭时,先要通知服务器,让服务器把当前跟自己通信的socket关闭连接这样才能才能让服务器,结束当前与之当前交互的线程,把时间片留给其它线程,还能够统计客服端下线的等功能。 (2)Chat客户端实现部分代码如下:

/**

* 发送消息给服务器 * @param name 本机客户端 * @param objectName 目标客户端

* @param message 消息内容 注:这时不需要考虑message中是否包含分隔符 */

public void sendMessageToServer(String name, String objectName,

String messageType,String message) {

25

因为服务器按顺序取

}

if (message.equals(\ }

message = \保证服务器,发空白

pw.println(messageType + SEPSTR + name + SEPSTR + objectName + SEPSTR

+ message);

/**

* 关闭通信 */

public static void closeSocket() { }

if (pw != null) { } try { }

if (socket != null) { }

pw.println(CLOSESOCKET);// 通知服务器关闭

socket.close();

} catch (IOException e) {

(3)Chat服务器端实现部分代码如下:

/**

* 初始化服务器相关内容 */

public Server() {

try {

serverSocket = new ServerSocket(8182);

ip = InetAddress.getLocalHost().getHostAddress(); port = serverSocket.getLocalPort();

allPw = new HashMap(); threadPool = Executors.newFixedThreadPool(120); sockets = new HashMap(); onlineNum = 0; // sendOnlineList(); e.printStackTrace();

26

} catch (IOException e) {

}

}

/**

* 服务器开始工作 */

public void serverStart() { } /**

* 关闭服务器 */

public void serverClose() {

//先通知每个客户端,服务器要停止了

String message=\由于系统升级维护中,你也被迫掉线,请稍候重新登录\f = true;

doEve = new Thread() { };

doEve.start();

@Override

public void run() { }

while (f) { }

try { }

socket = serverSocket.accept();

threadPool.execute(new SendClientMessage(socket)); try { }

} catch (Exception e) {

serverSocket.close(); e1.printStackTrace();

} catch (IOException e1) {

sendClientMessageToOtherClient(\GROUPSEND,SERVERSTOPMESSAGE,mess

//方式一:遍历集合中的key,再用遍历器 // 先关闭服务器

27

age);

}

Set keys = sockets.keySet();

//由于sockets集合在不断的更新,所以遍历会出现异常//解决:将keys先转化为数组

String []keyArr=keys.toArray(new String[]{}); for(int i=0;i

f = false;// 停止链接 try { }

String key=keyArr[i]; try { }

sockets.get(key).close(); e.printStackTrace(); } catch (IOException e) {

ConcurrentModificationException

sockets.clear();//清空所有的socket

serverSocket.close(); e.printStackTrace();

} catch (IOException e) {

4.2 Web前端子系统的实现

4.2.1商品展示模块的实现 (1)主要实现要点:

商品展示模块主要实现的功能有在首页默认分页浏览所有商品,查看商品排行榜,还可以通过商品名称检索或分类查询所得的结果集进行分页展示,这里最重要的一点就是三种方式中分页功能要分别实现;然后就是展示商品详情的时候,需要把查询几个跟该种类相同的商品作为猜你还喜欢的部分,来增加页面显示的内容,给用户的快捷的选择。这里最总要的实现有两点,一是自己发布的商品不允许购买,而是加入购物车只能一次。 (2)其中实现进入首页的部分java代码如下:

public List getCommodities() {

}

return commodities;

public void setCommodities(List commodities) {

28

}

this.commodities = commodities;

public String execute(){ }

ICommodityDao commodityDao=DaoFactoryUtil.getCommodityDao(); totalPage=commodityDao.totalPage(myPage); if(page!=0){ } try { }

return \

commodities=commodityDao.findByPage(myPage); e.printStackTrace(); return \} catch (Exception e) {

myPage.setPage(page);

4.2.2订单处理模块的实现 (1)主要实现要

1)订单处理和购物车管理都有一个实现的共性,那就是采用商品容器对象,商品容器就是用来描述你所选择的商品,它有三个属性,分别是所选商品集合、所选商品总金额、所选商品总件数,所选商品集合又是由所选择的每件商品及对应的数量、金额属性所组成。这样实现的目的有两个,一是为了好管理和统计商品容器中的信息;二是为了使商品容器的功能能够得到共享,比如可以构造成一个购物车,或者直接用在确认订单信息和查看订单详情时。

2)订单处理另外一个重要的地方就是商品在成功购买时,数据库中的库存量要相应的进行变化。

(2)其中实现确认订单信息的部分java 代码如下: //判断session中是否包含haveDifferOper,有,则移除

if(mySession.containsKey(\ }

//获取用户默认的收货地址

User user =(User) mySession.get(\defaultAddress=user.getAddress()+\

\

mySession.remove(\

(\收) \

29

// 若购买购物车中的商品,由于存在session中的,要修改数据,对购物车修// 因此可以直接返回

if (method != null && method.equals(\ }

// 购买某种商品 if (id > 0) { }

return \

// 为了保证购买单本商品,如果还没有下订单,则重新选择商品时,列表if (mySession.get(\null) { }

ICommodityDao commodityDao = DaoFactoryUtil.getCommodityDao(); Commodity dbCommodity = commodityDao.findById(id);

SelectedCommodity selectedCommodity = new SelectedCommodity(); selectedCommodity.setCommodity(dbCommodity); selectedCommodity.setNum(1);

selectedCommodity.setSubtotal(selectedCommodity.getNum() List

selectedCommodities

=

* new

mySession.remove(\

commoditiesInfo = (CommodityContainer) mySession.get(\// 移出出之前存放的myCar mySession.remove(\

mySession.put(\return \

改就可以了,

中应是一本新书

dbCommodity.getPrice()); ArrayList();

selectedCommodities.add(selectedCommodity); commoditiesInfo = new CommodityContainer();

commoditiesInfo.setSelectedCommodities(selectedCommodities); commoditiesInfo.setKinds(1);

commoditiesInfo.setAllPrice(selectedCommodity.getNum()

* selectedCommodity.getCommodity().getPrice());

mySession.put(\

30

4.2.3购物车管理模块的实现 (1)主要实现要点

购物车是通过商品容器来构造的,其次就是要实现当购物车中出现了来自不同商家的商品时,是不能同时支付的。

(2)实现查看购物车的部分java 代码如下:

if(mySession.containsKey(\null){

myCar=(CommodityContainer) mySession.get(\//更新购物车商品列表 List

if(canAddMyCar(selectedCommodities,commodity)){

SelectedCommodity selectedCommodity=new SelectedCommodity(); selectedCommodity.setCommodity(commodity); selectedCommodity.setNum(1);

selectedCommodities=myCar.getSelectedCommodities();

selectedCommodity.setSubtotal(selectedCommodity.getCommodity().getPrice(

}

}

myCar.setSelectedCommodities(selectedCommodities); //更新购物车,总价格,商品件数

myCar.setAllPrice(carDao.getAllPrice(selectedCommodities)); myCar.setKinds(selectedCommodities.size()); mySession.remove(\mySession.put(\//更新是否包含不相同的经营者商品

haveDifferOper=carDao.haveDifferOperator(selectedCommodities); mySession.put(\return \

selectedCommodities.add(selectedCommodity); message=\添加成功!\

message=\你已经添加过商品!\

)*selectedCommodity.getNum());

}else{

31

4.2.4安全中心模块的实现 (1)主要实现要点

1)在同一个jsp页面中要实现展示不同的情况,首先是看当前是否为找回密码的状态,然后根据当前的Session中是否含有在线用户信息,若没有,则展示输入找回密码信息,若有,则看该用户是否设置密保,设置了,则展示密保信息,但是不能修改问题,如果没有设置,则展示可以设置密保问题和答案。

2)在实现找回密码时,首先在数据中查询该用户名,看看有没有用户信息,如果有,且两个问题和所对应的答案必须配对成功,方可找回密码。 (2)其中实现找回密码的部分java 代码如下:

if(!name.equals(\tAnswer().equals(\

&&!mySecurity2.getQuestion().equals(\

User user =DaoFactoryUtil.getUserDao().findByName(name); boolean find1=false,find2=false; if(user!=null){ }

if(find1&&find2){

password=user.getUserPass(); }else{

32

(\

ISecurityDao securityDao=DaoFactoryUtil.getSecurityDao(); mySecurities=securityDao.findByUserId(user.getId()); for(Security security:mySecurities){

if(security.getQuestion().equals(mySecurity1.getQuestion())&&

}

find1=true;

security.getAnswer().equals(mySecurity1.getAnswer())){

}else }

find2=true;

if(security.getQuestion().equals(mySecurity2.getQuestion())&&

security.getAnswer().equals(mySecurity2.getAnswer())){

}

}

}

message=\很抱歉,未找到!\

}else{

message=\输入项不能为空!\

return \

4.3 Chat后台管理子系统的实现

4.3.1管理员管理模块的实现 (1)主要实现要点

内置6种角色,超级管理员可以添加其它管理员,不同的角色拥有着不同的权限,在jsp页面实现的效果是用strut2标签中的if判断语句,根据角色不同而展示不同的功能。

(2)其中实现增加管理员的部分java 代码如下:

}

IAdminDao adminDao=DaoFactoryUtil.getAdminDao();

String regex=\//登录名只出现单词字符 } try { }

return \

adminDao.saveAdmin(admin); message=\系统故障,请联系管理员\} catch (Exception e) {

if(!(admin.getAdminName().length()>0&&admin.getAdminName().length()<=20)){

message=\真实姓名格式不对\return \

message=\登录名格式不对\return \

}else if(!admin.getAdminCode().matches(regex)){

} else if(!admin.getAdminPass().matches(regex)){

message=\密码格式不对\return \

33

4.3.2用户管理模块的实现 (1)主要实现要点

在用户管理模块中,主要实现要点是管理员权限不能修改用户信息,只能是查看和删除。

(2)其中实现查询所有用户的部分java 代码如下:

IUserDao userDao=DaoFactoryUtil.getUserDao(); totalPage=userDao.totalPage(myPage); if(page!=0){ }

users=userDao.findByPage(myPage); return \

myPage.setPage(page);

4.3.3报表管理模块的实现 (1)主要实现要点

这里主要是用hibernate查询sql语句时,怎样获取结果集。 (2)其中实现统计用户信息的部分java 代码如下: @Override

public Object[] statisUser() {

Session session=SessionUtil.getSession(); Object[] userObjs=new Object[5]; //统计用户数量

String hql=\Query query=session.createQuery(hql);

Integer userNums=Integer.valueOf(query.uniqueResult().toString()); userObjs[0]=userNums; //统计会员数

hql=\query=session.createQuery(hql);

Integer memberNums=Integer.valueOf(query.uniqueResult().toString()); userObjs[1]=memberNums; //统计卖家数

hql=\query=session.createQuery(hql);

Integer sellerNums=Integer.valueOf(query.uniqueResult().toString());

34

}

userObjs[2]=sellerNums; //统计积分皇冠

hql=\

\

SQLQuery sqlQuery=session.createSQLQuery(hql); sqlQuery.addEntity(User.class); @SuppressWarnings(\List val=sqlQuery.list(); for(User user:val){ }

SessionUtil.closeSession(session); return userObjs;

String userName=user.getUserName(); Integer integralMax=user.getIntegral(); userObjs[3]=userName; userObjs[4]=integralMax;

35

第5章 系统测试与调试

系统的设计与实现,最终的目的是为了投入使用,给用户解决生活中的实际问题,不能有很多问题,而直接上线,因此,在线上线之前,系统测试与调试项目开发必备的步骤。

5.1程序调试

程序调试是系统调试中最要的一步,下面给出其中一个调试有问题的调试案例。 好友上线或者,下线,好友管理器自动更新好友列表。 调试代码如下:

/**

* 更新好友列表 */

public void flushOnlineList() { }

// 清除树中所有节点

if (onlinFreendNode.getChildCount() > 0) { }

// 把更新的好友添加到树中

Iterator it = names.iterator(); while (it.hasNext()) { }

onlineFreendTree.setVisible(true); // 动态刷新好友列表

SwingUtilities.updateComponentTreeUI(onlineFreendTree);

String name = it.next(); DefaultMutableTreeNode onlinFreendNode.add(node);

node

=

new

onlinFreendNode.removeAllChildren();

DefaultMutableTreeNode(name);

调试结果:如下图所示,直接用updateComponentTreeUI更新Jtree会报出空指针异常。

36

图5-1 自动更新好友列表调试图

解决方案:首先把Jtree对象封装到DefaultTreeModel对象treeModel中,然后用treeModel.reload()方法来实现自动更新好友列表。

5.2功能调试

(1) 聊天子系统

首先打开Chat服务器,点击运行StartServer,然后运行Chat客户端,如果要修改服务器地址,则修改后,输入用户信息进行登录,没有账号,则去注册;登录成功后进入好友管理器,单击聊天对象,即可打开聊天窗口进行聊天。

图5-2 运行Chat服务器

37

图5-3 修改服务器地址

图5-4 进入好友管理器

38

图5-5 与好友聊天

(2)Web前端子系统

如果没有账号,可以先注册,浏览商品,查看商品详情,可以直接购买,也可以先加入购物车,一起支付。

图5-6 注册

图5-7 浏览商品

39

本文来源:https://www.bwwdw.com/article/dxy7.html

Top