

摘 ?要:很多高職院校都開設有“Java面向對象程序設計”和編程類課程,通過問卷調查了解學生學習基礎與習慣,調研企業,結合建構主義、最近發展區理論,內化提煉知識目標、能力目標、素質目標,以項目驅動形式,設計生活化案例,融入課程知識點,結合實事熱點和新技術應用,用Java進行疫情大數據分析,激發學生的學習熱情,幫助學生積累項目經驗。通過實際教學過程對教學設計進行檢驗,通過反思繼續提升教學效果。
關鍵詞:Java;任務驅動;大數據;建構主義;最近發展區
中圖分類號:TP312 ? ? ?文獻標識碼:A 文章編號:2096-4706(2020)13-0068-03
Abstract:Many higher vocational colleges have set up “Java Object-oriented Programming” and programming courses. Through questionnaire survey,studentslearning foundation and habits are understood,and enterprises are investigated. Combined with constructivism and the theory of zone of proximal development,knowledge objectives,ability objectives and quality objectives are internalized and refined. In the form of project driven,life oriented cases are designed,curriculum knowledge points are integrated,and combining practical hot spot and new technology application,using Java for epidemic big data analysis,stimulating studentslearning enthusiasm and helping them accumulate project experience. Through the actual teaching process to test the teaching design,through reflection to continue to improve the teaching effect.
Keywords:Java;task driven;big data;constructivism;zone of proximal development
0 ?引 ?言
筆者從事計算機軟件技術專業教學多年,在程序設計類課程教學中,將21點游戲、雙色球彩票、微信發紅包、英雄聯盟游戲等項目案例引入,學生對這些生活化案例表現出極大的興趣,激發了學習潛力。
基于湖北職業技術學院信息技術學院,軟件技術專業省級品牌專業建設,推動教學內涵式發展,“以綜合素質為目標、以崗位需求為導向、以工作過程為主線”的線上線下混合式教學,合理運用不同的教學方法與手段,利用工學結合特點,教師為項目經理,學生為程序員,向準職業人轉變,教室和機房理實一體,圍繞認識、探索、運用、設計、評價等環節開展教學設計,將“Java面向對象程序設計”課程知識與能力目標,有機融入項目教學,最終提升教學質量,促進學生高質量就業。
1 ?設計過程
1.1 ?數據分析
根據學生問卷數據分析,93.8%的學生喜歡編程,不喜歡“一言堂”和“死板”的編程案例;根據企業問卷數據分析,Java程序員崗位需要掌握的知識,分解到“Java面向對象程序設計”這門課程,要求學生必須掌握類和對象、方法、重載、重寫、封裝、繼承、接口、集合、反射、JDBC、文件流等Java知識,能熟練運用這些知識解決編程中的實際問題;還需要掌握數據庫增、刪、改、查的知識,能熟練編碼解決數據訪問需求。
1.2 ?知識與技能目標構建
依據教育部高等職業學校軟件技術專業教學標準,軟件技術專業人才培養方案,基于Java程序員崗位工作過程,結合大數據應用開發(Java)職業技能“1+X”證書,采用以“逆向工程式”為開發過程的課程內容處理思路,按照知識、能力、素質三方面構建Java實踐教學內容。
結合當前新冠疫情,各地衛健委每天都在官網及時公布疫情相關數據,我們需要將疫情數據網頁保存成TXT文件;通過Java文件流操作,讀取文件為字符串;通過Java提供的API接口,對字符串進行分析、加工處理,重復分割成一條條疫情信息數據,然后存儲到數據庫中。
整個過程,可以分為信息的獲取、分析、處理與存儲共四個環節。在這些過程中,需要用到類和對象、方法、重載、重寫、封裝、繼承、接口、集合、反射、JDBC、文件流等知識。
后期可利用數據庫DML語言,按照不同的需求,對數據進行分析操作,而這些都是數據庫課程核心知識與能力目標。
1.3 ?實踐課學時安排
整個項目教學實施共計8學時,由教師用2學時講解項目需求與整體設計思路,學生在課后查閱資料,試著進行項目設計;2學時講解疫情數據實體類、設計數據庫、數據庫操作類;2學時講解數據的分析與加工處理;2學時講解測試類,實現項目主要功能的整合和測試。
2 ?教學實施
2.1 ?需求分析
各大網站都有官方發布的疫情數據,用文件流方式將我們所需要的疫情數據進行爬取,然后對數據進行預處理,之后將這些數據存儲到數據庫中。
2.2 ?項目設計
各大網站都以網頁形式公布數據,不同網站源代碼不盡相同,但都是將一條條數據通過同一個類選擇器進行修飾與展現。為了簡化操作過程,這里先手動將一條條重復數據保存到.txt文件。
讀取文件并生成一個長的字符串,將字符串按照特定格式進行分割,得到一條條疫情數據。每條疫情數據包含地區碼、地區名、新增數、確診總數、治愈數、死亡數等信息,將每條疫情數據通過疫情對象承載,添加到泛型對象集合并排序;最后遍歷泛型集合中的對象,將數據逐條添加進數據庫,后面就可隨時對數據進行查詢與分析,項目處理流程如圖1所示。
2.3 ?功能模塊劃分
整個項目文件包、類文件結構如圖2所示。
(1)疫情監控數據Info實體類:一條疫情數據包含疫情發生的區域代碼、區域名、新增確診人數、確診總人數、治愈人數、死亡人數等信息,為增強數據安全性,將所有字段訪問屬性設置為privat,然后對各字段進行get和set方法封裝。
private int infoId;//地區ID
private String infoLocation;//地區名
private int infoAdd;//新增確診人數
private int infoTotal;//確診總人數
private int infoCure;//治愈人數
private int infoDie;//死亡人數
(2)InfoDao類:本類主要用來對Info實體類數據進行操作,包含對info實體對象數據添加進數據庫,然后進行修改、刪除、查詢等操作。
public int addInfo(Info info)//將Info對象的信息存入數據庫中。
public int deleteInfo(int infoId)//根據infoId刪除數據。
public int updateInfo(int infoId,Info info)//根據infoId修改數據。
public Info getInfoById(int infoId)//根據infoId查詢數據。
public List
(3)IoUti類:本類包含一個字符串類型的字段,用于存放數據文件路徑,還有一個數據文件讀取的方法。
private final String fileUrl ? ?//txt文件路徑。
public String readFile()//讀取疫情數據txt文件。
(4)InfoUtil類:讀取的數據文件中可能會有一些空格、換行標記、制表符等無效數據,需要對這些數據進行剔除、轉換為合適的分隔符等預處理。
public String preString(String s, String oldString, String newString)//字符串替換。
public List
public List
(5)InfoUtilTest類:InfoUtil的測試類,對讀取的數據進行預處理。
public void testPreString()//添加預處理數據測試。
public void testStringToInfo()//添加特定格式數據測試。
public void testSortList()//集合數據添加測試。
2.4 ?項目編碼
(1)讀取數據,將數據存儲到緩沖區,以備后續處理。
public String readFile() {
BufferedReader bufferedReader = null;
StringBuffer stringBuffer = new StringBuffer("");
char [] c = new char[16];
bufferedReader = new BufferedReader(new FileReader (fileUrl));
int len = 0;
while ((len = bufferedReader.read(c)) != -1) {
stringBuffer.append(new String(c, 0, len)); } //追加字符串
return stringBuffer.toString();}
(2)字符串預處理,對字符串進行拆解,提取出地區碼、地區名、新增確診人數、確診總人數、治愈人數、死亡人數等,然后賦值給疫情數據對象,將對象存儲進List集合。
public String preString(String s, String oldString, String newString) {
return s.replaceAll(oldString, newString); } //字符串替換
public List
List
String[] infoStrings = s.split(";");//按照";"拆分字符串,轉換為數組
for (String infoString : infoStrings) { String[] props = infoString.split(",");
Info info = new Info();//開始組裝info對象的屬性
info.setInfoId(Integer.parseInt(props[0]));
info.setInfoLocation(props[1]);
info.setInfoAdd(Integer.parseInt(props[2]));
info.setInfoTotal(Integer.parseInt(props[3]));
info.setInfoCure(Integer.parseInt(props[4]));
info.setInfoDie(Integer.parseInt(props[5]));
infoList.add(info); } //將當前info對象添加到集合中
return infoList; } //返回集合
public List
Collections.sort(infoList, c); ? ?return infoList; ?}
(3)添加數據測試,為檢驗項目代碼是否成功實現其功能,編寫此類,通過多種數據來源測試程序功能是否實現。
public void testPreString() {
assertEquals(new InfoUtil().preString("AB-C-D", "-", "0"), "AB0C0D"); ? ?}
public void testStringToInfo() {
assertEquals(new InfoUtil().stringToInfo("6,孝南,0,29,10, 0;7,孝昌區,0,19,1,0;").size(),2);}
public void testSortList() {
List
infoList.add(new Info(1, "L1", 3, 40, 0, 0));
infoList.add(new Info(2, "L2", 1, 40, 0, 0));
infoList.add(new Info(3, "L3", 2, 40, 0, 0));
infoList = new InfoUtil().sortList(infoList, new Info Comparator());
assertTrue(infoList.get(0).getInfoId() == 2&&infoList.get(2).getInfoId() == 1);}
3 ?結 ?論
結合程序員崗位需求、人才培養方案、課程教學大綱,將知識目標、能力目標,內化為項目技能點。近幾年來,筆者將21點撲克牌游戲,雙色球彩票,英雄聯盟游戲,發紅包游戲等多個學生感興趣的案例引入程序設計類課程教學。
總體來講,情景化、項目教學,實現了學生專業和個性共同發展,對提升學生對知識的運用能力、激發學生的創新能力都有很大的幫助。以任務為驅動、案例為載體,結合時代熱點需求,通過合作探究,主動建構知識,解決生活中的實際問題,切實激發學生內在的學習興趣,提升編程能力,實現工學結合、知行合一。
參考文獻:
[1] 彭夢,謝雅.興趣驅動的Java程序設計課程教學改革研究 [J].計算機教育,2019(11):116-120.
[2] 張良杰.應用智慧課堂的《Java程序設計》教改研究 [J].輕工科技,2020,36(6):195-197.
[3] 賈家新.JAVA框架技術的線上教學實踐 [J].集成電路應用,2020,37(6):84-85.
[4] 笪林梅.“Java程序設計”課程小班化教學模式改革探索 [J].知識經濟,2020(16):179-180.
[5] 鄧田.大數據背景下基于OBE的微課教學改革研究與實踐——以《Java程序設計》課程為例 [J].農家參謀,2020(15):193.
[6] 李勝嵐,楊裴裴.高校Java課程教學改革研究 [J].計算機產品與流通,2019(10):190+206.
[7] 紀輝進.用C語言編寫英雄聯盟游戲 [J].現代信息科技,2020,4(5):69-71.
[8] 紀輝進.“C語言程序設計”教學案例分析——以發紅包程序算法的實現為例 [J].現代信息科技,2020,4(4):95-96+99.
[9] 紀輝進.用C#語言實現雙色球程序 [J].現代信息科技,2020,4(3):92-93+96.
[10] 紀輝進.C#WINFORM教學案例——五子棋 [J].科技視界,2017(19):138-139.
作者簡介:紀輝進(1977—),男,漢族,湖北黃陂人,教師,講師,本科,主要研究方向:編程語言教學。