何秋躍,蘇檢德,金純用,孫文超
(廣西師范大學(xué)電子工程學(xué)院,廣西 桂林541004)
數(shù)學(xué)是一切科學(xué)的基礎(chǔ),數(shù)學(xué)思維往往影響著學(xué)生的一生[1]。因此,學(xué)好數(shù)學(xué)非常重要,而數(shù)學(xué)運算是數(shù)學(xué)的根基,運算的速度與準(zhǔn)確率則是數(shù)學(xué)運算的關(guān)鍵,掌握數(shù)學(xué)速算能力將對學(xué)習(xí)者的邏輯思維方式有很大的啟發(fā)作用[2]。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,移動終端設(shè)備的普及移動學(xué)習(xí)是近年來興起的新型學(xué)習(xí)方式。據(jù)2019年移動端操作系統(tǒng)市場份額統(tǒng)計,蘋果iOS操作系統(tǒng)占比22.83%,僅次于安卓操作系統(tǒng)[3],因此基于iOS的數(shù)學(xué)速算學(xué)習(xí)系統(tǒng)具有龐大的應(yīng)用市場[4-5]。通過查閱相關(guān)文獻,目前市場上關(guān)于數(shù)學(xué)速算的學(xué)習(xí)系統(tǒng)較少,相似的學(xué)習(xí)系統(tǒng),有作業(yè)幫,猿輔導(dǎo)等,這些學(xué)習(xí)系統(tǒng)功能模塊都比較完整,但仍存在缺乏內(nèi)容專一性訓(xùn)練,易用性等問題[6],所以從安全性、易用性、實用性角度出發(fā),設(shè)計一款具有明確內(nèi)容指向的移動學(xué)習(xí)系統(tǒng)很有必要,且具有一定的創(chuàng)新性[7]。
本文設(shè)計實現(xiàn)了以C/S、B/S 架構(gòu)為載體的基于蘋果iOS的數(shù)學(xué)速算學(xué)習(xí)系統(tǒng)。本系統(tǒng)由iOS移動終端、后臺管理web 端、Tomcat 服務(wù)器與MySQL 數(shù)據(jù)庫服務(wù)器四大部分組成;利用隨機出題改進算法,確保在每一個練習(xí)題庫做完之前,答題界面所呈現(xiàn)的練習(xí)題不會重復(fù);安全性采用“容易計算、抗修改性、強抗碰撞性”的MD5算法與隨機序列按特定規(guī)則相結(jié)合的方式,對用戶密碼進行加密、對教學(xué)文檔進行數(shù)字簽名與校驗,以此確保系統(tǒng)與教學(xué)內(nèi)容的安全性[8];為了保證本系統(tǒng)用戶的有效性與真實性,采用了郵箱注冊激活技術(shù),進行用戶注冊激活。
MD5 是一個安全散列算法,其特點是加密過程不可逆,具備強抗碰撞性,是目前最牢靠的加密算法之一[9]。MD5與另一個散列算法SHA-1各指標(biāo)相比較,如表1所示。
表1 MD5與SHA-1比較
據(jù)表1可知,MD5 生成的摘要長度比SHA-1 生成的摘要長度短32 比特,即要處理的緩存更?。籑D5 循環(huán)運行的步驟比SHA-1 的少16 步,即MD5 的運行速度更快;MD5 對報文長度沒有限制,因為本系統(tǒng)需要用MD5對教學(xué)文檔進行數(shù)字簽名,所以這點滿足系統(tǒng)設(shè)計的需要。經(jīng)過綜合分析,MD5 加密算法更有利于系統(tǒng)的設(shè)計與性能。
雖然目前針對MD5加密算法還沒有逆運算的程序開發(fā)出來,但傳統(tǒng)的MD5加密算法還是不能達到絕對的安全,為了進一步提高系統(tǒng)的安全性,防止MD5加密被窮舉法暴力破解,除了在用戶注冊時利用正則表達式限制用戶的密碼必須包含字母、數(shù)字、符號與最少位數(shù)以外,本系統(tǒng)采用了MD5與隨機序列按特定規(guī)則相結(jié)合的加密技術(shù),因為增加MD5 加密內(nèi)容的長度,對于暴力破解MD5的難度來說是呈指數(shù)級增長的[10]。其詳細過程是:在用戶密碼P1 采用MD5 加密之前先用隨機序列產(chǎn)生器產(chǎn)生兩個特定長度的隨機序列passwordseries(簡稱S1),documentseries(簡稱S2),將隨機序列S1與P1按特定規(guī)則結(jié)合得到P2,再利用MD5對新的密碼字符串P2進行加密得到K1,將密碼密文K1與隨機序列S2保存到數(shù)據(jù)庫用戶列表中,并將S1、S2保存在iOS移動端的應(yīng)用沙盒中,其中S2是用于用戶下載教學(xué)文檔時,用MD5對文檔進行數(shù)字簽名所需的隨機序列,S2的值將會在用戶每次登錄時更新一次,以確保教學(xué)文檔數(shù)字簽名與校驗的安全性。
電子郵箱作為常用的一種聯(lián)系工具,也可以看作是一個身份認證的標(biāo)識。該技術(shù)主要用于:(1)激活注冊賬戶,增加用戶注冊的安全性和確保賬戶的真實有效性;(2)便于用戶修改或找回密碼;(3)便于今后產(chǎn)品相關(guān)信息的推廣。因此郵箱注冊激活技術(shù)在系統(tǒng)注冊中非常有必要。
郵箱注冊激活技術(shù)是基于javaMail技術(shù)[11],其實現(xiàn)過程是:(1)在數(shù)據(jù)庫用戶表中設(shè)置state、activecode兩個字段名,分別用于表示注冊用戶的狀態(tài)與激活碼;(2)在用戶注冊成功時,利用javaMail 技術(shù)向用戶注冊時填寫的郵箱發(fā)送激活郵件,此時用戶信息與激活碼已成功插入到數(shù)據(jù)庫用戶表中,state 的值默認為0,處于未激活狀態(tài);(3)用戶進入郵箱點擊接收到的激活郵件進行激活,當(dāng)數(shù)據(jù)庫用戶表中對應(yīng)記錄的state值變?yōu)?時則激活成功。
傳統(tǒng)的隨機出題算法產(chǎn)生一道題目的過程為:將試題庫中的題目裝入數(shù)組,用隨機數(shù)函數(shù)產(chǎn)生一個數(shù)組元素個數(shù)范圍內(nèi)的隨機數(shù),將數(shù)組中索引值為該隨機數(shù)的元素取出。這種過程雖然具有隨機性,但是存在題目重復(fù)出現(xiàn),很難實現(xiàn)試題練習(xí)全覆蓋。為了解決此問題,本系統(tǒng)提出了隨機出題的改進算法。
一般情況下,某個類型的練習(xí)題庫被做完之前,會出現(xiàn)題目重復(fù)的問題。使用隨機出題的改進算法能夠很好的解決這個問題,即使退出系統(tǒng)之后,再次登錄系統(tǒng),練習(xí)題也不會重復(fù)。其出題步驟是:(1)從應(yīng)用沙盒中取出隨機數(shù)數(shù)組用一個可變數(shù)組接收;(2)用隨機函數(shù)產(chǎn)生一個總題目數(shù)組元素個數(shù)范圍內(nèi)的隨機數(shù);(3)判斷該隨機數(shù)在隨機數(shù)數(shù)組中是否存在;(4)如果存在則將循環(huán)索引減一,跳出本次循環(huán),重新開始執(zhí)行循環(huán),如果不存在就把該隨機數(shù)存入隨機數(shù)組中;(5)從總題目數(shù)組中取出索引值為該隨機數(shù)的元素存入到練習(xí)題臨時數(shù)組中;(6)上述(2)、(3)、(4)、(5)步的循環(huán)次數(shù)取決于每次練習(xí)一組題目的數(shù)量;(7)循環(huán)結(jié)束將當(dāng)前的隨機數(shù)數(shù)組存入到應(yīng)用沙盒中。以每次練習(xí)題目數(shù)量為10 題為例,具體出題流程圖如圖1所示。
圖1 隨機出題的改進算法流程圖
本系統(tǒng)采用C/S、B/S架構(gòu),由iOS移動端、后臺管理web端、Tomcat服務(wù)器與MySQL數(shù)據(jù)庫四大部分組成,具體內(nèi)容以及彼此間的關(guān)系,如圖2所示。
圖2 系統(tǒng)總體結(jié)構(gòu)圖
iOS 移動端包括注冊登錄、首頁、記錄、反饋、我的五個模塊。使用Objective-C語言,在Xcode10.0集成開發(fā)平臺上進行開發(fā)。采用了C/S 模式、MVC 架構(gòu)設(shè)計,能夠增強界面顯示效果,降低程序的耦合性,使整個程序更具有移植性與維護性。
4.1.1 注冊與登錄
用戶注冊與登錄是進入系統(tǒng)主界面的前提,安全有效的注冊有利于系統(tǒng)的維護與用戶的體驗。本系統(tǒng)在用戶注冊時,使用了注冊驗證碼、郵箱注冊激活技術(shù)和MD5與隨機序列按特定規(guī)則相結(jié)合的密碼加密技術(shù)。注冊驗證碼技術(shù)是為了防止人為利用程序惡意注冊用戶導(dǎo)致系統(tǒng)崩潰;郵箱注冊激活技術(shù)是為了增加注冊的安全性與用戶的真實有效性;MD5 與隨機序列按特定規(guī)則相結(jié)合的密碼加密技術(shù)是為了確保用戶密碼在傳輸與存儲中不被泄露,增強系統(tǒng)的安全性。用戶注冊成功需要進行激活后才能正常登錄,系統(tǒng)實現(xiàn)用戶注冊與登錄的流程圖分別如圖3,圖4所示。
圖3 用戶注冊流程圖
圖4 用戶登錄流程圖
4.1.2 首頁
首頁包含公告圖片滾動欄、速算視頻學(xué)習(xí)、速算分類訓(xùn)練、速算快速練習(xí)、教學(xué)文檔下載五個功能。
(1)公告圖片滾動欄
公告圖片滾動欄是用于展示系統(tǒng)公告、提示用戶學(xué)習(xí)視頻與教學(xué)文檔有更新以及具體更新內(nèi)容,其展示內(nèi)容隨著后臺管理端公告圖片資源的更新而實時更新。
(2)速算視頻學(xué)習(xí)
該功能提供教學(xué)視頻列表與教學(xué)視頻模糊搜索功能。點擊對應(yīng)的教學(xué)視頻即可進入視頻播放界面,視頻播放界面具備播放、暫停、調(diào)節(jié)亮度、音量、快進、快退、橫豎屏功能,能夠滿足用戶觀看學(xué)習(xí)視頻的相關(guān)需求。
(3)速算分類訓(xùn)練
該功能提供訓(xùn)練類型選擇列表與模糊查詢功能。點擊對應(yīng)的訓(xùn)練類型,將會出現(xiàn)該類型訓(xùn)練難度選擇框,選擇對應(yīng)的難度即可進入練習(xí)控制器進行訓(xùn)練。該界面顯示的題目是利用隨機出題的改進算法篩選出來的,直到該類型該難度的練習(xí)題被練習(xí)完之前不會重復(fù)。練習(xí)控制器界面可以選擇是否實時顯示當(dāng)前答題是否正確與當(dāng)前的準(zhǔn)確率,并且每道題都有答題時間限制,規(guī)定時間內(nèi)未能完成題目作答將會直接變換題目,所以要求用戶認真學(xué)習(xí)速算教學(xué)視頻,掌握運算技巧與方式,才能獲得較快的速度與較高的準(zhǔn)確率。
(4)速算快速練習(xí)
該功能提供運算類型(加、減、乘、除)選擇與運算設(shè)置功能。點擊對應(yīng)的運算類型將會進入運算答題界面,如果對出現(xiàn)的題目數(shù)值范圍與每題限制答題時間不滿意,可以返回到運算類型選擇界面,點擊運算設(shè)置按鈕,選擇運算類型,設(shè)置數(shù)值范圍與每題限制答題時間。快速練習(xí)出現(xiàn)的題目則是運算數(shù)值范圍內(nèi)完全隨機,因此難度不定,適合對當(dāng)前運算類型都熟練掌握的用戶使用,更加考驗學(xué)習(xí)者運算技巧的綜合運用能力。
(5)教學(xué)文檔下載
由于中小學(xué)生心智尚未成熟,容易受到外界信息的干擾。為了保證教學(xué)文檔信息不被人為攔截惡意篡改傳播與教學(xué)內(nèi)容無關(guān)的信息,因此有必要使用MD5與隨機序列按特定規(guī)則相結(jié)合的加密技術(shù)對教學(xué)文檔進行數(shù)字簽名與校驗。
該模塊提供教學(xué)文檔列表界面與模糊搜索文檔功能。點擊想要下載的文檔,先判斷文件是否已經(jīng)被下載過,如果被下載過,則提示是否打開文檔,用戶根據(jù)需要進行選擇;如果沒有被下載過,則提示是否下載文檔并打開預(yù)覽;如果選擇是,則發(fā)送文檔下載請求。服務(wù)器接收到文檔下載請求,從數(shù)據(jù)庫獲取對應(yīng)文檔的信息,將獲取到的文檔與文檔隨機序列S2按特定規(guī)則拼接之后,用MD5 加密算法進行數(shù)字簽名,然后將文檔與文檔的數(shù)字簽名一起發(fā)給iOS 移動端。iOS 移動端接收到教學(xué)文檔后,取出注冊時存儲在應(yīng)用沙盒中的文檔隨機序列S2與教學(xué)文檔按特定規(guī)則結(jié)合之后,用MD5加密算法進行數(shù)字簽名,然后與接收到的文檔數(shù)字簽名進行比較,一致則表示文檔沒有被篡改,允許預(yù)覽打開文檔;否則提示“出現(xiàn)錯誤無法打開”信息。教學(xué)文檔下載的詳細流程圖如圖5所示。
圖5 教學(xué)文檔下載預(yù)覽詳細流程圖
4.1.3 記錄
該模塊用于記錄用戶每次練習(xí)的記錄,包括練習(xí)類型、練習(xí)時間、練習(xí)數(shù)量以及準(zhǔn)確率,并可以查看每次練習(xí)的具體題目以及題目的答題情況。該模塊還提供了短信通知家長的功能,可以使家長及時了解孩子的練習(xí)情況,以達到監(jiān)督的作用。
4.1.4 反饋
該模塊用于iOS 移動端用戶及時反饋在使用過程中遇到的問題。反饋問題時,需要進行文字描述并添加出現(xiàn)問題的界面圖片,以便于后臺管理者及時處理問題,增強用戶的體驗感。
4.1.5 我的
該模塊提供系統(tǒng)設(shè)置、清空下載文檔與退出登錄功能,以及展示或修改用戶個人信息功能,如頭像、昵稱的展示與修改,提升用戶的個性化體驗。
后臺管理web 端包括登錄、注冊、教學(xué)資源管理、反饋信息處理四個模塊。
后臺管理web 端采用B/S 架構(gòu),MVC 設(shè)計模式[12],在MyEclipse開發(fā)環(huán)境中,以J2EE標(biāo)準(zhǔn),使用JSP、Servlet、JavaBean、Sql等相關(guān)技術(shù)進行開發(fā)。
4.2.1 教學(xué)資源管理
該模塊主要是對iOS 移動端的教學(xué)視頻、公告圖片、教學(xué)文檔的上傳與增刪改查操作,還有練習(xí)題庫的更新。iOS 移動端的教學(xué)資源與后臺管理web 端的教學(xué)資源是保持實時同步更新的。
4.2.2 反饋信息的處理
該模塊是用于查看iOS移動端反饋的信息,具有條件查詢,查看信息詳情功能,每一條反饋信息記錄中除了記載著反饋的圖片與文字描述信息外,還有用戶的username與useruuidname,可以通過這兩個參數(shù)到用戶列表中快速查詢用戶的詳細信息,并通過郵件告知用戶所反饋問題的處理狀態(tài)。
服務(wù)器是一個系統(tǒng)開發(fā)的核心,是客戶端與數(shù)據(jù)庫進行數(shù)據(jù)交換的中介,不僅要為客戶端提供請求接口,處理數(shù)據(jù),還要操作數(shù)據(jù)庫。本系統(tǒng)采用的是Tomcat服務(wù)器,以J2EE標(biāo)準(zhǔn)進行開發(fā)。其業(yè)務(wù)邏輯處理流程被分為三層:應(yīng)用層(servlet)、業(yè)務(wù)邏輯層(service)、數(shù)據(jù)訪問層(dao)。應(yīng)用層用于接收客戶端的請求和把相應(yīng)的頁面或者數(shù)據(jù)響應(yīng)給客戶端;業(yè)務(wù)邏輯層用于處理數(shù)據(jù),與數(shù)據(jù)庫聯(lián)動對數(shù)據(jù)進行增刪改查;數(shù)據(jù)訪問層為業(yè)務(wù)邏輯層提供訪問數(shù)據(jù)庫對數(shù)據(jù)進行操作的接口,執(zhí)行sql語句對數(shù)據(jù)庫進行操作[13]。這種分層結(jié)構(gòu)可以降低各層之間的依賴,降低程序之間的耦合度,有利于代碼的封裝、移植和提高代碼的執(zhí)行效率。服務(wù)器三層結(jié)構(gòu)具體內(nèi)容與相互關(guān)系如圖6所示。
圖6 服務(wù)器三層結(jié)構(gòu)圖
本系統(tǒng)采用的是MySQL 數(shù)據(jù)庫,設(shè)計了六個表格,分別是用戶表,教學(xué)文檔表,教學(xué)視頻表,公告圖片表,練習(xí)題庫表,反饋信息表。以用戶表為例,該表中有id、uuid、username、password、nickname、email、role、state、activecode、updatetime、documentseries 字段,其中uuid是用戶的唯一身份標(biāo)識,updatetime 為用戶注冊時間,documentseries 為教學(xué)文檔下載對文檔進行數(shù)字簽名時所使用的隨機序列S2。創(chuàng)建用戶表的關(guān)鍵代碼如下所示:
create table users (
id int primary key auto_increment,
uuid varchar(100);username varchar(40),
password varchar(100),nickname varchar(40),
email varchar(100),role varchar(100),
state int,activecode varchar(100),
updatetime timestamp,
documentseries varchar(100)
);
數(shù)據(jù)庫與服務(wù)器連接是使用c3p0.jar 與dbutils.jar兩個工具包,利用c3p0 將服務(wù)器與數(shù)據(jù)庫進行連接并獲取數(shù)據(jù)源,將獲取的數(shù)據(jù)源傳給dbutils工具包中的QueryRunner類創(chuàng)建QueryRunner的實例對象runner,runner調(diào)用update或query方法執(zhí)行sql語句即可對數(shù)據(jù)庫進行增刪改查操作。
iOS 移動客戶端主要模塊為注冊登錄、視頻學(xué)習(xí)、題目訓(xùn)練、文檔下載,相應(yīng)界面展示如圖7、圖8、圖9所示。
圖7 注冊、教學(xué)文檔列表與下載界面圖
圖8 視頻列表、視頻播放界面圖
圖9 分類訓(xùn)練列表、答題界面圖
在本文中,雖然只展示了部分界面效果圖,但在系統(tǒng)開發(fā)實際測試中,已經(jīng)對系統(tǒng)的所有功能進行測試。實際測試結(jié)果表明,本系統(tǒng)能夠流暢、長時間的穩(wěn)定運行,能夠滿足實際用戶需求,具有很大的實用價值。
本文設(shè)計了一種基于iOS的數(shù)學(xué)速算學(xué)習(xí)系統(tǒng),從安全性、易用性、內(nèi)容專一性、實用性角度出發(fā),對系統(tǒng)進行了完整的設(shè)計。本系統(tǒng)具有如下創(chuàng)新點:(1)系統(tǒng)內(nèi)容指向明確,內(nèi)容安全性、專一性、易用性強;(2)利用MD5 與隨機序列按特定規(guī)則相結(jié)合的加密方式對用戶密碼進行加密和對教學(xué)文檔進行數(shù)字簽名與校驗,有效防止用戶密碼泄露,確??蛻舳孙@示內(nèi)容的正確性與安全性;(3)在分類訓(xùn)練中,利用隨機出題的改進算法進行出題,有效解決了題目重復(fù)出現(xiàn)的問題,提升了用戶練習(xí)的完整性;(4)使用了郵箱注冊激活技術(shù),確保了系統(tǒng)用戶的真實性,并拓展了學(xué)習(xí)系統(tǒng)業(yè)務(wù)的推廣渠道。最后對系統(tǒng)進行了設(shè)計實現(xiàn)與測試,測試結(jié)果符合實際需要,能顯著提升用戶的速算運算能力,有較高的實用價值,并且對后續(xù)的學(xué)習(xí)系統(tǒng)開發(fā)有一定的參考意義。