郁書(shū)好 田志會(huì) 朱成棋 范祥林
摘 要:畢業(yè)設(shè)計(jì)是大學(xué)教學(xué)任務(wù)中最重要的實(shí)踐環(huán)節(jié),也是培養(yǎng)大學(xué)生綜合運(yùn)用大學(xué)知識(shí)解決實(shí)際問(wèn)題極為重要的過(guò)程?,F(xiàn)有畢業(yè)設(shè)計(jì)選題系統(tǒng)普遍通過(guò)B/S架構(gòu)設(shè)計(jì),存在機(jī)房人數(shù)受限、加載緩慢、效率低下等問(wèn)題。提出以Android App為客戶(hù)端,以Spring+SpringMVC+Hibernate作為后臺(tái)的框架方案,以Sql Server 2008數(shù)據(jù)庫(kù)實(shí)現(xiàn)持久化存儲(chǔ),設(shè)計(jì)了基于C/S的畢業(yè)設(shè)計(jì)選題系統(tǒng)。實(shí)際應(yīng)用表明,該系統(tǒng)具有較好的推廣應(yīng)用價(jià)值。
關(guān)鍵詞:Android;RxJava;Retrofit;Spring;Hibernate;選題系統(tǒng)
DOI:10.11907/rjdk.172390
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)004-0138-03
Abstract:Graduation project is the most important link in college teaching practice. It is a very important process to train university students ability to solve the practical problems by using the knowledge they have learned.However,the existing systems are generally designed through the B/S architecture,which inevitably leads to slow loading and low efficiency.This article mainly introduced the Android App for the client, used Spring+SpringMVC+Hibernate as the framework of the program background and employed Squl Server 2008 database to realize persistent storage. And then it set up the graduation design selection system based on C/S for graduates.
Key Words:Android; Rxjava; Retrofit; Spring; Hibernate; title selection system
0 引言
畢業(yè)設(shè)計(jì)是高等學(xué)校教學(xué)工作中最主要的實(shí)踐環(huán)節(jié)[1],是培養(yǎng)大學(xué)生綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題能力的重要過(guò)程,是開(kāi)展大學(xué)生創(chuàng)新能力訓(xùn)練的主要途徑[2]。
高校畢業(yè)選題系統(tǒng)存在諸多弊端[3],如B/S加載緩慢、性能一般等,不能滿足學(xué)生需要。鑒于以上情況,本文以Spring+SpringMVC+Hibernate[4]作為數(shù)據(jù)后臺(tái),開(kāi)發(fā)了基于Android智能終端的畢業(yè)設(shè)計(jì)選題系統(tǒng)[5],實(shí)現(xiàn)在Android手機(jī)客戶(hù)端登錄完成選題的業(yè)務(wù)流程[6]。
1 系統(tǒng)設(shè)計(jì)
1.1 功能模塊設(shè)計(jì)
系統(tǒng)設(shè)計(jì)教務(wù)員、教師、學(xué)生3個(gè)模塊。用戶(hù)使用時(shí)必須選擇用戶(hù)類(lèi)型登錄,然后進(jìn)行身份認(rèn)證,認(rèn)證通過(guò)即可使用相應(yīng)功能模塊。
學(xué)院教務(wù)管理員:設(shè)置各專(zhuān)業(yè)選題時(shí)間,匯總學(xué)院各專(zhuān)業(yè)課題選擇情況。
教師模塊:在規(guī)定時(shí)間內(nèi)創(chuàng)建課題,查看課題選擇情況,查看個(gè)人信息及密碼修改等。
學(xué)生模塊:在規(guī)定的選題時(shí)間內(nèi)選題,查看選題、個(gè)人信息、修改密碼等。
系統(tǒng)可實(shí)現(xiàn)創(chuàng)建課題、審核課題、選題等基本功能。使用方法簡(jiǎn)單、操作方便、功能齊全,為用戶(hù)提供了高效集成的管理和服務(wù)平臺(tái),如圖1所示。
1.2 系統(tǒng)設(shè)計(jì)
系統(tǒng)設(shè)計(jì)了t_depart表、t_teacher表、t_student表、t_project表。
1.2.1 系統(tǒng)流程
圖2為用戶(hù)登錄流程。當(dāng)用戶(hù)進(jìn)入系統(tǒng)時(shí),首先進(jìn)行身份驗(yàn)證,驗(yàn)證成功后,對(duì)應(yīng)顯示相應(yīng)角色功能列表。
1.2.2 數(shù)據(jù)表
t_teacher數(shù)據(jù)表存儲(chǔ)所有教師信息,其中is_admin==1擁有管理員權(quán)限,見(jiàn)表1。
t_depart數(shù)據(jù)表存儲(chǔ)所有學(xué)院與專(zhuān)業(yè)信息,見(jiàn)表2。
t_student表存儲(chǔ)所有學(xué)生信息,depart_id代表所屬專(zhuān)業(yè)的id。
t_project表存儲(chǔ)所有課題信息。teacher對(duì)應(yīng)出題人,StudentId對(duì)應(yīng)選題人。
2 系統(tǒng)開(kāi)發(fā)
2.1 開(kāi)發(fā)工具
本系統(tǒng)使用Intellij IDEA 2017.1.2、Android Studio進(jìn)行系統(tǒng)開(kāi)發(fā),數(shù)據(jù)庫(kù)使用Sql Server 2008,服務(wù)器為T(mén)omcat9,操作系統(tǒng)是Microsoft Windows7,瀏覽器為IE或360安全瀏覽器,測(cè)試環(huán)境為Postman。
2.2 開(kāi)發(fā)技術(shù)
2.2.1 后端開(kāi)發(fā)技術(shù)
采用Sql Server 2008數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)持久化存儲(chǔ)[7],采用Spring+SpringMVC+Hibernate實(shí)現(xiàn)restful接口設(shè)計(jì)并返回json數(shù)據(jù)[8]。
(1)Spring是一個(gè)輕量級(jí)的容器(light-weight Container),核心是Bean工廠(Bean Factory),可用來(lái)構(gòu)造所需的M(Model)。在此基礎(chǔ)上,Spring還提供AOP(Aspect-Oriented Programming,面向?qū)用骈_(kāi)發(fā))實(shí)現(xiàn)方法,提供非管理環(huán)境下的一些事務(wù)和安全申明方式;對(duì)實(shí)體工廠方法擴(kuò)展后得到的ApplicationContext更加方便實(shí)現(xiàn)J2EE的應(yīng)用;DAO/ORM(數(shù)據(jù)庫(kù)操作對(duì)象/數(shù)據(jù)庫(kù)映射對(duì)象)方便開(kāi)發(fā)者進(jìn)行各種數(shù)據(jù)庫(kù)開(kāi)發(fā)與實(shí)現(xiàn);Web MVC框架和Spring Web框架提供了Java Web應(yīng)用框架,可與其它熱門(mén)Web框架進(jìn)行集成開(kāi)發(fā)。
(2)Hibernate是開(kāi)放源代碼的對(duì)象關(guān)系映射框架,把數(shù)據(jù)庫(kù)操作轉(zhuǎn)換為對(duì)實(shí)體的操作,對(duì)JDBC操作進(jìn)行輕量封裝,將POJO實(shí)體與數(shù)據(jù)庫(kù)表建立一種映射關(guān)系,是一個(gè)全自動(dòng)ORM框架。Hibernate可以自動(dòng)生成對(duì)應(yīng)的SQL語(yǔ)句,使程序員可以放心使用面向?qū)ο缶幊趟枷氩僮鞲鞣N數(shù)據(jù)庫(kù)。另外,Hibernate可以應(yīng)用在所有使用JDBC的場(chǎng)合。
(3)Spring MVC框架是一個(gè)MVC模式框架,通過(guò)實(shí)現(xiàn)Model-View-Controller模式很好地將數(shù)據(jù)層、業(yè)務(wù)層與展現(xiàn)層分離開(kāi)來(lái)。Spring MVC設(shè)計(jì)原理是圍繞DispatcherServlet類(lèi)展開(kāi)的,DispatcherServlet負(fù)責(zé)將所有請(qǐng)求派發(fā)到它指定的handler進(jìn)行處理。通過(guò)其中可配置的handler mappings、view resolution處理接收到的請(qǐng)求,并轉(zhuǎn)到對(duì)應(yīng)的視圖展示。
SSH(Spring, SpringMVC與Hibernate)開(kāi)發(fā)優(yōu)點(diǎn)[9]:
(1)SpringMVC是一種很好的MVC模式框架。SpringMVC的MVC設(shè)計(jì)模式可使開(kāi)發(fā)邏輯變得非常清晰,程序更加層次分明。
(2)Spring提供了對(duì)業(yè)務(wù)進(jìn)行管理的方法,鼓勵(lì)使用注入接口的方法進(jìn)行編程,不提倡直接對(duì)類(lèi)進(jìn)行編程或操作,使開(kāi)發(fā)的產(chǎn)品最大程度上進(jìn)行解耦。
(3)Hibernate提供數(shù)據(jù)庫(kù)操作,對(duì)數(shù)據(jù)進(jìn)行持久化[10]。Hibernate訪問(wèn)數(shù)據(jù)對(duì)應(yīng)的注解類(lèi)名屬性等,對(duì)JDBC進(jìn)行輕量封裝[11],與關(guān)系型數(shù)據(jù)庫(kù)配合編程過(guò)程大大簡(jiǎn)化[12]。
2.2.2 安卓端開(kāi)發(fā)技術(shù)
(1)Rxjava,一個(gè)在Java VM上使用可觀測(cè)序列組成異步、基于事件的程序的庫(kù),是一個(gè)用來(lái)異步操作的框架。Rxjava通過(guò)Observable與Subscriber實(shí)現(xiàn)觀察者設(shè)計(jì)模式,能在業(yè)務(wù)邏輯復(fù)雜的情況下仍然保持清晰的代碼。
(2)Retrofit,一個(gè)針對(duì)Android和Java的http請(qǐng)求客戶(hù)端,可將restful API封裝為java interface,根據(jù)業(yè)務(wù)需求進(jìn)行實(shí)際接口的封裝,可封裝多個(gè)java interface以滿足業(yè)務(wù)需求。
Rxjava+Retrofit優(yōu)點(diǎn):
Retrofit使用注解方式定義請(qǐng)求,基于Okhttp(基于okio優(yōu)化的高效流操作,能自動(dòng)使用同一個(gè)Socket合并請(qǐng)求等)實(shí)現(xiàn)高效的網(wǎng)絡(luò)請(qǐng)求。配合Rxjava觀察者設(shè)計(jì)模式,可更加高效清晰地實(shí)現(xiàn)異步網(wǎng)絡(luò)請(qǐng)求。
3 系統(tǒng)運(yùn)行效果
畢業(yè)設(shè)計(jì)選題系統(tǒng)設(shè)計(jì)完成后臺(tái)管理系統(tǒng)與移動(dòng)端APP應(yīng)用,在此以教師端登錄效果進(jìn)行展示。
教師用戶(hù)登陸。使用賬號(hào)t001,密碼123456,如圖3所示。
用戶(hù)登錄后,顯示對(duì)應(yīng)權(quán)限功能列表,進(jìn)行操作,如圖4所示。
進(jìn)入個(gè)人中心,顯示當(dāng)前用戶(hù)詳細(xì)信息,如圖5所示。
4 結(jié)語(yǔ)
本文提出的畢業(yè)設(shè)計(jì)選題系統(tǒng)構(gòu)建方案,目的是有效提高高校畢業(yè)設(shè)計(jì)選題工作的效率,解決人工信息管理及Web端操作的諸多弊端,提升高校校園數(shù)字化水平。該系統(tǒng)使高校畢業(yè)設(shè)計(jì)選題工作更加科學(xué)化、規(guī)范化,具有良好的應(yīng)用前景。
參考文獻(xiàn):
[1] 單丹丹,韓冬.Android源碼中觀察者模式的運(yùn)用[J].電腦知識(shí)與技術(shù),2017(2):16-17.
[2] 劉金梅,王俊紅,胡輝,等.電子信息工程專(zhuān)業(yè)本科畢業(yè)設(shè)計(jì)研究與實(shí)踐[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2016(5):142-146.
[3] 鄭潔,錢(qián)育蓉,范迎迎.基于SpringMVC和Hibernate的企業(yè)人事管理系統(tǒng)[J].電腦知識(shí)與技術(shù),2016(2):64-66.
[4] 周巧俊.RESTful Web服務(wù)開(kāi)放平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2016.
[5] 朱亞林,高飛,卞步喜.淺談本科畢業(yè)設(shè)計(jì)過(guò)程中學(xué)生創(chuàng)新能力的培養(yǎng)[J].科技創(chuàng)新導(dǎo)報(bào),2014(28):29-31.
[6] 張玉清,王凱,楊歡,等.Android安全綜述[J].計(jì)算機(jī)研究與發(fā)展,2014(7):78-79.
[7] 陳霓.SQL Server 2008數(shù)據(jù)庫(kù)的安全性分析[J].電腦開(kāi)發(fā)與應(yīng)用,2012(1):94-96.
[8] 馮學(xué)軍.基于SSH框架的Web網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)春:長(zhǎng)春理工大學(xué),2010.
[9] 吳曉鷗.Restful Web Services在企業(yè)應(yīng)用集成中的應(yīng)用研究[D].北京:首都經(jīng)濟(jì)貿(mào)易大學(xué),2010.
[10] 陳蘇蓉,朱曉輝.SQL Server 2008性能優(yōu)化研究[J].電腦知識(shí)與技術(shù),2009(34):65-68.
[11] 高張,康小軍.提高Tomcat服務(wù)器運(yùn)行性能的研究[J].計(jì)算機(jī)與數(shù)字工程,2008(10):1245-1250.
[12] 許文稼,趙英凱.應(yīng)用SpringMVC與Hibernate進(jìn)行Web開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2008(2):146-149.
(責(zé)任編輯:杜能鋼)