鄭啟根 侯懿

摘?要:錯題本是學生的寶貴財富,同學們建立錯題本的初衷是能夠有效地整理錯題、適合反復翻閱、快速突破學習中的薄弱點。目前,智能手機的使用越來越普遍,本課題開發基于Android系統的手機APP智能錯題本。用戶可以利用手機版的智能錯題本掃描自己練習冊、試卷上的錯題,形成錯題集,錄入自己的解題方法及思路,根據用戶自己的掌握程度對錯題進行個性化的難度分類,還可以生成試卷,供用戶測試練習,相較于傳統手工書寫批注模式整理更方便、搜索更快捷、節約時間成本。
關鍵詞:Andriod;APP開發;錯題
中圖分類號:TN99文獻標識碼:A
1?項目背景
在中小學生的學習成長中,會遇到各類習題的錯誤,在經過老師的講解后,學生會做筆記,形成自己的錯題本。錯題本有助于同學們查找學習中的不足,快速突破重點難點。根據前期的中學生群體調查,在300+份有效回收的調查問卷中,842%的同學認為錯題本非常重要,75.5%的同學有自己的手寫錯題本,經常翻看的比例是66%。主要問題反應在傳統錯題本記錄量大,耗時費力,翻閱與查找不方便。從智能手機面世以來,各種應用程序層出不窮,教育類APP也占有其中的一席之地,有很多搜題、學習軟件,已成為學生學習的好幫手。據調差顯示經常使用學習類APP的學生占調查總人數的65.38%。
本著把手機用在學習上的思路,解決傳統錯題本耗時大檢索不便的缺點,本課題針對錯題的特性開發一款基于Andriod系統的智能錯題集。可利用碎片化時間隨時隨地錄入瀏覽,使智能手機成為真正的學習工具。
2?基于安卓系統的智能錯題本設計方案
2.1?智能錯題本功能需求調查結論
在課題開始階段進行智能錯題本的功能需求調查,收集手寫錯題本樣稿。確定手機錯題本開發思路為拍照錄入錯題及答案,用戶可以自由設定幾個層次的錯題標簽,如按題型、考察內容、難度等,便于檢索和分類,用戶可以在拍好的錯題及答案上進行各種個性化符號的標注,如加下劃線,波浪線,加★、√、、?、※等符號,可利用標簽方便進行錯題檢索,便于回顧,機型適配基于安卓的市場常見手機品牌如華為、小米、三星、OPPO、vivo、魅族、ZET、聯想、HTC等機型。
2.2?確定開發軟件
開發軟件選用Android?Studio。其優點是啟動和響應速度快,內存占用低、整合了Gradle構建工具,集合一些Ant和Maven的優點、具有強大的UI編輯器、安裝的時候就自帶了GitHub,CVN。其缺點是開發過程中占用開發電腦內存較大,同時升級頻繁,插件復雜,但相對于一些新出現的開發平臺,該開發軟件穩定性好,系統BUG少,因而選定該軟件作為開發平臺。
數據庫鑒于本次開發為單機版本,選擇SQLite,其有點是方便免費,安卓平臺自帶的數據庫,維護難度低,整個數據庫存儲在一個單個的文件中,數據導入導出備份恢復都是復制文件。
安全加固采用騰訊樂固使用方便,用戶量大,擁有專業加固策略,目前未使用其付費項目。
2.3?智能錯題本開發
2.3.1?程序簡介
智能錯題本用戶界面如下圖,以下主要分為三層:
(1)數據庫存儲層:使用SQLite作為數據承載載體,所有的錯題的存儲均放置于此層;
(2)技術支撐層:此層主要為業務層提供技術化組件的支撐,通過此層,業務層的操作可以順利的完成。此層主要提供安全算法處理、日志處理、存儲連接處理、外部網絡連接等處理。純技術化處理,不涉及到業務的處理方式;
(3)業務層:此層為核心層,用戶可見層次。主要提供包含科目的分類服務、錯誤的管理服務、考試的服務以及其他的一些外部服務等。
智能錯題本用戶界面
2.3.2?程序片段舉例
(1)裁剪圖圖片,對圖片進行編輯。
public?void?toCropPhoto(Uri?uri){
Intent?intent=new?Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri,"image/*");
intent.putExtra("crop","true");
intent.putExtra("aspectX",1);
intent.putExtra("aspectY",1);
intent.putExtra("outputX",1024);
intent.putExtra("outputY",1024);
intent.putExtra("scale",true);
intent.putExtra("return-data",false);
intent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection",true);//?no?face?detection
intent.putExtra(MediaStore.EXTRA_OUTPUT,FileIOUtil.img_uri);
acti.startActivityForResult(intent,Constant.REQ_CROP_PHOTO);