王學(xué)梅
(山東華宇工學(xué)院,山東 德州 253034)
“C 語言程序設(shè)計”課程作為編程基礎(chǔ)課程,其編程思想及設(shè)計方法在整個計算機類相關(guān)專業(yè)中起著重要的鋪墊作用。由于課程課時少、入門較難,傳統(tǒng)的知識點傳授方式已無法滿足專業(yè)培養(yǎng)要求,更不能促進學(xué)生深度學(xué)習(xí)。為此,提出了將項目式教學(xué)方法引入教學(xué)實踐的思路。通過項目的實現(xiàn),將所授的知識點穿插到各個子項中,便于學(xué)生理解和掌握對應(yīng)的知識點,同時能夠很好地為后續(xù)的專業(yè)課程提供良好的基礎(chǔ)。項目選擇貼近學(xué)生實際的學(xué)生選課系統(tǒng),結(jié)合項目的實現(xiàn)流程,分解成各個子項目,最終完成相應(yīng)知識點的學(xué)習(xí),提升學(xué)生進行深度學(xué)習(xí)的能力。本項目實現(xiàn)過程較為細(xì)致,通過設(shè)計,可以培養(yǎng)學(xué)生的自主學(xué)習(xí)能力和團隊協(xié)作精神,同時能夠鍛煉學(xué)生堅強的意志力,培養(yǎng)攻堅克難的頑強精神。
對學(xué)生選課系統(tǒng)主要功能的分析,可以從角色設(shè)置以及各角色在系統(tǒng)中的功能進行簡單梳理:
(1)角色設(shè)置:包括學(xué)生、教師和管理員三個角色,不同的角色管理的功能有所不同。
(2)功能分析:通過主功能界面可以選擇相應(yīng)的角色,并進入不同的管理界面。其中,學(xué)生可以根據(jù)學(xué)號和密碼登錄系統(tǒng),登錄之后可以查詢課程的情況、目前可選的課程以及選課等基本情況;教師根據(jù)工號和密碼登錄系統(tǒng),登錄之后可以查看當(dāng)前課程的選擇情況、學(xué)生成績錄入等操作;管理員的功能最強大,通過admin 用戶名和密碼登錄,登錄成功后,能夠?qū)W(xué)生、教師、課程多個方面進行管理和統(tǒng)計,可以瀏覽、查詢、修改、統(tǒng)計選課的基本信息,并能添加、刪除和修改學(xué)生的信息。
學(xué)生選課系統(tǒng)項目分成多個子項目,根據(jù)項目實現(xiàn)將所涉及的知識點進行分解,本文以系統(tǒng)主界面設(shè)計模塊、功能選擇設(shè)計、課程信息數(shù)據(jù)分析、信息動態(tài)存儲、文件操作幾個模塊為例,展示部分實現(xiàn)過程進行說明。
結(jié)合C 程序的基本組成,使用基本的printf()輸出函數(shù)完成,通過該函數(shù)展示了學(xué)生選課系統(tǒng)的設(shè)計主界面。主要代碼為:
程序的控制結(jié)構(gòu)是指為解決某個問題,按照某種順序執(zhí)行的結(jié)構(gòu),主要分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。要實現(xiàn)學(xué)生選課系統(tǒng)的功能選擇設(shè)計的子項目,用于展示和選擇項目的各個子功能,需要應(yīng)用選擇結(jié)構(gòu)完成。
設(shè)計要求:在該系統(tǒng)完成首界面輸入后,開始通過終端進行功能選擇。
輸入1,進入管理員管理界面;輸入2,進入教師管理界面;輸入3,進入學(xué)生管理界面;其他情況,則退出該程序。運行效果如圖1所示。
圖1 功能選擇效果展示
在C 語言中,系統(tǒng)提供的基本數(shù)據(jù)類型有時候不能滿足用戶的實際需求,允許用戶根據(jù)需要定義數(shù)據(jù)類型,如:一個學(xué)生的信息中,可以包含學(xué)號、姓名、年齡、成績等信息,這就涉及字符串、整型、浮點型數(shù)據(jù)等多個不同類型的數(shù)據(jù),無法通過數(shù)組(每個數(shù)組元素的數(shù)據(jù)類型是相同的)結(jié)構(gòu)來實現(xiàn),這時用戶就可以自己定義一個數(shù)據(jù)類型,使得該種類型能夠包含多個復(fù)雜的數(shù)據(jù)。這種用戶自己定義的有不同數(shù)據(jù)類型組成的組合型數(shù)據(jù)結(jié)構(gòu),稱為結(jié)構(gòu)體類型。結(jié)構(gòu)體類型數(shù)據(jù)可以實現(xiàn)課程信息數(shù)據(jù)定義與引用。如:課程信息中包含課程編號、課程名稱、課程成績、教師姓名等信息。
實現(xiàn)課程信息的結(jié)構(gòu)體定義,代碼為:
代碼效果展示如圖2所示。
圖2 學(xué)生課程信息效果展示
在學(xué)生選課系統(tǒng)中,有很多需要存儲的信息,對于某些信息,因為在輸入前有好多信息不確定大小,為了能夠保證數(shù)據(jù)正常存儲,使用數(shù)組存儲的話,會定義足夠固定長度的數(shù)組。但是這樣的話,會浪費很大的內(nèi)存,為此,C 語言允許建立內(nèi)存動態(tài)分配方式,需要時隨時像系統(tǒng)申請開辟適當(dāng)?shù)目臻g,這就需要使用指針來解決。項目以課程信息的動態(tài)存儲為例,學(xué)習(xí)課程信息的動態(tài)存儲。
例如,通過指針和空間申請函數(shù)malloc,動態(tài)申請一塊連續(xù)的空間,用于存放一組學(xué)生數(shù)據(jù),其中學(xué)生數(shù)據(jù)包括:姓名、性別、年齡。代碼為:
同時,利用指針和鏈表完成動態(tài)信息存儲的基本操作,對比以上代碼分析,確定兩種方法的區(qū)別。
學(xué)生選課系統(tǒng)對于部分?jǐn)?shù)據(jù)內(nèi)容,需要及時地以文件形式存儲到本地,方便下次進入系統(tǒng)時的數(shù)據(jù)應(yīng)用,如課程信息和教師信息等內(nèi)容,在通過系統(tǒng)完成內(nèi)存分配,錄入相關(guān)內(nèi)容后,需要及時地將信息存儲到本地,這樣即使當(dāng)程序結(jié)束后,也不會因為內(nèi)存空間釋放而導(dǎo)致數(shù)據(jù)丟失。存儲到本地后,當(dāng)再次進入系統(tǒng)時,可以讀取本地的文件內(nèi)容,保持與程序前的數(shù)據(jù)相同。以存儲學(xué)生信息為例,要求通過鍵盤輸入5 個學(xué)生的信息(學(xué)生信息包含:學(xué)號、姓名、性別3 個信息),并將這些信息存儲在程序文件目錄下的stu.txt 文本文件中。
通過以上程序,利用指針與鏈表相關(guān)知識,將學(xué)生信息存儲到本地,方便下次使用時,直接打開文件讀取其中的數(shù)據(jù),保持?jǐn)?shù)據(jù)及時更新。
本文以學(xué)生選課系統(tǒng)項目的實現(xiàn)為例,分析了C 語言中各知識點在其中的應(yīng)用,能夠更好地幫助學(xué)生了解和掌握C 基礎(chǔ)知識,拓寬了學(xué)生的學(xué)習(xí)廣度,促進學(xué)生進行深度學(xué)習(xí),以項目式的實現(xiàn)過程,引導(dǎo)學(xué)生學(xué)習(xí)C 語言中的各個知識點。通過驗證,學(xué)生的學(xué)習(xí)效果較好。