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