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