freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言源程序的自動(dòng)評判畢業(yè)設(shè)計(jì)論文(文件)

2025-08-23 00:48 上一頁面

下一頁面
 

【正文】 GetDlgItem(IDC_exe_EDIT)SetWindowText(StrFileName)。關(guān)于輸入、輸出數(shù)據(jù)的重定向問題,通過建立兩個(gè)管道來解決,輸入數(shù)據(jù)取正確輸入編輯框中的數(shù)據(jù),輸出數(shù)據(jù)輸出到正確輸出編輯框。 = sizeof(SECURITY_ATTRIBUTES)。hRead,amp。 = NULL。hInputWrite,amp。 = sizeof(STARTUPINFO)。 = hWrite。 DWORD dwWritten。pi)。CString put=m_inEdit+\\n。dwWritten,NULL)。bytesRead,NULL)==NULL) break。 }GetDlgItem(IDC_add_BUTTON)EnableWindow(true)。列表控件的初始化工作與添加文件對話框中的列表控件相同。 while(pos!=NULL) { CString FileName=。 } } GetDlgItem(IDOK)EnableWindow(true)。\\39。))。其代碼如下:CString oute。 = sizeof(SECURITY_ATTRIBUTES)。hRead,amp。 = NULL。hInputWrite,amp。 = sizeof(STARTUPINFO)。 = hWrite。 DWORD dwWritten。pi)。CString put=m_inEdit+\\n。dwWritten,NULL)。bytesRead,NULL)==NULL) break。如果有輸出數(shù)據(jù)能存入字符串oute,則將oute與正確輸出編輯框的正確輸出比較。 CopyFile(D:\\test\\,rightfile,false)。 Event=WaitForSingleObject(,4000)。 CopyFile(D:\\test\\,errorfile,false)。 第4章 測試4.1 測試方案鑒于本系統(tǒng)的目的是用于評判教學(xué)中學(xué)生編寫的C源程序文件,程序的復(fù)雜度不是很高,輸入輸出數(shù)據(jù)也相對較為簡單。在運(yùn)行這兩個(gè)題目正確的C源程序得到正確的exe文件后,開始進(jìn)入測試。圖42 工具欄添加按鈕 系統(tǒng)測試1. 添加文件對話框點(diǎn)擊此工具欄中按鈕,彈出添加文件對話框,點(diǎn)擊“初始化”,啟用“添加文件”、“OK”按鈕。圖44 編譯鏈接結(jié)束信息提示框3. 進(jìn)入運(yùn)行/評判對話框后,首先點(diǎn)擊“選擇正確程序”按鈕,選則之前生成的正確的exe程序,然后輸入正確的輸入數(shù)據(jù),這里用數(shù)字333。圖45 選擇正確程序,輸入數(shù)據(jù)后運(yùn)行,得到正確輸出,再添加目標(biāo)程序運(yùn)行/評判結(jié)束后,彈出信息提示框,提示所有評判工作已經(jīng)完成,點(diǎn)擊“是(Y)”后,退出運(yùn)行/評判對話框,這樣再點(diǎn)擊工具欄按鈕便可以進(jìn)行下一條題目的評判。結(jié)果如圖47所示。首先整個(gè)系統(tǒng)在Visual C++開發(fā)環(huán)境下能夠通過加載DLL文件順利開始運(yùn)行。在整個(gè)系統(tǒng)的開發(fā)過程中,遇到的技術(shù)難點(diǎn)有三個(gè)。第三個(gè)問題是關(guān)于如何在運(yùn)行目標(biāo)程序時(shí)重定向輸入輸出,即如何自動(dòng)的載入輸入數(shù)據(jù)和將輸出數(shù)據(jù)重定向到一個(gè)字符串中以方便和正確答案比較,最后這個(gè)問題是通過使用通道來解決。第三,提高了自己解決自己之前未接觸過的問題的能力,通過請教老師、同學(xué),系統(tǒng)而深入的研究MSDN,網(wǎng)上查找資料等等方式,在解決遇到的各種問題時(shí),都是行之有效的方法。其他的是一些帶有自動(dòng)評判功能的測試軟件,多用于大型軟件的測試,一些代碼測試則是直接給出錯(cuò)的代碼行。還有就是對于一種特殊情況不能發(fā)現(xiàn),即能夠編譯鏈接,程序的內(nèi)容其實(shí)是錯(cuò)誤的,但碰巧輸出結(jié)果與正確答案相同,這里本系統(tǒng)判為正確,而實(shí)際上是錯(cuò)誤的。在程序設(shè)計(jì)階段,對于出現(xiàn)的問題,反復(fù)實(shí)驗(yàn),幫助我解決。的確,Windows編程勢不可擋。例如,若移動(dòng)鼠標(biāo),就會(huì)往活動(dòng)窗口上發(fā)送一條消息(此消息定義為WM_MOUSEMOVE)。例如,當(dāng)窗口獲取WM_MOVE消息后,它更改窗口的坐標(biāo),并在屏幕上重繪窗口。在非面向?qū)ο笳Z言中,程序員如何區(qū)分這些東西呢?使用句柄。必須用某種方式創(chuàng)建這些句柄。所以,務(wù)必確保在適當(dāng)?shù)臅r(shí)候銷毀不再使用的句柄。因?yàn)槠渌翱趧倓倧脑摯翱谏弦谱?,操作系統(tǒng)希望重繪窗口。暫時(shí)不必深究它們的具體細(xì)節(jié)。 case WM_KEYDOWN: break。 所有的操作都與類有關(guān)。下面用一個(gè)實(shí)例來加以說明,這個(gè)類表達(dá)一條直線。 int m_nY2。 // 設(shè)置直線數(shù)據(jù) void SetPoints(int x1, int y1, int x2, int y2)。于是按微軟的方式,用一個(gè)字母表明其數(shù)據(jù)類型??吹絤_pPoint這樣的名字,就會(huì)想到這是一個(gè)指向某個(gè)點(diǎn)的類的其中一個(gè)成員變量(它是一個(gè)指針)。注意,它們在公有(public)部分的前面。頭3個(gè)稱做構(gòu)造(constructors)函數(shù)。//下面調(diào)用 CLine()pMyLine = new CLine。 所有這些代碼生成一條直線。使用如下代碼可以分配一個(gè)包含100個(gè)整數(shù)的數(shù)組:// 下面調(diào)用CLine()CLine MyLine。// 下面調(diào)用CLine(int x1, int y1, int x2, int y2)pMyLine = new CLine(0,0,10,10)。在C++中,關(guān)鍵字new用于創(chuàng)建一個(gè)新的對象,這與C中的malloc一樣。// 將首元素設(shè)置為0pNumbers[0]=0。它告訴程序刪除整個(gè)數(shù)組。如果耗盡了計(jì)算機(jī)的所有內(nèi)存,最終導(dǎo)致計(jì)算機(jī)的崩潰。 m_nX2=0。 m_nX2=x2。構(gòu)造函數(shù)的一個(gè)區(qū)別是,它們沒有返回值。// 清除這個(gè)類占用的內(nèi)存,并調(diào)用~CLine()delete pMyLine。表征程序中的有MyLine效域的結(jié)束// 調(diào)用~CLine() (因?yàn)镸yLine越出了作用域) 對于本例中的類,~CLine()不需要做任何事。 m_nX2=x2。}void CLine::Draw(){ // 這里使用的是偽碼 // 它們是繪制直線的操作系統(tǒng)函數(shù) MoveTo(m_nX1, m_nY1)。另一個(gè)例子不使用指針:CLine *pLine = new CLine(0,0,10,10)。(0,0,10,10)。假設(shè)有一個(gè)類CSquare,其中有4個(gè)CLine類:class CSquare{ CLine m_LineTop。 //等等} 也可以使用已有的CLine類創(chuàng)建自定義類。只需繼承類CLine即可達(dá)到目的。 cpp代碼如下所示:void CColorLine::Draw(long color){ // 這里使用的是偽碼 // 它們是繪制直線的操作系統(tǒng)函數(shù) SetColor(color)。}。假如想在程序中繪制一條直線,而且希望利用現(xiàn)有的直線類,但這個(gè)類缺少一個(gè)重要的特征:不能通過它設(shè)置顏色。 CLine m_LineBottom。 以上介紹的是類中的代碼。delete pLine。 return。 m_nY2=y2。因?yàn)樵谶@里不需要它做任何事,所以,函數(shù)代碼為空:CLine::~CLine(){ // 不做任何事} 下面,再添加其他兩個(gè)函數(shù)。}// 這個(gè)39。析構(gòu)函數(shù)是刪除CLine或越出作用域時(shí)自動(dòng)調(diào)用的函數(shù),例如:// 這是Cline類的一個(gè)指針CLine *pMyLine。 m_nY2=y2。 m_nY2=0。請?jiān)倩剡^頭來考察CLine的構(gòu)造函數(shù)。因而可能會(huì)泄漏內(nèi)存。// 釋放內(nèi)存delete [] pNumbers。使用如下代碼可以分配一個(gè)包含100個(gè)整數(shù)的數(shù)組:// 整數(shù)的指針int *pNumbers。 所有這些代碼生成一條直線。// 下面調(diào)用CLine()pMyLine = new CLine。在C++中,關(guān)鍵字new用于創(chuàng)建一個(gè)新的對象,這與C中的ma.Uoc一樣。// 下面調(diào)用 CLine(int x1, int y1, int x2, int y2)pMyLine = new CLine(0,0,10,10)。下面是調(diào)用它們的一些例子:// 下面調(diào)用 CLine()CLine MyLine。它們并非用于公有目的。 言歸正傳,再回到類的主題上。不要使用下劃線以及類似的字符。} 先簡單說說命名約定。 CLine(int x1, int y1, int x2, int y2)。 int m_nY1。在開始使用VC++之前,先介紹一些有關(guān)類的必備知識。了解這些原理后,就可以開始討論MFC了。例如: void HandleTheMessage(long Message){ switch(Message) { case WM_PAINT: DrawWindow()。 這個(gè)函數(shù)通過句柄your_HWND給窗口發(fā)送了一條繪制消息。假如有一個(gè)窗口,且擁有該窗口的一個(gè)句柄(稱做一個(gè)HWND)。如果不銷毀它們,最終將導(dǎo)致資源泄漏(resource leak)??梢允褂肳indows的句柄、文件的句柄、分配內(nèi)存的句柄、圖像的句柄等等。Windows具有很強(qiáng)的面向?qū)ο筇匦?。若改變窗口大小,同樣?huì)往活動(dòng)窗口發(fā)送一條消息(此消息定義為WM_SIZE)。所有編程的骨架都是響應(yīng)和發(fā)送消息。這些都使我受益匪淺。 致 謝在本次畢業(yè)論文的撰寫過程中,嚴(yán)迪新老師給予了我極大的幫助和支持。在完成C源程序自動(dòng)評判系統(tǒng)得開發(fā)后,對于開發(fā)類似的源程序評判系統(tǒng)也提供了不少經(jīng)驗(yàn)。第五,提高了自己對于軟件工程的認(rèn)識,以前不太在意的測試工作現(xiàn)在也認(rèn)識到是軟件開發(fā)過程中的重要問題。首先,大大增加了自己對于編程的興趣。這個(gè)方式在變量的調(diào)用,函數(shù)的調(diào)用方面都具有自身的特點(diǎn),例如平時(shí)使用的MessageBox()函數(shù),在Addin方式下需改為AfxMessageBox(),這些難點(diǎn)是參考MSDN中的相關(guān)說明后基本解決。整個(gè)系統(tǒng)的運(yùn)行過程力求操作最簡,按照順序和提示一步一步進(jìn)行最簡單的點(diǎn)擊、輸入等各種,即可以完成對于大量C源程序文件的評判各種。在測試另一組無需數(shù)據(jù)輸入題目的C源程序文件后,結(jié)果也正確。圖46 評判結(jié)束信息提示框最后,在oute文件夾中可以查看評判結(jié)果,結(jié)果是一個(gè)個(gè)與C源程序文件對應(yīng)的空白文本文件,文件名是對應(yīng)的評判信息。測試程序的目的是計(jì)算一個(gè)三位數(shù)的各個(gè)位數(shù)上的數(shù)字之和,所以這里的重定向后正確輸出為:Please import a number :The sum is : 9再點(diǎn)擊“選擇文件”,選擇result文件夾下的所有目標(biāo)程序添加至列表控件,最后點(diǎn)擊“OK”按鈕,運(yùn)行這些目標(biāo)程序并且進(jìn)行評判。添加完成后,如圖43所示,并點(diǎn)擊“OK“按鈕。選擇Visual C++菜單欄中“工具”“定制”“附加項(xiàng)和宏文件”“瀏覽”,在彈出的選擇文件對話框中首先選擇文件類型為Addins(.dll),,打開,如圖41所示,此時(shí)定制對話框中顯示已加載了dll文件。將這兩組數(shù)據(jù)以唯一序號命名,存入兩個(gè)不同的文件夾。CDialog::OnOK()。 TerminateProcess(,exitcode)。 CopyFile(D:\\test\\,errorfile,false)。如果結(jié)果不同則視為運(yùn)行時(shí)出錯(cuò),“學(xué)號運(yùn)行錯(cuò)誤60”文本文件,作為評判結(jié)果存至結(jié)果文件夾oute。 Sleep(200)。 DWORD bytesRead。memcpy(szInPut,put,20)。 CloseHandle(hWrite)。 CreateProcess(m_exeEdit,NULL,NULL,NULL,TRUE,NULL,NULL,NULL, amp。 = SW_HIDE。si)。 STARTUPINFO si。 CreatePipe(amp。sa,0)。 = TRUE。 HANDLE hInputRead,hInputWrite。通過管道技術(shù),建立兩個(gè)管道來實(shí)現(xiàn)輸入、輸出數(shù)據(jù)的重定向問題。CString filetitle=((39。代碼如下:CString filepath=(i, 0)。 (0, , 0)。 =D:\\test\\result。由于這些文件都存放在result文件夾下,所以選擇文件時(shí)直接定位至result文件夾,并且將選擇的所有目標(biāo)程序加入列表控件。 UpdateData(false)。 DWORD bytesRead。memcpy(szInPut,put,20)。 CloseHandle(hWrite)。 CreateProcess(m_exeEdit,NULL,NULL,NULL,TRUE,NULL,NULL,NULL,amp。 = SW_HIDE。si)。 STARTUPINFO si。 CreatePipe(amp。sa,0)。 = TRUE。 HANDLE hInputRead,hInputWrite。 }2. “運(yùn)行正確程序”按鈕:在選擇了題目正確的exe程序之后
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1