王耀飛
(內蒙古財經(jīng)大學,呼和浩特 010070)
《C++程序設計》是在《C 語言程序設計》課程的基礎上,增加了封裝、繼承、多態(tài)等特性的計算機類學生的專業(yè)基礎課,旨在培養(yǎng)學生在程序設計過程中的面向對象思維。《C++程序設計》課程歸根結底是一門計算機編程語言課程,語言學習的優(yōu)劣取決于是否經(jīng)過大量的實踐。現(xiàn)有的課程教材中雖有一部分應用實例[1-2],但大多缺乏應用場景,且代碼規(guī)模不足以滿足輔助課程學習的程度,學生難以在小規(guī)模代碼中認識到面向對象程序設計的優(yōu)勢。因此,項目式教學在《C++程序設計》課程[3]中的應用有重要意義。
項目式教學是利用設計好的涵蓋豐富知識點的教學項目庫,分配給學生組隊完成,在完成項目的過程中充分理解所學理論知識,提高團隊合作能力。項目式教學[4]適用于《C++程序設計》的教學過程有其天然優(yōu)勢。具體表現(xiàn)在:
(1)適用性。C++語言抽象、封裝、繼承和多態(tài)等特征,需要通過完成某個具體的中小型項目,才能體會到這種面向對象語言的獨特優(yōu)勢,項目式教學中所使用的中小型軟件項目,能夠強化學生對理論知識的理解,培養(yǎng)程序設計興趣;
(2)高效性。程序設計語言的學習不僅僅是學習語言的基礎語法,更在于通過不斷實踐來反作用于基礎語法的學習,學生通過教學項目的學習,能夠使語言的學習更加高效;
(3)可執(zhí)行性。一般高校每個學期的教學時間大約17 周,可利用前12 周進行理論講解,中間穿插一些課本程序演示,在后面的5 周集中進入項目階段,鞏固所學理論知識。
《C++程序設計》課程項目式教學過程的項目階段包括項目發(fā)布、學生分組、組長選取、項目提交、項目評分等階段,而學生最終所提交的文檔包含需求分析、概要設計、詳細設計、軟件代碼和幫助文檔等,如果教師通過人工管理這個項目開發(fā)過程,效率不高且容易丟失文件;如果采用一些開源的項目管理工具,又不能很好地契合項目式教學的需要。因此,有必要設計一個《C++程序設計》項目式教學信息系統(tǒng)來輔助教師教學。
《C++程序設計》項目式教學信息系統(tǒng)包含三個主要模塊,分別是用戶管理模塊、項目管理模塊和班級管理模塊。其中用戶管理模塊包含學生管理和教師管理,分別完成學生和教師用戶的增、刪、改、查等功能;項目管理模塊包含項目庫管理、項目選擇管理、項目文檔管理和項目評分管理,完成具體教學項目的增、刪、改、查等功能;班級管理模塊包含分組管理和班級成員管理,完成班級、分組和班級成員的增、刪、改、查功能。具體功能模塊圖如圖1 所示。
圖1 項目式教學信息系統(tǒng)功能模塊圖
該系統(tǒng)擁有學生、教師和管理員三種角色,三種角色在系統(tǒng)中的功能各不相同。
(1)學生功能
學生用戶功能包括注冊學生用戶;查詢/修改個人信息;與其他學生用戶進行組隊;組隊后通過團隊選擇將要完成的項目;在項目的每個階段提交所需文檔;項目完成后,查詢個人成績。具體用例圖如圖2 所示。
圖2 學生用戶功能用例圖
(2)教師功能
超聲心動圖檢查糾正初步診斷:臨床誤診主動脈夾層動脈瘤為急性心肌梗死2例,均經(jīng)動脈造影證實;肥厚型心肌病、急性肺動脈栓塞誤診為急性心肌梗死各1例,1例急性心肌梗死被誤診為急性肺動脈栓塞。
教師用戶功能包括修改個人信息;班級創(chuàng)建、查詢、修改和刪除以及班級學生的加入與刪除;班級隊伍查詢與修改;教學項目發(fā)布、查詢、修改和刪除;項目流程制定,包括項目開始時間、中間節(jié)點及項目截至日期設定;學生項目成績評定。具體用例圖如圖3 所示。
圖3 教師用戶功能用例圖
(3)管理員功能
管理員功能包括教師用戶的創(chuàng)建;所有系統(tǒng)用戶的增加、查詢、修改和刪除;所有班級的增加、查詢、修改和刪除;教師權限分配;日志、備份等系統(tǒng)管理。具體用例圖如圖4 所示。
圖4 管理員功能用例圖
項目式教學信息系統(tǒng)框架如圖5 所示。系統(tǒng)從邏輯層面分為存儲層、業(yè)務層和用戶層三個層次。
圖5 項目式教學信息系統(tǒng)框架圖
用戶層是不同角色用戶與系統(tǒng)的互動接口,用戶在登錄后,系統(tǒng)根據(jù)登錄的用戶名和密碼確定用戶角色,并根據(jù)不同角色進入不同用戶界面,執(zhí)行不同功能;業(yè)務層是系統(tǒng)的核心,連接著用戶層與存儲層,根據(jù)用戶的不同輸入指令完成相應的操作;存儲層作為系統(tǒng)的數(shù)據(jù)中心,承載著系統(tǒng)所有的數(shù)據(jù)服務,用戶層錄入的項目信息、用戶信息等均存儲于此,當用戶層需要查詢數(shù)據(jù)時,業(yè)務層在存儲層查詢信息并返回給用戶層。
系統(tǒng)數(shù)據(jù)庫包含教師、成績、學生、班級、組和項目6 個實體,為了更專注于實體之間的聯(lián)系,因此對于學生、教師等實體中包含的性別、年齡、職稱等信息未在E-R 圖中體現(xiàn)。其E-R 簡圖如圖6 所示。
圖6 項目式教學信息系統(tǒng)E-R簡圖
根據(jù)圖6 的E-R 圖,可知教師與學生、班級及成績均是一對多的關系;班級與學生,班級與組是一對多的關系;組與學生是一對多的關系,組與項目是一對一的關系;成績與學生是一對一的關系。具體的數(shù)據(jù)庫表設計如表1-表6 所示。
表1 學生表
表2 教師表
表2 教師表僅保存教師最基礎的信息,其與系統(tǒng)其他實體的聯(lián)系均體現(xiàn)在其他表中。
表3 班級表
表3 班級表保存班級基本信息,在這個系統(tǒng)中,實際上班級表可有可無,但為了方便期末統(tǒng)計班級成績,計算班級平均分,因此引入班級實體表。
表4 組表
表4 組表中grp_leader 字段實際上就是學生表中的stu_id。
表5 項目表
表5 項目表中,項目信息包括項目功能需求、知識點、建議組隊人數(shù)等信息。
表6 成績表
表6 成績表中,加入了錄成績教師字段,是為了進行權限控制,只有教授該學生課程的教師才有權限錄入該學生成績。
根據(jù)系統(tǒng)設計,考慮開發(fā)效率、跨平臺、開源、性能優(yōu)越等特性,采用PHP+Apache+MySQL 進行系統(tǒng)實現(xiàn)[5]。學生組隊成功后,組長選擇項目界面如圖7 所示,在此,學生可以查看項目詳情并選擇具體的項目,項目名稱后的星號代表教師對項目的預估難度。
圖7 學生選擇項目
學生根據(jù)項目時間進度完成項目并上傳作品,若過了截止日期未提交作品,則本次作業(yè)為0 分。具體的上傳界面如圖8 所示。
圖8 作品上傳界面
本文設計并實現(xiàn)了《C++程序設計》課程項目式教學信息系統(tǒng),在實際應用中,該系統(tǒng)大大減輕了教師在項目式教學中的項目分發(fā)、項目中間環(huán)節(jié)文檔收集、項目評分等環(huán)節(jié)中的工作量,有序、高效地完成了項目式教學過程中的各個環(huán)節(jié)。系統(tǒng)的后續(xù)改進方面,應考慮學生參與項目庫建設,在系統(tǒng)中引入更多學生感興趣的教學項目;另外,項目難度應該在系統(tǒng)運行過程中根據(jù)項目完成情況進行自適應動態(tài)調整,這樣優(yōu)化后的項目難度會進一步提升學生學習效率。