基于java EE醫(yī)療機(jī)械設(shè)備采購管理系統(tǒng)設(shè)計與實現(xiàn)_第1頁
基于java EE醫(yī)療機(jī)械設(shè)備采購管理系統(tǒng)設(shè)計與實現(xiàn)_第2頁
基于java EE醫(yī)療機(jī)械設(shè)備采購管理系統(tǒng)設(shè)計與實現(xiàn)_第3頁
基于java EE醫(yī)療機(jī)械設(shè)備采購管理系統(tǒng)設(shè)計與實現(xiàn)_第4頁
基于java EE醫(yī)療機(jī)械設(shè)備采購管理系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科論文目錄摘要 [25]。1.8本章小結(jié)本章主要介紹了本系統(tǒng)開發(fā)所使用的開發(fā)技術(shù),從前臺技術(shù)到底層后端應(yīng)用再到數(shù)據(jù)庫層面所使用的各個技術(shù),包括J2EE技術(shù)、SSH框架、Jquery技術(shù)、CSS技術(shù)、XML技術(shù)、Ajax技術(shù)以及MySQL數(shù)據(jù)庫技術(shù),都有詳細(xì)描述。

2系統(tǒng)分析2.1概要分析可以將本系統(tǒng)分為員工信息管理,供應(yīng)商信息管理,設(shè)備信息管理,庫存信息管理,庫房信息管理,系統(tǒng)信息管理這六大模塊。詳細(xì)描述如圖2-1。設(shè)備管理系統(tǒng)設(shè)備管理系統(tǒng)系統(tǒng)管理庫房管理庫存管理設(shè)備管理員工管理供應(yīng)商管理系統(tǒng)管理庫房管理庫存管理設(shè)備管理員工管理供應(yīng)商管理權(quán)限信息的增刪改查登錄信息的刪改查打印庫存報警修改庫存查詢出庫單查詢出庫單填寫入庫單查詢?nèi)霂靻翁顚懺O(shè)備信息的增刪改查供應(yīng)商的增刪改查職位信息的增刪改查部門信息的增刪改查員工登錄權(quán)限分配員工信息的增刪改查權(quán)限信息的增刪改查登錄信息的刪改查打印庫存報警修改庫存查詢出庫單查詢出庫單填寫入庫單查詢?nèi)霂靻翁顚懺O(shè)備信息的增刪改查供應(yīng)商的增刪改查職位信息的增刪改查部門信息的增刪改查員工登錄權(quán)限分配員工信息的增刪改查診室信息的增刪改查庫房信息的增刪改查科室信息的增刪改查診室信息的增刪改查庫房信息的增刪改查科室信息的增刪改查圖2-1設(shè)備管理系統(tǒng)的功能模塊圖2.2功能需求分析本系統(tǒng)任務(wù)包括有效管理各個庫房中設(shè)備的流通,如入庫管理、出庫管理、庫存管理等等??梢詫齑婀芾碜龈蛹?xì)致的分析,并從中發(fā)現(xiàn)更多的細(xì)節(jié)特征:庫房流通涉及設(shè)備的入庫,出庫兩種管理方式。庫存管理涉及設(shè)備的數(shù)量變更和對庫存的查詢、匯總等。各個模塊均需要檢索功能。設(shè)備需要進(jìn)行合理的分類。設(shè)備應(yīng)該有提供者,所以要考慮供應(yīng)商數(shù)據(jù)的登記。物品入庫,涉及到設(shè)備的存放位置,考慮是否需要動態(tài)選擇庫房。庫存管理中,無論入庫還是出庫,系統(tǒng)都需要記錄執(zhí)行人信息。系統(tǒng)需要提供給用戶一個唯一的用戶賬號,該賬號對用戶在系統(tǒng)中進(jìn)行相關(guān)操作是必不可少的。需要設(shè)置一位系統(tǒng)管理員,具有該系統(tǒng)的全部功能,而其他庫管的權(quán)限均由系統(tǒng)管理員進(jìn)行授予。庫管需要有對應(yīng)的崗位和部門來安置。庫存警告和報警,當(dāng)庫存量達(dá)到規(guī)定的最低數(shù)額時,系統(tǒng)自動報警。2.3功能初步設(shè)計用戶登錄:功能用途:用戶通過輸入用戶賬號、密碼、驗證碼和職位進(jìn)行系統(tǒng)登錄。操作權(quán)限歸屬:如果想進(jìn)入系統(tǒng),就必須要有權(quán)限。輸入數(shù)據(jù):與系統(tǒng)相關(guān)的數(shù)據(jù)輸入。基本操作:跟登錄有關(guān)聯(lián)的行為。所在位置:當(dāng)前的界面。其他說明:系統(tǒng)登錄功能就是用來判斷該人員是否進(jìn)行過角色授權(quán),授權(quán)過的角色才使用使用系統(tǒng)來完成想要進(jìn)行的操作,也是為了防止惡意的偷取數(shù)據(jù)。員工管理:功能用途:對員工的相關(guān)信息進(jìn)行管理。操作權(quán)限歸屬:需要使用系統(tǒng)的人員。主要數(shù)據(jù):員工是客觀世界存在的實體,實體的屬性就是這個主要的數(shù)據(jù)?;静僮鳎禾砑訂T工信息,刪除員工,修改員工,條件查詢,登錄權(quán)限授權(quán)。所在位置:員工管理。其他說明:員工編號是系統(tǒng)識別員工身份信息的依據(jù),同時也是用戶登錄系統(tǒng)時的賬號,也是庫管進(jìn)行庫存處理時需要輸入的經(jīng)手人編號。所以,員工編號是自動形成的,無法修改??蛻艄芾恚汗δ苡猛荆簩ο嚓P(guān)信息進(jìn)行管理。操作權(quán)限歸屬:需要使用系統(tǒng)的人員,系統(tǒng)管理員。主要數(shù)據(jù):供應(yīng)商是客觀世界存在的實體,供應(yīng)商的屬性就是這個主要的數(shù)據(jù)?;静僮鳎汗?yīng)商的添加、刪除、修改和查詢。所在位置:客戶管理。其他說明:每一種設(shè)備都有其制造商,庫房中的設(shè)備在添加時都要填寫該項。設(shè)備管理:功能用途:錄入設(shè)備的基本信息。操作權(quán)限歸屬:需要使用系統(tǒng)的人員,系統(tǒng)管理員。主要數(shù)據(jù):設(shè)備編號,設(shè)備名稱,設(shè)備類別,供應(yīng)商,產(chǎn)地,檢查類別,有效期,型號,備注?;静僮鳎禾砑釉O(shè)備,刪除設(shè)備,修改設(shè)備,條件查詢。所在位置:設(shè)備管理。其他說明:每一種設(shè)備信息在添加時都要使用觸發(fā)器同步更新到庫存信息表中,初始數(shù)量為0,在修改設(shè)備基本信息時,一些必要數(shù)據(jù)也要同步更改。庫存管理:功能用途:填寫入庫單,填寫出庫單,庫存查詢,并且?guī)齑孢_(dá)到報警線時能夠?qū)τ脩暨M(jìn)行提醒。操作權(quán)限歸屬:需要使用系統(tǒng)的人員,系統(tǒng)管理員。主要數(shù)據(jù):設(shè)備信息,余量,上下限報警。基本操作:條件查詢。所在位置:庫存管理。其他說明:根據(jù)入出庫數(shù)量更新庫存數(shù)量,上下限報警線為手動設(shè)置。庫房管理:功能用途:錄入庫房信息。操作權(quán)限歸屬:系統(tǒng)管理員。主要數(shù)據(jù):庫房編號,庫房名稱?;静僮鳎禾砑訋旆?,修改庫房,刪除庫房,條件查詢。所在位置:庫房管理。其他說明:庫房管理是設(shè)備存放的位置。系統(tǒng)管理:功能用途:對可以登錄的人員以及權(quán)限進(jìn)行管理。操作權(quán)限歸屬:系統(tǒng)的管理員。主要數(shù)據(jù):員工的相關(guān)信息。基本操作:權(quán)限的添加、修改、刪除和查詢。所在位置:系統(tǒng)管理。其他說明:系統(tǒng)管理是對使用者的先關(guān)信息進(jìn)行基本的數(shù)據(jù)操作。2.4本章小結(jié)本章闡述了本項目的功能需求及項目的細(xì)節(jié)特征,不同的人員權(quán)限操作不同的功能,引出開發(fā)本項目的基本思路,為第三章對本項目的具體設(shè)計打下了基礎(chǔ)。

3系統(tǒng)總體設(shè)計3.1數(shù)據(jù)庫設(shè)計本系統(tǒng)中各個實體關(guān)系如圖3-1所示。圖3-1系統(tǒng)E-R圖departmentinfotable(部門表)的設(shè)計是完成部門信息的存儲。其結(jié)構(gòu)如表3-1所示。表3-1部門信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增depIdvarchar(20)否否NULL部門編號depNamevarchar(20)否否NULL部門名稱employeeinfotable(員工表)的設(shè)計是完成員工的信息的存儲。其結(jié)構(gòu)如表3-2所示。表3-2員工信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(8)否是NULL自增empIdvarchar(20)否否NULL員工編號表3-2員工信息表-續(xù)表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明empNamevarchar(20)否否NULL姓名empSexvarchar(4)否否NULL性別empAgeint(3)否否NULL年齡empIdentCardvarchar(20)否否NULL身份證號empBirthDatevarchar(20)否否NULL出生日期empDiplomavarchar(20)否否NULL學(xué)歷empJoinDatevarchar(20)否否NULL入職時間empAddressvarchar(50)否否NULL地址empPhonevarchar(20)否否NULL電話depIdvarchar(20)否否NULL部門編號jobIdvarchar(20)否否NULL職位編號goodsinfotable(設(shè)備信息表)的設(shè)計是完成設(shè)備的信息的存儲。其結(jié)構(gòu)如表3-3所示。表3-3設(shè)備信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(8)否是NULL自增gIdvarchar(20)否否NULL設(shè)備編號gNamevarchar(20)否否NULL設(shè)備名稱gABCvarchar(20)否否NULL設(shè)備類別supIdvarchar(20)否否NULL供應(yīng)商編號gAddressvarchar(20)否否NULL地址gUnitvarchar(6)否否NULL檢查類別gUsefulDatevarchar(20)否否NULL有效期gTypeIdvarchar(20)否否NULL型號gPicturevarchar(20)否否NULL備注goodslocationtable(庫房信息表)的設(shè)計是完成庫房的信息的存儲。其結(jié)構(gòu)如表3-4所示。表3-4庫房信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增locatIdvarchar(20)否否NULL部門編號locatNamevarchar(20)否否NULL部門名稱goodsrowstable(科室信息表)的設(shè)計是完成科室的信息的存儲。其結(jié)構(gòu)如表3-5所示。表3-5科室信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增rowIdvarchar(20)否否NULL科室編號rowNamevarchar(20)否否NULL科室名稱locatIdvarchar(20)否否NULL部門編號goodsseatstable(診室信息表)的設(shè)計是完成診室的信息的存儲。其結(jié)構(gòu)如表3-6所示。表3-6診室信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增seatIdvarchar(20)否否NULL診室編號seatNamevarchar(20)否否NULL診室名稱locatIdvarchar(20)否否NULL部門編號rowIdvarchar(20)否否NULL科室編號jobsinfotable(職位表)的設(shè)計是完成職位表的信息的存儲。其結(jié)構(gòu)如表3-7所示。表3-7職位信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增jobIdvarchar(20)否否NULL職位編號jobNamevarchar(20)否否NULL職位名稱depIdvarchar(20)否否NULL部門編號describeJobvarchar(20)否否NULL職位名稱logintable(登錄表)是存儲登錄表信息的。其表結(jié)構(gòu)如表3-8所示。表3-8登錄信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增depIdvarchar(20)否否NULL員工編號depNamevarchar(20)否否NULL姓名loginPassvarchar(20)否否NULL密碼powIdvarchar(20)否否NULL權(quán)限編號powerinfotable(權(quán)限表)的設(shè)計是完成權(quán)限表的信息的存儲。其表結(jié)構(gòu)如表3-9所示。表3-9權(quán)限信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增powIdvarchar(20)否否NULL權(quán)限編號powNamevarchar(20)否否NULL權(quán)限名稱stockinfotable(庫存表)的設(shè)計是完成庫存表的信息的存儲。其表結(jié)構(gòu)如表3-10所示。表3-10庫存信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(8)否是NULL自增stoIdvarchar(20)否否NULL設(shè)備編號stoNamevarchar(20)否否NULL設(shè)備名稱stoTypeIdvarchar(20)否否NULL設(shè)備類別stoUnitvarchar(6)否否NULL檢查類別stoNumberint(8)否否NULL數(shù)量stoUpWarnint(8)否否NULL上限提醒stoDownWarnint(8)否否NULL下限提醒stoUpDangerint(8)否否NULL上限報警stoDownDangerint(8)否否NULL下限報警stockininfotable(入庫表)的設(shè)計是完成入庫表的信息的存儲。其表結(jié)構(gòu)如表3-11所示。表3-11入庫信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(16)否是NULL自增sInIdvarchar(20)否否NULL入庫單號sInDatevarchar(20)否否NULL日期sInChargeIdvarchar(20)否否NULL負(fù)責(zé)人sInGoodsIdvarchar(20)否否NULL設(shè)備編號sInNumberint(8)否否NULL數(shù)量sInTypeIdvarchar(20)否否NULL型號sInABCvarchar(20)否否NULL類別表3-11入庫信息表-續(xù)表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明sInUnitvarchar(6)否否NULL單位sInPlacevarchar(20)否否NULL位置sInRemarkvarchar(100)否否NULL備注stockoutinfotable(出庫表)的設(shè)計是完成出庫表的信息的存儲。其表結(jié)構(gòu)如表3-12所示。表3-12出庫信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(16)否是NULL自增sOutIdvarchar(20)否否NULL出庫單號sOutDatevarchar(20)否否NULL日期sOutCharIdvarchar(20)否否NULL負(fù)責(zé)人sOutGoodsIdvarchar(20)否否NULL設(shè)備編號sOutNumberint(8)否否NULL數(shù)量sOutTypeIdvarchar(20)否否NULL型號sOutABCvarchar(20)否否NULL類別sOutUnitvarchar(6)否否NULL單位sOutReceiveIdvarchar(20)否否NULL接收人sOutProgramIdvarchar(20)否否NULL生產(chǎn)編號sOutRemarkvarchar(100)否否NULL備注supplytable(供應(yīng)商信息表)的設(shè)計是完成供應(yīng)商信息表的信息的存儲。其表結(jié)構(gòu)如表3-13所示。表3-13供應(yīng)商信息表字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值說明idint(4)否是NULL自增supIdvarchar(20)否否NULL供應(yīng)商編號supNamevarchar(20)否否NULL供應(yīng)商名稱supChargevarchar(20)否否NULL負(fù)責(zé)人supAddressvarchar(20)否否NULL地址supPhonevarchar(20)否否NULL電話supFaxvarchar(20)否否NULL傳真supEmailvarchar(20)否否NULL郵箱supHttpvarchar(20)否否NULL網(wǎng)址3.2系統(tǒng)功能詳細(xì)設(shè)計對系統(tǒng)整體的需求分析已經(jīng)基本完成,接下來就需要進(jìn)行具體的編碼設(shè)計。流程的設(shè)計如下圖3-2所示。圖3-2庫存系統(tǒng)流程圖普通員工只有被庫房管理員進(jìn)行登陸權(quán)限授權(quán)才有資格登錄,對于所有模塊的權(quán)限僅有查詢功能,無其他操作權(quán)限。二級庫管理員的權(quán)限則可以對客戶,設(shè)備,庫存,庫房,入庫,出庫模塊進(jìn)行管理。系統(tǒng)的管理員能夠?qū)ο嗤M(jìn)行全面的管理,系統(tǒng)管理員的權(quán)限是最高的,設(shè)計的范圍也是最多的。3.2.1登錄模塊的詳細(xì)設(shè)計登錄模塊的流程圖如下圖3-3所示。圖3-3登錄模塊的流程圖想要進(jìn)入系統(tǒng)就必須進(jìn)行賬號密碼的驗證,同時還需要進(jìn)行驗證碼的校驗,其中驗證碼功能部分的代碼儲存在MakeCertPic.java文件內(nèi),每次加載時驗證碼是隨機(jī)生成的,是通過Graphic畫布把該驗證碼生成出來,然后在前端makeCertPic.jsp頁面獲取該圖片,并將該圖片的值保存在session中,讓后臺能夠正常獲取到,前臺頁面便可通過用戶輸入的驗證碼的值與后臺進(jìn)行校對,從而完成驗證碼驗證。當(dāng)用于進(jìn)行個人信息輸入完成之后,系統(tǒng)就會進(jìn)行post方法將當(dāng)前數(shù)據(jù)進(jìn)行異步刷新,判斷當(dāng)前輸入信息是真實有效的,且存在。如果判斷成功則通過,如果失敗則彈出提示信息。3.2.2用戶模塊的詳細(xì)設(shè)計用戶模塊的流程圖如下圖3-4所示。圖3-4用戶添加流程圖員工信息查看頁面,用戶可以通過選擇查看方式,選擇查看的條件,然后根據(jù)查看條件和輸入的信息進(jìn)行模糊查詢,并顯示所有查到的信息,如果輸入為空,則查找全部,其中用戶可以在每一條查到的數(shù)據(jù)后面點編輯或刪除,進(jìn)一步對選中的信息進(jìn)行操作。對員工信息的批量刪除模塊則是通過JS獲取到所有已選中的用戶信息,并將數(shù)據(jù)傳輸?shù)胶笈_,由后臺執(zhí)行批量刪除工作。其中涉及數(shù)據(jù)傳輸?shù)母袷絾栴},通過巧妙利用字符串,適當(dāng)拆分和合并,進(jìn)而起到對應(yīng)的效果。3.2.3客戶模塊的詳細(xì)設(shè)計供應(yīng)商的添加功能與用戶模塊基本相同,流程圖如圖3-5所示。供應(yīng)商信息的查詢也是通過按條件查詢,如果沒有輸入查詢條件那么就是默認(rèn)對全部進(jìn)行搜索,后臺根據(jù)查詢條件檢索出相關(guān)信息,前端頁面以EL表達(dá)式的形式將結(jié)果體現(xiàn)出來。供應(yīng)商的批量刪除功能與員工模塊相同,頁面需要根據(jù)所選中的數(shù)據(jù)取出相應(yīng)的數(shù)據(jù)id,通過后臺對該id或者是更多的字符串進(jìn)行分析,進(jìn)而深入的進(jìn)行刪除操作。只要管理員能夠完成該操作。圖3-5供應(yīng)商添加流程圖3.2.4設(shè)備模塊的詳細(xì)設(shè)計設(shè)備的添加功能模塊,流程圖如下圖3-6所示。圖3-6設(shè)備添加流程圖設(shè)備模塊的添加操作是由以下流程具體的完成。首先要通過JS的加載從后臺獲取到數(shù)據(jù)庫有關(guān)供應(yīng)商的數(shù)據(jù),并在前段頁面進(jìn)行展示,用戶就可以通過該展示對想要進(jìn)行操作的供應(yīng)商進(jìn)行操作,省去了用戶手動填寫供應(yīng)商的過程,節(jié)約了操作時間。設(shè)備編號也是需要驗證的,該驗證過程與之前的設(shè)備編號驗證過程是相似的。完成所有必要信息的輸入之后進(jìn)行保存操作。3.2.5庫存模塊的詳細(xì)設(shè)計庫存的模塊設(shè)計對于這個項目來說是很重要的,入庫的詳細(xì)流程如下圖3-7所示。在進(jìn)入入庫界面的時候,JS模塊就開始經(jīng)由AJAX開始于后臺進(jìn)行交互,并將數(shù)據(jù)進(jìn)行異步刷新。輸入設(shè)備編號時,系統(tǒng)可以通過設(shè)備id從而將設(shè)備的其他基本信息自動帶出來,省去了用戶手動填寫的時間。如果必要的輸入數(shù)據(jù)都已經(jīng)輸入完成,則點擊保存的按鈕就可以將當(dāng)前的輸入數(shù)據(jù)保存到后端的數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)表中,進(jìn)而入庫數(shù)據(jù)更新成功。圖3-7入庫模塊設(shè)計流程圖出庫的流程圖詳細(xì)的流程如下圖3-8所示。圖3-8出庫模塊設(shè)計流程圖當(dāng)進(jìn)入到出庫單界面的時候,當(dāng)前頁面經(jīng)由JS模塊對后臺對應(yīng)的數(shù)據(jù)進(jìn)行了準(zhǔn)確的模糊查詢操作,并將現(xiàn)有的出單進(jìn)行編號。完成這些操作后即可保存出庫單。上述流程都結(jié)束以后,要對系統(tǒng)的庫存余量進(jìn)行更新,如果發(fā)現(xiàn)余量不足時,系統(tǒng)右上角能夠進(jìn)行提醒及警告,通過點擊右上角下拉框即可看到是哪個設(shè)備余量不足,點擊設(shè)備即可進(jìn)入到修改上下限提醒及警告的頁面。3.3項目搭建打開MyEclipse新建WebProject命名為WMS系統(tǒng)包目錄結(jié)構(gòu)如下圖3-9所示。圖3-9項目結(jié)構(gòu)圖3.4本章小結(jié)本章列舉出了開發(fā)本項目的概念設(shè)計,總體設(shè)計,數(shù)據(jù)庫中表以及表內(nèi)各個字段的設(shè)計,每個模塊的業(yè)務(wù)流程及所需要的功能,本項目根據(jù)本章設(shè)計內(nèi)容開發(fā)本系統(tǒng)。

4系統(tǒng)實現(xiàn)4.1用戶環(huán)境服務(wù)器硬件方面CPU要求i5以上;內(nèi)存要求不小于512MB;硬盤要求不小于40G;服務(wù)器端軟件方面操作系統(tǒng)Windows10;數(shù)據(jù)庫服務(wù)器要求使用MySQLWorkbench6.0;Web服務(wù)器要求使用Firefox57.0或以上;客戶端軟件方面操作要求Windows7、Windows8或Windows10;瀏覽器要求Firefox57.0或以上;開發(fā)工具要求使用MyEclipse。4.2其他要求對于訪問容量的要求包括系統(tǒng)要求支持的最大并發(fā)用戶數(shù)為20;關(guān)于響應(yīng)時間方面的要求包括復(fù)雜功能時間小于400毫秒,另外簡單功能的響應(yīng)時間小于200毫秒。4.3用戶登錄功能用戶進(jìn)入系統(tǒng)界面的時候,需要將個人的信息進(jìn)行輸入,主要是賬號和密碼,同時結(jié)合驗證碼模塊,該模塊的存在主要是為了爬蟲的不斷的騷擾,增加系統(tǒng)的安全性。用戶也要正確選擇自己的角色,該處系統(tǒng)也需要進(jìn)行校驗,角色選錯用戶也無法進(jìn)行登錄。用戶登錄界面如下圖4-1所示。圖4-1用戶登錄界面系統(tǒng)的整體開發(fā)對于每個用戶進(jìn)入系統(tǒng)看到的操作內(nèi)容都是不一樣的。這不僅僅是功能模塊劃分的具體體現(xiàn),也是對用戶進(jìn)行權(quán)限管理的形象的表達(dá)。系統(tǒng)主界面如下圖4-2所示。圖4-2系統(tǒng)主界面4.4員工管理功能模塊包括有員工的添加、查詢功能;部門的添加、查詢功能;職位的添加、查詢等6個功能,添加員工如圖4-3所示。圖4-3添加員工界面員工信息查看如圖4-4所示。圖4-4員工信息查看界面在員工信息查看界面,可以通過點擊添加登錄權(quán)限按鈕快捷注冊賬戶,授權(quán)后的員工便可以通過自己的員工賬號登錄本系統(tǒng),初始密碼為123456,權(quán)限為醫(yī)療人員。添加部門如圖4-5所示。圖4-5添加部門界面部門信息查看如圖4-6所示。圖4-6部門信息查看界面添加職位如圖4-7所示。圖4-7添加職位界面職位信息查看如圖4-8所示。圖4-8職位信息查看界面4.5客戶管理功能本模塊供應(yīng)商的添加和查詢兩個功能,添加供應(yīng)商如圖4-9所示。圖4-9添加供應(yīng)商界面供應(yīng)商信息查看如圖4-10所示。圖4-10供應(yīng)商信息查看4.6設(shè)備管理功能本模塊有設(shè)備的添加和查詢兩個功能,添加設(shè)備如下圖4-11所示。圖4-11添加設(shè)備界面設(shè)備信息查看如圖4-12所示。圖4-12設(shè)備信息查看界面4.7庫存管理功能庫存查詢?nèi)缦聢D4-13所示。圖4-13庫存查詢界面該模塊是該系統(tǒng)的必要模塊,十分重要,此處對該模塊數(shù)據(jù)的有效性和數(shù)據(jù)的展示是否有效進(jìn)行了測試,并測試頁面的輸入數(shù)據(jù)的合理性,即測試該系統(tǒng)的表單驗證功能。設(shè)備想要入庫就必須先完成入庫單的填寫,通過相關(guān)的流程之后才能夠完成入庫操作,入庫單的測試也是必須要重視的一個環(huán)節(jié),入庫單的填寫如圖4-14所示。圖4-14填寫入庫單入庫單的數(shù)據(jù)是需要用戶準(zhǔn)確的填寫的,用戶完成數(shù)據(jù)的填寫之后,入庫單就會由系統(tǒng)自動的生成,設(shè)備的基本信息也是不需要手寫添加的,按照對應(yīng)的編號查詢即可。當(dāng)完成入庫操作的時候,后臺就對當(dāng)前的庫存量進(jìn)行更新操作,保證后臺設(shè)備存儲量的準(zhǔn)確性。為保證系統(tǒng)數(shù)據(jù)的安全性,普通用戶是沒有辦法對入庫單進(jìn)行基本數(shù)據(jù)操作的,這樣很大程度保證了數(shù)據(jù)的安全性。入庫單查詢?nèi)鐖D4-15所示。圖4-15入庫單查詢界面出庫部分的實現(xiàn)在主要邏輯上跟入庫部分的實現(xiàn)是大有相似之處,出庫對數(shù)據(jù)進(jìn)行減法操作,而入庫是進(jìn)行加法操作。而完成這些數(shù)據(jù)操作以后都需要對庫存量進(jìn)行更新,保證數(shù)據(jù)量的準(zhǔn)確性,該環(huán)節(jié)是必不可少的。填寫出庫單4-16所示。圖4-16填寫出庫單界面出庫單查詢?nèi)鐖D4-17所示。圖4-17出庫單查詢界面用戶進(jìn)入庫存的警示信息修改頁面如圖4-18所示。圖4-18警告信息修改界面4.8庫房管理功能本模塊包括部門管理,科室管理,診室管理,添加部門如圖4-19所示。圖4-19添加設(shè)備部門界面設(shè)備部門信息查看如圖4-20所示。圖4-20設(shè)備部門信息查看界面添加科室界面如圖4-21所示。圖4-21添加科室界面科室信息查看查看如圖4-22所示。圖4-22科室信息查看界面添加診室信息如圖4-23所示。圖4-23添加診室界面診室信息查看如圖4-24所示。圖4-24診室信息查看界面4.9系統(tǒng)管理功能本模塊包括登陸用戶信息查看以及權(quán)限信息查看兩個功能。用來查看哪些人員擁有登陸權(quán)限。用戶信息查看如圖4-25所示。圖4-25用戶信息查看界面權(quán)限信息查看如圖4-26所示。圖4-26權(quán)限信息查看界面4.10本章小結(jié)本章講述了本系統(tǒng)開發(fā)硬件及軟件的環(huán)境,每個模塊功能的介紹以及操作方式,每個模塊的具體實現(xiàn),其中的實現(xiàn)結(jié)果通過截圖的方式展現(xiàn)出來。

5系統(tǒng)測試為保證測試的準(zhǔn)確性,本章將抽取最具代表性的模塊進(jìn)行抽樣測試。5.1用戶登錄測試對于登陸測試需要分為用戶名、密碼、驗證碼、權(quán)限四個部分。測試用例如表5.1所示。表5.1登錄測試用例編號操作輸入數(shù)據(jù)預(yù)期結(jié)果實際結(jié)果5.1-1輸入正確的用戶名、密碼以及驗證碼,選擇正確的權(quán)限后,進(jìn)行登錄用戶名:Z001密碼:123456驗證碼:輸入正確的驗證碼權(quán)限:總庫登錄成功成功進(jìn)入到系統(tǒng)主頁面5.1-2輸入正確的用戶名、驗證碼和錯誤的密碼,選擇正確的權(quán)限后,進(jìn)行登錄用戶名:Z001密碼:000000驗證碼:輸入正確的驗證碼權(quán)限:總庫登錄失敗系統(tǒng)提示:密碼錯誤5.1-3輸入正確的用戶名、密碼和錯誤的驗證碼,選擇正確的權(quán)限后,進(jìn)行登錄用戶名:Z001密碼:123456驗證碼:輸入錯誤的驗證碼權(quán)限:總庫登錄失敗系統(tǒng)提示:驗證碼錯誤5.1-4輸入正確的用戶名、密碼以及驗證碼,選擇錯誤的權(quán)限后,進(jìn)行登錄用戶名:Z001密碼:123456驗證碼:輸入正確的驗證碼權(quán)限:二級庫登錄失敗系統(tǒng)提示:用戶不存在5.1-5輸入錯誤的用戶名以及正確的密碼、驗證碼,選擇正確的權(quán)限后,進(jìn)行登錄用戶名:admin密碼:123456驗證碼:輸入正確的驗證碼權(quán)限:總庫登錄失敗系統(tǒng)提示:用戶不存在由該表可知系統(tǒng)登錄功能正常,用戶只有通過輸入與數(shù)據(jù)庫相匹配的用戶信息才可以進(jìn)行登錄,否則系統(tǒng)將根據(jù)錯誤信息進(jìn)行不同的登陸報錯,登錄失敗。5.2員工管理測試員工管理模塊測試用例如表5.2所示。表5.2員工管理測試用例編號操作輸入數(shù)據(jù)預(yù)期結(jié)果實際結(jié)果5.2-1查看是否顯示信息無顯示成功顯示數(shù)據(jù)成功5.2-2與數(shù)據(jù)庫數(shù)據(jù)相匹配無匹配成功數(shù)據(jù)顯示一致5.2-3輸入正確的添加信息,進(jìn)行添加員工操作部門編號:門診部職位編號:庫管員工編號:自動生成姓名:張三豐性別:男年齡:22出生日期:1999-09-09身份證號歷:本科入職時間:2020-09-09居住地址:沈陽電話號碼加成功顯示出張三豐的信息5.2-4輸入正確的添加信息,卻有未填字段,進(jìn)行添加員工操作部門編號:門診部職位編號:庫管員工編號:自動生成姓名:張三豐性別:男年齡:22出生日期:1999-09-09身份證號歷:本科入職時間:2020-09-09居住地址:沈陽電話號碼:添加失敗提示:不能為空5.2-5輸入錯誤的信息格式,進(jìn)行添加操作部門編號:門診部職位編號:庫管員工編號:自動生成姓名:張三豐性別:男年齡:22出生日期:1999-09-09身份證號歷:本科入職時間:2020-09-09居住地址:沈陽電話號碼:00000000000添加失敗提示:格式錯誤5.2-6對員工執(zhí)行修改操作電話號碼改成功成功修改張三豐的信息

員工管理模塊的測試計劃是用戶進(jìn)入員工管理界面后,在查詢界面能否顯示與數(shù)據(jù)庫中相對應(yīng)的信息,在搜索欄中填入查詢信息,看是否能夠檢索出對應(yīng)信息。點擊修改,看能否成功修改員工信息并錄入到數(shù)據(jù)庫。在添加員工界面輸入正確的信息,提示添加成功后,看是否錄入數(shù)據(jù)庫,同時查看前端界面是否正確顯示。輸入錯誤的信息看是否能夠正確提示,添加時有未填入信息看是否正常提示。測試結(jié)果是員工管理功能能正常使用,正確填寫員工基本信息即可將員工信息錄入本系統(tǒng),輸入錯誤的信息,系統(tǒng)也能夠正確提示報錯,通過檢索條件也可以對員工進(jìn)行檢索。其他模塊功能與本模塊情況相近,不一一列舉。5.3庫存管理測試庫存管理模塊的測試計劃是用戶進(jìn)入庫存管理界面后,在填寫入庫單界面,能夠正確的將設(shè)備管理中錄入的設(shè)備成功入庫到本系統(tǒng)中,庫存中增加正確的數(shù)量,填寫出庫單后能夠減少正確的數(shù)量,庫存不足時,出庫單能夠正常提示庫存不足。填寫入出庫單時,信息錯誤或者有漏填的信息能夠正常進(jìn)行報錯。填寫好設(shè)備編號后能否正確帶出設(shè)備基本信息。通過填寫檢索條件能夠正確檢索出庫存信息,入庫單信息以及出庫單信息。設(shè)置庫存上下限,系統(tǒng)能否正確報警,點擊報警信息能否正確跳轉(zhuǎn)到修改對應(yīng)設(shè)備庫存上下限的界面。庫存管理模塊測試用例如表5.3所示。表5.3庫存功能測試用例編號操作輸入數(shù)據(jù)預(yù)期結(jié)果實際結(jié)果5.3-1查看是否正確顯示庫存信息、入庫單信息、出庫單信息無顯示成功顯示數(shù)據(jù)成功5.3-2與數(shù)據(jù)庫數(shù)據(jù)相匹配無匹配成功數(shù)據(jù)顯示一致5.3-3輸入正確的入庫單信息,進(jìn)行入庫操作單號:自動生成日期:2020-05-17負(fù)責(zé)人:001030000設(shè)備編號:SB001數(shù)量:5存放區(qū)域:沈陽_門診部,門診部,診室1入庫成功眼壓儀入庫診室1,數(shù)量5個表5.3庫存功能測試-續(xù)表用例編號操作輸入數(shù)據(jù)預(yù)期結(jié)果實際結(jié)果5.4-3輸入錯誤的入庫單信息,進(jìn)行入庫操作單號:自動生成日期:2020-05-17負(fù)責(zé)人:001030000設(shè)備編號:99999數(shù)量:5存放區(qū)域:沈陽_門診部,門診部,診室1入庫失敗提示:不存在此設(shè)備5.4-1輸入正確的出庫單信息,進(jìn)行出庫操作單號:自動生成日期:2020-05-17負(fù)責(zé)人:001030000設(shè)備編號:SB001數(shù)量:2接收人:001030000生產(chǎn)項目編號:1出庫成功眼壓儀成功出庫,數(shù)量2個,庫存正確減少5.4-2輸入正確的出庫單信息,進(jìn)行出庫操作單號:自動生成日期:2020-05-17負(fù)責(zé)人:001030000設(shè)備編號:SB001數(shù)量:6接收人:001030000生產(chǎn)項目編號:1出庫失敗提示:庫存不足5.5-1對庫存上下限進(jìn)行修改操作下限提醒:6提示庫存量提醒成功顯示:提醒如下,眼壓儀,點擊后正常跳轉(zhuǎn)到庫存界面5.5-2對庫存上下限進(jìn)行修改操作下限報警:8修改失敗提示:不能超過警告下限測試結(jié)果為庫存管理功能正常,正確填寫入庫單信息便可將設(shè)備錄入到庫存中,正確填寫出庫單信息便可將設(shè)備出庫,通過修改上下限提醒或報警,系統(tǒng)可正確顯示提醒或報警信息。5.4本章小結(jié)本章對系統(tǒng)中的幾個主要功能進(jìn)行測試,為保證測試的準(zhǔn)確性,在每個階段中抽取最具代表性的模塊進(jìn)行隨機(jī)抽樣測試,選取登錄模塊,員工模塊,庫存模塊進(jìn)行測試。

結(jié)論項目的實現(xiàn)是以Java語言為開發(fā)語言,結(jié)合SSH框架的高效性,完成了醫(yī)療器械設(shè)備采購系統(tǒng)的設(shè)計與實現(xiàn),并且著重對庫存管理系統(tǒng)的管理體制進(jìn)行研究。項目采用的核心結(jié)構(gòu)方式為B/S,根據(jù)項目的具體運行需要,進(jìn)行了需求設(shè)計分析,需求說明,編碼設(shè)計,編碼實現(xiàn),項目測試等幾個核心環(huán)節(jié)。項目用MySql對后臺的數(shù)據(jù)進(jìn)行存儲,主要是因為該數(shù)據(jù)庫具有很好的適應(yīng)能力,并且十分符合Web數(shù)據(jù)存儲的要求。項目的完成知識對該案例的針對性實現(xiàn),如果想要適合所有醫(yī)院的業(yè)務(wù)需求,則需要對客戶進(jìn)行具體的分析,結(jié)構(gòu)進(jìn)行具體針對性的調(diào)整。因此,目前系統(tǒng)具有局限性,后期應(yīng)該不斷的優(yōu)化。

致謝本畢業(yè)設(shè)計是在指導(dǎo)老師高麗及聶菲的悉心指導(dǎo)下完成的。在整個畢業(yè)設(shè)計過程中,不論在選題、設(shè)計還是在撰寫論文過程中,老師均給予了我莫大的指導(dǎo)和幫助。在畢業(yè)設(shè)計過程中,老師耐心地給我分析了庫存管理系統(tǒng)開發(fā)的思路,使我一開始就能夠很好地把握設(shè)計的方向,從自己平時的項目實訓(xùn)中選出了最適合該系統(tǒng)的開發(fā)方式,并且老師又很負(fù)責(zé)的給了我很多的改進(jìn)意見,幫助我解決設(shè)計遇到的困難,積累了很多經(jīng)驗,并完成了預(yù)期的任務(wù)。在此,特向指導(dǎo)老師表示我衷心的感謝和深切的謝意。在此期間,我還得到了很多同學(xué)的幫助,在此一并向他們表示感謝。感謝母校多年來對我的培養(yǎng),感謝所有關(guān)心和幫助我的老師和同學(xué)們!

參考文獻(xiàn)陳善偉.基于二維碼技術(shù)的醫(yī)院耗材全閉環(huán)管理系統(tǒng)的設(shè)計與應(yīng)用[J].電子技術(shù)與軟件工程,2017(22):185-186朱家琦,朱家沐,馬明芳,王凱,鄧開琴.醫(yī)院醫(yī)用耗材精細(xì)化閉環(huán)管理系統(tǒng)的設(shè)計與應(yīng)用[J].中國醫(yī)學(xué)裝備,2017,14(08):119-122石玉芳.條形碼技術(shù)在手術(shù)室高值耗材管理系統(tǒng)的應(yīng)用[J].中國醫(yī)療器械信息,2017,23(10):122-123唐澤君,鄢良平.“十二五”期間醫(yī)療耗材的管理探討[J].醫(yī)療衛(wèi)生裝備,2013,34(02):120-121+125鄭志剛,董亞洲.基于j2ee平臺系統(tǒng)開發(fā)綜述[J].無線互聯(lián)科技,2014(10):69-70莊巧蕙.基于J2EE的電子商務(wù)平臺的研究與構(gòu)建[J].大慶師范學(xué)院學(xué)報,2018,38(06):59-63MatejZuz?ák,MilanZenka.ExpertsystemassessingthreatlevelofattacksonahybridSSHhoneynet[J].Computers&Security,2020,92張亞梅,馬嘯.基于SSH框架的網(wǎng)站設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2012(10):62-63+106孫紅艷.基于SSH框架的班級事物管理系統(tǒng)設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2019(12):135-136+139盧肖霞.SSH框架在Web項目開發(fā)中的設(shè)計與實現(xiàn)[J].計算機(jī)測量與控制,2018,26(10):122-127潘蕊.SSH框架的Web網(wǎng)站設(shè)計與實現(xiàn)研究[J].成才之路,2019(36):58-59梅元昭.基于Jquery課程網(wǎng)站的設(shè)計[J].無線互聯(lián)科技,2019,16(10):39-41李彥.DIV+CSS技術(shù)在網(wǎng)頁設(shè)計布局中的應(yīng)用研究[J].微型電腦應(yīng)用,2020,36(03):19-21+30秦秋瀅.基于CSS技術(shù)的網(wǎng)頁設(shè)計應(yīng)用研究[J].電子世界,2020(06):194-195郭毓東.基于XML技術(shù)的供應(yīng)鏈知識管理系統(tǒng)的知識抽取[J].物流技術(shù),2012,31(13):287-289李紅飛,姜海森.基于XML技術(shù)的結(jié)構(gòu)化文檔編輯器研究[J].軟件,2014,35(05):114-118李品升,周傳生.基于XML通用軟件可擴(kuò)展平臺模型的研究與應(yīng)用[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2011,29(01):69-72佟玲,周傳生.基于XML的任務(wù)流編輯器的設(shè)計與實現(xiàn)[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2015,33(04):546-550郝潔.ASP.NETAJAX框架在Web開發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2017(17):55ATechnicalMethodofOnlineSpatialAttributeDataManagementBasedonWebFontEnd[J].ComputerScienceandApplication.2016:30-35李志偉.基于AJAX的網(wǎng)頁信息交互技術(shù)要點及優(yōu)勢[J].產(chǎn)業(yè)與科技論壇,2016,15(09):86黃寧.基于MySQL數(shù)據(jù)庫安全研究[J].科學(xué)中國人,2017(2X):16-17FrankM.Kromann.UsingMySQLDatabases[J].PHPandMySQLRecipes.2016:333-356陳年飛,王麒森,王志勃.MySQL數(shù)據(jù)庫中關(guān)于索引的研究[J].信息與電腦(理論版),2019(05):175-176RashmiParab;NilimaNikam.DatabaseSecurityTechniqueWithDatabaseCache[J].InternationalJournalofScientific&TechnologyResearch.2017,Vol.6(No.12):184-187

附錄源程序清單由于本系統(tǒng)全部代碼過多,所以本章只附核心模塊代碼。庫存模塊:publicclassStockActionextendsActionSupport{ /** * */ privatestaticfinallongserialVersionUID=-6139229070608157488L; privateStockinfotablestock; privateBaseService<Stockinfotable>stockService; privateList<Stockinfotable>stoList; privateList<Stockinfotable>stocks=newArrayList<Stockinfotable>(); privateStringstoText,stoValue; privatePagerpager=newPager(); /** *根據(jù)條件查詢 *@param *@returnString */ publicStringqueryStock(){ stoText=getParam("sName"); stoValue=getParam("sValue"); stoList=stockService.queryStock(stoText,stoValue,Stockinfotable.class); if(stocks!=null) stocks.removeAll(stocks); if(pager.getTotalSize()==0) pager.setTotalSize(stoList.size()); if(pager.getPageNow()<pager.getTotalPage()-1||pager.getTotalSize()%pager.getPageSize()==0){ for(inti=pager.getPageNow()*pager.getPageSize();i<(pager.getPageNow()+1)*pager.getPageSize();i++){ stocks.add(stoList.get(i)); } } else{ for(inti=pager.getPageNow()*pager.getPageSize();i<pager.getPageNow()*pager.getPageSize()+pager.getTotalSize()%pager.getPageSize();i++){ stocks.add(stoList.get(i)); } } Logintablelt=(Logintable)ActionContext.getContext().getSession().get("loginuser"); intm=0; if("2".equals(lt.getPowId())){ m=1; }else{ m=0; } returnSUCCESS+"Stock"+m; } /** *分頁模塊 *@return */ publicStringturnFirst(){ IntegertSize=Integer.parseInt(getParam("tSize")); pager.setTotalSize(tSize); pager.setPageNow(0); returnqueryStock(); } publicStringturnPre(){ IntegertSize=Integer.parseInt(getParam("tSize")); Integerpg=Integer.parseInt(getParam("pNow")); pg=pg-1; pager.setPageNow(pg); pager.setTotalSize(tSize); returnqueryStock(); } publicStringturnNext(){ Integerpg=Integer.parseInt(getParam("pNow")); IntegertSize=Integer.parseInt(getParam("tSize")); pg=pg+1; pager.setPageNow(pg); pager.setTotalSize(tSize); returnqueryStock(); } publicStringturnLast(){ IntegertSize=Integer.parseInt(getParam("tSize")); Integerpg=Integer.parseInt(getParam("pNow")); pager.setTotalSize(tSize); pager.setPageNow(pg); returnqueryStock(); } publicStringturnChoosePage(){ IntegertSize=Integer.parseInt(getParam("tSize")); IntegerpageNum=Integer.parseInt(getParam("pageNum")); pageNum=pageNum-1; pager.setPageNow(pageNum); pager.setTotalSize(tSize); returnqueryStock(); } /** *修改 *@param *@returnString */ publicStringmodifyStock(){ try{ Integerparam=Integer.parseInt(getParam("param")); if(param==0){ Integerid=Integer.parseInt(getParam("id")); stock=stockService.getObject(Stockinfotable.class,id); return"modifyStock"; }elseif(param==1){ stockService.modifyObject(stock); } }catch(Exceptione){ e.printStackTrace(); } returnqueryStock(); } publicvoidinStock(){ try{ stoText="stoId"; stoValue=getParam("singoodid"); intcount=Integer.parseInt(getParam("count")); stoList=stockService.queryStock(stoText,stoValue,Stockinfotable.class); if(stoList.size()>0) stock=stoList.get(0); else { stock=newStockinfotable(); } count+=stock.getStoNumber(); stock.setStoNumber(count); System.out.println(count); stockService.modifyObject(stock); HttpServletResponseresponse=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); JSONArrayjsonarry=JSONArray.fromObject("[{'result':'success'}]"); response.getWriter().write(jsonarry.toString()); }catch(Exceptione){ e.printStackTrace(); } } publicvoidgetWarnStock(){ try{ stoList=stockService.queryStock(stoText,stoValue,Stockinfotable.class); if(stocks!=null) stocks.removeAll(stocks); for(inti=0;i<stoList.size();i++){ stock=stoList.get(i); if(stock.getStoNumber()<stock.getStoDownWarn()&&stock.getStoNumber()>=stock.getStoDownDanger()){ stocks.add(stock); }elseif(stock.getStoNumber()>stock.getStoUpWarn()&&stock.getStoNumber()<=stock.getStoUpDanger()){ stocks.add(stock); } } HttpServletResponseresponse=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); JSONArrayjsonarry=JSONArray.fromObject(stocks); response.getWriter().write(jsonarry.toString()); }catch(Exceptione){ e.printStackTrace(); } } publicvoidgetDangerStock(){ try{ stoList=stockService.queryStock(stoText,stoValue,Stockinfotable.class); if(stocks!=null) stocks.removeAll(stocks); for(inti=0;i<stoList.size();i++){ stock=stoList.get(i); if(stock.getStoNumber()<stock.getStoDownDanger()){ stocks.add(stock); }elseif(stock.getStoNumber()>stock.getStoUpDanger()){ stocks.add(stock); } } HttpServletResponseresponse=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); JSONArrayjsonarry=JSONArray.fromObject(stocks); response.getWriter().write(jsonarry.toString()); }catch(Exceptione){ e.printStackTrace(); } } publicvoidoutStock(){ try{ stoText="stoId"; stoValue=getParam("soutgoodid"); intcount=Integer.parseInt(getParam("count")); stoList=stockService.queryStock(stoText,stoValue,Stockinfotable.class); stock=stoList.get(0); count=stock.getStoNumber()-count; Stringstr=""; if(count<0){ str="[{'result':'"+count+"'}]"; }else{ str="[{'result':'success'}]"; stock.setStoNumber(count); stockService.modifyObject(stock); } System.out.println(count); HttpServletResponseresponse=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); JSONArrayjsonarry=JSONArray.fromObject(str); response.getWriter().write(jsonarry.toString()); }catch(Exceptione){ e.printStackTrace(); } } /** *添加 *@param *@returnString */ publicStringaddStock(){ try{ Integerparam=Integer.parseInt(getParam("param")); if(param>0){ stockService.addObject(stock); }else return"addStock"; }catch(Exceptione){ e.printStackTrace(); } returnqueryStock(); } /** *刪除 *@param *@returnString */ publicStringdeleteStock(){ try{ Integerid=Integer.parseInt(getParam("id")); stockService.deleteObject(Stockinfotable.class,id); }catch(Exceptione){ e.printStackTrace(); } returnqueryStock(); } /** *獲取表單節(jié)點值 *@paramkey *@returnString */ protectedStringgetParam(Stringkey){ returnServletActionContext.getRequest().getParameter(key); } publicStockinfotablegetStock(){ returnstock; } publicvoidsetStock(Stockinfotablestock){ this.stock=stock; } publicBaseService<Stockinfotable>getStockService(){ returnstockService; } publicvoidsetStockService(BaseService<Stockinfotable>stockService){ this.stockService=stockService; } publicList<Stockinfotable>getStoList(){ returnstoList; } publicList<Stockinfotable>getStocks(){ returnstocks; } publicStringgetStoText(){ returnstoText; } publicvoidsetStoText(StringstoText){ this.stoText=stoText; } publicStringgetStoValue(){ returnstoValue; } publicvoidsetStoValue(StringstoValue){ this.stoValue=stoValue; } publicPagergetPager(){ returnpager; } publicvoidsetPager(Pagerpager){ this.pager=pager; }}驗證碼:publicclassMakeCertPic{ privatechar[]mapTable={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e', 'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U', 'V','W','X','Y','Z'}; publicStringgetCertPic(intwidth,intheight,OutputStreamos){ if(width<=0) width=80; if(height<=0) height=30; BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_BGR); Graphicsg=image.getGraphics(); g.setColor(newColor(0xDCDCDC));//背景色 g.fillRect(0,0,width,height); g.setColor(Color.black);//邊框色 g.drawRect(0,0,width-1,height-1); StringstrEnsure=""; for(inti=0;i<5;i++){ strEnsure+=mapTable[(int)(mapTable.length*Math.random())]; } g.setColor(Color.black); g.setFont(newFont("AtlanticInline",Font.PLAIN,20)); Stringstr=strEnsure.substring(0,1); g.drawString(str,5,25); g.setColor(Color.green); str=strEnsure.substring(1,2); g.drawString(str,20,20); g.setColor(Color.orange); str=strEnsure.substring(2,3); g.drawString(str,35,15); g.setColor(Color.black); str=strEnsure.substring(3,4); g.drawString(str,50,19); g.setColor(Color.blue); str=strEnsure.substring(4,5); g.drawString(str,64,28); Randomrand=newRandom();//產(chǎn)生干擾點 for(inti=0;i<20;i++){ intx=rand.nextInt(width); inty=rand.nextInt(height); g.setColor(Color.BLACK); g.drawOval(x,y,2,2); } g.dispose(); try{ ImageIO.write(image,"JPEG",os); // os.flush(); os.close(); os=null; }catch(IOExceptione){ returnstrEnsure.toLowerCase(); } returnstrEnsure.toLowerCase(); }}

電腦故障檢測卡代碼表

1、特殊代碼"00"和"ff"及其它起始碼有三種情況出現(xiàn):

①已由一系列其它代碼之后再出現(xiàn):"00"或"ff",則主板ok。

②如果將cmos中設(shè)置無錯誤,則不嚴(yán)重的故障不會影響bios自檢的繼續(xù),而最終出現(xiàn)"00"或"ff"。

③一開機(jī)就出現(xiàn)"00"或"ff"或其它起始代碼并且不變化則為主板沒有運行起來。

2、本表是按代碼值從小到大排序,卡中出碼順序不定。

3、未定義的代碼表中未列出。

4、對于不同bios(常用ami、award、phoenix)用同一代碼代表的意義不同,因此應(yīng)弄清您所檢測的電腦是屬于哪一種類型的bios,您可查閱您的電腦使用手冊,或從主板上的bios芯片上直接查看,也可以在啟動屏幕時直接看到。

5、有少數(shù)主板的pci槽只有一部分代碼出現(xiàn),但isa槽有完整自檢代碼輸出。且目前已發(fā)現(xiàn)有極個別原裝機(jī)主板的isa槽無代碼輸出,而pci槽則有完整代碼輸出,故建議您在查看代碼不成功時,將本雙槽卡換到另一種插槽試一下。另外,同一塊主板的不同pci槽,有的槽有完整代碼送出,如dell810主板只有靠近cpu的一個pci槽有完整代碼顯示,一直變化到"00"或"ff",而其它pci槽走到"38"后則不繼續(xù)變化。

6、復(fù)位信號所需時間isa與pci不一定同步,故有可能isa開始出代碼,但pci的復(fù)位燈還不熄,故pci代碼停要起始代碼上。

代碼對照表

00.已顯示系統(tǒng)的配置;即將控制INI19引導(dǎo)裝入。

01處理器測試1,處理器狀態(tài)核實,如果測試失敗,循環(huán)是無限的。處理器寄存器的測試即將開始,不可屏蔽中斷即將停用。CPU寄存器測試正在進(jìn)行或者失敗。

02確定診斷的類型(正?;蛘咧圃欤H绻I盤緩沖器含有數(shù)據(jù)就會失效。停用不可屏蔽中斷;通過延遲開始。CMOS寫入/讀出正在進(jìn)行或者失靈。

03清除8042鍵盤控制器,發(fā)出TESTKBRD命令(AAH)通電延遲已完成。ROMBIOS檢查部件正在進(jìn)行或失靈。

04使8042鍵盤控制器復(fù)位,核實TESTKBRD。鍵盤控制器軟復(fù)位/通電測試??删幊涕g隔計時器的測試正在進(jìn)行或失靈。

05如果不斷重復(fù)制造測試1至5,可獲得8042控制狀態(tài)。已確定軟復(fù)位/通電;即將啟動ROM。DMA初如準(zhǔn)備正在進(jìn)行或者失靈。

06使電路片作初始準(zhǔn)備,停用視頻、奇偶性、DMA電路片,以及清除DMA電路片,所有頁面寄存器和CMOS停機(jī)字節(jié)。已啟動ROM計算ROMBIOS檢查總和,以及檢查鍵盤緩沖器是否清除。DMA初始頁面寄存器讀/寫測試正在進(jìn)行或失靈。

07處理器測試2,核實CPU寄存器的工作。ROMBIOS檢查總和正常,鍵盤緩沖器已清除,向鍵盤發(fā)出BAT(基本保證測試)命令。.

08使CMOS計時器作初始準(zhǔn)備,正常的更新計時器的循環(huán)。已向鍵盤發(fā)出BAT命令,即將寫入BAT命令。RAM更新檢驗正在進(jìn)行或失靈。

09EPROM檢查總和且必須等于零才通過。核實鍵盤的基本保證測試,接著核實鍵盤命令字節(jié)。第一個64KRAM測試正在進(jìn)行。

0A使視頻接口作初始準(zhǔn)備。發(fā)出鍵盤命令字節(jié)代碼,即將寫入命令字節(jié)數(shù)據(jù)。第一個64KRAM芯片或數(shù)據(jù)線失靈,移位。

0B測試8254通道0。寫入鍵盤控制器命令字節(jié),即將發(fā)出引腳23和24的封鎖/解鎖命令。第一個64KRAM奇/偶邏輯失靈。

0C測試8254通道1。鍵盤控制器引腳23、24已封鎖/解鎖;已發(fā)出NOP命令。第一個64KRAN的地址線故障。

0D1、檢查CPU速度是否與系統(tǒng)時鐘相匹配。2、檢查控制芯片已編程值是否符合初設(shè)置。3、視頻通道測試,如果失敗,則鳴喇叭。已處理NOP命令;接著測試CMOS停開寄存器。第一個64KRAM的奇偶性失靈

0E測試CMOS停機(jī)字節(jié)。CMOS停開寄存器讀/寫測試;將計算CMOS檢查總和。初始化輸入/輸出端口地址。

0F測試擴(kuò)展的CMOS。已計算CMOS檢查總和寫入診斷字節(jié);CMOS開始初始準(zhǔn)備。.

10測試DMA通道0。CMOS已作初始準(zhǔn)備,CMOS狀態(tài)寄存器即將為日期和時間作初始準(zhǔn)備。第一個64KRAM第0位故障。

11測試DMA通道1。CMOS狀態(tài)寄存器已作初始準(zhǔn)備,即將停用DMA和中斷控制器。第一個64DKRAM第1位故障。

12測試DMA頁面寄存器。停用DMA控制器1以及中斷控制器1和2;即將視頻顯示器并使端口B作初始準(zhǔn)備。第一個64DKRAM第2位故障。

13測試8741鍵盤控制器接口。視頻顯示器已停用,端口B已作初始準(zhǔn)備;即將開始電路片初始化/存儲器自動檢測。第一個64DKRAM第3位故障。

14測試存儲器更新觸發(fā)電路。電路片初始化/存儲器處自動檢測結(jié)束;8254計時器測試即將開始。第一個64DKRAM第4位故障。

15測試開頭64K的系統(tǒng)存儲器。第2通道計時器測試了一半;8254第2通道計時器即將完成測試。第一個64DKRAM第5位故障。

16建立8259所用的中斷矢量表。第2通道計時器測試結(jié)束;8254第1通道計時器即將完成測試。第一個64DKRAM第6位故障。

17調(diào)準(zhǔn)視頻輸入/輸出工作,若裝有視頻BIOS則啟用。第1通道計時器測試結(jié)束;8254第0通道計時器即將完成測試。第一個64DKRAM第7位故障。

18測試視頻存儲器,如果安裝選用的視頻BIOS通過,由可繞過。第0通道計時器測試結(jié)束;即將開始更新存儲器。第一個64DKRAM第8位故障。

19測試第1通道的中斷控制器(8259)屏蔽位。已開始更新存儲器,接著將完成存儲器的更新。第一個64DKRAM第9位故障。

1A測試第2通道的中斷控制器(8259)屏蔽位。正在觸發(fā)存儲器更新線路,即將檢查15微秒通/斷時間。第一個64DKRAM第10位故障。

1B測試CMOS電池電平。完成存儲器更新時間30微秒測試;即將開始基本的64K存儲器測試。第一個64DKRAM第11位故障。

1C測試CMOS檢查總和。.第一個64DKRAM第12位故障。

1D調(diào)定CMOS配置。.第一個64DKRAM第13位故障。

1E測定系統(tǒng)存儲器的大小,并且把它和CMOS值比較。.第一個64DKRAM第14位故障。

1F測試64K存儲器至最高640K。.第一個64DKRAM第15位故障。

20測量固定的8259中斷位。開始基本的64K存儲器測試;即將測試地址線。從屬DMA寄存器測試正在進(jìn)行或失靈。

21維持不可屏蔽中斷(NMI)位(奇偶性或輸入/輸出通道的檢查)。通過地址線測試;即將觸發(fā)奇偶性。主DMA寄存器測試正在進(jìn)行或失靈。

22測試8259的中斷功能。結(jié)束觸發(fā)奇偶性;將開始串行數(shù)據(jù)讀/寫測試。主中斷屏蔽寄存器測試正在進(jìn)行或失靈。

23測試保護(hù)方式8086虛擬方式和8086頁面方式。基本的64K串行數(shù)據(jù)讀/寫測試正常;即將開始中斷矢量初始化之前的任何調(diào)節(jié)。從屬中斷屏蔽存器測試正在進(jìn)行或失靈。

24測定1MB以上的擴(kuò)展存儲器。矢量初始化之前的任何調(diào)節(jié)完成,即將開始中斷矢量的初始準(zhǔn)備。設(shè)置ES段地址寄存器注冊表到內(nèi)存高端。

25測試除頭一個64K之后的所有存儲器。完成中斷矢量初始準(zhǔn)備;將為旋轉(zhuǎn)式斷續(xù)開始讀出8042的輸入/輸出端口。裝入中斷矢量正在進(jìn)行或失靈。

26測試保護(hù)方式的例外情況。讀出8042的輸入/輸出端口;即將為旋轉(zhuǎn)式斷續(xù)開始使全局?jǐn)?shù)據(jù)作初始準(zhǔn)備。開啟A20地址線;使之參入尋址。

27確定超高速緩沖存儲器的控制或屏蔽RAM。全1數(shù)據(jù)初始準(zhǔn)備結(jié)束;接著將進(jìn)行中斷矢量之后的任何初始準(zhǔn)備。鍵盤控制器測試正在進(jìn)行或失靈。

28確定超高速緩沖存儲器的控制或者特別的8042鍵盤控制器。完成中斷矢量之后的初始準(zhǔn)備;即將調(diào)定單色方式。CMOS電源故障/檢查總和計算正在進(jìn)行。

29.已調(diào)定單色方式,即將調(diào)定彩色方式。CMOS配置有效性的檢查正在進(jìn)行。

2A使鍵盤控制器作初始準(zhǔn)備。已調(diào)定彩色方式,即將進(jìn)行ROM測試前的觸發(fā)奇偶性。置空64K基本內(nèi)存。

2B使磁碟驅(qū)動器和控制器作初始準(zhǔn)備。觸發(fā)奇偶性結(jié)束;即將控制任選的視頻ROM檢查前所需的任何調(diào)節(jié)。屏幕存儲器測試正在進(jìn)行或失靈。

2C檢查串行端口,并使之作初始準(zhǔn)備。完成視頻ROM控制之前的處理;即將查看任選的視頻ROM并加以控制。屏幕初始準(zhǔn)備正在進(jìn)行或失靈。

2D檢測并行端口,并使之作初始準(zhǔn)備。已完成任選的視頻ROM控制,即將進(jìn)行視頻ROM回復(fù)控制之后任何其他處理的控制。屏幕回掃測試正在進(jìn)行或失靈。

2E使硬磁盤驅(qū)動器和控制器作初始準(zhǔn)備。從視頻ROM控制之后的處理復(fù)原;如果沒有發(fā)現(xiàn)EGA/VGA就要進(jì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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論