公務(wù)員期刊網(wǎng) 論文中心 正文

非計(jì)算機(jī)專業(yè)Qt程序設(shè)計(jì)教學(xué)探索

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了非計(jì)算機(jī)專業(yè)Qt程序設(shè)計(jì)教學(xué)探索范文,希望能給你帶來靈感和參考,敬請閱讀。

非計(jì)算機(jī)專業(yè)Qt程序設(shè)計(jì)教學(xué)探索

摘要:針對高校非計(jì)算機(jī)專業(yè)C/C++教學(xué)的不足,分析開設(shè)qt程序設(shè)計(jì)課程的重要意義,提出以實(shí)驗(yàn)為基礎(chǔ)、以項(xiàng)目為導(dǎo)向的Qt程序設(shè)計(jì)課程教學(xué)方案,結(jié)合西安交通大學(xué)的實(shí)踐說明Qt程序設(shè)計(jì)課程的教學(xué)效果。

關(guān)鍵詞:非計(jì)算機(jī)專業(yè);Qt程序設(shè)計(jì)課程;案例教學(xué);大作業(yè)

0引言

目前,在高校面向非計(jì)算機(jī)專業(yè)的程序設(shè)計(jì)入門課程中,相當(dāng)一部分學(xué)校講授C/C++語言。由于C/C++語言標(biāo)準(zhǔn)中不包括圖形界面等高級編程內(nèi)容,導(dǎo)致學(xué)生學(xué)習(xí)了該課程之后,僅能編寫控制臺窗口的命令行程序。這在很大程度上限制了學(xué)生利用C/C++編程解決問題的能力。Qt是基于C++的跨平臺開發(fā)框架,更確切地說,Qt是一個(gè)龐大的C++類庫。它出現(xiàn)于20世紀(jì)90年代,最初主要用于圖形界面開發(fā)。經(jīng)過多年發(fā)展,Qt已經(jīng)成為幾乎全能的開發(fā)框架,除了圖形界面開發(fā),在數(shù)據(jù)庫、網(wǎng)絡(luò)、多媒體、嵌入式軟件開發(fā)等方面也常常見到Qt的身影。近年來,隨著嵌入式技術(shù)的廣泛應(yīng)用,Qt作為Linux和嵌入式開發(fā)的重要工具受到了前所未有的關(guān)注。Qt框架設(shè)計(jì)優(yōu)雅、功能強(qiáng)大、易于學(xué)習(xí)和使用,還兼容Windows、Linux、Mac等主流操作系統(tǒng),這些優(yōu)點(diǎn)使它成為C++語言后續(xù)課程的理想教學(xué)內(nèi)容。目前各高校在Qt教學(xué)方面所做的工作并不多。文獻(xiàn)[1]提出將多維互動模式用于Qt教學(xué);文獻(xiàn)[2]提出在Qt教學(xué)中使用項(xiàng)目分解與整合的策略;文獻(xiàn)[3]提出在面向嵌入式開發(fā)的Qt教學(xué)中采用邊講邊練的教學(xué)模式。西安交通大學(xué)的Qt教學(xué)強(qiáng)化實(shí)驗(yàn)教學(xué),引入課程大作業(yè)以提升學(xué)生的實(shí)踐能力,實(shí)行多元化考核,進(jìn)一步保證教學(xué)效果。

1開設(shè)Qt程序設(shè)計(jì)課程的意義

對非計(jì)算機(jī)專業(yè)的學(xué)生而言,在學(xué)習(xí)了C/C++語言基礎(chǔ)之后,進(jìn)一步學(xué)習(xí)一些Qt程序設(shè)計(jì)的知識,可以補(bǔ)充編程語言學(xué)習(xí)的短板,理解消息機(jī)制和事件處理的概念,并深刻體會面向?qū)ο缶幊谭椒ǖ膹?qiáng)大。

1.1補(bǔ)足C/C++語言教學(xué)短板

人們將圖形界面和圖形圖像兩方面的編程技術(shù)統(tǒng)稱圖形化編程。在C#、VB.NET、Java等語言中,圖形化編程都是重要組成部分,而C/C++語言標(biāo)準(zhǔn)中卻不包含這部分內(nèi)容,不能不說是一種遺憾。開展Qt編程教學(xué)恰好可補(bǔ)充這方面的不足。事實(shí)上,Qt最強(qiáng)大、最完善的模塊就是圖形化編程模塊,使用Qt開發(fā)界面的重要軟件包括KDE(Linux窗體系統(tǒng))、Maya(三維動畫)、WPS(辦公套件)、Skype(即時(shí)通訊)等。

1.2理解窗體編程重要概念

窗口系統(tǒng)及窗體應(yīng)用軟件的運(yùn)行依賴于消息機(jī)制和事件處理,這個(gè)概念在基礎(chǔ)C/C++教學(xué)中無法涉及。Qt系統(tǒng)有完善的事件處理機(jī)制,還有其專有的信號/槽通信機(jī)制,通過學(xué)習(xí)這些內(nèi)容,可以很好地理解窗口系統(tǒng)的運(yùn)行原理,進(jìn)而理解消息循環(huán)在操作系統(tǒng)中的重要作用。

1.3深刻體會面向?qū)ο蠓椒ǖ淖饔?/p>

圖形界面編程是C++最成功的領(lǐng)域之一,而Qt的圖形界面類庫更是這方面的優(yōu)秀代表。學(xué)習(xí)Qt的圖形化編程,了解各種控件類的繼承關(guān)系及其成員函數(shù)的實(shí)現(xiàn)和重載,可以讓學(xué)生深刻理解封裝、繼承、多態(tài)等面向?qū)ο蟮母拍?,體會面向?qū)ο缶幊谭椒◣淼木薮蟊憷?/p>

2優(yōu)化Qt程序設(shè)計(jì)課程教學(xué)方案

Qt課程講授C++的高級編程技術(shù),一般要求學(xué)生有一定的C++語言基礎(chǔ)。如果學(xué)生有較好的C語言基礎(chǔ),那么可以在后續(xù)課程中先用少量課時(shí)講解C++語言面向?qū)ο蟮母拍?,然后再講授Qt編程的內(nèi)容。將C++全部的基礎(chǔ)知識和Qt編程技術(shù)放到一門課中講授是難以完成的任務(wù),原因是內(nèi)容過多。西安交通大學(xué)的教學(xué)方案主要通過優(yōu)化教學(xué)內(nèi)容、加強(qiáng)實(shí)踐訓(xùn)練、改善考核方法3個(gè)方面的改革提升學(xué)生開發(fā)軟件的能力.

2.1制訂合適的教學(xué)內(nèi)容

Qt編程技術(shù)的內(nèi)容十分廣泛,難以在一門課程中全部講授,因此可將Qt編程技術(shù)總體上劃分為兩部分:一部分是核心教學(xué)內(nèi)容,包括圖形界面編程、圖形圖像編程、樣式表應(yīng)用;另一部分是靈活設(shè)置內(nèi)容,包括算法設(shè)計(jì)、數(shù)據(jù)庫、網(wǎng)絡(luò)、嵌入式等方面的編程內(nèi)容。核心教學(xué)內(nèi)容是基礎(chǔ),是必選的教學(xué)內(nèi)容;而靈活設(shè)置內(nèi)容則是選擇性的模塊,可根據(jù)面向?qū)ο蟮牟煌?、專業(yè)需求的差異,選擇適當(dāng)?shù)哪K作為教學(xué)內(nèi)容。在核心教學(xué)內(nèi)容中,建議把圖形界面、圖形圖像編程作為最基礎(chǔ)的內(nèi)容。掌握了圖形化編程的知識,就具備了開發(fā)窗體應(yīng)用的基本能力,也為學(xué)習(xí)其他編程技術(shù)打下基礎(chǔ)。另外,可以將界面描述式編程工具——Qt樣式表放入核心內(nèi)容。樣式表是Qt的特色,它通過QSS腳本語言描述窗體組件的顏色、形狀、行為模式等屬性,極大地方便了界面的美化工作。QSS腳本實(shí)質(zhì)上就是CSS腳本功能的子集,學(xué)習(xí)和使用都相當(dāng)容易。在靈活設(shè)置的教學(xué)內(nèi)容中,建議選擇具有廣泛應(yīng)用價(jià)值的算法設(shè)計(jì)模塊。算法當(dāng)中比較簡單的查找、排序、遞推等這類內(nèi)容在學(xué)習(xí)基礎(chǔ)語言的時(shí)候就講解過,因此可以補(bǔ)充數(shù)據(jù)結(jié)構(gòu)相關(guān)算法。從實(shí)用角度出發(fā),對于這些非計(jì)算機(jī)專業(yè)的學(xué)生,沒有必要深入講解數(shù)據(jù)結(jié)構(gòu)本身的實(shí)現(xiàn)方法,而應(yīng)在介紹基本概念的基礎(chǔ)上,講解利用Qt的集合類解決問題的方法。Qt集合類與STL容器類很相似,包含向量、鏈表、棧、隊(duì)列等結(jié)構(gòu),是有力的開發(fā)工具。

2.2強(qiáng)化實(shí)驗(yàn)和工程訓(xùn)練

與純理論課程不同,任何一門程序設(shè)計(jì)課程都需要足夠的上機(jī)練習(xí),Qt程序設(shè)計(jì)也不例外。為了達(dá)到更好的教學(xué)效果,可以將實(shí)踐環(huán)節(jié)分成3個(gè)層次:基礎(chǔ)實(shí)驗(yàn)、項(xiàng)目重建和修改、課程大作業(yè)。基礎(chǔ)實(shí)驗(yàn)是課程學(xué)習(xí)的基本內(nèi)容,主要在課程本身的實(shí)驗(yàn)學(xué)時(shí)內(nèi)完成。這些實(shí)驗(yàn)涉及信號/槽、窗體控件、對話框、窗體布局、事件系統(tǒng)、二維繪圖等方面的編程。Qt擁有功能強(qiáng)大的集成開發(fā)工具QtCreator,其可視化窗體構(gòu)建能力不遜于微軟的VisualStudio開發(fā)工具。雖然不少基礎(chǔ)實(shí)驗(yàn)都可以在QtCreator中以可視化操作的方式完成,但對于初學(xué)者,仍應(yīng)堅(jiān)持先學(xué)會用代碼實(shí)現(xiàn),再用QtCreator工具實(shí)現(xiàn),這樣學(xué)生對程序的理解更徹底。項(xiàng)目重建和修改是讓學(xué)生首先參考教師的樣例程序?qū)崿F(xiàn)一個(gè)大致相同的項(xiàng)目,然后對其中的部分內(nèi)容進(jìn)行修改或擴(kuò)充,實(shí)現(xiàn)一些新的功能。這類實(shí)驗(yàn)由每個(gè)學(xué)生獨(dú)立完成,難度中等。實(shí)驗(yàn)采用課堂講解、課后實(shí)現(xiàn)、實(shí)驗(yàn)課答疑的模式完成。通過這些實(shí)驗(yàn),學(xué)生可以了解一個(gè)小型軟件設(shè)計(jì)、編碼、調(diào)試、完善的整個(gè)過程。課程大作業(yè)是以綜合訓(xùn)練為主的實(shí)踐環(huán)節(jié),一般3~4人一組,完成一個(gè)小型軟件項(xiàng)目。和項(xiàng)目重建實(shí)驗(yàn)不同,大作業(yè)沒有教師提供的軟件原型。每個(gè)小組都要完成選題、方案設(shè)計(jì)、編碼實(shí)現(xiàn)、測試和改善的開發(fā)流程。選題類型由教師制訂,比如實(shí)驗(yàn)?zāi)M類、小型游戲類、算法演示類等。大作業(yè)的具體內(nèi)容由學(xué)生在上述幾個(gè)選題類型中自行確定,一般在課程進(jìn)展到一半時(shí)大作業(yè)題目就要確定。每個(gè)小組的人員及項(xiàng)目一旦確定并上報(bào)后,就不宜輕易改變。通過課程大作業(yè)的訓(xùn)練,可以在很大程度上提升學(xué)生的軟件開發(fā)能力。

2.3改進(jìn)課程考核方法

程序設(shè)計(jì)課程的考核方式一般是平時(shí)成績和期末考試的加權(quán)平均,其中期末考試一般都是上機(jī)考試。由于Qt程序設(shè)計(jì)課程教學(xué)環(huán)節(jié)的多樣性,建議為該課程設(shè)置多元化的考核方式,采用平時(shí)表現(xiàn)、期中考試、大作業(yè)考核、期末考試的綜合考核方式。平時(shí)表現(xiàn)包括出勤率、隨堂作業(yè)、基礎(chǔ)實(shí)驗(yàn)和項(xiàng)目重建實(shí)驗(yàn)的考查,這些考查主要用于督促學(xué)生的日常學(xué)習(xí)。期中考試采用閉卷形式的上機(jī)考試,以若干微型編程題目為主,題目可以是前半學(xué)期實(shí)驗(yàn)和作業(yè)內(nèi)容的改版。課程大作業(yè)以小組為單位完成,最后由組長通過PPT的形式向全體師生匯報(bào)。由學(xué)生網(wǎng)絡(luò)評分和教師評分綜合評出每個(gè)小組的得分,再由教師根據(jù)組員表現(xiàn)和每個(gè)組員背對背的貢獻(xiàn)率自評得出每個(gè)學(xué)生的大作業(yè)分?jǐn)?shù)。學(xué)生評分過程可借助網(wǎng)絡(luò)系統(tǒng)快速完成。期末考試采用開卷形式的上機(jī)考試,題目為兩道綜合型的編程題,主要考查學(xué)生的綜合編程能力??傊?,本課程的目標(biāo)是使學(xué)生具備一定的圖形化編程以及算法設(shè)計(jì)的能力,所有考核環(huán)節(jié)都應(yīng)體現(xiàn)這一目標(biāo)。

3Qt程序設(shè)計(jì)課程的教學(xué)效果

在西安交大新一輪培養(yǎng)方案修訂過程中,機(jī)械學(xué)院部分專業(yè)要求修改可視化程序設(shè)計(jì)課程的教學(xué)內(nèi)容。該課程原來是以VC++的MFC圖形化編程為主要教學(xué)內(nèi)容。隨著微軟公司的技術(shù)重心轉(zhuǎn)向.NET,C#、VB.NET成為微軟公司主推的編程語言,MFC類庫的更新十分緩慢,且基于MFC的編程技術(shù)含有大量C語言的編程模式(比如宏定義等),編程難度較高。由于以上原因,非常有必要對該課程進(jìn)行大刀闊斧的改革。經(jīng)過認(rèn)真調(diào)研,開課單位決定將Qt編程技術(shù)作為該課程的教學(xué)內(nèi)容。經(jīng)過3年實(shí)踐,取得了較好的教學(xué)效果,改革所帶來的教學(xué)質(zhì)量提升總體上可歸納為以下3點(diǎn)。1)提高學(xué)生編寫程序的效率。與MFC不同,Qt是純粹的面向?qū)ο箝_發(fā)框架,學(xué)習(xí)和使用更加容易。例如編寫一個(gè)簡單的賽車游戲,涉及圖形、位圖、文字、算法以及事件方面的編程,一般情況下學(xué)生用MFC實(shí)現(xiàn)該游戲的時(shí)間接近兩個(gè)小時(shí),而使用Qt實(shí)現(xiàn)只需要不到一小時(shí)。2)加強(qiáng)學(xué)生軟件模塊化設(shè)計(jì)及算法設(shè)計(jì)能力。從軟件的框架結(jié)構(gòu)上看,Qt程序比MFC程序更清晰易懂,且Qt的信號/槽通信機(jī)制也較為簡單易用。從學(xué)生上機(jī)實(shí)驗(yàn)的結(jié)果看,利用Qt編程,學(xué)生更容易寫出模塊結(jié)構(gòu)合理、算法清晰的程序,編寫程序時(shí)產(chǎn)生的錯(cuò)誤也更少。3)培養(yǎng)學(xué)生對于Qt編程技術(shù)的興趣。以前學(xué)習(xí)MFC編程時(shí),很多學(xué)生對復(fù)雜難懂的MFC程序框架深感畏懼,而學(xué)習(xí)Qt編程的學(xué)生多數(shù)認(rèn)為Qt程序并不是很難理解。同時(shí),配合QSS腳本可以很容易作出類似360安全衛(wèi)士、騰訊電腦管家那樣漂亮的圖形界面,感覺挺有成就感。本課程的配套教材《Qt圖形界面編程入門》由清華大學(xué)出版社出版之后,也得到了一些兄弟院校的關(guān)注,被選作對方院校相關(guān)課程的教材。

4結(jié)語

對于非計(jì)算機(jī)專業(yè)而言,很多學(xué)生希望能夠編寫小型的窗口界面程序解決學(xué)習(xí)工作中的一些問題,但如果僅僅學(xué)習(xí)了C/C++語言,這種愿望難以實(shí)現(xiàn)。根據(jù)實(shí)踐經(jīng)驗(yàn),在非計(jì)算機(jī)專業(yè)開設(shè)Qt程序設(shè)計(jì)課程作為C/C++的后續(xù)課程,能夠較快提升學(xué)生的編程能力,滿足學(xué)生開發(fā)圖形化程序的愿望。在教學(xué)實(shí)踐中,以實(shí)驗(yàn)為基礎(chǔ)、以項(xiàng)目為導(dǎo)向,實(shí)行多元化考核,可以取得良好的效果。

參考文獻(xiàn):

[1]吳粉俠,李紅.多維互動式教學(xué)模式在Qt程序設(shè)計(jì)教學(xué)中的探索與實(shí)踐[J].決策探索,2017(11):55-56.

[2]王繼敏.基于項(xiàng)目分解與整合的Qt編程教學(xué)改革探索[J].河南科技學(xué)院學(xué)報(bào),2013(12):111-113.

[3]許豪,胡吉興.《嵌入式GUI應(yīng)用程序開發(fā)》教學(xué)改革實(shí)踐與探索[J].科技與創(chuàng)新,2014(21):131-133.

作者:仇國巍 趙英良 衛(wèi)顏俊 桂小林 單位:西安交通大學(xué)電子與信息工程學(xué)院