




已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
在線作業(yè)系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文目 錄摘要IAbstract:II第一章 緒論11.1 研究的背景11.2 研究的內(nèi)容11.3 研究的意義2第二章 系統(tǒng)的設(shè)計模式與技術(shù)準(zhǔn)備32.1 系統(tǒng)的設(shè)計模式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è)計144.1 系統(tǒng)業(yè)務(wù)流程分析144.2 功能模塊的分析與設(shè)計14第五章 數(shù)據(jù)庫設(shè)計165.1數(shù)據(jù)庫需求分析165.2數(shù)據(jù)的組織與存儲165.3 邏輯設(shè)計17第六章 系統(tǒng)實現(xiàn)206.1 系統(tǒng)研發(fā)原則206.2 系統(tǒng)的實現(xiàn)21第七章 結(jié)論487.1 工作總結(jié)與成果487.2 不足及尚待解決的問題48參考文獻(xiàn)49致 謝5038. 第一章 緒論1.1 研究的背景 隨著計算機(jī)以及網(wǎng)絡(luò)的普及,教師與學(xué)生對輔助教學(xué)方式的要求也越來越高,在教學(xué)輔助方式上追求質(zhì)量及效率。作為教學(xué)核心組成之一的作業(yè)管理也趨向更加便捷快速的方式。經(jīng)過調(diào)查,現(xiàn)階段高校進(jìn)行作業(yè)管理的方式主要有三種:情況一:老師與學(xué)生的課外教學(xué)互動通過公共郵箱,如老師一般把教學(xué)資料上傳到公共郵箱供生下載,學(xué)生把電子版作業(yè)上交到公共郵箱。這種方式的局限性是郵箱的容量有限,對于大容量郵件,服務(wù)器只保存有限的時間而且老師難以統(tǒng)計學(xué)生提交作業(yè)的情況,也難以批改。情況二:通過U盤拷貝教師發(fā)布作業(yè)以及提交作業(yè),這種方式的成本高,一旦U盤損壞會導(dǎo)致作業(yè)丟失。情況三:部分有該方面技術(shù)的教師會建立起個人輔助教學(xué)網(wǎng)站,網(wǎng)站開發(fā)需花費教師較多的時間和精力,一旦建成,修改要手動編輯源代碼,比較麻煩,而且教師的個人教學(xué)輔助網(wǎng)站相對分散,其共享性不強(qiáng),可管理性較差。針對目前的狀況,很有必要開發(fā)一個操作簡單,功能完備,為教師學(xué)生進(jìn)行作業(yè)管理提供便捷的在線作業(yè)管理系統(tǒng),簡化作業(yè)管理的步驟,從根本上解決作業(yè)提交步驟復(fù)雜的問題。1.2 研究的內(nèi)容本文以所設(shè)計的作業(yè)管理系統(tǒng)為背景,闡述了該系統(tǒng)的設(shè)計思路和功能分析。首先對該作業(yè)管理系統(tǒng)做出簡要的概述,分析系統(tǒng)的背景及意義,再從需求分析,總體設(shè)計再到其各個功能的詳細(xì)設(shè)計,再選擇合適的開發(fā)語言工具對其進(jìn)行代碼實現(xiàn)。1.3 研究的意義 每次教授了新的章節(jié)或者內(nèi)容之后,教師都有可能需要布置相應(yīng)的作業(yè)或練習(xí)以保證學(xué)生可以牢固掌握相應(yīng)知識。作為教學(xué)的核心之一的作業(yè)管理,其傳統(tǒng)的實現(xiàn)方式步驟既繁瑣又耗時,還不能很好的保證作業(yè)發(fā)布的即時性及可控性,即教師無法在他需要的時候立即發(fā)布作業(yè),教師也無法提前預(yù)設(shè)將要發(fā)布的作業(yè),刪除,編輯,批改等操作也不夠便捷。這時,作業(yè)管理系統(tǒng)的作用就體現(xiàn)出來了。教師可以在網(wǎng)上發(fā)布自己的課程作業(yè),而且還可以選擇及時發(fā)布還是定時發(fā)布,對過期的作業(yè)進(jìn)行刪除,查看學(xué)生作業(yè)提交的情況,批改學(xué)生作業(yè)等,既方便快捷也省時高效。第二章 系統(tǒng)的設(shè)計模式與技術(shù)準(zhǔn)備2.1 系統(tǒng)的設(shè)計模式 系統(tǒng)采用現(xiàn)今流行的B/S模式開發(fā),分層設(shè)計如下:JSP頁面Action控制層數(shù)據(jù)訪問層 數(shù)據(jù)庫Struts2Mysql 圖2-1 系統(tǒng)分層設(shè)計圖2.2 技術(shù)準(zhǔn)備l Java Java,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺的總稱。Java的語言特點如下:1.Java是簡單的 Java與C+極為相似,但卻簡單得多。高級編程語言的所有特性中,不是絕對需要的都已刪去了。例如,Java沒有算符過載、標(biāo)題文件、預(yù)處理、指針運(yùn)算、結(jié)構(gòu)、聯(lián)合、多維數(shù)組、模板及隱式類型變換。如果你知道一點C、C+或Pascal,你很快就會駕馭Java。這里是一個簡單的JavaHelloWorld程序: publicclassHelloInternetpublicstaticvoidmain(Stringargv)System.out.println(“HelloIn-ternet!”) 2.Java是面向?qū)ο蟮?Java是一種面向?qū)ο蟮木幊陶Z言。除了簡單的類型,如數(shù)字和布爾算子之外,Java中的大部分都是對象。 正如任何面向?qū)ο蟮恼Z言一樣,Java代碼也按類組織。每個類定義一組規(guī)定對象行為的方法。一個類可以繼承另一個類的行為。在類的根層次上,通常是類對象。 3.Java是靜態(tài)類型的 在一個Java程序中,必須定義所用對象(數(shù)字、字符、數(shù)組等)的類型。這有助于編程人員很快發(fā)現(xiàn)問題,因為當(dāng)程序編譯時可以檢測類型錯誤。 不過,Java系統(tǒng)中的對象也有動態(tài)類型。要求一個對象為動態(tài)類型往往是可能的,所以編程人員寫的程序可以對不同類型的對象做不同的事。 4.Java是編譯型的 當(dāng)運(yùn)行Java程序時,它首先被編譯成字節(jié)代碼。字節(jié)代碼非常類似于機(jī)器指令,所以Java程序非常高效。然而,字節(jié)代碼并不專對一種特定的機(jī)器,所以Java程序無需重新編譯便可在眾多不同的計算機(jī)上執(zhí)行。 Java源程序被編譯成類文件,它相當(dāng)于程序的字節(jié)代碼表現(xiàn)。在一個Java類文件中,所有對方法及實例變量的參照均按名進(jìn)行,并在第一次執(zhí)行代碼時加以分辨。這使得代碼更通用,更不易受修改的影響,而仍具高效。 5.Java是體系結(jié)構(gòu)中立的 Java語言對每種計算機(jī)都一樣。比如,簡單的類型都是不變的:整數(shù)總是32位,長整數(shù)總是64位。令人奇怪的是,諸如C及C+等時髦的編程語言卻不是這樣。由于這些語言定義如此自由,每種編譯器及開發(fā)環(huán)境便各有不同了,這使程序的移植成為討厭的問題。Java程序的移植卻很容易,而且不需要進(jìn)行重新編譯。 6.Java是健全的 Java程序不可能造成計算機(jī)崩潰。Java系統(tǒng)仔細(xì)檢測對內(nèi)存的每次訪問,確認(rèn)它是合法的,而且不致引起任何問題。 不過,即使Java程序也可能有錯誤。如果出現(xiàn)某種出乎意料之事,程序不會崩潰,而把該例外拋棄。程序會發(fā)現(xiàn)這類例外,并加以處理。 傳統(tǒng)的程序可以訪問計算機(jī)的全部內(nèi)存。程序可能(無意識地)修改內(nèi)存中的任何值,這就會造成問題。Java程序只能訪問內(nèi)存中允許它們訪問的那些部分,所以Java程序不可能修改不擬修改的值。 7.Java是小巧的 由于Java的設(shè)計是要在小的計算機(jī)上運(yùn)行,作為一種編程語言來說其系統(tǒng)是相對較小的。它能有效地在4MB以上RAM的PC機(jī)上運(yùn)行。Java翻譯器只占用幾百KB。這種翻譯器對Java的平臺無關(guān)性和可移植性是可靠的。 由于Java很小,它對內(nèi)存很小的計算機(jī),如基于Java的PC機(jī),以及電視機(jī)、烤箱、電話機(jī)及家用計算機(jī)等,是很理想的。 8.Java是多線程的 Java程序可以執(zhí)行一個以上的線程。比如,它可以在一個線程中完成某一耗時的計算,而其它線程與用戶進(jìn)行交互對話。所以用戶不必停止工作,等待Java程序完成耗時的計算。 在多線程環(huán)境中的編程通常是困難的,因為許多東西可能同時出現(xiàn)。但是,Java提供了易于使用的同步特性,使編程更為方便。 Java線程通常被映射為實際的操作系統(tǒng)線程,只要底層操作系統(tǒng)支持這種映射。因此,用Java寫的應(yīng)用程序可說是“MP熱”。這就是說,如果它們在多處理器機(jī)器上運(yùn)行,它們更將表現(xiàn)不凡。 9.Java是可收集無用的存儲單元的 用C及C+寫軟件的編程人員必須仔細(xì)跟蹤所用的內(nèi)存塊。當(dāng)一個塊不再使用時,他們務(wù)必讓程序釋放它,從而方可再用。在大的項目中,這可能很困難,并往往成為出錯和內(nèi)存不足的根源。 在Java的情況下,編程人員不必為內(nèi)存管理操心。Java系統(tǒng)有一個叫做“無用單元收集器”的內(nèi)置程序,它掃描內(nèi)存,并自動釋放那些不再使用的內(nèi)存塊。 10.Java是快速的 Java比典型的腳本語言大為有效,但它比C慢20倍。這對大多數(shù)應(yīng)用是可接受的。 不久的將來,代碼生成器就可供利用了,這將使Java程序幾近于用C或C+編寫的程序那么快。 11.Java是安全的 Java程序沒有指針,而且象這樣的字節(jié)代碼程序強(qiáng)在類型,所以在執(zhí)行之前它可能驗證Java程序。謊櫓腏ava程序得以保證不突破Java語言的任何限制,而且可以安全地執(zhí)行。Java字節(jié)代碼驗證被Web瀏覽器用來確保小程序不含病毒。 12.Java是可擴(kuò)展的 Java程序可與用其它語言編寫的現(xiàn)存程序庫連接。由于Java數(shù)據(jù)結(jié)構(gòu)與C的數(shù)據(jù)結(jié)構(gòu)的類型極為相似,這是相當(dāng)方便的。最大的問題在于,現(xiàn)有多線程程序庫為數(shù)不多。 Java程序可以聲明某些方法是內(nèi)部的,然后,把這些內(nèi)部方法映射成軟件庫所定義的功能,從而動態(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ī)制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。因為Struts 2和Struts 1有著太大的變化,但是相對于WebWork,Struts 2只有很小的變化。一個請求在Struts2框架中的處理大概分為以下幾個步驟:1、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求;2、這個請求經(jīng)過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對于Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin);3、接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問ActionMapper來決定這個請求是否需要調(diào)用某個Action;4、如果ActionMapper決定需要調(diào)用某個Action,F(xiàn)ilterDispatcher把請求的處理交給ActionProxy;5、ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調(diào)用的Action類;6、ActionProxy創(chuàng)建一個ActionInvocation的實例。7、ActionInvocation實例使用命名模式來調(diào)用,在調(diào)用Action的過程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。8、一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對應(yīng)的返回結(jié)果。返回結(jié)果通常是(但不總是,也可能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2框架中繼承的標(biāo)簽。在這個過程中需要涉及到ActionMapper。l Entity存放實體類,實體類主要是作為數(shù)據(jù)管理和業(yè)務(wù)邏輯處理層面上存在的類別; 它們主要在分析階段區(qū)分 實體類的主要職責(zé)是存儲和 管理系統(tǒng)內(nèi)部的信息,它也可以有行為,甚至很復(fù)雜的行為,但這些行為必須與它所代表的實體對象密切相關(guān)。大多情況下,實體類和數(shù)據(jù)庫中的表(這里指實體表,不包括表示多對多對應(yīng)的關(guān)系表)是一一對應(yīng)的,但這并不是一個限制,在復(fù)雜的數(shù)據(jù)庫設(shè)計中,有可能出現(xiàn)一個實體類對應(yīng)多個表,或者交叉對應(yīng)的情況。l DaoDAO(數(shù)據(jù)訪問對象)是一種應(yīng)用程序編程接口(API),存在于微軟的Visual Basic中,它允許程序員請求對微軟的Access數(shù)據(jù)庫的訪問。DAO是微軟的第一個面向?qū)ο蟮臄?shù)據(jù)庫接口。DAO對象封閉了Access的Jet函數(shù)。通過Jet函數(shù),它還可以訪問其他的結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫。 DAO是Data Access Object數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:顧名思義就是與數(shù)據(jù)庫打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。在核心J2EE模式中是這樣介紹DAO模式的:為了建立一個健壯的J2EE應(yīng)用,應(yīng)該將所有對數(shù)據(jù)源的訪問操作抽象封裝在一個公共API中。用程序設(shè)計的語言來說,就是建立一個接口,接口中定義了此應(yīng)用程序中將會用到的所有事務(wù)方法。在這個應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時候則使用這個接口,并且編寫一個單獨的類來實現(xiàn)這個接口在邏輯上對應(yīng)這個特定的數(shù)據(jù)存儲。l Mysql數(shù)據(jù)庫MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng), 目前被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。l Mysql作業(yè)調(diào)度作業(yè)調(diào)度的主要功能是根據(jù)作業(yè)控制塊中的信息,審查系統(tǒng)能否滿足用戶作業(yè)的資源需求,以及按照一定的算法,從外存的后備隊列中選取某些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源。然后再將新創(chuàng)建的進(jìn)程插入就緒隊列,準(zhǔn)備執(zhí)行。因此,有時也把作業(yè)調(diào)度稱為接納調(diào)度。事件調(diào)度器是在 MySQL 5.1 中新增的另一個特色功能,可以作為定時任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時功能。例如,Linux 中的 crontabe 只能精確到每分鐘執(zhí)行一次,而 MySQL事件調(diào)度器則可以實現(xiàn)每秒鐘執(zhí)行一個任務(wù),這在一些對實時性要求較高的環(huán)境下就非常實用了。事件調(diào)度器是定時觸發(fā)執(zhí)行的,在這個角度上也可以稱作是臨時的觸發(fā)器。觸發(fā)器只是針對某個表產(chǎn)生的事件執(zhí)行一些語句,而事件調(diào)度器則是在某一個(間隔)時間執(zhí)行一些語句。事件是由一個特定的線程來管理的,也就是所謂的事件調(diào)度器。啟用MySQL 事件調(diào)度器后,擁有 SUPER 權(quán)限的賬戶執(zhí)行 SHOW PROCESSLIST 就可以看到這個線程了。通過設(shè)定全局變量event_scheduler 的值即可動態(tài)的控制事件調(diào)度器是否啟用。第三章 系統(tǒng)分析3.1可行性分析 3.1.1 經(jīng)濟(jì)可行性分析因為該系統(tǒng)只是一般的作業(yè)管理系統(tǒng),系統(tǒng)的管理與操作的要求不是很高,系統(tǒng)管理員可征集有相關(guān)專業(yè)基礎(chǔ)學(xué)生義務(wù)擔(dān)任或作為學(xué)校勤工助學(xué)的崗位。而且該系統(tǒng)的經(jīng)費不高,系統(tǒng)邏輯不復(fù)雜,可由學(xué)生擔(dān)任一部分的開發(fā)工作。3.1.2 技術(shù)可行性分析該系統(tǒng)使用B/S模式開發(fā),技術(shù)使用java、struts2、mysql作業(yè)調(diào)度等, 開發(fā)環(huán)境使用windows XP、MyEclipse和Tomcat。經(jīng)過詳細(xì)的分析,設(shè)計模式、技術(shù)、開發(fā)環(huán)境和人員配備都可滿足系統(tǒng)開發(fā)的條件。3.2需求分析3.2.1系統(tǒng)運(yùn)行環(huán)境(1)軟件環(huán)境:操作系統(tǒng):Windows XP瀏覽器: IE 8數(shù)據(jù)庫: 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è)參考答案,可以選擇定時發(fā)布作業(yè)3)下載發(fā)布的作業(yè)及答案4)刪除、修改已發(fā)布的作業(yè),刪除時可連帶刪除相關(guān)信息5)查看作業(yè)批改情況,下載學(xué)生作業(yè),批改學(xué)生所上傳的作業(yè)6)查看作業(yè)提交情況7)查詢學(xué)生成績,修改學(xué)生成績(2)學(xué)生的主要功能需求:1)查看教師發(fā)布的作業(yè)2)查看自己所選課程3)查看自己完成作業(yè)的情況4)上傳作業(yè)5)下載自己提交的作業(yè)以及刪除自己上傳但教師尚未批改的作業(yè)6)查看個人作業(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)性能需求實用性:為網(wǎng)上教學(xué)提供方便,有效進(jìn)行作業(yè)管理,盡量最大限度降低管理員日常管理工作量,提高教學(xué)質(zhì)量和效率,優(yōu)化資源,實現(xiàn)效益最大化。 操作簡單:本系統(tǒng)應(yīng)該適用于不同水平的使用者,包括教師和學(xué)生,同時系統(tǒng)不應(yīng)太復(fù)雜和煩瑣,因此要求系統(tǒng)的操作盡可能簡單易行。 技術(shù)先進(jìn):產(chǎn)品的系統(tǒng)設(shè)計和開發(fā)應(yīng)緊跟著整個計算機(jī)發(fā)展潮流,采用當(dāng)時最先進(jìn)的設(shè)計思想,利用最新的開發(fā)技術(shù)和開發(fā)工具。使系統(tǒng)能夠無論在功能設(shè)計上,還是在技術(shù)實現(xiàn)上,都處于同行業(yè)的領(lǐng)先地位。 安裝使用簡便:服務(wù)器端的安裝簡潔明了,客戶機(jī)無需再裝任何軟件,通過瀏覽器就可以直接訪問,可以直接接入Internet,無論您身在何處,只要您可以訪問Internet都可以使用本系統(tǒng)。 代碼可讀性好:文中的代碼將盡可能簡潔,易懂。3.2.4主要功能要求 主要功能:為方便教師檢查學(xué)生的實驗作業(yè),減少大量數(shù)據(jù)處理,復(fù)雜的排版操作從而經(jīng)常出現(xiàn)錯誤率高、網(wǎng)頁樣式不一、重覆枯燥計算機(jī)操作和網(wǎng)頁美觀性的問題,提高學(xué)生的實驗效率。查看實驗作業(yè)時應(yīng)保證查準(zhǔn)率,查看的記錄應(yīng)與給定的實驗項內(nèi)容完全匹配。數(shù)據(jù)安全性,修改數(shù)據(jù)時,一定要保證輸入正確,并且數(shù)據(jù)保密性要高。輸入要求:數(shù)據(jù)完整、詳實輸出要求:簡捷、快速、實時安全與保密要求:客戶端要求提供身份驗證,只允許通過身份驗證的用戶使用本系統(tǒng)要求能在發(fā)生意外(如掉電)的情況下,保證不丟失數(shù)據(jù)。第四章 系統(tǒng)設(shè)計4.1 系統(tǒng)業(yè)務(wù)流程分析教 師登 陸發(fā)布作業(yè)(定時發(fā)布)學(xué)生查看并提交作業(yè)教師查看批改情況 批改作業(yè)學(xué)生查看成績和評價教師刪除過期作業(yè)及相關(guān)文件學(xué)生查看參考答案 圖4-1 系統(tǒng)業(yè)務(wù)流程圖4.2 功能模塊的分析與設(shè)計教師用戶的模塊及功能設(shè)計如下:(1)作業(yè)發(fā)布子模塊:通過文件上傳框上傳相應(yīng)作業(yè)文檔,還可以選擇性得選擇是否上傳該次作業(yè)的答案文檔。教師還可以選擇定時發(fā)布作業(yè),作業(yè)將在教師選定的日期才顯示出來。系統(tǒng)還會在用戶按下提交按鈕之后檢測教師是否輸入了文件名以及上傳了作業(yè)文檔,檢測通過后才可以正式發(fā)布這次作業(yè)。(2)作業(yè)列表模塊:分頁顯示所有教師發(fā)布過的作業(yè)列表,每次作業(yè)的右邊都會有刪除,批改,提交情況的超鏈接,點擊會跳到相應(yīng)的功能頁面。點擊刪除超鏈接時,會提示教師,將會連帶刪除學(xué)生所交作業(yè)和成績,是否繼續(xù),點擊確定后將刪除相應(yīng)作業(yè)及學(xué)生的相關(guān)作業(yè)和成績。(3)批改作業(yè)子模塊:在作業(yè)顯示列表頁面點擊了批改按鈕之后,會彈出一個顯示作業(yè)批改情況的頁面,里面是一個列表,其中列表項包括:學(xué)號,已(未)批改(超鏈接),分?jǐn)?shù),評語(評語設(shè)定顯示六個字,后面用省略號代替)。點擊已(未)批改鏈接會出現(xiàn)相應(yīng)學(xué)號該次作業(yè)的批改頁面,里面顯示學(xué)生學(xué)號,姓名,學(xué)生所提交作業(yè)的下載鏈接,提交日期等信息。下面有兩個輸入框,分別用于輸入成績和批語,若之前教師已批改過次作業(yè),成績及批語輸入框內(nèi)將顯示之前的內(nèi)容,成績輸入框只能輸入數(shù)字,而且提交時還會檢測分?jǐn)?shù)的范圍是否正確。(4)提交作業(yè)情況子模塊:教師只需要在作業(yè)列表右邊點擊相應(yīng)作業(yè)的“提交情況”的超鏈接,就會彈出相應(yīng)的提交作業(yè)查看頁面,可以看到的信息包括:學(xué)號,姓名,班級,提交狀態(tài)(5)成績管理子模塊:教師可通過此模塊對其學(xué)生的成績進(jìn)行管理作業(yè)模塊的總體結(jié)構(gòu)如下:作業(yè)功能模塊 教師作業(yè)功能提交作業(yè)我的作業(yè)文件作業(yè)管理提交情況管理參考答案成績管理發(fā)布作業(yè)我的成績學(xué)生作業(yè)功能 圖4-2 作業(yè)模塊功能圖第五章 數(shù)據(jù)庫設(shè)計5.1數(shù)據(jù)庫需求分析l 發(fā)布作業(yè):首先要記錄作業(yè)明,作業(yè)文檔上傳后存放到指定文件夾,因此必須記錄文件存放路徑,參考答案選擇性上傳,但必須有存放其路徑的地方,還要記錄作業(yè)發(fā)布日期,為了區(qū)分作業(yè),必須把作業(yè)與教師及相應(yīng)課程關(guān)聯(lián)起來,因此有任課id。l 提交作業(yè):區(qū)分學(xué)生作業(yè)要有相應(yīng)ID,記錄學(xué)生學(xué)號信息,學(xué)生作業(yè)的名稱,存放路徑,為了方便教師查看還要記錄提交時間。l 學(xué)生成績管理:學(xué)生、教師都能對相應(yīng)權(quán)限的成績進(jìn)行查看,學(xué)生成績表應(yīng)記錄每個學(xué)生每次作業(yè)的成績及評語。l 學(xué)生提交情況功能要求設(shè)置一個表專門記錄作業(yè)提交情況,表中只需有學(xué)號和作業(yè)的編號兩個字段,相應(yīng)記錄存在則該學(xué)生該次作業(yè)有提交。5.2數(shù)據(jù)的組織與存儲 系統(tǒng)將作業(yè)信息分為兩類:記錄和文件。記錄是與作業(yè)相關(guān)的信息,主要包括學(xué)號,姓名,班別,作業(yè)名稱,作業(yè)文件名,作業(yè)存儲路徑,上傳時間等信息,而文件主要指存儲教師發(fā)布的作業(yè)及學(xué)生提交作業(yè)的文件。系統(tǒng)采用mysql作為后臺數(shù)據(jù)庫,該數(shù)據(jù)庫名稱為edumgsys,主要包括user,studeng_info,class,course,recordeventnum,s_tc, teacher_info,t_c,tb_homework,tb_stdnhomework,tb_stdnscore,等多個表。其中user主要用于驗證用戶登錄信息以及提取學(xué)生學(xué)號信息;表studeng_info用于記錄學(xué)生的詳細(xì)信息;表teacher_info用于記錄教師的詳細(xì)信息,表class用于記錄班別信息,表course記錄課程信息,表s_tc記錄學(xué)生選課信息,表t_c記錄教師所教授課程信息,表tb_homework記錄教師上傳作業(yè)存儲路徑等相關(guān)信息,表tb_stdnhomework記錄學(xué)生提交作業(yè)相關(guān)信息,表tb_stdnscore記錄學(xué)生成績信息,表recordeventnum用于在定時發(fā)布作業(yè)時唯一標(biāo)識mysql中的作業(yè)調(diào)度時間名稱。5.3 邏輯設(shè)計下面為mysql數(shù)據(jù)庫的邏輯設(shè)計:1.用戶表 表5-1 用戶表字段說明類型是否允許為空是否為外鍵備注id用戶IDbigint否是loginname登錄名varchar(20)否對應(yīng)學(xué)生學(xué)號,教師工號Password密碼Varchar(20)否User_type用戶類型Varchar(1)否0代表管理員,1代表老師,2代表學(xué)生2.學(xué)生信息表 表5-2 學(xué)生信息表字段說明類型是否允許為空是否為外鍵備注id學(xué)生IDbigint否是U_id用戶IDbigint否是對應(yīng)user表的idName學(xué)生姓名Varchar(20)否Cl_id班級IDint否是3.班級信息表 表5-3 班級信息表字段說明類型是否允許為空是否為外鍵備注id班級IDint否是grade年紀(jì)Varchar(4)否是name專業(yè)名Varchar(20)否no班別Varchar(2)否4.課程信息表 表5-4 課程信息表字段說明類型是否允許為空是否為外鍵備注id課程IDint否是name課程名稱Varchar(20否credit學(xué)號tinyint否5.教師信息表 表5-5 教師信息表字段說明類型是否允許為空是否為外鍵備注id教師IDint否是u_id用戶IDbigint否是name教師姓名Varchar(20)否6.教師任課表 表5-6 教師任課表字段說明類型是否允許為空是否為外鍵備注id任課IDint否是c_id課程IDint否是t_id教師IDint否是7.學(xué)生選課信息 表5-7 學(xué)生選課信息表字段說明類型是否允許為空是否為外鍵備注id選課IDbigint否是s_id學(xué)生IDint否是tc_id任課IDint否是8.作業(yè)信息表 表5-8 作業(yè)信息表字段說明類型是否允許為空是否為外鍵備注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è)信息表字段說明類型是否允許為空是否為外鍵備注id回收學(xué)生作業(yè)IDInt否否s_id學(xué)號bigint否是hw_id作業(yè)IDint否是shw_name學(xué)生作業(yè)文件名Varchar(50)否否shw_path學(xué)生作業(yè)存放路徑Varchar(50)否否shw_date提交日期date否否10.學(xué)生成績表 表5-10 學(xué)生成績表字段說明類型是否允許為空是否為外鍵備注shw_id回收學(xué)生作業(yè)IDint否是s_id學(xué)號bigint否是hw_id作業(yè)IDint否是score成績int否否evaluation評語text是否11.輔助變量表 表5-11 輔助變量表字段說明類型是否允許為空是否為外鍵備注ididint否否num作業(yè)調(diào)度數(shù)int否否用于唯一標(biāo)識作業(yè)調(diào)度第六章 系統(tǒng)實現(xiàn) 6.1 系統(tǒng)研發(fā)原則1. 完整性原則本系統(tǒng)需為用戶提供完整的操作流程,確保用戶在任何頁面上均能按實際需求實現(xiàn)頁面跳轉(zhuǎn),數(shù)據(jù)庫建設(shè)必需能完整獲取用戶輸入的數(shù)據(jù)內(nèi)容,確保使用流程和輸入輸出的完整性。2適應(yīng)性原則本系統(tǒng)除了預(yù)先在數(shù)據(jù)庫導(dǎo)入必要數(shù)據(jù),為用戶提供參考以外,必需順應(yīng)用戶實際需求,提供用戶可以自定義的功能。此外,本系統(tǒng)務(wù)必操作簡便,界面指引清晰,適應(yīng)不同人群操作和使用,與此同時,可根據(jù)實際需求添加更多新功能,可見能很好地適應(yīng)未來對手機(jī)地圖發(fā)展的需求。3. 易用性原則本系統(tǒng)要廣泛普及,必需讓用戶覺得操作簡便。然而,對于研發(fā)人員來說,系統(tǒng)也應(yīng)盡可能地操作簡單、維護(hù)簡單、使用方便。為使系統(tǒng)順利地推廣使用,需要更多的人掌握系統(tǒng)的相關(guān)技術(shù),因此系統(tǒng)遵循嚴(yán)格的文檔規(guī)范,擁有完備的文檔,程序有完備的中文注釋。4. 可靠性原則由于操作失誤出現(xiàn)的故障,重新使用時,系統(tǒng)應(yīng)有自舉功能,一時的設(shè)備故障,系統(tǒng)應(yīng)可進(jìn)行恢復(fù),不破壞數(shù)據(jù)的一致性和完整性。5. 健壯性原則本系統(tǒng)接受用戶在界面上輸入數(shù)據(jù),系統(tǒng)應(yīng)對錯誤的數(shù)據(jù)和結(jié)構(gòu)不合理的數(shù)據(jù)進(jìn)行識別,拒絕接受錯誤數(shù)據(jù)和結(jié)構(gòu)不合理數(shù)據(jù)。6.2 系統(tǒng)的實現(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è)計6.2.3 系統(tǒng)代碼展示:現(xiàn)針對作業(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);/即時上傳 else if(java.sql.Date.valueOf(test).after(java.sql.Date.valueOf(currentdate) result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,test,tc_id,2);/定時上傳 else result=HWrecord.insertHW(hwname,savefilepath1,savefilepath2,currentdate,tc_id,1);/即時上傳 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ù)訪問代碼的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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計咨詢類合同協(xié)議
- 起訴贍養(yǎng)協(xié)議書范本
- 訂貨單合同協(xié)議
- 贖回股權(quán)協(xié)議書范本
- 財務(wù)合同協(xié)議簡約版模板
- 購買期房全款合同協(xié)議
- 解除采購合同協(xié)議范本
- 課程顧問崗位合同協(xié)議
- 購買建材包安裝合同協(xié)議
- 《第03節(jié) 探究感應(yīng)電流的方向》教學(xué)設(shè)計2
- 大米生產(chǎn)與食品安全
- 2025年中國氫氣傳感器行業(yè)市場深度分析及投資策略研究報告
- 2025年全球及中國依西美坦片行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 某院護(hù)理人員對常用中醫(yī)護(hù)理技術(shù)知信行現(xiàn)狀研究【復(fù)制】
- 專題18-地質(zhì)地貌形成過程(原卷版)
- 綜合管理部門車輛安全生產(chǎn)職責(zé)模版(2篇)
- 《西游記》講解學(xué)習(xí)
- DB33 766-2015 工業(yè)氣體空分產(chǎn)品單位綜合電耗限額及計算方法
- 辦公樓拆除施工方案
- 江蘇省蘇州市(2024年-2025年小學(xué)六年級語文)部編版小升初真題(下學(xué)期)試卷及答案
- 職業(yè)技能鑒定培訓(xùn)方案
評論
0/150
提交評論