




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于springboot的的交互式智能門禁后臺系統(tǒng)設(shè)計(jì)目錄TOC\o"1-2"\h\u第1章緒論 41.1課題背景 41.2課題意義 41.3研究現(xiàn)狀 41.4論文結(jié)構(gòu) 6第2章系統(tǒng)采用技術(shù)與開發(fā)平臺 72.1SpringBoot 72.2MybatisPlus 82.3Mysql 92.4IntelliJIDEA
92.5iBeacon 102.6本章小結(jié) 10第3章系統(tǒng)分析 123.1可行性分析 123.2需求分析 123.3本章小結(jié) 12第4章系統(tǒng)設(shè)計(jì) 134.1模塊結(jié)構(gòu) 134.2體系結(jié)構(gòu) 144.3數(shù)據(jù)庫設(shè)計(jì) 144.4本章小結(jié) 17第5章系統(tǒng)實(shí)現(xiàn) 185.1iBeacon定位數(shù)據(jù)采集實(shí)現(xiàn) 185.2對門禁的管理 195.3對門禁卡的管理 225.4與門禁的接口 255.5開門記錄的查看 265.6統(tǒng)計(jì)記錄的查看 275.7本章小結(jié) 29第6章軟件測試 306.1概念和意義 306.2測試原則 306.3系統(tǒng)測試方法和測試類型 306.4測試目標(biāo) 306.5測試用例 316.6本章小結(jié) 36總結(jié) 37致謝 38參考文獻(xiàn) 39緒論1.1課題背景門禁系統(tǒng)指的是管制非特定人員進(jìn)出某通道所使用的軟硬件系統(tǒng)。例如一般\o"公寓"公寓大廈必須是住在該公寓的人員才可以進(jìn)入此公寓大門、\o"社區(qū)"社區(qū)\o"地下室"地下室\o"停車場"停車場等等。門禁系統(tǒng)通常被使用在:辦公室大門、\o"辦公室"電梯、\o"工廠"工廠以及倉庫,或是\o"捷運(yùn)"捷運(yùn)入口、\o"機(jī)場"機(jī)場特定入口、\o"醫(yī)院"醫(yī)院特定地區(qū)等。門禁系統(tǒng)普遍的被使用于任何場所及地方。而隨著有些地方的人流量越來越多,單一的門禁系統(tǒng)很難管理好,可能能造成堵塞的情況發(fā)生,難以滿足現(xiàn)在人們的需要。精準(zhǔn)的室內(nèi)定位服務(wù)是達(dá)到世間萬物智能關(guān)聯(lián)(物聯(lián)網(wǎng))目標(biāo)的基礎(chǔ),強(qiáng)化和提高互聯(lián)網(wǎng)+以及AI技術(shù),加快了中國室內(nèi)定位技術(shù)行業(yè)的發(fā)展。根據(jù)全球大部分主流機(jī)構(gòu)預(yù)測,基于室內(nèi)定位信息的位置服務(wù)系統(tǒng)將會有很大的需求。1.2課題意義目前整個(gè)國家都在朝著智慧城市發(fā)展,門禁系統(tǒng)不只是簡單的作為管理人員的出入,而是逐步演變?yōu)槭覂?nèi)空間人流、物流、能源等綜合管理和社會新興服務(wù)。一方面,這樣的的交互式智能門禁系統(tǒng)能夠讓人更好的做好時(shí)間管理,提供便利,也提高人們的生活質(zhì)量。另一方面,這一基于樹莓派的交互式智能門禁系統(tǒng)硬件本身小巧,操作方便,成本也比較低,性能豐富,能夠有效避免資源的浪費(fèi)。相比普通門禁它具有更多的功能,比如人流的計(jì)算和控制,后臺數(shù)據(jù)處理能力更強(qiáng),也不會出現(xiàn)很大的安全問題。從現(xiàn)在的市場發(fā)展情況分析,國內(nèi)各地區(qū)無論是商場還是住房等都在不斷擴(kuò)大,但是在交互式智能門禁系統(tǒng)的使用率上還有待提高。我們?yōu)榱隧憫?yīng)國家的號召加快建設(shè)智慧城,在越來越多的建筑不斷進(jìn)行改造的情況下,新建筑蓬勃發(fā)展的時(shí)候,我們這樣的交互式智能門禁系統(tǒng)更加占有很好的市場,這對我們這項(xiàng)技術(shù)的應(yīng)用前景來說也是非常好的。1.3研究現(xiàn)狀隨著自動識別技術(shù)的飛速發(fā)展,門禁系統(tǒng)也得到了飛躍式的發(fā)展,越來越多的公司和企業(yè)投入大量的人力、物力和財(cái)力來從事門禁系統(tǒng)的研發(fā)和生產(chǎn)。門禁系統(tǒng)的知名品牌有捷順、達(dá)實(shí)智能、霍尼韋爾(Honeywell)、西門子、HIDGlobal、博世安防、DDS、中控智慧、同方銳安、科松等公司。門禁系統(tǒng)產(chǎn)生自20世紀(jì)80年代,90年代由國外引入中國,進(jìn)入我國市場已經(jīng)有幾十年的歷史了,隨著安防行業(yè)的迅速發(fā)展,門禁系統(tǒng)以快速、平穩(wěn)的態(tài)勢發(fā)展,迅速發(fā)展成為安防行業(yè)的重要細(xì)分行業(yè)之一。隨著科技的進(jìn)步,國家對門禁系統(tǒng)產(chǎn)品的推動,人們生活水平不斷提高,傳統(tǒng)門禁系統(tǒng)已經(jīng)無法滿足用戶的需求,智能門禁系統(tǒng)橫空出世,發(fā)展迅猛,已經(jīng)占據(jù)了市場的大部分份額,傳統(tǒng)門禁在激烈的競爭中漸漸失去了優(yōu)勢。門禁系統(tǒng)在各個(gè)領(lǐng)域中得到了廣泛的應(yīng)用,由于不同場合對門禁系統(tǒng)的需求不同,門禁系統(tǒng)的技術(shù)也在不斷的變化和發(fā)展。目前,更加先進(jìn)的生物識別技術(shù)和手機(jī)NFC移動技術(shù)的出現(xiàn)為門禁行業(yè)發(fā)展提供了新的動力,視頻智能分析技術(shù)和生物識別技術(shù)多元化應(yīng)用更是為門禁產(chǎn)品的功能開發(fā)提供了新的方向,同時(shí)3G/4G移動通訊技術(shù)的飛速發(fā)展與應(yīng)用使得門禁系統(tǒng)的組網(wǎng)架構(gòu)更加靈活多樣,產(chǎn)品自身的集成化、智能化及可集成性會成為未來衡量門禁產(chǎn)品功能和品質(zhì)的重要標(biāo)準(zhǔn)。門禁系統(tǒng)在各個(gè)領(lǐng)域中得到了廣泛的應(yīng)用,由于不同場合對門禁系統(tǒng)的需求不同,門禁系統(tǒng)的技術(shù)也在不斷的變化和發(fā)展。目前,更加先進(jìn)的生物識別技術(shù)和手機(jī)NFC移動技術(shù)的出現(xiàn)為門禁行業(yè)發(fā)展提供了新的動力,視頻智能分析技術(shù)和生物識別技術(shù)多元化應(yīng)用更是為門禁產(chǎn)品的功能開發(fā)提供了新的方向,同時(shí)3G/4G移動通訊技術(shù)的飛速發(fā)展與應(yīng)用使得門禁系統(tǒng)的組網(wǎng)架構(gòu)更加靈活多樣,產(chǎn)品自身的集成化、智能化及可集成性會成為未來衡量門禁產(chǎn)品功能和品質(zhì)的重要標(biāo)準(zhǔn)。隨著安防技術(shù)和門禁技術(shù)的不斷發(fā)展、安全等要求的不斷提高、應(yīng)用場所的不斷擴(kuò)大,門禁系統(tǒng)將會朝著IP化、多重生物識別技術(shù)的方向發(fā)展。此外,門禁系統(tǒng)作為基礎(chǔ)物聯(lián)網(wǎng)絡(luò),不再局限于各個(gè)子系統(tǒng)單獨(dú)運(yùn)作模式,未來將會與視頻監(jiān)控、防盜及消防報(bào)警等更多系統(tǒng)相結(jié)合,為其提供更多基礎(chǔ)數(shù)據(jù),提高安防系統(tǒng)的整體性和安全性。門禁系統(tǒng)的功能將會更豐富、更完善、更具兼容性、操作更人性化。智能門禁系統(tǒng)是現(xiàn)代安全防范系統(tǒng)的重要組成部分,隨著國內(nèi)對門禁系統(tǒng)的安全性、先進(jìn)性和穩(wěn)定性要求的提高,迫切需要一種高性能的門禁系統(tǒng)。2018年國內(nèi)智能門禁系統(tǒng)市場規(guī)模達(dá)到123億元,如今常見的生物識別門禁系統(tǒng)主要包括指紋門禁系統(tǒng)、虹膜門禁系統(tǒng)、面部識別門禁系統(tǒng)和靜脈識別門禁等等。在安全性、便捷性、舒適性和管理控制上都得到了進(jìn)一步提升。隨著生物識別技術(shù)的飛速發(fā)展,門禁系統(tǒng)也得到了飛躍式的發(fā)展,進(jìn)入了成熟期,出現(xiàn)了如指紋門禁系統(tǒng),虹膜門禁系統(tǒng),面部識別門禁系統(tǒng)等。它們在安全性,方便性,易管理性等方面都各有特長,在他們的推動下,門禁系統(tǒng)的應(yīng)用領(lǐng)域也開始變得越來越廣。由于生物識別需要比對很多參數(shù)特征,比對速度慢,不利于人員人數(shù)過多的場合等,不過隨著技術(shù)的進(jìn)步,這些缺點(diǎn)整在不斷被改善。本次課題設(shè)計(jì)的這個(gè)門禁系統(tǒng)能夠很好的做到人流和物流等綜合管理。1.4論文結(jié)構(gòu)本文詳細(xì)介紹了基于springboot的門禁樓宇云管理系統(tǒng)的研究設(shè)計(jì)過程,全文共分為六章:第1章介紹了課題研究背景、此課題的研究現(xiàn)狀、本課題主要的研究內(nèi)容以及本文的論文結(jié)構(gòu)。第2章介紹了用于系統(tǒng)分析與設(shè)計(jì)的技術(shù)基礎(chǔ)。第3章介紹了系統(tǒng)分析的過程,包括需求分析和可行性分析第4章介紹了總體設(shè)計(jì)方案,包括模塊結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、概念結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫邏輯結(jié)構(gòu)等。第5章介紹了詳細(xì)的設(shè)計(jì)過程,包括模塊間功能的實(shí)現(xiàn)。第6章介紹了系統(tǒng)測試的過程,并在系統(tǒng)的幾個(gè)模塊上進(jìn)行手動測試。系統(tǒng)采用技術(shù)與開發(fā)平臺本系統(tǒng)主要以java語言作為基礎(chǔ),在IDEA這個(gè)集成平臺上,使用了Mysql數(shù)據(jù)庫來對數(shù)據(jù)進(jìn)行存儲和處理,其中用于定位的標(biāo)簽:iBeacon,這是一種低功耗的藍(lán)牙標(biāo)簽。本系統(tǒng)主要涉及到了兩個(gè)開源框架:MyBatisPlus、Springboot。并且同時(shí)還運(yùn)用了html作為表現(xiàn)層的技術(shù),本系統(tǒng)將上述提到的3種技術(shù)合理地結(jié)合在一起,從而搭建出了一個(gè)樓宇云門禁系統(tǒng)。2.1SpringBootSpring來源于EJB的復(fù)雜與繁瑣,SpringBoot來源于Spring的復(fù)雜與繁瑣。SpringBoot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,SpringBoot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapidapplicationdevelopment)成為領(lǐng)導(dǎo)者。
SpringBoot為開發(fā)者帶來了更好的開發(fā)體驗(yàn),但寫完代碼只是萬里長征路上的一小步,后續(xù)的運(yùn)維工作才是讓很多人真正感到無助的。SpringBoot在運(yùn)維方面做了很多工作,部署、監(jiān)控、度量,無一不在其涉獵范圍之內(nèi),結(jié)合SpringCloud后還可以輕松地實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、服務(wù)降級等功能。它還自帶了不少非功能性的特性,比如安全、度量、健康檢查、內(nèi)嵌服務(wù)器和外置配置,這些都讓選擇SpringBoot成為了一件順理成章的事情。2014年,SpringSource的JoshLong在向我介紹SpringBoot時(shí),我不斷重復(fù)一句話:“這個(gè)功能我們也做了?!钡拇_,國內(nèi)的百度、阿里、騰訊,國外的Amazon、Facebook、Twitter、Netflix等一票大公司都在框架和系統(tǒng)建設(shè)上有大量投入,為了提升性能和可用性,大家做了很多卓有成效的工作?,F(xiàn)在,SpringBoot讓人人都能享受業(yè)內(nèi)頂級公司的“福利”,站在巨人的肩膀之上,想想都讓人覺得興奮。
隨著動態(tài)語言的流行(Ruby,Groovy,Scala,Node.js),Java的開發(fā)顯得格外的笨重:繁多的配置,低下的開發(fā)效率,復(fù)雜的部署流程以及第三方技術(shù)集成難度大。
在上述環(huán)境下,SpringBoot應(yīng)運(yùn)而生。它使用”習(xí)慣由于配置”(項(xiàng)目中存在大量的配置,此外還內(nèi)置一個(gè)習(xí)慣性的配置,讓你無須進(jìn)行手動配置)的理念讓你的項(xiàng)目快速運(yùn)行起來。使用SpringBoot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)嵌Servlet容器),準(zhǔn)生產(chǎn)級別的Spring框架的項(xiàng)目,使用SpringBoot你可以不用或者只需要很少的Spring配置。SpringBoot遵循“習(xí)慣優(yōu)于配置”的理念,讓項(xiàng)目快速運(yùn)行起來。相比于以往的一些開發(fā)框架,SpringBoot不但使用更加簡單,而且功能更加豐富,性能更加穩(wěn)定而健壯。使用SpringBoot開發(fā)框架,不僅能提高開發(fā)速度,增強(qiáng)生產(chǎn)效率,一定意義上,可以說是解放了程序員的勞動,一種新技術(shù)的使用,更能增強(qiáng)系統(tǒng)的穩(wěn)定性和擴(kuò)展系統(tǒng)的性能指標(biāo)。SpringBoot是在Spring框架基礎(chǔ)上創(chuàng)建的一個(gè)全新的框架,其設(shè)計(jì)目的是簡化Spring應(yīng)用的搭建和開發(fā)過程,它不但具有Spring的所有優(yōu)秀特性,而且具有如下顯著特點(diǎn):為Spring開發(fā)提供更加簡單的使用和快速開發(fā)的技巧。具有開箱即用的默認(rèn)配置功能,能根據(jù)項(xiàng)目依賴自動配置。具有功能更加強(qiáng)大的服務(wù)體系,包括嵌入式服務(wù)、安全、性能指標(biāo)、健康檢查等。絕對沒有代碼生成,不再需要XML配置,即可讓應(yīng)用更加輕巧和靈活。SpringBoot對于一些第三方的技術(shù)的使用,提供了非常完美的整合,使你在簡單的使用中,不知不覺運(yùn)用了非常高級和先進(jìn)的技術(shù)。2.2MybatisPlusMybatis(半自動)在持久層框架中是非常火的,一般項(xiàng)目都是基于ssm。雖然mybatis可以直接在xml或注解中通過SQL語句操作數(shù)據(jù)庫,很是靈活。但是其操作都要通過SQL語句進(jìn)行,就必須寫大量的xml文件或者注解,很是麻煩。mybatis-plus(自動)就很好的解決了這個(gè)問題。MyBatis-Plus(簡稱MP)是一個(gè)
MyBatis
的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。它有以下特性:無侵入:只做增強(qiáng)不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑損耗?。簡蛹磿詣幼⑷牖綜URD,性能基本無損耗,直接面向?qū)ο蟛僮鲝?qiáng)大的CRUD操作:內(nèi)置通用Mapper、通用Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分CRUD操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求支持Lambda形式調(diào)用:通過Lambda表達(dá)式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯支持主鍵自動生成:支持多達(dá)4種主鍵策略(內(nèi)含分布式唯一ID生成器-Sequence),可自由配置,完美解決主鍵問題支持ActiveRecord模式:支持ActiveRecord形式調(diào)用,實(shí)體類只需繼承Model類即可進(jìn)行強(qiáng)大的CRUD操作支持自定義全局通用操作:支持全局通用方法注入(Writeonce,useanywhere)內(nèi)置代碼生成器:采用代碼或者M(jìn)aven插件可快速生成Mapper、Model、Service、Controller層代碼,支持模板引擎,更有超多自定義配置等您來使用內(nèi)置分頁插件:基于MyBatis物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通List查詢分頁插件支持多種數(shù)據(jù)庫:支持MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer等多種數(shù)據(jù)庫內(nèi)置性能分析插件:可輸出Sql語句以及其執(zhí)行時(shí)間,建議開發(fā)測試時(shí)啟用該功能,能快速揪出慢查詢內(nèi)置全局?jǐn)r截插件:提供全表delete、update操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作2.3MysqlMysql是目前個(gè)人使用最為主流的一個(gè)數(shù)據(jù)庫管理系統(tǒng)系統(tǒng),同時(shí)也可以實(shí)現(xiàn)多個(gè)用戶連接同時(shí)執(zhí)行操作,是一個(gè)功能豐富、安全性能較高、占用內(nèi)存較小、操作步驟人性化的數(shù)據(jù)庫服務(wù)器。這也是一個(gè)開源的應(yīng)用程序,也正是因?yàn)檫@么一個(gè)開放的特點(diǎn),受到了眾多用戶的喜愛。所以目前市場上其被應(yīng)用的范圍已經(jīng)得到了大幅度的提升,網(wǎng)頁站點(diǎn)或者應(yīng)用程序的數(shù)據(jù)庫后端的開發(fā)也在使用Mysql這個(gè)數(shù)據(jù)庫管理系統(tǒng)。MYSQL數(shù)據(jù)庫具有以下特點(diǎn):C和C++中使用和測試,以確保源代碼的編譯器的便攜性和靈活性。使用的CPU資源來支持多線程。算法優(yōu)化查詢SQL,切實(shí)提高搜索速度。TCP/IP,ODBC和JDBC數(shù)據(jù)庫,并提供連接到其他。是一個(gè)管理工具的管理系統(tǒng),控制和改善數(shù)據(jù)庫的操作??梢詳?shù)以千萬計(jì)的記錄在一個(gè)大的數(shù)據(jù)庫。2.4IntelliJIDEA
IDEA全稱IntelliJIDEA,是java編程語言開發(fā)的集成環(huán)境。IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構(gòu)、JavaEE支持、各類版本工具(\t"/item/IntelliJ%20IDEA/_blank"git、\t"/item/IntelliJ%20IDEA/_blank"svn等)、JUnit、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計(jì)等方面的功能可以說是超常的。IDEA是\t"/item/IntelliJ%20IDEA/_blank"JetBrains公司的產(chǎn)品,這家公司總部位于\t"/item/IntelliJ%20IDEA/_blank"捷克共和國的首都\t"/item/IntelliJ%20IDEA/_blank"布拉格,開發(fā)人員以嚴(yán)謹(jǐn)著稱的東歐程序員為主。還支持HTML,CSS,PHP,MySQL,Python等。IDEA優(yōu)點(diǎn)如下:最突出的功能自然是調(diào)試(Debug),可以對Java代碼,JavaScript,JQuery,Ajax等技術(shù)進(jìn)行調(diào)試。比如查看Map類型的對象,如果實(shí)現(xiàn)類采用的是哈希映射,則會自動過濾空的Entry實(shí)例。其次,需要動態(tài)Evaluate一個(gè)表達(dá)式的值,比如我得到了一個(gè)類的實(shí)例,但是并不知曉它的API,可以通過CodeCompletion點(diǎn)出它所支持的方法。最后,在多線程調(diào)試的情況下,Logonconsole的功能可以幫你檢查多線程執(zhí)行的情況。2.5iBeaconiBeacon是蘋果在2013年WWDC上推出一項(xiàng)基于藍(lán)牙4.0(BluetoothLE|BLE|BluetoothSmart)的精準(zhǔn)微定位技術(shù),當(dāng)你的手持設(shè)備靠近一個(gè)Beacon基站時(shí),設(shè)備就能夠感應(yīng)到Beacon信號,范圍可以從幾毫米到50米。因?yàn)槭且环N定位技術(shù),蘋果將iBeacon相關(guān)的接口放到了CoreLocation.framework。Google在Android4.3及后續(xù)版本支持了該功能,只要滿足iBeacon技術(shù)標(biāo)準(zhǔn)即可。BLE與傳統(tǒng)的藍(lán)牙相比最大的優(yōu)勢是功耗降低90%,同時(shí)傳輸距離增大(理想狀況下超過100米)、安全和穩(wěn)定性提高(支持AES加密和CRC驗(yàn)證)。iBeacon同時(shí)有一些自己的特點(diǎn):無需配對,一般藍(lán)牙設(shè)備印象中都需要配對工作。iBeacon無需配對,因?yàn)樗遣捎盟{(lán)牙的廣播頻道傳送信號。程序可以后臺喚醒,iBeacon的信息推送需要App支持。但是我們接收iBeacon信號無需打開App,只要保證安裝了,同時(shí)手機(jī)藍(lán)牙打開。iBeacon不具備傳統(tǒng)意義上的數(shù)據(jù)傳輸功能,Beacon基站只推送位置信息,數(shù)據(jù)格式如下圖所示。如果開發(fā)的APP要運(yùn)行起來并與服務(wù)器通信以實(shí)現(xiàn)定制化功能、獲取定制化數(shù)據(jù),需要開啟其他的數(shù)據(jù)通信方式,如WIFI、4G等。2.6本章小結(jié)在進(jìn)行本章的環(huán)節(jié)時(shí),會接觸到一些較為潮流的框架和技術(shù)。這就需要本人通過查閱資料、請教老師等方式去為自己的知識盲點(diǎn)掃盲。做為一個(gè)學(xué)生還是要時(shí)刻了解潮流的技術(shù)的。在進(jìn)行環(huán)境配置的時(shí)候,需要耐心的將IDEA、Mysql等必須軟件配置成功,因?yàn)榛趇Beacon的定位系統(tǒng)會需要不斷地接收藍(lán)牙網(wǎng)關(guān)的掃描數(shù)據(jù),因此對于電腦硬件的配置要求也較高,需要使用一臺可以順利運(yùn)行此系統(tǒng)的pc機(jī)子。第3章系統(tǒng)分析一個(gè)完備的系統(tǒng)能否進(jìn)行開發(fā),需要從多方面進(jìn)行考慮,其中主要包括需求可行性分析、技術(shù)可行性分析、操作可行性分析以及經(jīng)濟(jì)可行性分析。從宏觀的角度來預(yù)測判斷此系統(tǒng)是否符合開發(fā)及應(yīng)用的要求。本章中根據(jù)一些日常查閱資料,確定了用戶需求以及系統(tǒng)的功能模塊。3.1可行性分析可行性分析的作用是深入理解本系統(tǒng)是否在用戶需求、技術(shù)以及經(jīng)濟(jì)方面滿足條件。經(jīng)過多個(gè)角度的分析,從而能夠一定程序上了解這個(gè)系統(tǒng)是否存在著市場發(fā)展前景。當(dāng)然最為重要的是技術(shù)可行性分析,當(dāng)前面的分析滿足條件時(shí),若技術(shù)無法達(dá)到應(yīng)完成的目標(biāo),那么系統(tǒng)將只能是一個(gè)無法完成的作品。需求分析是需要通過前期的查閱資料和調(diào)研,搞清楚適用對象所想要的此系統(tǒng)的功能,完備的需求分析,將對后期的軟件開發(fā)省去了很大的工時(shí)。其重要性在于,需求分析定義了此系統(tǒng)之后開發(fā)的整體方向。因?yàn)?,此系統(tǒng)尚未需要投入市場使用,所以,經(jīng)濟(jì)可行性就顯得不是那么的重要。(1)需求可行性分析需求的可行性是從籠統(tǒng)的角度定義需要此系統(tǒng)完成的全部功能。此需求分析得到的結(jié)果,是為后期的編寫代碼奠定一個(gè)十分重要的基礎(chǔ),也是對此系統(tǒng)整個(gè)功能模塊的完整定義。3.2需求分析3.3本章小結(jié)通過對本系統(tǒng)進(jìn)行的一系列研究和分析,從而得出初步結(jié)論本系統(tǒng)具有著很強(qiáng)的實(shí)用性。開發(fā)出本系統(tǒng)可以對當(dāng)前市場上主流的門禁管理的形式進(jìn)行了一定程度上的改善。第4章系統(tǒng)設(shè)計(jì)4.1模塊結(jié)構(gòu)本系統(tǒng)要實(shí)現(xiàn)的功能模塊如圖4-1所示:圖4-1系統(tǒng)功能模塊圖通過上圖可以看出,主要功能:實(shí)現(xiàn)對每個(gè)門禁狀態(tài)的收集、監(jiān)控。從單個(gè)門禁獲取用戶交互信息,存儲到云服務(wù)器端,然后廣播到每一個(gè)門禁。從后臺對每個(gè)門禁進(jìn)行遠(yuǎn)程控制。4.2體系結(jié)構(gòu)主要包括有客戶端、定位基站和終端標(biāo)簽設(shè)備。其中終端標(biāo)簽設(shè)備指的是iBeacon,它包括有多種形式,例如卡片型、鑰匙掛件型。iBeacon附著于實(shí)物資產(chǎn)上,從而來監(jiān)測實(shí)物資產(chǎn)的定位信息,然后由iBeacon向定位基站廣播發(fā)送人員位置的信息。定位基站指的是用于采集iBeacon數(shù)據(jù)的藍(lán)牙網(wǎng)關(guān),在接收到數(shù)據(jù)之后,發(fā)送給同一網(wǎng)段之下的客戶端設(shè)備,由客戶端進(jìn)行數(shù)據(jù)的分析和計(jì)算,得出相應(yīng)的人員的坐標(biāo)信息。4.3數(shù)據(jù)庫設(shè)計(jì)4.3.1概念結(jié)構(gòu)設(shè)計(jì)根據(jù)概念可以設(shè)計(jì)出開門記錄表門禁信息如下圖所示門禁卡信息如下圖所示開門次數(shù)統(tǒng)計(jì)4.3.2數(shù)據(jù)庫邏輯結(jié)構(gòu)開發(fā)人員在數(shù)據(jù)庫中建立名為“access_control”的文件,一共建立4個(gè)數(shù)據(jù)庫表,對數(shù)據(jù)表的表組成進(jìn)行逐個(gè)介紹:開門記錄表2、門禁表3、門禁卡表4、開門次數(shù)統(tǒng)計(jì)表4.4本章小結(jié)在本章節(jié)中,首先通過之前的需求分析,進(jìn)一步確定了此軟件系統(tǒng)需要進(jìn)行設(shè)計(jì)開發(fā)的各個(gè)模塊。其中一共分為五大模塊。模塊的確定即可對后續(xù)的開發(fā)做了一個(gè)鋪墊,進(jìn)一步確定所需使用到的實(shí)體,并且已經(jīng)在上文中通過實(shí)體圖更加直觀的呈現(xiàn)出各個(gè)實(shí)體以及他們的屬性。這樣,對整體的系統(tǒng)有了大體的把握。有了實(shí)體類以及屬性,即可設(shè)計(jì)數(shù)據(jù)庫的各個(gè)表。在這其中,再一次溫故了數(shù)據(jù)庫的相關(guān)知識,從而對自己的能力有了較大的提升。第5章系統(tǒng)實(shí)現(xiàn)5.1iBeacon定位數(shù)據(jù)采集實(shí)現(xiàn)iBeacon的數(shù)據(jù)形式是通過廣播的形式進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù),其發(fā)送的數(shù)據(jù)包格式具體包括有五個(gè)部分,如圖5-1所示:圖5-1iBeacon數(shù)據(jù)包格式組成圖其中在上圖所展示出的組成結(jié)構(gòu):prefix、UUID、Major、Minor、TXpower,在這之中,最后一個(gè)結(jié)構(gòu)TXpower,是可以作為定位的數(shù)據(jù)考量值。例如:若接收得到的TXpower的值為0xC5,那么0xC5=197,根據(jù)2的補(bǔ)碼測得256-197=-59dBm,這個(gè)考量值是距離設(shè)備1米測得的信號強(qiáng)度值(RSSI-ReceivedSignalStrengthIndication,接收到的信號強(qiáng)弱指標(biāo))[16]。其中,接收藍(lán)牙數(shù)據(jù)的實(shí)現(xiàn)圖如下圖所示:5.2對門禁的管理查看門禁信息如下圖所示在這個(gè)模塊中,管理員可以實(shí)現(xiàn)對門禁基本信息的管理。管理員可以查看到已經(jīng)記錄于數(shù)據(jù)庫中的門禁的詳細(xì)信息也可以進(jìn)行添加、修改、刪除三項(xiàng)操作。查看門禁信息的關(guān)鍵代碼如下:@GetMapping(value={"/","table"})publicStringtablePage(Modelmodel){List<Access_control>list2=access_controlService.list();model.addAttribute("doors",list2);return"table";}添加門禁信息的代碼如下所示:/**轉(zhuǎn)入添加頁面*/@GetMapping("/creatDoor")publicStringcreatPage2(){return"creatDoor";}/**保存添加數(shù)據(jù)*/@PostMapping("/creat/door")publicStringsaveDoor(Access_controlaccessControl){access_controlService.save(accessControl);return"redirect:/";}修改門禁信息如下圖所示修改門禁信息的代碼如下所示:/**轉(zhuǎn)入修改頁面*/@GetMapping("/updateDoor/{id}")publicStringupdatePage2(@PathVariable("id")intid,Modelmodel){model.addAttribute("doorId",id);return"updateDoor";}/**修改數(shù)據(jù)*/@PostMapping("/update/door")publicStringupdateDoor(Access_controlaccessControl){access_controlService.updateById(accessControl);return"redirect:/";}刪除門禁信息的代碼如下所示@GetMapping("/door/delete/{id}")publicStringdeleteDoor(@PathVariable("id")Longid){access_controlService.removeById(id);return"redirect:/";}管理門禁信息的流程圖如下所示5.3對門禁卡的管理查看門禁卡信息如下圖在這個(gè)模塊中,管理員可以實(shí)現(xiàn)對門禁卡基本信息的管理。管理員可以查看到已經(jīng)記錄于數(shù)據(jù)庫中的門禁卡的詳細(xì)信息也可以進(jìn)行添加、修改、刪除三項(xiàng)操作。查看門禁卡信息的代碼如下:@GetMapping(value={"/","table"})publicStringtablePage(Modelmodel){List<Access_card>list1=access_cardService.list();model.addAttribute("cards",list1);return"table";}添加門禁卡的信息如下圖所示添加門禁卡的代碼:/**轉(zhuǎn)入添加頁面*/@GetMapping("/creatCard")publicStringcreatPage1(){return"creatCard";}/**保存添加數(shù)據(jù)*/@PostMapping("/creat/card")publicStringsaveCard(Access_cardaccessCard){access_cardService.save(accessCard);return"redirect:/";}修改門禁卡信息如下圖所示:/**轉(zhuǎn)入修改頁面*/@GetMapping("/updateCard/{id}")publicStringupdatePage1(@PathVariable("id")intid,Modelmodel){model.addAttribute("cardId",id);return"updateCard";}/**修改數(shù)據(jù)*/@PostMapping("/update/card")publicStringupdateCard(Access_cardaccessCard){access_cardService.updateById(accessCard);return"redirect:/";}刪除門禁卡代碼如下:@GetMapping("/card/delete/{id}")publicStringdeleteCard(@PathVariable("id")Longid){access_cardService.removeById(id);return"redirect:/";}管理門禁信息的流程圖如下所示5.4與門禁的接口門禁接口如下圖:接口的代碼:@PostMapping("/open")publicIsOpenTheAccessControlResponseIsOpenTheAccessControl(@RequestBodyIsOpenTheAccessControlRequestrequest){/**查詢數(shù)據(jù)庫中的門禁卡id*/IsOpenTheAccessControlResponseresponse=newIsOpenTheAccessControlResponse();QueryWrapper<Access_card>queryWrapper=newQueryWrapper<>();queryWrapper.and(i->i.eq("ac_card_code",request.getAcCardNo()).eq("ac_card_status","true"));List<Access_card>list=access_cardService.list(queryWrapper);/**將該數(shù)據(jù)上傳*/Ac_unlock_historyacUnlockHistory=newAc_unlock_history();acUnlockHistory.setAcCardId(request.getAcCardNo());acUnlockHistory.setAcId(request.getAcNo());acUnlockHistory.setCreatedBy("qq");acUnlockHistory.setCreateTime(newDate());acUnlockHistory.setLastUpdateTime(newDate());acUnlockHistory.setUnlockTime(newDate());acUnlockHistory.setUnlockType("單門");acUnlockHistory.setDeleted(false);booleansave=ac_unlock_historyService.save(acUnlockHistory);/**判斷查詢記錄是否為0*/if(list.size()!=0){response.setOpen(true);}returnresponse;}門禁接口的流程圖如下所示5.5開門記錄的查看開門記錄如下圖開門記錄查看代碼@GetMapping(value={"/","table"})publicStringtablePage(Modelmodel){List<Ac_unlock_history>list=ac_unlock_historyService.list();model.addAttribute("histories",list);return"table";}5.6統(tǒng)計(jì)記錄的查看開門次數(shù)如下圖統(tǒng)計(jì)開門次數(shù)的代碼@Scheduled(cron="00/5***?")publicvoidOpenTimes(){Datenow=newDate();QueryWrapper<Ac_unlock_history>queryWrapper1=newQueryWrapper<>();QueryWrapper<Ac_unlock_history>queryWrapper2=newQueryWrapper<>();QueryWrapper<Ac_unlock_history>queryWrapper3=newQueryWrapper<>();QueryWrapper<Ac_unlock_history>queryWrapper4=newQueryWrapper<>();queryWrapper1.exists("SELECT*FROMac_unlock_history\n"+"WHEREcreate_time>=DATE_SUB(NOW(),INTERVAL5MINUTE)\n"+"ANDac_id=123222");intcount1=ac_unlock_historyService.count(queryWrapper1);queryWrapper2.exists("SELECT*FROMac_unlock_history\n"+"WHEREcreate_time>=DATE_SUB(NOW(),INTERVAL5MINUTE)\n"+"ANDac_id=123222");intcount2=ac_unlock_historyService.count(queryWrapper2);queryWrapper3.exists("SELECT*FROMac_unlock_history\n"+"WHEREcreate_time>=DATE_SUB(NOW(),INTERVAL5MINUTE)\n"+"ANDac_id=123333");intcount3=ac_unlock_historyService.count(queryWrapper3);queryWrapper4.exists("SELECT*FROMac_unlock_history\n"+"WHEREcreate_time>=DATE_SUB(NOW(),INTERVAL5MINUTE)\n"+"ANDac_id=123444");intcount4=ac_unlock_historyService.count(queryWrapper4);Open_timeropenTimer=newOpen_timer();openTimer.setAOpenTimes(count1);openTimer.setBOpenTimes(count2);openTimer.setCOpenTimes(count3);openTimer.setDOpenTimes(count4);openTimer.setCreatedBy("qq");openTimer.setCreateTime(newDate());openTimer.setDeleted(false);openTimer.setLastUpdateTime(newDate());booleansave=open_timerService.save(openTimer);}統(tǒng)計(jì)開門次數(shù)流程圖5.7本章小結(jié)本章節(jié)的內(nèi)容是主要集中于代碼開發(fā)這一塊,在這期間要綜合前幾章節(jié)提到的需求進(jìn)行實(shí)現(xiàn),因此在這邊一步驟之中,遇到了較多的知識難點(diǎn)。當(dāng)然,在堅(jiān)持的查閱資料和請教老師之下,還是順利的將這個(gè)模塊完成了。滿足了需求分析中需要解決的功能,也收獲了十分多的新鮮知識。軟件測試6.1概念和意義軟件測試是一個(gè)應(yīng)用軟件必不可少的過程。軟件測試是為了發(fā)現(xiàn)系統(tǒng)中存在的bug,并且將其記錄下來,交給開發(fā)人員,針對性的對系統(tǒng)進(jìn)行進(jìn)一步的完善。軟件測試的過程是為了提高應(yīng)用程序的正確度、完成度以及軟件的質(zhì)量。這三點(diǎn)是一個(gè)完備程序的重要評判標(biāo)準(zhǔn)。軟件測試還需要結(jié)合上述文章中所提到的用戶需求,進(jìn)行相應(yīng)的功能模塊測試,從而來發(fā)現(xiàn)是否能夠完整地實(shí)現(xiàn)程序功能。6.2測試原則(1)測試越早進(jìn)行越好。(2)在設(shè)計(jì)測試用例的時(shí)候,就要考慮數(shù)據(jù)是否正確,是否有異常事件。(3)測試計(jì)劃應(yīng)該嚴(yán)格制定。(4)測試所用文檔和方法都要進(jìn)行保存。6.3系統(tǒng)測試方法和測試類型黑盒測試:功能測試或數(shù)據(jù)驅(qū)動器測試是它的別稱。在測試過程中,該程序被視為黑盒子,無法打開。它只檢查程序的功能是否可以正常地照著需求規(guī)范使用。并保持完整的外部信息(如數(shù)據(jù)庫或文件)。等價(jià)類劃分,邊值分析,因果關(guān)系圖和誤差估計(jì)是很多人熟悉的黑盒測試方法,都能讓操作人員很好地進(jìn)行軟件測試?!昂谙蛔印狈椒ㄊ且粋€(gè)詳盡的輸入測試。白盒測試:主要的重點(diǎn)在于搞清楚產(chǎn)品的內(nèi)部運(yùn)行流程。測試此應(yīng)用程序的內(nèi)部組成是否穩(wěn)定,每個(gè)路徑是否能夠完成起初確定的目標(biāo)?!鞍缀小狈椒ㄒ馕吨敱M地對路徑進(jìn)行測試。測試人員在檢查完程序內(nèi)部結(jié)構(gòu)之后,才能使用該方案,導(dǎo)出數(shù)據(jù)時(shí)一定要按照巡檢邏輯。目前很多人采用手動測試的方法。而有部分測試類型可以用測試工具代替其進(jìn)行測試。但是,手動測試并不能完全被自動化測試取代。操作人員可以同時(shí)將手動測試與自動化測試相結(jié)合來完成測試。6.4測試目標(biāo)測試本系統(tǒng)的功能能否滿足系統(tǒng)的需求,并發(fā)現(xiàn)開發(fā)的系統(tǒng)與用戶的需求中不一致甚至相反的地方,對其進(jìn)行修改。從而提出更為完美的方案。它的任務(wù)是盡最大努力徹底檢查程序中的錯誤的同時(shí),讓軟件變得更加可靠。這階段又可分成三個(gè)步驟:模塊測試,在模塊測試中看各個(gè)模塊中的程序會不會出現(xiàn)錯誤;裝配測試,看看模塊和模塊接口之間能不能接的上;最終看看整個(gè)軟件系統(tǒng)能不能滿足各個(gè)用戶的要求。本階段結(jié)束后,應(yīng)提交測試報(bào)告,對選定的測試數(shù)據(jù)進(jìn)行說明,看看測試案例和結(jié)果能不能對的上。測試發(fā)現(xiàn)問題后,需要進(jìn)行調(diào)試來找出哪地方錯了,錯哪兒了,并加以改正?;谡麄€(gè)系統(tǒng)需求規(guī)格的黑盒測試應(yīng)能夠?qū)⑾到y(tǒng)的所有組件都包含進(jìn)去。系統(tǒng)測試是對本產(chǎn)品所有功能模塊進(jìn)行測試,發(fā)現(xiàn)其中不滿足用戶需求或者不能實(shí)現(xiàn)與預(yù)期功能的部分并加以改正。一個(gè)計(jì)劃并不總是完美的。如果不能及時(shí)發(fā)現(xiàn)和修改,小錯誤最終也會演變成大錯誤,從而導(dǎo)致系統(tǒng)崩潰。所以進(jìn)行軟件測試的必要性就出來了,為了盡可能將程序中錯誤找出來并修改,使程序運(yùn)行穩(wěn)定,從而使企事業(yè)單位的工作不受影響。最終為了讓軟件開發(fā)能夠與客戶需求相一致,并且綜合高效。6.5測試用例6.5.1門禁接口測試1.傳遞正確的信息如圖增加的記錄2.傳遞錯誤的信息如圖增加的記錄6.5.2門禁的管理測試添加記錄修改記錄刪除門禁6.5.3門禁卡的管理測試添加修改刪除6.5.5統(tǒng)計(jì)次數(shù)的測試6.6本章小結(jié)進(jìn)行測試能夠發(fā)現(xiàn)程序在哪些方面還存在不足,以及坐標(biāo)的精準(zhǔn)度是否還需要進(jìn)一步的調(diào)整。在本系統(tǒng)進(jìn)行測試時(shí),首先要編寫測試用例。對于一些系統(tǒng)的測試方法還并不是很熟悉,在這期間我也查閱了軟件測試的相關(guān)數(shù)據(jù)來進(jìn)行對之前的知識的鞏固和完善。總結(jié)經(jīng)過了這幾個(gè)月的對于畢業(yè)設(shè)計(jì)的研究和學(xué)習(xí),如今已經(jīng)接近尾聲了。在去年的12月份,我開始進(jìn)行我的畢業(yè)設(shè)計(jì)工作,時(shí)至今日,論文以及基本完成。從最初的對畢業(yè)設(shè)計(jì)的茫然無知,到慢慢的熟悉一點(diǎn),接著到對技術(shù)的靈活掌握,最終完成了整個(gè)的畢業(yè)設(shè)計(jì),這么一整個(gè)過程充滿中對知識的探索,對技術(shù)的追求,是熬了很多個(gè)夜晚,經(jīng)歷了惱人而又有趣的bug修改,才有了如今拿得出手的畢業(yè)設(shè)計(jì)。再回想其中經(jīng)歷的很多事情,確實(shí)有很多值得回憶。我的畢業(yè)設(shè)計(jì)課題來自于老師的項(xiàng)目組,這個(gè)課題具有著一定的創(chuàng)新性,也是對個(gè)人能力的一種考驗(yàn)。一開始的時(shí)候感到有點(diǎn)絕望,因?yàn)樯婕暗降膇Beacon技術(shù)之前并未接觸過,知識的盲點(diǎn)是一種對自己的一種挑戰(zhàn)。但是經(jīng)過導(dǎo)師的一些指導(dǎo),還是獲得了很清晰的學(xué)習(xí)路線。從圖書
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年溫州永嘉縣茗岙鄉(xiāng)衛(wèi)生院招聘勞務(wù)派遣人員1人模擬試卷及答案詳解(典優(yōu))
- 2025安徽蕪湖經(jīng)濟(jì)技術(shù)開發(fā)區(qū)公辦幼兒園招聘26人模擬試卷(含答案詳解)
- 2025昆明市公安局公開招聘文職輔警(16人)模擬試卷及參考答案詳解一套
- 2025貴州劍河縣農(nóng)村集體經(jīng)濟(jì)組織選聘職業(yè)經(jīng)理人(總經(jīng)理)17人考前自測高頻考點(diǎn)模擬試題附答案詳解(考試直接用)
- 2025遼寧錦州醫(yī)科大學(xué)開展“錦醫(yī)英才計(jì)劃”教學(xué)名師遴選工作考前自測高頻考點(diǎn)模擬試題及一套答案詳解
- 2025年河北承德平泉市公開招聘社區(qū)工作者97人模擬試卷及答案詳解(奪冠系列)
- 2025年甘肅省蘭州大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院人才招聘考前自測高頻考點(diǎn)模擬試題及答案詳解(有一套)
- 2025年四川省成都市青白江區(qū)七所“兩自一包”公辦學(xué)校招聘教師(152人)考前自測高頻考點(diǎn)模擬試題及答案詳解(歷年真題)
- 2025年溫州南白象街道社區(qū)衛(wèi)生服務(wù)中心面向社會公開招聘1人模擬試卷及完整答案詳解
- 2025江蘇鎮(zhèn)江市衛(wèi)生健康委員會所屬鎮(zhèn)江市第一人民醫(yī)院招聘工作人員50人模擬試卷及答案詳解(易錯題)
- 《國有資產(chǎn)評估管理》課件
- 山東省地震安全性評價(jià)收費(fèi)項(xiàng)目及標(biāo)準(zhǔn)
- 復(fù)旦大學(xué)入學(xué)教育考試答案
- 中國馬克思主義與當(dāng)代-第三講課件
- 拼多多民事起訴狀模板
- 冠心病合并急性心律失常的緊急處理
- 2022-2023學(xué)年湖南省部分學(xué)校高三下學(xué)期第一次聯(lián)考英語試卷含詳解
- 飛利浦品牌形象指南2008基礎(chǔ)原則
- 結(jié)胸證-傷寒學(xué)
- 第一季度胸痛中心典型病例分析會
- 新大遙感地學(xué)分析講義第7章 植被遙感
評論
0/150
提交評論