楊樂+張繼山+錢佳佳
摘要:系統(tǒng)的設(shè)計(jì)主要是針對(duì)在校外實(shí)習(xí)的學(xué)生畢業(yè)論文過程管理,主要解決了指導(dǎo)老師和實(shí)習(xí)生在完成畢業(yè)設(shè)計(jì)及論文工作上面的繁瑣,也從另一方面有效的對(duì)論文及其相關(guān)文檔的管理,能進(jìn)一步的提高工作的效率。系統(tǒng)地分析了實(shí)習(xí)生論文管理系統(tǒng)開發(fā)的背景、意義,概述了系統(tǒng)實(shí)現(xiàn)所需要的關(guān)鍵技術(shù)。本系統(tǒng)使用的編程語(yǔ)言是Java,使用了當(dāng)前流行的SSM組合框架實(shí)現(xiàn)系統(tǒng)的搭建,采用了MVC設(shè)計(jì)模式,使系統(tǒng)各模塊之間解耦,從而使系統(tǒng)具有高內(nèi)聚,低耦合的特性,前端頁(yè)面的設(shè)計(jì)主要用到了BJUI框架,減少了頁(yè)面布局的困擾,也方便管理。后臺(tái)使用MySQL數(shù)據(jù)庫(kù),通過將所有技術(shù)合理的融合,最終實(shí)現(xiàn)了這個(gè)系統(tǒng)。
關(guān)鍵詞:畢業(yè)論文管理;Java;MVC
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)32-0103-03
目前市面上的管理系統(tǒng)很多,但是針對(duì)在外實(shí)習(xí)的學(xué)生畢業(yè)論文管理方面的系統(tǒng)還是很少出現(xiàn)的,老師與在外實(shí)習(xí)生之間開展論文開題報(bào)告等環(huán)節(jié)都還是比較分散的去管理。本系統(tǒng)設(shè)計(jì)的主要目的是幫助導(dǎo)師和學(xué)生,通過一個(gè)網(wǎng)絡(luò)管理平臺(tái)更好地完成畢業(yè)設(shè)計(jì)及論文工作。該文從使用的框架和設(shè)計(jì)模式、系統(tǒng)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)及功能模塊的實(shí)現(xiàn)等方面進(jìn)行闡述。
1系統(tǒng)框架
1.1 持久層 MyBatis
先來說說為什么會(huì)出現(xiàn)Mybatis。我們?cè)瓉硎褂肑DBC和數(shù)據(jù)庫(kù)進(jìn)行交互不也可以實(shí)現(xiàn)正常的業(yè)務(wù)處理么,為什么非要使用框架呢,答案很簡(jiǎn)單:框架使我們開發(fā)出來的系統(tǒng)更加高效,維護(hù)方便,穩(wěn)定,Mybatis將我們平時(shí)在Dao方法里面寫的sql語(yǔ)句全部抽出來放在一個(gè)單獨(dú)的文件中進(jìn)行管理,方便了我們后期的維護(hù),所以持久層框架是很有必要的。最重要的是他能夠解決代碼冗余的問題,而且能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)結(jié)果集的封裝。
MyBatis框架根據(jù) XML配置文件創(chuàng)建SqlSessionFactory,SqlSessionFactory再根據(jù)配置獲取一個(gè)SqlSession。SqlSession包含了執(zhí)行sql所需要的所有方法,完成對(duì)數(shù)據(jù)的增刪改查和事務(wù)提交等,用完之后關(guān)閉SqlSession。
1.2 控制層 Struts2
Struts2是一個(gè)基于JAVA EE的MVC模式實(shí)現(xiàn)經(jīng)典框架,在Struts2框架中,視圖通常由HTML、JSP和Struts2標(biāo)簽表示,JSP 頁(yè)面結(jié)合Struts2 的標(biāo)簽庫(kù)構(gòu)成了視圖組件的主體[1]。在該框架下,Struts2的主要作用是充當(dāng)控制層來進(jìn)行后臺(tái)與前端頁(yè)面的數(shù)據(jù)交互和轉(zhuǎn)發(fā)請(qǐng)求的操作。Struts2框架實(shí)現(xiàn)的核心技術(shù)是通過Filter攔截所有請(qǐng)求,然后根據(jù)相應(yīng)的URI去執(zhí)行相應(yīng)的任務(wù)請(qǐng)求的分發(fā)工作,在這過程中涉及多種攔截器和過濾器,最后才能到達(dá)真正請(qǐng)求對(duì)應(yīng)的Action。
1.3 框架Spring
Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案。可以說Spring是企業(yè)應(yīng)用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而是與它們無縫地整合。在本系統(tǒng)中Spring擔(dān)任所有類實(shí)例化的容器,通過它整合了Struts2,MyBatis框架,實(shí)現(xiàn)了MVC設(shè)計(jì)模式,有助于開發(fā)的維護(hù)和成本的降低。
1.4 視圖層 B-JUI
B-JUI框架是基于現(xiàn)在流行的Bootstrap樣式及其豐富的jQuery庫(kù)來實(shí)現(xiàn)的開源框架,只要使用過HTML的用戶就可以很便捷的去使用此款客戶端框架,將框架放入你的項(xiàng)目中,然后就可以簡(jiǎn)單的配置HTML屬性,進(jìn)行開發(fā),其是對(duì)Bootstrap樣式及其豐富的jQuery進(jìn)行封裝的,我們只需要使用class屬性去調(diào)用相應(yīng)的樣式即可。所以就算沒有js開發(fā)經(jīng)驗(yàn)的程序員也能夠創(chuàng)建出漂亮的前端展示頁(yè)面。
2 MVC設(shè)計(jì)模式
模型(Model) - 程序員編寫程序應(yīng)有的功能(實(shí)現(xiàn)算法等等)、數(shù)據(jù)庫(kù)專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫(kù)設(shè)計(jì)(可以實(shí)現(xiàn)具體的功能)。
視圖(View) - 界面設(shè)計(jì)人員進(jìn)行圖形界面設(shè)計(jì)。
控制器(Controller)- 負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理。
MVC設(shè)計(jì)模式實(shí)現(xiàn)的業(yè)務(wù)處理和視圖展示的分離,降低了每個(gè)模塊之間的耦合度,達(dá)到了系統(tǒng)的設(shè)計(jì)目標(biāo)和整體要求[2]。目前最流行的就是MVC設(shè)計(jì)模式,structs、spring、hibernate、JSF等則是實(shí)現(xiàn)MVC模式最流行的框架方案[3]。
3 數(shù)據(jù)庫(kù)設(shè)計(jì)
MySQL是一個(gè)輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),他是跨平臺(tái)的,所以這讓它在同類型的數(shù)據(jù)庫(kù)下具有很大的競(jìng)爭(zhēng)優(yōu)勢(shì),Mysql是在控制臺(tái)上面進(jìn)行操作的,然后也出現(xiàn)了一些Mysql的圖形式的客戶端的免費(fèi)軟件,供我們更好地去操作數(shù)據(jù)庫(kù),Mysql具有開源,簡(jiǎn)便易用的優(yōu)點(diǎn),我們可以針對(duì)自己的需求去修改源碼,重新打包編譯。本系統(tǒng)設(shè)計(jì)表中的Id均為主鍵,數(shù)據(jù)表及屬性如下:
1) 文件管理表(Filemanage)。屬性分別為Id、filename、filename、Filepath、Uploadtime、Md5。
2) 開題報(bào)告表(Ktbg)。屬性分別為Id、Xtdy、Zywt、Lwsl、Lwtg、Ckwx、Zdlsyj、Stuid、Status、Name、StuNum。
3) 老師擬題表(lsnt)。屬性分別為Id、Lwtm、Zdls、Xtlx、Rwyq、Uid。
4) 論文表(Lw)。屬性分別為Id、Stuid、Fileid、Status、Name、StuNum。
5) 我的資源表(Myzy)。屬性分別為Id、Fileid、Stuid。
6) 任務(wù)書表(Rws)。屬性分別為Id、Zynr、Jbtq、Yjrw、Mb、Ckwx、Xyyj、Status、tuid、Stunum、Name。endprint
7) 老師學(xué)生管理表(Teawithstu)。屬性分別為Id、Stuid、Teaid。
8) 用戶表(Users)。屬性分別為Id、Userid、Userpwd、Role、Username。
9) 問題反饋表(Wtfk)。屬性分別為Id、Stuid、Fklx、Fknr、Dsjd、Status、Title。
10) 選題審批表(Xtspb)。屬性分別為Id、Stuname、Stunum、Zdls、Lwtm、Tmly、Tmlx、Xtly、Zdlsyj、Lwxzyj、Status、Stuid。
11) 學(xué)習(xí)資料表(Xxzl)。屬性分別為Id、Type、Fileid。
12) 制定計(jì)劃(Zdjh)。屬性分別為Id、Name、Stunum、Lwxtstime、Lwxtetime、xdrwststime、xdrwsetime、zxktbgstime、zxktbgetime、sclwstime、sclwetime、Status、Stuid。
13) 資源鏈接表(Zylj)。Id、Type、Name、url。
4 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)實(shí)現(xiàn)了類似于‘單點(diǎn)登錄的功能,用戶登錄時(shí)系統(tǒng)采用驗(yàn)證碼的機(jī)制防止機(jī)器注冊(cè)等不安全因素,而且在系統(tǒng)中設(shè)置了會(huì)話超期的功能,如果在session中該字段消失了,就表示此次會(huì)話結(jié)束,一旦會(huì)話結(jié)束,就必須重新登錄系統(tǒng),系統(tǒng)是通過jsp的重定向?qū)崿F(xiàn)的,會(huì)先請(qǐng)求服務(wù)器,此時(shí)是否有會(huì)話還沒有結(jié)束,如果沒有結(jié)束,就會(huì)跳轉(zhuǎn)到正在執(zhí)行的會(huì)話頁(yè)面,如果沒有則轉(zhuǎn)向登錄頁(yè)面,如圖1所示。
5 詳細(xì)設(shè)計(jì)
5.1 學(xué)生模塊
根據(jù)需求分析學(xué)生應(yīng)包括在線選題,在線學(xué)習(xí),制定計(jì)劃(嚴(yán)格按計(jì)劃執(zhí)行),上傳(綜合實(shí)訓(xùn)和畢業(yè)設(shè)計(jì))各階段文檔和視頻,與導(dǎo)師互動(dòng)等功能,分析之后得到學(xué)生需要的模塊截圖如圖3所示:
學(xué)生制定完計(jì)劃之后,還可以回頭來查看,所以此頁(yè)面還得具有會(huì)顯得功能,即當(dāng)學(xué)生第一次進(jìn)入頁(yè)面進(jìn)行編輯的時(shí)候,頁(yè)面時(shí)空,當(dāng)學(xué)生第二次進(jìn)入時(shí),里面展現(xiàn)的值是上一次錄入的,并且是不能修改,所以在整個(gè)系統(tǒng)中,是用status變量來控制它們,讓一個(gè)頁(yè)面可以根據(jù)不同的status呈現(xiàn)不同的值。
選題模塊,該模塊主要是通過集合存儲(chǔ)從數(shù)據(jù)庫(kù)傳過來的值,然后在頁(yè)面通過遍歷,獲取到所有的選題,每個(gè)頁(yè)面還帶有分頁(yè)功能,此功能主要是借助BJUI控件開發(fā)出來的。通過從頁(yè)面中傳到后臺(tái)的limit和start參數(shù),利用mysql中的limit進(jìn)行限制,從而實(shí)現(xiàn)分頁(yè)的功能。
任務(wù)進(jìn)度模塊,數(shù)據(jù)庫(kù)中每個(gè)表都會(huì)有一個(gè)status字段,每次打開審核結(jié)果頁(yè)面時(shí),都會(huì)去讀取該字段,來判斷學(xué)生提交的報(bào)告有沒有通過。
在資源上傳模塊,為了提供論文的上傳和后面模塊的學(xué)習(xí)資料的上傳及其學(xué)生自己開發(fā)的系統(tǒng)的上傳,此模塊中主要是通過BJUI的一個(gè)上傳組件(data-toggle="upload")來操作的,他傳遞給后臺(tái)一個(gè)文件流,后臺(tái)只要寫一個(gè)文件變量和其對(duì)應(yīng),就可以接收了,然后進(jìn)行流的操作,就可以實(shí)現(xiàn)文件上傳的功能,當(dāng)論文上傳成功之后,還可以進(jìn)行論文的下載查看,主要是用于導(dǎo)師審核。
系統(tǒng)開發(fā)模塊主要使用到的是文件的上傳與下載功能,上傳功能和上面模塊類似,并且還提供了刪除功能,刪除功能使用的是ajax的異步請(qǐng)求,ajax的異步請(qǐng)求功能它只會(huì)刷新頁(yè)面的部分?jǐn)?shù)據(jù),而不會(huì)請(qǐng)求整個(gè)頁(yè)面,造成資源的浪費(fèi)。
在線學(xué)習(xí)模塊又分為在線資源和我的社區(qū)兩個(gè)子模塊,在線資源模塊主要是老師上傳的一些學(xué)習(xí)資料和一些在線鏈接,它里面的內(nèi)容又會(huì)按照不同的學(xué)科進(jìn)行分類。在線學(xué)習(xí)模塊的第二個(gè)功能是社區(qū)功能,學(xué)生可以在這里進(jìn)行提問,然后由老師解答,它的首頁(yè)面列出了該生自己提出的所有問題及其解決的狀態(tài)。
5.2 導(dǎo)師模塊
發(fā)布選題是老師給學(xué)生提供選題的一種方式,學(xué)生可以在參考選題節(jié)點(diǎn)下獲取到老師發(fā)布的選題,而且老師發(fā)布的選題中的指導(dǎo)老師字段必須是老師自己,不可修改的。
審核計(jì)劃模塊的功能主要是通過改變每個(gè)表中的status字段的值來決定他們通過不通過,而且在頁(yè)面中會(huì)根據(jù)status的狀態(tài)值,來顯示通過或者不通過,當(dāng)還沒有審核時(shí),他是一個(gè)通過或不通過按鈕,審核成功時(shí)會(huì)有一個(gè)回調(diào)結(jié)果,用來提示用戶的操作狀態(tài)。
在線支持模塊主要是老師對(duì)學(xué)生們提出的問題進(jìn)行解答的功能模塊,老師可以看到學(xué)生提出的所有問題,而且可以無限次的解答,任何導(dǎo)師都可以解答學(xué)生提出的問題。
5.3 管理員模塊
該模塊就是用來管理學(xué)生和導(dǎo)師及其他們之間的關(guān)聯(lián),同時(shí)管理員還要具備管理用戶和管理進(jìn)度的權(quán)限。而且在每個(gè)模塊上都支持根據(jù)某個(gè)屬性進(jìn)行模糊查詢,還支持刷新功能。其中,進(jìn)度管理主要是修改學(xué)生制定的計(jì)劃時(shí)間,因?yàn)橄到y(tǒng)中規(guī)定學(xué)生提交的計(jì)劃書一旦通過,所有流程都會(huì)按照此計(jì)劃走,所以如果某一階段的任務(wù)超出了時(shí)間規(guī)定,我們就不能進(jìn)入此節(jié)點(diǎn)去完成相應(yīng)的任務(wù),我們必須借助管理員的權(quán)限去修改計(jì)劃,讓學(xué)生的流程得以進(jìn)行。
6總結(jié)
本系統(tǒng)主要運(yùn)用了JAVA編程語(yǔ)言及SSM框架技術(shù),搭建出了一個(gè)MVC設(shè)計(jì)模式的論文管理系統(tǒng)。系統(tǒng)具有使用簡(jiǎn)單、維護(hù)成本低、后臺(tái)代碼分層清晰等優(yōu)點(diǎn),另外登錄入口采用密碼和驗(yàn)證碼的雙重驗(yàn)證,在安全方面做了保證。系統(tǒng)中有些模塊還存在代碼過于繁瑣,前端界面設(shè)計(jì)過于簡(jiǎn)單等不足之處,后續(xù)會(huì)進(jìn)行代碼的優(yōu)化和前端界面設(shè)計(jì)的改進(jìn),進(jìn)一步完善系統(tǒng)。
參考文獻(xiàn):
[1] 聶常紅,唐遠(yuǎn)強(qiáng).基于Struts2的Web應(yīng)用開發(fā)研究[J].現(xiàn)代計(jì)算機(jī),2014(22):52-57.
[2] 李洋. SSM框架在Web應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2016(12):190-194.
[3] 陸榮幸,郁洲,阮永良,等.J2EE平臺(tái)上MVC設(shè)計(jì)模式的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2003(3):144-146.endprint