基于Android图书管理系统开发【实用文档】doc_第1页
基于Android图书管理系统开发【实用文档】doc_第2页
基于Android图书管理系统开发【实用文档】doc_第3页
基于Android图书管理系统开发【实用文档】doc_第4页
基于Android图书管理系统开发【实用文档】doc_第5页
已阅读5页,还剩138页未读 继续免费阅读

下载本文档

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

文档简介

基于Android图书管理系统开发【实用文档】doc文档可直接使用可编辑,欢迎下载

基于Android图书管理系统开发【实用文档】doc文档可直接使用可编辑,欢迎下载摘要在科技日益发达的今天,社会竞争越来越强烈,这要求人们不断的获取信息来充实自己。这就要求人们能随时随地的了解并获取所需的信息。于此同时,手机的功能越来越强大,将脱离传统的打电话、发短信等基本的功能,在此情况下,图书管理系统也将进入手机,通过手机可对图书管理系统进行操作。本系统是在Android平台下设计的,在GoogleAndroid平台的SDK2。3环境下,运用Eclipse进行开发。论文概括的介绍了Android开发的流程,并重点介绍了基于Android平台的图书管理系统的开发过程。论文首先介绍了课题的研究背景、研究现状和主要研究内容;然后对系统中用到的理论知识和相关技术进行了详细的阐述,同时包括对Android平台的相关理论知识以及系统的详细实现过程。关键词Android,图书管理,智能手机平台AbstractNowadays,withscienceandtechnologydevelopingincreasingly,thesocialcompetitionhasbecomemoreandmoreintense。Itrequirespeopletolearnandobtainmoreandmoreinformationtheyneedtoenrichthemselveswheneverandwhereveritispossible.Atthesametime,mobilephoneisbecomingmoreandmorepowerfulthanthosetraditionalphoneswhichcanonlyprovidebasicfunctionssuchasSMS.Underthesecircumstances,BooksManagementSystemwillalsoutilizemobilephonesasatool,throughwhichBooksManagementSystemcanberandomlyoperated.ThissystemisdesignedundertheAndroidplatform,runundertheenvironmentofGoogleAndroidplatformSDK2。2,anddevelopedbyuseofEclipse.ThearticroducesandgenerallysummarizesthedevelopmentprocessofAndroid,andfocusesontheintroductiontothedevelopmentprocessofBooksManagementSystembasedontheplatformofAndroid.Thethesisfirstintroducesthebackground,thecurrentstatusandmaincontentsoftheresearch;andthenillustratestheoreticalknowledgeandtechniquesusedinthesystemindetailaswellastherelevanttheoreticalknowledgeanddetailedrealizationprocessoftheAndroidplatform.KeyWordsAndroid,LibraryManagement,Intelligentmobilephoneplatform目录TOC\o"1-3”\h\z\u摘要PAGEREF_Toc357607780\hIAbstractPAGEREF_Toc357607781\hIIHYPERLINK\l"_Toc357607783”第1章绪论PAGEREF_Toc357607783\h1HYPERLINK\l”_Toc357607784"1.1智能手机平台简介PAGEREF_Toc357607784\h1HYPERLINK\l"_Toc357607785”1.2Android简介PAGEREF_Toc357607785\h21。3图书管理系统简介PAGEREF_Toc357607786\h3第2章Android的架构分析PAGEREF_Toc357607787\h4HYPERLINK\l"_Toc357607788”2。1Android架构分析PAGEREF_Toc357607788\h4HYPERLINK\l"_Toc357607789"2.1。1应用程序框架PAGEREF_Toc357607789\h4HYPERLINK\l"_Toc357607790"2.1.2类库PAGEREF_Toc357607790\h42.1.3Android运行时组件PAGEREF_Toc357607791\h52.2Android应用的构成和工作机制PAGEREF_Toc357607792\h5第3章Android应用程序结构剖析PAGEREF_Toc357607793\h6HYPERLINK\l”_Toc357607794"3.1Android的APIPAGEREF_Toc357607794\h63。2Android应用程序结构解析PAGEREF_Toc357607795\h6HYPERLINK\l”_Toc357607796"3。2.1活动PAGEREF_Toc357607796\h73。2。2意图接收器PAGEREF_Toc357607797\h73.2.3服务PAGEREF_Toc357607798\h8HYPERLINK\l”_Toc357607799"3。2.4内容提供者PAGEREF_Toc357607799\h8HYPERLINK\l"_Toc357607800"3.3Android活动的生命周期PAGEREF_Toc357607800\h83。3.1活动的生命状态PAGEREF_Toc357607801\h93.3。2活动的运作流程PAGEREF_Toc357607802\h10第4章系统分析设计PAGEREF_Toc357607803\h12HYPERLINK\l"_Toc357607804”4.1系统分析PAGEREF_Toc357607804\h12HYPERLINK\l”_Toc357607805”4。2系统具体功能:PAGEREF_Toc357607805\h12HYPERLINK\l”_Toc357607806”4。2。1图书管理端具体功能:PAGEREF_Toc357607806\h124.2.2学生客户端PAGEREF_Toc357607807\h13HYPERLINK\l"_Toc357607808"4。3系统模块设计PAGEREF_Toc357607808\h13HYPERLINK\l"_Toc357607809"第5章数据库分析与设计PAGEREF_Toc357607809\h14HYPERLINK\l"_Toc357607810"5。1数据库需求分析PAGEREF_Toc357607810\h14HYPERLINK\l”_Toc357607811"5。2数据库概念结构设计PAGEREF_Toc357607811\h14HYPERLINK\l”_Toc357607812”5。3数据库表的设计PAGEREF_Toc357607812\h17HYPERLINK\l”_Toc357607813"第6章搭建开发环境PAGEREF_Toc357607813\h20HYPERLINK\l"_Toc357607814"6.1AndroidSDK的安装及环境变量的配置PAGEREF_Toc357607814\h20HYPERLINK\l”_Toc357607815"6.2Eclipse集成开发环境的搭建PAGEREF_Toc357607815\h21HYPERLINK\l"_Toc357607816"6.3模拟器的创建和运行PAGEREF_Toc357607816\h22HYPERLINK\l"_Toc357607817"第7章系统详细设计与实现PAGEREF_Toc357607817\h23HYPERLINK\l"_Toc357607818"7。1欢迎界面的设置7818\h23HYPERLINK\l”_Toc357607819"7。2学生端登录模块PAGEREF_Toc357607819\h25HYPERLINK\l”_Toc357607820”7.2.1登录界面的开发PAGEREF_Toc357607820\h26HYPERLINK\l"_Toc357607821"7.2.2登录界面功能是实现PAGEREF_Toc357607821\h27HYPERLINK\l"_Toc357607822”7。2。3数据库操纵方法的实现PAGEREF_Toc357607822\h277.3。1学生端主界面的开发PAGEREF_Toc357607824\h29HYPERLINK\l”_Toc357607825”7。3.2界面跳转控制功能PAGEREF_Toc357607825\h30HYPERLINK\l”_Toc357607826"7。4学生端查询模块PAGEREF_Toc357607826\h31HYPERLINK\l"_Toc357607827”7。4。1查询主界面及其功能开发PAGEREF_Toc357607827\h327.4。2个人已借图书查询界面及功能607828\h33HYPERLINK\l”_Toc357607829"7.4。3管内图书查询界面及其功能开发PAGEREF_Toc357607829\h347。4.4数据库操作方法的实现PAGEREF_Toc357607830\h35HYPERLINK\l"_Toc357607831"7.5学生端图书挂失功能PAGEREF_Toc357607831\h36HYPERLINK\l"_Toc357607832”7.5.1挂失界面及其功能的开发PAGEREF_Toc357607832\h37HYPERLINK\l"_Toc357607833"7.5.2数据库操作方法的实现PAGEREF_Toc357607833\h387。6学生端图书预约功能模块PAGEREF_Toc357607834\h397.6.1图书预约界面及其功能的开发PAGEREF_Toc357607835\h397。6。2数据库操作方法的实现PAGEREF_Toc357607836\h41HYPERLINK\l"_Toc357607837"7.7管理端开发PAGEREF_Toc357607837\h42HYPERLINK\l"_Toc357607838"7。7。1管理员登陆界面的开发PAGEREF_Toc357607838\h427.7.2管理员登陆验证模块PAGEREF_Toc357607839\h427。8管理端主界面的开发PAGEREF_Toc357607840\h43HYPERLINK\l"_Toc357607841”7.9图书管理模块PAGEREF_Toc357607841\h43HYPERLINK\l”_Toc357607842"7。9。1图书管理界面的开发PAGEREF_Toc357607842\h44HYPERLINK\l”_Toc357607843"7.9.2其他图书管理界面的开发PAGEREF_Toc357607843\h44HYPERLINK\l"_Toc357607844"7.9。3图书管理界面的监听方法PAGEREF_Toc357607844\h457。9。4图书入库和图书删除方法的实现PAGEREF_Toc357607845\h467.9。5图书查询和修改图书信息方法的实现PAGEREF_Toc357607846\h50HYPERLINK\l"_Toc357607847"7.10学生管理模块PAGEREF_Toc357607847\h517。10.1学生管理界面的简介607848\h517。10.2学生管理界面的发开PAGEREF_Toc357607849\h527。10.3数据库操作方法的实现PAGEREF_Toc357607850\h54HYPERLINK\l"_Toc357607851"7.11管理员管理模块PAGEREF_Toc357607851\h557.11.1管理员管理界面开发PAGEREF_Toc357607852\h567。11。2管理员管理界面监听方法PAGEREF_Toc357607853\h577.11。3数据库操作方法的实现PAGEREF_Toc357607854\h57HYPERLINK\l”_Toc357607855"7.12管理员图书查询模块PAGEREF_Toc357607855\h597.13管理端图书挂失模块PAGEREF_Toc357607856\h59HYPERLINK\l"_Toc357607857”7.14管理端图书借阅预约模块PAGEREF_Toc357607857\h60HYPERLINK\l"_Toc357607858”7.14.1图书借阅功能按钮监听PAGEREF_Toc357607858\h617。14.2数据库操作方法的实现PAGEREF_Toc357607859\h62HYPERLINK\l"_Toc357607860”7.15欠款缴纳模块PAGEREF_Toc357607860\h62HYPERLINK\l”_Toc357607861”7.15.1欠款缴纳界面的开发PAGEREF_Toc357607861\h637.15.2数据操作方法的实现PAGEREF_Toc357607862\h63结论PAGEREF_Toc357607863\h64致谢PAGEREF_Toc357607864\h65参考文献PAGEREF_Toc357607865\h66第1章绪论1.1智能手机平台简介智能手机(Smartphone),是指“像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入的这样一类手机的总称”。在所有智能手机操作系统中,他们之间的应用软件互不兼容。因为可以安装第三方软件,所以智能手机有丰富的功能。智能手机的诞生,是掌上电脑(PocketPC)演变而来的。最早的掌上电脑是不具备手机的通话功能,但是随着用户对于掌上电脑的个人信息处理方面功能的依赖的提升,又不习惯于随时都携带手机和PPC两个设备,所以厂商将掌上电脑的系统移植到了手机中,于是才出现了智能手机这个概念。智能手机比传统的手机具有更多的综合性处理功能,比如Symbian操作系统的S60系列,以及一些MeeGo操作系统的智能手机。然而,就新近的发展来看,这些智能手机的类型有相融合的趋势.智能手机同传统手机外观和操作方式类似,不仅包含触摸屏也包含非触摸屏的数字键盘手机和全尺寸键盘操作的手机.但是传统手机都使用的是生产厂商自行开发的封闭式操作系统,所能实现的功能非常有限,不具备智能手机的扩展性.“智能手机(SmartPhone)"这个说法主要是针对“功能手机(Featurephone)”而定义的,本身并不意味着这个手机有多“智能(Smart)”;从另一个角度来讲,所谓的“智能手机(SmartPhone)”就是一台可以随意安装和卸载应用软件的手机(就像电脑那样)。“功能手机(Featurephone)”是不能随意安装卸载软件的,JAVA的出现使后来的“功能手机(Featurephone)”具备了安装JAVA应用程序的功能,但是JAVA程序的操作友好性,运行效率及对系统资源的操作都比“智能手机(SmartPhone)”差很多。智能手机具有五大特点:(1)具备无线接入互联网的能力,即需要支持GSM网络下的GPRS或者CDMA网络的CDMA1X或3G(WCDMA、CDMA-2000、TD-CDMA)网络,甚至4G(HSPA+、FDD-LTE、TDD-LTE).(2)具有PDA的功能,包括PIM(个人信息管理)、日程记事、任务安排、多媒体应用、浏览网页。(3)具有开放性的操作系统,拥有独立的核心处理器(CPU)和内存,可以安装更多的应用程序,使智能手机的功能可以得到无限扩展。(4)人性化,可以根据个人需要扩展机器功能。根据个人需要,实时扩展机器内置功能,以及软件升级,智能识别软件兼容性,实现了软件市场同步的人性化功能。(5)功能强大,扩展性能强,第三方软件支持多。1.2Android简介Android一词的本意是指“机器人",同时也是Google于2007年11月5日宣布的,基于Linux平台开源手机操作系统的名称,该平台有操作系统,中间件,用户界面和用用软件组成,号称是首个为移动终端打造的真正开放和完整的解决方案。从此,人们不在受PC束缚,无论走到哪里只要有一部Android手机,并且有移动信号,就可以随时随地的进行办公、浏览资讯、网上冲浪、极大地方便了人们的生活。正因如此,Android仅仅用了3年左右的时间,就迅速的成长为全球第一大的移动终端平台,不仅广泛应用到了智能手机领域,在平板电脑、智能导航仪、智能MP4领域也有很大的影响,深受移动终端生产厂商和广大用户的青睐.Android基于Linux技术开发,有操作系统、用户界面、应用程序组成,允许开发人员自由获取,修改源代码,也就是说这是一套具有开源性质的移动终端解决方案。具有以下特点:(1)开放性(2)所有的应用程序都是平等的;(3)应用程序间无界限;(4)快速方便的应用程序开发。Android平台采用的是一种被称为软件叠层(SoftwareStack)的方式进行构造.这种软件底层结构使得层与层之间相互分离,明确各层分工。这种分工保证了层与层之间的低耦合,当下层的层内或者层下发生改变时,上层应用程序无序任何改变Android是由5大部分组成,如图2.1所示:图2。1Android架构的五个部分(1)应用程序层:这层中包含了核心的应用程序这些程序都是用Java编写的。(2)应用程序框架:应用程序框架除了可以作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可以发布它的功能模块,只要发布时遵守了框架的预订,那么其他应用也可以使用这个功能模块。(3)函数库:包含了一套被不同组件所使用的C/C++库集,Android应用开发者不能直接的调用这套库集,但是可以通过它上层的应用程序框架来调用这些库。(4)Android运行时:是由Android核心库集和Dalvik虚拟机组成的。(5)Linux内核:它提供了安全性、内存管理、进行管理、网路协议、和驱动模块等核心系统服务,除此之外它还是系统硬件和软件叠层之间的抽象层.1.3图书管理系统简介随着各图书馆的图书的数量不断增多和图书馆规模的不断扩大,管理这些庞大的体系是非常困难的,因为图书的情况是随时改变的,因此必须对图书进行动态的管理,而这对于一个管理人员来说是一件比较复杂的事情,存储、查询、借阅是必不可少的业务。基于Android移动设备渐渐的普遍起来,人们逐渐渴望移动办公的实现,即仅仅通过一部智能手机就可以完成大部分的工作量。为了能让管理员从繁重的工作中解脱出来,让管理员在使用这个软件以后能极其容易且方便的对所有图书进行管理,并且准确无误,轻松自如,因此开发一个图书管理系统软件是当务之急,也是本毕业设计选题的重要意义和研究宗旨。本软件为图书管理员与学生通过移动平台来查询图书的借阅、预约等情况,方便用户随时查看图书使用情况。第2章Android的架构分析Android是一个包含操作系统、中间架构层及应用程序所产生出来的软件堆栈架构.由下而上,其核心为嵌入式Linux2。6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序。2。1Android架构分析2。1.1应用程序框架在AndroidSDK中,定义了可以让开发者使用的与核心程序相同的API,程序框架是为了要简化组件,重新利用而设计的新的框架,应用程序可以发布功能,为其它的程序所使用。但是,这要受限于程序架构的安全机制。使用者以同样的机制来进行新增,置换组件。目前所有的程序是由服务以及系统来组成。包括:(l)一套扩展的视图系统:用来创建一个应用程序的基本组件,包括在开发系统界面的时候,常常使用的列表、网格、文本框、按钮等控制项,甚至是内嵌的Web浏览器。(2)内容提供者:可以使应用程序访问到另外一个应用程序中的数据,或者共享自己的数据。(3)资源管理器:提供非程序代码资源,让应用程序去使用。如:本字符串、图形文件或者排版相关布局文件.(4)通知管理器:提供程序在状态栏上显示应用程序自定义提示信息。(5)活动管理器:管理所有应用程序的生命周期以及提供的常用的导航回退功能。如:启动应用程序就要使用资源准备以及关闭应用程序的时候释放掉的内存以及相关资源等工作。(6)视窗管理器:用来管理所有启动的应用程序的视窗。(7)位置管理器:用来管理与地图相关的服务和功能。(8)电话管理器:用来管理用户拨打或者接听电话的功能.(9)包管理器:管理所有安装在Android系统内的安装包.2。1。2类库Android包含了一组被Android系统各种组件使用的C/C++类库。这些类库通过Android应用框架暴露给开发者。下面列出一些核心类库:(1)系统C库:派生与BSD的标准C库(libc)的实现,并且基于嵌入式的Linux设备进行了调整;(2)多媒体库:基于PacketVideo公司OpenCORE的多媒体类库,这个类库支持许多流行的音/视格式的回放和录音,以及静态的图片文件,如:PPEG4、H。264、MP3、AAC、JPG、PNG。(3)界面管理器:管理对显示子系统的访问,并且把应用程序与2D和3D图形层无缝的融合到一起。(4)LibWebCore:一个现代的Web浏览器引擎,Android浏览器和可嵌入的WebView组件都基于这个引擎。(5)SGL:底层的2D图形引擎;(6)3D类库:基于OpenGLES1.0API的实现,这个类库既可以是硬件3D加速(如果硬件加速有效),也可以包含高度优化的3D软件光栅处理器(7)FreeType:位图和矢量字体渲染;(8)SQLite:一个强大的轻量级关系数据库引擎,对所有的应用程序有效。2。1.3Android运行时组件虽然Android是用Java语言来开发、撰写应用程序,但却不使用Java运行时组件来执行Java程序,而是使用了由Google自行研发的Android运行时组件来执行程序。Android运行时组件包含有两个重要的部分,核心类库和Dalvik虚拟机。2.2Android应用的构成和工作机制对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Android应用的构成和工作流程如图2.2所示:图2。2Android的构成和工作流程第3章Android应用程序结构剖析3。1Android的APIAndroidAPI主要包含以下几个部分:(1)AndroidManifest.xml(清单文件)AndroidManifest.xml(清单文件)是系统的控制文件,它将要告诉系统将要如何的处理所创建的所有的应用组件(尤其是Activity,Service,IntentReceiver)和内容提供者(ContentProvider))。举例来说:清单文件就是把活动和要接收的意图(Intent)连在一起的“胶水”。(2)活动活动就是一个具有生命周期的对象。一个活动就是要完成某些功能的代码块,这部分工作还可以包括对用户UI界面显示.不过这不是必须有的,有些活动从不显示UI布局.(3)视图视图可以将其自身绘制到显示屏上.Android的用户界面是由一系列的视图组成的。接口都是由一组视图组成的。开发者可以通过使用新创新的视图,来使用自定义的图形界面的处理技术。(4)意图意图是简单的消息对象,它表示的是程序想做某件事的意图.比如程序想要显示一个网页界面,那么,它可以通过创建一个意图实例,将值传递给系统来进行表示意图,浏览这个URI.系统将定位到能够处理这意图的代码,并运行.意图也用于广播系的有效事件的传递.(5)服务服务就是运行在后台的一段代码。它可以运行在它自己的进程中,也可以运行在其他程序的进程中,这取决于自身需要。其它组件可以绑定一个服务中取,通过远程AIDL调用这个方法。比如:媒体播放器服务,当用户退出媒体界面时,仍然希望音乐可以继续播放,这个时候就可以使用服务来确保当用户关闭界面的时候音乐还能继续播的播放.(6)通知通知将以小图标形式展现在状态栏中,用户通过与图标交互,来接收信息。最常见的通知包括:短信息,通话记录,语音邮件等,但是程序也可以创建自己的通知事件。(7)内容提供者内容提供者是用来提供设备上数据访问的.典型例子:使用内容提供者访问联系人。程序也可以用其它程序的内容提供者提供的数据,同时也可以自定义自己的内容提供者来向别的程序提供数据.3.2Android应用程序结构解析通常由四大组件构建一个完整的Android应用程序。(1)活动(2)意图接收器(3)服务(4)内容提供者然而,并不是所有的Android程序都必须具备上面的四大组件,可以由上面的一个或几个来进行组建.当决定使用哪些组件来构建Android程序的时候,需要将它们注册在AndroidManifest.xml(清单文件)中,这是一个XML文件,在文件中可以声明程序组件和它们的要求。这个配置文件是每个Android程序所必需具备的。3。2.1活动活动是以上四大组件中最常用的一个组件.每个活动都是继承于Activity的子类,并实现了一些各自的功能,如管理UI的显示和UI的事件。一个活动就相当于程序给用户的一个显示界面,由事件、响应视图等组成.大多数的程序通常要包括多个界面。如:聊天应用程序,应该包含一个联系人的界面、一个聊天的界面、一个设置的界面、一个聊天记录查询的界面等等.每个界面都可看作是一个活动。显示一个新的界面就相当于生成了一个对应的活动。在一些特殊的情况下,一个活动能够给它上级界面一个返回值,如:提供给用户选择照片的活动,可以返回给调用它的用户照片文件。当新的Activity(活动)出现时,前一个Activity(活动)被中断,并被放入到一个历史堆栈中。用户可以使用返回键调用前一个Activity(活动).当Activity(活动)不再需要的时候,可以将它们从历史的堆栈中移除。默认的情况下,Activity(活动)应用程序会把每个Activity(活动)到历史的堆栈中去。Android应用程序通过Intent(意图)类,来实现界面与界面之间的跳转.一个Intent(意图)描述了一个程序想要做的事情.在Intent(意图)的描述结构中,含有两个重要数据:动作与动作对应的数据。典型的动作类型有MAIN、VIEW等,而Activity(动作)对应的数据则要用URI的形式展现出来。除此之外,还有一个被称作意图过滤器的相关类。当发生一个有效目的请求的时候,意图过滤器就要用来描述这个能够处理什么样的意图。通常意图过滤器要被注册在AndroidManifest。xml(清单文件)中。从一个界面转到另外的一个界面是由各种意图来实现的.随后,这个活动接收到的意图(Intent)的通知并开始进行运行.当startActivity的方法被调用了,解析这个意图处理过的程也随之发生。3.2.2意图接收器开发者可以使用IntentReceiver让自己的应用对一个外部事件做出响应,比如当电话呼入时,或者当数据网络可用时,或者时间到晚上了。IntentReceiver不能显示用户界面,它只能通过NotificationManager通知用户这些有趣的事情发生了。IntentReceiver既可以在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册.但是当这些有趣的事情发生时,应用不必对请求调用IntentReceiver,系统会在需要的时候启动应用,并在必要的情况下触发IntentReceiver。各种应用还可以通过使用Context。broadcastIntent()将它们自己的Intent广播给其他应用程序。3.2。3服务服务(Service)也是Android的四大组件之一,它和Activity最为相似,他们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台进行运行,它没有用户的界面,所以绝不会到前台来,它和Activity一样具有自己的生命周期。内容提供者在Android中,每个应用程序都有它们自己的ID并且可以在自己的进程中进行执行.这样做的好处是:(1)可以保护系统和应用程序,避免被其他不正常的应用程序所影响。(2)可以把每个进程想像成是一个黑盒子,进程之间不会互相影响,连内存的资料都无法进行共享。如果应用程序之间要共享数据,就需要用到内容提供者。内容提供者就是一个类,它实现了一个方法集合,其他的应用程序可以去使用这些方法来保存和检索这个内容提供者处理过的数据.3。3Android活动的生命周期Android平台是个手机操作系统.先把其他功能撇掉不谈,根据手机的特性,就应该能够随时随地的在未完成目前动作时候,暂停正在使用功能,切换到接听电话、接收短信的模式,而且在接听完电话回到应用程序的时候,还希望能看到之前操作一样的内容.现在用户使用的智能手机大多已经习惯使用能够后台处理的作业系统(比如WindowsMobile),可以在使用手机听音乐的同时,执行其他多个应用程序。同时执行多个应用程序有它明显的好处,但也有它的缺点。每多开启一个应用程序,就会多耗费一些系统的内存,而手机里的内存是有限的。当同时开启的应用程序过多的时候,或者是关闭的程序没有释放掉内存,系统会越来越慢,甚至不稳定,最后到死机。为解决这个问题,Android引入了一个新的机制:“生命周期”。Android应用程序的生命周期是交给Android的框架进行管理的,而不是由应用程序直接进行控制的。通常,每个应用程序,都会占用一个进程。当系统内存不足的时候,会依照优先级来自动进行进程的自动回收.不管是使用者还是开发者,都无法确定应用程序什么时候会被回收。一个活动类,除了OnCreate(创建)方法之外,还定义了onPause(暂停)、OnResume(继续)等等的基本方法,当一个活动切换到另外一个活动的时候,原来的活动将会经过一连串的状态的改变。开发者可以在程序中添加一些状态相对应的流程,每次活动状态改变的时候,就会执行相对应的流程的操作。要让用户有更好的使用体验,活动需要在各个周期内负责保管状态,恢复状态,传送资料的工作。3。3。1活动的生命状态Android的虚拟机是使用堆栈来进行管理的。其主要有四种状态:(l)活动状态:活动状态是指用户启动了应用程序或活动结束后,活动运行时的状态.在Android平台上,同一个的时刻只能有一个活动处于活动或者运行的状态。其他的活动都会处于未启动,停止或是暂停状态.(2)暂停状态:暂停状态是指当活动暂时停止下来的时候,退到背景画面状态。当警告对话框或者电话到来的时候,都会让原来运行活动退到背景画面中。新出现的警告对话的框等界面元件盖住掉了原来的活动的画面.活动处在暂时停止的状态,用户无法与原来的活动互动.(3)停止状态:停止状态是指有了其他活动正在执行中,而这个活动己离开了屏幕,不再执行动作的状态。通过按返回键就可以查看所有处于停止状态应用程序的列表.处于停止状态的活动还可以通过通知来进行唤醒。(4)已回收或未启动状态已回收的或未启动的状态是指活动未被启动或者已经被手动终止的状态。要手动终止活动,可以在系统中进行调用finish(结束)的方法。如果是被系统回收的,可能是因为内存不足,所以系统会根据内存不足的回收规则,将停止状态的活动其占用的内存进行回收。图3.1Android活动生命周期图3.1所示的七个状态又可以归纳为三组:(l)资源分配完整的活动的生命周期是由创建状态开始由销毁状态而结束.创建的时候分配资源,销毁的时候释放资源.(2)可见与不可见当活动运行到启动的状态的时候,就可以在显示屏上看到这个活动。相反当活动运行到停止的状态的时候,这个活动就会从显示屏上消失.当用户按下返回键,回到上一个活动界面的时候,会先到重新启动的状态,再到一般启动的状态。(3)用户取得屏幕的控制权当有个警告对话框,短信,电话等信息到来的时候,原来活动会进入暂停的状态,暂时放弃对显示屏的控制权,被中断到了背景中去,将前景交给了优先级较高的事件。当这些优先级较高的事件处理完毕后,活动就会进入继续的状态,此时又获取到了显示屏的控制权。3.3.2活动的运作流程根据实际的运行来观察,我们可以总结出所有Android程序都遵循的运作的流程:(l)一般启动启动一个活动的基本流程为:onCreate到onStart到onResume.该流程是首先将分配的资源给这个活动,然后将活动内容显示到显示屏上,在一切准备就绪后,取得显示屏的控制权,用户就可以开始使用这个应用程序。(2)调用另一个活动调用另一个活动的基本流程为:onPause到onCreate到onStart到0nResume到onStop。该流程将首先冻结原来活动,再交出显示屏上的控制权,直到活动完成之后,活动才会被停止。(3)回到原来活动回到原来活动的基本流程为:onPause(2)到onRestart(1)到onStart(l)到onResume(1)到onStop(2)到onDestroy(2)。另外按返回键也是可以回到原来活动的。(4)退出结束退出结束的基本流程为:onPause到onStop到onDestroy.如果应用程序中有直接进行调用finish方法来结束活动的,系统就会跳过原先冻结的阶段,直接进行暂停,停止,最后进行销毁。(5)回收后再启动回收后再启动的基本流程为:onCreate到onStart到onResume.如果被系统回收机制回收掉的活动一旦又要重新被调用的时候,就会像一般的启动那样再次被调用到活动的onCreate方法中去.当在模拟器上已经执行了过多个的应用程序的时候,只要按下返回键按钮,就会开启最近一次开启的活动。这时要是按下多次的返回键,理论上迟早会返回到某个已经销毁的活动中去.如果应该开启的活动己经被系统的回收机制进行回收了,那么这个活动会就会被再次的创建.再次被创建的活动,跟之前开启过的活动是不相同的。所以如果要让新被创建的活动跟原来开启过的活动是一样的,那么在活动之间切换的时候就要保存其资料:在每次活动运行到暂停或者停止状态的时候先保存资料最后在创建的时候把资料读取出来。第4章系统分析设计4.1系统分析图书管理系统总的来说分为两个用户端。一端为管理员客户端,一端为学生客户端,两端共访问一个数据库。管理员客户端为管理员使用的客户端,主要是进行图书与学生的管理,通过图书管理端查询日常借书信息。学生客户端为学生使用的客户端,主要是对图书的查看、挂失、预约的操作。具体结构如图4.1所示:图4。1系统结构图4.2系统具体功能:4.2。1图书管理端具体功能:(1)图书管理:图书查询,通过图书编号查看图书信息;图书入库,添加图书信息,在数据库中添加一本新的图书,添加的数据有图书编号(ISBN)、购买日期、书名、作者、出版社、是否借阅、是否预约、简介(2)学生管理:学生查询,通过学号查看学生信息;添加学生,在数据库中新添加一条学生信息,添加的数据有学号、姓名、性别、借书时间、年龄、电话、班级、院系、密码(3)管理员管理:添加管理员,新添加以为管理员,数据有管理员用户名、密码、权限;删除管理员,如果当前管理员的权限为“高级”则此管理员具有新增管理员和删除管理员的功能;通过用户名查看管理员;修改密码(4)查询:查询书籍,可以通过书名、出版商、作者查询图书信息(5)挂失:图书丢失,管理员可查询出谁丢失了图书(6)预约:管理员可查询出哪位学生预约借书(7)缴纳欠费:功能暂无4。2.2学生客户端查询:学生用户可以对管内的图书资料进行简单和高级的查询挂失:图书不慎丢失,可以在学生端中实现挂失。预约:当查询是发现要借阅的图书已经被借阅,可以提前预约。4.3系统模块设计图4。2系统模块示例图第5章数据库分析与设计5。1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入.收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础。 针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下所示的数据项和数据结构:(1)学生表基本信息表(Student),包括的数据项有:学生编号、学生姓名、学生年龄、学生性别、班级、院系、联系方式、借阅许可、密码(2)管理员基本信息表(manager),包括的数据项有:管理员账户、管理员权限、管理员密码(3)图书基本表1(book),包括的数据项有:国际标准书号、图书名称、作者、出版社、购买时间(4)图书基本信息表2(bdetailedinfomation),包括的数据项有:图书馆的书号、国际标准书号、是否借阅、是否预约、图书的简介(5)借书信息表(record),包括的数据项:图书编号、学生编号、借书时间、还书时间、是否借书、是否预订(6)超期图书信息表表(overtime),包括的数据项:学生编号、图书编号、图书名称、超期天数。(7)预约图书信息表(orderbook),包括的数据项:书号、学生姓名、班级、书名、学生学号、作者(8)挂失书籍表(losebook),包括的数据项:挂失编号、图书编号、图书名称、学生编号.有了上面的数据结构、数据项,就可以进行下面的数据库设计了。5.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设局出能够满足用户需求的各种实体,以及他们之间的关系,为后面的逻辑结构设计打下基础。本实例根据上面的设计规划出的实体有:图书实体类、学生信息实体类、管理员信息实体类、预约图书实体类、超期图书实体类、挂失图书实体类、图书借阅实体类、图书信息实体2类.各个实体具体的描述如图5.1—5.8所示。图5.1图书信息实体1E-R图图5.2学生信息实体E-R图图5.3管理员信息实体E—R图图5.4预约书籍实体E—R图图5.5超期图书实体E-R图图5.6挂失书籍实体E-R图图5。7借书信息实体E-R图图5.8图书信息实体2E-R图5.3数据库表的设计(1)学生用户基本信息表Student:用于记录学生的基本信息表5.1学生基本信息表(Student表)字段名数据类型字段大小是否主键是否为空说明S_NumVarchar20是否学号S_NameVarchar50否是姓名S_AgeVarchar10否是年龄S_SexVarchar50否是性别S_ClassVarchar50否是班级S_DepartmentVarchar50否是院系S_PhoneVarchar11否是电话S_PermittedVarchar50否是借阅许可S_PwdVarchar20否是密码(2)管理员信息表manager:用于记录管理员基本信息和管理员的权限表5.2管理员信息表(manager表)字段名数据类型字段大小是否主键是否为空说明M_NumVarchar20是否管理员IDM_PermittedVarchar50否是图书管理权限M_PwdVarchar50否是管理员密码(3)图书信息表1book:用于记录一类(相同的ISBN)图书的基本信息表5.3图书信息表1book(1book表)字段名数据类型字段大小是否主键是否为空说明ISBNVarchar20是否一类图书标记B_NameVarchar50否是书名B_AuthorVarchar50否是作者B_publishmentVarchar80否是出版社BuyTimeVarchar50否是购入时间(4)图示信息表2bdetailedinfomation:用户记录图书管内不同书号的基本信息表5。4图书信息表(bdetailedinformation表)字段名数据类型字段大小是否主键是否为空说明B_NumVarchar20是否图书馆书号ISBNVarchar20否是一类书标记BorrowedVarchar50否是是否借阅OrderedVarchar50否是是否预约IntroductionVarchar1000否是图书的简介(5)图书借阅信息表record:用于记录已经借阅的图书的基本信息表5.5图书借阅信息表record表(record表)字段名数据类型字段大小是否主键是否为空说明B_NumVarchar20是否书号S_NumVarchar20否是学号BorrowTimeVarchar50否是借阅时间ReturnTimeVarchar50否是归还时间BorrowedVarchar50否是是否借阅OrderedVarchar50否是是否预约(6)超期图书信息表exceedTime:用于记录超期图书的基本信息表5.6超期图书信息表OverTime(OverTime表)字段名数据类型字段大小是否主键是否为空说明S_NumVarchar20是否学号B_NumVarchar20是否书号B_NameVarchar50否是书名OverTimeint20否是超期天数(7)预约图书信息表orderbook:用于记录预约图书的基本信息表5.7预约图书信息表Orderbook(Orderbook表)字段名数据类型字段大小是否主键是否为空说明B_NumVarchar20是否书号S_NameVarchar50否是学生姓名S_ClassVarchar50否是班级B_NameVarchar50否是书名S_NumVarchar20否是学生学号B_AtuthorVarchar50否是作者(8)挂失图书信息表losebook:用于记录挂失图书的基本信息表5.8挂失图书信息表losebook(losebook表)字段名数据类型字段大小是否主键是否为空说明GSBNInternetN/A是否挂失书号B_NumVarchar20否是书号B_NameVarchar50否是书名S_NumVarchar20否是学生学号第6章搭建开发环境6.1AndroidSDK的安装及环境变量的配置Android使用的编程语言是时下最流行Java高级语言,Java的跨平台性和开放性,极大的促进了Android的平台的发展.首先要安装Java的JDK,并且正确的配置系统的环境变量(基于Windows操作系统),具体步骤如下:(1)下载并安装最新的JDK安装程序,登陆Oracle官方网站,免费下载,下载完成后将其安装到默认的目录下即可,(2)配置环境变量.右键点击“我的电脑”图标,依次选择属性—>高级-〉环境变量命令,添加path变量,值设置为jdk的安装目录下的bin目录,在系统变量中添加JAVA_HOME变量,值设为C:\ProgramFiles\Java\jdk1.6.JDK安装完毕后,接下来需要查看对应的版本安装AndroidSDK。具体步骤如下:(1)登陆Android官方网站下载对用版本的SKD安装包。网址是http://developer.androi当下最流行的是4。1.2但是最稳定的版本还是2.3.3(2)将下载好的SDK解压缩到硬盘目录下,并在环境便令中配置参数,配置的系统便令path值是c:\ProdgramFiles\android-sdk-windows\tools到此,所有的环境变量设置完成。可以在android安装目录下tools目录中运行androidlisttargets,如过能够看见是如下画面就是安装成功:图6.1安装成功6.2Eclipse集成开发环境的搭建完成SDK以及系统环境变量的配置后,接下来安装和配置Eclipse集成开发环境,具体步骤如下:(1)登陆Eclipse官方网站下载适用版本的Eclipse(2)将下载完的Eclipse安装包解压到硬盘中合适位置,双击eclipse.exe文件打开Eclipse(3)Eclipse打开后,在Help菜单汇总选择InstallNewSoftware进入Install界面。可以选择在线安装和安装已经下载好的离线安装包进行安装。图6。2安装ADT界面(4)在Install界面选中DeveloperTools然后点击Next按钮进行安装,耐心等待完安装后,在弹出的界面中直接单击Finish按钮重启Eclipse按成ADT的安装图6.3安装示意图(5)打开Eclipse后在windows菜单汇总选择Preferences。(6)打开Preferences界面选择Android—>Browse,添加到SDK目录单击Ok。图6。4安装示意图6.3模拟器的创建和运行Eclipse集成开发环境搭建完成后,接下来就需要创建和运行Android的模拟器了,有Android模拟器才能运行应用程序.打开Eclipse后在工具栏中单击OpenstheAndroidSDKandAVDManager按钮,如图所示:图6.5启动按钮打开AndroidSDKandAVDManager打开AndroidSDKandAVDManager窗口后单击New按钮,弹出CreatenewAndroidVirtualDevice对话框来进行模拟器的一些设置,如图所示:图6.6创建模拟器第7章系统详细设计与实现7。1欢迎界面的设置本软件开始执行后,在软件执行后就进入了系统的欢迎界面,这个欢迎界面起到的功能是联网检查软件是否有更新,如果有更新就提示用户是否进行更新的操作,如果用户选择了更新,就进行下载并安装,如图7。1所示。图7。1程序启动界面主界面的总体实现过程如下:(1)首先创建布局.打开Layout里的main。xml,在这个布局里需要添加2个TextView和1个ImageView的布局。整体布局采用的相对布局的方式。(2)在程序一开始时,框架就反向调用oncreate方法,然后执行setContentView()。执行setContentView方法的时候后,就去读取main。xml的内容,依据它来进行屏幕画面的布局,并显示出来。并可以在main。xml中设置背景图片。图7。2欢迎界面布局(3)链接网络进行版本的检查:图7。3联网进行软件版本检测示例代码(4)提示用户有新的版本是否进行下载:图7.4提示用户进行下载示例代码在下载完成后,用户点击安装软件的方法:调用的系统的安装意图,进行apk的一个安装图7.5安装新版本示例代码7.2学生端登录模块通过欢迎界面之后,就到了登陆的界面,用户登陆界面主要包含用户名的输入文本框和密码输入框,以及登陆按钮和重置按钮以及页面下方的图书介绍插件。7.2.1登录界面的开发图7。6学生端登陆界面主界面的总体实现过程如下:首先是图片的加入,线程的调用改变当前的索引值.(2)得到图片资源的具体的实现方法,然后获取View的大小,设置起始的坐标,设置背景的颜色最终实现贴图图7.7绘制出背景图片7.2。2登录界面功能是实现登陆功能实现过程如下:设置当前布局为手机的当前显示界面,并获取界面中的给个控件的ID,然后设置登陆按钮的监听事件,输入用户名和密码,通过数据库查询是否有这个用户,以及该用户输入的密码和输入的密码是否相符,相符就进入主界面中,如果不相同,就显示登陆失败。重置按钮的监听设置,单击之后用户名输入文本框和密码输入文本框全部置为空。图7.8登陆按钮监听事件代码7.2。3数据库操纵方法的实现在登陆的时候需要进行数据库的查询,是通过用户的输入的用户名调用此方法查看数据库中是否有该用户或者用户名所对应的密码是否和输入的密码相同,如果相同就验证成功否则提示失败。图7.9调用数据库示例代码7。3学生端主页模块用户验证成功后便进入了学生端图书管理系统的主界面,如图7.10所示图7.10学生端主界面7.3。1学生端主界面的开发首先是进行一些变量的声明和初始化,然后为本类进行构造,包括画笔的准备工作和initBitmap方法的调用,在initBitmap方法实现每个图标的图片工厂加载操作,然后重写OnTouchEvent方法实现触摸图标按钮的事件方法最后重绘图片。在系统主页中一共有查询,关于,帮助,预约,挂失,退出,注销7个按钮图标,以及一个背景图片是通过initBitmap的方法加载进来的。图7.11学生端主界面图片绘制在initBitmap方法实现了图片的加载,使程序获得图片的资源,在获取图片的资源后使用OnDraw方法在x-y坐标上来实现贴图的。图7.12学生端主界面图片绘制其原理是提前在坐标系中画出图标的合理布局,计算每个图标距离手机左,上的距离,然后根据此进行贴图的,画出各个按钮的图标。在实现了图标的定位贴图后,单击它并没有什么变化,这样就要设置图标的点击事件了,在这里是通过重写OnTouchEvent的方法实现图标的监听事件的。图7.13主界面按钮的监听事件在手机上如果用户触摸到了主页上的这些图标按钮的时候,系统会根据坐标判断用户也到底触摸到的是哪个图标,人然后根据不同的按钮的监听方法设置跳转到不同功能界面.7。3.2界面跳转控制功能通过触摸不同图标就会发送不同的消息,系统通过接受这些消息判断要跳转到那和界面中去,实现了界面的跳转。在主界面中不同的按钮,对应发送的消息是不同的,定义一个方法实现接受到不同的消息,在接受到消息之后,最终实现界面的跳转。图7.14在Handler中进行主线程的更新示例代码7.4学生端查询模块在主界面中点击查询的图标就进入了学生端的查询界面,作为图书馆的学生端的图书查询,应该具有对管内图书查询的内力以及对个人已借图书的查询能力。图7。15查询页面7.4。1查询主界面及其功能开发查询功能分为管内图书的查询和个人已借阅图书的查询,在页面中,有两个按钮,分别是图书信息查询和个人已借图书查询,单击不同的按钮跳转到不同的界面中。图7。16图书信息查询和已借阅图书按钮监听示例代码在查询的主界面中有两个查询功能的按钮,管内所有图书的查询和个人借阅图书的查询(self和self1)单击self通过访问数据库,得到登陆的用户的结束信息,并以滚动列表的形式显示,单击self1进入馆内图书的查询界面,里面分别为简单查询和高级查询。单击个人图书信息查询时进入个人结束信息界面,用到了数据库查询的方法getSomeInfo(),通过这个方法得到了登陆用户的借书信息,该方法的代码如下:图7。17根据用户的信息查询数据库中的数据通过这个方法对数据库进行查询,得到了登陆的用户的借书信息,包括该用户的学号、借书的借阅时间、归还时间、图书ISBN号、图书名称和图书出版社等借书的信息,并将查询到的结果值传到下面个人借书相信信息中。7.4.2个人已借图书查询界面及功能通过单击查询个人已经借阅图书的按钮,在经过执行数据库查询语句,并经查询到的结果以滚动的形式呈现在个人借阅图书的界面上。图7。18个人已借阅图书界面这个模块中数据是以键值对的形式,将数据库中查询到的数值,如书号、ISBN作者、出版社、书名等内容全部添加到列表List里面然后把这些值填充到GirdView中去,这样就可以以滚动条的方式给用户显示出来。图7.19个人已借阅图书示例代码GirdView能实现界面信息的滚动浏览,元素本身可以包含多动布局的方法,通过SelfgenerateDataList函数给数据添加了对用的键值对,把这写信息全部的存储到了list中,最后通过放过BaseAdapterselfgridView实现了数据键值和元素控件ID的一一对应,最终添加到适配器,让list里面独享的数据显示在GirdView元素里面。图7.20个人已借阅图书示例代码7。4.3管内图书查询界面及其功能开发单击管内图书的查询按钮进入管内图书的查询模块,图书的查询包含了简单的查询和高级的查询,查询的条件为书名、作者、出版社的查询,输入完成后,通过查询进入图书查询结果的界面中.图7.21管内图书查询界面这个模块的实现方式和个人借阅图书查询模块的实现的方式是一样的.在这个模块中有一个空间是Spinner这个空间和Swing下拉列表类似,首先是要声明一个类,主要实现的是Spinner里面内容的键值对化,然后分别创建有参数的构造方法,初始化键值对。图7.22管内图书查询示例代码开发该类的原因是因为以为Spinner中会有很多的选择项,但是Spinner中的任意元素是得到它对应选项的内容,这时候必须要开发这个了去实现键值对的模式,通过键值对的形式加入Spinner元素,点击到的时候就可以通过键值轻松的得到它的值。图7。23管内图书查询示例代码通过这段代码实现了Spinner中元素的添加,当选择某个元素时,可以以键值对的形式,得到她对应的内容,如键1对应的值就是“作者”.7.4。4数据库操作方法的实现图7。24管内图书查询示例代码以上的方法是通过图书的书名查询到图书的基本信息比如ISBN号,书名作者以及出版社等信息,简单查询中还包含了图书的作者已经出版社,查询图书的基本信息,方法一致,不同的只是方法中SQL语句。7。5学生端图书挂失功能图书挂失本身就是一件麻烦的事情,借阅者不但需要上网及时挂失,还要配合管理员借阅图书遗失的事宜,期间不能从事图书馆的其他一切事宜,因此挂失的这项功能不能够随便的进行使用,随随便便的使用挂失只能该来不必要的麻烦,因此本软件的挂失界面还有密码用户名的再次确认功能。图7.25挂失界面7。5.1挂失界面及其功能的开发图7。26进入挂失界面按钮监听图7.27进入挂失界面按钮监听挂失界面中有两个按钮LoseButtonOk和LoseButtonRe分别是重置和提交按钮,点击重置用户名和密码全部的清空,点击提交按钮,先检查用户输入的用户名和密码和数据库中具有相同用户名的密码是否相同,如果密码一致,通过数据库查询语句DBUtil.getSomeInfo(SnameID)得到输入的用户借阅的图书信息,并跳转到用户的结束界面,否者提示用户名密码错误。在点击挂失按钮后,进入到挂失的界面,这个界面为GirdView滚动的界面,里面记录这用户的所有借阅信息,单击GirdView中任何一个条目就会根据其中的书号通过数据库的查询,通过DBUtil。getBNSomeInfo(booknum)得到借阅者的借阅信息,同时跳转进入最后的挂失确认界面中,单击确认挂失,修改数据库中的记录,挂失成功.7.5.2数据库操作方法的实现图7.28查询数据库中数据示例代码因为是在进行身份的确认,所以这里用到了根据用户名进行查询密码的方法.图7。29根据身份查询SQL语句手机通过书号得到图书借阅基本信息的SQL查询语句。图7.30查询借阅基本信息SQL语句是通过图书号得到图书的基本信息的SQL语句.7。6学生端图书预约功能模块借阅图书的时候可能遇到这样的情况,就是自己要借阅的图书被其他的人借走了,希望在归还的时候自己能够第一时间借阅到这本书,这就是预约图书的功能了。图7.31预约图书界面7.6.1图书预约界面及其功能的开发在主页中点击预约图书的按钮,进入到图书预约的主界面中,预约分为两个方面,预约图书和个人已经预约管理,预约图书时查询图书没有被借阅,界面会提示图书没有被借阅,提示读者进行借阅,相反图书已经被借阅了界面会提示图书已经被借阅了,读者可以进行预约,点击预约按钮,预约完成,个人预约图书查询管理功能,在这里面可以查询已经预约到的图书的基本信息。图7。32进入预约界面按钮监听这部分是初始化界面中的控件,并且重写后退按钮的监听事件。图7。33预约界面按钮监听图7。34管理预约按钮监听事件这部分是点击图书的按钮出发的事件,首先检测是否有书号的输入,并且提示用户相对用的信息,其次是判断该书籍是否存在,并且也存在提示信息,判断该书号是否被预约,如果被预约则提示用户不能在进行预约了,反之可以。但是已经预约图书管理按钮出发的事件,首先判断该登陆的用户是否有预约图书,并以提示信息的形式进行提示,如果存在预约的图书则跳转到已经预约的图书界面。数据库操作方法的实现在这个模块中大量的使用了查询语句,语句如下:图7.35查询数据库SQL语句通过书名表查询图书的基本信息.图7。36查询数据库SQL语句通过多表的查询得到图书的基本信息已经学生的基本信息。图7.37查询数据库SQL语句通过书号得到该书的归还的日期。7。7管理端开发7。7.1管理员登陆界面的开发管理端的登陆界面和学生端的登陆界面是一致的,但是到登陆验证方法却是不相同的,学生端是检查学生的用户名和密码,管理端是检查管理员的用户名和密码以及用户的权限,但是大体是实现方式是一样的。图7.38管理端主界面7.7.2管理员登陆验证模块管理员在登陆的时候需要验证,这一点是与学生端的不同,它查询的是管理员表中的数据,代码如下:图7。39点击登录查询数据库后进行验证是通过用户manager表中查询的密码。这里有一点是在数据库资源用完的时候,要把资源关掉,以免浪费资源。7.8管理端主界面的开发管理端主界面和学生端主界面实现方法是一样的,其实就是学生端主页功能的一个扩展,管理端主界面如下图:图7。40管理端主界面7.9图书管理模块在图书管理软件中对于图书的管理尤为重要的,图书管理模块中包括图书的入库,图书信息的查询,修改图书信息,删除图书信息等功能图7。41管理端图书管理界面7。9.1图书管理界面的开发图书管理界面主要包括管理主界面,图书查询界面,图书修改界面,图书入库界面,和确认入库界面.7。9。2其他图书管理界面的开发图书管理主界面的开发。图书管理功能有很多的界面,其基本的开发的思路和图书管理主界面大体相同,图书查询功能界面:图书查询功能的不同之处在于界面中用到了GirdView控件,这个控件的特点就是把列表中的信息显示出啦,并且可以滚动的显示。首先要建立一个list以便存放从数据库中查到的图书信息.图7。42显示界面控件示例代码首先是建立了一个ArrayList对象,把从数据库中得到的数据内容添加到ArrayList中,然后使用hashmap存放键值对,其中的值都是利用查询图书的方法从数据库中获取。建立list之后就可以进行下一步工作了,因为在girdView中显示信息的格式需要一个单独的布局文件,所以还需要建立一个新的布局文件,这个布局文件具体开发方式和普通界面的开发方式相同。完成上述的工作后,还需要为girdView编写一个适配器,目的是把数据list和布局文件链接起来。代码如下:图7.43显示界面控件示例代码首先是把前面编写的list添加到适配器中,然后把gridView所需的布局文件添加适配器中。需要把列名和list中列名相互的对应,最后把显示目标的testview的id添加进来。7。9。3图书管理界面的监听方法图7。44按钮监听事件示例代码首先是对界面中所有用到的控件进行初始化,并设置后退按钮的监听事件。图7.45按钮监听事件示例代码图7。46按钮显示示例代码这段代码是判断输入的ISBN号码是否为空,如果为空就弹出提示,否则进行ISBN号的格式进行简单的判断,如果不符合要求就弹出提示,提示用户。7.9.4图书入库和图书删除方法的实现管理员可以通过单击查询图书入库按钮,进入图书入库界面,在填写了图书的有关数据后,单击确定按钮就可以把图书信息增加到数据库中。具体方法如下:图7.47向数据库插入图书入库信息示例代码首先是图书入库所需要的参数,分别是ISBN号,书号、书名、作者、出版社、购买时间、借阅情况、预约情况和详细信息.因为链接数据库会产生异常,所以要用try进行捕获,在图书入库是需要用时更改图书信息和图像详细信息这两个数据库图书的书号是自动获得的,每添加一本图书,书号就自动加1。获得书号的方法如下:图7.48获取ISBN号示例代码在数据库中书号的存放方式是varchar型的,但是计算书号需要使用int类型的,所以在获得当前记录条数的时候加上数据转换在图书入库界面中单击购买日期的时候就会弹出对话框,在对话框中可以通过上下按键选择时间,说先是建立一个MyDialog类继承系统的Dialog类,然后进行实现。之后可以在RootActivity中实现建立、准备、销毁等方法来实现对话框。(1)首先是建立的方法,代码如下:图7.49弹出对话框示例代码这个方法主要是为了创建一个日期输入对话框,主要是对对话框的id、对话框的返回值等信息。因为这里指用到事件日期的对话框,所以在Switch中支队这一种id进行判断。(2)重写对话框的方法代码如下:图7.50重写对话框示例代码这段代码是对对话框中各部件的初始化,其中按钮1和按钮2是年份,按钮3和按钮4是月份,按钮5和按钮6是日,每个图片按钮都需要设置增加时间或减少时间。图7.51各个控件初始化示例代码这段代码是单击确定按钮后根据不同的情况进行判断时间是否符合格式.图7.52点击按钮后判断时间格式是否符合最后是取消按钮的监听方法,和上下按钮的监听方法。(3)完成对话框还应该编写一个销毁对话框的方法,以备在关闭对话框的时候进行调用该方法,具体实现方法如下:图7。53对话框示例代码(4)完成上述的对话框的所有准备工作,接下来将实现具体的获取时间的方法,代码如下:图7.55获取时间的示例代码这个方法主要是把系统的时间组装成字符创建并返回结果。图7.54获取正确时间的示例代码这个方法的主要目的就是从系统中获取当前的时间,并且对这个时间进行判断,如果不符合规则,则在Activity中提示错误,如果符合就返回时间。接下来是删除图书功能模块,代码如下:图7.56从数据库中删除图书的示例代码首先是把书号作为入口参数,然后删除图书信息,同时要删除2张表中的图书信息.7。9.5图书查询和修改图书信息方法的实现管理员不仅可以添加和删除图书信息,还可以根据已知的图书ISBN号查询到图书,

温馨提示

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

评论

0/150

提交评论