施峰 張瑾
摘要:計(jì)算機(jī)軟件開發(fā)已經(jīng)成為較熱門的行業(yè),許多不同行業(yè)的用戶紛紛開始學(xué)習(xí)計(jì)算機(jī)編程。計(jì)算機(jī)專業(yè)課程很多,編譯原理已成為一門重要的計(jì)算機(jī)必修課,得到了越來(lái)越多的高校和自學(xué)人群的重視。一個(gè)好的編譯原理課程網(wǎng)站不僅能提高用戶學(xué)習(xí)這門課的效率,而且能夠解決在學(xué)習(xí)中帶來(lái)的困惑,也在一定程度上節(jié)約時(shí)間成本。針對(duì)這種情況,設(shè)計(jì)了一種基于SSM框架的編譯原理精品課程網(wǎng)站。該網(wǎng)站采用SSM框架,后臺(tái)使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),使用了Java編程技術(shù),能夠?qū)崿F(xiàn)數(shù)據(jù)的高效傳輸,并且具有較好的用戶體驗(yàn)。
關(guān)鍵詞:精品課程網(wǎng)站;MySQL數(shù)據(jù)庫(kù);SSM框架;留言管理
一、引言
本文將對(duì)在校大學(xué)生和自學(xué)計(jì)算機(jī)編程課程的人群對(duì)課程網(wǎng)站管理需求進(jìn)行調(diào)查與分析?;谶@項(xiàng)調(diào)研的結(jié)果,提出了一種基于SSM框架的編譯原理精品課程網(wǎng)站的設(shè)計(jì)方案。在設(shè)計(jì)過程中,遵循MVC分層思想的原則,并采用MySql5.0數(shù)據(jù)庫(kù)、Tomcat6.0服務(wù)器和Java語(yǔ)言進(jìn)行開發(fā)。通過實(shí)現(xiàn)一些基礎(chǔ)功能,基本滿足了精品課程平臺(tái)的需求。還通過對(duì)精品課程網(wǎng)站中不同版塊的管理,進(jìn)一步完善了精品網(wǎng)站的建設(shè)。此外,還提高了自學(xué)人群的學(xué)習(xí)效率,并為教師與學(xué)生的互動(dòng)交流提供了一個(gè)平臺(tái)。
二、精品課程網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)現(xiàn)狀
隨著計(jì)算機(jī)技術(shù)在社會(huì)各個(gè)領(lǐng)域的廣泛應(yīng)用,計(jì)算機(jī)軟件開發(fā)已經(jīng)成為一個(gè)相當(dāng)熱門的行業(yè),許多不同行業(yè)的人開始學(xué)習(xí)計(jì)算機(jī)編程。計(jì)算機(jī)專業(yè)課程非常豐富,其中編譯原理已經(jīng)成為一門重要的必修課程,越來(lái)越多的高校和自學(xué)者開始重視它。學(xué)習(xí)這門課程對(duì)于將來(lái)從事計(jì)算機(jī)編程領(lǐng)域的工作是有幫助的。
編譯原理本質(zhì)上是一個(gè)算法問題,對(duì)于很多學(xué)生來(lái)說,剛開始接觸學(xué)習(xí)時(shí)可能會(huì)有一定難度。在校學(xué)生在課堂上有老師的輔導(dǎo),但這遠(yuǎn)遠(yuǎn)不夠,他們還需要在課后定期查漏補(bǔ)缺。而對(duì)于自學(xué)者群體來(lái)說,大部分都是自力更生,需要查閱書籍和觀看視頻,這段時(shí)間可能也會(huì)浪費(fèi)很多時(shí)間。為了解決這個(gè)問題,基于用戶需求,開發(fā)了一個(gè)專門用于學(xué)習(xí)編譯原理課程的網(wǎng)站,供自學(xué)者使用。通過使用這個(gè)網(wǎng)站,用戶可以進(jìn)行系統(tǒng)的學(xué)習(xí),提高編譯原理的學(xué)習(xí)效率,解決學(xué)習(xí)中的困惑,并在一定程度上節(jié)約時(shí)間成本。
三、精品課程網(wǎng)站核心技術(shù)
精品課程網(wǎng)站采用的是B/S模式設(shè)計(jì)結(jié)構(gòu),開發(fā)環(huán)境工具使用的是MyEclipse2020版,后臺(tái)采用的是MySQL5.0作為存取數(shù)據(jù)的數(shù)據(jù)庫(kù),服務(wù)器使用的是Tomcat6.0。底層編程語(yǔ)言是Java。網(wǎng)站系統(tǒng)架構(gòu)采用三層架構(gòu),以MVC分層思想為原則,使用SSM框架進(jìn)行整合開發(fā)。
(一)Java語(yǔ)言
Java是一門面向?qū)ο蟮某绦蛘Z(yǔ)言,具有簡(jiǎn)單性、健壯性、安全性和動(dòng)態(tài)性等特點(diǎn)[1]。Java語(yǔ)言和傳統(tǒng)C++語(yǔ)言有很多相似之處,都是面向?qū)ο蟮恼Z(yǔ)言,不同之處在于二者運(yùn)行機(jī)制。C++使用指針運(yùn)行機(jī)制,而Java使用垃圾收集機(jī)制。由于Java具有可移植性的特點(diǎn),常被廣泛應(yīng)用于編寫桌面應(yīng)用程序、Web應(yīng)用程序和分布式系統(tǒng)應(yīng)用程序等。正因?yàn)檫@些特點(diǎn),它深受許多開發(fā)者的喜愛。
(二)HTML/CSS
HTML是一種超文本標(biāo)記語(yǔ)言,主要由
(三)MyEclipse
MyEclipse是基于Eclipse工具進(jìn)一步演化而來(lái)的,它具有獨(dú)立的插件,為開發(fā)人員提供了高效且可擴(kuò)展的開發(fā)環(huán)境。同時(shí),MyEclipse還提供了許多新功能,便于后期的維護(hù)和管理。目前,MyEclipse可用于Java、JavaWeb、JavaEE和移動(dòng)應(yīng)用程序的開發(fā)。開發(fā)人員可以使用這個(gè)工具進(jìn)行多種操作,包括編碼、測(cè)試、調(diào)試和發(fā)布等功能。它與框架技術(shù)很好地融合,為后續(xù)開發(fā)提供了許多便利。
(四)MySQL
MySQL是一種廣泛應(yīng)用于中小型企業(yè)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)[2]。它支持SQL語(yǔ)言,具有綜合統(tǒng)一、高度非過程化和面向集合等特點(diǎn),可以與不同的編程語(yǔ)言良好地配合使用。本網(wǎng)站選擇MySQL作為數(shù)據(jù)庫(kù)的原因是,它具有較低的使用成本,并且可以與本網(wǎng)站使用的Java語(yǔ)言很好地結(jié)合。
(五)Tomcat
Tomcat由Apache、Sun等公司及個(gè)人共同開發(fā)而成,是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器[3]。Tomcat由三大核心組件構(gòu)成,分別是Web容器、Servlet容器和Jsp容器。每個(gè)容器對(duì)應(yīng)完成不同的功能。
四、精品課程網(wǎng)站需求分析
在系統(tǒng)開發(fā)過程中,需求分析是整個(gè)項(xiàng)目計(jì)劃階段最關(guān)鍵的環(huán)節(jié)。需求分析是指對(duì)軟件開發(fā)的需求進(jìn)行整理和歸納,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義。在對(duì)自學(xué)人群進(jìn)行了調(diào)研分析之后,為了滿足大多數(shù)用戶的需求進(jìn)行系統(tǒng)設(shè)計(jì),系統(tǒng)應(yīng)具有幾個(gè)重要的模塊,包括系統(tǒng)數(shù)據(jù)維護(hù)、課程信息管理、資料信息管理、用戶信息管理、留言信息管理、課程查詢管理等。其中,基本信息管理模塊主要是管理員對(duì)后臺(tái)上架的課程信息進(jìn)行在線編輯和修改;用戶信息管理模塊主要是對(duì)注冊(cè)用戶賬號(hào)和密碼的維護(hù)以及系統(tǒng)登錄權(quán)限的設(shè)定;系統(tǒng)數(shù)據(jù)維護(hù)模塊主要是對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行備份和恢復(fù);資料信息管理模塊主要是管理員對(duì)上傳的資料進(jìn)行編輯和修改;留言信息管理模塊可以定期回復(fù)用戶留下的問題;查詢管理模塊可以根據(jù)用戶的條件進(jìn)行在線檢索。
五、精品課程網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)
網(wǎng)站用戶類型分為管理員、注冊(cè)用戶和教師,每一種類型對(duì)應(yīng)一種權(quán)限[4]。對(duì)于沒有注冊(cè)的用戶統(tǒng)稱為游客,游客只能在線瀏覽教學(xué)資料,不能進(jìn)行其他操作。注冊(cè)用戶后可以使用網(wǎng)站內(nèi)的課程管理、資料下載、在線檢索和在線留言等功能,以系統(tǒng)地學(xué)習(xí)編譯原理課程。教師登錄后可以管理自己建設(shè)的課程,具體包含課程管理、留言管理、資料管理、留言管理和用戶管理等功能。管理員登錄后只能進(jìn)行網(wǎng)站層面的管理,包括教師管理、學(xué)生管理以及網(wǎng)站配置方面等[4],不包含任何與課程有關(guān)的功能。
(一)系統(tǒng)功能設(shè)計(jì)
本網(wǎng)站分為前臺(tái)模塊和后臺(tái)模塊[5]。前臺(tái)模塊是與用戶直接交互的部分,用戶在前臺(tái)頁(yè)面中接觸到所有元素,如字體、顏色、圖片、導(dǎo)航和輪播圖等,都是通過HTML頁(yè)面來(lái)實(shí)現(xiàn)的。后臺(tái)模塊是整個(gè)網(wǎng)站管理的重要入口,主要功能是對(duì)前臺(tái)內(nèi)容進(jìn)行管理以及一些功能的管理。前臺(tái)模塊側(cè)重于用戶的使用,需要考慮良好的用戶體驗(yàn)度,而后臺(tái)功能則側(cè)重于功能的實(shí)現(xiàn),需要考慮代碼的精簡(jiǎn)性。
1.前臺(tái)模塊功能
用戶管理模塊:游客可以通過網(wǎng)站首頁(yè)在線注冊(cè)、使用個(gè)人的賬號(hào)密碼登錄,并修改個(gè)人信息[5]。
精品課程模塊:用戶登錄成功后,可以在這里學(xué)習(xí)編譯原理這門課的知識(shí)點(diǎn)。目前網(wǎng)站內(nèi)容主要以文本和圖片的形式進(jìn)行展示,用戶可以點(diǎn)擊標(biāo)題自行查看所學(xué)內(nèi)容。
資料下載模塊:此頁(yè)面的內(nèi)容只針對(duì)注冊(cè)會(huì)員開放。未注冊(cè)的用戶目前沒有下載資料的權(quán)限,只能在線瀏覽教學(xué)資料,不能進(jìn)行其他操作。注冊(cè)會(huì)員可以根據(jù)條件選擇所需資料進(jìn)行下載和查看。
問題留言模塊:注冊(cè)用戶在使用網(wǎng)站學(xué)習(xí)過程中,可以將需要答疑的問題上傳至該留言模塊,以便后期課程教師能夠第一時(shí)間看到問題并回復(fù)。
查詢信息模塊:注冊(cè)用戶可以按照條件篩選課程,然后進(jìn)行在線檢索,查詢所需的課程學(xué)習(xí)資料。
2. 后臺(tái)模塊功能
管理員維護(hù)模塊:管理員可以對(duì)注冊(cè)用戶和教師的信息進(jìn)行修改、創(chuàng)建和刪除賬號(hào)等。
教師維護(hù)模塊:教師成功登錄后,可以修改個(gè)人信息。
課程管理模塊:教師可以在后臺(tái)上傳有關(guān)編譯原理的課程,也可以對(duì)系統(tǒng)發(fā)布的舊課程進(jìn)行下架或重新編輯上傳。
留言管理模塊:教師可以查看、回復(fù)和刪除用戶在留言板上的留言內(nèi)容。
資料信息管理:該模塊的功能類似于課程管理功能,教師可以上傳和更新關(guān)于編譯原理的學(xué)習(xí)資料供用戶查看和下載。
3.網(wǎng)站功能實(shí)現(xiàn)
網(wǎng)站前臺(tái)功能實(shí)現(xiàn)包含用戶管理功能實(shí)現(xiàn)和用戶課程管理功能實(shí)現(xiàn)。
1.用戶管理功能實(shí)現(xiàn)
用戶初次登錄網(wǎng)站需要注冊(cè)一個(gè)新賬號(hào)。在登錄界面中,用戶輸入賬號(hào)和密碼后,點(diǎn)擊登錄按鈕,系統(tǒng)將調(diào)用方法層中的Login()方法,獲取網(wǎng)頁(yè)表單中輸入的值,然后將該值傳入到Select方法中進(jìn)行用戶查找。并且再返回User對(duì)象,判斷User對(duì)象的值是否為NULL,如果不為NULL則表示有這個(gè)數(shù)據(jù),用戶登錄成功;反之登錄失敗,用戶需要進(jìn)行在線注冊(cè)。用戶點(diǎn)擊“注冊(cè)”按鈕,填寫網(wǎng)頁(yè)上的字段信息,再點(diǎn)擊提交按鈕。系統(tǒng)將調(diào)用方法層中的AddUser()方法,獲取網(wǎng)頁(yè)表單中的值,創(chuàng)建一個(gè)新對(duì)象,并根據(jù)用戶名查找數(shù)據(jù)庫(kù)中是否已存在該用戶。如果存在,則顯示注冊(cè)失?。环粗畡t注冊(cè)成功,并調(diào)用Add()方法將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
2.用戶課程管理功能實(shí)現(xiàn)
用戶課程模塊中主要由Index函數(shù)、New函數(shù)、Update函數(shù)、Edit函數(shù)、BatchDelete函數(shù)進(jìn)行調(diào)用與處理操作。Index函數(shù)可以實(shí)現(xiàn)顯示課程列表數(shù)目;new函數(shù)是實(shí)現(xiàn)增加課程的函數(shù),方法中model屬性對(duì)象由Model.AddAttribute()方法實(shí)現(xiàn),里面?zhèn)鱰course參數(shù),就會(huì)相應(yīng)返回course文件下的edit jsp頁(yè)面;Edit函數(shù)可以實(shí)現(xiàn)在線修改,Update可以實(shí)現(xiàn)更新操作[6],先判斷課程的id是否存在,如果存在,就記錄需要修改的id號(hào),數(shù)目進(jìn)行加一的操作,最后將調(diào)用Session的SaveOrUpdate方法,會(huì)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行操作;BatchDelete函數(shù)可以實(shí)現(xiàn)對(duì)課程進(jìn)行批量刪除,函數(shù)中用到了集合,使用集合存儲(chǔ)判斷的結(jié)果。
3.資料信息管理功能實(shí)現(xiàn)
通過創(chuàng)建Downloadaction類,對(duì)FileName()的方法設(shè)置了私有的方法,GetFilename()方法中會(huì)返回filename這個(gè)類型,它指的是文件下載名定義的變量。在InputStream方法中定義一個(gè)路徑參數(shù),把url傳過來(lái)的中文參數(shù)進(jìn)行編碼,之后再把編碼過的賦值到這個(gè)NewFileName對(duì)象中,在之前的需提前配置sturts.xml文件。Action類中GetInputStream()方法需提前進(jìn)行拋出異常的操作。InputStream表示的是文件下載的來(lái)源流,它對(duì)應(yīng)著Action中inputStream的屬性名,route保存的是已經(jīng)編碼過的路徑,會(huì)把這個(gè)值返回來(lái)。Param對(duì)象標(biāo)簽有inputname、contentdisposition和buffersize分別代表的是來(lái)源流,文件下載的方式包括內(nèi)聯(lián)和附件的方式,當(dāng)用戶開始進(jìn)行下載的時(shí)候,默認(rèn)會(huì)優(yōu)先選擇以附件的方式彈出對(duì)話框,進(jìn)行下載,否則會(huì)把加載的內(nèi)容直接顯示在頁(yè)面上,默認(rèn)的方式是內(nèi)聯(lián)的方式,buffersize代表的是下載文件緩沖區(qū),是文件臨時(shí)存放的地方。
4.留言信息管理功能實(shí)現(xiàn)
該功能通過調(diào)用DoGet方法,獲得相應(yīng)的編碼,title內(nèi)容和message內(nèi)容,然后通過request中的session中取出當(dāng)前用戶對(duì)象,建立留言表對(duì)應(yīng)JavaBean對(duì)象,把數(shù)據(jù)封裝進(jìn)去。其次,在調(diào)用帶參數(shù)方法AddInfo()傳入數(shù)據(jù),括號(hào)中的所有參數(shù)都是留言信息表contact中要保存的字段變量。通過已經(jīng)寫好的對(duì)象方法連接數(shù)據(jù)庫(kù)的Dao類,在不拋出異常的情況下,找到數(shù)據(jù)庫(kù)中的留言信息表contact,通過SQL語(yǔ)句insert into把在頁(yè)面表單中輸入的數(shù)據(jù)插入到留言信息表contact中,或者update語(yǔ)句更新留言信息表中已存在的數(shù)據(jù)。
當(dāng)用戶如果是第一次訪問該Servlet,用戶對(duì)象為空,如果登錄成功,將獲取的對(duì)象保存在Session中 ,通過FindMbInfo()獲取留言板的內(nèi)容,返回一個(gè)數(shù)組,最后將數(shù)組的內(nèi)容保存起來(lái),通過Url直接跳轉(zhuǎn)到success.jsp頁(yè)面上,反之跳轉(zhuǎn)到error.jsp頁(yè)面上。
5.查詢信息管理功能實(shí)現(xiàn)
該功能主要通過strsql變量在數(shù)據(jù)庫(kù)中查詢的地址實(shí)現(xiàn)。先從課程表中定義多個(gè)course_id、course_name、type等字段,然后根據(jù)條件進(jìn)行檢索,對(duì)此代碼拋出異常,在查詢數(shù)據(jù)時(shí)需用分頁(yè)控件PageModel分頁(yè)多條記錄。同時(shí),為了減少頁(yè)面的跳轉(zhuǎn)執(zhí)行效率,采用Ajax異步刷新來(lái)實(shí)現(xiàn)分頁(yè)查詢。
(二)網(wǎng)站數(shù)據(jù)庫(kù)設(shè)計(jì)
通過對(duì)整個(gè)精品課程網(wǎng)站進(jìn)行需求分析和功能設(shè)計(jì),確定了網(wǎng)站需要哪些實(shí)體,再對(duì)網(wǎng)站的屬性進(jìn)行分析,最后得出了網(wǎng)站需要幾個(gè)數(shù)據(jù)庫(kù)表。以下為精品課程網(wǎng)站所需的四種數(shù)據(jù)庫(kù)表的結(jié)構(gòu)。
用戶信息表:賬號(hào)、姓名、手機(jī)號(hào)碼、聯(lián)系地址、角色id、是否可用、角色名稱、創(chuàng)建時(shí)間、密碼、是否管理員。
留言信息表:留言ID、用戶、郵箱、手機(jī)號(hào)碼、內(nèi)容、發(fā)送時(shí)間、反饋時(shí)間、反饋內(nèi)容、用戶ID。
課程信息表:課程名稱、創(chuàng)建時(shí)間、課程簡(jiǎn)介、類型、圖片地址。
教師信息表:編號(hào)、教師用戶名、教師密碼、創(chuàng)建時(shí)間、備注、權(quán)限。
(三) 網(wǎng)站數(shù)據(jù)庫(kù)連接
經(jīng)過網(wǎng)站需求分析、整體功能實(shí)現(xiàn)、代碼實(shí)現(xiàn)功能到數(shù)據(jù)庫(kù)的初步設(shè)計(jì),接下來(lái)就是網(wǎng)站設(shè)計(jì)中最關(guān)鍵的一步如何使用java語(yǔ)言與數(shù)據(jù)庫(kù)進(jìn)行整體的連接,使用戶和管理員在操作過程中得到數(shù)據(jù)能夠持久化的保存,具體連接步驟如下:
①導(dǎo)入JDBC類;
②裝載/注冊(cè)驅(qū)動(dòng)程序;
③連接數(shù)據(jù)庫(kù);
④創(chuàng)建語(yǔ)句對(duì)象;
⑤執(zhí)行SQL語(yǔ)句;
⑥處理結(jié)果;
⑦關(guān)閉連接。
六、結(jié)束語(yǔ)
本文通過調(diào)查與分析在校大學(xué)生和自學(xué)計(jì)算機(jī)編程課程的人群對(duì)課程網(wǎng)站的管理需求。設(shè)計(jì)了一種基于SSM框架的編譯原理精品課程網(wǎng)站,以MVC分層思想為原則。采用了MySql5.0數(shù)據(jù)庫(kù)、Tomcat6.0服務(wù)器和Java語(yǔ)言設(shè)計(jì)開發(fā),基本實(shí)現(xiàn)了精品課程平臺(tái)應(yīng)具備的一些基礎(chǔ)功能。通過對(duì)精品課程網(wǎng)站中不同板塊的管理,進(jìn)一步完善了精品網(wǎng)站建設(shè),同時(shí)也提高了自學(xué)人群的學(xué)習(xí)效率,為教師與學(xué)生的互動(dòng)交流提供了平臺(tái)。
作者單位:施峰 張瑾 江蘇開放大學(xué)
參? 考? 文? 獻(xiàn)
[1]周子淳.基于Java的校內(nèi)社交網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2020,16(36):89-91+94.
[2]張超,王亮,翟乃強(qiáng).校園網(wǎng)網(wǎng)站LAMP配置及移植[J].青島遠(yuǎn)洋船員職業(yè)學(xué)院學(xué)報(bào),2012,33(02):64-67.
[3]李穎. 基于J2ME平臺(tái)的移動(dòng)應(yīng)用系統(tǒng)的研究與實(shí)現(xiàn)[D].南昌大學(xué),2007.
[4]竇立君,張金鳳,吳堯.基于JSP的精品課程網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2016,12(28):33-35.
[5]王雪,李宛盈.校園二手物品交易網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)創(chuàng)新,2021(26):102-103.
[6]陳露露. 融資租賃業(yè)務(wù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].曲阜師范大學(xué),2020.