亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        《C語言》實時推送測評系統(tǒng)的研究與開發(fā)

        2020-02-03 08:21:38何凱
        電子技術(shù)與軟件工程 2020年6期
        關(guān)鍵詞:數(shù)據(jù)庫系統(tǒng)學(xué)生

        何凱

        (黃驊市職業(yè)技術(shù)教育中心 河北省黃驊市 061100)

        1 問題的提出

        筆者在實際工作中,發(fā)現(xiàn)傳統(tǒng)的教學(xué)模式會讓C 語言初學(xué)者感覺學(xué)習(xí)很困難,教學(xué)質(zhì)量很難保證。目前國內(nèi)外已經(jīng)研究并開發(fā)出了許多測評系統(tǒng),但是總是因為某些原因不具有通用性。一方面因為有些系統(tǒng)不是開源的,我們無從加以利用;另一方面有些系統(tǒng)雖然開源,但是并不符合我們的自身需求,系統(tǒng)所針對的人群是有限制的,不滿足當(dāng)前教學(xué)需求。為此,需要為特定的教學(xué)環(huán)境研究和設(shè)計一套合適的系統(tǒng),以便提高學(xué)生的學(xué)習(xí)興趣和主動性,并及時反饋學(xué)生的學(xué)習(xí)情況,進而幫助教師改善教學(xué)過程,提高整個課程的教學(xué)質(zhì)量。

        2 系統(tǒng)分析

        程序評測系統(tǒng)的設(shè)計是有一定的目標(biāo)群體作為基礎(chǔ),所設(shè)置的題目也是針對這些群體的特定需求所設(shè)定的。此次教學(xué)模式改革和系統(tǒng)設(shè)計開發(fā)所針對的使用人群是中等職業(yè)學(xué)校的學(xué)生,學(xué)習(xí)的算法規(guī)模較小,學(xué)習(xí)的理論知識比較淺顯,程序比較簡單。因此每個題目都僅僅考察一個知識點,包括編程題,編程題的絕大部分代碼系統(tǒng)都會提供,僅僅需要學(xué)生寫很少的代碼,讓學(xué)生稍微一想就能成功,這樣才能激發(fā)他們的學(xué)習(xí)興趣與主動性。

        對于系統(tǒng)的要求是方便攜帶,教師很方便地推送測試題目,學(xué)生通過簡單操作就能正常運行題目,通過動態(tài)測試判定正確與否。因此,我們對于每個題目只需要判定對與錯就可以,因為測試題目本身就沒有太多的步驟。

        3 框架設(shè)計與系統(tǒng)實現(xiàn)

        3.1 系統(tǒng)設(shè)計

        根據(jù)以上分析,我們對系統(tǒng)進行如下設(shè)計。

        結(jié)合《C 語言程序設(shè)計》教學(xué)大綱,為每個知識點制定相應(yīng)配套的選擇題和編程題,適合中職生的題目,形成題庫,保存在數(shù)據(jù)庫中。系統(tǒng)采用ACCESS 數(shù)據(jù)庫,ACCESS 數(shù)據(jù)庫小巧、方便,便于攜帶,但是對于并發(fā)訪問的控制不理想,那么該系統(tǒng)如何提高ACCESS 數(shù)據(jù)庫的并發(fā)訪問數(shù)量呢。

        系統(tǒng)采用了簡單而有效的方法:對數(shù)據(jù)庫文件的讀寫訪問分開,讀寫互不影響;所有的讀進程使用互斥,將讀進程線性化,所有的寫進程使用互斥,將所有的寫進程線性化,這樣同時訪問該數(shù)據(jù)庫文件的進程最多只有兩個,這樣就不會因為并發(fā)訪問量大而報錯,通常情況10 多個并發(fā)訪問,Access 數(shù)據(jù)庫就可能報錯,經(jīng)過這樣處理后,同時幾百個客戶端訪問都不成問題。

        服務(wù)器與客戶端使用datasnap 三層架構(gòu),當(dāng)客戶端連接服務(wù)器時,服務(wù)器會創(chuàng)建一個新的線程,該線程中對數(shù)據(jù)庫文件進行打開和查詢。多個客戶端連接服務(wù)器時,服務(wù)器就會創(chuàng)建多個線程,那么這些線程都會對數(shù)據(jù)庫文件進行打開和查詢,并且在服務(wù)器內(nèi)存中保存了相應(yīng)的數(shù)據(jù)。除了采用上面互斥的方法外,當(dāng)線程讀取數(shù)據(jù)后,客戶端要關(guān)閉自己的鏈接,這樣會引起服務(wù)器將相應(yīng)的線程關(guān)閉,包括關(guān)閉數(shù)據(jù)庫文件,釋放服務(wù)器內(nèi)存中的數(shù)據(jù),這樣能保證服務(wù)器內(nèi)存夠用,數(shù)據(jù)庫文件不會因為并發(fā)而報錯。

        將題目的自動化評測放在學(xué)生機上運行。當(dāng)客戶端得到題目的同時,也得到了測試題目的字符串,客戶端自身使用測試字符串測試學(xué)生編寫的程序,將測試結(jié)果提交服務(wù)器。服務(wù)器與客戶端對應(yīng)的線程將測試結(jié)果,使用消息發(fā)給服務(wù)器主線程,服務(wù)器主線程負責(zé)寫數(shù)據(jù)庫文件。教師檢查學(xué)生的答題情況。

        3.2 服務(wù)器實現(xiàn)

        (1)當(dāng)客戶端查詢數(shù)據(jù)時,服務(wù)器的線程fdquery2 查詢到數(shù)據(jù)題目,將數(shù)據(jù)傳遞給clientdataset1,隨后關(guān)閉線程與數(shù)據(jù)庫文件的連接,服務(wù)器通過DataSetProvider2 將clientdataset1 中的數(shù)據(jù)提供給客戶端。代碼如下:

        (2)當(dāng)客戶端把學(xué)生作答情況提交給服務(wù)器時,服務(wù)器線程通過消息報告給服務(wù)器主線程,由主線程寫入數(shù)據(jù)庫文件,代碼如下:

        (3)當(dāng)學(xué)生交卷時,服務(wù)器線程將信息做成消息發(fā)送給服務(wù)器主線程處理,將考生信息寫入消息里,使用SendMessage 發(fā)送消息,操作如下:

        (4)服務(wù)器主線程接收到消息后,將學(xué)生作答情況寫入數(shù)據(jù)庫,由于是寫數(shù)據(jù)庫,所以要使用臨界區(qū),保證寫數(shù)據(jù)庫這個操作的原子性,代碼如下:

        在系統(tǒng)啟動時,進行臨界區(qū)的初始化,代碼如下:

        3.3 客戶端實現(xiàn)

        (1)客戶端下載下載試題,clientdataset2.Open 時下載數(shù)據(jù),如果數(shù)據(jù)量比較大,則會出現(xiàn)假死的情況,卡在那里,特別是對于廣域網(wǎng)的時候,可能需要點時間,所以我們增加了線程的處理機制。把下載數(shù)據(jù)放到了線程里。并且通過myThread.Finished 來判斷數(shù)據(jù)是否下載完畢,期間可以更新界面。代碼如下:

        (2)數(shù)據(jù)下載完畢后,通知服務(wù)器已經(jīng)下載完畢,服務(wù)器作相應(yīng)的標(biāo)記,而后客戶端通過SQLconnection1.Close 關(guān)閉整個鏈路,以便服務(wù)器釋放內(nèi)存、數(shù)據(jù)庫、線程池等資源。代碼如下:

        (3)客戶端提交學(xué)生作答,提交后,通過sqlconnection2.Close 關(guān)閉這條與服務(wù)器的鏈路,也就是說每次提交作答,客戶端都要先連接服務(wù)器,提交作答后再關(guān)閉鏈接,釋放資源,這個過程相對于我們審題做題的過程來說,用時很少。特別是對于使用了花生殼一類的軟件來說,我們局域網(wǎng)的服務(wù)器可以作為廣域網(wǎng)的服務(wù)器來使用,但是花生殼限制了鏈接數(shù),該系統(tǒng)現(xiàn)在的設(shè)計正好滿足花生殼的這個限制,同一時刻只有少量的TCP 鏈路存在,其他鏈路都及時關(guān)閉了。相關(guān)代碼如下:

        (4)對于選擇題和填空題,客戶端直接將學(xué)生作答信息發(fā)送給服務(wù)器;而對于編程題,該系統(tǒng)在客戶端進行分析。服務(wù)器的數(shù)據(jù)庫中事先準(zhǔn)備好以下材料:編程題題目,測試用字符串,測試用結(jié)果??蛻舳私邮盏骄幊填}目的同時,也得到了測試用字符串。舉例說明,以下編程題目要求實現(xiàn)功能:通過鍵盤輸入n、m,統(tǒng)計n 到m 的累加和,m 和n 計算在內(nèi),sum 用于輸出累加和。

        編制題目時,在題目中設(shè)置標(biāo)志,如上程序所示的注釋部分,只能在標(biāo)志范圍內(nèi)編寫學(xué)生自己的程序,其他地方不可以編輯,客戶端會對各部分做校驗。學(xué)生嘗試編寫程序完成既定功能,當(dāng)學(xué)生點擊提交的時候,客戶端利用命令行argc 和argv 將測試用字符串輸入到程序中,對學(xué)生作答的程序進行測試運行,并將產(chǎn)生的運行結(jié)果作為作答提交給服務(wù)器,服務(wù)器進行判斷。

        4 測試

        由于本方案是特定的服務(wù)器,使用了用戶自定義的用戶網(wǎng)絡(luò)協(xié)議,因此業(yè)界通用的一些測試程序不能很好的完成測試。鑒于此,筆者自己設(shè)計了測試方案。模擬多用戶鏈接服務(wù)器,進而模擬大量用戶連接服務(wù)器,服務(wù)器都能穩(wěn)定的運行,并且符合項目各項要求。

        猜你喜歡
        數(shù)據(jù)庫系統(tǒng)學(xué)生
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        趕不走的學(xué)生
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        學(xué)生寫話
        學(xué)生寫的話
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        色偷偷亚洲第一成人综合网址| 色久悠悠婷婷综合在线| 中文字幕av素人专区| 国产专区国产精品国产三级| 99久久99久久久精品蜜桃| 一个人看的视频在线观看| 欧美激情肉欲高潮视频| 一区二区三区中文字幕| 亚洲欧美精品伊人久久| 免费一区啪啪视频| 伦人伦xxxx国语对白| japanesehd中国产在线看 | 美女mm131爽爽爽| 99亚洲男女激情在线观看| 性色av无码一区二区三区人妻| 大地资源网最新在线播放| 久久福利资源国产精品999| 成年视频网站在线观看777| 国产精品久久夜伦鲁鲁| av网站免费观看入口| 国产不卡在线视频观看| 美女网站免费观看视频 | 国产呦系列呦交| 亚洲国产成人91| 国产91在线精品福利| 国产成人精品无码一区二区老年人| 国产成版人性视频免费版| 中文字幕日韩高清乱码| 亚洲一区二区二区视频| 婷婷色香五月综合激激情| 吃奶摸下的激烈视频| 亚洲AV秘 无码一区二p区三区| 蜜臀av一区二区三区精品| 亚洲中文字幕日韩综合| 亚洲爆乳无码专区www| 青青青国产精品一区二区| 国产精品一区2区三区| 中文字幕国内一区二区| 国产91精品一区二区麻豆亚洲 | 国产在线丝袜精品一区免费| 在线观看人成网站深夜免费 |