王耀飛
(內(nèi)蒙古財(cái)經(jīng)大學(xué),呼和浩特 010070)
《C++程序設(shè)計(jì)》是在《C 語言程序設(shè)計(jì)》課程的基礎(chǔ)上,增加了封裝、繼承、多態(tài)等特性的計(jì)算機(jī)類學(xué)生的專業(yè)基礎(chǔ)課,旨在培養(yǎng)學(xué)生在程序設(shè)計(jì)過程中的面向?qū)ο笏季S。《C++程序設(shè)計(jì)》課程歸根結(jié)底是一門計(jì)算機(jī)編程語言課程,語言學(xué)習(xí)的優(yōu)劣取決于是否經(jīng)過大量的實(shí)踐。現(xiàn)有的課程教材中雖有一部分應(yīng)用實(shí)例[1-2],但大多缺乏應(yīng)用場景,且代碼規(guī)模不足以滿足輔助課程學(xué)習(xí)的程度,學(xué)生難以在小規(guī)模代碼中認(rèn)識到面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)勢。因此,項(xiàng)目式教學(xué)在《C++程序設(shè)計(jì)》課程[3]中的應(yīng)用有重要意義。
項(xiàng)目式教學(xué)是利用設(shè)計(jì)好的涵蓋豐富知識點(diǎn)的教學(xué)項(xiàng)目庫,分配給學(xué)生組隊(duì)完成,在完成項(xiàng)目的過程中充分理解所學(xué)理論知識,提高團(tuán)隊(duì)合作能力。項(xiàng)目式教學(xué)[4]適用于《C++程序設(shè)計(jì)》的教學(xué)過程有其天然優(yōu)勢。具體表現(xiàn)在:
(1)適用性。C++語言抽象、封裝、繼承和多態(tài)等特征,需要通過完成某個(gè)具體的中小型項(xiàng)目,才能體會到這種面向?qū)ο笳Z言的獨(dú)特優(yōu)勢,項(xiàng)目式教學(xué)中所使用的中小型軟件項(xiàng)目,能夠強(qiáng)化學(xué)生對理論知識的理解,培養(yǎng)程序設(shè)計(jì)興趣;
(2)高效性。程序設(shè)計(jì)語言的學(xué)習(xí)不僅僅是學(xué)習(xí)語言的基礎(chǔ)語法,更在于通過不斷實(shí)踐來反作用于基礎(chǔ)語法的學(xué)習(xí),學(xué)生通過教學(xué)項(xiàng)目的學(xué)習(xí),能夠使語言的學(xué)習(xí)更加高效;
(3)可執(zhí)行性。一般高校每個(gè)學(xué)期的教學(xué)時(shí)間大約17 周,可利用前12 周進(jìn)行理論講解,中間穿插一些課本程序演示,在后面的5 周集中進(jìn)入項(xiàng)目階段,鞏固所學(xué)理論知識。
《C++程序設(shè)計(jì)》課程項(xiàng)目式教學(xué)過程的項(xiàng)目階段包括項(xiàng)目發(fā)布、學(xué)生分組、組長選取、項(xiàng)目提交、項(xiàng)目評分等階段,而學(xué)生最終所提交的文檔包含需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、軟件代碼和幫助文檔等,如果教師通過人工管理這個(gè)項(xiàng)目開發(fā)過程,效率不高且容易丟失文件;如果采用一些開源的項(xiàng)目管理工具,又不能很好地契合項(xiàng)目式教學(xué)的需要。因此,有必要設(shè)計(jì)一個(gè)《C++程序設(shè)計(jì)》項(xiàng)目式教學(xué)信息系統(tǒng)來輔助教師教學(xué)。
《C++程序設(shè)計(jì)》項(xiàng)目式教學(xué)信息系統(tǒng)包含三個(gè)主要模塊,分別是用戶管理模塊、項(xiàng)目管理模塊和班級管理模塊。其中用戶管理模塊包含學(xué)生管理和教師管理,分別完成學(xué)生和教師用戶的增、刪、改、查等功能;項(xiàng)目管理模塊包含項(xiàng)目庫管理、項(xiàng)目選擇管理、項(xiàng)目文檔管理和項(xiàng)目評分管理,完成具體教學(xué)項(xiàng)目的增、刪、改、查等功能;班級管理模塊包含分組管理和班級成員管理,完成班級、分組和班級成員的增、刪、改、查功能。具體功能模塊圖如圖1 所示。

圖1 項(xiàng)目式教學(xué)信息系統(tǒng)功能模塊圖
該系統(tǒng)擁有學(xué)生、教師和管理員三種角色,三種角色在系統(tǒng)中的功能各不相同。
(1)學(xué)生功能
學(xué)生用戶功能包括注冊學(xué)生用戶;查詢/修改個(gè)人信息;與其他學(xué)生用戶進(jìn)行組隊(duì);組隊(duì)后通過團(tuán)隊(duì)選擇將要完成的項(xiàng)目;在項(xiàng)目的每個(gè)階段提交所需文檔;項(xiàng)目完成后,查詢個(gè)人成績。具體用例圖如圖2 所示。

圖2 學(xué)生用戶功能用例圖
(2)教師功能
超聲心動(dòng)圖檢查糾正初步診斷:臨床誤診主動(dòng)脈夾層動(dòng)脈瘤為急性心肌梗死2例,均經(jīng)動(dòng)脈造影證實(shí);肥厚型心肌病、急性肺動(dòng)脈栓塞誤診為急性心肌梗死各1例,1例急性心肌梗死被誤診為急性肺動(dòng)脈栓塞。
教師用戶功能包括修改個(gè)人信息;班級創(chuàng)建、查詢、修改和刪除以及班級學(xué)生的加入與刪除;班級隊(duì)伍查詢與修改;教學(xué)項(xiàng)目發(fā)布、查詢、修改和刪除;項(xiàng)目流程制定,包括項(xiàng)目開始時(shí)間、中間節(jié)點(diǎn)及項(xiàng)目截至日期設(shè)定;學(xué)生項(xiàng)目成績評定。具體用例圖如圖3 所示。

圖3 教師用戶功能用例圖
(3)管理員功能
管理員功能包括教師用戶的創(chuàng)建;所有系統(tǒng)用戶的增加、查詢、修改和刪除;所有班級的增加、查詢、修改和刪除;教師權(quán)限分配;日志、備份等系統(tǒng)管理。具體用例圖如圖4 所示。

圖4 管理員功能用例圖
項(xiàng)目式教學(xué)信息系統(tǒng)框架如圖5 所示。系統(tǒng)從邏輯層面分為存儲層、業(yè)務(wù)層和用戶層三個(gè)層次。

圖5 項(xiàng)目式教學(xué)信息系統(tǒng)框架圖
用戶層是不同角色用戶與系統(tǒng)的互動(dòng)接口,用戶在登錄后,系統(tǒng)根據(jù)登錄的用戶名和密碼確定用戶角色,并根據(jù)不同角色進(jìn)入不同用戶界面,執(zhí)行不同功能;業(yè)務(wù)層是系統(tǒng)的核心,連接著用戶層與存儲層,根據(jù)用戶的不同輸入指令完成相應(yīng)的操作;存儲層作為系統(tǒng)的數(shù)據(jù)中心,承載著系統(tǒng)所有的數(shù)據(jù)服務(wù),用戶層錄入的項(xiàng)目信息、用戶信息等均存儲于此,當(dāng)用戶層需要查詢數(shù)據(jù)時(shí),業(yè)務(wù)層在存儲層查詢信息并返回給用戶層。
系統(tǒng)數(shù)據(jù)庫包含教師、成績、學(xué)生、班級、組和項(xiàng)目6 個(gè)實(shí)體,為了更專注于實(shí)體之間的聯(lián)系,因此對于學(xué)生、教師等實(shí)體中包含的性別、年齡、職稱等信息未在E-R 圖中體現(xiàn)。其E-R 簡圖如圖6 所示。

圖6 項(xiàng)目式教學(xué)信息系統(tǒng)E-R簡圖
根據(jù)圖6 的E-R 圖,可知教師與學(xué)生、班級及成績均是一對多的關(guān)系;班級與學(xué)生,班級與組是一對多的關(guān)系;組與學(xué)生是一對多的關(guān)系,組與項(xiàng)目是一對一的關(guān)系;成績與學(xué)生是一對一的關(guān)系。具體的數(shù)據(jù)庫表設(shè)計(jì)如表1-表6 所示。

表1 學(xué)生表

表2 教師表
表2 教師表僅保存教師最基礎(chǔ)的信息,其與系統(tǒng)其他實(shí)體的聯(lián)系均體現(xiàn)在其他表中。

表3 班級表
表3 班級表保存班級基本信息,在這個(gè)系統(tǒng)中,實(shí)際上班級表可有可無,但為了方便期末統(tǒng)計(jì)班級成績,計(jì)算班級平均分,因此引入班級實(shí)體表。

表4 組表
表4 組表中g(shù)rp_leader 字段實(shí)際上就是學(xué)生表中的stu_id。

表5 項(xiàng)目表
表5 項(xiàng)目表中,項(xiàng)目信息包括項(xiàng)目功能需求、知識點(diǎn)、建議組隊(duì)人數(shù)等信息。

表6 成績表
表6 成績表中,加入了錄成績教師字段,是為了進(jìn)行權(quán)限控制,只有教授該學(xué)生課程的教師才有權(quán)限錄入該學(xué)生成績。
根據(jù)系統(tǒng)設(shè)計(jì),考慮開發(fā)效率、跨平臺、開源、性能優(yōu)越等特性,采用PHP+Apache+MySQL 進(jìn)行系統(tǒng)實(shí)現(xiàn)[5]。學(xué)生組隊(duì)成功后,組長選擇項(xiàng)目界面如圖7 所示,在此,學(xué)生可以查看項(xiàng)目詳情并選擇具體的項(xiàng)目,項(xiàng)目名稱后的星號代表教師對項(xiàng)目的預(yù)估難度。

圖7 學(xué)生選擇項(xiàng)目
學(xué)生根據(jù)項(xiàng)目時(shí)間進(jìn)度完成項(xiàng)目并上傳作品,若過了截止日期未提交作品,則本次作業(yè)為0 分。具體的上傳界面如圖8 所示。

圖8 作品上傳界面
本文設(shè)計(jì)并實(shí)現(xiàn)了《C++程序設(shè)計(jì)》課程項(xiàng)目式教學(xué)信息系統(tǒng),在實(shí)際應(yīng)用中,該系統(tǒng)大大減輕了教師在項(xiàng)目式教學(xué)中的項(xiàng)目分發(fā)、項(xiàng)目中間環(huán)節(jié)文檔收集、項(xiàng)目評分等環(huán)節(jié)中的工作量,有序、高效地完成了項(xiàng)目式教學(xué)過程中的各個(gè)環(huán)節(jié)。系統(tǒng)的后續(xù)改進(jìn)方面,應(yīng)考慮學(xué)生參與項(xiàng)目庫建設(shè),在系統(tǒng)中引入更多學(xué)生感興趣的教學(xué)項(xiàng)目;另外,項(xiàng)目難度應(yīng)該在系統(tǒng)運(yùn)行過程中根據(jù)項(xiàng)目完成情況進(jìn)行自適應(yīng)動(dòng)態(tài)調(diào)整,這樣優(yōu)化后的項(xiàng)目難度會進(jìn)一步提升學(xué)生學(xué)習(xí)效率。