杜瑞慶 姚佰允 黎作鵬
摘要:當(dāng)前,網(wǎng)絡(luò)技術(shù)迅速發(fā)展,在線系統(tǒng)的應(yīng)用逐漸普及。然而,一些高校在C語言程序設(shè)計(jì)課后練習(xí)方面仍采用傳統(tǒng)的人工出題和批改方式,效率較低。為了提高學(xué)生的學(xué)習(xí)效率并減輕教師的批改壓力,文章開發(fā)了一款基于ASP.NET的C語言練習(xí)系統(tǒng)。該系統(tǒng)運(yùn)用了HTML、Ajax等技術(shù),并采用SQL Server數(shù)據(jù)庫設(shè)計(jì)了在線練習(xí)系統(tǒng)網(wǎng)站。該系統(tǒng)的核心功能在于教師能夠通過后臺(tái)管理學(xué)生信息、編輯和添加題目、查看學(xué)生成績及題目練習(xí)情況。經(jīng)過嚴(yán)格的測(cè)試,該系統(tǒng)運(yùn)行穩(wěn)定,能顯著提高學(xué)生的學(xué)習(xí)效率,減輕教師的批改壓力。
關(guān)鍵詞:ASP.NET;C語言;在線練習(xí)系統(tǒng); 系統(tǒng)設(shè)計(jì);自動(dòng)評(píng)分
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)10-0068-03
0 引言
提升大學(xué)生C語言的編程能力,不僅是教師關(guān)心的切實(shí)問題之一,也是學(xué)生今后學(xué)習(xí)及提升就業(yè)競(jìng)爭(zhēng)能力的客觀需求[1]。在提升學(xué)生編程能力的過程中,適量的編程題練習(xí)是不可或缺的。然而,當(dāng)前該課程的常規(guī)練習(xí)仍采用傳統(tǒng)的紙質(zhì)方式,通常依賴人工命題和批改評(píng)分。在互聯(lián)網(wǎng)技術(shù)高度發(fā)達(dá)的今天,傳統(tǒng)的人工紙質(zhì)批改方式已難以滿足現(xiàn)代教育的需求。這種方式的勞動(dòng)強(qiáng)度大、效率低下,且在大班教學(xué)中,由于作業(yè)數(shù)量眾多,容易導(dǎo)致批改延誤,影響學(xué)生的學(xué)習(xí)進(jìn)程。在線練習(xí)系統(tǒng)能夠有效地彌補(bǔ)傳統(tǒng)學(xué)習(xí)方式的不足。教師可通過系統(tǒng)上傳練習(xí)題,學(xué)生在有網(wǎng)絡(luò)的情況下,可隨時(shí)隨地進(jìn)行學(xué)習(xí)。這最大程度地利用了網(wǎng)絡(luò)資源,減輕了老師的教學(xué)壓力,提高了學(xué)生的學(xué)習(xí)效率。此外,系統(tǒng)能夠自動(dòng)對(duì)學(xué)生的源代碼進(jìn)行測(cè)試并給出評(píng)分,以便學(xué)生參考糾正。因此,開發(fā)一款能夠高效、準(zhǔn)確地評(píng)價(jià)C語言編程題的在線練習(xí)系統(tǒng)顯得尤為重要。
1 關(guān)鍵技術(shù)簡(jiǎn)介
1.1 ASP.NET
ASP.NET 是一個(gè)以.NET Framework 為基礎(chǔ)的Web開發(fā)平臺(tái),廣泛應(yīng)用于創(chuàng)建交互式的在線Web網(wǎng)站。在開發(fā)過程中,ASP.NET相較于其他語言更加簡(jiǎn)潔,且代碼量相對(duì)較少。其采用事件驅(qū)動(dòng)和數(shù)據(jù)綁定的方式進(jìn)行開發(fā),將程序代碼與用戶界面完全分離,使得結(jié)構(gòu)更加清晰[2]。此外,ASP.NET在保證用戶安全性、執(zhí)行效率高、易于管理、適應(yīng)性強(qiáng)的特點(diǎn)上表現(xiàn)出色,因此系統(tǒng)的開發(fā)主要基于ASP.NET的開發(fā)。
1.2 Javascript
JavaScript是一種解釋型、可即時(shí)編譯型的腳本語言,廣泛應(yīng)用于Web網(wǎng)站開發(fā),可以使網(wǎng)頁變得更加有趣、動(dòng)態(tài),并為用戶提供更流暢美觀的瀏覽效果。JSacvraipStc可rip以t能使夠得賦整個(gè)予系網(wǎng)統(tǒng)頁更交加互易行于為操,作合,理更加利友用好Ja,v同a?時(shí)有利于網(wǎng)頁結(jié)構(gòu)和行為的分離。系統(tǒng)中用到了.JS 文件,這些文件使得系統(tǒng)結(jié)構(gòu)更加清晰,例如選擇題中正確答案的隱藏與顯示就是使用了JavaScript的異步刷新功能。
1.3 Ajax
Ajax是一種通過JavaScript和XML結(jié)合而成的異步刷新技術(shù),它是一種新的方法,而不是一種新的語言。在不加載整個(gè)網(wǎng)頁界面的情況下,Ajax技術(shù)只需要交換少量數(shù)據(jù),利用瀏覽器內(nèi)部的對(duì)象 XML? HttpRequest 來實(shí)現(xiàn)發(fā)送和接收HTTP請(qǐng)求與響應(yīng)信息,從而完成對(duì)部分網(wǎng)頁進(jìn)行更新[3]。因此,學(xué)習(xí)Ajax 的基礎(chǔ)就是了解XMLHttpRequest對(duì)象。
2 C 語言練習(xí)系統(tǒng)的分析與設(shè)計(jì)
2.1 C 語言練習(xí)系統(tǒng)業(yè)務(wù)需求的分析
根據(jù)教育部的最新通知,我國高等教育已逐步進(jìn)入普及化階段,學(xué)生數(shù)量的大幅增加使得傳統(tǒng)的小班化教學(xué)模式面臨挑戰(zhàn)。為確保每位學(xué)生都能得到有效的輔導(dǎo),減輕教師的作業(yè)批改負(fù)擔(dān),并為學(xué)生提供充足的練習(xí)機(jī)會(huì),本文計(jì)劃研發(fā)一款基于ASP.NET技術(shù)的C語言在線練習(xí)系統(tǒng)。此系統(tǒng)將為學(xué)生提供一個(gè)實(shí)時(shí)的在線練習(xí)平臺(tái),只要具備網(wǎng)絡(luò)連接條件,學(xué)生即可隨時(shí)隨地進(jìn)行在線練習(xí)。此外,該系統(tǒng)還將具備自動(dòng)評(píng)分功能,能夠精準(zhǔn)評(píng)估學(xué)生的練習(xí)成果,以減輕教師的工作負(fù)擔(dān)。
1) 開發(fā)目的:提升教師工作效率及學(xué)生學(xué)習(xí)效率,實(shí)現(xiàn)教師對(duì)學(xué)生日常練習(xí)的集中管理。
2) 應(yīng)用對(duì)象:全國各高校教授及學(xué)習(xí)基礎(chǔ)程序設(shè)計(jì)語言——C語言的師生。教師可上傳習(xí)題,學(xué)生則可在線練習(xí)。
3) 主要功能:實(shí)現(xiàn)各班教師于后臺(tái)添加C語言選擇題、編程題并發(fā)布,所帶學(xué)生登錄系統(tǒng)后在線練習(xí),提交后教師和學(xué)生均可查看學(xué)生的練習(xí)成績。
4) 影響范圍:全國各高校學(xué)習(xí)C語言的所有專業(yè)學(xué)生及授課教師。
5) 頂層數(shù)據(jù)流圖。
2.2 ASP.NET 的C 練習(xí)系統(tǒng)功能需求分析
從功能上看,一個(gè)完整的C 語言練習(xí)系統(tǒng)需要完成管理員、教師和學(xué)生3個(gè)模塊的功能。
首先,管理員模塊是整個(gè)系統(tǒng)的核心。它負(fù)責(zé)系統(tǒng)的維護(hù)和管理,確保系統(tǒng)的正常運(yùn)行。管理員可以創(chuàng)建教師、學(xué)生賬戶,設(shè)置學(xué)生管理權(quán)限,監(jiān)控學(xué)生的學(xué)習(xí)進(jìn)度等。
其次,教師模塊是連接管理員和學(xué)生的橋梁。教師可以通過系統(tǒng)發(fā)布編程題目,查看學(xué)生的答題記錄和成績,為學(xué)生提供及時(shí)的反饋。此外,教師還需要定期更新題庫,添加新的編程題目,以滿足學(xué)生的學(xué)習(xí)需求。同時(shí),教師還可以設(shè)置作業(yè)、考試等學(xué)習(xí)任務(wù),以及對(duì)學(xué)生的表現(xiàn)進(jìn)行評(píng)估和統(tǒng)計(jì)。這有助于教師全面了解學(xué)生的學(xué)習(xí)情況,為后續(xù)的教學(xué)提供參考。
最后,學(xué)生模塊則是為學(xué)生提供了一個(gè)自主學(xué)習(xí)的平臺(tái)。學(xué)生可以在系統(tǒng)中答題,查看自己的答題記錄和成績,了解自己的學(xué)習(xí)進(jìn)度。此外,學(xué)生還可以通過系統(tǒng)進(jìn)行在線學(xué)習(xí),提高自己的編程能力。
系統(tǒng)的具體功能內(nèi)容如圖2所示。
2.3 數(shù)據(jù)庫設(shè)計(jì)
根據(jù)系統(tǒng)的功能需求,設(shè)計(jì)出主要的 5 個(gè)數(shù)據(jù)庫實(shí)體,包括:管理員、教師、學(xué)生、選擇題和編程題實(shí)體,如表1所示。
系統(tǒng)主要包含12張表,管理員信息表、教師個(gè)人信息表、學(xué)生個(gè)人信息表、學(xué)生與教師信息表、選擇題類型信息表、選擇題信息表、編程題類型信息表、編程題信息表、班級(jí)信息表、學(xué)生考試選擇題信息表、學(xué)生考試編程題信息表、考試成績表。在這些表中,用戶賬號(hào)和密碼都采用Varchar數(shù)據(jù)類型,該格式可以靈活存儲(chǔ)數(shù)據(jù),合理利用內(nèi)存空間。每個(gè)用戶都包含一個(gè)備注欄,用以標(biāo)注用戶的特殊信息。
2.4 系統(tǒng)頁面描述
系統(tǒng)主要包含管理員、教師、學(xué)生3個(gè)模塊,每個(gè)模塊下又包含很多功能頁面,表2介紹了各個(gè)模塊中一些比較重要的網(wǎng)頁功能。
3 C 語言練習(xí)系統(tǒng)詳細(xì)設(shè)計(jì)
3.1 登錄模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
在用戶登錄系統(tǒng)的過程中,首先要進(jìn)行角色選擇。可供選擇的角色包括學(xué)生、教師及管理員。一旦用戶完成了角色選擇,系統(tǒng)將引導(dǎo)他們進(jìn)入各自相應(yīng)的登錄界面。在登錄界面上,用戶需要輸入自己的用戶名、密碼以及用戶類型等信息。只有當(dāng)所有這些信息都準(zhǔn)確無誤時(shí),用戶才能成功登錄并進(jìn)入下一個(gè)界面。
3.2 管理員模塊的詳細(xì)設(shè)計(jì)要求與實(shí)現(xiàn)
管理員在進(jìn)入練習(xí)系統(tǒng)后,可以執(zhí)行學(xué)生和教師信息的增、刪、改、查等維護(hù)操作。
學(xué)生信息和教師信息的添加。添加成員信息可采用單獨(dú)插入或批量導(dǎo)入方式。在單獨(dú)插入時(shí),管理員只需填寫教師或?qū)W生的個(gè)人信息,系統(tǒng)會(huì)接收到頁面填寫的這些信息,并調(diào)用SQL語句將信息插入對(duì)應(yīng)的教師表或?qū)W生表中。如果批量導(dǎo)入,則須將所有學(xué)生或教師的信息存入Excel表中,上傳至臨時(shí)文件夾,再傳到服務(wù)器上。隨后,管理員使用for循環(huán)讀取表格中每個(gè)單元格的信息,確保每條信息都已讀取。最后,使用SQL語句將信息插入對(duì)應(yīng)的教師個(gè)人信心表或?qū)W生個(gè)人信息表中。
建立班級(jí)與教師的綁定關(guān)系。在課程開始之前,管理員需要為每個(gè)班級(jí)指派特定的教師,并授予他們權(quán)限來添加和發(fā)布編程題以及查看本班學(xué)生的成績。為了方便操作,管理員可以在添加教師和班級(jí)關(guān)系時(shí)使用下拉菜單來展示和選擇教師和班級(jí)信息。管理員只需要在下拉菜單中找到相應(yīng)的教師和班級(jí),點(diǎn)擊添加,即可將該教師與所選班級(jí)綁定。
3.3 教師模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
在教師登錄系統(tǒng)后,可以對(duì)班級(jí)學(xué)生信息進(jìn)行一系列的管理操作,包括添加、修改、查看等,同時(shí)也可以對(duì)不同類型的題目進(jìn)行導(dǎo)入和更新[4]。對(duì)于選擇題,可以選擇從題庫中單獨(dú)插入或進(jìn)行批量導(dǎo)入。然而,對(duì)于編程題,流程相對(duì)復(fù)雜一些。首先需要確定編程題的類型,然后根據(jù)不同的類型格式,添加相應(yīng)的編程題以及編程題的測(cè)試用例。這樣的設(shè)計(jì)旨在方便查找和管理,使整個(gè)編程題庫更加條理清晰。如果題目出現(xiàn)錯(cuò)誤,可以及時(shí)查找并糾正。
學(xué)生練習(xí)作業(yè)布置。受教學(xué)計(jì)劃的安排及現(xiàn)實(shí)因素的影響,各班級(jí)的學(xué)習(xí)科目或進(jìn)度可能存在差異。因此,各班級(jí)教師布置的作業(yè)也可能有所不同。在系統(tǒng)頁面中,用戶可選擇相應(yīng)的班級(jí)及題號(hào)進(jìn)行作業(yè)布置。完成選擇后,點(diǎn)擊提交,所提交的班級(jí)及題號(hào)信息將存儲(chǔ)于相應(yīng)的數(shù)據(jù)庫表中。這樣,不同班級(jí)的學(xué)生在進(jìn)入系統(tǒng)后將看到不同的題目。這是由于系統(tǒng)會(huì)先查詢數(shù)據(jù)庫中該班級(jí)信息及其對(duì)應(yīng)的題號(hào)信息,然后才能將不同的題目呈現(xiàn)在頁面中。
學(xué)生應(yīng)答信息的查閱。教師可透過選取特定的班級(jí),進(jìn)而查看該班級(jí)中每一位同學(xué)在編程題目中的總得分情況。若有必要深入了解特定學(xué)生的編程練習(xí)情況,教師只需點(diǎn)擊“查看詳細(xì)信息”按鈕,系統(tǒng)將自動(dòng)跳轉(zhuǎn)至新的界面,完整展示該學(xué)生的所有編程題目得分情況。點(diǎn)擊具體的題目編號(hào),教師還能查看學(xué)生提交的源代碼。通過觀察每個(gè)學(xué)生在各道編程題目中的得分以及他們提交的源代碼,教師能更準(zhǔn)確地掌握學(xué)生的學(xué)習(xí)進(jìn)度,從而及時(shí)調(diào)整教學(xué)策略。此外,在期末考試時(shí),教師可根據(jù)系統(tǒng)內(nèi)各難度題目的得分情況,有針對(duì)性地調(diào)整期末試卷的難易程度。
3.4 學(xué)生模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
學(xué)生登錄系統(tǒng)后,主要進(jìn)行答題和查看分?jǐn)?shù)的操作。題目類型包括選擇題和編程題。學(xué)生可以選擇當(dāng)日所學(xué)的章節(jié)或較為薄弱的章節(jié)內(nèi)容進(jìn)行選擇題練習(xí)。練習(xí)完成后,點(diǎn)擊提交按鈕,系統(tǒng)會(huì)生成本章節(jié)的選擇題分?jǐn)?shù)。另外,學(xué)生也可以選擇編程題進(jìn)行練習(xí)。根據(jù)題目列表,學(xué)生可以挑選需要的題目進(jìn)行練習(xí)。提交源程序后,系統(tǒng)會(huì)自動(dòng)評(píng)分。如果提示編譯未通過,學(xué)生可以重新提交源文件,系統(tǒng)會(huì)再次評(píng)分。評(píng)分完成后,學(xué)生可以查看編程題分?jǐn)?shù)。
學(xué)生選擇題答題。學(xué)生登錄系統(tǒng)后,需在答題頁面選擇正確答案。正確答案與題目選項(xiàng)均存儲(chǔ)在同一個(gè)列表中,并以隱藏狀態(tài)顯示。當(dāng)學(xué)生點(diǎn)擊提交按鈕后,系統(tǒng)會(huì)將正確答案選項(xiàng)及解析顯示在界面上。
學(xué)生編程題答題。學(xué)生登錄系統(tǒng)后,可自主選擇需要練習(xí)的章節(jié)和編程題,在編輯框中輸入源代碼后點(diǎn)擊提交。系統(tǒng)接收到學(xué)生提交的源文件后,會(huì)調(diào)用DOS命令將其編譯成一個(gè)可執(zhí)行文件。如果編譯成功,系統(tǒng)將進(jìn)入測(cè)試環(huán)節(jié),自動(dòng)從數(shù)據(jù)庫中提取測(cè)試用例,將學(xué)生的輸出結(jié)果與正確答案進(jìn)行比對(duì),根據(jù)測(cè)試用例通過的個(gè)數(shù),給予一個(gè)公正的分?jǐn)?shù),并將分?jǐn)?shù)存儲(chǔ)到學(xué)生編程題得分表中。如果編譯失敗,系統(tǒng)將提醒學(xué)生出現(xiàn)編譯錯(cuò)誤,并顯示相關(guān)的錯(cuò)誤信息,以便學(xué)生自行調(diào)試后再次提交。
學(xué)生得分信息查詢。在系統(tǒng)評(píng)分完成后,學(xué)生可以在得分統(tǒng)計(jì)頁面查看每一道編程題的得分和總平均分。這些成績信息已存儲(chǔ)在數(shù)據(jù)庫表中,并且通過GridVeiw控件在頁面上展示。
4 總結(jié)
當(dāng)前,各高校教學(xué)改革的核心領(lǐng)域之一就是應(yīng)用計(jì)算機(jī)技術(shù),對(duì)學(xué)校各學(xué)科題庫的管理、試卷組合、測(cè)試及評(píng)分體系進(jìn)行全面優(yōu)化。在當(dāng)今線上與線下相結(jié)合的教學(xué)發(fā)展大背景下,各高校都已研發(fā)出相似的題目練習(xí)系統(tǒng)。這款系統(tǒng)的設(shè)計(jì)不僅符合高校教師線上教學(xué)的需求,同時(shí)也推動(dòng)了無紙化教學(xué)的普及,極大地減輕了高校教師的教學(xué)工作量,并加強(qiáng)了教師與學(xué)生之間的聯(lián)系。因此,該系統(tǒng)能在高校的C語言程序設(shè)計(jì)課程練習(xí)中得以應(yīng)用。
參考文獻(xiàn):
[1] 何波玲.C/C++程序設(shè)計(jì)練習(xí)系統(tǒng)的開發(fā)與設(shè)計(jì)[J].科技傳播,2016,8(10):102-103.
[2] 黃金波,杜曉明,呂劍鋒,等.XML數(shù)據(jù)庫技術(shù)在IETM中的應(yīng)用研究[J].科學(xué)技術(shù)與工程,2006,6(23):4795-4797.
[3] 王雙立,譚煒樂,呂鋼,等.基于ASP.net的ECharts動(dòng)態(tài)多組曲線圖表的實(shí)現(xiàn)[J].江蘇科技信息,2018,35(32):33-35.
[4] 張曉杰,盧涵宇.基于B/S的學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2013,9(29):6552-6554.
【通聯(lián)編輯:王 力】