ssm基于javaweb的医疗健康知识管理系统设计与实现 毕业设计-附源码131903
目 ?錄
摘要 1
1 緒論 1
1.1 研究背景 1
1.2研究現狀 1
1.3論文結構與章節安排 1
2?醫療健康知識管理系統分析 3
2.1 可行性分析 3
2.2 系統流程分析 3
2.2.1 數據增加流程 3
2.2.2 數據修改流程 4
2.2.3數據刪除流程 4
2.3 系統功能分析 4
2.3.1功能性分析 4
2.3.2非功能性分析 5
2.4 系統用例分析 6
2.5本章小結 7
3 醫療健康知識管理總體設計 8
3.1 系統架構設計 8
3.2 系統功能模塊設計 8
3.2.1整體功能模塊設計 9
3.2.2用戶模塊設計 9
3.2.3 評論管理模塊設計 10
3.2.4醫生管理模塊設計 10
3.3 數據庫設計 10
3.3.1 數據庫概念結構設計 10
3.3.2 數據庫邏輯結構設計 14
3.4本章小結 17
4?醫療健康知識管理詳細設計與實現 18
4.1用戶功能模塊 18
4.1.1 前臺首頁界面 18
4.1.2 用戶注冊界面 18
4.1.3 用戶登錄界面 22
4.1.4留言板界面 24
4.1.5 我的賬戶界面 24
4.1.6 醫生詳情界面 25
4.3管理員功能模塊 26
4.3.1 公告內容管理界面 26
4.3.2 用戶管理界面 28
4.3.3 留言交流界面 28
4.3.4 模塊管理界面 29
5系統測試 31
5.1系統測試的目的 31
5.2 系統測試用例 31
5.3 系統測試結果 32
結論 33
參考文獻 34
致??謝 35
摘要
信息化社會內需要與之針對性的信息獲取途徑,但是途徑的擴展基本上為人們所努力的方向,由于站在的角度存在偏差,人們經常能夠獲得不同類型信息,這也是技術最為難以攻克的課題。針對醫療健康知識管理等問題,對醫療健康知識管理進行研究分析,然后開發設計出醫療健康知識管理以解決問題。
醫療健康知識管理主要功能模塊包括用戶管理、醫生介紹、醫生咨詢、知識分類、知識園地,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用SSM框架、JAVA技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對醫療健康知識管理的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現醫療健康知識管理和部署運行使用它。
關鍵詞:SSM技術;MYSQL;醫療健康知識管理
Abstract
In the information society, there is a need for targeted information access, but the expansion of access is basically the direction of people's efforts. Due to the deviation of the perspective, people can often obtain different types of information, which is also the most difficult subject for technology to overcome. Aiming at the problems of medical and health knowledge management, this paper studies and analyzes the medical and health knowledge management, and then develops and designs the medical and health knowledge management to solve the problems.
The main functional modules of medical and health knowledge management include user management, doctor introduction, doctor consultation, knowledge classification and knowledge garden. The object-oriented development mode is adopted for software development and hardware erection, which can well meet the needs of practical use, improve the corresponding software erection and program coding, take MySQL as the main storage unit of background data, adopt SSM framework, Java technology Ajax technology encodes and develops the business system, and realizes all the functions of the system. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. Based on the analysis of various requirements and technical problems of medical and health knowledge management, this paper proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design idea needed to design the system, and finally realizes the medical and health knowledge management and deployment.
Keywords:SSM technology; MYSQL; Medical and health knowledge management
1 緒論
1.1 研究背景
隨著網絡信息大爆炸時代的到來,人們獲取信息越來越方便和快捷。但是,在享受互聯網帶來便利與便捷的同時也面臨著巨大的風險。其中最主要的是:信息資源分散、共享困難;信息獲取渠道不通暢,導致“信息過載”;缺乏有效的信息過濾技術;用戶對個性化需求理解不足等問題。針對上述問題,本文提出了基于mysql數據庫(WOS)上的醫療健康領域文獻數據集進行醫療健康知識管理系統設計的方案,旨在為醫院管理者提供一個快速檢索并獲得相關醫療健康知識的平臺,從而提高醫務人員工作效率和質量,降低患者就醫成本。系統采用B/S結構,java作為開發語言,使用JAVA+MySQL作為后臺服務器。論文首先分析了國內外現有醫療健康知識管理現狀以及存在的問題,指出目前國內醫療健康知識管理模式的不足之處,結合當前主流信息技術及醫學發展動態,確定了以Web服務模式實現醫療健康知識管理系統的目標。其次對系統進行詳細功能分析和總體設計,包括系統功能模型設計、業務流程設計、數據庫結構設計和界面設計。最后根據系統設計方案,完成系統各個功能模塊的編碼工作。通過測試,本課題所構建的醫療健康知識管理系統能夠滿足日常應用中的各項業務要求,具有良好的可擴展性和可維護性。該系統對提升我國醫療機構信息化管理水平有重要意義,將推動整個醫療行業向現代化方向邁進。此外,還可以使醫生從繁重的重復操作中解放出來,減輕他們的勞動強度,提高診療效率。因此,該系統的成功實施對于促進我國醫療信息化建設有著深遠而積極的作用。但由于該項目涉及到大量的理論和實際經驗,所以其后續改進完善還有待進一步探索。
1.2研究現狀
隨著社會的發展和醫學科學的進步,人們對疾病的認識也在不斷加深。從最初單純的生物醫學模式逐漸轉變為生物-心理-社會醫學模式,而這一變化與人類對自身健康狀況的關注是密不可分的,因此,建立一個完善的醫療健康知識管理體系已成為當前醫院管理工作中亟待解決的問題之一。目前我國醫療領域還沒有一套完整有效的信息采集系統,使得醫生無法全面掌握患者所需要了解的相關內容,從而不能及時地制定相應的治療措施。為了提高醫院管理水平,必須建立一整套完善的醫療健康知識管理。本文旨在研究構建基于云計算技術的醫療健康知識管理系統,并對系統實現過程中可能出現的一些關鍵問題和技術難點進行探討。同時提出解決這些問題的具體解決方案。最終達到促進醫療機構信息化建設發展的目的。
1.3論文結構與章節安排
論文將分層次經行編排,除去論文摘要致謝文獻參考部分,正文部分還會對網站需求做出分析,以及闡述大體的設計和實現的功能,最后羅列部分調測記錄,論文主要架構如下:
第一章:緒論。第一章主要介紹了課題研究的背景,系統開發的現狀和本文的研究內容與主要工作。
第二章:系統需求分析。第二章主要從系統的用戶、功能等方面進行需求分析。
第三章:系統設計。第三章主要對系統框架、系統功能模塊、數據庫進行功能設計。
第四章:系統實現。第四章主要介紹了系統框架搭建、系統界面的實現。
第五章:系統測試。第五章主要對系統的部分界面進行測試并對主要功能進行測試
第六章:總結。
2?醫療健康知識管理分析
系統分析是開發一個項目的先決條件,通過系統分析可以很好的了解系統的主體用戶的基本需求情況,同時這也是項目的開發的原因。進而對系統開發進行可行性分析,通常包括技術可行性、經濟可行性等,可行性分析同時也是從項目整體角度進行的分析。然后就是對項目的具體需求進行分析,分析的手段一般都是通過用戶的用例圖來實現。下面是詳細的介紹。
2.1 可行性分析
(1)經濟可行性:
在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發前期,開發時用于項目的經費將會大大降低,不會讓開發該軟件在項目啟動期受到經費的影響,所以經濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經費用于人工費,以及設備費用。將在無紙化,高效率的道路上越走越遠。
所以經濟可行性沒有問題。
(2)操作可行性:
此次項目設計參考了幾個該模式下網站的開發案例,對他們的操作界面分析,將眾多案例結合在一起,突出以人為本簡化操作,所以具有基本計算機知識的人都會操作本項目。
因此操作可行性也沒有問題。
(3)技術可行性:
技術可行性指的是對于搭建框架的可行性,以及有更優秀的技術出現時系統的技術更新換代的納新性如何,開發時間成本費用比如何。
現有的Java技術能夠迎合所有電子商務系統的搭建。開發這個醫療健康知識管理的時候我采用了Java+MYSQL用以運行整體程序。
綜上所述技術可行性也沒有問題。
(4)法律可行性:
從開發者角度來看,Java和MYSQL是網上開源且免費的,在知識產權方面不會產生任何法律糾紛。
從用戶使用角度來看,只要不再系統上販賣違禁品,對系統做出條約協議,杜絕非法支付即可。
綜上所述法律可行性也沒有問題。
2.2 系統流程分析
業務流程是用一些特定的符合和線條來進行演示用戶在使用系統時的過程,在進行系統分析的時候,業務流程可以幫助開發人員更好的理解業務,發現錯誤,完善系統。
2.2.1 數據增加流程
用戶成功登入系統后就能夠實現增加數據的操作,增加數據的編號是特定的,系統生成,用戶不能隨意填寫,除了編號以外,其他增加信息用戶自己填寫,填寫后的信息經過系統驗證,驗證合法通過就顯示增加數據成功了,相反的話,就沒有增加成功,圖2-1顯示的就是在增加數據時的流程。
?
圖2-1 ?數據增加流程圖
2.2.2 數據修改流程
數據修改時的流程和上面介紹的數據增加時的流程差不多,如圖2-2所示。
?
圖2-2 ?數據修改流程圖
2.2.3 數據刪除流程
如果系統里面存在一些沒有用的數據的話,相關的管理人員還可以對這些數據進行刪除,圖2-3就是數據刪除時的流程圖。
?
圖2-3 ?數據刪除流程圖
2.3?系統功能分析
2.3.1 功能性分析
按照醫療健康知識管理的角色,我劃分為了注冊用戶管理模塊、健康醫生管理模塊和管理員管理模塊這三大部分。
用戶管理模塊:
(1)用戶注冊登錄:用戶注冊為會員并登錄醫療健康知識管理;用戶對個人信息的增刪改查,比如個人資料,密碼修改。
(3)公告欄:在首頁導航欄上我們會看到“公告消息”這一菜單,我們點擊進入進去以后,會看到所有管理員在后臺發布的公告信息;
(4)新鮮事動態:在首頁導航欄上我們會看到“新鮮事動態”這一菜單,我們點擊進入進去以后,會看到所有管理員在后臺發布的新鮮事動態信息,能夠對喜歡的新鮮事動態進行點贊,如果下次想要更快的找到這篇資訊,也可以進行收藏、評論;
(5)醫生介紹:在首頁導航欄上我們會看到“醫生介紹”這一菜單,我們點擊進入進去以后,會看到所有管理員在后臺發布的醫生介紹信息,我們選擇想要了解醫生的咨詢信息,可以咨詢+點贊+收藏+評論;
(6)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以對不喜歡的信息進行刪除收藏;
(6)我的賬戶:當用戶點擊右上角“我的”這個按鈕,會出現子菜單,點擊“我的賬戶”可以對個人的資料以及登錄系統的密碼進行設置;
(7)個人中心:當用戶點擊右上角“我的”這個按鈕,就會進入到對應的后臺進行信息的管理了;
管理員管理模塊:
(1)登錄:管理員的賬號是在數據表表中直接設置生成的,不需要進行注冊;
(2)公告內容管理:當點擊“公告內容管理”這一菜單的時候,會出現輪播圖+公告欄兩個子菜單,可以對這兩個模塊進行增刪改查操作;
(3)系統用戶管理:當點擊“系統用戶管理”這一菜單的時候,會出現管理員+健康醫生+注冊用戶三個子菜單,可以對這三個模塊進行增刪改查操作;
(4)內容模塊管理:當點擊“內容管理”這一菜單的時候,會出現留言交流+留言分類+新鮮是動態+動態分類+在線測試這五個子菜單,能夠對用戶在前臺提交的留言交流進行管理,同時對前臺展示的在線測試+新鮮是動態信息進行增刪改查操作;
(5)模塊管理:當點擊“模塊”這一菜單的時候,會出現醫生介紹+醫生咨詢+知識分類+知識園地這四個子菜單,能夠對這四個模塊進行增刪改查操作;
2.3.2 非功能性分析
醫療健康知識管理的非功能性需求比如醫療健康知識管理的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下3-1表格中:
表3-1醫療健康知識管理非功能需求表
| 安全性 | 主要指醫療健康知識管理數據庫的安裝,數據庫的使用和密碼的設定必須合乎規范。 |
| 可靠性 | 可靠性是指醫療健康知識管理能夠安裝用戶的指示進行操作,經過測試,可靠性90%以上。 |
| 性能 | 性能是影響醫療健康知識管理占據市場的必要條件,所以性能最好要佳才好。 |
| 可擴展性 | 比如數據庫預留多個屬性,比如接口的使用等確保了系統的非功能性需求。 |
| 易用性 | 用戶只要跟著醫療健康知識管理的頁面展示內容進行操作,就可以了。 |
| 可維護性 | 醫療健康知識管理開發的可維護性是非常重要的,經過測試,可維護性沒有問題 |
2.4?系統用例分析
通過2.3功能的分析,得出了本醫療健康知識管理的用例圖:
用戶角色用例如圖2-3所示。
?
圖2-3?醫療健康知識管理用戶角色用例圖
web后臺管理上的管理員是維護整個醫療健康知識管理中所有數據信息的。健康醫生角色用例如圖2-4所示。
?
圖2-4醫療健康知識管理健康醫生角色用例圖
web后臺管理上的管理員是維護整個醫療健康知識管理中所有數據信息的。管理員角色用例如圖2-5所示。
?
圖2-5醫療健康知識管理管理員角色用例圖
2.5本章小結
本章主要通過對醫療健康知識管理的可行性分析、流程分析、功能需求分析、系統用例分析,確定整個醫療健康知識管理要實現的功能。同時也為醫療健康知識管理的代碼實現和測試提供了標準。
3 醫療健康知識管理總體設計
本章主要討論的內容包括醫療健康知識管理的功能模塊設計、數據庫系統設計。
3.1 系統架構設計
本醫療健康知識管理從架構上分為三層:表現層(UI)、業務邏輯層(BLL)以及數據層(DL)。
圖3-1醫療健康知識管理系統架構設計圖
?
表現層(UI):又稱UI層,主要完成本醫療健康知識管理的UI交互功能,一個良好的UI可以打打提高用戶的用戶體驗,增強用戶使用本醫療健康知識管理時的舒適度。UI的界面設計也要適應不同版本的醫療健康知識管理以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用戶進行交互操作時必須要得到與之相符的交互結果,這就要求表現層要與業務邏輯層進行良好的對接。
業務邏輯層(BLL):主要完成本醫療健康知識管理的數據處理功能。用戶從表現層傳輸過來的數據經過業務邏輯層進行處理交付給數據層,系統從數據層讀取的數據經過業務邏輯層進行處理交付給表現層。
數據層(DL):由于本醫療健康知識管理的數據是放在服務端的mysql數據庫中,因此本屬于服務層的部分可以直接整合在業務邏輯層中,所以數據層中只有數據庫,其主要完成本醫療健康知識管理的數據存儲和管理功能。
3.2?系統功能模塊設計
3.2.1整體功能模塊設計
在上一章節中主要對系統的功能性需求和非功能性需求進行分析,并且根據需求分析了本醫療健康知識管理中的用例。那么接下來就要開始對本醫療健康知識管理的架構、主要功能和數據庫開始進行設計。醫療健康知識管理根據前面章節的需求分析得出,其總體設計模塊圖如圖3-2所示。
?
圖3-2?醫療健康知識管理功能模塊圖
3.2.2用戶模塊設計
后臺管理者能夠實現對前臺注冊的用戶增刪改查操作,用戶模塊結構圖如下圖:
?
圖3-3會員用戶模塊結構圖
3.2.3?評論管理模塊設計
醫療健康知識管理是一個交流性質的公開平臺,會員用戶可以在平臺上交流,增加用戶之間的互動性。但是同時也為了更好的規范留言的內容,給予管理員刪除不合適的言論的功能,所以需要專門設計一個留言管理模塊,具體的結構圖如下:
?
圖3-4留言模塊結構圖
3.2.4醫生管理模塊設計
醫療健康知識管理是中需要存儲不少醫生介紹信息,其模塊功能結構,具體的結構圖如下:
?
圖3-5醫生模塊結構圖
3.3 數據庫設計
數據庫設計一般包括需求分析、概念模型設計、數據庫表建立三大過程,其中需求分析前面章節已經闡述,概念模型設計有概念模型和邏輯結構設計兩部分。
3.3.1 數據庫概念結構設計
下面是整個醫療健康知識管理中主要的數據庫表總E-R實體關系圖。
圖3-6?醫療健康知識管理總E-R關系圖
?
下面根據醫療健康知識管理的數據庫總E-R關系圖可以得出醫療健康知識管理需要很多E-R圖,在此羅列出來一些主要的數據庫E-R模型圖。
?
圖3-7健康醫生E-R關系圖
?
圖3-8?醫生咨詢E-R關系圖
?
圖3-9?醫生介紹E-R關系圖
?
圖3-10?評論E-R關系圖
3.3.2 數據庫邏輯結構設計
通過上一小節中醫療健康知識管理中總E-R關系圖上得出一共需要創建很多個數據表。在此我主要羅列幾個主要的數據庫表結構設計。
registered_user表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| registered_user_id | int | 11 | 是 | 是 | 注冊用戶ID |
| user_number | varchar | 64 | 是 | 否 | 用戶編號 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | int | 11 | 否 | 否 | 年齡 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| knowledge_classification表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| knowledge_classification_id | int | 11 | 是 | 是 | 知識分類ID |
| knowledge_category | varchar | 64 | 否 | 否 | 知識類別 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| health_doctor表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| health_doctor_id | int | 11 | 是 | 是 | 健康醫生ID |
| doctor_job_number | varchar | 64 | 是 | 否 | 醫生工號 |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫生姓名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| exam_question表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| exam_question_id | mediumint | 8 | 是 | 是 | |
| type | varchar | 20 | 否 | 否 | 類型 |
| title | varchar | 255 | 否 | 否 | 題目 |
| question_item | varchar | 500 | 否 | 否 | 選項 |
| answer | varchar | 500 | 否 | 否 | 參考答案 |
| score | double | 8 | 否 | 否 | 總分 |
| question_order | int | 11 | 否 | 否 | 排序 |
| exam_id | mediumint | 8 | 否 | 否 | 所屬試卷 |
| create_time | timestamp | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| doctor_consultation表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| doctor_consultation_id | int | 11 | 是 | 是 | 醫生咨詢ID |
| doctor_job_number | int | 11 | 否 | 否 | 醫生工號 |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫生姓名 |
| user | int | 11 | 否 | 否 | 用戶 |
| consulting_questions | text | 0 | 否 | 否 | 咨詢問題 |
| doctor_reply | text | 0 | 否 | 否 | 醫生回復 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| ask_the_doctor表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| ask_the_doctor_id | int | 11 | 是 | 是 | 問醫生ID |
| doctor_job_number | int | 11 | 否 | 否 | 醫生工號 |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫生姓名 |
| photo | varchar | 255 | 否 | 否 | 照片 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| entire_period_of_actual_operation | varchar | 64 | 否 | 否 | 從業年限 |
| areas_of_expertise | text | 0 | 否 | 否 | 擅長領域 |
| details | longtext | 0 | 否 | 否 | 詳情 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| praise_len | int | 11 | 是 | 否 | 點贊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| comment表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| comment_id | int | 11 | 是 | 是 | 評論ID |
| user_id | int | 11 | 是 | 否 | 評論人ID |
| reply_to_id | int | 11 | 是 | 否 | 回復評論ID |
| content | longtext | 0 | 否 | 否 | 內容 |
| nickname | varchar | 255 | 否 | 否 | 昵稱 |
| avatar | varchar | 255 | 否 | 否 | 頭像地址 |
| create_time | timestamp | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| source_table | varchar | 255 | 否 | 否 | 來源表 |
| source_field | varchar | 255 | 否 | 否 | 來源字段 |
| source_id | int | 10 | 是 | 否 | 來源ID |
3.4本章小結
整個醫療健康知識管理的需求分析主要對系統總體架構以及功能模塊的設計,通過建立E-R模型和數據庫邏輯系統設計完成了數據庫系統設計。
4?醫療健康知識管理詳細設計與實現
醫療健康知識管理的詳細設計與實現主要是根據前面的醫療健康知識管理的需求分析和醫療健康知識管理的總體設計來設計頁面并實現業務邏輯。主要從醫療健康知識管理界面實現、業務邏輯實現這兩部分進行介紹。
4.1用戶功能模塊
4.1.1 前臺首頁界面
當進入醫療健康知識管理的時候,首先映入眼簾的是系統的導航欄,下面是輪播圖以及系統內容,其主界面展示如下圖4-1所示。
?
圖4-1?前臺首頁界面圖
4.1.2 用戶注冊界面
不是醫療健康知識管理中正式會員的是可以在線進行注冊的,如果你沒有本醫療健康知識管理的賬號的話,添加“注冊”,當填寫上自己的賬號+密碼+確認密碼+昵稱+郵箱+手機號等后再點擊“注冊”按鈕后將會先驗證輸入的有沒有空數據,再次驗證密碼和確認密碼是否是一樣的,最后驗證輸入的賬戶名和數據庫表中已經注冊的賬戶名是否重復,只有都驗證沒問題后即可會員注冊成功。其用用戶注冊界面展示如下圖4-2所示。
?
圖4-2?前臺用戶注冊界面圖
注冊邏輯關鍵代碼如下所示。
/**
?????* 注冊
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
4.1.3 用戶登錄界面
醫療健康知識管理中的前臺上注冊后的會員是可以通過自己的賬戶名和密碼進行登錄的,當會員輸入完整的自己的賬戶名和密碼信息并點擊“登錄”按鈕后,將會首先驗證輸入的有沒有空數據,再次驗證輸入的賬戶名+密碼和數據庫中當前保存的用戶信息是否一致,只有在一致后將會登錄成功并自動跳轉到醫療健康知識管理的首頁中;否則將會提示相應錯誤信息,用戶登錄界面如下圖4-3所示。
?
圖4-3用戶登錄界面圖
登錄系統主要代碼如下。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
4.1.4留言板界面
用戶在點擊導航欄上面的留言板后,就可以搜索查看留言信息,用戶根據自己的喜好可以進行交流,留言板界面如下圖4-4所示。
?
圖4-4留言板界面圖
4.1.5?我的賬戶界面
當用戶點擊右上角“我的”這個按鈕,會出現子菜單,點擊“我的賬戶”可以對個人的資料以及登錄系統的密碼進行設置,我的賬戶界面如下圖4-5所示。
?
圖4-5我的賬戶界面圖
4.1.6?醫生詳情界面
當訪客點擊了任意醫生后將會進入該醫生的詳情界面,可以了解到該醫生的醫生工號、醫生姓名、性別、從業年限等,同時可以對該醫生進行咨詢+收藏+點贊+評論,醫生詳情展示頁面如圖4-6所示。
?
圖4-6?醫生詳情界面圖
4.2管理員功能模塊
4.2.1 公告內容管理界面
醫療健康知識管理中的管理人員在“公告內容管理”這一菜單中是可以對前臺顯示的輪播圖以及公告欄進行管控。界面如下圖4-7所示。
?
圖4-7公告內容管理界面圖
公告內容管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
4.2.2?用戶管理界面
醫療健康知識管理中的管理人員是可以對前臺注冊的用戶、健康醫生進行管理的,也可以對管理員進行管控。界面如下圖4-8所示。
?
圖4-8用戶管理界面圖
用戶管理關鍵代碼如下所示。
public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
4.2.3 留言交流界面
醫療健康知識管理中管理人員是可以對醫療健康知識管理內的留言交流信息進行維護和管理的。留言交流界面如下圖4-9所示。
?
圖4-9留言交流界面圖
4.2.4 模塊管理界面
醫療健康知識管理中的管理人員在“模塊管理”這一菜單下是可以對醫療健康知識管理內的醫生介紹、醫生咨詢、知識分類、知識園地進行管控的,其管理界面如下圖4-10所示。
?
圖4-10模塊管理界面圖
5系統測試
5.1系統測試的目的
系統開發到了最后一個階段那就是系統測試,系統測試對軟件的開發其實是非常有必要的。因為沒什么系統一經開發出來就可能會盡善盡美,再厲害的系統開發工程師也會在系統開發的時候出現紕漏,系統測試能夠較好的改正一些bug,為后期系統的維護性提供很好的支持。通過系統測試,開發人員也可以建立自己對系統的信心,為后期的系統版本的跟新提供支持。
5.2?系統測試用例
系統測試包括:用戶登錄功能測試、醫生展示功能測試、醫生添加、醫生搜索、密碼修改功能測試,如表5-1、5-2、5-3、5-4、5-5所示:
用戶登錄功能測試:
表5-1?用戶登錄功能測試表
| 用例名稱 | 用戶登錄系統 |
| 目的 | 測試用戶通過正確的用戶名和密碼可否登錄功能 |
| 前提 | 未登錄的情況下 |
| 測試流程 | 1) 進入登錄頁面 2) 輸入正確的用戶名和密碼 |
| 預期結果 | 用戶名和密碼正確的時候,跳轉到登錄成功界面,反之則顯示錯誤信息,提示重新輸入 |
| 實際結果 | 實際結果與預期結果一致 |
醫生查看功能測試:
表5-2?醫生查看功能測試表
| 用例名稱 | 醫生查看 |
| 目的 | 測試醫生查看功能 |
| 前提 | 用戶登錄 |
| 測試流程 | 點擊醫生列表 |
| 預期結果 | 可以查看到所有醫生信息 |
| 實際結果 | 實際結果與預期結果一致 |
管理員添加醫生界面測試:
表5-3?管理員添加醫生界面測試表
| 用例名稱 | 醫生發布測試用例 |
| 目的 | 測試醫生發布功能 |
| 前提 | 員工用戶正常登錄情況下 |
| 測試流程 | 1)員工點擊醫生信息管理就,然后點擊添加后并填寫信息。 2)點擊進行提交。 |
| 預期結果 | 提交以后,頁面首頁會顯示新的醫生信息? |
| 實際結果 | 實際結果與預期結果一致 |
醫生搜索功能測試:
表5-4醫生搜索功能測試表
| 用例名稱 | 醫生搜索測試 |
| 目的 | 測試醫生搜索功能 |
| 前提 | 無 |
| 測試流程 | 1)在搜索框填入搜索關鍵字。 2)點擊搜索按鈕。 |
| 預期結果 | 頁面顯示包含有搜索關鍵字的醫生 |
| 實際結果 | 實際結果與預期結果一致 |
密碼修改功能測試:
表5-5 密碼修改功能測試表
| 用例名稱 | 密碼修改測試用例 |
| 目的 | 測試管理員密碼修改功能 |
| 前提 | 管理員用戶正常登錄情況下 |
| 測試流程 | 1)管理員密碼修改并完成填寫。 2)點擊進行提交。 |
| 預期結果 | 使用新的密碼可以登錄 |
| 實際結果 | 實際結果與預期結果一致 |
5.3?系統測試結果
通過編寫醫療健康知識管理的測試用例,已經檢測完畢用戶登錄模塊、醫生查看模塊、醫生添加模塊、醫生搜索模塊、密碼修改功能測試,通過這5大模塊為醫療健康知識管理的后期推廣運營提供了強力的技術支撐。
結論
至此,醫療健康知識管理已經結束,在開發前做了許多的準備,在本系統的設計和開發過程中閱覽和學習了許多文獻資料,從中我也收獲了很多寶貴的方法和設計思路,對系統的開發也起到了很重要的作用,系統的開發技術選用的都是自己比較熟悉的,比如Web、Java技術、MYSQL,這些技術都是在以前的學習中學到了,其中許多的設計思路和方法都是在以前不斷地學習中摸索出來的經驗,其實對于我們來說工作量還是比較大的,但是正是由于之前的積累與準備,才能順利的完成這個項目,由此看來,積累經驗跟做好準備是十分重要的事情。
當然在該系統的設計與實現的過程中也離不開老師以及同學們的幫助,正是因為他們的指導與幫助,我才能夠成功的在預期內完成了這個系統。同時在這個過程當中我也收獲了很多東西,此系統也有需要改進的地方,但是由于專業知識的淺薄,并不能做到十分完美,希望以后有機會可以讓其真正的投入到使用之中。
參考文獻
[1]何楊. 一種醫療健康動態預測方法、系統和設備[P]. 上海市:CN114420292A,2022-04-29.
[2]張偉,張展鵬,張明淘,韓普.醫療健康知識挖掘中的語義資源、數據集和工具[J].計算機技術與發展,2022,32(04):21-27.
[3]劉驁, 圖片 12月15日世界強化免疫日,西城區多家醫療機構開展健康宣傳、知識講座等活動. 孫碩 主編,北京西城年鑒,中華書局,2021,432,年鑒.DOI:10.38548/y.cnki.ybjxc.2022.002137.
[4]顧天陽,趙旺,曹林.跨組織醫療健康大數據聚合與案例知識推理方法研究[J].情報科學,2022,40(03):40-44.DOI:10.13833/j.issn.1007-7634.2022.03.006.
[5]楊善林,丁帥,顧東曉,李霄劍,劉業政.醫療健康大數據驅動的知識發現與知識服務方法[J].管理世界,2022,38(01):219-229.
[6]何文君,張小芳,魯紅軍.同質醫療健康教育模式在冠心病介入治療患者中的應用[J].健康研究,2021,41(06):715-717.
[7]Jun Ma, Jun Mao, Long Chen , Lili Yin. Design and Implementation of Multi-terminal Debugging System based on SSM Framework[J]. International Core Journal of Engineering,2021,7(7).
[8]岳麗欣,周曉英,劉自強.科學知識網絡擴散中的社區擴張與收斂模式特征分析——以醫療健康信息領域為例[J].圖書情報工作,2020,64(14):63-73.
[9]Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2).
[10]彭鳳娟,邱莘,朱淑霞,鄧帶歡,李啟蘭.同質醫療健康教育模式對直腸癌術后結腸造口患者疾病知識及自護能力的影響[J].中國臨床護理,2020,12(02):149-152.
[11]余運西.試論醫療健康類媒體如何傳播大眾科普知識[J].今傳媒,2020,28(01):54-55.
[12]全國人大常委會辦公廳. 中華人民共和國基本醫療衛生與健康促進法[M].中國民主法制出版社:, 201912.72.
[13]盛明,張勇,邢春曉.基于醫在回路的醫療健康知識圖譜系統架構的研究[J].安徽大學學報(自然科學版),2019,43(06):48-54.
[14]盛明,陳玉思,張勇,韓光潔,黃天昊,刑春曉.一種面向醫療健康領域知識圖譜的可擴展系統架構的研究[J].小型微型計算機系統,2019,40(10):2150-2154.
[15]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,2019,1314.
[16]郭媛. 知識管理視域下電子健康檔案管理研究[D].河北大學,2018.
[17]翟擁華.基于知識管理的醫療與健康特色智庫構建策略研究[J].農業圖書情報學刊,2017,29(10):25-27.
[18]徐慶,袁佰通,趙榮華,項彩霞,汪紅艷,詹必成,劉建.信息化平臺醫療健康管理在食管癌術后患者中的應用[J].安徽醫學,2016,37(05):606-609.
致 ?謝
逝者如斯夫,不舍晝夜。轉眼間,大學生會員活便已經接近尾聲,人面對著離別與結束,總是充滿著不舍與茫然,我亦如此,仍記得那年秋天,我迫不及待的提前一天到了學校,面對學校巍峨的大門,我心里充滿了期待:這里,就是我新生活的起點嗎?那天,陽光明媚,學校的歡迎儀式很熱烈,我面對著一個個對著我微笑的同學,仿佛一縷縷陽光透過胸口照進了我心里,同時,在那天我認識可愛的室友,我們攜手共同度過了這難忘的兩年。如今,我望著這篇論文的致謝,不禁又要問自己:現在,我們就要說再見了嗎?
感慨莫名,不知所言。遙想當初剛來學校的時候,心里總是想著工科學校會過于板正,會缺乏一些柔情,當時心里甚至有一點點排斥,但是隨著我對學校的慢慢認識與了解,我才認識到了她的美麗,她的柔情,并且慢慢的喜歡上了這個校園,但是時間太快了,快到我還沒有好好體會她的美麗便要離開了,但是她帶給我的回憶,永遠不會離開我,也許真正離開那天我的眼里會滿含淚水,我不是因為難過,我只是想將她的樣子映在我的淚水里,刻在我的心里。最后,感謝我的老師們,是你們教授了我們知識與做人的道理;感謝我的室友們,是你們陪伴了我如此之久;感謝每位關心與支持我的人。
少年,追風趕月莫停留,平荒盡處是春山。
?
點贊+收藏+關注 → 私信領取本源代碼、數據庫
總結
以上是生活随笔為你收集整理的ssm基于javaweb的医疗健康知识管理系统设计与实现 毕业设计-附源码131903的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拨开零售电商数字化转型迷雾,电商RPA应
- 下一篇: 一周XX思考(第11期)