![畢業(yè)論文管理系統(tǒng)畢業(yè)論文_第1頁](http://file4.renrendoc.com/view/b3d697d519f6b993233969e9377b5a30/b3d697d519f6b993233969e9377b5a301.gif)
![畢業(yè)論文管理系統(tǒng)畢業(yè)論文_第2頁](http://file4.renrendoc.com/view/b3d697d519f6b993233969e9377b5a30/b3d697d519f6b993233969e9377b5a302.gif)
![畢業(yè)論文管理系統(tǒng)畢業(yè)論文_第3頁](http://file4.renrendoc.com/view/b3d697d519f6b993233969e9377b5a30/b3d697d519f6b993233969e9377b5a303.gif)
![畢業(yè)論文管理系統(tǒng)畢業(yè)論文_第4頁](http://file4.renrendoc.com/view/b3d697d519f6b993233969e9377b5a30/b3d697d519f6b993233969e9377b5a304.gif)
![畢業(yè)論文管理系統(tǒng)畢業(yè)論文_第5頁](http://file4.renrendoc.com/view/b3d697d519f6b993233969e9377b5a30/b3d697d519f6b993233969e9377b5a305.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
畢業(yè)設計(論文)資料設計(論文)題目:畢業(yè)論文管理系統(tǒng)#\o"CurrentDocument"4.3老師管理模塊 18\o"CurrentDocument"4.4學生管理 23\o"CurrentDocument"4.5公告信息管理 27\o"CurrentDocument"4.6修改密碼 31\o"CurrentDocument"4.7安全退出系統(tǒng) 31\o"CurrentDocument"4.8學生注冊 32\o"CurrentDocument"4.9學生管理界面 32\o"CurrentDocument"第五章系統(tǒng)測試 33\o"CurrentDocument"5.1系統(tǒng)測試目的與意義 .3.3\o"CurrentDocument"5.2測試過程 34\o"CurrentDocument"5.2.1主頁面的登錄模塊測試 34\o"CurrentDocument"5.3其他錯誤 34\o"CurrentDocument"結論 35\o"CurrentDocument"參考文獻 36\o"CurrentDocument"致謝 37畢業(yè)論文管理系統(tǒng)畢業(yè)論文管理系統(tǒng)第一章緒論1.1課題背景計算機網(wǎng)絡技術的發(fā)展,給信息時代的人們帶來了很大的方便。如今在 Internet上,隨處都可以看到種類繁多的信息管理系統(tǒng),比如,企業(yè)辦公化自動管理系統(tǒng),電子商務系統(tǒng),企業(yè)教務管理系統(tǒng)等等。隨著信息技術的日益發(fā)展已深入到社會的各個角落,各個大的企業(yè),都充分意識到傳統(tǒng)的手工管理模式已經(jīng)逐漸不能適應時代的發(fā)展,為了更好的發(fā)展,紛紛開發(fā)適合自己的管理系統(tǒng)。不管大企業(yè)。各種類型的小企業(yè)也是如此,以前管理大多為手工管理,效率低、易出錯、手續(xù)繁瑣,而且耗費大量的人力,物力,財力。他們希望有一個適合自己的管理系統(tǒng),能夠實現(xiàn)論文格式管理,老師管理,畢業(yè)論文和學生管理,庫存管理等功能。通過此系統(tǒng),可以對畢業(yè)論文的各項情況實行電腦化管理,這樣可以提高工作效率,也使得畢業(yè)論文管理系統(tǒng)所需的各項信息能方便快速進行錄入,查詢,刪除和更新,對相應關鍵數(shù)據(jù)也能夠方便的統(tǒng)計結果。1.2目的和意義長久以來,畢業(yè)論文的管理工作大多數(shù)都采用的是傳統(tǒng)的手工方式來記錄相關信息,這種管理方式存在很多缺點,比如說,畢業(yè)論文管理,畢業(yè)論文信息的錄入,查詢,更新,分析都要完全依賴管理人員的手工記錄和人工分析。為滿足企業(yè)發(fā)展需求,決定采用各種編程語言JSP開發(fā)了基于B/S架構的畢業(yè)論文管理系統(tǒng),畢業(yè)論文管理系統(tǒng)是涉及信息科學、數(shù)據(jù)計算和計算機技術的復雜的人機交互系統(tǒng)。通過這些系統(tǒng),可以對畢業(yè)論文和管理進行智能化管理,有效地記錄并查詢各種畢業(yè)類型以及出入庫等情況,為畢業(yè)論文的管理提供了諸多方便。1.3開發(fā)工具及技術1.3.1開發(fā)工具此次設計主要采用MyEclipse加Tomcat后臺服務器進行,設計過程中頁面主要使用JSP技術完成,下面對MyEclipse、Tomcat和Mysql數(shù)據(jù)庫進行簡要介紹。MyEclipseMyEclipse,是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持十分不錯。MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench ,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布,以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的 JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持 HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。TomcatTomcat是一個小型的輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選??梢赃@樣認為,當在一臺機器上配置好Apahce服務器,可利用它響應對HTML頁面的訪問請求。實際上Tomcat部分是Apache服務器的擴展,但它是獨立運行的,所以當運行tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。MysqlMysql使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性;支持AIX、FreeBSDHP-UXLinux、MacOSNovellNetware、OpenBSDOS/2Wrap、Solaris、Windows等多種操作系統(tǒng);為多種編程語言提供了 API;支持多線程,充分利用CPU資源;提供TCP/IP、ODBCSJDBC等多種數(shù)據(jù)庫連接途徑;可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。對于一般的個人使用者和中小型企業(yè)來說, Mysql提供的功能已經(jīng)綽綽有余,而且由于Mysql是開放源碼軟件,因此可以大大降低總體擁有成本。1.3.2JSPJSP技術使用Java編程語言編寫類XML的tags和scriptlets,來圭寸裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets 訪問存在于服務端的資源的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設計和顯示分離,支持可重用的基于組件的設計,使基于 Web的應用程序的開發(fā)變得迅速和容易。Web服務器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果連同JSP文件中的HTM!代碼一起返回給畢業(yè)。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。 JSP與Servlet一樣,是在服務器端執(zhí)行的,通常返回給畢業(yè)端就是一個 HTM文本,因此客戶端只要有瀏覽器能瀏覽。JSP頁面由HTM代碼和嵌入其中的Java代碼所組成。服務器在頁面被畢業(yè)端請求以后對這些Java代碼進行處理,然后將生成的HTMLK面返回給畢業(yè)端的瀏覽器。Servlet是JSP的技術基礎,而且大型的Web應用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網(wǎng)的所有特點。JSP技術的優(yōu)點:(1) 一次編寫,到處運行。除了系統(tǒng)之外,代碼不用做任何更改。(2) 系統(tǒng)的多平臺支持。基本上可以在所有平臺上的任意環(huán)境中開發(fā),在任意環(huán)境中進行系統(tǒng)部署,在任意環(huán)境中擴展。相比 ASP/.net的局限性是顯而易見的。(3) 強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多臺服務器進行集群和負載均衡,到多臺Application進行事務處理,消息處理,一臺服務器到無數(shù)臺服務器,Java顯示了一個巨大的生命力。(4) 多樣化和功能強大的開發(fā)工具支持。Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費得到,并且其中許多已經(jīng)可以順利的運行于多種平臺之下(5)支持服務器端組件。web應用需要強大的服務器端組件來支持,開發(fā)人員需要利用其他工具設計實現(xiàn)復雜功能的組件供web頁面調(diào)用,以增強系統(tǒng)性能。JSP可以使用成熟的JAVABEANS組件來實現(xiàn)復雜商務功能。內(nèi)部對象說明:request畢業(yè)端請求,此請求會包含來自GET/POST青求的參數(shù);response網(wǎng)頁傳回畢業(yè)端的響應;pageContext網(wǎng)頁的屬性是在這里管理;session與請求有關的會話;即plicationservlet正在執(zhí)行的內(nèi)容;out用來傳送響應的輸出流;config代碼片段配置對象;pageJSP網(wǎng)頁本身;exception針對錯誤網(wǎng)頁,未捕捉的例外1.3.3JavaScriptJavaScript是一種基于對象和事件驅動并具有相對安全性的畢業(yè)端腳本語言。 同時也是一種廣泛用于畢業(yè)端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應用戶的各種操作。JavaScript的一個重要功能就是面向對象的功能, 通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發(fā)。在 HTML基礎上,使用Javascript可以開發(fā)交互式Web網(wǎng)頁。Javascript的出現(xiàn)使得網(wǎng)頁和用戶之間實現(xiàn)了一種實時性的、動態(tài)的、交互性的關系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容。在本系統(tǒng)中很多地方使用了 javascript技術,比如說,檢驗用戶輸入數(shù)據(jù)的有效性,是否重復,是否為空等等。1.4軟硬件需求硬件需求:CPUPentium以上計算機內(nèi)存:512M以上軟件需求:操作系統(tǒng)版本: WindowsXP/vista/Win7開發(fā)工具:MyEclipse6.0.1后臺服務器:ApacheTomcat6.0開發(fā)語言:Java瀏覽器:IE6.0第二章需求分析2.1需求調(diào)研在項目的開始是需求調(diào)研,并且走訪了一些畢業(yè)公司,經(jīng)過一系列的調(diào)查與談話中發(fā)現(xiàn),現(xiàn)行的畢業(yè)論文管理系統(tǒng)工作還是存在著很多不足之處,手工記錄的方式不易保存,容易丟失,同樣也不利于數(shù)據(jù)的查詢和統(tǒng)計分析。根據(jù)畢業(yè)公司的實際情況及調(diào)查結果,發(fā)現(xiàn)實現(xiàn)畢業(yè)論文管理系統(tǒng)的網(wǎng)絡化、信息化是十分有必要的,因此設計了本套畢業(yè)論文管理系統(tǒng)。2.2可行性分析開發(fā)任何一個系統(tǒng),都會受到時間和資源上的限制。因此,在每一個項目開發(fā)之前,都要進行可行性分析,可以減少項目的開發(fā)風險,避免人力、物力和財力的浪費。下面就技術、經(jīng)濟、操作和法律四個方面來介紹。221技術的可行性本系統(tǒng)開發(fā)工具是MyEclipse和Mysql數(shù)據(jù)庫,開發(fā)語言是Java,主要使用了J2EE的技術,java是一種面向對象編程語言,簡單易學而且靈活方便。大三時就學習了 java課程,大四期間也系統(tǒng)的了解了J2EE的知識,畢業(yè)論文管理系統(tǒng)總體上開發(fā)難度不高,數(shù)據(jù)庫的設計和操作是本系統(tǒng)設計的核心。在大學期間學習過軟件工程,軟件測試,UML統(tǒng)一建模語言等課程,每個學期也會完成對應的課程設計,具備一定的系統(tǒng)分析、設計和測試能力。因此,完成系統(tǒng)實現(xiàn)在技術上完全具有可行性。2.2.2經(jīng)濟的可行性如今是信息化時代,信息化管理可以使畢業(yè)論文管理系統(tǒng)工作更加系統(tǒng)化、 快速化、全面化。這樣可以為企業(yè)帶來較高的工作效益和經(jīng)濟效益,在提高工作效率的基礎上,可以考慮減少畢業(yè)論文管理系統(tǒng)人員的數(shù)量,本系統(tǒng)對計算機配置的要求不高,企業(yè)機房更換下來的低配置電腦都可以完全滿足需要,再者,企業(yè)在管理工作上的高效率和便捷性遠遠超過了開發(fā)本系統(tǒng)的成本,所以在經(jīng)濟上具有完全的可行性。2.2.3操作可行性本系統(tǒng)操作簡單,輸入信息頁面大多數(shù)都是下拉框的選擇形式,在某些頁面,信息可以自動生成,無需輸入,時間的輸入也是用的日歷控件,操作簡便,對操作人員的要求很低,只需對WINDOWS作熟練,加之對本系統(tǒng)的操作稍加培訓即可工作,而且本系統(tǒng)可視性非常好,所以在技術上不會有很大難度。2.2.4法律的可行性本畢業(yè)論文管理系統(tǒng)是自行開發(fā)的管理系統(tǒng),是很有實際意義的系統(tǒng) ,開發(fā)環(huán)境軟件和使用的數(shù)據(jù)庫都是開源代碼,開發(fā)這個系統(tǒng)不同于開發(fā)普通的系統(tǒng)軟件,不存在侵權等問題,即法律上是可行的。綜上所述,開發(fā)一個畢業(yè)論文管理系統(tǒng)與人工記錄的方式相比具有速度更快,操作更準確,節(jié)省開支等有利之處,因此,建立一個畢業(yè)論文管理系統(tǒng)是必要可行的。
2.3系統(tǒng)用戶用例圖231管理員用例圖管理員負責管理整個系統(tǒng),涉及到九大功能模塊,能夠及時動態(tài)的掌握畢業(yè)論文的各項情況芒岬管現(xiàn)^nrJf■^Klendso論丄來丈芒理=exleiid^:-■■芒岬管現(xiàn)^nrJf■^Klendso論丄來丈芒理=exleiid^:-■■論I奩匿A圖2.1管理員用例圖2.4功能模塊需求分析本系統(tǒng)最大的特點是使用操作簡單、友好的提示信息。本系統(tǒng)將實現(xiàn)以下基本功能:(1) 系統(tǒng)具有簡潔大方的頁面,使用簡便,友好的錯誤操作提示(2) 管理員用戶具有做畢業(yè)格式管理、老師管理等功能(3) 具有較強的安全性,避免用戶的惡意操作2.5設計的基本思想設計思想遵循以下幾點:采用B/S模式進行開發(fā),其優(yōu)點是后臺與前臺處理層次分明,而且符合眾多已經(jīng)習慣網(wǎng)頁方式的用戶。采用面向對象的開發(fā)與設計理念。運用面向對象技術的前提是對整體系統(tǒng)的高度和準確抽象,通過它可以保證系統(tǒng)良好的框架,進而帶來產(chǎn)品較強的穩(wěn)定性和運行效率。采用模塊化設計。模塊化設計要求將整個系統(tǒng)劃分成基于小的模塊,有利于代碼的重載,簡化設計和實現(xiàn)過程。簡單方便的系統(tǒng)界面。設計簡單友好的系統(tǒng)界面,方便用戶較快的適應系統(tǒng)的操作。?速度優(yōu)先原則。由于此工具最重要的評測標準就是速度,因此在設計過程中,具體過程盡量做到資源占用少,速度快。?設計既要突出重點,又要細致周到。要符合設計需求,在有可能改進的地方進行擴充,使系統(tǒng)更適應用戶的需要。2.6性能需求2.6.1系統(tǒng)的安全性畢業(yè)論文管理系統(tǒng)在管理權限上要嚴格進行控制,想登陸畢業(yè)論文管理系統(tǒng)進行操作,必須有某些操作權限,沒有權限的用戶不能通過任何方式登錄系統(tǒng)查看系統(tǒng)的任何信息和數(shù)據(jù),以確保系統(tǒng)的嚴密性和安全性。2.6.2數(shù)據(jù)的完整性各種記錄信息的完整性,信息記錄內(nèi)容不能為空各種數(shù)據(jù)間相互聯(lián)系的正確性相同數(shù)據(jù)在不同記錄中的一致性2.7界面需求界面設計目前已經(jīng)成為評價軟件質量的一條重要指標, 一個好的用戶界面可以增加用戶使用系統(tǒng)的信心和興趣,提高工作效率,JSP技術是用JAVA語言作為腳本語言的,JSP網(wǎng)頁為整個服務器端的JAVA庫單元提供了一個接口來服務于HTTP的應用程序。創(chuàng)建動態(tài)頁面非常方便。用戶界面是指軟件系統(tǒng)與用戶交互的接口, 通常包括輸出、輸入、人-機對話的界面格式等。輸出設計輸出是由計算機對輸入的原始信息進行加工處理,形成高質量的有效信息,并使之具有一定的格式,提供管理者使用,這是輸出設計的主要職責和目標。系統(tǒng)設計的過程正好和實施過程相反,并不是從輸入設計到輸出設計,而是從輸出設計到輸入設計,這是因為輸出表格直接與使用者相聯(lián)系,設計的出發(fā)點應當是保證輸出表格方便地為使用者服務,正確及時反映和組成用于各部門的有用信息。輸出設計的原則是考慮既要全面反映不同管理層的各項需要,又要言簡意賅,不要將用戶需要和不需要的都提供給用戶。輸入設計輸入數(shù)據(jù)的收集和錄入是比較費事的,需要大量的人力和一定設備,并且容易出錯。如果輸入系統(tǒng)的數(shù)據(jù)有錯誤,則處理后的輸出將擴大這些錯誤,因此輸入數(shù)據(jù)的正確性對于整個系統(tǒng)質量的好壞是具有決定性意義的。輸入設計的原則有如下幾點:1) 輸入量應保持在能滿足處理要求的最低限度。設計中可采用設置字段初值,下拉式數(shù)據(jù)窗口等方式盡量減少用戶鍵盤輸入量。輸入量越少,錯誤率就越少,數(shù)據(jù)準備時間也減少。2) 輸入的準備及輸入過程應盡量容易進行,從而減少錯誤的發(fā)生。3)應盡量早對輸入數(shù)據(jù)進行檢查(盡量接近原數(shù)據(jù)發(fā)生點) ,以便使錯誤及時得到更正。4) 輸入數(shù)據(jù)盡早地用其處理所需的形式被記錄,以避免數(shù)據(jù)由一種介質轉移到另一種介質時需要轉錄而可能發(fā)生的錯誤第三章系統(tǒng)分析與設計3.1數(shù)據(jù)庫的分析與設計計算機信息系統(tǒng)以數(shù)據(jù)庫為核心,在數(shù)據(jù)庫管理系統(tǒng)的支持下,進行信息的收集、整理、存儲、檢索、更新、加工、統(tǒng)計和傳播等操作。數(shù)據(jù)庫已經(jīng)成為現(xiàn)在信息系統(tǒng)等計算機系統(tǒng)的基礎與核心部分。數(shù)據(jù)庫設計的好壞直接影響到整個系統(tǒng)的質量和效率。數(shù)據(jù)庫的設計一般經(jīng)過規(guī)劃。需求分析、概念設計、邏輯設計、物理設計5個步驟。3.1.1數(shù)據(jù)庫的概念結構設計概念設計是指在數(shù)據(jù)分析的基礎上自底向上的建立整個系統(tǒng)的數(shù)據(jù)庫概念結構,從用戶的角度進行視圖設計,然后將視圖集成,最后對集成的結構分析優(yōu)化得到最后結果。數(shù)據(jù)庫的概念結構設計采用實體一聯(lián)系(E-R)模型設計方法。E-R模型法的組成元素有:實體、屬性、聯(lián)系,E-R模型用E-R圖表示,是提示用戶工作環(huán)境中所涉及的事物,屬性則是對實體特性的描述。概念設計的目標是產(chǎn)生反映企業(yè)組織信息要求的數(shù)據(jù)庫概念結構,即概念模式。概
念模式是獨立于數(shù)據(jù)庫邏輯結構,獨立于支持數(shù)據(jù)庫的 DBMS不依賴于計算機系統(tǒng)的,根據(jù)以上對數(shù)據(jù)庫的需求分析,并結合系統(tǒng)概念模型的特點及建立方法,建立 E-R模型圖。實體屬性 實體間關系實體屬性 實體間關系管理員信息E-R圖3.1.2數(shù)據(jù)庫的邏輯結構設計我們知道,數(shù)據(jù)庫概念模型獨立于任何特定的數(shù)據(jù)庫管理系統(tǒng),因此,需要根據(jù)具體使用的數(shù)據(jù)庫管理系統(tǒng)的特點進行轉換。即轉化為按計算機觀點處理的邏輯關系模型,E-R模型向關系數(shù)據(jù)庫模型轉換應遵循下列原則:*每一個實體要轉換成一個關系*所有的主鍵必須定義非空(NOTNULL*對于二元聯(lián)系應按照一對多、弱對實、一對一、多對多等聯(lián)系來定義外鍵。根據(jù)E-R模型,畢業(yè)論文管理系統(tǒng)建立了以下邏輯數(shù)據(jù)結構,下面是各數(shù)據(jù)表的詳細說明。(1)論文格式表主要是記錄了論文格式基本信息。表結構如表 3.1所示。數(shù)據(jù)庫名:db_bylwmana
表名:t_admin序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1useridint11是否02userNamevarchar255是3userPwvarchar255是表名:t_geshi序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否02contentvarchar8000是表名:t_gonggao序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否02titlevarchar500是3contentvarchar8000是4shijianvarchar500是表名:t_liuyan序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否02contentvarchar8000是3fujianvarchar255是4fujianYuanshimingvarchar255是5shijianvarchar255是6stu」dint11是7tea_idint11是8shifouyiduvarchar255是9typevarchar255是表名:tstu
序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否2xuehaovarchar50是3namelvarchar50是4sexvarchar50是5agevarchar50是6ruxueshijianvarchar50是7loginnamevarchar255是8loginpwvarchar255是9tea_idint11是10delvarchar50是表名:t_taobiao序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否02titlevarchar255是3fujianvarchar255是4fujianYuanshimingvarchar255是5shijianvarchar255是6typeint255是表名:t_tea序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否2bianhaovarchar50是3namevarchar50是4sexvarchar50是5ageint11是6loginnamevarchar255是7loginpwvarchar255是8delvarchar50是
表名:t_zuoye序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵外鍵允許空默認值說明1idint11是否2titlevarchar255是3fujianvarchar255是4fujianYuanshimingvarchar255是5shijianvarchar255是6delvarchar255是7stu」dint255是8fenshuint11是3.1.3數(shù)據(jù)庫的連接原理采用JDBC連接數(shù)據(jù)庫的方式,只需在工程中導入對應數(shù)據(jù)庫的 jar包,就可以方便的對數(shù)據(jù)庫進行連接,在程序中,用 Class.forName()方法來加載驅動程序,在用DriverManager的getConnection()方法就可以創(chuàng)建一個數(shù)據(jù)庫連接。程序采用的是DAO模式來操作數(shù)據(jù)庫,DAO(DataAccessObject,數(shù)據(jù)訪問對象),是Java編程中的一種經(jīng)典模式,已被廣泛應用,也是J2EE架構中持久層框架的基礎知識,基于分層次式的軟件架構來實現(xiàn)對數(shù)據(jù)庫的訪問操作。 DAW式的主要思想就是從抽象數(shù)據(jù)源獲取與操縱數(shù)據(jù)的方法。抽象數(shù)據(jù)的含義就是編寫應用程序的程序員不必關心數(shù)據(jù)庫的物理位置,已經(jīng)是何種數(shù)據(jù)庫,只需使用封裝數(shù)據(jù)庫中表示記錄的數(shù)據(jù)對象即可。其思想如圖3.10所示:圖3.10DAO模式類圖圖中BussinessObject是業(yè)務對象,是使用DAO模式的畢業(yè)端;DataTransferObject
數(shù)據(jù)傳輸對象,在應用程序不同層次之間傳輸對象,在一個分布式應用程序中,通??梢蕴岣哒淼男阅埽籇ataObjectAcces數(shù)據(jù)輸入/輸出對象圭寸裝了對數(shù)據(jù)源的一些基本操作;DataSource指的是數(shù)據(jù)源??梢詮膱D中看出,DAO模式分離了業(yè)務邏輯和數(shù)據(jù)羅即將,是的編寫的軟件具有良好的層次式體系結構。本系統(tǒng)為了方便數(shù)據(jù)庫的操作,主要使用DBContent的對象來接一個數(shù)據(jù)庫(建立一個類 DBContent),代碼如下:public DBContent(){StringCLASSFORNAME="com.microsoft.mysql.jdbc.MysqlDriver" ;//連接數(shù)據(jù)庫的驅動Stringurl= "jdbc:mysql://localhost:1433;databaseName=db_yyj" ;Stringuser= "sa";//連接數(shù)據(jù)庫的用戶名Stringpassword="sa";//連接數(shù)據(jù)庫的密碼try{Class.forName(CLASSFORNAME);con=DriverManager. getConnection (url,user,password);// 加載數(shù)據(jù)庫的驅動stmt=con.createStatement(ResultSet. TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);}catch(Exceptionex){ex.printStackTrace();}}在程序需要連接數(shù)據(jù)庫的地方,只需要生成一個 DBConne的對象,就可以對數(shù)據(jù)庫進行連接并操作。3.2中文亂碼問題處理在程序中經(jīng)常會遇到中文亂碼的情況,如果手動的在servlet和jsp頁面進行設置,相當麻煩。因此,在程序的開始就寫了一個過濾器 SetCharacterEncodingFilter在web.xml中配置:<filter><filter-name >SetCharacterEncodingFilter </filter-name></filter-class<filter-class >myweb.util.filter.SetCharacterEncodingFilter</filter-class<init-param><param-name>encoding</param-name<param-value<param-name>encoding</param-name<param-value>gb2312</param-value</init-param></filter ><filter-mapping><filter-name>SetCharacterEncodingFilter<url-pattern>/*</url-pattern >//*>></filter-mapping ></filter-name >表示工程下所有的頁面都會有此過濾器的處理對應的SetCharacterEncodingFilter.jav文件中的重要代碼,在初始化init()方法中定義:publicvoid init(FilterConfigfilterConfig) throws ServletException{this.filterConfig =filterConfig;this.encoding =filterConfig.getInitParameter( "encoding" );Stringvalue=filterConfig.getlnitParameter( "ignore");}在工具包util包中同樣定義了DataFormate類來處理字符轉換:publicstaticStringtoUni(StringgbStr){StringuniStr= "";/*把字符串轉換成uincode 編碼*/if(gbStr==null){gbStr= "“;}try{byte[]tempByte=gbStr.getBytes( "GB2312");uniStr= newString(tempByte, "ISO8859_1" );}catch(Exceptionex){}return uniStr;}/*把字符串轉換成Utf8編碼*/publicstatic StringtoUtf8String(Strings){StringBuffersb= newStringBuffer();for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c>=0&&c<=255){sb.append(c);elsebyte[]b;try{b=Character.catchSystem.b=byte[]b;try{b=Character.catchSystem.b=toString(Exceptionex){out.println(ex);newbyte[0];(c).getBytes("utf-8" );for(intj=0;j<b.intk=b[j];length ;j++){k+=256;if(k<0){
for(intj=0;j<b.intk=b[j];length ;j++){k+=256;if(k<0){}sb.append(toUpperCase());return"%"}sb.append(toUpperCase());return}}sb.toString();}第四章系統(tǒng)功能實現(xiàn)在管理信息系統(tǒng)的生命周期中,僅過了需求分析、系統(tǒng)設計等階段之后,便開始了系統(tǒng)實施階段。在系統(tǒng)分析和設計階段,系統(tǒng)開發(fā)工作主要是集中在邏輯、功能和技術設計上,系統(tǒng)實施階段要繼承此前面各個階段的工作成果,將技術設計轉化為物理實現(xiàn),因此系統(tǒng)實施的成果是系統(tǒng)分析和設計階段的結晶。4.1系統(tǒng)登陸頁面實現(xiàn)描述:為了保證系統(tǒng)的安全性,要先使用本系統(tǒng)必須先登陸到系統(tǒng)中,并且不同角色的用戶進入不同的界面,功能也隨之不同。程序運行效果圖如圖4.1所示:圖4.1系統(tǒng)登陸頁面設計在登陸頁面輸入用戶名和密碼以,點擊提交按鈕,跳轉到登陸的 service中,在該service中會對用戶名,密碼,驗證碼進行判斷,并根據(jù)相應的用戶角色進入對應的頁面,loginservice 關鍵代碼:publicStringlogin(StringuserName,StringuserPw, intuserType){tryThread.sleep(700);
}catch (InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}Stringresult= "no";if(userType==0){Stringsql="fromTAdminwhereuserName=?anduserPw=?"Object[]con={userName,userPw};ListadminList= adminDAO.getHibernateTemplate().find(sql,con);if(adminList.size()==O){result="no"}else{WebContextctx=WebContextFactory. get();HttpSessionsession=ctx.getSession();TAdminadmin=(TAdmin)adminList.get(O);session.setAttribute("userType",0);session.setAttribute("userType",0);session.setAttribute("admin",admin);session.setAttribute("admin",admin);result= "yes"}}if(userType==2){rs.close();}catch(SQLExceptione)登錄失?。?登錄失??!");System.out.println(e.printStackTrace();}finally{mydb.closed();}returnresult;4.2系統(tǒng)首頁設計描述:管理員主頁面:左方頁面展示了管理員可操作的九大功能,進入相關的管理頁面可以鏈接到子菜單,并且高亮顯示,每個管理模塊下面都有相應的子菜單。程序運行效果圖如圖4.2所示:圖4.2系統(tǒng)主頁面在每個jsp頁面將會對相關用戶進行攔截操作,這樣可以提高安全性,防止用戶不經(jīng)過登陸頁面而進入任何子菜單頁面:if(session.getAttribute( "user")==null){out.print( "<script>alert(‘ 請先登錄!');window.open('../index.jsp','_self')</script>" );}4.3老師管理模塊4.3.1老師信息錄入描述:老師信息錄入程序效果圖如下圖4.3所示:
走師管煙教畀號:姓售:登陸賬母密碼:■|19交圖4.3老師信息錄入流程圖如下圖4.4所示:圖4.4老師錄入流程圖4.3.2老師信息管理描述:管理員點擊左側的菜單“老師管理”,頁面跳轉到老師管理界面,調(diào)用后臺的action類查詢所有的畢業(yè)論文。程序效果圖如下圖4.5所示圖4.5老師信息管理畢業(yè)信息管理關鍵代碼:publicStringteaAdd(){TTeatea=newTTea();tea.setBianhao(bianhao);tea.setName(name);tea.setSex(sex);tea.setAge(age);tea.setLoginname(loginname);tea.setLoginpw(loginpw);tea.setDel("no");Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();session.save(tea);transactiomit();HibernateSessionFactory.closeSession();this.setMessage(” 操作成功");this.setPath("teaMana.action");return"succeed";}publicStringteaMana(){Stringsq匸"fromTTeawheredel='no'";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListteaList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("teaList",teaList);returnActionSupport.SUCCESS;}publicStringteaDel(){Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();Stringsql="updateTTeasetdel='yes'whereid=?";Queryquery=session.createQuery(sql);query.setInteger(O,id);introw=query.executeUpdate();transactiomit();HibernateSessionFactory.closeSession();this.setMessage(” 操作成功");this.setPath("teaMana.action");return"succeed";}publicStringteaEdit(){TTeatea=liuService.getTeaByld(id);tea.setBianhao(bianhao);tea.setName(name);tea.setSex(sex);tea.setAge(age);tea.setLoginname(loginname);tea.setLoginpw(loginpw);tea.setDel("no");Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();session.update(tea);transactiomit();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("msg"," 修改成功,請重新登陸");return"msg";}4.3.3老師信息刪除描述:先是點擊做老師信息管理,頁面跳轉到老師信息管理界面,瀏覽所有的老師信息信息,點擊要刪除的老師信息,彈出的確定對話框,即可刪除該老師信息。程序效果圖如下圖4.6所示[002C003高越帀五老師額三性別晝rm號linn1001min磁〕圖4.6老師信息刪除般亍人孫靜%0?師■世0Till!論婦I式[002C003高越帀五老師額三性別晝rm號linn1001min磁〕圖4.6老師信息刪除般亍人孫靜%0?師■世0Till!論婦I式n迪文鐳式■廛-論窪誓式上*玄全最里聚統(tǒng)n貫全屯出瑕址■iStrllo■論文上烽霍膛。曲甘個亀錄入甩口喀LE3M54MrfOaiiiktk5?212rt02min4.4學生管理4.4.1學生管理界面描述:學生管理界面程序效果圖如圖4.7所示:孚魚■也圖4.7學生管理界面4.4.2論文管理
1.描述:論文管理界面2.程序效果圖如下圖4.8所示圖4.8論文管理頁面論文添加屹姍件:止芾上岬媚;EDITED Wttx£5關鍵代碼:publicStringtaobiaoAdd(){TTaobiaotaobiao=newTTaobiao();taobiao.setTitle(title);taobiao.setFujian(fujian);taobiao.setFujianYuanshiming(fujianYuanshiming);taobiao.setShijian(shijian);taobiao.setType(l);Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();session.save(taobiao);transactiomit();HibernateSessionFactory.closeSession();this.setMessage(”操作成功");this.setPath("taobiaoMana.action");return"succeed";}publicStringtaobiaoMana(){Stringsq匸"fromTTaobiaowheretype=1";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListtaobiaoList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("taobiaoList",taobiaoList);returnActionSupport.SUCCESS;}publicStringtaobiaoDel(){Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();Stringsql="deletefromTTaobiaowhereid=?";Queryquery=session.createQuery(sql);query.setlnteger(0,id);introw=query.executeUpdate();transactiomit();HibernateSessionFactory.closeSession();this.setMessage(” 操作成功");this.setPath("taobiaoMana.action");return"succeed";}publicStringtaobiaoChakan(){Stringsql="fromTTaobiaowheretype=1";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListtaobiaoList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("taobiaoList",taobiaoList);returnActionSupport.SUCCESS;}publicStringtaobiaoAdd1(){TTaobiaotaobiao=newTTaobiao();taobiao.setTitle(title);taobiao.setFujian(fujian);taobiao.setFujianYuanshiming(fujianYuanshiming);taobiao.setShijian(shijian);taobiao.setType(2);Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();session.save(taobiao);transactiomit();HibernateSessionFactory.closeSession();this.setMessage(”操作成功");this.setPath("taobiaoMana1.action");return"succeed";}publicStringtaobiaoMana1(){Stringsql二"fromTTaobiaowheretype=2";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListtaobiaoList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("taobiaoList",taobiaoList);returnActionSupport.SUCCESS;}4.5公告信息管理4.5.1公告信息錄入
描述:輸入公告信息后,點擊提交按鈕,可以在備注添加其他信息。如果不輸入公告名稱,系統(tǒng)會給出警示,提示必須輸入公告名稱。程序效果圖如圖4.10所示:內(nèi)春=.R/li=運丨瘙癌雨iSWX內(nèi)晉Sx重置圖4.10公告信息錄入4.5.2公告信息查詢1.描述:公告信息管理功能。2.程序效果圖如圖4.11所示:圖4.11公告信息查詢分類管理核心代碼:publicStringgonggaoAdd(){TGonggaogonggao=newTGonggao();gonggao.setTitle(title);gonggao.setContent(content);gonggao.setShijian(newDate().toLocaleString());Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();session.save(gonggao);transactiomit();HibernateSessionFactory.closeSession();this.setMessage(”公告添加完畢");this.setPath("gonggaoMana.action");return"succeed";}publicStringgonggaoMana(){Stringsq匸"fromTGonggao";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListgonggaoList=query.list();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("gonggaoList",gonggaoList);returnActionSupport.SUCCESS;}publicStringgonggaoAll(){Stringsql="fromTGonggao";Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListgonggaoList=query.list();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("gonggaoList",gonggaoList);returnActionSupport.SUCCESS;}publicStringgonggaoDel(){Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();Stringsql="deletefromTGonggaowhereid=?";Queryquery=session.createQuery(sql);query.setlnteger(O,id);introw=query.executeUpdate();transactiomit();HibernateSessionFactory.closeSession();this.setMessage(”公告刪除完畢");this.setPath("gonggaoMana.action");return"succeed";}publicStringgonggaoDetail(){Stringsql="fromTGonggaowhereid="+id;Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListgonggaoList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("gonggao",(TGonggao)gonggaoList.get(O));returnActionSupport.SUCCESS;}publicStringgonggaoEditPre(){Stringsql="fromTGonggaowhereid="+id;Sessionsession=HibernateSessionFactory.getSession();Queryquery=session.createQuery(sql);ListgonggaoList=query.list();HibernateSessionFactory.closeSession();Maprequest=(Map)ServletActionContext.getContext().get("request");request.put("gonggao",(TGonggao)gonggaoList.get(O));returnActionSupport.SUCCESS;}publicStringgonggaoEdit(){Sessionsession=HibernateSessionFactory.getSession();Transactiontransaction=session.beginTransaction();Stringsql="updateTGonggaosettitle二?,content=?whereid=?";Queryquery=session.createQuery(sql);query.setString(0,title);query.setString(1,content);query.setInteger(2,id);introw=query.executeUpdate();transactiomit();HibernateSessionFactory.closeSession();this.setMessage(”修改完畢");this.setPath("gonggaoMana.action");return"succeed";}4.6修改密碼描述:輸入用戶名和用戶的原有密碼,輸入新密碼以后點擊修改按鈕即可修改密碼成功。程序效果圖如圖4.18所示:4.7安全退出系統(tǒng)描述:點此按鈕回到系統(tǒng)的主頁面。關鍵代碼:主要是通過javascript語句來實現(xiàn),item_word[8][4]="退出系統(tǒng)"item_link[8][4]="javascript:window.open('../index.jsp','_self)";
4.8學生注冊描述:用戶注冊功能。程序效果圖如圖4.19所示:學生連冊學號:[1姓容:事性別:0男 丿女年齡:入學時間:用戶宿:*密碼=-請選擇老師-卜確定 取消圖4.19學生注冊4.9學生管理界面描述:學生管理界面。程序效果圖如圖4.20所示:j£H±MItrf J日ZnVa&Lj£H±MItrf J日ZnVa&L用円口葷JU1口B.kwUti知應脅EfgDBILl>alJ代誑anmal:viHS.!haq虻?iW第五章系統(tǒng)測試5.1系統(tǒng)測試目的與意義系統(tǒng)測試是管理信息系統(tǒng)開發(fā)周期中一個十分重要而漫長的的階段。 其重要性體現(xiàn)在他是保證系統(tǒng)質量與可靠性的最后關口,是對整個系統(tǒng)開發(fā)過程包括系統(tǒng)分析、系統(tǒng)設計和系統(tǒng)實現(xiàn)的最終審查。系統(tǒng)測試的任務是盡可能徹底的檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)“做得怎樣”。這這階段又可以分為三個步驟:模塊測試,測試每個模塊的程序是否正確;組裝測試,測試模塊之間的接口是否正確;確認測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。測試發(fā)現(xiàn)問題之后要經(jīng)過調(diào)試找出錯誤原因和位置,然后進行改正。是基于系統(tǒng)整體需求說明書的黑盒測試,應覆蓋系統(tǒng)隨偶聯(lián)合的部件,系統(tǒng)測試是正對整個產(chǎn)品系統(tǒng)進行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出需求規(guī)格不符合或與之矛盾的地方。5.2測試過程在測試之初,由于將數(shù)據(jù)庫中的數(shù)據(jù)是隨便輸入,沒有實用性,為了使系統(tǒng)更加完善,在系統(tǒng)測試的過程中,本系統(tǒng)將一開始編程隨便輸入的數(shù)據(jù)全部清理后,輸入了一些有效的測試數(shù)據(jù),這樣可以更真實的反映系統(tǒng)的功能實現(xiàn)情況。這樣不斷發(fā)現(xiàn)問題,經(jīng)過反復的測試、調(diào)試,把問題一個個的解決,最終系統(tǒng)可以正常運行。521主頁面的登錄模塊測試測試流程:1.打開系統(tǒng)首頁,輸入錯誤的登錄信息登錄輸入正確的登錄信息登錄測試結果模塊名稱測試用例預期結果實際結果是否通過登錄模塊用戶名:null密碼:null彈出錯誤提示,請輸入用戶名登陸失敗,提示請輸入用戶名通過登錄模塊用戶名:ml密碼:null彈出錯誤提示,請輸入密碼失敗,提示輸入密碼通過登錄模塊用戶名:ml密碼:1彈出錯誤提示,用戶名或者密碼錯誤登陸失敗,提示用戶名或者密碼錯誤通過5.3其他錯誤在程序設計實現(xiàn)的過程中不可避免的會產(chǎn)生各種難以預料的錯誤,如書寫錯誤、傳值類型不一致、參數(shù)傳遞問題等等。這些都需要通過細心的檢測與不斷的調(diào)試才能夠排除。比如在servlet路徑配置時因粗心錯誤導致運行導致所報錯誤,如圖 5.4:HTTPStatus404-/g¥3/findWaterS€rvletHTEStatusreport77><?Trf-一上:='一’.=lesoiilesoiiApRcheTomcat/各020圖5.4由于servlet路徑配置錯誤,運行時的提示結論本次畢業(yè)設計將我大學四年所學的軟件工程理論知識用到了具體的實踐中去, 深化了理論知識,同時也鍛煉了動手實踐能力。在這段日子里,我查閱了許多有關畢業(yè)論文管理系統(tǒng)信息系統(tǒng)的資料,翻閱了許多JSP的書籍,結合自己的經(jīng)驗,詳細調(diào)查了畢業(yè)論文管理系統(tǒng)的工作內(nèi)容與細節(jié),開發(fā)設計了這個畢業(yè)論文管理系統(tǒng),雖然企業(yè)每個學期都會有相應課程的課程設計和實訓來作為動手練習訓練, 不過在本次畢業(yè)設計具體的實踐的時候還是遇到了很多小問題,比如說在jsp頁面將輸入框設為不可用是添加屬性readonly=“true”,而我在實際編程中卻錯寫成 disable=“true”,這樣直接導致了request對象取不到數(shù)據(jù),調(diào)試了程序很久才發(fā)現(xiàn)request對象獲得的返回值一直是空,之前一直以為是代碼哪里出了問題,總是在查源程序的邏輯。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年停車場權益協(xié)議
- 2025年工程項目施工承包墊資合同樣本
- 2025年廚房設備購買合同示范文本
- 2025年信貸代理策劃合作協(xié)議書范本
- 2025年產(chǎn)品目錄編制合同示范
- 2025年社交酒會接待服務合同
- 2025年車輛租賃與策劃服務協(xié)議
- 2025年十四組織間的合作協(xié)議
- 2025年可再生能源工程土地征用補償策劃協(xié)議
- 2025年寫字樓租賃代理合同范例
- 教育案例評選細則(3篇模板)
- 數(shù)字孿生水利工程建設技術導則(試行)
- 2022年版初中物理課程標準解讀-課件
- 2024年山東化工職業(yè)學院單招職業(yè)技能測試題庫及答案解析
- 方案偏離處理措施
- (2024年)剪映入門教程課件
- 《寵物飼養(yǎng)》課程標準
- 快餐品牌全案推廣方案
- 環(huán)境衛(wèi)生整治推進行動實施方案
- 口腔醫(yī)院感染預防與控制1
- 2024年同等學力英語真題解析
評論
0/150
提交評論