畢業(yè)設(shè)計論文基于Android平臺的圖書管理系統(tǒng)手機(jī)客戶_第1頁
畢業(yè)設(shè)計論文基于Android平臺的圖書管理系統(tǒng)手機(jī)客戶_第2頁
畢業(yè)設(shè)計論文基于Android平臺的圖書管理系統(tǒng)手機(jī)客戶_第3頁
畢業(yè)設(shè)計論文基于Android平臺的圖書管理系統(tǒng)手機(jī)客戶_第4頁
畢業(yè)設(shè)計論文基于Android平臺的圖書管理系統(tǒng)手機(jī)客戶_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

頁第1章前言1.1課題研究的目的及意義移動互聯(lián)網(wǎng)時代的來臨,說明一個嶄新的時代開始了。所謂移動互聯(lián)網(wǎng)是將移動通信和互聯(lián)網(wǎng)整合在一起,移動設(shè)備(包括手機(jī)和上網(wǎng)本)可以隨時隨地地訪問互聯(lián)網(wǎng)資源和應(yīng)用。智能手機(jī)是移動互聯(lián)網(wǎng)時代一個標(biāo)志性的客戶端工具,它和傳統(tǒng)的手機(jī)是有區(qū)別的,它就像一臺“小電腦”,具有獨(dú)立的操作系統(tǒng),可以自由安裝、卸載軟件,具有強(qiáng)大的計算和存儲能力,可以通過移動通信網(wǎng)絡(luò)來實(shí)現(xiàn)無線網(wǎng)絡(luò)接入。對于移動終端設(shè)備飛速發(fā)展的今天,傳統(tǒng)WEB上的應(yīng)用出現(xiàn)在手機(jī)終端是一個大的趨勢。而基于Android開發(fā)的圖書館管理系統(tǒng)手機(jī)客戶端,正是對這一趨勢的良好體現(xiàn),Android平臺下的圖書館管理系統(tǒng)的開發(fā),能很好的為用戶提供方便,用戶能通過它能隨時隨地的了解系統(tǒng)的實(shí)時信息,做到信息的實(shí)時化。通過Android平臺下的圖書館管理系統(tǒng)客戶端的開發(fā),與傳統(tǒng)WEB應(yīng)用進(jìn)行良好的互補(bǔ)。同時,對于校內(nèi)的圖書館管理系統(tǒng)來說,手機(jī)對于學(xué)生是必不可少的一個物品,手機(jī)客戶端這種形式的圖書館管理系統(tǒng),能更加貼近學(xué)生的生活習(xí)慣,并且適合學(xué)生年齡段的習(xí)性,這對學(xué)生更多的接觸到圖書館的信息有一定得促進(jìn)作用。1.2課題的現(xiàn)狀目前國內(nèi)的基于Android平臺的圖書館管理系統(tǒng)客戶端還不成熟,大多數(shù)的圖書館管理系統(tǒng)都出現(xiàn)在傳統(tǒng)的WEB應(yīng)用上,在這個環(huán)境下,基于Android平臺的圖書館管理系統(tǒng)客戶端屬于一個嶄新的應(yīng)用。作為一個不太成熟的應(yīng)用,大多數(shù)圖書館管理系統(tǒng)都是出現(xiàn)在學(xué)習(xí)android開發(fā)的一個項(xiàng)目中,作為學(xué)習(xí)中的一個練習(xí)項(xiàng)目。目前,絕大部分的網(wǎng)絡(luò)應(yīng)用都還是傳統(tǒng)的WEB應(yīng)用,但面對Android手機(jī)如此迅速發(fā)展的今天,傳統(tǒng)WEB的應(yīng)用不能滿足人們隨時隨地體驗(yàn)網(wǎng)絡(luò)應(yīng)用的想法,所以,出現(xiàn)在手機(jī)終端的應(yīng)用將會越來越多,同時其發(fā)展的速度也會越來越快。校內(nèi)圖書館管理系統(tǒng)作為傳統(tǒng)WEB應(yīng)用,也必將在手機(jī)客戶端上得到應(yīng)用。1.3課題的內(nèi)容由此出現(xiàn)大量的應(yīng)用出現(xiàn)在手機(jī)上,基于Android平臺的圖書館管理系統(tǒng)手機(jī)客戶端是依據(jù)現(xiàn)在的形式所開發(fā)的,它是一套基于開放性的圖書館管理系統(tǒng),它有傳統(tǒng)WEB上圖書館管理系統(tǒng)的大部分功能。整個系統(tǒng)分為前臺界面管理和后臺服務(wù)器管理兩部分,劃分為用戶管理、圖書管理、信息管理等三個部分。在前臺管理中,用戶進(jìn)行注冊、登錄、查詢特定圖書等功能;后臺管理模塊,負(fù)責(zé)控制前臺界面管理的所有功能;本系統(tǒng)設(shè)置了學(xué)生用戶和管理員兩類,兩類用戶都是使用同一個平臺,只是權(quán)限不同。學(xué)生用戶只能注冊、查詢圖書等功能;管理員擁有最高權(quán)限,可以對已經(jīng)畢業(yè)的學(xué)生用戶賬號進(jìn)行刪除,查詢學(xué)生用戶信息,實(shí)時更新圖書館的新書,發(fā)布圖書館最新信息等權(quán)限。本圖書館管理系統(tǒng),能夠適用于各類圖書館,具有良好的可操作性,可以隨時的查詢你所需要的圖書信息,只要你的智能手機(jī)安裝了本系統(tǒng)客戶端,系統(tǒng)大大的方便了學(xué)生的圖書查詢的。本系統(tǒng)采用C/S結(jié)構(gòu),后臺服務(wù)器使用Servlet編寫服務(wù)器,同時用Tomcat發(fā)布服務(wù),前臺客戶端環(huán)境使用的是ANDROID控件。通過JDBC來調(diào)用Oracle數(shù)據(jù)庫,來實(shí)現(xiàn)手機(jī)客戶端與服務(wù)器之間數(shù)據(jù)傳輸。第2章軟件設(shè)計及開發(fā)工具介紹為了使軟件開發(fā)能夠順利進(jìn)行,使開發(fā)人員對系統(tǒng)各個模塊的性能、系統(tǒng)接口、系統(tǒng)開發(fā)及運(yùn)行環(huán)境和計算機(jī)內(nèi)部處理的邏輯及物理流程有更清晰的認(rèn)識,更利于源程序的開發(fā),現(xiàn)對系統(tǒng)的總體設(shè)計和系統(tǒng)結(jié)構(gòu)設(shè)計及開發(fā)工具和關(guān)鍵技術(shù)做詳細(xì)說明。2.1總體設(shè)計基于ANDROID平臺開發(fā)的圖書館管理系統(tǒng)客戶端從設(shè)計者的角度來看,用戶角色分為學(xué)生用戶和管理員兩類;功能包括注冊、登錄、密碼找回、書籍查詢、圖書實(shí)時更新、普通用戶管理共六大部分。其中系統(tǒng)管理中的學(xué)生用戶權(quán)限包括注冊、登錄、密碼找回、書籍查詢等四個模塊;管理員的權(quán)限則是除了學(xué)生用戶具有的權(quán)限外還有實(shí)時更新圖書信息、學(xué)生用戶管理等模塊。從使用者的角度來看分為前臺和后臺管理兩大部分。后臺管理模塊是本系統(tǒng)的關(guān)鍵部分之一,它是系統(tǒng)維護(hù)和信息管理平臺。根據(jù)現(xiàn)實(shí)需要,本系統(tǒng)后臺管理用戶有兩類:管理員和學(xué)生用戶。這兩類用戶使用的系統(tǒng)管理平臺都是同一個平臺上,只不過他們執(zhí)行的權(quán)限不同。2.2系統(tǒng)結(jié)構(gòu)本系統(tǒng)總體邏輯結(jié)構(gòu)為C/S結(jié)構(gòu),結(jié)構(gòu)圖如圖2-1所示:圖2.1C/S結(jié)構(gòu)圖2.3開發(fā)工具介紹和關(guān)鍵技術(shù)2.3.1Eclipse的介紹Eclipse是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JavaDevelopmentKit,JDK)。Eclipse的發(fā)展史,版本代號平臺版本主要版本發(fā)行日期SR1發(fā)行日期SR2發(fā)行日期,如下:表2-1Eclipse的版本號版本代號平臺版本主要版本發(fā)行日期SR1發(fā)行日期SR2發(fā)行日期Callisto3.22006年6月26日N/AN/AEuropa3.32007年6月27日2007年9月28日2008年2月29日Ganymede3.42008年6月25日2006年9月24日2009年2月25日Galileo3.52009年6月24日2006年9月25日2010年2月26日Helios3.62006年6月23日2006年9月24日2011年2月25日Indigo3.72006年6月22日2006年9月23日2012年2月24日J(rèn)uno(預(yù)定)3.8及4.22006年6月27日2006年9月28日2013年2月22日Kepler4.32006年6月26日2006年9月27日2014年2月28日Eclipse是一個開放源代碼的軟件開發(fā)項(xiàng)目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個項(xiàng)目組成,具體包括四個部分組成——EclipsePlatform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),EclipsePlatform則是一個開放的可擴(kuò)展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。EclipsePlatform允許工具建造者獨(dú)立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結(jié)束,而另一個工具功能在哪里開始。Android工程是在Eclipse工具上編寫的,進(jìn)行android工程的編寫,首先需要在Eclipse上安裝ADT插件,然后指定SDK所在的路徑,便可以創(chuàng)建android虛擬機(jī)了。在Eclipse下創(chuàng)建虛擬機(jī)的步驟如下:安裝ADT插件在Eclipse單擊菜單欄的Help,在Help里面選中InstallNewSoftware選項(xiàng),之后便可以出現(xiàn)如下界面:圖2.2ADT安裝步驟界面指定好你的ADT路徑后,便可以安裝好ADT插件。導(dǎo)入AndroidSDK安裝好ADT插件后,單擊Eclipse菜單欄Windows下找到preperence,點(diǎn)擊進(jìn)入,得到如下界面:圖2.3AndroidSDK安裝界面在左邊選項(xiàng)選中Android,在SDKLocation下導(dǎo)入AndroidSDK路徑,點(diǎn)擊Apply應(yīng)用,便會導(dǎo)入Android的各個版本。創(chuàng)建虛擬機(jī)安裝好ADT和導(dǎo)入AndroidSDK成功后,便可以在菜單欄Windows下找到AVDmanage選項(xiàng),單擊進(jìn)入后便有新建android虛擬機(jī)界面,在創(chuàng)建界面設(shè)置好虛擬機(jī)參數(shù)點(diǎn)擊確定后,就創(chuàng)建好了一個android虛擬機(jī)。創(chuàng)建好虛擬機(jī)后,點(diǎn)擊開始便可以運(yùn)行一個android虛擬機(jī),虛擬機(jī)運(yùn)行成功界面如下:圖2.4android虛擬機(jī)視圖虛擬機(jī)模擬的是android智能手機(jī)的界面,通過操作虛擬機(jī)可以體驗(yàn)到android智能手機(jī)的部分應(yīng)用。同時虛擬機(jī)是作為開發(fā)的android應(yīng)用運(yùn)行的場所,他提供基本的人機(jī)交互功能。2.3.2MyEclipse與Tomcat介紹MyEclipse是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合。MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,支持HTML,Struts,JSP,Javascript,Hibernate,MyEclipse,CSS,Spring,SQL的功能非常強(qiáng)大,支持也十分廣泛,尤其是對各種開源產(chǎn)品的支持十分不錯。

在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類:

1.JavaEE模型

2.WEB開發(fā)工具

3.EJB開發(fā)工具

4.應(yīng)用程序服務(wù)器的連接器

5.JavaEE項(xiàng)目部署服務(wù)

6.?dāng)?shù)據(jù)庫服務(wù)

7.MyEclipse整合幫助

對于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的JavaEE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯,MyEclipse6.0以前版本需先安裝Eclipse。MyEclipse6.0以后版本安裝時不需安裝Eclipse。本系統(tǒng)是基于C/S架構(gòu)的,所以需要在MyEclipse上創(chuàng)建服務(wù)器端,利用JavaEE中的servlet來提供服務(wù),并將其部署在Tomcat下。需要解決的是創(chuàng)建不同的servlet來提供不同的服務(wù)。Tomcat是Apache軟件基金會(ApacheSoftwareFoundation)的Jakarta項(xiàng)目中的一個核心項(xiàng)目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn),Tomcat5支持最新的Servlet2.4和JSP2.0規(guī)范。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。目前最新版本是7.0。Tomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。Tomcat是一個輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。對于一個初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺機(jī)器上配置好Apache服務(wù)器,可利用它響應(yīng)對HTML頁面的訪問請求。實(shí)際上Tomcat部分是Apache服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你ApacheTomcat運(yùn)行tomcat時,它實(shí)際上作為一個與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。而Tomcat實(shí)際上運(yùn)行JSP頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。目前Tomcat最新版本為7.0.27Released。2.3.3關(guān)鍵技術(shù)介紹本軟件采用java作為開發(fā)語言,布局和數(shù)據(jù)存儲是開發(fā)本軟件的關(guān)鍵技術(shù),布局用來設(shè)計用戶交互界面,用戶界面的設(shè)計是否美觀和合理直接影響用戶體驗(yàn),因此運(yùn)用好布局技術(shù)是直接和用戶相關(guān)的,而數(shù)據(jù)存儲技術(shù)則記錄了用戶所有的操作數(shù)據(jù)和用戶所需要提取的數(shù)據(jù)。在android中,軟件UI通常使用xml技術(shù)設(shè)計,而xml中控件的位置和狀態(tài)則離不開布局的使用,android中常用的布局有5種,分別是:AbsoluteLayout、LinearLayout、RelativeLayout、FrameLayout、TableLayout,由于布局的使用,并且布局之間可以互相嵌套,使得android軟件UI的設(shè)計變得非常靈活,即使是一些非常復(fù)雜的界面設(shè)計,只要合理的使用布局,也會使開發(fā)變得很容易。Android中數(shù)據(jù)存儲技術(shù)主要有:文件存儲、preference、sqlite、ContentProvider和網(wǎng)絡(luò)存儲,文件存儲是以流的形式讀寫文件,可以以文格的格式,也可以以二進(jìn)制的形式,在java語言中要使用流,則寫入文件的對象必須進(jìn)行序列化,sqlite是嵌入式移動設(shè)備中常用的輕量級數(shù)據(jù)庫,可看作計算機(jī)上使用的sqlserver、oracle數(shù)據(jù)庫。本系統(tǒng)中,采用的是Oracle數(shù)據(jù)庫進(jìn)行儲存圖書館里的基本信息。第3章系統(tǒng)功能設(shè)計本系統(tǒng)采用C/S模式開發(fā)的,該系統(tǒng)的客戶端和服務(wù)器端是獨(dú)立分開的,這樣的分開也就形成了前臺管理和后臺管理。前臺管理注重用戶的交互是否簡便,后臺管理注重功能的邏輯和與數(shù)據(jù)庫數(shù)據(jù)交互的功能。3.1前臺管理前臺客戶端的所有功能畫出的功能流程圖如下:圖3.1前臺客戶端流程圖3.1.1注冊用戶通過手機(jī)客戶端主界面上的注冊按鈕注冊新的學(xué)生用戶,注冊用戶的信息通過服務(wù)器端和數(shù)據(jù)庫連接,數(shù)據(jù)庫中的用戶表則會生成你注冊的信息,同時在手機(jī)客戶端提示注冊成功。3.1.2用戶登錄用戶登錄分為兩類用戶:管理員和學(xué)生用戶。可以通過登錄界面中選定身份登錄,服務(wù)器根據(jù)登錄選定的信息選擇數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行匹配,用戶名和密碼正確則登錄成功。3.1.3圖書查詢在查詢界面輸入所需查詢書籍的書名和作者名,通過服務(wù)器端查詢數(shù)據(jù)庫返回你所查詢的書籍信息,書籍信息包括:書名、作者、出版社名、是否被接、剩余本數(shù)等信息。在圖書查詢功能中,運(yùn)用到了ANDROID的一個自動完成文本的控件,該控件可以通過你輸入的查詢信息列出帶有你輸入字的書名,以方便你的檢索。通過此控件,大大的提高了用戶檢索書籍的效率,同時滿足了模糊查詢的功能,是用戶查詢書籍方便、快捷。3.1.4用戶管理用戶管理模塊是管理員對學(xué)生用戶賬號的管理,對于某些特殊原因賬號不使用了,比如:學(xué)生畢業(yè)等原因不再使用賬號的問題,管理員有權(quán)利對這類賬號進(jìn)行刪除,同時可以學(xué)生用戶的用戶名查詢學(xué)生用戶的信息。3.1.5圖書管理這個功能也只有管理員身份才能擁有,管理員通過此功能,可以對圖書進(jìn)行增加、刪出功能。通過這個模塊,管理員可以對新進(jìn)的圖書進(jìn)行添加處理,并能實(shí)時發(fā)布新增書籍。對于刪除功能,管理員可以把一些已經(jīng)下架,不再外借的書籍進(jìn)行刪除,以便造成不必要的麻煩。3.2后臺管理后臺服務(wù)器端的任務(wù)是根據(jù)客戶端送發(fā)送過來的請求,根據(jù)客戶端不同功能模塊,通過檢索數(shù)據(jù)庫不同表格,把檢索結(jié)果返回給客戶端顯示給以用戶,其基本流程圖如下:圖3.2后臺服務(wù)器端流程圖3.2.1注冊管理注冊用戶提交:向服務(wù)器提交用戶注冊的信息,同時更新到數(shù)據(jù)庫。注冊管理是后臺的一個重要內(nèi)容,注冊只提供學(xué)生用戶的注冊,這樣可以保證圖書館用戶權(quán)限的穩(wěn)定和安全。通過注冊用戶,用戶才能享受來自手機(jī)客戶端的所有功能。通過手機(jī)客戶端注冊用戶,來作為以后通過手機(jī)客戶端登錄圖書館管理系統(tǒng)的唯一身份認(rèn)證。3.2.2登錄管理登錄管理:根據(jù)你登錄的信息向服務(wù)器發(fā)送請求,然后和數(shù)據(jù)庫信息進(jìn)行對比,來確認(rèn)用戶登錄的成功與否。登錄時候,首先你必須選定你的登錄身份,是以學(xué)生用戶還是管理員身份登錄,根據(jù)你選擇的不同身份,服務(wù)器向不同的數(shù)據(jù)庫表來核對信息,以通過對用戶信息的核對,以確定所登錄的賬號密碼是否正確。3.2.3圖書查詢管理圖書查詢管理主要通過圖書的幾個關(guān)鍵信息進(jìn)行查詢,根據(jù)圖書名字和圖書作者向數(shù)據(jù)庫提交信息進(jìn)行條件檢索。通過輸入信息的檢索,返回檢索書籍的基本信息,比如:圖書名字、圖書作者、出版社名、是否被借、剩余數(shù)量等基本信息。3.2.4用戶管理 后臺的用戶管理,是處理管理員對有特殊情況的學(xué)生用戶和查詢特定學(xué)生用戶的服務(wù),是與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)更新與交互的服務(wù)。3.2.5圖書管理后臺的圖書管理,是處理管理員把新書添加到書籍?dāng)?shù)據(jù)庫表的服務(wù),通過添加到數(shù)據(jù)庫表,學(xué)生用戶才能在書籍查詢功能中查詢到新更新的書籍信息。同時,對于不再外借的書籍從數(shù)據(jù)庫刪除,以此來更新數(shù)據(jù)庫中的書籍名稱。第4章數(shù)據(jù)庫結(jié)構(gòu)設(shè)計4.1服務(wù)器端數(shù)據(jù)庫設(shè)計采用的是Oracle數(shù)據(jù)庫。在本系統(tǒng)中采用了簡易版的Oracle,即數(shù)據(jù)庫的名字為OracleXE,首先要解決的是在該數(shù)據(jù)庫里某個用戶下創(chuàng)建表。首先配置Oracle數(shù)據(jù)庫,步驟如下:(1)以O(shè)racle管理員身份進(jìn)入Oracle,在終端輸入的命令為:sqlplus"/assysdba";(2)啟動Oracle,在終端輸入的命令為:startup;(3)創(chuàng)建新的用戶,在終端的命令為:先以管理員身份登錄數(shù)據(jù)庫,然后創(chuàng)建新的用戶的命令為:createuserliuyujuanidentifiedbyliuyujuan;grantresource,connecttoliuyujuan;所創(chuàng)建的用戶賬號和密碼分別為:liuyujuan,liuyujuan;(4)然后以liuyujuan用戶登錄,命令為:sqlplusliuyujuan/liuyujuan。在賬戶liuyujuan下創(chuàng)建數(shù)據(jù)表,以滿足圖書館管理的日常需要,表格名稱分別為:lib_admin,lib_user,lib_books,lib_ret,各個數(shù)據(jù)表的儲存的信息分別為:管理員信息、普通用戶信息、書籍信息、書籍外借信息表。4.1.1數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計在需求分析階段已完成該系統(tǒng)所有的數(shù)據(jù)分析。根據(jù)該階段所建立的概念模型,已經(jīng)得出滿足系統(tǒng)設(shè)計要求的幾個關(guān)系描述,該階段的主要工作就是把前一階段的成果轉(zhuǎn)化為具體的數(shù)據(jù)庫。管理員用戶有用戶名和密碼兩個屬性,通過這兩個屬性來確定管理員用戶的身份是否合法,其中ID為主鍵,其E-R圖如下:圖4.1管理員E-R圖學(xué)生用戶有用戶名、密碼身份證號、入學(xué)年份、性別、所在學(xué)院名稱等屬性,通過這些屬性,來確認(rèn)學(xué)生信息表的信息,其中主鍵為ID,其E-R圖如下:圖4.2學(xué)生用戶E-R圖書籍信息表,是用來存儲書籍的基本信息,其數(shù)星星包括書名、作者名、書籍位置、出版社名稱、所屬科目、是否借出、最大借閱時間等,其中自動分配的ID和書名作為聯(lián)合主鍵,其E-R圖如下:圖4.3書籍信息E-R圖外借書籍信息表是用來存儲外借書籍的有關(guān)信息,通過此表格,來獲取該外借書籍的基本狀態(tài),其屬性有書籍編號、書籍名、書籍作者、最大外借時間、實(shí)際外借時間、外借時間、借閱者ID,其E-R圖如下:圖4.4書籍外借信息E-R圖對于各個實(shí)體之間的關(guān)系E-R圖如下:圖4.5實(shí)體關(guān)系圖4.1.2數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計依據(jù)數(shù)據(jù)庫的原理,并結(jié)合以上E-R圖,經(jīng)過轉(zhuǎn)化,即可進(jìn)行數(shù)據(jù)庫的物理設(shè)計?;谝陨蠑?shù)據(jù)庫的邏輯設(shè)計,考慮程序設(shè)計的簡易性,同時考慮題目的時間,該系統(tǒng)的數(shù)據(jù)庫采用Oracle簡易版本建立一個數(shù)據(jù)庫,在其下創(chuàng)建4個數(shù)據(jù)表,其結(jié)構(gòu)分別如下各表:表4-1數(shù)據(jù)表清單表名說明管理員用戶表用于存儲管理員信息表格普通用戶表用于存儲普通用戶信息表格書籍信息表用于存儲書籍基本信息表格書籍外借信息表用于儲存外借書籍的基本信息表4-2管理員用戶信息表字段名數(shù)據(jù)類型長度主鍵備注ID自動編號10是由數(shù)據(jù)庫sequence自動生成AdminnameVarchar250否管理員的登錄賬號PasswordVarchar250否管理員登錄的密碼表4-3普通用戶信息表字段名數(shù)據(jù)類型長度主鍵備注ID自動編號10是由數(shù)據(jù)庫sequence自動生成UsernameVarchar250否唯一標(biāo)識用戶,不可缺PasswordVarchar250否普通用戶用戶登錄密碼IndentityidVarchar2100否用戶注冊的身份證號YearVarchar250否用戶入學(xué)年份GenderVarchar230否用戶性別CollegeVarchar250否用戶所在學(xué)院表4-4書籍信息表字段名數(shù)據(jù)類型長度主鍵備注ID自動編號10聯(lián)合主鍵由數(shù)據(jù)庫sequence自動生成BooknameVarchar250聯(lián)合主鍵書籍名稱BookauthorVarchar250否書籍作者名PhnameVarchar250否出版社名稱LocationVarchar260否所在位置CategoryVarchar280否所屬科目StatusVarchar220否書籍狀態(tài)RenttimeVarchar220否最大借閱時間表4-5外借書籍信息表字段名數(shù)據(jù)類型長度主鍵備注IDVarchar210是由數(shù)據(jù)庫自動生成Book_dateVarchar250否外借時間Act_ret_dateVarchar250否實(shí)際的外借時間Exp_ret_dateVarchar250否最大的外借時間Book_idVarchar210否書籍編號BooknameVarchar250否書籍名字AuthornameVarchar250否書籍作者名User_idVarchar210否借閱者id第5章模塊開發(fā)及編碼實(shí)現(xiàn)5.1服務(wù)器端的設(shè)計搭建javaweb服務(wù)器本軟件是C/S結(jié)構(gòu)的系統(tǒng),因此要先搭建服務(wù)器端,利用JavaEE中的servlet來提供服務(wù),并將其部署在Tomcat下。需要解決的是創(chuàng)建不同的servlet來提供不同的服務(wù)。Web服務(wù)的名稱:LibraryService在MyEclipse中新建一個webproject,取名為LibraryService,其結(jié)構(gòu)如下圖:圖5.1服務(wù)器端代碼結(jié)構(gòu)5.2連接數(shù)據(jù)庫模塊com.briup.jdbc是CVM模式中的低層,數(shù)據(jù)庫層,包中的類是用來連接數(shù)據(jù)庫和操作數(shù)據(jù)庫的,其中JDBCConnectionFactory.java用來連接數(shù)據(jù)庫的,連接數(shù)據(jù)庫的三個變量為:privatestaticStringurl;privatestaticStringuserName;privatestaticStringuserPwd;連接數(shù)據(jù)庫需要url,username,userPassword這三個值,而這三個值放入到j(luò)dbcinfo中,通過Properties來獲取,部分代碼如下:Propertiespro=newProperties();pro.load(newFileInputStream("E:\Myeclipse6.5workspace\LibraryService\src\com\briup\jdbc\jdbcinfo"));url=pro.getProperty(“url”); userName=pro.getProperty(“userName”); userPwd=pro.getProperty(“userPwd”);neworacle.jdbc.driver.OracleDriver();Connectionconn=DriverManager.getConnection(url,userName,userPwd);5.3服務(wù)器功能模塊com.briup.dao是CVM模式中的Dao層,為service提供服務(wù),封裝對數(shù)據(jù)庫的操作的方法。com.briup.servlet包中就各個不同的Servlet類,其具體情況如下:5.3.1注冊模塊提供用戶注冊servlet為RegisterServlet,重寫其doPost()和doGet()方法,該servlet是用來處理學(xué)生用戶注冊請求。注冊的參數(shù)有username、password、indentityid、year、gender、college,其url為::8088/LibraryService/servlet/registerservlet部分代碼如下:PrintWriterout=response.getWriter(); Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); Stringindentityid=request.getParameter("indentityid"); Stringyear=request.getParameter("year"); Stringgender=request.getParameter("gender"); Stringcollege=request.getParameter("college"); LibraryDaodao=newLibraryDaoImpl(); try{Useruser1=(User)dao.findByUsername(username); if(user1!=null) {xml=MakeXML.makeXml("該用戶名已存在了",false); }else{ Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setIndentityid(indentityid); user.setYear(year); user.setGender(gender); user.setCollege(college); dao.save(user); xml=MakeXML.makeXml("恭喜您注冊成功了",true); }5.3.2登錄模塊提供用戶登錄的servlet為LoginServlet,重寫其doPost()和doGet()方法,該servlet是用來處理學(xué)生用戶和管理員登錄的請求。登錄的參數(shù)有username、password,其url為::8088/LibraryService/servlet/loginservlet部分代碼如下:PrintWriterout=response.getWriter(); System.out.println("welcomeclientlogin"); Stringxml=null; //獲得帳號 Stringflag=request.getParameter("flag").trim(); Stringusername= request.getParameter("username").trim();Stringpassword=(String)request.getParameter("password").trim(); LibraryDaodao=newLibraryDaoImpl(); if(flag.equals("normal")){ if(username!=null) { try{com.briup.pojo.Useruser=dao.findByUsername(username); if(user!=null) { if(user.getPassword().equalsIgnoreCase(password)) { xml=MakeXML.makeXml("恭喜您登錄成功了",true); }else{ xml=MakeXML.makeXml("密碼不對",false); } }else{ xml=MakeXML.makeXml("用戶名不正確",false); } }catch(Exceptione){ //TODOAuto-generatedcatchblock System.out.println("網(wǎng)絡(luò)異常"); out.println("<fontcolor='red'size='5'>"); out.println("網(wǎng)絡(luò)異常</font>"); } } }elseif(flag.equals("admin")){ try{ Adminadmin=dao.findByAdminname(username); if(admin!=null) { if(admin.getPassword().equals(password)) { xml=MakeXML.makeXml("恭喜您登錄成功了",true); }else{ xml=MakeXML.makeXml("密碼不對",false); } } else{ xml=MakeXML.makeXml("用戶名不存在",false); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }5.3.3書籍查詢模塊提供特定書籍查詢servlet為findBookServlet,重寫其doPost()和doGet()方法,該servlet是用來處理學(xué)生用戶查詢特定書籍的請求。查詢書籍參數(shù)有bookname、bookauthor,其url為::8088/LibraryService/servlet/findbooksservlet部分代碼如下:Stringbookname=request.getParameter("bookname").trim(); Stringauthorname=request.getParameter("authorname").trim(); Stringstatus=request.getParameter("status").trim(); //status為yes表示被借出了為no表示沒被借出沒 System.out.println("helloiaminfindBooksServlet"); Stringxml=null; Listlist=null; LibraryDaodao=newLibraryDaoImpl(); if(status.equals("")) { try{ list=dao.findBookByName(bookname,authorname); if(list!=null) { xml=MakeXML.makeXml(list,list.size()+""); } else{ xml=MakeXML.makeXml(list,"抱歉圖書館沒有該書了"); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }else{ try{list=dao.findBookByName(bookname,authorname,status); if(list!=null) { xml=MakeXML.makeXml(list,list.size()+""); } else{ xml=MakeXML.makeXml(list,"抱歉圖書館沒有該書了"); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } 5.3.4特定用戶查詢模塊提供特定用戶查詢servlet為findUserServlet,重寫其doPost()和doGet()方法,該servlet是用來處理管理員用戶查詢特定學(xué)生用戶信息的請求。管理員查詢特定學(xué)生用戶參數(shù)有username,其url為::8088/LibraryService/servlet/finduserservlet部分代碼如下:PrintWriterout=response.getWriter();Stringusername= request.getParameter("username").trim(); Stringxml=null; LibraryDaodao=newLibraryDaoImpl(); try{ com.briup.pojo.Useruser=dao.findByUsername(username); if(user!=null) { try{ xml=MakeXML.makeXml(user,""); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }else{ try{ xml=MakeXML.makeXml("密碼不對",false); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }catch(DataAccessExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }5.3.5查詢所有用戶模塊提供所有用戶查詢servlet為findAllUserServlet,重寫其doPost()和doGet()方法,該servlet是用來處理管理員用戶查詢所有學(xué)生用戶信息的請求。查詢所有學(xué)生用戶信息不需要提供任何參數(shù),只需要點(diǎn)擊查詢所有按鈕便可以查詢出所有,其url為::8088/LibraryService/servlet/findalluserservlet部分代碼如下:PrintWriterout=response.getWriter();Stringxml=null; Listlist=null; LibraryDaodao=newLibraryDaoImpl(); try{ list=dao.findAlluser(); xml=MakeXML.makeXml(list,""); }catch(Exceptione){ //TODOAuto-generatedcatchblock try{ xml=MakeXML.makeXml("網(wǎng)絡(luò)異常",false); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } e.printStackTrace(); }5.3.6添加書籍模塊提供管理員添加書籍servlet為saveBookServlet,重寫其doPost()和doGet()方法,該servlet是用來處理管理員用戶對新書籍進(jìn)行添加上架的請求。對需要上架處理的書籍需要提供參數(shù)有書籍名、書籍作者、書籍所屬科目、書籍所在位置,書籍出版社名字、最大借閱時間等參數(shù),其url為::8088/LibraryService/servlet/savebookservlet部分代碼如下:PrintWriterout=response.getWriter(); Stringbookname=request.getParameter("bookname").trim(); Stringauthorname=request.getParameter("authorname").trim(); Stringphname=request.getParameter("phname").trim(); Stringlocation=request.getParameter("location").trim(); Stringcategory=request.getParameter("category").trim(); //Stringstatus=request.getParameter("status").trim(); Stringrenttime=request.getParameter("renttime").trim(); Stringnum=request.getParameter("num").trim(); Stringxml=null; intnumber=Integer.parseInt(num); if(number>0) { LibraryDaodao=newLibraryDaoImpl(); for(inti=0;i<number;i++) { Bookbook=newBook(); book.setBookname(bookname); book.setAuthorname(authorname); book.setPhname(phname); book.setLocation(location); book.setCategory(category); book.setStatus("no"); book.setRenttime(renttime); try{ dao.save(book); System.out.println("Ihavesavethisbook"); }catch(Exceptione){ //TODOAuto-generatedcatchblock try{ xml=MakeXML.makeXml("抱歉出錯了",false); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } e.printStackTrace(); } } try{ xml=MakeXML.makeXml("恭喜已保存了該圖書",true); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }5.4客戶端的設(shè)計設(shè)計ANDROIDUI界面在Eclipse安裝好了ADT插件并且導(dǎo)入了AndroidSDK后,創(chuàng)建一個androidproject,此工程是作為圖書館管理系統(tǒng)的客戶端,是為廣大用戶下載使用的,所以,該UI界面的主要要求是要操作性強(qiáng)和交互簡單??蛻舳说淖⒁馐马?xiàng)為:一個是數(shù)據(jù)庫的設(shè)計,一個是各個功能的布局。Androidproject名稱:Library工程結(jié)構(gòu)如圖所示:圖5.2客戶端系統(tǒng)結(jié)構(gòu)com.briup.utils中包含的是各種工具類和封裝的方法;com.briup中則是客戶端中實(shí)現(xiàn)各個功能的類,每一個界面的類都在此包中,詳細(xì)情況如下:LibraryActivity.java是系統(tǒng)主界面,用于選擇登錄或者注冊;RegisteActivity.java是注冊界面;LoginActivity.java是登錄界面;NuActivity.java是學(xué)生用戶查詢書籍信息界面;AdminActivity.java是管理員管理界面;ManagerBook.java是管理員管理書籍界面,包括書籍的添加、查詢、刪除;ManagerUser.java是管理學(xué)生用戶界面;FindOneUser.java是管理員查詢特定學(xué)生界面;FindAllUserActivity.java是管理員查詢所有學(xué)生界面。5.5具體功能模塊5.5.1注冊界面對于一個系統(tǒng)的開始,首先必須的是用戶的注冊界面,注冊模塊是為了登錄系統(tǒng)所進(jìn)行的獲取通行證的步驟,注冊所有的信息都將提交給數(shù)據(jù)庫進(jìn)行存儲,注冊的信息將作為用戶在本系統(tǒng)進(jìn)行一切活動的標(biāo)識。注冊功能對應(yīng)的程序名為com.briup包下的RegisterActivity.java。注冊界面如下:圖5.3注冊界面在輸入框輸入注冊信息,點(diǎn)擊確定便可以注冊成功,主要代碼如下:sp.setOnItemSelectedListener(newOnItemSelectedListener(){ @Override publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1, intindex,longid){ //TODOAuto-generatedmethodstub college=colleges[index]; } @Override publicvoidonNothingSelected(AdapterView<?>arg0){ } }); rg.setOnCheckedChangeListener(newandroid.widget.RadioGroup.OnCheckedChangeListener(){ @Override publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){ switch(checkedId){ caseR.id.rb_male: gender="male"; break; caseR.id.rb_female: gender="female"; break; } } });publicstaticStringmakeString(Stringstr1,Stringstr2,Stringstr3,Stringstr4,Stringstr5,Stringstr6,Stringservlet){ Stringstr=null; //封裝信息List<BasicNameValuePair>list=newArrayList<BasicNameValuePair>(); list.add(newBasicNameValuePair("username",str1.trim())); list.add(newBasicNameValuePair("password",str2.trim())); list.add(newBasicNameValuePair("indentityid",str3.trim())); list.add(newBasicNameValuePair("year",str4.trim())); list.add(newBasicNameValuePair("gender",str5.trim())); list.add(newBasicNameValuePair("college",str6.trim())); Stringurl=comurl+servlet.trim(); CommenMethodcm=newCommenMethod(); HttpResponseresponse=cm.method(list,url); try{ if(response!=null&&response.getStatusLine().getStatusCode()==200) { //用DOM解析response(數(shù)據(jù)小)DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); //通過工廠獲得解析器 DocumentBuilderparser=factory.newDocumentBuilder();Documentdocument=parser.parse(response.getEntity().getContent()); //得到節(jié)點(diǎn) NodeListmessages=document.getElementsByTagName("message"); NodeListerrors=document.getElementsByTagName("error"); if(errors!=null&&errors.getLength()>0) { str=errors.item(0).getFirstChild().getNodeValue(); } if(messages!=null&&messages.getLength()>0) { str=messages.item(0).getFirstChild().getNodeValue(); } } }catch(Exceptione){ //TODO:handleexception e.printStackTrace(); } returnstr;5.5.2登錄界面登錄界面作為系統(tǒng)的門面,登錄界面完成的功能是驗(yàn)證所登錄用戶的賬號是否正確,以驗(yàn)證是否有進(jìn)入系統(tǒng)的權(quán)限。登錄功能對應(yīng)的程序名為com.briup包下的LoginActivity.java。登錄界面如下:圖5.4登錄界面登錄界面主要為驗(yàn)證賬號和密碼的功能,登錄界面分為學(xué)生用戶登錄和管理員登錄,其主要代碼如下:if(flag.equals("admin")) { //封裝信息List<BasicNameValuePair>list=newArrayList<BasicNameValuePair>(); list.add(newBasicNameValuePair("username",username)); list.add(newBasicNameValuePair("password",password)); list.add(newBasicNameValuePair("flag",flag)); Stringcomurl=url+"loginservlet"; CommenMethodcm=newCommenMethod(); HttpResponseresponse=cm.method(list,comurl); try{ if(response!=null&&response.getStatusLine().getStatusCode()==200) { //用DOM解析response(數(shù)據(jù)小)DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); //通過工廠獲得解析器DocumentBuilderparser=factory.newDocumentBuilder();Documentdocument=parser.parse(response.getEntity().getContent()); //得到節(jié)點(diǎn)NodeListmessages=document.getElementsByTagName("message"); NodeListerrors=document.getElementsByTagName("error"); if(errors!=null&&errors.getLength()>0) { str=errors.item(0).getFirstChild().getNodeValue(); Toast.makeText(this,str,Toast.LENGTH_LONG).show(); login_username.setText(""); login_password.setText(""); } if(messages!=null&&messages.getLength()>0) { str=messages.item(0).getFirstChild().getNodeValue(); Toast.makeText(this,str,Toast.LENGTH_LONG).show(); Intentinte=newIntent(this,AdminActivity.class); startActivity(inte); } } }catch(Exceptione){ //TODO:handleexception e.printStackTrace(); } }elseif(flag.equals("normal")) { //封裝信息List<BasicNameValuePair>list=newArrayList<BasicNameValuePair>();list.add(newBasicNameValuePair("username",username));list.add(newBasicNameValuePair("password",password));list.add(newBasicNameValuePair("flag",flag)); Stringcomurl=url+"loginservlet"; CommenMethodcm=newCommenMethod(); HttpResponseresponse=cm.method(list,comurl);try{ if(response!=null&&response.getStatusLine().getStatusCode()==200) { //用DOM解析response(數(shù)據(jù)小)DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); //通過工廠獲得解析器DocumentBuilderparser=factory.newDocumentBuilder();Documentdocument=parser.parse(response.getEntity().getContent()); //得到節(jié)點(diǎn)NodeListmessages=document.getElementsByTagName("message");NodeListerrors=document.getElementsByTagName("error"); if(errors!=null&&errors.getLength()>0) { str=errors.item(0).getFirstChild().getNodeValue(); Toast.makeText(this,str,Toast.LENGTH_LONG).show(); login_username.setText(""); login_password.setText(""); } if(messages!=null&&messages.getLength()>0) { str=messages.item(0).getFirstChild().getNodeValue(); Toast.makeText(this,str,Toast.LENGTH_LONG).show(); Intentintent=newIntent(this,NuActivity.class); intent.putExtra("username",username); startActivity(intent); } } }catch(Exceptione){ //TODO:handleexception e.printStackTrace(); } Toast.makeText(this,str,Toast.LENGTH_LONG).show(); } }else{Toast.makeText(this,"請?zhí)顚懲?,謝謝",Toast.LENGTH_LONG).show(); }5.5.3學(xué)生用戶書籍查詢界面學(xué)生用戶通過輸入所需查詢的書籍名字和書籍作者名,便可以從數(shù)據(jù)庫中查詢到所查詢的圖書。書籍查詢功能對應(yīng)的程序名為com.briup包下的NuActivity.java。查詢界面如下:圖5.5圖書查詢界面圖書查詢功能主要代碼如下:Stringbookname=et_bookname.getText().toString().trim(); Stringauthorname=et_authorname.getText().toString().trim(); if(bookname!=null&&authorname!=null) { Toast.makeText(this,"請稍等。。。",Toast.LENGTH_LONG).show(); Intentintent=newIntent(this,AdminBookInfoActivity.class); intent.putExtra("bookname",bookname); intent.putExtra("authorname",authorname); startActivity(intent); }else{ Toast.makeText(this,"請?zhí)顚懬宄?,Toast.LENGTH_LONG).show(); }5.5.4管理員界面管理員界面顯示的是管理員的兩個主要功能:管理用戶和管理圖書,通過點(diǎn)擊不同的按鈕可以實(shí)現(xiàn)不同的功能進(jìn)行管理。注冊功能對應(yīng)的程序名為com.briup包下的AdminActivity.java。管理員管理界面如下:圖5.6管理員管理界面5.5.5管理學(xué)生用戶界面管理學(xué)生用戶界面是對所有學(xué)生用戶進(jìn)行管理的界面,這個界面的主要功能有查找特定用戶和查找所有用戶兩種方式,通過查找,最終把所有用戶都顯示在界面上。注冊功能對應(yīng)的程序名為com.briup包下的ManagerUserActivity.java.管理學(xué)生用戶界面如下:圖5.7管理用戶界面主要代碼如下:Intentintent=this.getIntent();Stringusername=intent.getExtras().getString("username").trim();lv_userinfo=(ListView)findViewById(R.id.lv_userinfo);final Listlist=ClientService.findUserInfo(username,"finduserservlet");5.5.6管理圖書界面管理圖書界面是管理員的另外一個主要功能,管理員能通過這個界面增加新的書籍和查詢特定的書籍信息情況,同時,能對查詢到的書籍進(jìn)行刪除等功能。注冊功能對應(yīng)的程序名為com.briup包下的ManagerBookActivity.java。管理圖書界面如下:圖5.8管理圖書界面switch(v.getId()){ caseR.id.mb_find: Stringbookname=et_bookname.getText().toString().trim(); Stringauthorname=et_authorname.getText().toString().trim(); if(bookname!=null&&authorname!=null) { Toast.makeText(this,"請稍等。。。",Toast.LENGTH_LONG).show(); Intentintent=newIntent(this,AdminBookInfoActivity.class); intent.putExtra("bookname",bookname); intent.putExtra("authorname",authorname); startActivity(intent); }else{ Toast.makeText(this,"請?zhí)顚懬宄?,Toast.LENGTH_LONG).show(); } break; caseR.id.mb_addbook: Intentintent1=newIntent(this,AddBookActivity.class); startActivity(intent1); break; caseR.id.mb_reset: et_bookname.setText(""); et_authorname.setText(""); break; }5.5.7圖書增加界面管理員通過增加書籍界面,增加所要增加的書籍的基本信息,通過添加這些信息,是為了普通學(xué)生用戶通過作者名和書籍名查詢時能更好的了解到書籍的基本信息等基本情況。注冊功能對應(yīng)的程序名為com.briup包下的AddBookActivity.java。圖書增加界面如下:圖5.9增加圖書界面Stringnum=1+""; Stringbookname=et_bookname.getText().toString().trim(); Stringauthorname=et_authorname.getText().toString().trim(); Stringphname=et_phname.getText().toString().trim(); Stringlocation=et_location.getText().toString().trim(); Stringcategory=et_category.getText().toString().trim(); Stringrenttime=et_renttime.getText().toString().trim(); num=et_abnum.getText().toString().trim(); Stringstr=ClientService.makeBookString(bookname,authorname,phname,location,category,renttime,num,"savebookservlet"); Toast.makeText(this,str,Toast.LENGTH_LONG).show();第6章系統(tǒng)測試6.1用戶注冊測試用戶在手機(jī)終端打開客戶端應(yīng)用程序后,有兩個按鈕選擇,如果還沒有賬號,則點(diǎn)擊用戶注冊按鈕跳轉(zhuǎn)到注冊界面。注冊界面需要你輸入你的用戶名、密碼、身份證號、入學(xué)年份、性別和所在學(xué)院等信息。如果用戶填寫的信息不全或者遺漏,則提示填寫完整。如果注冊成功,則跳轉(zhuǎn)到登錄模塊進(jìn)行登錄。注冊無效類:注冊信息不完整,提示填寫完整。注冊有效類:注冊信息完整,并且注冊信息符合唯一性,跳轉(zhuǎn)到登錄界面。用戶注冊測試如圖6.1所示:圖6.1注冊測試圖6.2用戶登錄測試用戶登錄分為學(xué)生用戶登錄和管理員登錄,兩者的登錄方式都是只需要提供用戶名和密碼就可進(jìn)行登錄操作。學(xué)生用戶登錄成功后,跳轉(zhuǎn)到圖書查詢界面;管理員登錄成功后,跳轉(zhuǎn)到管理員界面,管理員界面分為學(xué)生管理和圖書管理兩部分。登錄無效類:登錄賬號或者密碼不符,登錄不成功,提示錯誤。登錄有效類:登錄賬號密碼相符,登錄成功,并跳轉(zhuǎn)到學(xué)生用戶或管理員相對應(yīng)的界面。學(xué)生用戶登錄測試如圖6.2所示:圖6.2學(xué)生用戶登錄測試圖管理員登錄測試圖如圖6.3所示:圖6.3管理員登錄測試圖6.3圖書查詢測試作為圖書館管理系統(tǒng)的主要功能,用戶通過用戶名和密碼登錄后,便可以享受圖書查詢等功能服務(wù)。學(xué)生用戶想要查詢的書籍只要提供書籍名和書籍作者,就能查詢到該書籍的基本信息。測試無效類:查詢的圖書不存在,提示查詢圖書不存在。測試有效類:查詢的圖書存在,并列出所查詢圖書的基本信息。圖書查詢測試如圖6.4所示:圖6.4圖書查詢測試圖6.4用戶管理測試對于圖書管理員而言:他們除了上述所具有的權(quán)利外,還需要對普通用戶進(jìn)行管理。在用戶管理中,通過用戶名搜索出特定學(xué)生用戶或者查詢出所有學(xué)生用戶,在用戶列表出來之后,通過長按用戶列表上的某一條信息,可以對該用戶進(jìn)行刪除操作。測試無效類:查詢特定的學(xué)生不存在,提示所查詢的學(xué)生不存在。測試有效類:查詢特定學(xué)生存在,并列出學(xué)生的基本信息。管理員對學(xué)生用戶進(jìn)行管理測試圖如圖6.5所示:圖6.5管理員管理學(xué)生用戶測試圖6.5書籍管理測試書籍管理中,除了書籍查詢功能外,還有對書籍進(jìn)行添加的操作,在對書籍進(jìn)添加操作時,需寫明書籍的一些基本信息,比如:書名、作者名、所屬科目、所放位置等信息。在書籍查詢功能上,可以通過長按查詢出來的書籍列表,來刪除、更新所選中的書籍。測試無效類:書籍添加信息不完整,提示填寫完整。測試有效類:書籍添加信息完整,添加成功。管理員對書籍管理測試如圖6.6所示:圖6.6管理員添加圖書測試圖總結(jié)經(jīng)過13周的努力終于完成了基于Android平臺的圖書管理系統(tǒng)的設(shè)計以及論文,本圖書管理系統(tǒng)實(shí)現(xiàn)一般傳統(tǒng)WEB上的圖書管理系統(tǒng)所必備的基本功能,并且提供了友好的用戶交互界面,讓用戶操作起來極為方便和快捷,在這13周里,我收獲了很多,也付出了很多,從一個系統(tǒng)設(shè)計者的角度來說,我體會到了一個系統(tǒng)的設(shè)計其實(shí)不是想象的那么簡單,對于用戶來講,也許手機(jī)軟件上的一個看似很小的功能,但在系統(tǒng)開發(fā)者看來有時卻并不顯得簡單,有句俗話叫“牽一發(fā)而動全身”,在一個系統(tǒng)有時一個小小的改動往往會牽涉到一些復(fù)雜的業(yè)務(wù)邏輯和算法,因此作為一個開發(fā)者,必須要有十足的耐心,才能將系統(tǒng)盡可能設(shè)計的合理,這款系統(tǒng),我從整體設(shè)計和用戶交互的UI層,到完成具體功能的業(yè)務(wù)邏輯層,直至底層數(shù)據(jù)庫的設(shè)計,都花了很多時間去思考,做了很多繁瑣的工作,但我認(rèn)為是值得的,因?yàn)槲易龅拇罅抗ぷ鲹Q來了用戶操作的簡便,也為用戶提供了良好的體驗(yàn)。在沒有做畢業(yè)設(shè)計之前,覺得以前學(xué)過的知識太零碎,只是單

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論