

摘要:在C語言程序設計教學過程中,發現學生對C程序中指針的學習和掌握比較困難,學習以后運用困難等問題,提出了在項目課程中應用文件指針和數組指針對文件和數組元素的訪問,解決學生學習之后應用困難和不會使用的困難,同時讓學生感知指針給程序執行帶來的高效性。讓學生切實獲得學習C語言程序設計課程的成就感,從而激發學生的學習興趣,提高學習效率。
關鍵詞:數組指針;文件指針;教學效果;項目設計
中圖分類號:TP399
文獻標識碼:A
文章編號:1009-3044(2019)36-0078-02
C語言程序設計作為計算機科學與技術、軟件工程等專業的專業基礎課程,該課程知識細節太多,表達形式多樣。內容看似簡單但要掌握本質內容很難,同時學生學習之后好像無用武之地,達不到學生心中預期的目的。有的學生在學習過程就逐步失去了興趣。為了激發學生的學習熱情,只好在教學過程中找一些趣味性的習題或項目課程供學生思考和編寫,通過編寫程序學生才知道分支結構、循環結構反復使用可以解決很復雜的問題,同時分支結構和循環結構的嵌套會帶來過多的邏輯性錯誤,有的學生碰到的問題太多而自己又沒有能力解決時也容易放棄學習。這個時候任課老師起到關鍵性的作用,一定要幫助學生渡過難關,激勵他們戰勝困難,還鼓勵他們不要局限于書本和參考答案,要有自己獨特的思維方式。哪怕自己開始寫的程序層次結構不太精煉也堅信自己想法的正確性。只要通過十個左右的項目課程獨立完成,學生一定能夠在程序設計或軟件開發中有較深的造詣。所以在教學過程中教師一定要抓住這個關鍵時期。當然這無形中給教師增加了額外的工作負擔,我認為這是值得的,我們的初衷就是為了學生成才,學生成才給我們帶來成就感和幸福感。那么怎么才能設計好基本符合學生要求的項目課程呢?項目課程過難打擊學生的積極性,過于簡單又不能激發學生的編程動力,只有在掌握學生的實際情況之后,從學生的實際出發去進行項目設計。設計項目課程應用遵循這三個原則:需求性原則[4];認知性原則[6];興趣性或實用性原則。文獻㈣中提出了新設計的項目課程體系既對原有課程體系不造成重大的顛覆,又能適應新工科建設所提出的培養面向未來工程人才的要求;文獻[2-3]提出了項目課程豐富了課堂教學的理論和實踐基礎,提升學生的專業能力和職業素養。本文旨在以學生成績管理系統項目課程為例,讓學生利用指針來進行項目課程的設計,從而通過項目課程的設計掌握C語言程序設計指針的目的。
1成績管理系統需求分析
以銅仁學院學生成績管理系統為例,分析成績管理系統中所需要的功能模塊:數據錄入、數據輸出、數據插入、數據刪除、數據修改、數據查找、數據統計、文件讀、文件寫九個模塊。文件讀/寫模塊需要用C語言的文件指針來實現,這是在沒有學習數據庫之前用C語言解決實際問題的唯一途徑,這是學生掌握文件指針最有效的辦法,通過對文件的使用免去之前程序設計平凡數據輸入的問題,讓學生知道使用文件給程序設計帶來很多方便,從而更加明確學習C語言文件的重要性。數據操作的七個模塊要平凡的對數組或者鏈表進行讀寫,若是鏈表存儲的話就直接使用指針訪問數據,這對學生利用指針編寫和掌握指針大有益處。若是用數組存儲數據,當然可能通過數組十下標的方式進行訪問數據,這樣編譯器就要平凡的計算數組每一個元素的地址,使程序的執行效率不高。設計該項目的目的就是要求學生用指針去訪問數組中元素,這樣編譯器就不會平凡的去計算數組元素的地址,從而提高程序的執行效率。
2教學案例平臺總體設計
2.1系統總體框架
經過對系統的需求分析,擬可以增加一個用戶登錄模塊,基本保證用戶數據的安全性。各模塊的系統結構示意圖如圖l所示。
2.2系統功能設計
用戶登錄主要是由用戶自己設置一個登錄賬號,保證數據的基本安全。數據錄入模塊就是用數組指針訪問數據元素,通過文件指針讀取文件而保存數據。數據輸出模塊是利用文件指針打開文件,再利用數組指針訪問數組元素。其他數據的插入、刪除、修改、查找,統計模塊都是同樣用指針去讀寫文件和訪問數組元素。文件的讀/寫模塊保證對數據的保存和打開。通過對文件指針的使用就保證了數據可保存在文件中,不會像以往編程那樣,每一次運行都要重新錄入數據,而且程序的運行效率特別低。使用指針保證程序執行高效率,滿足用戶的使用要求。
3成績管理系統功能的實現
3.1各功能模塊的實現
3.1.1數據類型的定義
struct CJB//定義CJB是一種新的數據類型
(
char xh[14];//定義學號
char xm[18];//定義姓名
char xb[6];//定義性別
float gsh,xsh,cyy,yy,zf,pjf.//定義高數、線數、C語言、英語、總分、平均分
//課程是根據實際情況而定,這里只舉例
};
struct CJGLXT//抽象數據類型的定義
{
//數據
intLength;//記錄管理系統中數據的個數
int realsize;//記錄數組的長度
CJB *data;//該指針用來存放系統中數據的起地址,也就是存放數組的起地址
//功能函數
void init0;
//預處理,主要是給變量賦初值和分配初始空間
void datainsert(); //插人數據
void datadelete(); //刪除數據
void dataprint0; //輸出數據
void datamodify(); //修改數據
void dataseek(); //查找數據
void datasort(); //數據排序
//輔助函數
void user();
//用戶登錄
void datasave(); //保存數據
void dataopen0; //打開數據
void createfile0; //創建文件
);
3.1.2功能模塊的實現
由于實現各功能模塊的代碼很多,由篇幅有限,這里只列舉學生實現的數據刪除模塊的代碼。
void CJGLXT::datadelete()
{
dataprint();
inti,j;
printf'(”請輸入要刪除數據的序號:”);
scanf'(”okd”,&i);
if(i>=0&&i
(for(j =i;j
Length-;
printf'(”數據刪除成功,請保存數據:/n);
datasave();
}
else printf'(”你輸入的序號不正確,不能做刪除操作,謝謝你的使用\n”);
}
3.2軟件的測試
由于測試的功能模塊較多這里只對輸出模塊進行測試,學生已經對每一個功能模塊進行測試,輸出模塊的測試結果如圖
2所示。
4結束語
通過對成績管理系統的設計與實現,對C語言課程中的數組、函數、指針、結構體、文件等幾乎所有的內容都包含在其中,特別是學生對指針的使用有了較為深刻的理解,學生的編程能力得到了很大的提升,懂得利用C語言解決實際問題的方法和途徑、明白學習C語言程序設計也可以解決實際問題。通過對成績管理系統的實現,學生可以用類似的方法進行其他應用程序的開發與學習,從而培養學生的學習興趣,讓學生在學習中找到快樂和成就感,這是教育的需求,也是對人才培養的需求。對C語言項目課程來講,這個項目是屬于綜合性比較強的,真對于每個章節,教師可以根據學生的實際設計較為合理的項目課程。不要讓學生的學習枯燥乏味。
參考文獻:
[1]徐利梅,謝曉梅,陳彥,等.新工科專業課程體系重構:從新生項目課程到高峰體驗項目課程[J].高等工程教育研究,2019(4):33-39.
[2]任曉靜.高職項目課程教學內容設計研究[J].中國校外教育,2019(18):160.
[3]趙海濤,李森萍,呂志剛,等.基于教學過程對接生產過程的施工技術項目課程教學創新與實踐[J].高等建筑教育,2019,28(4):90-98.
[4]趙建中,鄧全明.培養創業型人才需彰顯人文需求原則[J].淮北職業技術學院學報,2010,9(1):94-95.
[5]李人晴.淺談項目課程的教學效果評價體系的構建[J].高教學刊,2019(1):63-65.
[6]魏婧婧.信息設計中的認知原則[J].大眾文藝,2016(22):54.
[7]課浩強.C語言程序設計[M].3版.北京:清華大學出版社, 2012:20-150.
[8]嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,2012:12-180.
【通聯編輯:王力】
收稿日期:2019-09-28
作者簡介:王軍(1967-),男(土家族),貴州德江人,副教授,大學本科,研究方向為算法設計與分析、數據挖掘等。