基于无线网络的图书馆辅助管理系统_第1页
基于无线网络的图书馆辅助管理系统_第2页
基于无线网络的图书馆辅助管理系统_第3页
基于无线网络的图书馆辅助管理系统_第4页
基于无线网络的图书馆辅助管理系统_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于无线网络的图书馆辅助管理系统专业:班级:组号:指导教师:二0一0年04月 15日基于无线网络的图书馆辅助管理系统摘要随着3G时代的到来,3G无线网络规模逐渐扩大,移动电子通讯设备将不仅仅只是打电话和发短信的工具,届时将会有更多的更丰富的移动应用程序应用在移动电子通讯设备的终端上,而移动商务以及移动办公作为3G无线网络传输应用的重要分支,将会广泛地流行起来。本系统为图书馆文献查询辅助系统(手机客户端,使用C/S结构,实现了无线网络传输HTTP协议、UDP传输协议、以及套接字传输协议。本文完整地描述了在 Eclipse 平台应用 J2ME 技术,利用TOMCAT服务器,使用ORACLE数据库,

2、开发本手机软件的过程。其中主要涉及的技术有Java Servlet技术、Java Socket 技术等。第一章介绍了系统背景,使用的开发平台及主要技术,对论文中术语的约定;第二章介绍了系统需求及系统的设计方案;第三章介绍了系统具体实现,并描述一些关键性技术和核心模块的设计;第四章介绍了对本系统进行的测试及测试结果。关键词:J2ME;无线网络传输;GCF;HTTP;移动图书馆;3G通信技术目录论文总页数:42页1引言 (11.1系统背景 (11.2开发平台 (11.3主要技术 (41.4术语与缩写解释 (72需求分析及项目方案 (82.1目标 (82.2假定和约束 (82.3需求规定 (82.4

3、数据结构及表的定义 (92.5运行环境规定 (133项目设计及开发 (143.1整体框架 (143.2程序核心功能 (153.3兼容性 (353.4打包与混淆 (353.5特殊问题与解决方法 (364结果测试及性能分析 (374.1测试思路 (374.2测试结果 (38结论 (39致谢 (40参考文献 (41插图和附表清单表格清单 插图清单 1引言3G,是指第三代移动通讯技术。随着3G的到来,移动终端不仅仅是打电话,发短信的工具,届时会有更多丰富的移动应用程序出现。国家工信部3G牌照已经正式发放,标志着中国3G元年的到来,现已经有多家3G网络牌照运营商进行发放3G牌照,3G网络已经正式覆盖全国

4、多个省会城市,将有多家移动网络门户运营商提供低费用高传输速度的无线网络服务。移动商务,移动办公作为无线网络传输应用的重要分支,将会广泛流行。无线网络传输程序包括HTTP协议下的Web页面数据传输,基于UDP传输协议的数据包传输,基于套接字连接的数据传输。在这三种无线网络传输基础上设计实现的手机程序,将在3G广泛盛行起来的同时,发挥出重大作用,提高人们的生活水平和生活质量。1.1系统背景本程序的设计实现了HTTP协议,UDP传输协议,套接字传输协议。本作品采用移动无线网络传输的图书馆辅助系统(手机客户端的形式整体实现了上述协议,并且具有使用价值,因为现在移动通讯使用的范围已经愈来愈广泛,移动手机

5、的用户界面也越来越友好,移动通讯的网络传输质量也越来越优越,所以使用手机客户端的形式将用户从繁琐的计算机使用中解脱出来,使得用户能在随时随地登入到图书馆系统,进行自己期望的操作;而且同时也使得管理员对图书馆的管理越来越灵活,提高了管理员的能动性,加快了对书籍的整合和管理的效率。本作品主要采用J2ME技术进行设计和实现,因为UDP协议的实现与套接字传输协议的实现基本一致,所以在设计程序时,考虑到时间以及程序模块的因素,将其缩减。1.2开发平台Eclipse是替代 IBM Visual Age for Java(以下简称 IVJ的下一代IDE 开发环境,但它未来的目标不仅仅是成为专门开发JAVA程

6、序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。更难能可贵的是Eclipse是一个开放源代码的项目,任何人都可以下载 Eclipse 的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat 服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是 Eclipse的潜力所在。在本项目中,Eclipse 正是通过第三方插件Ec

7、lipse me实现了开发 J2ME 应用。EclipseME是帮助你开发J2ME MIDlet的Eclipse插件。 EclipseME帮助你轻松的把无线工具包整合到Eclipse开发环境中,使你不必再担心J2ME开发有何特殊需求,而可以把所有精力集中在应用开发上。EclipseME提供了下列功能以帮助开发者轻松的创建Midlets:无线工具包首选项创建新的J2ME Midlet套件项目创建新的MidletJava应用描述文件(JAD编辑器对class文件进行增量的/自动的预检验支持从Eclipse中启动运行J2ME模拟器打包以及部署(包括无线下载方式测试,可以使用ProGuard对输出包进

8、行混淆Proguard 是一个出色的混淆器,用以增加程序被破译的难度,并可以减小最后生成jar 的体积,ProGuard,除了在压缩操作删除的无用类、字段和方法外,也能在字节码级提供性能优化,内部方法有:常量表达式求值删除不必要的字段存取删除不必要的方法调用删除不必要的分支删除不必要的比较和 instanceof 验证删除未使用的代码删除只写字段删除未使用的方法参数像 push/pop 简化一样的各种各样的 peephole 优化在可能的情况下为类添加 static 和 final 修饰符在可能的情况下为方法添加 private, static 和 final 修饰符在可能的情况下使 get/

9、set 方法成为内联的当接口只有一个实现类的时候,就取代它选择性的删除日志代码Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现, Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分

10、软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。本系统采用Tomcat服务器,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善

11、中。手机客户端可以通过与Tomcat的访问连接来实现各个模块功能。Oracle Database 10g 提供了4个版本分别是Oracle Database 10g标准版1、Oracle Database 10g标准版、Oracle Database 10g企业版和Oracle Database 10g个人版。提供了一系列常见的应用程序开发功能,包括与SQL对象相关的功能、用于编写存储过程和触发器的PL/SQL语言和JAVA编程接口。企业版还提供了额外的性能、可伸缩性、可用性、和安全性,这些功能一般对应用程序开发人员是透明的。Oracle Database 10g 企业版主持的API,Orac

12、le Database 10g 个人版和标准版也支持。Oracle Database 10g产品全部是用同一个健壮和可靠地数据库引擎体系结构构建的。在许多不同的平台上,Oracle Database 10g标准版和Oracle Database 10g个人版都和Oracle Database 10g企业版完全兼容,因此用户的数据库应用程序可以从笔记本电脑简单地扩展到台式电脑,然后再扩展到整个企业网络,而不需要重新设计。Rational Rose 是一个完全的,具有能满足所有建模环境需求能力和灵活性的一套解决方案。Rose 允许开发人员,项目经理,系统工程师和分析人员在软件开发周期内在将需求和系

13、统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化,理解和精练。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。Rose是美国的Rational公司的面向对象建模工具,利用这个工具,可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C+、Java、VB和Oracle等语言和系统的代码。Rational Rose包括了统一建模语言(UML,OOSE,以及OMT。本系统采用Rose进行UML用例建模。1.3主要技术本作品分为服务器端和手机客户端两个部分,采用C/S结构设计系统,采用GCF框架中定义的网络连

14、接类和方法,制定双方都能理解的协议来交换数据,前后台通过servlet进行数据传输及页面显示,整个系统采用MVC模式进行模块划分,实现界面和模型数据的分离,结构清晰,便于维护。Java技术是一系列产品的集合,目前主要包括Java2平台标准版(Java 2 platform Standard Edition, J2SE、Java2 平台企业版(Java 2 platform Enterprise Edition, J2EE、Java2 平台微型版(Java 2 platform Micro Edition, J2ME和Java卡平台。J2ME 为运行在嵌入式消费类电子产品的设备,如移动电话、PD

15、A、游戏终端之上的应用程序提供了一个健壮的、灵活的环境。与 J2SE、J2EE 和 Java Card 一样,J2ME 同样包含一个小型的虚拟机和一系列的 Java API。J2ME 还提供了灵活的图形用户界面、健壮的安全模型、广泛的联网协议支持。目前 J2ME 平台已经部署到上亿个的设备上,前景非常看好。J2ME 平台由多种配置(Configuration、简表(Profile和可选包(OptionalPackage组成。平台的实现者和应用程序的开发者可以从中选择并组合出一个完整的Java运行环境来满足特定范围内的设备需求。每种组合都应该使这一系列设备的内存、处理器和 I/O 能力达到最优化

16、。GCF(通用连接框架 Generic Connection Framework是基于CLDC及其对应简表,提供了各种连接的基础API,包括基于数据包和基于数据流的输入/输出方法。它按照层次的形式组织各种连接接口,使用URL表示不同的连接。通用连接框架定义了7种接口:Connection接口、CintentConnection接口、DatagramConnection接口、InputConnection接口,OutputConnection接口, StreamConnection接口和StreamConnectionNotifie r接口。Connection接口是所有接口的基类,它产生了用于

17、数据包连接的DatagramConnection连接接口、用于数据流连接的InputConnection接口、OutputConnection接口和StreamConnectionNotifier接口。其中StreamConnection接口继承自数据流连接的输入/输出接口,并派生了用于数据内容解析的CintentConnection接口。GCF是一个容易扩展的框架结构,用户可以根据自身的需要在现有的类和接口上建立自己的类或者实现自己的接口。RMS(记录管理系统Record Management System类似于普通计算机的文件管理系统。在手持电子设备中,用以统一的机制管理持续性存储资源。记

18、录管理系统具有数据库管理系统的特征,即记录管理系统组织数据是按照行列的方式进行组织的,每条信息在记录管理系统中都表现为一条记录,类似于数据库一行,每一条记录可以包含多个数据,类似于数据库某一行中的多列。我们可以通过添加记录的方式将数据持久地保存在记录管理系统中;通过删除记录的方式删除信息;同时记录管理系统还允许为你们对记录进行排序和查找。记录管理系统允许以下操作:创建记录存储器;在已建立的记录存储器中添加记录;在已建立的记录存储器中删除已经存在的记录;在已建立的记录存储器中读取已经存在的记录;在已建立的记录存储器中建立枚举器;在已建立的记录存储器中建立比较器;在已建立的记录存储器中建立筛选去。

19、MVC是一种设计模式,强制把应用程序的输入、处理和输出分开。MVC把应用程序分为三个核心模块:模型、视图和控制器,他们分别负担不同的任务。尽管构造MVC应用程序需要一些额外的操作,但是给我们带来的好处是毋庸置疑的。首先,多个视图能共享一个模型。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重同,所以大大提高了代码的可重用性。其次,模型是自包含的,与控制器和视图保持相对独立,所以可以方便地改变应用程序的数据层和业务规则。由于MVC的三个模块相互独立,改变其中一个不会影响到其他两个,因此依据这种设计思想能构

20、造良好的松耦合的构件。此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的视图将处理结果显示给用户。JavaBeans是一个类,它有无参的构造函数,并且遵从JavaBeans的命名约定。bean的属性可以通过获取(getter方法和设置方法(setter来访问,这两个方法统称为bena的存取方法,每一个单词的首字母都要大写。除了简单的属性外,bean还可以有多值属性,多值属性是由一个任意类型的数组组成。在规范中这称为索引的

21、属性。JavaBeans技术能实现封装数据,实现对代码的重用。JavaBeans技术,涉及到组件构件技术,是Java的核心基础部分。很多软件设计模式都是通过JavaBeans实现的。JavaBeans具有以下特性:内透性指一个类的信息,都可以被另一个类获知。JavaBeans遵循某种命名规则,这样外部类就可以知道这个Bean类。支持自定义属性的方法用来对JavaBeans进行自定义支持事件支持属性支持永久性Servlet是与平台无关的服务器端组件,可以运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法。Servlet和客户的通信采用“请求/

22、响应”的模式。Servlet的技术特点有以下几个方面:Java servlet技术具有JAVA技术的所有优点。Java servlet技术要比传统的CGI技术效率更高。传统的GCI技术对于每个HTTP请求都要产生一个新进程。Servlet技术对于每一个请求产生Java线程来响应。Java servlet技术要比传统的CGI技术更强大。Java servlet能方便的处理HTML表单数据,能够读取和设置HTTP头信息,并且能够处理Cookies,跟踪Session等其他功能。Java servlet 是模块化的。每一个Servlet可以执行一个特定的任务,并且可以讲他们并在一起工作。Java s

23、ervlet之间能共享数据。Java servlet技术要比传统CGI技术更安全。Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket是网络应用程序的核心,在服务器端或客户端网络应用程序中,皆为不可缺少的要素。它主要包括ServerSocket和Socket。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有

24、差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过 SocketImpl类及其子类完成的。1.4术语与缩写解释KVM: 全称 Kilobyte Virtual Machine,J2ME 虚拟机;IDE: 全称 Integrated Development Environment,集成开发环境;WTK: 全称 Wireless Toolkit,是 Sun 公司发布的 J2ME 应用开发套件;MIDlet: 一个 MIDP 应用程序称作 MIDletMIDP 小应用程序,这个概念与 J2SE 中的 applet 十分类似;APIAppl

25、ication Programming Interface应用程序编程接口;MIDPMobile Information Device Profile 移动信息设备简表;CLDCConnected Limited Device Configuration 有限无线设备配置;UIUser Interface 用户界面;HTTPHypertext Transfer Protocol 超文本传输协议;UDPUser Datagram Protocol 用户数据报协议;Socket"套接字",用于描述IP地址和端口,是一个通信链的句柄。2需求分析及项目方案2.1目标基于无线网络传输

26、的图书馆辅助系统(手机客户端使用C/S结构,实现无线网络传输下的HTTP协议和套接字协议进行数据传输。系统分为服务器端和手机客户端两个部分,其中服务器端提供模拟学校网上图书馆功能,提供数据存储的服务器终端。手机客户端包括读者登入和管理员登入两个模块,读者用户可以进行借阅书籍基本信息查看,书刊续借,密码修改,书刊信息查询,书刊增订;管理员用户可以进行书籍信息修改,个人信息查询。还设置书籍讨论区公共模块,管理员用户和读者用户可以进行书籍的交互讨论。2.2假定和约束本系统软件是在模拟器上模拟实现辅助图书馆的管理的客户端软件,因为使用者是该校学生或者老师,所以学校已经分配给每个用户以用户名和密码,所以

27、没有设置用户注册模块;此外,本系统主要实现手机客户端与后台服务器之间的数据传输,提供了模拟的服务接口,所以服务器端数据库设计为个人理想状态下设计,忽略了繁琐的数据访问机制;最后由于是手机客户端难免受到手机软硬件的限制,将重点放在实现系统功能以及界面设计方面,降低了物理层的无线承载能力的要求。2.3需求规定对精度的规定:用户应按照界面提示输入数据,后台代码提供了对数据精度出错提供了一定得处理功能。时间性要求:对于一般的页面操作,延时可忽略不计。但如果涉及网络数据请求、传输,或者用户进行的操作相当耗费CPU的时候,延时会很明显。如果某项操作耗费时间已经超过1分钟还没结束,用户应自行决定放弃此操作或

28、退出本软件。灵活性要求:系统采用视图、模型、控制器分离设计,增加了系统访问的灵活性和可理解性,更方便了系统后天的维护,通过增加系统的通讯协议可快速对系统进行功能增加。本系统具体功能需求如表1所示: 阿拉伯数字均为十进制无正负;索引号更具规定的ISBN编号设置;日期格式为:yy-mm-dd2.4数据结构及表的定义数据库表格定义了系统服务器端所用到的基本数据表,详细描述了数据表中的字段、类型、约束条件、说明等信息,如下表所示: 网络通讯协议是客户端和服务器端交互数据的基础,主要由动作和数据组成,动作定义如下表所示: 界面控制器内部定义的协议实现了界面中的跳转以及和网络连接控制器之间的请求。请求协议

29、定义如下表所示: 在书籍讨论区模块中,客户端和服务器端连接是采用如下表通讯协议格式进行信息传递和解析;表12 书籍讨论区协议 2.5运行环境规定本软件目标运行平台为所有支持 CLDC1.1、MIDP2.0,屏幕分辨率不小于200×200 的手机设备(包括Palm ,Blackberry或者其他PDA,并要求在各型号手机上均有良好的兼容性。内存堆栈>1M Byte。开发包:windows xp sp2下的WTK。3项目设计及开发3.1整体框架 图2 管理员客户端系统结构图手机客户端用户初始化本软件后,选择用户登入类型,转入响应该用户欢迎界面,用户用图书馆分配的初始密码登入成功后。

30、进入菜单界面,选择响应操作,客户端收到用户发来的界面请求,向服务器端发送用户请求操作的命令,得到服务器端发送回来的数据后,在客户端显示页面或者提示,用户则进行后续操作,如果操作结束,用户可以选择退出。具体执行过程如图3所示: 图3 系统总体流程图3.2程序核心功能1.模块描述:用户使用该系统时,选择读者用户身份初始化后,在欢迎菜单中选中“读者信息”选项,将来到读者信息查询界面,在读者登入后,系统将提示进行网络连接,将提示用户借阅几本书籍,建立连接后,服务器端将返回该读者用户借阅书籍的列表信息,用户选中书籍后点击“设置”,系统将显示该本书籍的具体信息,用户可以在界面中给该本书籍设置闹钟提示时间,

31、或者点击“menu”,对该本书籍进行客户端续借,系统将提示续借结果信息。对应需求如表13、14、15、16对应类如表17显示: 表16 书续借阅IPO表 表17 类表 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_LOGIN,就调用显示读者用户登入界面,当接收到用户输入用户名和密码后,就请求界面控制类发送网络连接请求(LOGIN,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户密码,如果登入错误,就返回错误信息(LOGIN_ERROR_PWD/ LOGIN_NO_USER

32、;如果密码正确,就调用书本控制类访问数据库,如果没有查询用户借阅书籍信息,就返回响应信息(LOGIN_SUCCESS_NO_BOOK,显示没有借阅书籍信息界面;如果查询该用户借书籍信息后,返回响应信息(LOGIN_SUCCESS_HAS_BOOK,将查询到的每本借阅书籍的实体类封装成书本信息列表传回网络连接控制类,然后以借阅书籍信息显示模式类中定义的实现模式显示该查询结果列表和具体书籍信息;用户在借阅书籍显示界面上,设定好闹铃提示时间后,系统将通过闹铃设置模式类,将设置的时间保存在手机的持久化存储中;用户如果续借该选中的借阅书籍,显示页面将此书籍名称和请求(GOON_BORROWBOOK发送给

33、界面控制类,当网络连接控制类和服务器端控制类建立连接后,服务器端控制类调用书籍控制类查询书籍续借情况,如果能续借,就更新数据库字段,并且返回提示信息(GOON_SUCCESS_BORROWBOOK/ GOON_ERROR_BORROWBOOK然后界面控制类导航显示提示信息。具体顺序图如图4所示: 图4 读者借阅查询顺序图1.模块描述:用户使用该系统时,选择读者用户身份初始化后,在欢迎菜单中选中“密码修改”选项,将来到读者密码修改界面,在读者输入用户名、新旧密码后,系统将提示进行网络连接,建立连接后,服务器端返回响应信息,体统将提示读者用户是否密码修改成功。对应需求如表18,对应类如表19显示:

34、 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_CHANGE_PWD,就调用显示读者用户密码修改界面,当接收到用户输入用户名和新旧密码后,就请求界面控制类发送网络连接请求(CHANGE_PWD,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户名,如果用户名错误就返回提示信息(CHANGEPWD_NO_USER;如果用户名存在,再调用用户控制类访问数据库,核对用户密码,如果密码错误,就返回错误提示信息(CHANGEPWD_ERROR_PWD,如果密码正确,就调用用户控制类修

35、改数据库中该用户的密码,如果修改失败就返回失败信息(CHANGEPWD_FAIL;如果修改完成就返回成功信息(CHANGEPWD_SUCCESS,客户端网络控制器接受到各种返回信息后,就传递给界面控制器类导航各种不同的提示信息显示界面。具体顺序图如图5所示: 图5读者密码修改顺序图1.模块描述:用户使用该系统时,选择读者用户身份初始化后,在欢迎菜单中选中“书刊检索”选项,将来到查询书刊信息输入界面,在查询书刊信息界面中输入用户期望查询的书刊名称后,点击“开始查询”,系统将提示进行网络连接,建立连接后,服务器端将返回查找信息,如果查找到用户查询的书籍后,将显示所有包涵书籍名称的信息列表,用户选择

36、其中某本书籍条目后,点击“选择”,将显示改本馆藏书籍的具体信息;如果没有查找到用户查询的书籍,系统将提示没有书籍信息,然后跳转到预定书籍信息输入界面,用户可以输入自己期望管理员购买的书籍信息,或者用户可以选择返回主菜单界面。对应需求如表20、21、22,对应类如表23显示:表20 书刊检索IPO表 表22 书增订IPO表 表23 类表 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_SEARCH_BOOK,就调用显示查询书籍信息输入界面,当接收到用户输入书籍名称后,就请求界面控制类发送网络连接请求(SEARCH_BOOK,当网络连接控制类和服务器端控制类建立连接后,将请求

37、发送给服务器端,服务器端控制类调用书本控制类访问数据库,如果查询到相似书籍后,返回响应信息(SEARCH_HAS_BOOK,将查询到的每本书的实体类封装成书本信息列表传回网络连接控制类,然后以书籍信息显示模式类中定义的实现模式显示该查询结果列表和具体书籍信息;如果没有查询到相似书籍信息,就返回响应信息(SEARCH_NO_BOOK,界面控制类就导航显示书籍增订界面,当接收用户输入预定书籍基本信息后,就请求界面控制类发送网络连接请求(NEEDBOOK,当网络连接控制类和服务器端控制类建立连接后,服务器端控制类调用书本控制类更新数据库信息,并返回提示信息(SUCCESS_NEED_BOOK/ ER

38、ROR_NEED_BOOK,然后界面控制类导航显示提示信息。具体顺序图如图6所示: 图6 读者书刊检索顺序图1.模块描述:用户使用该系统时,选择读者用户身份初始化后,在欢迎菜单中选中“新书查询”选项,将来到新书查询界面,在新书查询界面中输入用户期望查询的书刊的日期后,点击“开始查询”,系统将提示进行网络连接,建立连接后,服务器端将返回查找信息,如果查找到新增书籍信息后,将显示所有新增书籍信息列表,用户选择其中某本书籍条目后,点击“选择”,将显示该本馆藏书籍的具体信息;如果没有查找到用户查询的书籍,系统将提示没有书籍信息,用户可以选择返回主菜单界面。对应需求如表24,对应类如表25显示:表24

39、新书发布IPO表 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_NEWBOOK,就调用显示查询新增书籍信息界面,当接收到用户输入查询日期后,就请求界面控制类发送网络连接请求(NEWBOOK,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用书本控制类访问数据库,如果查询到新增书籍信息后,返回响应信息(HAS_NEWBOOK,将查询到的每本书的实体类封装成书本信息列表传回网络连接控制类,然后以新增书籍显示模式类中定义的实现模式显示该查询结果列表和具体书籍信息;如果没有查询到书籍信息,就返回响应信息(NO_NEWBOOK,然后界面控制类导航

40、显示提示信息。具体顺序图如图7所示: 图7 读者新书查询顺序图1.模块描述:用户使用该系统时,选择管理员用户身份初始化后,在欢迎菜单中选中“书籍信息修改”选项,将来到管理员登入界面,在管理员输入用户名、密码后,系统将提示进行网络连接,建立连接后,服务器端返回响应信息,若登入成功系统将显示二级菜单。在二级菜单中选择“书籍增订信息”,系统将显示读者所有预定的书籍列表,选择“设置”对预定书籍进行处理,如果管理员已经购买了该本书籍,点击“预订完成”。对应需求如下表26,对应类如表27显示:表26 书籍增订信息修改IPO表 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_MAN_L

41、OGIN,就调用显示管理员用户登入界面,当接收到用户输入用户名和密码后,就请求界面控制类发送网络连接请求(MAN_LOGIN,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户名,如果用户名错误就返回提示信息(MAN_LOGIN_NO_USER;如果用户名存在,再调用用户控制类访问数据库,核对用户密码,如果密码错误,就返回错误提示信息(MAN_LOGIN_ERROR_PWD,如果密码正确,就返回登入成功信息(MAN_LOGIN_SUCCESS,界面控制类收到返回信息后就导航显示书籍信息修改二级界面

42、,在该页面选择操作后就向界面控制器发送网络连接请求(SHOW_MAN_NOTICEBOOK,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,调用书本控制类访问数据库,如果没有查询书籍预定信息,就返回响应信息(MAN_NO_NEEDBOOK;如果查询到有书籍预定信息后,返回响应信息(MAN_HAS_NEEDBOOK,将查询到的每本预定书籍的实体类封装成书本信息列表传回网络连接控制类,然后以预定书籍信息显示模式类中定义的实现模式显示该查询结果列表和具体书籍信息;如果要完成预定,书籍显示界面向界面面管理类发送网络连接请求(MAN_DELL_NEEDBOOK,当网络连接控制类和服务器

43、端控制类建立连接后,将请求发送给服务器端,调用书籍控制类修改数据库中预定书籍表的信息字段,并且返回提示信息(MAN_SUCCESS_DELLNEEDBOOK/ MAN_ERROR_DELLNEEDBOOK然后界面控制类导航显示提示信息。具体顺序图如图8所示: 图8 管理员查询书籍增订信息顺序图1.模块描述:用户使用该系统时,选择管理员用户身份初始化后,在欢迎菜单中选中“书籍信息修改”选项,将来到管理员登入界面,在管理员输入用户名、密码后,系统将提示进行网络连接,建立连接后,服务器端返回响应信息,若登入成功系统将显示二级菜单。在二级菜单中选择“新书发布”,系统将显示书籍添加页面,管理员填写书籍基

44、本信息后,选择“添加”,系统将提示完成信息。对应需求如表28,对应类如表29显示: 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_MAN_LOGIN,就调用显示管理员用户登入界面,当接收到用户输入用户名和密码后,就请求界面控制类发送网络连接请求(MAN_LOGIN,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户名,如果用户名错误就返回提示信息(MAN_LOGIN_NO_USER;如果用户名存在,再调用用户控制类访问数据库,核对用户密码,如果密码错误,就返回错误提示信息(

45、MAN_LOGIN_ERROR_PWD,如果密码正确,就返回登入成功信息(MAN_LOGIN_SUCCESS,界面控制类收到返回信息后就导航显示书籍信息修改二级界面,在该页面选择操作后就向界面控制器发送请求(SHOW_MAN_ADDBOOK,界面控制类导航书籍信息添加页面,当添加书籍信息后,就向界面控制器发送网络请求(ADDBOOK,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用书本实体类初始化一个书本对象,再调用书本控制类访问数据库对书籍表进行更新,更新时将该本书籍借阅状态自动标记为inlib,并且返回提示信息(MAN_SUCCESS_UPDATE_BO

46、OK / MAN_ERROR_UPDATE_BOOK然后界面控制类导航显示提示信息。具体顺序图如图9所示: 图9 管理员新书发布顺序图1.模块描述:用户使用该系统时,选择管理员用户身份初始化后,在欢迎菜单中选中“书籍信息修改”选项,将来到管理员登入界面,在管理员输入用户名、密码后,系统将提示进行网络连接,建立连接后,服务器端返回响应信息,若登入成功系统将显示二级菜单。在二级菜单中选择“旧书删除”,系统将显示书籍删除页面,管理员填写书籍基本信息后,选择“删除”,系统将提示完成信息。对应需求如表30,对应类如表31显示: 表31 类表 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(S

47、HOW_MAN_LOGIN,就调用显示管理员用户登入界面,当接收到用户输入用户名和密码后,就请求界面控制类发送网络连接请求(MAN_LOGIN,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户名,如果用户名错误就返回提示信息(MAN_LOGIN_NO_USER;如果用户名存在,再调用用户控制类访问数据库,核对用户密码,如果密码错误,就返回错误提示信息(MAN_LOGIN_ERROR_PWD,如果密码正确,就返回登入成功信息(MAN_LOGIN_SUCCESS,界面控制类收到返回信息后就导航显示书

48、籍信息修改二级界面,在该页面选择操作后就向界面控制器发送请求(SHOW_MAN_DELBOOK,界面控制类导航书籍信息删除页面,当填写书籍信息后,就向界面控制器发送网络请求(DELBOOK,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用书本实体类初始化一个书本对象,再调用书本控制类判断该书是否存在,如果不存在,返回提示信息(MAN_NO_HASBOOK,如果存在,书本控制类再判断该书籍是否被借出,如果被借出,返回提示信息(MAN_ERROR_STATEBOOK,如果没有借出,书本控制类访问数据库对书籍表进行删除字段,并且返回提示信息(MAN_SUCCESS

49、_DELLBOOK / MAN_ERROR_DELLBOOK然后界面控制类导航显示提示信息。具体顺序图如图10所示:图10 管理员旧书删除顺序图1.模块描述:用户使用该系统时,选择管理员用户身份初始化后,在欢迎菜单中选中“密码修改”选项,将来到管理员密码修改界面,在管理员输入用户名、新旧密码后,系统将提示进行网络连接,建立连接后,服务器端返回响应信息,体统将提示管理员用户是否密码修改成功。对应需求如表32,对应类如表33显示: 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_CHANGE_MANPWD,就调用显示管理员用户密码修改界面,当接收到用户输入用户名和新旧密码后,

50、就请求界面控制类发送网络连接请求(CHANGE_MANPWD,当网络连接控制类和服务器端控制类建立连接后,将请求发送给服务器端,服务器端控制类调用用户实体类初始化一个用户对象,再调用用户控制类访问数据库核对用户名,如果用户名错误就返回提示信息(MAN_CHANGEPWD_NO_USER;如果用户名存在,再调用用户控制类访问数据库,核对用户密码,如果密码错误,就返回错误提示信息(MAN_CHANGEPWD_ERROR_PWD,如果密码正确,就调用用户控制类修改数据库中该用户的密码,如果修改失败就返回失败信息(MAN_CHANGEPWD_FAIL;如果修改完成就返回成功信息(MAN_CHANGEP

51、WD_SUCCESS,客户端网络控制器接受到各种返回信息后,就传递给界面控制器类导航各种不同的提示信息显示界面。具体顺序图请参看读者用户密码修改模块。1.模块描述:用户使用该系统时(无论是读者还是管理员,在欢迎菜单中选中“书籍讨论区”选项,将来到聊天室欢迎界面,在用户输入用户名,选择聊天室号后,将进入该聊天室,用户在聊天室内可以和所有用户聊天,或者可以选择个别用户单独聊天。系统提示进入聊天室的用户,将显示退出聊天室用户。对应需求如表34、对应类如表35显示: 2.程序设计思想:界面控制类接到了主菜单传递的页面调用请求(SHOW_TALKPAGE/ SHOW_MANTALK,就调用显示用户书籍讨

52、论区欢迎界面,当接收到用户输入用户名和聊天室号后,就请求界面控制类发送网络连接请求(TALKPAGE/ MAN_TALKPAGE,向讨论区网络连接控制器类发送该用户注册信息,同时界面控制类调用讨论区用户名记录模式类记录用户登入的用户名,讨论区网络连接控制器初始化后,在后台设置了讨论区用户名类表,并且解析客户端发送的注册信息,向客户端发送回在线客户名单类表。客户讨论区网络连接控制器接收这个列表,当用户希望私聊时就可以自动更新该列表。当用户端希望发送消息时,界面控制类收到请求(SEND_NESSAGE将消息进行封装,然后讨论区网络控连接制器类将消息发送到服务器端,讨论区服务器端消息处理类将发送的消

53、息进行解封,根据解封出的不同请求将消息采用单播或者多播的方式发送给另外的客户端,客户端讨论区网络连接控制器类接收到消息后将消息解封,然后调用讨论区修饰类将该条信息显示在讨论区聊天界面上。当用户退出时,界面控制类就将用户退出信息封装,然后讨论区网络连接控制器类将该条退出信息发送给服务器端,服务器端消息处理类将该条退出信息根据用户列表,广播发送给其他在线用户接收。具体顺序图如图11所示: 图11书籍讨论区顺序图1.模块描述:用户使用该系统时(无论是读者还是管理员,在欢迎菜单中选中“帮助”选项,将来到帮助界面。对应需求如表36,对应类如表37显示: 表37 类表 2.程序设计思想:界面控制类接到了主

54、菜单传递的页面调用请求(SHOW_HELP/ SHOW_MAN_HELP,就导航到帮助界面,帮助界面实现了一个文本输入流,将外部文件夹中的文本信息导入到系统,显示在帮助界面上。具体顺序图、流程图、如下所示:图 12 帮助顺序图3.3兼容性因为手机模拟器各不相同,虽然在开发程序的时候使用单一的模拟器进行编写和测试,可已经尽量考虑到这些因素,避免了硬编码,使用了相对坐标计算来绘图,尽量减少在其他屏幕大小不同的手机上的影响,保证运行效果3.4打包与混淆EclipseME 插件提供了直接将程序打包成 JAR 的方法,并同时生成与之配合的JAD 文件。如果指定了混淆器的话,它还能将源代码经过混淆后再打包

55、。如图13,对项目点击右键,选择J2ME,在展开的下一级菜单中选择Create Package可以制作普通JAR包,选Create Obfuscated Package可以制作混淆JAR 包(前提是要在EclipseMe选项中设置好混淆器。生成的JAR和JAD文件将保存在项目文件夹的deployed目录下。 图13打包界面截图Java 程序被编译后生成的.class 文件是字节码文件,使得其很容易被反编译成 Java 源码,这让 Java 编译出来的东西很不安全。混淆器就是为此而生,经过混淆后的程序反编译出来代码将变成难以阅读,增加了代码被窃用的难度(其实作用有限。混淆的主要原理是将源码中的长

56、变量名替换成了简短的字母,这样带来的一个副作用是编译后的.class文件会比原来更小,对于对程序体积要求格的手机来说,这多出来的几 K 可能至关重要的。现在的混淆器除了上面提到的替换变量名外,还会对代码进行一些优化。3.5特殊问题与解决方法问题:在软件设计中,书籍讨论区的设计时,服务器端存储用户列表信息是以一个HASHMAP的数据结构存储的,可是当同讨论区中出现同名用户时候,原先的用户列表会被更新,如果使用原有的SendToOne(UserName,Msg函数发送消息,导致原来在聊天室的用户被踢出聊天室、解决办法:解决办法:为了保证实现同一聊天室内不许出现同名用户,采用CheckUser(St

57、ring name函数判定,对于原始用户不被踢出的解决办法采用同名重构函数SendToOne(UserSocket,Msg,以用户套接字端口为发送目标,保证原始用户能够接收到发送的消息。代码:synchronized int CheckUser(String name int flag = 0;int total = 0;Set set = list.keySet(; /使用keySet方法获取所有key值 Iterator it = set.iterator(;while (it.hasNext( /遍历所有用户名String user = list.get(it.next(;total+;if (user.equals(name flag = 1;if (total > 3 flag = 2;return flag;synchronized int sendToOne(String name, String content PrintWriter writer = null;Socket socket;Set set = list.keySet(; /使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论