




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE目錄TOC\o"1-4"\h\z\u1緒論 11.1選題的目的及意義 11.2系統開發的關鍵技術 11.3本課題研究的主要內容以及展望 12系統開發技術 32.1語言可行性的分析 32.1.1SERVLET技術簡介 32.1.2JSP及其特點 42.2框架的可行性 42.2.1MVC(ModelViewController)分層結構 42.2.2基于MVC結構web系統設計 52.3系統開發所用工具 62.3.1ApacheTomcat 62.3.2MySQL數據庫 62.4系統運行環境 72.4.1硬件環境 72.4.2軟件環境 73需求分析 83.1需求說明 83.2功能定義 103.2.1功能結構圖 103.2.2系統模塊介紹 103.3系統的總體結構 113.4業務流程分析 123.4.1學生志愿課題管理 123.4.2教師課題管理 133.4.3用戶基本信息管理 133.4.4自動生成終表 143.4.5手動生成終表 144數據庫設計 164.1數據庫概念結構設計 164.1.1實體E-R圖 164.1.2實體聯系E-R圖 184.1.3E-R圖向關系模型的轉換 194.1.4關系模式設計 194.1.5數據表結構 205系統實現詳細設計與實現 255.1系統登陸界面的設計與實現 255.2主控制平臺的設計與實現 255.3用戶操作總體設計 265.3.1用戶登錄設計 265.3.2教師管理模塊設計 295.4技術難點 315.4.1中文亂碼 315.4.2HQL語言 316測試 326.1常用的測試方法 326.2系統測試 336.3系統的安全性分析 346.4系統的實用性分析 34總結 35參考文獻 36致謝 37PAGE351緒論1.1選題的目的及意義隨著網絡和信息技術的發展,20世紀80年代人們提出了“辦公自動化”的概念,經過20多年兩代的發展,辦公自動化系統發生了根本的變化,它主要采用客戶/服務器的二層結構、瀏覽器/服務器/數據庫的三層結構,以網絡技術和協同工作技術為主要特征,實現工作流程自動化和非結構化數據庫的功能,實現了收發文件從傳統的手工方式向工作流程自動化方式飛躍,可以方便的實現非結構化文檔的處理。學校處在信息接受的前沿,實現教學辦公自動化是必然趨勢,畢業生的“畢業設計選題管理系統”就是辦公自動化的一項主要內容。“畢業設計選題管理系統”利用了方便的網絡通信技術,使得管理員管理教師課題和學生的志愿工作變得非常方便。該系統采用JSP(JavaServerPages)開發技術,基于B/S模式的工作方式使得數據的維護也顯得非常方便1.2系統開發的關鍵技術本系統采用了基于MVC模式的Struts框架與Hibernate框架進行開發。開發的關鍵技術:=1\*GB2⑴JSP技術的應用。=2\*GB2⑵Struts框架的使用。=3\*GB2⑶Hibernate框架的使用。1.3本課題研究的主要內容以及展望“畢業設計選題管理系統“是基于瀏覽器/服務器架構的軟件管理系統,它的開發技術是目前比較流行的基于windows平臺的JSP結合JAVASCRIPT技術,數據庫采用了SUN公司開發的MYSQL數據庫,MYSQL是高性能的數據庫管理系統,在可靠性、易用性、可伸縮性、業務職能功能等方面都具有非常優秀的表現,它具有支持多用戶同時訪問,自適應內存調節特性等優點,有良好的可擴展性和可維護性,更容易控制。“畢業設計選題管理系統”分為“前臺”和“后臺“兩部分,前臺是實現學生和教師瀏覽網站的功能,學生用戶通過網上瀏覽教師的課題選擇自己喜歡的課題,然后提交到后臺數據庫保存選題信息,待由管理員處理信息,而教師則可以通過網上瀏覽申請課題,然后提交到后臺數據庫,待由管理員處理信息,學生和教師只能瀏覽數據庫信息,不能修改,數據庫的相關信息處理由管理員完成。管理員處理教師課題和學生志愿要完成的操作有:對學生志愿的添加、刪除、修改,能夠查看有哪些學生選擇了志愿,哪些學生還沒有選擇志愿。對教師課題管理要完成的操作有:對教師課題的添加、刪除、修改,并要對教師申請的課題進行審查、批準。另外,管理員還要完成學生課題的排列:分為兩種方式:自動生成終表和手動生成終表,按志愿優先級進行排列。發布公告,查看公告。2系統開發技術2.1語言可行性的分析2.1.1SERVLET技術簡介Servlet是Java技術對CGI(CommonGatewayInterface)編程的回答。Servlet程序在服務器端運行,動態地生成Web頁面。同時它也作為一個中間層,負責連接來自Web瀏覽器或其他HTTP客戶程序的請求和HTTP服務器上的數據庫或應用程序。與傳統的CGI和許多其他類似CGI的技術相比,JavaServlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資,更高效。Servlet被調用的流程如圖2.1所示。圖2.1Servlet被調用的流程圖2.1說明:(1)客戶端(通常為Web瀏覽器)向Web服務器發送一個基于HTTP協議的請求。(2)Web服務器接收到該請求,并將請求交給Servlet容器處理。(3)Servlet容器根據Servlet的配置來查找或創建Servlet的實例,并執行該Servlet,Servlet容器必須把客戶端請求和響應封裝成Servlet規范中規定的請求和響應對象傳給Servlet。(4)Servlet可以使用請求對象獲取客戶端的信息,比如IP地址、請求的參數等,以及執行特定的業務邏輯。Servlet可以使用響應對象向客戶端發送業務數據及業務執行的結果。(5)Servlet處理完該請求后,Servlet容器要保證Servlet的響應內容能夠發送到客戶端去(flush),最后返回到Web服務器。【3】2.1.2JSP及其特點JSP及其特點[2]:JavaServerPages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術。JSP和ASP相比具有兩方面的優點。首先,動態部分用Java編寫,而不是VBScript或其他Microsoft語言,不僅功能更強大而且更易于使用。第二,JSP應用可以移植到其他操作系統和非Microsoft的Web服務器上。JSP和純Servlet相比JSP并沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中編寫靜態HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開:比如,由頁面設計專家進行HTML設計,同時留出供Servlet程序員插入動態內容的空間[4]。2.2框架的可行性2.2.1MVC(ModelViewController)分層結構MVC即模型-視圖-控制器模式是一種“分治”的思想。模型,即相關的數據,它是對象的內在屬性;視圖是模型的外在表現形式,一個模型可以對應一個或者多個視圖,視圖還具有與外界交互的功能;控制器是模型與視圖的聯系紐帶,控制器提取通過視圖傳輸進來的外部信息轉化成相應事件,然后由對應的控制器對模型進行更新;相應的,模型的更新與修改將通過控制器通知視圖,保持視圖與模型的一致性。圖2-2揭示了這三者之間的關系:
圖2-2MVC模型圖2.2.2基于MVC結構web系統設計MVC是包含模型、視力、控制器的分層結構,其系統設計也分別從這三個方面入手,圖2-3為基于MVCWEB系統的圖形化描述。圖2-3MVC模型=1\*GB2⑴控制器的設計控制器是模型和視圖聯系的紐帶,同時也是系統的控制中心。根據控制器在系統中的不同作用,將控制器抽象成四種控制器類型,即主控制器(MainController)、請求映射控制器(RequestMappingConntroller)、視圖選擇控制器(ViewController)和模型控制器(ModelController)。其中,主控制器在系統服務器最前端,用于從xml配置文件中獲取HTTP請求映射表,接收客戶的HTTP請求并且將該請求傳送給請求映射控制器和視圖選擇控制器;請求映射控制器將傳送來的HTTP請求映射到相應的處理器(處理器采用JavaBean形式)進行處理,其映射表直接從ServletContext的變量中獲取(因為該映射表已經由主控制器裝入),處理完后返回結果;視圖控制器根據HTTP請求映射表及處理器處理后的結果進行下一個視圖的選擇;模型控制器負責客戶會話數據的處理:每一個客戶對應一個會話模型,用來描述客戶的各種狀態等。=2\*GB2⑵視圖層設計視圖層即用戶界面,在WEB系統中表現為用戶可見的網頁,對于每一個使用HTTP請求響應模型WEB應用,View組件基本上總是和響應相關聯的組件,并將結果返回給用戶,視圖層應該盡量減少業務邏輯或復雜的分析。=3\*GB2⑶模型層設計模型層通常表現為業務對象或者物理后端系統。模型層通常都是業務相關的,對于數據庫的相關操作,及復雜的業務邏輯分析都應該在模型層實現。【15】2.3系統開發所用工具2.3.1ApacheTomcatTomcat服務器是一個免費的開放源代碼的Web應用服務器,它是Apache軟件基金會(Apache
Software
Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。由于有了Sun的參與和支持,最新的Servlet和JSP規范總是能在Tomcat中得到體現,Tomcat5支持最新的Servlet
2.4和JSP
2.0規范。因為Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器。2.3.2MySQL數據庫MySQL數據庫技術:MySQL是一個快速的多線程、多用戶和健壯的SQL數據庫服務器。MySQL服務器支持關鍵任務。重負載生產系統的使用,也可以將它嵌入到一個大配置(mass-deployed)的軟件中去。(1)MySQL是一個數據庫管理系統。一個數據庫是一個結構化的數據集合。它可以是從一個簡單的銷售表到一個美術館、或者一個社團網絡的龐大的信息集合。如果要添加、訪問和處理存儲在一個計算機數據庫中的數據,你就需要一個像MySQL這樣的數據庫管理系統。從計算機可以很好的處理大量的數據以來,數據庫管理系統就在計算機處理中和獨立應用程序或其他部分應用程序一樣扮演著一個重要的角色。(2)MySQL是一個關系數據庫管理系統。關系數據庫把數據存放在分立的表格中,這比把所有數據存放在一個大倉庫中要好得多,這樣做將增加你的速度和靈活性。“MySQL”中的SQL代表“StructuredQueryLanguage”(結構化查詢語言)。(3)MySQL服務器是一個快的、可靠的和易于使用的數據庫服務器。如果這是你正在尋找的,你可以試一試。MySQL服務器還包含了一個由用戶緊密合作開發的實用特性集。(4)MySQL服務器工作在客戶/服務器或嵌入系統中。MySQL數據庫服務器是一個客戶/服務器系統,它由多線程SQL服務器組成,支持不同的后端。多個不同的客戶程序和庫。管理工具和廣泛的應用程序接口(APIs)。(5)MySQL也可以是一個嵌入的多線程庫,你可以把它連接到你的應用中而得到一個小、快且易于管理的產品。2.4系統運行環境2.4.1硬件環境后臺數據庫服務器:因為服務器為數據庫服務器,且要完成高密度的運算量,所以應采用較高檔的服務器。考慮到與軟件的兼容性,建議采用IntelPentium4多處理器系統、512MBRAM、80GB以上硬盤。客戶機:采用IntelPentium4多處理器系統、512MBRAM、80GB以上硬盤。網絡配置:10M/100M網絡帶寬、100Mb/s網卡、16口交換機。2.4.2軟件環境操作系統的選擇:數據庫服務器:因為服務器為數據庫服務器,特別對穩定性有極高的要求,且支持多CPU。所以應采用Windows2000Server,因為它有優良的穩定性和操作性。數據庫的選擇:因大部分情況下軟件都是在Windows系統下使用的,考慮MySQL的優勢在于中國普遍使用的免費數據庫軟件并且與系統的兼容度較高,并支持集成性安全檢測,且對系統的資源消耗較小。相比之下,Oracle數據庫雖然性能較高,但由于其可操作性和方便性不如MySQL好,并且服務器沒有使用磁盤陣列和多處理器,無法發揮Oracle數據庫設計上的性能優勢,并且對系統性能要求較高。至于Access之類的數據庫,由于其性能較低,且并發度太低又不具安全性,故不予考慮。最終決定后臺數據庫用MySQL5.0。當然整個系統只能在Windows下運行。3需求分析畢業生選題管理一直是學校為培養合格的畢業生所做的最重要的工作,學校為畢業提供合適的課題,畢業生通過對課題的設計,綜合復習學習過的知識,將理論和實踐結合起來,為以后的工作積累寶貴的經驗。傳統的畢業設計的選題過程是:指導老師根據院(系)的要求,設計出一定數量的畢業課題并提交給教學管理人員審閱;教學管理人員審閱課題,檢查出重復的課題,并根據學生的知識水平判斷課題的難易是否適宜,提出修改意見,反饋給教師修改;畢業課題設計完成之后,由學院負責人將全部課題發給畢業生,班級負責人組織畢業生選題,然后交給教學管理人員,教學管理人員檢查學生的選題情況,并最終確定選題結果。雖然是個合理的有序的過程,但在實際過程中,這種管理仍然存在著過程繁瑣、工作效率低等問題。隨著計算機的普及、網絡和信息化的迅速發展,計算機選課系統、計算機信息管理系統正在普及、然而針對畢業設計雙向選題的系統設計卻少見報道。開發一個基于WEB的畢業選題系統,在提高畢業設計選題的工作效率,節省人力、物理資源方面都有極大的優勢。目前,在大多數高校院(系)都沒有一套完整的選題系統,因此設計和開發這樣的一個選題系統具有極大的現實意義。針對上述情況,本文采用目前流行的B/S架構模式,設計了一套基于JSP+MYSQL的畢業設計選題系統。該系統增強了指導教師、學生和管理人員在畢業設計選題過程中的交互性,教師能夠在線提交和更新待審題目,學生可以在線選題并且查看選題結果,管理人員可以在審閱待審題目并且調整學生選題3.1需求說明(1)管理員錄入或導入教師信息,管理員將畢業學生基本信息導入,管理員是所有用戶中權限級別最高的用戶,能夠對教師、學生和個人信息、出題信息、選題信息進行修改。同時,還要負責通知發布、選題結果公布等。(2)教師教師登錄系統后,能夠修改的數據有:密碼、個人聯系方式、包括Email和電話,其它信息不能私自修改。對于題目信息和要求,可以對題目信息和要求,可以通過管理員來修改。教師能后查看到選自己課題的學生人數和學生基本情況。(3)學生學生登錄系統后,只能修改密碼、個人的聯系方式、其它信息不能修改。每個學生只能選一個題目或者一個課題項目的一個模塊部分,選擇之后在規定的時間內可以更改,規定時間以外不能更改,對于已選題目不能再次被選,除非其他學生在規定的時間內退選。畢業生選題管理系統總體流程圖,如圖3.1所示。開始開始用戶登錄驗證教師管理系統管理員管理系統學生管理系統教師課題添加教師課題刪除教師課題查詢教師信息修改按類型查詢查詢全部按類型刪除系統設置學生管理教師管理發表公告學生查看課題學生課題退選學生課題查詢查看審核狀態存在提示確定刪除確定退選確定是否選上按類型查詢查詢全部學生信息修改退出確定是否退出未通過驗證通過驗證是否生成終表圖3.1畢業生選題管理系統總體流程圖3.2功能定義用列表的方式,逐項定量和定性地敘述對系統所提出的功能要求,說明輸入什么量、經怎樣的處理、得到什么輸出,說明系統的容量,包括系統支持的終端數據和應支持的并行操作的用戶數等指標。對出題的要求:(1)每位有資格教師可以出不少于指導名額、不多于8個論題;(2)在管理員確定的時間內出題;(3)不能與已有出題重復。審查的程序:(1)管理員將所有教師出題提交學院學術委員會進行審查;(2)管理員將審查后的備選論題公布在學院網站上,備選論題與指導教師一一對應。選題要求:(1)每個學生只能選擇一個題目;(2)對于同一課題只能一個學生選擇(多人合作完成除外); 3.2.1功能結構圖 根據用戶和系統需求,本系統劃分為三個子系統,即管理員子系統、教師子系統、學生子系統。畢業生選題管理系統畢業生選題管理系統學生子系統管理員子系統教師子系統3.2系統功能結構圖3.2.2系統模塊介紹根據實際情況,系統分為三大模塊,即三個子系統。下面詳細介紹各系統的功能及要求。(1)管理員模塊網絡的維護需要管理員對系統的必要的設置。并保證系統的正常運行。在不系統中,系統規定了管理員的權限與功能,管理員有權對數據庫進行維護。管理員功能系統包括添加功能、修改功能以及統計功能。添加功能能夠添加其他管理員、教師或者學生;修改功能能夠修改教師、學生資料,能夠根據專業設置情況添加課題類別,修改/添加課題的相關信息;統計功能主要是在選題過程結束后,由管理員對結果進行統計,便于院(系)及時掌握學生選題情況。(2)教師模塊課題信息發布,教師可以錄入每個選題信息,但是需要管理員審核后才能供學生選擇;個人資料的修改與添加,教師資料的修改與添加可由管理員或者教師自己來完成;查看選課學生資料,教師可以查看選擇自己課題的學生的資料,決定是否指導該學生的畢業設計。(3)學生模塊學生登錄系統需要自己的學號,登錄后學生可以進行的操作:僅能修改個人的聯系方式;瀏覽供選擇的課題信息,選擇課題;在規定時間內的選擇和更改課題;在規定的時間內查詢選題結果。3.3系統的總體結構根據畢業設計選題的業務情況,系統共分成管理員,教師,學生三大系統模塊,系統功能設置,管理員用戶操作,教師信息修改,選題題目提交,選題題目審核,學生信息導入,學生信息修改,題目選報,信息瀏覽功能。功能如圖所示:學學生志愿管理教師課題管理用戶信息管理自動生成終表手動生成終表文件管理修改學生志愿刪除學生志愿刪除學生課題修改教師課題刪除教師課題增加教師課題申請課題管理添加用戶刪除用戶發表公告修改用戶生成終表系統登錄的主界面管理員登錄圖3.3系統總體結構圖3.4業務流程分析管理員錄入教師及學生初始信息管理員錄入教師及學生初始信息管理員開啟提交選題功能管理員添加審核管理員教師登錄提交選題管理員關閉提交選題功能管理員開啟題目審核功能管理員開啟學生預覽功能管理員調劑選報情況審核管理員審核題目學生登錄預覽題目管理員打印輸出最終報表管理員關閉題目審核功能管理員關閉學生預覽功能管理員開啟學生選報功能學生登錄選報題目管理員關閉學生選報功能圖3.4業務流程示意圖3.4.1學生志愿課題管理在這一塊里,可以分為修改學生志愿、刪除學生志愿、刪除學生課題和查看未選志愿學生四大部分,它的處理流程可以用以下圖表(圖3.5)方式描述:管理人員管理人員登錄學生志愿存儲學生課題存儲修改學生志愿刪除學生志愿刪除學生課題查看未選志愿學生學生基本信息存儲控制界面登陸錯誤被彈出圖3.5管理員對學生志愿操作流程管理人員首先查看要更新的數據,進行修改后,保存進數據庫。3.4.2教師課題管理管理員對教師課題管理分為:修改教師課題、添加教師課題、刪除教師課題和教師申請課題管理四部分,同時對數據庫中的信息進行最后的處理,拿出最終的畢業設計課題小組分組情況,處理流程如下圖(圖3.6):管理員管理員登陸教師課題存儲教師申請課題修改教師課題添加教師課題刪除教師課題批準教師申請課題主控制界面非法用戶被禁止圖3.6教師課題管理部分流程3.4.3用戶基本信息管理用戶基本信息管理包括了對用戶信息的添加、刪除、修改等基本操作,添加用戶后,該用戶可以憑借自己的帳號登陸管理系統;刪除用戶信息后,該用戶登陸信息被刪除,不能進行登陸;需要注意的是,在修改用戶信息時,不要輕易改動用戶登陸信息,否則會造成用戶無法登陸。其數據處理流程如下圖(圖3.7)所示:管理員管理員登陸添加用戶修改用戶刪除用戶主界面用戶信息存儲圖3.7用戶信息管理操作3.4.4自動生成終表自動生成終表是按學生志愿順序生成終表,處理流程如圖3.8:管理員管理員登陸控制界面學生志愿存儲學生第一志愿相應教師課題判斷教師課題是否未滿生成終表是否教師課題存儲學生第二志愿相應教師課題判斷教師課題是否未滿是終表存儲生成終表否圖3.8自動生成終表3.4.5手動生成終表手動生成終表是由管理員判斷哪位學生修哪門課題,不一定要按學生志愿的順序生成終表,比如一位學生的第一志愿是“空調設計”,第二志愿是“網絡設計”,在手動排列生成終表時,管理員很可能直接就將該學生的設計課題定為第二志愿“網絡設計”,而不會考慮第一志愿。處理流程如下圖(圖3.9):管理員管理員登陸控制頁面學生志愿存儲教師課題存儲終表存儲學生志愿教師課題圖3.9手動排列生成終表流程4數據庫設計4.1數據庫概念結構設計在一個數據庫應用系統的開發過程中,數據庫的設計是整個系統的基礎。良好的數據結構設計不僅可以減少數據冗余、提高查詢效率,而且還可以降低應用程序的編寫難度,提高工作效率。4.1.1實體E-R圖在需求分析階段所得到的應用需求應該首先抽象為信息世界的結構,才能更好的更準確的用數據庫管理系統實現這些需求。根據需求分析畫出E-R圖。畢業生選題管理系統的E-R圖如下圖所示。管理員信息管理員信息管理員賬號帳號管理員姓名管理員密碼所屬院系聯系方式郵箱角色圖4.1管理員基本信息E-R圖學生信息學生信息學號學生姓名登錄密碼所屬班級所屬院系性別聯系方式郵箱課題角色圖4.2學生基本信息E-R圖教師信息教師信息教師工號教師姓名登錄密碼所屬院系職稱性別聯系方式郵箱角色圖4.3教師基本信息E-R圖課題信息課題信息課程名稱出題教師允許學院允許專業限選人數課題難度工作量課題性質課題來源課題簡介課題要求出題日期圖4.4課程信息E-R圖以下幾個圖示實體與實體之間的關系:圖4-5學生信息實體和課題實體之間的聯系圖4-5學生信息實體和課題實體之間的聯系學生課題11引用圖4-6教師信息實體與課題信息實體之間的聯系圖4-6教師信息實體與課題信息實體之間的聯系教師課題n1擁有圖4-7學院實體和專業實體之間的聯系圖4-7學院實體和專業實體之間的聯系學院專業n1擁有圖4-8學院實體和教師實體之間的關系圖4-8學院實體和教師實體之間的關系學院教師n1擁有圖4-9課題實體和課題申請信息實體之間的關系圖4-9課題實體和課題申請信息實體之間的關系課題課題申請11引用4.1.2實體聯系E-R圖實體聯系E-R圖如圖4.10所示。1n11n1選題選題指導出題教師信息課題學生信息圖4.10實體聯系圖4.1.3E-R圖向關系模型的轉換關系模型的邏輯結構是一組關系模式的集合。E-R圖則是由實體,實體的屬性和實體間的聯系三個要素組成。所以將E-R圖轉換為關系模型實際上就是要將實體,實體的屬性和實體間的聯系轉換為關系模式。轉換原則如下:(1)實體類型的轉換:將每個實體類型轉換成一個關系模式,實體的屬性及為關系模式的屬性,實體標識符及為關系模式的鍵。(2)聯系類型的轉換,根據不同的情況做不同的處理:①若實體間的聯系是1:1,可以在兩個實體類型轉換成的兩個關系模式中的任意一個關系模式的屬性中加入另一各關系模式的鍵和聯系類型的屬性。②若實體間的聯系1:N,則在N端實體類型轉換成的關系模式中加入1端實體類型轉換成的關系模式的鍵和聯系類型的屬性。③若實體間的聯系是M:N,則將聯系類型也轉換成關系模式,其屬性為兩端實體類型的鍵加上關系類型的屬性,而鍵為兩端實體間的組合。4.1.4關系模式設計依照該規則將教學管理系統的E-R圖轉換為關系模型如下:將每一個實體轉換成一個關系(關系就是給出關系名,寫出屬性,并標明該關系的主鍵)。JB031模式:(1).admin_t(id,account,name,password,college,phone,mail,role)管理員信息(管理員帳號,管理員姓名,管理員密碼,所屬院系,聯系方式,郵箱,角色)(2).student_id(id,stuid,name,password,sex,class,profession,phone,mail,topic,role)學生信息(學號,學生姓名,登錄密碼,性別,所在班級,所屬院系,聯系方式,郵箱,課題,角色)(3).teacher_t(id,teach_id,name,password,sex,title,education,college,phone,mail,role)教師信息(教師工號,教師姓名,登錄密碼,性別,職稱,學歷,所屬院系,聯系方式,郵箱,角色)(4).college_t(id,college_id,college_name)學院信息(學院編號,學院名稱)(5).profession_t(id,profession_id,profession_name,college)專業信息(專業編號,專業名稱,所屬院系)(6).topic_t(id,topic_name,teacher,permit_col,permit_prof,limit_no,difficult,workload,topic_prop,topic_source,topic_intro,topic_ask,topic_date)課題信息(課題名稱,出題教師,允許學院,允許專業,限選人數,課題難度,工作量,課題性質,課題來源,課題簡介,課題要求,出題日期)(7).apply_t(id,topic_state,student_state,topic_num,select_num,apply_date)課題申請信息(審核狀態,正選狀態,課題編號,已選人數,申請日期)(8).wash_t(id,student_id,wash_id,topic_id,select_time)預選信息(學號,志愿號,課題名稱,預選日期)(9).systems_t(id,college,college_state,produce_topic,view_topic,select_topic,produce_no)系統信息(學院,學院選題狀態,出題狀態,預覽狀態,選題狀態,允許出題數)(10).document_t(id,user_id,user_name,to_who,user_type,file_name,file_path,file_context,file_rank,create_time)文件(用戶賬號,用戶姓名,接收者,用戶角色,文件名稱,文件路徑,文件內容,文件歸類,發表日期)4.1.5數據表結構1.管理員信息表,如表4.11。表4.11管理員信息表中文名稱字段名數據類型約束管理員帳號accountVARCHARNotnullunique管理員姓名nameVARCHARNotnull管理員密碼passwordVARCHARNotnull所屬院系collegeINTEGERReferencescollege_t(college_id)聯系方式phoneVARCHARyes郵箱mailVARCHARyes角色roleVARCHARNotnull2.學生信息表,如表4.12。表4.12學生信息表中文名稱字段名數據類型約束學號stuidVARCHARNotnullunique學生姓名nameVARCHARNotnull登錄密碼passwordVARCHARNotnull學生性別sexVARCHARNotnull學生所在班級classVARCHARNotnull學生所屬院系professionINTEGERReferencesprofession_t(profession_id)聯系方式phoneVARCHARyes郵箱mailVARCHARyes課題topicINTEGERReferencestopic_t(topic_name)角色roleVARCHARNotnull3.教師信息表,如表4.13。表4.13教師信息表中文名稱字段名數據類型約束教師工號teach_idVARCHARNotnulluniqu教師姓名nameVARCHARNotnull登錄密碼passwordVARCHARNotnull教師性別sexVARCHARNotnull教師職稱titleVARCHARNotnull教師學歷educationVARCHARNotnull所屬院系collegeINTEGERReferencescollege_t(college_id)聯系方式phoneVARCHARyes郵箱mailVARCHARyes角色roleVARCHARNotnull4.課題信息表,如表4.14。表4.14課題信息表中文名稱字段名數據類型約束課程名稱topic_nameVAECHAENotnullunique出題教師teacherINTEGERNotnull允許學院permit_colINTEGERReferencescollege_t(college_id)允許專業permit_profINTEGERReferencesprofession_t(profession_id)限選人數limit_noINTEGERNotnull課題難度difficultVARCHARNotnull課題工作量workloadVARCHARNotnull課題性質topic_propVARCHARNotnull課題來源topic_sourceVARCHARNotnull課題簡介topic_introVARCHARNotnull課題要求topic_askVARCHARNotnull出題日期topic_dateTIMESTAMPNotnull5.學院信息表,如表4.15。表4.15學院信息表中文名稱字段名數據類型約束學院編號college_idINTEGERNotnullunique學院名稱college_nameVARCHAENotnull6.專業信息表,如表4.16。表4.16專業信息表中文名稱字段名數據類型約束專業編號Profession_idINTEGERNotnullunique專業名稱Profession_nameVARCHARNotnull所屬院系collegeINTEGERReferencescollege_t(college_id)7.課題申請信息表,如表4.17。表4.17課題申請信息表中文名稱字段名數據類型約束審核狀態topic_stateINTEGERNotnull正選狀態student_stateVARCHARNotnull已選人數topic_numVARCHAR yes出題編號select_numVARCHARNotnull申請日期apply_dateTIMESTAMPNotnull8.學生預選信息表,如表4.18。表4.18學生預選信息表中文名稱字段名數據類型約束學號student_idINTEGERReferencesstudent_t(stuid)志愿編號wash_idVARCHARNotnull課題topic_nameVARCHAR Referencestopic_t(topic_name)預選日期select_timeTIMESTAMPNotnull9.系統設置信息表,如表4.19。表4.19系統設置信息表中文名稱字段名數據類型約束所屬院系collegeINTEGERReferencesprofession_t(profession_id)院系狀態college_stateINTEGERNotnull出題狀態produce_topicINTEGERNotnull預覽狀態view_topicINTEGERNotnull選題狀態select_topicINTEGERNotnull出題個數produce_noINTEGERNotnull10文件信息表,如表4.20。表4.20文件信息表中文名稱字段名數據類型約束用戶帳號User_idVARCHARNotnullunique用戶姓名User_nameVARCHARNotnull用戶角色User_typeVARCHARNotnull接收用戶To_whoVARCHARyes文件名稱File_naemVARCHARNotnull文件路徑File_pathVARCHARNotnull文件內容File_contextTEXTyes發表日期upfile_timeTIMESTAMPNotnull5系統實現詳細設計與實現根據已有的需求信息和總體設計,來進行系統的詳細設計和實現。為此,我們建立了一個Web工程,系統的設計和實現如下。5.1系統登陸界面的設計與實現用戶登陸模塊最基本的作用是為了限制該管理系統資源的使用,只有經過身份確認的操作員才能對其管理系統進行相關操作。其基本過程是從客戶端取得提交的用戶名和密碼,然后到數據庫中進行核對。如果該信息在數據庫中存在,那么就可以成功登錄到下一界面,否則就會被該系統拒之門外。選擇連接數據庫后,進入用戶登陸界面。在用戶登陸界面中輸入用戶名和密碼,從數據庫表中檢查是否有相應的用戶名和密碼。如果用戶名和密碼錯誤,系統就會給出錯誤提示,并且不會有任何的頁面跳轉。如果輸入的用戶名和相應密碼正確,則可以點擊“確定”進入主控制平臺。用戶登陸的界面如圖5.1所示。圖5.1登錄系統界面5.2主控制平臺的設計與實現通過用戶登陸界面,進入主控制平臺。在主控制界面中,包括教師管理、課題管理、學生管理、返回管理員登錄頁面等功能模塊的連接,管理員可通過對管理模塊的選擇進行相應的操作。主控界面如圖5.2所示。圖5.2主控制界面5.3用戶操作總體設計用戶操作主要包括管理員登錄和學生及教師管理模塊,具體功能如下:管理員登錄:用于登錄系統。學生管理模塊:用于瀏覽、添加和修改學生及教師的信息,以及課題的管理。5.3.1用戶登錄設計用戶登錄是用戶進入主頁面的入口,其運行結果如圖5.3所示。圖5.3用戶登錄運行結果系統登陸是畢業生選題管理中最先使用的功能,因為用戶登陸在數據庫中使用的是人員表,人員表中有一個role字段,是來標識是否是管理員的。在登陸時要根據數據庫的這個字段來判斷此用戶是否具有管理員的權限。在網頁里添寫用戶名和密碼后點擊登陸按鈕,網頁會訪問一個URL,這個URL是“logon.action”,這個action的name屬性的值是login,它是Struts的Actoin的實現類在配置文件中的名字,如下所示:<actionname="login"type="com.graduate.action.LoginAction"/>action是Struts的Action的URL,他們在Struts的配置文件中都是已經配好的,如下所示:<actionname="login"class="com.graduate.LoginAction"><resultname="studentlogin">/student/index.jsp</result> <resultname="fail">login.jsp</result> <resultname="teacherlogin">/teacher/index.jsp</result> <resultname="fail">login.jsp</result> <resultname="adminlogin">/admin/index.jsp</result> <resultname="fail">login.jsp</result></action>在這個配置文件中,可以了解到如下信息:根據name="login"可以找到與之相對應的Action的實現類“com.graduate.action.LoginAction”。根據type="com.graduate.action.LoginAction"可以找到處理用戶數據的Action類。根據<resultname="success"/>/user/index.jsp</result>可以了解,這個Action返回success時,頁面會被轉到/user/index.jsp文件,這就是登陸成功的頁面。如果當Action返回fail時,頁面會被轉到login.jsp文件,用戶重新登錄,并告訴用戶的錯誤信息。Struts的UserAction實現類的execute()方法是最先被執行的,這個方法本身也沒有具體的事務,而是根據action的參數不同執行相應的方法。在登陸頁里面可以找到有一個“action=logon”的字樣,它的目的就是在這里做邏輯判斷。當action=logon時調用logon()方法。logon()方法從UsersForm中得到用戶提交的數據,然后在調用UsersDao()的logonUsers()方法。并且把UsersForm轉成Users類做為logonUsers()方法的參數。調用后會返回一個boolean型的值。如果為真,則返回“mapping.findForward("success");”否則返回“mapping.findForward("fail");”也就是當用戶登陸成功后,返回給用戶登陸成功的頁面,登陸失敗后返回用戶一個登陸失敗的頁面。那么UsersDao的logonUsers()方法是根據什么得到的返回值呢,現在就讓我們看看這個方法,這個方法先通過HibSessionFactory得到一個Hibernate的Session并且開始一個事務,Session再像使用一個欲編譯似的命令似的東西,設定參數、提交事務和最后在關閉Session.。得到一個List里面就存儲著所有查詢出的結果。根據這個結果就可以判斷出該用戶是否有登陸的權根了,在返回true或者false。就這樣合法的用戶就可以順利的登陸了。那剛才那些有些類似于欲編譯的東西是什么呢,這些就是Hibernate特有的查詢語言,被稱為Hibernate查詢語言(HQL),而它本身也就是使用的JDBC的欲編譯技術。關鍵代碼如下:publicStringexecute(){ if(hasErrors()){ returnINPUT;}ActionContext.getContext().getSession().put("user",admin); returnSUCCESS;}publicvoidvalidate(){Stringnumber=(String)ActionContext.getContext().getSession().get("number"); System.out.println("name"+name); if(name==null||name.trim().equals("")){ addFieldError("username","用戶名不能為空"); return; } if(psw==null||psw.trim().equals("")){ addFieldError("userpsw","密碼不能為空"); return; } if(!number.equalsIgnoreCase(num)){ addFieldError("checkcode","驗證碼不正確"); return; }AdminDAOdao=(AdminDAO)DAOFactory.getDAOInstance(AdminDAO.class); admin=dao.findByUserId(name);if(admin==null||!psw.trim().equals(admin.getPassword())){ addFieldError("login","不是合法用戶"); return; } }5.3.2教師管理模塊設計教師管理模塊主要包括審核課題信息、添加課題、查看教師、添加教師。此模塊文件架構如圖5.4所示。各項管理工作都是在用戶成功登陸后的管理頁面進行的,在管理控制頁面的左側是各項的相關鏈接,右側是操作平臺。單擊“添加課題信息”,即打開添加課題信息的頁面如圖5.4所示。圖5.4添加課題信息頁面添加課題信息的鏈接是這樣的,如下所示:<ahref="addtopic.jsp"target="main">添加課題</a>在Struts配置文件中,添加課題信息的鏈接沒有使用Action類,也沒有使用Action的實現類,如下所示:addTopic.jsp文件,只是一個普通的JSP文件,但是它的表單元素都是與TopicAction相對應的,TopicAction如下所示:TocpicAction類中的reset()方法作用是當用戶點擊“重置”按鈕時,清空input輸入框的內容,toString()方法覆蓋了Object和toString()方法,populate()方法很有,它把TopicAction轉化成Topic實體類,大大方便了程序在對數據庫操作時使用的方便。而且這個方法中還把申請日期等表單元素的值由字符型轉成日期類型。在addTopic.jsp頁面中的action上可以看到它要提交的URL,如下所示:<formname="topic"method="post"action="topic_add.action">,Topic的action實現類是“com.graduate.TopicAction”,如下所示:publicTsave(Tentity){ Sessionsession=HibernateSessionFactory.getSession(); session.save(entity); returnentity;在TopicAction找到參數action等于add時所調用的方法addTopic(),它只是把從topic表單轉化成的topic類做為參數傳給了TopicDAO的save()方法。在由這個方法向數據庫添加課題信息,如下所示:如果添加成功頁面會被被重新加載回頁面顯示出來topic.action的URL。這樣就在頁面做一次提交時它訪問了二次TopicAction,第一次的作用是向數據庫中添加信息,隨后又把所添加的課題信息取出來顯示給用戶,同樣TopicAction還只是調用TopicDAO,TopicAction取出從TopicDAO中數據,在把它存到ActionContext里,然后返回returnmapping.findForward("success");在Strutsr的配置文件里返回頁是addTopic.jsp。課題信息都在這個頁中顯示出來。這是添加課題信息的整個過程,在這個過程中,有一部分是用于顯示課題信息的,課題信息的列表的最后一列可以對該條記錄做刪除和修改。刪除的鏈接地址是<ahref="topic_deleteTopic.action">刪除</a>它向Action的實現類提交了兩個參數,一個是action=deleteTopic是固定不變的,另一個是該課題的id這是根據不同記錄取出來的。在TopicAction類中根據action的值可以找到與其相對的方法,在這個方法里得到頁面提交過來的用戶ID,把這個id存在Topic表中的實例中,傳給dao的delete()方法,我們可以看到關于數據庫方面的操作都被封裝在Dao中。刪除用戶時和添加用戶一樣都是先得到一個Hibernate的Session,后調用它的delete()方法就可以了修改課題的信息時必須先把要修改的課題信息先查找出來,讓用戶可以直觀的根據以前的信息修改。這樣在點擊修改時也要傳給Action一個用戶ID,用來查詢出課題信息,如下所示:<ahref="topic_modifyTopic.action&id=’topic.getId()’">編輯</a>">修改</a>根據頁面的鏈接可以在Struts的配置文件里找到相應的配置信息,它調用了TopicAction類,返回到updateTopic,在UsserAction中同前面一樣也是根據action的參數來識別出調用相應的方法,使在調用Dao的loadTopic()的方法后,得到一個Topic里面存著與此id相對應的課題把它存在request里。Hibernate在使用這個load()方法時比較特別,需要傳入實體類的class,和要查詢的用戶ID。得到的返回值需要做一下強制類型轉換。顯示課題信息的頁面在updateTopic.jsp,如圖所示。圖5.5修改課題信息頁面5.4技術難點5.4.1中文亂碼由于瀏覽器中的參數傳遞是按字節傳送,因此英文和數字不會有任何的問題,而中文漢字則由兩個字節組成.為了解決這個問題,使用了下面的兩種方法:<%request.setCharacterEncoding(“utf-8”<%request.getParameter("Password").getBytes("ISO-8849-1"),"utf-8")%>5.4.2HQL語言本系統中,所有對數據庫的操作都由Hibernate來完成,因此用到了大量的HQL語言.HQL是Hibernate設計的一套完整而實用高效的查詢語言,它通過面向對象的語句結構實現了和SQL語言類似的功能.如果向表里插入一條數據的話,直接調用save()方法即可,但如果要使用查詢功能的話,我按照一般的SQL語句的方法:from表名where條件,卻總是找不到預期的數據,后來看書中發現,from后跟的是表對應映射的類文件名,而非表名,比如招聘表為invite,它對應的類為Invite.java,所以在from后要根Invite而不是invite.6測試6.1常用的測試方法測試在整個軟件開發過程中起著至關重要的作用,軟件測試對于保證一個軟件的可靠性是極為重要的。測試占據整個軟件生命周期的75%左右,可見它的重要性。特別是在面對一個龐大而復雜的系統,軟件測試就能充分的發揮它的作用,因為伴隨著測試,我們會發現軟件中存在的各種各樣的問題。從而,盡快地解決問題。在開發一個系統的各個階段都不可避免地會發生這樣或那樣的問題,所以在每一個開發的過程中的各個階段都要對軟件進行測試,軟件測試的目標是盡可能地發現軟件中的錯誤,以便對其進行修改。測試包括單元測試和集成測試。單元測試是把一個模塊作為獨立的程序單元進行測試,以保證它能夠正確執行規定的功能,單元測試是編碼和單元測試階段的任務。集成測試是將已經通過徹底測試的模塊組裝起來,以形成一個系統或軟件產品,集成測試主要使用黑盒測試法對系統進行功能測試,集成測試的主要任務是檢查和排除模塊接口錯誤。全局數據結構錯誤。模塊中某些遺漏的錯誤;集成測試是系統集成階段的任務;集成測試可分為自頂向下集成測試、自底向上集成測試、自頂向下和自底向上綜合的集成測試、回歸測試、測試工作能否成功,主要取決于測試案例設計是否科學合理。測試案例系指測試輸入數據及其對應的輸出,其設計依賴于所采用的測試方法:白盒測試與黑盒測試。1.白盒測試:使用白盒方法導出測試案例是依據模塊的編碼,即模塊的內部邏輯對測試者是可見的,故稱為白盒測試,有時也稱為玻璃盒測試。測試的目的在于用最少的測試案例,檢測出最多的錯誤。使用白盒測試方法所導出的測試案例能保證模塊中所有獨立途徑至少要測試一次。測試所有邏輯決策真和假兩個方面。在所有循環的邊界內部和邊界上執行循環體。檢查內部數據結構以保證其有效性。白盒測試又包含基本路徑測試、條件測試、數據流測試和循環測試。2.黑盒測試:黑盒測試集中在軟件的功能需求上,黑盒測試是在程序或模塊的接口級進行,而不考慮該程序的內部邏輯。黑盒測試能夠用于檢測程序中下列類型的錯誤:(1)不正確或漏掉的功能,這往往是由于程序算法中的問題所造
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能賦能金融科技與互聯網跨界融合報告
- 2025年教育精準扶貧背景下農村學校德育工作評估報告
- 2025年新能源微電網穩定性控制與電力系統自動化技術應用報告
- java高級程序員面試題及答案
- java常見的線程面試題及答案
- 2025年飲料市場新型甜味劑法規監管下的品牌合作與跨界營銷策略
- java200面試題及答案
- ic面試試題及答案
- h5面試題庫及答案
- 在線教育平臺2025年用戶增長與留存策略的用戶留存效果評估報告
- 《聚落與環境》名師課件
- 《城軌通信信號基礎設備應》課件-FTGS軌道電路
- 浙江省寧波市鎮海區人教PEP版2022年小學畢業考試英語試卷【含答案】
- 中班語言《傘》課件
- 心悸-《中醫內科學》教案
- 營區物業服務營區物業服務保密措施
- 托槽粘結醫學課件
- 藍曬創作方案
- 醫院智慧后勤管理平臺建設規劃方案
- 人工智能在傳染病防控中的應用
- 中藥學綜合知識與技能:中藥的合理應用考試答案及答案
評論
0/150
提交評論