在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第1頁(yè)
在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第2頁(yè)
在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第3頁(yè)
在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第4頁(yè)
在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

在線作業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文目 錄摘要IAbstract:II第一章 緒論11.1 研究的背景11.2 研究的內(nèi)容11.3 研究的意義2第二章 系統(tǒng)的設(shè)計(jì)模式與技術(shù)準(zhǔn)備32.1 系統(tǒng)的設(shè)計(jì)模式32.2 技術(shù)準(zhǔn)備3第三章 系統(tǒng)分析93.1可行性分析93.1.1 經(jīng)濟(jì)可行性分析93.1.2 技術(shù)可行性分析93.2需求分析93.2.1系統(tǒng)運(yùn)行環(huán)境93.2.2系統(tǒng)功能需求93.2.3系統(tǒng)性能需求123.2.4主要功能要求13第四章 系統(tǒng)設(shè)計(jì)144.1 系統(tǒng)業(yè)務(wù)流程分析144.2 功能模塊的分析與設(shè)計(jì)14第五章 數(shù)據(jù)庫(kù)設(shè)計(jì)165.1數(shù)據(jù)庫(kù)需求分析165.2數(shù)據(jù)的組織與存儲(chǔ)165.3 邏輯設(shè)計(jì)17第六章 系統(tǒng)實(shí)現(xiàn)206.1 系統(tǒng)研發(fā)原則206.2 系統(tǒng)的實(shí)現(xiàn)21第七章 結(jié)論487.1 工作總結(jié)與成果487.2 不足及尚待解決的問(wèn)題48參考文獻(xiàn)49致 謝5038. 第一章 緒論1.1 研究的背景 隨著計(jì)算機(jī)以及網(wǎng)絡(luò)的普及,教師與學(xué)生對(duì)輔助教學(xué)方式的要求也越來(lái)越高,在教學(xué)輔助方式上追求質(zhì)量及效率。作為教學(xué)核心組成之一的作業(yè)管理也趨向更加便捷快速的方式。經(jīng)過(guò)調(diào)查,現(xiàn)階段高校進(jìn)行作業(yè)管理的方式主要有三種:情況一:老師與學(xué)生的課外教學(xué)互動(dòng)通過(guò)公共郵箱,如老師一般把教學(xué)資料上傳到公共郵箱供生下載,學(xué)生把電子版作業(yè)上交到公共郵箱。這種方式的局限性是郵箱的容量有限,對(duì)于大容量郵件,服務(wù)器只保存有限的時(shí)間而且老師難以統(tǒng)計(jì)學(xué)生提交作業(yè)的情況,也難以批改。情況二:通過(guò)U盤拷貝教師發(fā)布作業(yè)以及提交作業(yè),這種方式的成本高,一旦U盤損壞會(huì)導(dǎo)致作業(yè)丟失。情況三:部分有該方面技術(shù)的教師會(huì)建立起個(gè)人輔助教學(xué)網(wǎng)站,網(wǎng)站開(kāi)發(fā)需花費(fèi)教師較多的時(shí)間和精力,一旦建成,修改要手動(dòng)編輯源代碼,比較麻煩,而且教師的個(gè)人教學(xué)輔助網(wǎng)站相對(duì)分散,其共享性不強(qiáng),可管理性較差。針對(duì)目前的狀況,很有必要開(kāi)發(fā)一個(gè)操作簡(jiǎn)單,功能完備,為教師學(xué)生進(jìn)行作業(yè)管理提供便捷的在線作業(yè)管理系統(tǒng),簡(jiǎn)化作業(yè)管理的步驟,從根本上解決作業(yè)提交步驟復(fù)雜的問(wèn)題。1.2 研究的內(nèi)容本文以所設(shè)計(jì)的作業(yè)管理系統(tǒng)為背景,闡述了該系統(tǒng)的設(shè)計(jì)思路和功能分析。首先對(duì)該作業(yè)管理系統(tǒng)做出簡(jiǎn)要的概述,分析系統(tǒng)的背景及意義,再?gòu)男枨蠓治?,總體設(shè)計(jì)再到其各個(gè)功能的詳細(xì)設(shè)計(jì),再選擇合適的開(kāi)發(fā)語(yǔ)言工具對(duì)其進(jìn)行代碼實(shí)現(xiàn)。1.3 研究的意義 每次教授了新的章節(jié)或者內(nèi)容之后,教師都有可能需要布置相應(yīng)的作業(yè)或練習(xí)以保證學(xué)生可以牢固掌握相應(yīng)知識(shí)。作為教學(xué)的核心之一的作業(yè)管理,其傳統(tǒng)的實(shí)現(xiàn)方式步驟既繁瑣又耗時(shí),還不能很好的保證作業(yè)發(fā)布的即時(shí)性及可控性,即教師無(wú)法在他需要的時(shí)候立即發(fā)布作業(yè),教師也無(wú)法提前預(yù)設(shè)將要發(fā)布的作業(yè),刪除,編輯,批改等操作也不夠便捷。這時(shí),作業(yè)管理系統(tǒng)的作用就體現(xiàn)出來(lái)了。教師可以在網(wǎng)上發(fā)布自己的課程作業(yè),而且還可以選擇及時(shí)發(fā)布還是定時(shí)發(fā)布,對(duì)過(guò)期的作業(yè)進(jìn)行刪除,查看學(xué)生作業(yè)提交的情況,批改學(xué)生作業(yè)等,既方便快捷也省時(shí)高效。第二章 系統(tǒng)的設(shè)計(jì)模式與技術(shù)準(zhǔn)備2.1 系統(tǒng)的設(shè)計(jì)模式 系統(tǒng)采用現(xiàn)今流行的B/S模式開(kāi)發(fā),分層設(shè)計(jì)如下:JSP頁(yè)面Action控制層數(shù)據(jù)訪問(wèn)層 數(shù)據(jù)庫(kù)Struts2Mysql 圖2-1 系統(tǒng)分層設(shè)計(jì)圖2.2 技術(shù)準(zhǔn)備l Java Java,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱。Java的語(yǔ)言特點(diǎn)如下:1.Java是簡(jiǎn)單的 Java與C+極為相似,但卻簡(jiǎn)單得多。高級(jí)編程語(yǔ)言的所有特性中,不是絕對(duì)需要的都已刪去了。例如,Java沒(méi)有算符過(guò)載、標(biāo)題文件、預(yù)處理、指針運(yùn)算、結(jié)構(gòu)、聯(lián)合、多維數(shù)組、模板及隱式類型變換。如果你知道一點(diǎn)C、C+或Pascal,你很快就會(huì)駕馭Java。這里是一個(gè)簡(jiǎn)單的JavaHelloWorld程序: publicclassHelloInternetpublicstaticvoidmain(Stringargv)System.out.println(“HelloIn-ternet!”) 2.Java是面向?qū)ο蟮?Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言。除了簡(jiǎn)單的類型,如數(shù)字和布爾算子之外,Java中的大部分都是對(duì)象。 正如任何面向?qū)ο蟮恼Z(yǔ)言一樣,Java代碼也按類組織。每個(gè)類定義一組規(guī)定對(duì)象行為的方法。一個(gè)類可以繼承另一個(gè)類的行為。在類的根層次上,通常是類對(duì)象。 3.Java是靜態(tài)類型的 在一個(gè)Java程序中,必須定義所用對(duì)象(數(shù)字、字符、數(shù)組等)的類型。這有助于編程人員很快發(fā)現(xiàn)問(wèn)題,因?yàn)楫?dāng)程序編譯時(shí)可以檢測(cè)類型錯(cuò)誤。 不過(guò),Java系統(tǒng)中的對(duì)象也有動(dòng)態(tài)類型。要求一個(gè)對(duì)象為動(dòng)態(tài)類型往往是可能的,所以編程人員寫的程序可以對(duì)不同類型的對(duì)象做不同的事。 4.Java是編譯型的 當(dāng)運(yùn)行Java程序時(shí),它首先被編譯成字節(jié)代碼。字節(jié)代碼非常類似于機(jī)器指令,所以Java程序非常高效。然而,字節(jié)代碼并不專對(duì)一種特定的機(jī)器,所以Java程序無(wú)需重新編譯便可在眾多不同的計(jì)算機(jī)上執(zhí)行。 Java源程序被編譯成類文件,它相當(dāng)于程序的字節(jié)代碼表現(xiàn)。在一個(gè)Java類文件中,所有對(duì)方法及實(shí)例變量的參照均按名進(jìn)行,并在第一次執(zhí)行代碼時(shí)加以分辨。這使得代碼更通用,更不易受修改的影響,而仍具高效。 5.Java是體系結(jié)構(gòu)中立的 Java語(yǔ)言對(duì)每種計(jì)算機(jī)都一樣。比如,簡(jiǎn)單的類型都是不變的:整數(shù)總是32位,長(zhǎng)整數(shù)總是64位。令人奇怪的是,諸如C及C+等時(shí)髦的編程語(yǔ)言卻不是這樣。由于這些語(yǔ)言定義如此自由,每種編譯器及開(kāi)發(fā)環(huán)境便各有不同了,這使程序的移植成為討厭的問(wèn)題。Java程序的移植卻很容易,而且不需要進(jìn)行重新編譯。 6.Java是健全的 Java程序不可能造成計(jì)算機(jī)崩潰。Java系統(tǒng)仔細(xì)檢測(cè)對(duì)內(nèi)存的每次訪問(wèn),確認(rèn)它是合法的,而且不致引起任何問(wèn)題。 不過(guò),即使Java程序也可能有錯(cuò)誤。如果出現(xiàn)某種出乎意料之事,程序不會(huì)崩潰,而把該例外拋棄。程序會(huì)發(fā)現(xiàn)這類例外,并加以處理。 傳統(tǒng)的程序可以訪問(wèn)計(jì)算機(jī)的全部?jī)?nèi)存。程序可能(無(wú)意識(shí)地)修改內(nèi)存中的任何值,這就會(huì)造成問(wèn)題。Java程序只能訪問(wèn)內(nèi)存中允許它們?cè)L問(wèn)的那些部分,所以Java程序不可能修改不擬修改的值。 7.Java是小巧的 由于Java的設(shè)計(jì)是要在小的計(jì)算機(jī)上運(yùn)行,作為一種編程語(yǔ)言來(lái)說(shuō)其系統(tǒng)是相對(duì)較小的。它能有效地在4MB以上RAM的PC機(jī)上運(yùn)行。Java翻譯器只占用幾百KB。這種翻譯器對(duì)Java的平臺(tái)無(wú)關(guān)性和可移植性是可靠的。 由于Java很小,它對(duì)內(nèi)存很小的計(jì)算機(jī),如基于Java的PC機(jī),以及電視機(jī)、烤箱、電話機(jī)及家用計(jì)算機(jī)等,是很理想的。 8.Java是多線程的 Java程序可以執(zhí)行一個(gè)以上的線程。比如,它可以在一個(gè)線程中完成某一耗時(shí)的計(jì)算,而其它線程與用戶進(jìn)行交互對(duì)話。所以用戶不必停止工作,等待Java程序完成耗時(shí)的計(jì)算。 在多線程環(huán)境中的編程通常是困難的,因?yàn)樵S多東西可能同時(shí)出現(xiàn)。但是,Java提供了易于使用的同步特性,使編程更為方便。 Java線程通常被映射為實(shí)際的操作系統(tǒng)線程,只要底層操作系統(tǒng)支持這種映射。因此,用Java寫的應(yīng)用程序可說(shuō)是“MP熱”。這就是說(shuō),如果它們?cè)诙嗵幚砥鳈C(jī)器上運(yùn)行,它們更將表現(xiàn)不凡。 9.Java是可收集無(wú)用的存儲(chǔ)單元的 用C及C+寫軟件的編程人員必須仔細(xì)跟蹤所用的內(nèi)存塊。當(dāng)一個(gè)塊不再使用時(shí),他們務(wù)必讓程序釋放它,從而方可再用。在大的項(xiàng)目中,這可能很困難,并往往成為出錯(cuò)和內(nèi)存不足的根源。 在Java的情況下,編程人員不必為內(nèi)存管理操心。Java系統(tǒng)有一個(gè)叫做“無(wú)用單元收集器”的內(nèi)置程序,它掃描內(nèi)存,并自動(dòng)釋放那些不再使用的內(nèi)存塊。 10.Java是快速的 Java比典型的腳本語(yǔ)言大為有效,但它比C慢20倍。這對(duì)大多數(shù)應(yīng)用是可接受的。 不久的將來(lái),代碼生成器就可供利用了,這將使Java程序幾近于用C或C+編寫的程序那么快。 11.Java是安全的 Java程序沒(méi)有指針,而且象這樣的字節(jié)代碼程序強(qiáng)在類型,所以在執(zhí)行之前它可能驗(yàn)證Java程序。謊櫓腏ava程序得以保證不突破Java語(yǔ)言的任何限制,而且可以安全地執(zhí)行。Java字節(jié)代碼驗(yàn)證被Web瀏覽器用來(lái)確保小程序不含病毒。 12.Java是可擴(kuò)展的 Java程序可與用其它語(yǔ)言編寫的現(xiàn)存程序庫(kù)連接。由于Java數(shù)據(jù)結(jié)構(gòu)與C的數(shù)據(jù)結(jié)構(gòu)的類型極為相似,這是相當(dāng)方便的。最大的問(wèn)題在于,現(xiàn)有多線程程序庫(kù)為數(shù)不多。 Java程序可以聲明某些方法是內(nèi)部的,然后,把這些內(nèi)部方法映射成軟件庫(kù)所定義的功能,從而動(dòng)態(tài)地鏈接到虛擬機(jī)。l Struts2Struts 2是Struts的下一代產(chǎn)品。是在 struts 和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并,全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)的差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開(kāi),所以Struts 2可以理解為WebWork的更新產(chǎn)品。因?yàn)镾truts 2和Struts 1有著太大的變化,但是相對(duì)于WebWork,Struts 2只有很小的變化。一個(gè)請(qǐng)求在Struts2框架中的處理大概分為以下幾個(gè)步驟:1、客戶端初始化一個(gè)指向Servlet容器(例如Tomcat)的請(qǐng)求;2、這個(gè)請(qǐng)求經(jīng)過(guò)一系列的過(guò)濾器(Filter)(這些過(guò)濾器中有一個(gè)叫做ActionContextCleanUp的可選過(guò)濾器,這個(gè)過(guò)濾器對(duì)于Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin);3、接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問(wèn)ActionMapper來(lái)決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action;4、如果ActionMapper決定需要調(diào)用某個(gè)Action,F(xiàn)ilterDispatcher把請(qǐng)求的處理交給ActionProxy;5、ActionProxy通過(guò)Configuration Manager詢問(wèn)框架的配置文件,找到需要調(diào)用的Action類;6、ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例。7、ActionInvocation實(shí)例使用命名模式來(lái)調(diào)用,在調(diào)用Action的過(guò)程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。8、一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是(但不總是,也可能是另外的一個(gè)Action鏈)一個(gè)需要被表示的JSP或者FreeMarker的模版。在表示的過(guò)程中可以使用Struts2框架中繼承的標(biāo)簽。在這個(gè)過(guò)程中需要涉及到ActionMapper。l Entity存放實(shí)體類,實(shí)體類主要是作為數(shù)據(jù)管理和業(yè)務(wù)邏輯處理層面上存在的類別; 它們主要在分析階段區(qū)分 實(shí)體類的主要職責(zé)是存儲(chǔ)和 管理系統(tǒng)內(nèi)部的信息,它也可以有行為,甚至很復(fù)雜的行為,但這些行為必須與它所代表的實(shí)體對(duì)象密切相關(guān)。大多情況下,實(shí)體類和數(shù)據(jù)庫(kù)中的表(這里指實(shí)體表,不包括表示多對(duì)多對(duì)應(yīng)的關(guān)系表)是一一對(duì)應(yīng)的,但這并不是一個(gè)限制,在復(fù)雜的數(shù)據(jù)庫(kù)設(shè)計(jì)中,有可能出現(xiàn)一個(gè)實(shí)體類對(duì)應(yīng)多個(gè)表,或者交叉對(duì)應(yīng)的情況。l DaoDAO(數(shù)據(jù)訪問(wèn)對(duì)象)是一種應(yīng)用程序編程接口(API),存在于微軟的Visual Basic中,它允許程序員請(qǐng)求對(duì)微軟的Access數(shù)據(jù)庫(kù)的訪問(wèn)。DAO是微軟的第一個(gè)面向?qū)ο蟮臄?shù)據(jù)庫(kù)接口。DAO對(duì)象封閉了Access的Jet函數(shù)。通過(guò)Jet函數(shù),它還可以訪問(wèn)其他的結(jié)構(gòu)化查詢語(yǔ)言(SQL)數(shù)據(jù)庫(kù)。 DAO是Data Access Object數(shù)據(jù)訪問(wèn)接口,數(shù)據(jù)訪問(wèn):顧名思義就是與數(shù)據(jù)庫(kù)打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)資源中間。在核心J2EE模式中是這樣介紹DAO模式的:為了建立一個(gè)健壯的J2EE應(yīng)用,應(yīng)該將所有對(duì)數(shù)據(jù)源的訪問(wèn)操作抽象封裝在一個(gè)公共API中。用程序設(shè)計(jì)的語(yǔ)言來(lái)說(shuō),就是建立一個(gè)接口,接口中定義了此應(yīng)用程序中將會(huì)用到的所有事務(wù)方法。在這個(gè)應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時(shí)候則使用這個(gè)接口,并且編寫一個(gè)單獨(dú)的類來(lái)實(shí)現(xiàn)這個(gè)接口在邏輯上對(duì)應(yīng)這個(gè)特定的數(shù)據(jù)存儲(chǔ)。l Mysql數(shù)據(jù)庫(kù)MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng), 目前被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。l Mysql作業(yè)調(diào)度作業(yè)調(diào)度的主要功能是根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊(duì)列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。然后再將新創(chuàng)建的進(jìn)程插入就緒隊(duì)列,準(zhǔn)備執(zhí)行。因此,有時(shí)也把作業(yè)調(diào)度稱為接納調(diào)度。事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。例如,Linux 中的 crontabe 只能精確到每分鐘執(zhí)行一次,而 MySQL事件調(diào)度器則可以實(shí)現(xiàn)每秒鐘執(zhí)行一個(gè)任務(wù),這在一些對(duì)實(shí)時(shí)性要求較高的環(huán)境下就非常實(shí)用了。事件調(diào)度器是定時(shí)觸發(fā)執(zhí)行的,在這個(gè)角度上也可以稱作是臨時(shí)的觸發(fā)器。觸發(fā)器只是針對(duì)某個(gè)表產(chǎn)生的事件執(zhí)行一些語(yǔ)句,而事件調(diào)度器則是在某一個(gè)(間隔)時(shí)間執(zhí)行一些語(yǔ)句。事件是由一個(gè)特定的線程來(lái)管理的,也就是所謂的事件調(diào)度器。啟用MySQL 事件調(diào)度器后,擁有 SUPER 權(quán)限的賬戶執(zhí)行 SHOW PROCESSLIST 就可以看到這個(gè)線程了。通過(guò)設(shè)定全局變量event_scheduler 的值即可動(dòng)態(tài)的控制事件調(diào)度器是否啟用。第三章 系統(tǒng)分析3.1可行性分析 3.1.1 經(jīng)濟(jì)可行性分析因?yàn)樵撓到y(tǒng)只是一般的作業(yè)管理系統(tǒng),系統(tǒng)的管理與操作的要求不是很高,系統(tǒng)管理員可征集有相關(guān)專業(yè)基礎(chǔ)學(xué)生義務(wù)擔(dān)任或作為學(xué)校勤工助學(xué)的崗位。而且該系統(tǒng)的經(jīng)費(fèi)不高,系統(tǒng)邏輯不復(fù)雜,可由學(xué)生擔(dān)任一部分的開(kāi)發(fā)工作。3.1.2 技術(shù)可行性分析該系統(tǒng)使用B/S模式開(kāi)發(fā),技術(shù)使用java、struts2、mysql作業(yè)調(diào)度等, 開(kāi)發(fā)環(huán)境使用windows XP、MyEclipse和Tomcat。經(jīng)過(guò)詳細(xì)的分析,設(shè)計(jì)模式、技術(shù)、開(kāi)發(fā)環(huán)境和人員配備都可滿足系統(tǒng)開(kāi)發(fā)的條件。3.2需求分析3.2.1系統(tǒng)運(yùn)行環(huán)境(1)軟件環(huán)境:操作系統(tǒng):Windows XP瀏覽器: IE 8數(shù)據(jù)庫(kù): MySQL 5.1.*(2)硬件環(huán)境服務(wù)器專用雙核或四核CPU,內(nèi)存4G以上,硬盤用SCSI或SAS 。3.2.2系統(tǒng)功能需求作業(yè)功能模塊的用戶分為教師和學(xué)生,他們各自的主要功能需求如下:(1)教師的主要功能需求:1)查看教師所教的所有課程2)上傳作業(yè)以及相應(yīng)作業(yè)參考答案,可以選擇定時(shí)發(fā)布作業(yè)3)下載發(fā)布的作業(yè)及答案4)刪除、修改已發(fā)布的作業(yè),刪除時(shí)可連帶刪除相關(guān)信息5)查看作業(yè)批改情況,下載學(xué)生作業(yè),批改學(xué)生所上傳的作業(yè)6)查看作業(yè)提交情況7)查詢學(xué)生成績(jī),修改學(xué)生成績(jī)(2)學(xué)生的主要功能需求:1)查看教師發(fā)布的作業(yè)2)查看自己所選課程3)查看自己完成作業(yè)的情況4)上傳作業(yè)5)下載自己提交的作業(yè)以及刪除自己上傳但教師尚未批改的作業(yè)6)查看個(gè)人作業(yè)的以及教師評(píng)語(yǔ)7)查看已提交作業(yè)的參考答案系統(tǒng)用例圖如下:根據(jù)作業(yè)模塊的用戶可創(chuàng)建兩類角色是教師和學(xué)生,他們的關(guān)系用例圖分別如下:(1) 學(xué)生角色的用例圖關(guān)系如下: 圖3-1 學(xué)生角色用例圖(2)教師角色的用例圖關(guān)系如下: 圖3-2 教師角色用例圖a) 教師發(fā)布作業(yè)情況的用例圖如下:圖3-3 教師發(fā)布作業(yè)用例圖b) 教師管理已發(fā)布作業(yè)的用例圖如下: 圖3-4 教師管理作業(yè)用例圖c) 教師批改作業(yè)的用例圖如下: 圖3-5 教師批改作業(yè)用例圖3.2.3系統(tǒng)性能需求實(shí)用性:為網(wǎng)上教學(xué)提供方便,有效進(jìn)行作業(yè)管理,盡量最大限度降低管理員日常管理工作量,提高教學(xué)質(zhì)量和效率,優(yōu)化資源,實(shí)現(xiàn)效益最大化。 操作簡(jiǎn)單:本系統(tǒng)應(yīng)該適用于不同水平的使用者,包括教師和學(xué)生,同時(shí)系統(tǒng)不應(yīng)太復(fù)雜和煩瑣,因此要求系統(tǒng)的操作盡可能簡(jiǎn)單易行。 技術(shù)先進(jìn):產(chǎn)品的系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)應(yīng)緊跟著整個(gè)計(jì)算機(jī)發(fā)展潮流,采用當(dāng)時(shí)最先進(jìn)的設(shè)計(jì)思想,利用最新的開(kāi)發(fā)技術(shù)和開(kāi)發(fā)工具。使系統(tǒng)能夠無(wú)論在功能設(shè)計(jì)上,還是在技術(shù)實(shí)現(xiàn)上,都處于同行業(yè)的領(lǐng)先地位。 安裝使用簡(jiǎn)便:服務(wù)器端的安裝簡(jiǎn)潔明了,客戶機(jī)無(wú)需再裝任何軟件,通過(guò)瀏覽器就可以直接訪問(wèn),可以直接接入Internet,無(wú)論您身在何處,只要您可以訪問(wèn)Internet都可以使用本系統(tǒng)。 代碼可讀性好:文中的代碼將盡可能簡(jiǎn)潔,易懂。3.2.4主要功能要求 主要功能:為方便教師檢查學(xué)生的實(shí)驗(yàn)作業(yè),減少大量數(shù)據(jù)處理,復(fù)雜的排版操作從而經(jīng)常出現(xiàn)錯(cuò)誤率高、網(wǎng)頁(yè)樣式不一、重覆枯燥計(jì)算機(jī)操作和網(wǎng)頁(yè)美觀性的問(wèn)題,提高學(xué)生的實(shí)驗(yàn)效率。查看實(shí)驗(yàn)作業(yè)時(shí)應(yīng)保證查準(zhǔn)率,查看的記錄應(yīng)與給定的實(shí)驗(yàn)項(xiàng)內(nèi)容完全匹配。數(shù)據(jù)安全性,修改數(shù)據(jù)時(shí),一定要保證輸入正確,并且數(shù)據(jù)保密性要高。輸入要求:數(shù)據(jù)完整、詳實(shí)輸出要求:簡(jiǎn)捷、快速、實(shí)時(shí)安全與保密要求:客戶端要求提供身份驗(yàn)證,只允許通過(guò)身份驗(yàn)證的用戶使用本系統(tǒng)要求能在發(fā)生意外(如掉電)的情況下,保證不丟失數(shù)據(jù)。第四章 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)業(yè)務(wù)流程分析教 師登 陸發(fā)布作業(yè)(定時(shí)發(fā)布)學(xué)生查看并提交作業(yè)教師查看批改情況 批改作業(yè)學(xué)生查看成績(jī)和評(píng)價(jià)教師刪除過(guò)期作業(yè)及相關(guān)文件學(xué)生查看參考答案 圖4-1 系統(tǒng)業(yè)務(wù)流程圖4.2 功能模塊的分析與設(shè)計(jì)教師用戶的模塊及功能設(shè)計(jì)如下:(1)作業(yè)發(fā)布子模塊:通過(guò)文件上傳框上傳相應(yīng)作業(yè)文檔,還可以選擇性得選擇是否上傳該次作業(yè)的答案文檔。教師還可以選擇定時(shí)發(fā)布作業(yè),作業(yè)將在教師選定的日期才顯示出來(lái)。系統(tǒng)還會(huì)在用戶按下提交按鈕之后檢測(cè)教師是否輸入了文件名以及上傳了作業(yè)文檔,檢測(cè)通過(guò)后才可以正式發(fā)布這次作業(yè)。(2)作業(yè)列表模塊:分頁(yè)顯示所有教師發(fā)布過(guò)的作業(yè)列表,每次作業(yè)的右邊都會(huì)有刪除,批改,提交情況的超鏈接,點(diǎn)擊會(huì)跳到相應(yīng)的功能頁(yè)面。點(diǎn)擊刪除超鏈接時(shí),會(huì)提示教師,將會(huì)連帶刪除學(xué)生所交作業(yè)和成績(jī),是否繼續(xù),點(diǎn)擊確定后將刪除相應(yīng)作業(yè)及學(xué)生的相關(guān)作業(yè)和成績(jī)。(3)批改作業(yè)子模塊:在作業(yè)顯示列表頁(yè)面點(diǎn)擊了批改按鈕之后,會(huì)彈出一個(gè)顯示作業(yè)批改情況的頁(yè)面,里面是一個(gè)列表,其中列表項(xiàng)包括:學(xué)號(hào),已(未)批改(超鏈接),分?jǐn)?shù),評(píng)語(yǔ)(評(píng)語(yǔ)設(shè)定顯示六個(gè)字,后面用省略號(hào)代替)。點(diǎn)擊已(未)批改鏈接會(huì)出現(xiàn)相應(yīng)學(xué)號(hào)該次作業(yè)的批改頁(yè)面,里面顯示學(xué)生學(xué)號(hào),姓名,學(xué)生所提交作業(yè)的下載鏈接,提交日期等信息。下面有兩個(gè)輸入框,分別用于輸入成績(jī)和批語(yǔ),若之前教師已批改過(guò)次作業(yè),成績(jī)及批語(yǔ)輸入框內(nèi)將顯示之前的內(nèi)容,成績(jī)輸入框只能輸入數(shù)字,而且提交時(shí)還會(huì)檢測(cè)分?jǐn)?shù)的范圍是否正確。(4)提交作業(yè)情況子模塊:教師只需要在作業(yè)列表右邊點(diǎn)擊相應(yīng)作業(yè)的“提交情況”的超鏈接,就會(huì)彈出相應(yīng)的提交作業(yè)查看頁(yè)面,可以看到的信息包括:學(xué)號(hào),姓名,班級(jí),提交狀態(tài)(5)成績(jī)管理子模塊:教師可通過(guò)此模塊對(duì)其學(xué)生的成績(jī)進(jìn)行管理作業(yè)模塊的總體結(jié)構(gòu)如下:作業(yè)功能模塊 教師作業(yè)功能提交作業(yè)我的作業(yè)文件作業(yè)管理提交情況管理參考答案成績(jī)管理發(fā)布作業(yè)我的成績(jī)學(xué)生作業(yè)功能 圖4-2 作業(yè)模塊功能圖第五章 數(shù)據(jù)庫(kù)設(shè)計(jì)5.1數(shù)據(jù)庫(kù)需求分析l 發(fā)布作業(yè):首先要記錄作業(yè)明,作業(yè)文檔上傳后存放到指定文件夾,因此必須記錄文件存放路徑,參考答案選擇性上傳,但必須有存放其路徑的地方,還要記錄作業(yè)發(fā)布日期,為了區(qū)分作業(yè),必須把作業(yè)與教師及相應(yīng)課程關(guān)聯(lián)起來(lái),因此有任課id。l 提交作業(yè):區(qū)分學(xué)生作業(yè)要有相應(yīng)ID,記錄學(xué)生學(xué)號(hào)信息,學(xué)生作業(yè)的名稱,存放路徑,為了方便教師查看還要記錄提交時(shí)間。l 學(xué)生成績(jī)管理:學(xué)生、教師都能對(duì)相應(yīng)權(quán)限的成績(jī)進(jìn)行查看,學(xué)生成績(jī)表應(yīng)記錄每個(gè)學(xué)生每次作業(yè)的成績(jī)及評(píng)語(yǔ)。l 學(xué)生提交情況功能要求設(shè)置一個(gè)表專門記錄作業(yè)提交情況,表中只需有學(xué)號(hào)和作業(yè)的編號(hào)兩個(gè)字段,相應(yīng)記錄存在則該學(xué)生該次作業(yè)有提交。5.2數(shù)據(jù)的組織與存儲(chǔ) 系統(tǒng)將作業(yè)信息分為兩類:記錄和文件。記錄是與作業(yè)相關(guān)的信息,主要包括學(xué)號(hào),姓名,班別,作業(yè)名稱,作業(yè)文件名,作業(yè)存儲(chǔ)路徑,上傳時(shí)間等信息,而文件主要指存儲(chǔ)教師發(fā)布的作業(yè)及學(xué)生提交作業(yè)的文件。系統(tǒng)采用mysql作為后臺(tái)數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)名稱為edumgsys,主要包括user,studeng_info,class,course,recordeventnum,s_tc, teacher_info,t_c,tb_homework,tb_stdnhomework,tb_stdnscore,等多個(gè)表。其中user主要用于驗(yàn)證用戶登錄信息以及提取學(xué)生學(xué)號(hào)信息;表studeng_info用于記錄學(xué)生的詳細(xì)信息;表teacher_info用于記錄教師的詳細(xì)信息,表class用于記錄班別信息,表course記錄課程信息,表s_tc記錄學(xué)生選課信息,表t_c記錄教師所教授課程信息,表tb_homework記錄教師上傳作業(yè)存儲(chǔ)路徑等相關(guān)信息,表tb_stdnhomework記錄學(xué)生提交作業(yè)相關(guān)信息,表tb_stdnscore記錄學(xué)生成績(jī)信息,表recordeventnum用于在定時(shí)發(fā)布作業(yè)時(shí)唯一標(biāo)識(shí)mysql中的作業(yè)調(diào)度時(shí)間名稱。5.3 邏輯設(shè)計(jì)下面為mysql數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì):1.用戶表 表5-1 用戶表字段說(shuō)明類型是否允許為空是否為外鍵備注id用戶IDbigint否是loginname登錄名varchar(20)否對(duì)應(yīng)學(xué)生學(xué)號(hào),教師工號(hào)Password密碼Varchar(20)否User_type用戶類型Varchar(1)否0代表管理員,1代表老師,2代表學(xué)生2.學(xué)生信息表 表5-2 學(xué)生信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id學(xué)生IDbigint否是U_id用戶IDbigint否是對(duì)應(yīng)user表的idName學(xué)生姓名Varchar(20)否Cl_id班級(jí)IDint否是3.班級(jí)信息表 表5-3 班級(jí)信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id班級(jí)IDint否是grade年紀(jì)Varchar(4)否是name專業(yè)名Varchar(20)否no班別Varchar(2)否4.課程信息表 表5-4 課程信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id課程IDint否是name課程名稱Varchar(20否credit學(xué)號(hào)tinyint否5.教師信息表 表5-5 教師信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id教師IDint否是u_id用戶IDbigint否是name教師姓名Varchar(20)否6.教師任課表 表5-6 教師任課表字段說(shuō)明類型是否允許為空是否為外鍵備注id任課IDint否是c_id課程IDint否是t_id教師IDint否是7.學(xué)生選課信息 表5-7 學(xué)生選課信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id選課IDbigint否是s_id學(xué)生IDint否是tc_id任課IDint否是8.作業(yè)信息表 表5-8 作業(yè)信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id作業(yè)IDint否否filename作業(yè)文件名Varchar(50)否否filepath作業(yè)存放路徑Varchar(50)否否answerkey參考答案路徑Varchar(50)是否submitdate發(fā)布日期date否否tc_id任課IDint否是9. 回收學(xué)生作業(yè)信息表 表5-9 回收學(xué)生作業(yè)信息表字段說(shuō)明類型是否允許為空是否為外鍵備注id回收學(xué)生作業(yè)IDInt否否s_id學(xué)號(hào)bigint否是hw_id作業(yè)IDint否是shw_name學(xué)生作業(yè)文件名Varchar(50)否否shw_path學(xué)生作業(yè)存放路徑Varchar(50)否否shw_date提交日期date否否10.學(xué)生成績(jī)表 表5-10 學(xué)生成績(jī)表字段說(shuō)明類型是否允許為空是否為外鍵備注shw_id回收學(xué)生作業(yè)IDint否是s_id學(xué)號(hào)bigint否是hw_id作業(yè)IDint否是score成績(jī)int否否evaluation評(píng)語(yǔ)text是否11.輔助變量表 表5-11 輔助變量表字段說(shuō)明類型是否允許為空是否為外鍵備注ididint否否num作業(yè)調(diào)度數(shù)int否否用于唯一標(biāo)識(shí)作業(yè)調(diào)度第六章 系統(tǒng)實(shí)現(xiàn) 6.1 系統(tǒng)研發(fā)原則1. 完整性原則本系統(tǒng)需為用戶提供完整的操作流程,確保用戶在任何頁(yè)面上均能按實(shí)際需求實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),數(shù)據(jù)庫(kù)建設(shè)必需能完整獲取用戶輸入的數(shù)據(jù)內(nèi)容,確保使用流程和輸入輸出的完整性。2適應(yīng)性原則本系統(tǒng)除了預(yù)先在數(shù)據(jù)庫(kù)導(dǎo)入必要數(shù)據(jù),為用戶提供參考以外,必需順應(yīng)用戶實(shí)際需求,提供用戶可以自定義的功能。此外,本系統(tǒng)務(wù)必操作簡(jiǎn)便,界面指引清晰,適應(yīng)不同人群操作和使用,與此同時(shí),可根據(jù)實(shí)際需求添加更多新功能,可見(jiàn)能很好地適應(yīng)未來(lái)對(duì)手機(jī)地圖發(fā)展的需求。3. 易用性原則本系統(tǒng)要廣泛普及,必需讓用戶覺(jué)得操作簡(jiǎn)便。然而,對(duì)于研發(fā)人員來(lái)說(shuō),系統(tǒng)也應(yīng)盡可能地操作簡(jiǎn)單、維護(hù)簡(jiǎn)單、使用方便。為使系統(tǒng)順利地推廣使用,需要更多的人掌握系統(tǒng)的相關(guān)技術(shù),因此系統(tǒng)遵循嚴(yán)格的文檔規(guī)范,擁有完備的文檔,程序有完備的中文注釋。4. 可靠性原則由于操作失誤出現(xiàn)的故障,重新使用時(shí),系統(tǒng)應(yīng)有自舉功能,一時(shí)的設(shè)備故障,系統(tǒng)應(yīng)可進(jìn)行恢復(fù),不破壞數(shù)據(jù)的一致性和完整性。5. 健壯性原則本系統(tǒng)接受用戶在界面上輸入數(shù)據(jù),系統(tǒng)應(yīng)對(duì)錯(cuò)誤的數(shù)據(jù)和結(jié)構(gòu)不合理的數(shù)據(jù)進(jìn)行識(shí)別,拒絕接受錯(cuò)誤數(shù)據(jù)和結(jié)構(gòu)不合理數(shù)據(jù)。6.2 系統(tǒng)的實(shí)現(xiàn)6.2.1下面是本系統(tǒng)教師模塊的類圖結(jié)構(gòu):所有Action類GradeHomeworkT_homeworkListT_cDisplayHomeworkDeleteSubmitStatusStdhwDownloadHomeworkUploadHwanswerdownloadHwdownloadIfsessionSaveScoreStdhwDisplayHwrecord(DAO)Homework(entity)SubmitStatus (entity)Remark(entity)StdnHomework(entity) 圖6-1系統(tǒng)的類圖設(shè)計(jì)6.2.3 系統(tǒng)代碼展示:現(xiàn)針對(duì)作業(yè)系統(tǒng)的教師模塊貼出關(guān)鍵代碼:(1)把教師及課程信息列表存到session的Action主要代碼 public String execute() throws Exception remarks = HWrecord.querytc_info(t_id) ; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); session.setAttribute(remarks, remarks); tc_id=HWrecord.querytc(t_id); session.setAttribute(tc_id, tc_id); return SUCCESS ; (2)顯示作業(yè)列表的Action主要代碼 public String execute() throws Exception int a =1; homeworks = HWrecord.queryByPage(tc_id, pageSize, pageNow) ; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); session.setAttribute(tc_id, tc_id); String c_name=HWrecord.queryC_name(tc_id); session.setAttribute(c_name, c_name); return SUCCESS ; (3)作業(yè)上傳Action主要代碼public String getCurrentDate() Calendar calendar = new GregorianCalendar(); int month=calendar.get(Calendar.MONTH)+1; String currentDate=calendar.get(Calendar.YEAR)+-+month+-+calendar.get(Calendar.DAY_OF_MONTH); return currentDate;public String execute() throws Exception if(file=null)return ERROR; HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); tc_id=(Integer)session.getAttribute(tc_id); savepath=savepath+Integer.toString(tc_id)+/;/tc_id的值是否有變 File f=new File(savepath); String savefilepath2; String savefilepath1; if(!f.exists() f.mkdirs(); savefilepath1=savepath+this.getFileFileName().get(0); File target1=new File(savefilepath1); if(!target1.exists() target1.createNewFile(); FileUtils.copyFile(file.get(0), target1); else return INPUT; String a=this.getFileFileName().get(1); if(!a.equals() savefilepath2=savepath+this.getFileFileName().get(1); File target2=new File(savefilepath2); if(!target2.exists() target2.createNewFile(); FileUtils.copyFile(file.get(1), target2); else File file=new File(savefilepath1); file.delete(); return INPUT; else savefilepath2=; currentdate=getCurrentDate(); String hwname=this.fileFileName.get(0); hwname=hwname.substring(0, hwname.lastIndexOf(.); if(test=null|test.equalsIgnoreCase() result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,currentdate,tc_id,1);/即時(shí)上傳 else if(java.sql.Date.valueOf(test).after(java.sql.Date.valueOf(currentdate) result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,test,tc_id,2);/定時(shí)上傳 else result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,currentdate,tc_id,1);/即時(shí)上傳 if(result) return SUCCESS; elsereturn ERROR; (4)刪除作業(yè)的Action主要代碼/刪除文件public void delfile(String filesavepath) File file= new File(filesavepath); file.delete();public String execute() throws Exception String hwsavepath=null; savepath=HWrecord.getSavePath(hw_id); int a=savepath.length; if(a0) for(int i=0;isavepath.length;i+) /刪除相應(yīng)hw_id的學(xué)生作業(yè) delfile(savepathi); hwsavepath=HWrecord.gethwSavePath(hw_id); delfile(hwsavepath0); if(!hwsavepath1.equals() delfile(hwsavepath1); boolean result= HWrecord.delRecord(hw_id); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); tc_id=(Integer)session.getAttribute(tc_id); if (result = true) return SUCCESS;elsereturn ERROR;(5)作業(yè)下載的Action主要代碼(與學(xué)生作業(yè)下載以及答案下載代碼與之相似,故略) public InputStream getFile() throws Exception/ 添加要下載的文件名String filelocation = HWrecord.querysavepath(hw_id,1);contentDisposition = HWrecord.queryfilename(hw_id,1);File file = new File(filelocation);InputStream is = new FileInputStream(file);return is; (6)存放數(shù)據(jù)訪問(wèn)代碼的HwrecordDao的主要代碼public class HWrecord private DataSource ds = null;private Connection conn = null;private PreparedStatement stat = null; private PreparedStatement stat1 = null; private PreparedStatement stat2= null; pr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論