版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
緒論研究背景目前,很多國內(nèi)寵物醫(yī)院信息管理一般采用純手工管理。這種方法的弊端在于參與管理的人員文化水平不一,字跡不一,互相之間會導(dǎo)致信息傳達(dá)不便,而.且紙質(zhì)信息傳載媒體有著一個很大的弱點就是容易損壞,造成信息丟失。在當(dāng)前的信息化時代中,任何寵物醫(yī)院,都需要一個實用的寵物醫(yī)院信息管理系統(tǒng)來規(guī)范寵物醫(yī)院信息的管理,這將會大大提高寵物醫(yī)院的管理水平,優(yōu)化資源,實現(xiàn)效益的最大化?,F(xiàn)在國內(nèi)也有一些寵物醫(yī)院信息管理管理的軟件,采用的技術(shù)也是多種多樣,但大多數(shù)寵物醫(yī)院信息管理系統(tǒng)主要用于大型寵物醫(yī)院的關(guān)鍵部門。至于小型寵物醫(yī)院,利用寵物醫(yī)院信息管理系統(tǒng)管理日常業(yè)務(wù)的并不多。針對國內(nèi)對寵物醫(yī)院信息管理軟件的巨大需要和基本需要,一個好的寵物醫(yī)院信息管理軟件,必須功能齊全,操作簡便,向用戶展示簡單明了的操作界面。在完善功能的同時又必須兼顧系統(tǒng)的靈活性,安全性。寵物醫(yī)院管理系統(tǒng)的優(yōu)勢主要表現(xiàn)在三個方面:(1)寵物醫(yī)院信息管理無紙化,環(huán)保又方便。傳統(tǒng)的寵物醫(yī)院信息管理方式,都是經(jīng)由員工手工記錄存檔。這種傳統(tǒng)的紙質(zhì)寵物醫(yī)院信息管理管理,-是會有很大的體力消耗,二是在精力上也是不小的付出。而無紙化寵物醫(yī)院信息管理,只需在電腦前點點鼠標(biāo),在體力上幾乎沒有多大的消耗,而且在環(huán)保、效率、針對性日常業(yè)務(wù)方面做得要比傳統(tǒng)的寵物醫(yī)院信息管理管理科學(xué)得多。(2)科學(xué)管理,安全可靠。傳統(tǒng)的寵物醫(yī)院信息管理管理方式,經(jīng)常會由于各種原因,產(chǎn)生信息的丟失或是污損,給寵物醫(yī)院信息管理和日常業(yè)務(wù)帶來很大的不便。而對于寵物醫(yī)院信息管理系統(tǒng),只需做好系統(tǒng)數(shù)據(jù)庫的保護(hù),以上問題可以迎刃而解了。(3)簡化工作,促進(jìn)其他方面的綜合發(fā)展。由于寵物醫(yī)院信息管理系統(tǒng)的介入運行,可以使醫(yī)生騰出更多的時間,做更多針對性的個性化醫(yī)療服務(wù),從而使每個病人都有機會享受更多的服務(wù)。研究現(xiàn)狀隨著人們的生活水平的不斷提高、物質(zhì)生活不斷豐富、精神追求不斷提升,人們也越來親睞于飼養(yǎng)寵物。近年來寵物市場的急劇發(fā)展,也讓更多的人們關(guān)注飼養(yǎng)寵物的益處,特別是年輕人工作愈發(fā)繁重的背景下,留守家中的老年人變得越來越孤獨,飼養(yǎng)寵物不失為排解孤獨的一種有效途徑。近幾年計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)成了人們?nèi)粘I钪兄匾冶夭豢缮俚囊徊糠?,很多人想要購買寵物卻不知道哪種寵物適合自己;想要了解哪些寵物的飼養(yǎng)習(xí)性卻無處咨詢;想弄清楚哪些寵物適合各年齡段的人卻因?qū)嶓w寵物醫(yī)院路途遙遠(yuǎn)等原因而作罷。于是,歡歡寵物醫(yī)院管理系統(tǒng)應(yīng)運而生。由于其方便性、快捷性、可靠性,已成為眾多寵物愛好者經(jīng)常光顧的地方。國內(nèi)外的歡歡寵物醫(yī)院管理系統(tǒng)眾多,雖然這些系統(tǒng)運用的技術(shù)有所不同,但是他們實現(xiàn)的功能和目的都有一個共同點,對社會的影響、給人們帶來的方便是一樣的。他們都能滿足絕大多數(shù)人的需求,使得分散于各地的寵物飼養(yǎng)者們能找到這樣一個虛擬的寵物醫(yī)院,使得大家不用再為如何領(lǐng)養(yǎng)、掛號、愛護(hù)自己的愛寵而發(fā)愁?,F(xiàn)在國內(nèi)外也有很多寵物醫(yī)院信息管理的軟件,采用的技術(shù)也是多種多樣,如基于MySQL和Springboot模式,但大多數(shù)寵物醫(yī)院信息管理系統(tǒng)主要用于大型寵物醫(yī)院的關(guān)鍵部門。至于小型寵物醫(yī)院,利用寵物醫(yī)院信息管理系統(tǒng)組織管理的并不多。針對國內(nèi)外對寵物醫(yī)院信息管理的巨大需要和基本需要,一個好的寵物醫(yī)院信息管理系統(tǒng),必須功能齊全,操作簡便,向用戶展示友善的操作界面。在完善功能的同時又必須兼顧系統(tǒng)的靈活性,安全性,健壯性。各個歡歡寵物醫(yī)院管理系統(tǒng)在功能上會存在差異,但都在不斷完善,靜態(tài)網(wǎng)站的寵物醫(yī)院也在向動態(tài)網(wǎng)站的寵物醫(yī)院過渡。隨著Internet的不斷快速發(fā)展,靜態(tài)Web站點的開發(fā)與維護(hù)越來越困難,一方面是信息不斷更新和增加,不得不讓站點維護(hù)人員經(jīng)常修改頁面內(nèi)容;另一方面靜態(tài)網(wǎng)頁不能及時的與瀏覽者進(jìn)行有效交互,使瀏覽者感覺到乏味。所以開發(fā)動態(tài)網(wǎng)頁是很有必要的。動態(tài)網(wǎng)頁具有交互性,它能根據(jù)用戶的要求和選擇而動態(tài)改變和響應(yīng)。動態(tài)數(shù)據(jù)訪問就是動態(tài)網(wǎng)頁的特征,當(dāng)瀏覽器訪問服務(wù)器網(wǎng)頁時,其Web應(yīng)用程序才訪問數(shù)據(jù)庫,實時檢索數(shù)據(jù)庫,響應(yīng)客戶要求。本文的組織結(jié)構(gòu)六個章節(jié)共同組成了本文研究及設(shè)計內(nèi)容,包括:第一章:緒論。本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。第二章:相關(guān)技術(shù)介紹。主要介紹Springboot框架、Java嵌入式腳本語言、B/S模式等。第三章:系統(tǒng)分析。包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個方面分析系統(tǒng)是否可以實現(xiàn)。第四章:系統(tǒng)設(shè)計。本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細(xì)設(shè)計和一些主要功能模塊的設(shè)計說明。第五章:系統(tǒng)實現(xiàn)。將本系統(tǒng)分為前提的開發(fā)工具介紹和后期的功能代碼實現(xiàn)。第六章:系統(tǒng)測試。系統(tǒng)完成后,根據(jù)各個模塊的測試用例才對各個模塊進(jìn)行功能測試。相關(guān)技術(shù)介紹開發(fā)技術(shù)說明本系統(tǒng)前端部分基于MVVM模式進(jìn)行開發(fā),采用B/S模式,后端部分基于Java的springboot框架進(jìn)行開發(fā)。前端部分:前端框架采用了比較流行的漸進(jìn)式JavaScript框架Vue.js。使用Vue-Router和Vuex實現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實現(xiàn)前后端通信,ElementUI組件庫使頁面快速成型,項目前端通過柵格布局實現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。后端部分:采用springboot作為開發(fā)框架,同時集成MyBatis、Redis等相關(guān)技術(shù)。B/S體系工作原理B/S架構(gòu)采取瀏覽器請求,服務(wù)器響應(yīng)的工作模式。用戶可以通過瀏覽器去訪問Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動畫、視頻點播和聲音等信息;而每一個Web服務(wù)器又可以通過各種方式與數(shù)據(jù)庫服務(wù)器連接,大量的數(shù)據(jù)實際存放在數(shù)據(jù)庫服務(wù)器中;從Web服務(wù)器上下載程序到本地來執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫服務(wù)器來解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個巨大的網(wǎng),即全球網(wǎng)。而各個企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。在B/S模式中,用戶是通過瀏覽器針對許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請求訪問的,瀏覽器的請求通過服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請求全部都是由WebServer完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。springboot框架介紹Spring框架是Java平臺上的一種開源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實現(xiàn)控制反轉(zhuǎn)來實現(xiàn)管理對象生命周期容器化,利用面向切面編程進(jìn)行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪問,提供大量優(yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項目維護(hù)和測試,它提供了一種通過Java的反射機制對Java對象進(jìn)行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發(fā)者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關(guān)注點進(jìn)行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務(wù)管理、遠(yuǎn)程訪問等功能均可以通過使用SpringAOP技術(shù)實現(xiàn)。Spring的事務(wù)管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點一起工作,并且?guī)缀蹩梢栽贘ava平臺的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過事務(wù)模板、XML或Java注解進(jìn)行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認(rèn)為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。MySQL簡介MySQL是一個開放的、快速的、多線程的SQL關(guān)系型數(shù)據(jù)庫服務(wù)器。由于其體積小、免費、運行速度快以及可以通過相關(guān)免費的軟件來對MySql數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)結(jié)構(gòu)信息等等優(yōu)點。受廣大中等、小型企業(yè)所喜愛并占據(jù)了很大地位。本系統(tǒng)在數(shù)據(jù)庫方面選用MySQL,并通過Nacivat來進(jìn)行MySql數(shù)據(jù)庫的管理。在Mysql的安裝過程中,最需要注意的就是數(shù)據(jù)庫的編碼問題,所以在安裝數(shù)據(jù)庫時需要設(shè)置數(shù)據(jù)庫的編碼為Utf-8,與前臺頁面和服務(wù)器的編碼相一致。JavaScript運行模式JavaScript是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現(xiàn)自身的功能的。1.8.1是一種解釋性腳本語言(代碼不進(jìn)行預(yù)編譯)。1.8.2主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為。1.8.3可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。1.8.4跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。1.8.5JavaScript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運算符及程序的基本程序框架。JavaScript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。
系統(tǒng)分析可行性分析法律可行性分析開發(fā)軟件有沒有觸犯法律,這涉及到軟件或者系統(tǒng)能不能發(fā)布的問題。如果觸犯了法律,就必將會受到法律的制裁。常見法律問題就是軟件抄襲問題,若是抄襲別人軟件,將會受到嚴(yán)厲懲罰。技術(shù)可行性分析軟件產(chǎn)業(yè)經(jīng)過多年的發(fā)展,現(xiàn)在已經(jīng)達(dá)到了很大的規(guī)模,從事軟件開發(fā)的專業(yè)人員不計其數(shù),軟件產(chǎn)業(yè)的重要性已經(jīng)上升到了影響和推動國民經(jīng)濟(jì)發(fā)展的核心地位。本系統(tǒng)基于的架構(gòu),目前技術(shù)已經(jīng)非常的成熟,是不存在技術(shù)上面難以實現(xiàn)的麻煩。經(jīng)濟(jì)可行性分析開發(fā)軟件所需的時間、人力和物力成本,開發(fā)完成后的收益如何,從投資回報的角度軟件所需功能在現(xiàn)有經(jīng)濟(jì)條件能不能實現(xiàn)等進(jìn)行深入的考慮,都符合實際的要求。所以歡歡寵物醫(yī)院管理系統(tǒng)具有經(jīng)濟(jì)可行性和實用性,可以節(jié)約管理成本功能需求分析歡歡寵物醫(yī)院管理系統(tǒng)主要是為了更加地完善寵物醫(yī)療的服務(wù)情況,對用戶的信息、寵物信息和用戶管理、寵物熱點管理、會員留言管理、疫苗藥物管理、訂單列表管理、遺棄寵物管理、寵物飼料情況、招聘員工、志愿者申請等提供了方便的機制。本系統(tǒng)有多類使用者,分別是管理員和用戶注冊。以下是從這兩種用戶的角度分別介紹本系統(tǒng)所要實現(xiàn)的功能。用戶:注冊:首先檢查用戶名和郵箱是否存在,如不存在即可進(jìn)行注冊,并將用戶輸入的密碼進(jìn)行MD5加密,注冊成功后提示注冊成功,并將用戶信息保存到數(shù)據(jù)庫中。登錄:使用歡歡寵物醫(yī)院管理系統(tǒng)前是需要用戶登錄個人賬號。醫(yī)生介紹:用戶登錄寵物醫(yī)院管理系統(tǒng)首頁時,可以瀏覽醫(yī)生介紹信息,根據(jù)不同地醫(yī)生可以查看每個不同醫(yī)生介紹信息等。寵物百科:用戶可以瀏覽寵物百科可以自行搜索某樣寵物列表相關(guān)評論詳情。遺棄預(yù)約掛號:用戶可以查看預(yù)約信息表的掛號狀態(tài),可以根據(jù)預(yù)約狀態(tài)發(fā)起掛號申請:包括填寫訂單號、醫(yī)生工號、醫(yī)生姓名、科室、掛號費、用戶名。管理員:用戶管理:對用戶進(jìn)行管理,用戶的注冊,包括用戶昵稱、用戶名、用戶的寵物信息(寵物類別、寵物性別、年齡等)用戶的賬號信息:醫(yī)生介紹信息管理:對醫(yī)生介紹信息進(jìn)行維護(hù),添加、刪除、修改信息。預(yù)約掛號信息管理:對預(yù)約掛號信息進(jìn)行維護(hù),添加、刪除、修改信息。病歷記錄信息管理:對病歷記錄信息進(jìn)行維護(hù),添加、刪除、修改信息。醫(yī)療器械信息管理:對醫(yī)療器械信息進(jìn)行維護(hù),添加、刪除、修改信息。維修上報信息管理:對維修上報信息進(jìn)行維護(hù),添加、刪除、修改信息。非功能需求分析系統(tǒng)非功能需求有非常多,比如性能需求、可承載最大用戶數(shù)、穩(wěn)定性、易用性需求等。本系統(tǒng)分析時考慮到易用性需求,因為系統(tǒng)是給人使用的,所以必須充分從用戶的角度出發(fā),考慮用戶體驗,使系統(tǒng)易理解易上手易操作。用例分析1.普通用戶主要使用系統(tǒng)的寵物熱點和歡歡寵物醫(yī)院管理系統(tǒng),下圖所示為普通用戶的用例圖3-1普通用戶用例圖2.管理員主要負(fù)責(zé)用戶管理、寵物醫(yī)療管理、商品管理、商品訂單管理、寵物領(lǐng)養(yǎng),下圖所示描述管理員的用例圖。圖3-2管理員用例圖業(yè)務(wù)流程分析系統(tǒng)業(yè)務(wù)流程圖如下所示。圖3-3系統(tǒng)業(yè)務(wù)流程圖業(yè)務(wù)流程圖(TFD)通過一些特定的符號描述業(yè)務(wù)的處理過程,它重點強調(diào)業(yè)務(wù)過程中每一項處理活動和具體業(yè)務(wù)部門的關(guān)系,選擇部分模塊進(jìn)行具體描述。重點對本系統(tǒng)整體業(yè)務(wù)中最為主要的寵物交易及訂單業(yè)務(wù)進(jìn)行描述,用戶進(jìn)入歡歡寵物醫(yī)院管理系統(tǒng)后進(jìn)行各種模塊信息的瀏覽,選擇想要預(yù)約掛號,對醫(yī)生介紹,另外,管理人員進(jìn)入后端管理,以執(zhí)行該訂單信息控制模塊的相關(guān)管理方法,并在解決后向客戶提供反饋機制。數(shù)據(jù)流程分析如下為系統(tǒng)的頂層數(shù)據(jù)流圖,外部實體有用戶和管理員,分別對系統(tǒng)輸入數(shù)據(jù),從而得到要輸出的數(shù)據(jù)。圖3-4系統(tǒng)頂層數(shù)據(jù)流圖如下圖所示為系統(tǒng)底層數(shù)據(jù)流圖。圖3-5系統(tǒng)底層數(shù)據(jù)流圖歡歡寵物醫(yī)院管理系統(tǒng)底層數(shù)據(jù)流圖主要描述系統(tǒng)底層模塊的數(shù)據(jù)流、數(shù)據(jù)載體、數(shù)據(jù)處理、外部實體的具體交互。本系統(tǒng)就是管理員和普通用戶在用戶管理、預(yù)約掛號、病歷記錄、醫(yī)療器械、維修上報等模塊上的數(shù)據(jù)交互。系統(tǒng)設(shè)計系統(tǒng)架構(gòu)設(shè)計本系統(tǒng)架構(gòu)設(shè)計主要分為可以3層,主要有Web層,業(yè)務(wù)層,Model層。其中web層還包括View層和Controller層,Model層包括元數(shù)據(jù)擴展層和數(shù)據(jù)訪問層。圖4-1系統(tǒng)架構(gòu)圖系統(tǒng)功能結(jié)構(gòu)為了將系統(tǒng)從“做什么”落實到“怎么做”,基于系統(tǒng)設(shè)計原則,對系統(tǒng)功能進(jìn)行更適合編碼實現(xiàn)的功能劃分。根據(jù)上圖的系統(tǒng)架構(gòu)設(shè)計,整理出規(guī)范的系統(tǒng)功能結(jié)構(gòu)圖,為系統(tǒng)的實現(xiàn)編碼做好準(zhǔn)備。如下圖所示為系統(tǒng)功能結(jié)構(gòu)圖。圖4-2系統(tǒng)功能結(jié)構(gòu)圖功能模塊設(shè)計用戶管理針對所有用戶和管理員。未注冊用戶點擊注冊,進(jìn)入注冊頁面填寫新用戶信息,得到自定義生成賬號后,注冊完成。未注冊用戶注冊的活動圖如下圖所示。圖4-3未注冊用戶注冊活動圖用戶可進(jìn)行登錄使用更多功能,首先進(jìn)入用戶登錄界面,輸入用戶賬號和密碼,后臺對賬號和密碼信息進(jìn)行核對驗證,驗證成功則頁面直接顯示登錄用戶昵稱代表登錄成功,否則返回用戶登錄界面。用戶登錄活動圖如下圖。圖4-4用戶登錄活動圖用戶登錄后,進(jìn)入功能頁面,可對自己的信息進(jìn)行管理,包括個人信息,預(yù)約掛號、病歷記錄、在線咨詢。用戶使用功能活動圖如下圖所示。圖4-5用戶使用功能活動圖用戶功能界面可對自己的密碼進(jìn)行修改。進(jìn)入修改密碼界面后核對當(dāng)前密碼,核對成功后填寫新密碼。修改密碼活動圖如下圖所示。圖4-6修改密碼活動圖數(shù)據(jù)庫設(shè)計歡歡寵物醫(yī)院管理系統(tǒng)采用的數(shù)據(jù)庫是MySQL,該部分將根據(jù)系統(tǒng)需求和設(shè)計,設(shè)計合理的數(shù)據(jù)庫。本系統(tǒng)考慮到之后系統(tǒng)的擴展集群,數(shù)據(jù)庫將不使用外鍵。此外,不用外鍵時數(shù)據(jù)管理也較為簡單,操作更加方便,性能更高。E-R圖E-R圖,更加直觀的告訴開發(fā)人員系統(tǒng)的各個數(shù)據(jù)的屬性,各個數(shù)據(jù)之間的聯(lián)系,各個數(shù)據(jù)的類型。能通過該模型更直觀地了解數(shù)據(jù)庫的設(shè)計,并根據(jù)對其逐漸改善。本系統(tǒng)圖設(shè)計,如下圖所示。圖4-7系統(tǒng)E-R圖表結(jié)構(gòu)設(shè)計本系統(tǒng)根據(jù)第三范式的思想設(shè)計數(shù)據(jù)庫,減少最大程度的冗余,總共建立有多個表,用戶注冊表、管理員表、招聘員工表、寵物信息表、遺棄寵物表、活動中心表、會員信息表、疫苗藥物表、志愿者申請表等。表結(jié)構(gòu)如下所示。registered_user表:名稱類型長度不是null主鍵注釋registered_user_idint11是是注冊用戶IDuser_namevarchar64是否用戶名examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦user_idint11是否用戶IDcreate_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間online_consultation表:名稱類型長度不是null主鍵注釋online_consultation_idint11是是在線咨詢IDdoctor_job_numberint11否否醫(yī)生工號name_of_doctorvarchar64否否醫(yī)生姓名departmentvarchar64否否科室user_nameint11否否用戶名pet_varietyvarchar64否否寵物品種consulting_questionstext0否否咨詢問題doctor_replytext0否否醫(yī)生回復(fù)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間medical_record表:名稱類型長度不是null主鍵注釋medical_record__idint11是是病歷記錄IDorder_numbervarchar64否否訂單號doctor_job_numberint11否否醫(yī)生工號name_of_doctorvarchar64否否醫(yī)生姓名departmentvarchar64否否科室user_nameint11否否用戶名pet_varietyvarchar64否否寵物品種pet_agevarchar64否否寵物年齡symptom_descriptiontext0否否癥狀描述clinical_diagnosistext0否否臨床診斷drug_prescriptiontext0否否藥物處方recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間medical_apparatus_and_instruments表:名稱類型長度不是null主鍵注釋medical_apparatus_and_instruments_idint11是是醫(yī)療器械IDdevice_numbervarchar64否否器械編號device_namevarchar64否否器械名稱purchase_datedate0否否購入日期manufactorvarchar64否否廠家statevarchar64否否狀態(tài)maintenance_recordtext0否否維修記錄recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間maintenance_report表:名稱類型長度不是null主鍵注釋maintenance_report_idint11是是維修上報IDdevice_numbervarchar64否否器械編號device_namevarchar64否否器械名稱related_picturesvarchar255否否相關(guān)圖片doctor_job_numberint11否否醫(yī)生工號fault_descriptiontext0否否故障描述examine_statevarchar16是否審核狀態(tài)examine_replyvarchar255否否審核回復(fù)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間abandoned_pets表:名稱類型長度不是null主鍵注釋have_an_appointment_with_a_doctor_idint11是是預(yù)約掛號IDorder_numbervarchar64否否訂單號doctor_job_numberint11否否醫(yī)生工號name_of_doctorvarchar64否否醫(yī)生姓名departmentvarchar64否否科室registration_feevarchar64否否掛號費user_nameint11否否用戶名pet_varietyvarchar64否否寵物品種pet_agevarchar64否否寵物年齡pet_sexvarchar64否否寵物性別contact_numbervarchar64否否聯(lián)系電話pay_statevarchar16是否支付狀態(tài)pay_typevarchar16否否支付類型recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間doctor_introduction表:名稱類型長度不是null主鍵注釋doctor_introduction_idint11是是醫(yī)生介紹IDdoctor_job_numberint11否否醫(yī)生工號name_of_doctorvarchar64否否醫(yī)生姓名gendervarchar64否否性別agevarchar64否否年齡photovarchar255否否照片departmentvarchar64否否科室registration_feeint11否否掛號費areas_of_expertisetext0否否擅長領(lǐng)域scheduling_timetext0否否排班時間doctor_introductionlongtext0否否醫(yī)生介紹hitsint11是否點擊數(shù)praise_lenint11是否點贊數(shù)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間doctor表:名稱類型長度不是null主鍵注釋doctor_idint11是是醫(yī)生IDdoctor_job_numbervarchar64是否醫(yī)生工號name_of_doctorvarchar64否否醫(yī)生姓名examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦user_idint11是否用戶IDcreate_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間系統(tǒng)實現(xiàn)開發(fā)工具系統(tǒng)中應(yīng)用的開發(fā)工具總結(jié)如下表所示。表5-1開發(fā)工具名稱工具版本操作系統(tǒng)IDE(IntegratedDevelopmentEnvironment)WindowsEclipse7/8/102017服務(wù)器Tomcat9.10.7JDK(JavaDevelopmentKit)JDKJavaSE8.0(1.8.0)數(shù)據(jù)庫瀏覽器界面工具M(jìn)ySQL谷歌Photoshop5.76.02016注冊模塊未注冊用戶在用戶注冊界面uerRegister.jsp,輸入新用戶信息,點擊注冊后,新用戶信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用addUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表插入用戶信息,由于用戶賬號是自動生成的,若成功則反饋注冊成功,并提示新用戶的用戶賬號;若失敗則回到登錄界面,并顯示登錄失敗。注冊界面如下所示。圖5-1注冊界面用戶注冊關(guān)鍵代碼如下所示。/***注冊*@paramuser*@return*/@PostMapping("register")publicMap<String,Object>signUp(@RequestBodyUseruser){//查詢用戶Map<String,String>query=newHashMap<>();query.put("username",user.getUsername());Listlist=service.select(query,newHashMap<>()).getResultList();if(list.size()>0){returnerror(30000,"用戶已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);returnsuccess(1);}/***用戶ID:[0,8388607]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)*/@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")privateIntegeruserId;/***賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)*/@Basic@Column(name="state")privateIntegerstate;/***所在用戶組:[0,32767]決定用戶身份和權(quán)限*/@Basic@Column(name="user_group")privateStringuserGroup;/***上次登錄時間:*/@Basic@Column(name="login_time")privateTimestamploginTime;/***手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時*/@Basic@Column(name="phone")privateStringphone;/***手機認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)*/@Basic@Column(name="phone_state")privateIntegerphoneState;/***用戶名:[0,16]用戶登錄時所用的賬戶名稱*/@Basic@Column(name="username")privateStringusername;/***昵稱:[0,16]*/@Basic@Column(name="nickname")privateStringnickname;/***密碼:[0,32]用戶登錄所需的密碼,由6-16位數(shù)字或英文組成*/@Basic@Column(name="password")privateStringpassword;/***郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時*/@Basic@Column(name="email")privateStringemail;/***郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)*/@Basic@Column(name="email_state")privateIntegeremailState;/***頭像地址:[0,255]*/@Basic@Column(name="avatar")privateStringavatar;/***創(chuàng)建時間:*/@Basic@Column(name="create_time")@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateTimestampcreateTime;@Basic@TransientprivateStringcode;}登錄/注銷模塊用戶在首頁點擊登錄,進(jìn)入用戶登錄界面uerLogin.jsp,輸入用戶賬號和密碼,點擊登錄,用戶賬號和密碼信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用userLogin(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表搜索該用戶賬號與密碼,將最終結(jié)果反饋到前端。若成功則回到首頁;用戶成功登錄,若失敗則回到登錄界面,并顯示登錄失敗。用戶點擊注銷,清空瀏覽器session值,然后返回登錄頁或者首頁。登錄界面如下所示。圖5-2登錄界面登錄界面關(guān)鍵代碼如下所示。/***登錄*@paramdata*@paramhttpServletRequest*@return*/@PostMapping("login")publicMap<String,Object>login(@RequestBodyMap<String,String>data,HttpServletRequesthttpServletRequest){("[執(zhí)行登錄接口]");Stringusername=data.get("username");Stringemail=data.get("email");Stringphone=data.get("phone");Stringpassword=data.get("password");ListresultList=null;Map<String,String>map=newHashMap<>();if(username!=null&&"".equals(username)==false){map.put("username",username);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(email!=null&&"".equals(email)==false){map.put("email",email);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(phone!=null&&"".equals(phone)==false){map.put("phone",phone);resultList=service.select(map,newHashMap<>()).getResultList();}else{returnerror(30000,"賬號或密碼不能為空");}if(resultList==null||password==null){returnerror(30000,"賬號或密碼不能為空");}//判斷是否有這個用戶if(resultList.size()<=0){returnerror(30000,"用戶不存在");}UserbyUsername=(User)resultList.get(0);Map<String,String>groupMap=newHashMap<>();groupMap.put("name",byUsername.getUserGroup());ListgroupList=userGroupService.select(groupMap,newHashMap<>()).getResultList();if(groupList.size()<1){returnerror(30000,"用戶組不存在");}UserGroupuserGroup=(UserGroup)groupList.get(0);//查詢用戶審核狀態(tài)if(!StringUtils.isEmpty(userGroup.getSourceTable())){Stringsql="selectexamine_statefrom"+userGroup.getSourceTable()+"WHEREuser_id="+byUsername.getUserId();Stringres=String.valueOf(service.runCountSql(sql).getSingleResult());if(res==null){returnerror(30000,"用戶不存在");}if(!res.equals("已通過")){returnerror(30000,"該用戶審核未通過");}}//查詢用戶狀態(tài)if(byUsername.getState()!=1){returnerror(30000,"用戶非可用狀態(tài),不能登錄");}Stringmd5password=service.encryption(password);if(byUsername.getPassword().equals(md5password)){//存儲Token到數(shù)據(jù)庫AccessTokenaccessToken=newAccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-",""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);//返回用戶信息JSONObjectuser=JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token",accessToken.getToken());JSONObjectret=newJSONObject();ret.put("obj",user);returnsuccess(ret);}else{returnerror(30000,"賬號或密碼不正確");}}用戶模塊個人資料模塊登錄用戶在首頁點擊進(jìn)入用戶中心userCenter.jsp,再點擊修改個人信息按鈕進(jìn)入userChangeInfo.jsp界面,系統(tǒng)根據(jù)session中存儲的目前登錄的用戶的賬號,向控制層userAction發(fā)送請求,搜索當(dāng)前用戶信息,userAction向userDAOImp調(diào)用queryByUserId(user),向數(shù)據(jù)庫的用戶表搜索當(dāng)前用戶信息并將用戶信息以對象的形式層層返回到userChangeInfo.jsp界面,顯示出當(dāng)前用戶的個人信息。若用戶要對個人信息進(jìn)行修改,則通過修改當(dāng)前信息之后點擊確認(rèn),向控制層userAction發(fā)送更改后的用戶信息,調(diào)用changeUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表更新用戶信息,若成功則反饋注冊成功,則返回的userChangeInfo.jsp界面被更改成功;若失敗則顯示修改失敗。寵物百科模塊用戶在登錄狀態(tài)下瀏覽寵物百科時可將該寵物百科加入寵物百科,從session中取出該用戶的信息,點擊加入寵物百科后前臺發(fā)起請求,將對應(yīng)的寵物shuliang、id參數(shù)信息從前臺傳遞GoumaiController類里,匹配到add()方法,add()方法調(diào)用GoumaiServiceImpl類的add()方法。寵物百科界面如下所示。圖5-4寵物百科界面醫(yī)生介紹模塊用戶在登錄狀態(tài)下瀏覽醫(yī)生介紹信息時可將該醫(yī)生介紹信息加入收藏記錄,從session中取出該用戶的信息,點擊加入醫(yī)生介紹信息收藏前臺發(fā)起請求,將對應(yīng)的醫(yī)生介紹信息shichang、id參數(shù)信息從前臺傳遞XiadanController類里,匹配到add()方法,add()方法調(diào)用XiadanServiceImpl類的add()方法。醫(yī)生介紹信息界面如下所示。圖5-5醫(yī)生介紹界面管理員模塊密碼修改模塊管理員選擇個人中心的修改本人密碼。通過密碼框輸入現(xiàn)密碼和2次新密碼,如果現(xiàn)密碼錯誤,則提示修改失敗。如果2次新密碼不一致,則提示修改失敗。都沒問題的話,系統(tǒng)提示修改成功,并返回登錄界面。個人信息界面圖如下所示。圖5-5個人信息界面密碼修改界面如下所示。圖5-6密碼修改界面密碼修改關(guān)鍵代碼如下所示。/***修改密碼*@paramdata*@paramrequest*@return*/@PostMapping("change_password")publicMap<String,Object>change_password(@RequestBodyMap<String,String>data,HttpServletRequestrequest){//根據(jù)Token獲取UserIdStringtoken=request.getHeader("x-auth-token");IntegeruserId=tokenGetUserId(token);//根據(jù)UserId和舊密碼獲取用戶Map<String,String>query=newHashMap<>();Stringo_password=data.get("o_password");query.put("user_id",String.valueOf(userId));query.put("password",service.encryption(o_password));Queryret=service.count(query,service.readConfig(request));Listlist=ret.getResultList();Objects=list.get(0);intcount=Integer.parseInt(list.get(0).toString());if(count>0){//修改密碼Map<String,Object>form=newHashMap<>();form.put("password",service.encryption(data.get("password")));service.update(query,service.readConfig(request),form);returnsuccess(1);}returnerror(10000,"密碼修改失?。?);}醫(yī)生管理模塊根據(jù)需求,需要對醫(yī)生進(jìn)行添加、刪除或修改詳情信息。刪除或修改醫(yī)生時,系統(tǒng)根據(jù)醫(yī)生的狀態(tài)判定為可刪除狀態(tài)下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達(dá)后臺,還會先查詢醫(yī)生狀態(tài)再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉(zhuǎn)到修改信息的頁面,重新填寫好數(shù)據(jù)后,數(shù)據(jù)提交到后臺會對數(shù)據(jù)庫中相應(yīng)的記錄做出修改。添加醫(yī)生時,會給出數(shù)據(jù)填寫的頁面,該頁面根據(jù)填寫好的醫(yī)生編號同樣會事先發(fā)送Ajax請求查詢編號是否已存在,數(shù)據(jù)填寫好之后提交到后臺,會調(diào)用相關(guān)服務(wù)在數(shù)據(jù)庫中插入記錄。醫(yī)生頁面設(shè)計效果如下圖所示。圖5-7醫(yī)生管理界面預(yù)約掛號管理模塊預(yù)約掛號功能需要考慮高并發(fā),防止出現(xiàn)疫苗重復(fù)預(yù)約、掛號狀態(tài)顯示出錯等情況,特對掛號這一共享數(shù)據(jù)增加鎖機制。在樂觀鎖、悲觀鎖以及線程鎖中,綜合考慮性能效率和錯誤的可接受性選擇了樂觀鎖機制。樂觀鎖的實現(xiàn)方式是使用版本標(biāo)識來確定讀到的數(shù)據(jù)與提交時的數(shù)據(jù)是否一致,提交后修改版本標(biāo)識,不一致時可以采取丟棄和再次嘗試的策略。在數(shù)據(jù)庫疫苗表(對應(yīng)疫苗實體)設(shè)計中增加了version字段,每次數(shù)據(jù)提交時(更改疫苗狀態(tài))會判斷version是否匹配,若不匹配停止本次提交,若匹配則提交成功并增加version的值。預(yù)約掛號功能整體流程:用戶瀏覽預(yù)約掛號信息時,同時會顯示掛號的狀態(tài),系統(tǒng)會在其顯示詳細(xì)信息的頁面時便會判斷掛號的狀態(tài),若疫苗狀態(tài)為可預(yù)約,則會顯示預(yù)約的鏈接按鈕。在用戶點擊預(yù)約按鈕時,會先通過攔截器判斷用戶是否登錄,若未登錄,會跳轉(zhuǎn)至登錄頁面,提示用戶先登錄,若為登錄用戶就會跳轉(zhuǎn)至填寫預(yù)約信息的頁面,填寫好預(yù)約信息之后,點擊提交按鈕,預(yù)約成功之后返回提示信息,告知用戶預(yù)約成功。預(yù)約掛號流程圖如下圖所示。圖5-8預(yù)約掛號流程圖預(yù)約掛號界面如下圖所示。圖5-9預(yù)約掛號管理界面病歷記錄管理模塊根據(jù)需求,需要對病歷記錄進(jìn)行添加、刪除或修改詳情信息。刪除或修改訂單時,系統(tǒng)根據(jù)病歷記錄的狀態(tài)判定為可刪除狀態(tài)下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達(dá)后臺,還會先查詢病歷狀態(tài)再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉(zhuǎn)到修改信息的頁面,重新填寫好數(shù)據(jù)后,數(shù)據(jù)提交到后臺會對數(shù)據(jù)庫中相應(yīng)的記錄做出修改。添加病歷記錄時,會給出數(shù)據(jù)填寫的頁面,該頁面根據(jù)填寫好的病歷同樣會事先發(fā)送Ajax請求查詢病歷編號是否已存在,數(shù)據(jù)填寫好之后提交到后臺,會調(diào)用相關(guān)服務(wù)在數(shù)據(jù)庫中插入記錄。病歷記錄頁面設(shè)計效果如下圖所示。圖5-10病歷記錄界面圖病歷記錄管理的關(guān)鍵代碼如下。@PostMapping("/add")@TransactionalpublicMap<String,Object>add(HttpServletRequestrequest)throwsIOException{service.insert(service.readBody(request.getReader()));returnsuccess(1);}@TransactionalpublicMap<String,Object>addMap(Map<String,Object>map){service.insert(map);returnsuccess(1);}publicMap<String,Object>readBody(BufferedReaderreader){BufferedReaderbr=null;StringBuildersb=newStringBuilder("");try{br=reader;Stringstr;while((str=br.readLine())!=null){sb.append(str);}br.close();Stringjson=sb.toString();returnJSONObject.parseObject(json,Map.class);}catch(IOExceptione){e.printStackTrace();}finally{if(null!=br){try{br.close();}catch(IOExceptione){e.printStackTrace();}}}returnnull;}publicvoidinsert(Map<String,Object>body){StringBuffersql=newStringBuffer("INSERTINTO");sql.append("`").append(table).append("`").append("(");for(Map.Entry<String,Object>entry:body.entrySet()){sql.append("`"+humpToLine(entry.getKey())+"`").append(",");}sql.deleteCharAt(sql.length()-1);sql.append(")VALUES(");for(Map.Entry<String,Object>entry:body.entrySet()){Objectvalue=entry.getValue();if(valueinstanceofString){sql.append("'").append(entry.getValue()).append("'").append(",");}else{sql.append(entry.getValue()).append(",");}}sql.deleteCharAt(sql.length()-1);sql.append(")");("[{}]-插入操作:{}",table,sql);Queryquery=runCountSql(sql.toString());query.executeUpdate();}系統(tǒng)測試測試概述軟件測試是軟件開發(fā)完成后必須經(jīng)過的一道程序,它在軟件開發(fā)過程中地位十分重要,需要由專業(yè)的測試工程師來對軟件進(jìn)行各方面的測試,大到功能模塊測試,小到代碼的單元測試,這對測試工程師來說需要有足夠的耐心和專業(yè)的測試方案,軟件測試歸根結(jié)底就是對軟件的結(jié)構(gòu)和功能的綜合測評,需要做到結(jié)構(gòu)穩(wěn)定和功能正確,二者兼顧。軟件測試也叫尋找系統(tǒng)bug的過程,世界上沒有完美無缺、不存在bug的軟件,只能將軟件的bug降到最低最小,來追求極致。測試過程登錄測試登錄測試是系統(tǒng)最開始就要進(jìn)行,測試用戶能否登錄,才能完成后續(xù)的功能操作。登錄測試用例表如下所示。表6-1登錄測試用例編號YL001程序版本1.00功能名稱使用者登錄測試編制人李鐵蛋功能描述根據(jù)用戶的登錄情況測試用例目的測試用戶登錄情況是否正確測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果用戶名為空請輸入用戶名請輸入用戶名密碼為空請輸入密碼請輸入密碼用戶密碼組合用戶名:klouse密碼klouses用戶與密碼不匹配用戶與密碼不匹配用戶密碼組合用戶名:klouse密碼klouse進(jìn)入系統(tǒng)正確的用戶名和密碼登錄系統(tǒng)信息錄入測試管理員在發(fā)布信息頁面,通過按照預(yù)先格式發(fā)布信息,如果因為輸入時候缺少相關(guān)內(nèi)容,就不能發(fā)布成功,且有相應(yīng)錯誤提示信息錄入發(fā)布測試用例表如下所示。表6-1信息錄入發(fā)布測試用例編號YL002程序版本1.00功能名稱信息發(fā)布測試編制人李鐵蛋功能描述對使用者發(fā)布或者錄入信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者錄入發(fā)布信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果屬性1為空請輸入屬性1對應(yīng)的數(shù)據(jù)請輸入屬性1對應(yīng)的數(shù)據(jù)屬性2為空請輸入屬性2對應(yīng)的數(shù)據(jù)請輸入屬性2對應(yīng)的數(shù)據(jù)屬性3為空請輸入屬性3對應(yīng)的數(shù)據(jù)請輸入屬性3對應(yīng)的數(shù)據(jù)全部輸入數(shù)據(jù)均填入錄入發(fā)布成功錄入發(fā)布成功信息更新測試管理員在更新信息頁面,通過按照預(yù)先格式更新信息,如果因為輸入時候缺少相關(guān)內(nèi)容或者更新的數(shù)據(jù)不符合當(dāng)前規(guī)范的話,就不能更新成功,且有相應(yīng)錯誤提示信息更新測試用例表如下所示。表6-1信息更新測試用例編號YL003程序版本1.00功能名稱信息更新測試編制人李鐵蛋功能描述對使用者更新信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者更新信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果屬性1編號:321編號更新成功編號更新成功屬性2名稱:名稱1名稱更新成功名稱更新成功屬性3內(nèi)容:內(nèi)容1234內(nèi)容內(nèi)容更新成功內(nèi)容更新成功全部輸入數(shù)據(jù)均未更改更新成功更新成功信息刪除測試管理員在信息頁面,通過點擊數(shù)據(jù)刪除按鈕來刪除該條數(shù)據(jù),如果該數(shù)據(jù)和其他數(shù)據(jù)有關(guān)聯(lián),則提示是否確定刪除。信息刪除測試用例表如下所示。表6-1信息刪除測試用例編號YL004程序版本1.00功能名稱信息刪除測試編制人李鐵蛋功能描述對使用者刪除信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者刪除信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果數(shù)據(jù)1無任何關(guān)聯(lián)的數(shù)據(jù)1數(shù)據(jù)刪除成功數(shù)據(jù)刪除成功數(shù)據(jù)2和其他數(shù)據(jù)有關(guān)聯(lián)的數(shù)據(jù)2請確認(rèn)是否刪除請確認(rèn)是否刪除測試結(jié)果在經(jīng)過之前的所有的工作之后,通過對軟件的測試方法、測試原則還有典型的測試用例進(jìn)行全面的、深入的介紹。經(jīng)過對系統(tǒng)的全面測試,系統(tǒng)目前所具有的所有功能均成功的實現(xiàn)并且通過了測試,整個系統(tǒng)實現(xiàn)了基于
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙江人保財險江山支公司招聘筆試參考題庫含答案解析
- 2025年江西中建五局江西分公司招聘筆試參考題庫含答案解析
- 2025年貴州銅仁市銀海商貿(mào)公司招聘筆試參考題庫含答案解析
- 2025年華能新能源股份有限公司招聘筆試參考題庫含答案解析
- 2025年中國石油撫順石化分公司招聘筆試參考題庫含答案解析
- 奉節(jié)縣2025年度公開招聘事業(yè)單位工作人員歷年高頻重點提升(共500題)附帶答案詳解
- 大慶市經(jīng)濟(jì)合作促進(jìn)局2025年人才引進(jìn)招聘歷年高頻重點提升(共500題)附帶答案詳解
- 二零二五年度電子廢棄物處理設(shè)施ROHS合規(guī)評估及整改協(xié)議3篇
- 國家檔案局2025年事業(yè)單位招聘高頻重點提升(共500題)附帶答案詳解
- 四川雅安市寶興縣2025年公招綜合類事業(yè)單位工作人員擬聘用人員公高頻重點提升(共500題)附帶答案詳解
- 臨床療效總評量表(CGI)
- 從教走向?qū)W:在課堂上落實核心素養(yǎng)
- 美世國際職位評估體系IPE3.0使用手冊
- 2020電網(wǎng)檢修工程預(yù)算定額第五冊 通信工程
- 圖像超分辨率增強技術(shù)
- 集裝箱貨運碼頭的火災(zāi)防范措施
- DB15T+3199-2023公路工程水泥混凝土質(zhì)量聲波層析成像法檢測規(guī)程
- 高壓電纜試驗報告
- 七年級數(shù)學(xué)上冊專題1.14數(shù)軸與絕對值綜合問題大題專練(重難點培優(yōu))-【講練課堂】2022-2023學(xué)年七年級數(shù)學(xué)上冊尖子生同步培優(yōu)題典(原卷版)【人教版】
- 酸性氨基酸對caco
- 藝術(shù)導(dǎo)論PPT完整全套教學(xué)課件
評論
0/150
提交評論