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

正文內(nèi)容

c語(yǔ)言源程序的自動(dòng)評(píng)判畢業(yè)設(shè)計(jì)論文-在線瀏覽

2024-09-15 00:48本頁(yè)面
  

【正文】 到運(yùn)行正確exe文件后得到的數(shù)據(jù)輸出,即標(biāo)準(zhǔn)答案。如果程序需要輸入數(shù)據(jù)之后運(yùn)行的,在“正確輸入”編輯框中輸入正確數(shù)據(jù)。因?yàn)檫@里是老師輸入正確程序的正確數(shù)據(jù)輸入,所以老師會(huì)確保輸入數(shù)據(jù)的正確性。之后通過(guò)CreateProcess()函數(shù)運(yùn)行正確程序,這里通過(guò)重定向技術(shù)使用管道來(lái)完成自動(dòng)的使用輸入數(shù)據(jù)運(yùn)行程序并且自動(dòng)的將輸出數(shù)據(jù)送入編輯框而不是在顯示屏顯示。2. 選擇目標(biāo)文件:輸入正確數(shù)據(jù),以此數(shù)據(jù)運(yùn)行正確的exe文件后,得到正確輸出,即標(biāo)準(zhǔn)答案。此功能通過(guò)一個(gè)“添加文件”完成選取所有目標(biāo)程序,通過(guò)一個(gè)列表控件來(lái)完成添加所有目標(biāo)文件。每個(gè)項(xiàng)目中同樣也是放的目標(biāo)程序的絕對(duì)路徑(包括文件名),因?yàn)橹笫褂煤瘮?shù)運(yùn)行程序是需要使用程序的絕對(duì)路徑。在每次循環(huán)中,以運(yùn)行正確程序的exe文件時(shí)的數(shù)據(jù)輸入作為運(yùn)行目標(biāo)程序的數(shù)據(jù)輸入,即使用正確輸入編輯框中的輸入數(shù)據(jù),去運(yùn)行目標(biāo)程序,得到輸出數(shù)據(jù),將此輸出數(shù)據(jù)與正確輸出編輯框中的數(shù)據(jù)比較,這兩個(gè)數(shù)據(jù)都是CString類型的。完成一個(gè)目標(biāo)程序的運(yùn)行、評(píng)判之后,循環(huán)繼續(xù),去運(yùn)行、評(píng)判下一個(gè)C源程序。此功能通過(guò)一個(gè)“開始”按鈕完成。一個(gè)問(wèn)題是需要考慮到這里運(yùn)行的是學(xué)生的程序而不是老師的正確程序,所以可能出現(xiàn)運(yùn)行異常、死循環(huán)的進(jìn)程不結(jié)束的問(wèn)題,那么就會(huì)出現(xiàn)死機(jī)的情況,主程序運(yùn)行不下去,所以這里需要設(shè)置進(jìn)程運(yùn)行超時(shí)的處理。若果進(jìn)程自動(dòng)結(jié)束,則于正確結(jié)果比較得到評(píng)判結(jié)果。此對(duì)話框的數(shù)據(jù)輸出是:以輸入的正確測(cè)試數(shù)據(jù)運(yùn)行正確程序后的正確數(shù)據(jù)輸出;比較運(yùn)行目標(biāo)程序后的數(shù)據(jù)輸出與正確數(shù)據(jù)輸出,結(jié)果相同后得到的以學(xué)號(hào)信息區(qū)別的存至結(jié)果文件夾的運(yùn)行正確的評(píng)判結(jié)果;比較運(yùn)行目標(biāo)程序后的數(shù)據(jù)輸出與正確數(shù)據(jù)輸出,結(jié)果不同后得到的以學(xué)號(hào)信息區(qū)別的存至結(jié)果文件夾的運(yùn)行錯(cuò)誤的評(píng)判結(jié)果。 準(zhǔn)備工作在開始系統(tǒng)設(shè)計(jì)之前,在Visual C++中新建一個(gè)Win32空白工程,這里工程名為test,然后在此空白工程中新建一個(gè)C++文件。在此空白工程文件夾test中,新建一個(gè)文件夾result用于保存編譯鏈接成功后生成的以學(xué)號(hào)命名的目標(biāo)程序,新建一個(gè)文件夾oute用于存放最后的評(píng)判信息。接著開始系統(tǒng)的具體功能實(shí)現(xiàn)階段。這個(gè)函數(shù)是系統(tǒng)的切入點(diǎn)。系統(tǒng)的使用從點(diǎn)擊這個(gè)按鈕開始。編輯此對(duì)話框,添加“初始化”、“添加文件”按鈕和一個(gè)列表控件,保留默認(rèn)的“OK”、“Cancle”按鈕。在Visual C++中可以通過(guò)庫(kù)函數(shù)DeleteFile()刪除一個(gè)文件。 BOOL bFound。 while(bFound) { bFound = ()。 if(()) { if(!()) DeleteFolder(sFilePath)。 } DeleteFile(sFilePath)。 SetFileAttributes(sPath, FILE_ATTRIBUTE_NORMAL)。 }b. ClearFolder函數(shù)void AddFile::ClearFolder(CString sPath){ CFileFind ff。 bFound = (sPath + \\*.*)。 CString sFilePath = ()。 } else { if(()) { SetFileAttributes(sFilePath, FILE_ATTRIBUTE_NORMAL)。 } } ()。 }(2). 完整的“初始化”按鈕代碼如下:{CString StrDestFile=D:\\test\\。// CString DirectoryDebugName=D:\\test\\Debug。//刪除DEBUG文件夾 CString DirectoryResultName=D:\\test\\result。//清空result文件夾ClearFolder(D:\\test\\oute)。//設(shè)置“添加文件”按鈕禁用,點(diǎn)擊“初始化”后啟用GetDlgItem(IDOK)EnableWindow(true)。然后將列表控件中的項(xiàng)目總數(shù)和每個(gè)項(xiàng)目所指向的C源程序文件的絕對(duì)路徑存入注冊(cè)表,以備編譯鏈接時(shí)使用。(2). 點(diǎn)擊“添加文件”按鈕后彈出打開文件對(duì)話框,通過(guò)CFileDialog來(lái)實(shí)現(xiàn),設(shè)置過(guò)濾器以便只能選擇后綴名為*.c的C源程序文件,同時(shí)相關(guān)參數(shù)設(shè)置為能夠選擇多個(gè)文件,其代碼如下:CFileDialog Dlg(TRUE,*.c,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,C文件(*.c)|*.c|,NULL)。 while(pos!=NULL) { CString FileName=。 (0, , 0)。 }(4). 將選取的所有C源程序文件的絕對(duì)路徑存入列表控件后,通過(guò)AfxGetApp()WriteProfileInt將列表框項(xiàng)目總數(shù)寫入注冊(cè)表,然后以項(xiàng)目總數(shù)設(shè)置循環(huán),通過(guò)AfxGetApp()WriteProfileString依次將每個(gè)C源程序文件的絕對(duì)路徑寫入注冊(cè)表,以備編譯鏈接時(shí)使用,其代碼如下:AfxGetApp()WriteProfileInt(Configure, count,())。 i () 。 wsprintf(szRegKey, %d, i)。}(5). 完整的“添加文件”按鈕代碼如下:{ CFileDialog Dlg(TRUE,*.c,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,C文件(*.c)|*.c|,NULL)。 while(pos!=NULL) { CString FileName=。 (0, , 0)。 } AfxGetApp()WriteProfileInt(Configure, count,())。 i () 。 wsprintf(szRegKey, %d, i)。 } } }3. “OK”按鈕:此按鈕的代碼是新建對(duì)話框時(shí)的默認(rèn)代碼,無(wú)實(shí)際功能,其按下的意義在于,取得按下“OK”的消息,調(diào)用編譯鏈接函數(shù)。//彈出添加文件對(duì)話框if(()==IDOK)//若按下添加文件對(duì)話框的“OK”按鈕{ build()。建立此函數(shù)的過(guò)程是:右擊CCommands類下的ICommands,選擇Add Method,然后方法名稱為build,即建立了一個(gè)build()函數(shù),此時(shí)函數(shù)代碼為空,不實(shí)現(xiàn)功能。此函數(shù)要實(shí)現(xiàn)的功能是:1. 初始化工作,以保證編譯鏈接成功后在Debug文件夾中生成的目標(biāo)程序是對(duì)應(yīng)當(dāng)前的C源程序文件的,其代碼如下:DeleteFile(D:\\test\\)。//刪除Debug文件夾2. 取得C源程序文件中的學(xué)號(hào)信息,因?yàn)镃源程序文件存至列表控件中的是其絕對(duì)路徑,包括路徑和完整的文件名(因?yàn)樵诿麜r(shí)有要求,所以文件名也就是“”),所以需要提取出文件名中的學(xué)號(hào)(即文件標(biāo)題),學(xué)號(hào)是唯一區(qū)別標(biāo)志,以便在給出評(píng)判結(jié)果時(shí)使用學(xué)號(hào)信息,代碼如下:CString stillfilename。CString StrFile=AfxGetApp()GetProfileString(Configure, RegKey, )。\\39。//獲取文件名,帶后綴 filetitle=((39。))。每次循環(huán)中首先進(jìn)行初始化操作。(1). 取得項(xiàng)目總數(shù),并以此設(shè)置循環(huán)的代碼如下:int nNumWorkspaces=AfxGetApp()GetProfileInt(Configure,count,0)。nWorkspaceNumber = 1。 char RegKey[50]。CString StrDestFile=D:\\test\\。//拷貝并改名C文件至空白工程CComBSTR bszWorkspacePathName = D:\\test\\。VERIFY_OK(m_pApplicationget_Documents(amp。CComVariant OleVariant。IID_IDocuments pDocuments(pDispDocuments)。 VERIFY_OK(pDocumentsOpen(bszWorkspacePathName, OleVariant, OleVariant, amp。CComPtrIDispatch pDispProjects。pDispProjects))。IID_IProjects pProjects(pDispProjects)。lCount))。 i lCount+1 。 CComVariant Vari = i。 VERIFY_OK(pProjectsItem(Vari, amp。CComQIPtrIBuildProject,amp。 CComPtrIConfigurations pConfigs。pConfigs))。lNumConfigs))。 j lNumConfigs+1 。 CComPtrIConfiguration pConfig。pConfig))。 CComBSTR bszStr。bszStr))。 } }(3). 在循環(huán)中遇到的問(wèn)題是每次打開一個(gè)工作空間并對(duì)工程進(jìn)行編譯鏈接后沒(méi)有關(guān)閉文檔,造成目標(biāo)程序永遠(yuǎn)是對(duì)應(yīng)第一個(gè)C源程序文件的,解決的辦法是在編譯鏈接結(jié)束后關(guān)閉文檔,即工作空間,代碼如下:DsSaveStatus d。=dsSaveChangesNo。VERIFY_OK(pDocumentsCloseAll(vtSaveChanges,amp。4. 每次循環(huán)中,編譯鏈接結(jié)束后,關(guān)閉工作空間,在空白工程test文件夾中的Debug下,則視為編譯鏈接正確,并改名為以學(xué)號(hào)命名的exe文件,作為此C源程序文件編譯鏈接成功生成的目標(biāo)程序。這一部分代碼如下:CFileFind find。if((exefile)){ CopyFile(exefile,D:\\test\\result\\,false)。 MoveFile(D:\\test\\result\\,newexefile)。CString file=D:\\test\\。CopyFile(file,errorfile,false)。代碼如下:CString StrInfo=編譯連接結(jié)束,點(diǎn)擊進(jìn)行運(yùn)行評(píng)判。 //這里run是建立的運(yùn)行/評(píng)判對(duì)話框的類名 ()。這就首先需要在工作空間,右擊Auto Classes添加一個(gè)對(duì)話框類run,即添加運(yùn)行/評(píng)判對(duì)話框。另外,添加一個(gè)列表控件,添加一個(gè)“選擇正確程序”按鈕,一個(gè)“運(yùn)行正確程序”按鈕,一個(gè)“選擇文件”按鈕,保留默認(rèn)的“OK”按鈕和“Cancle”按鈕。之后點(diǎn)擊這個(gè)按鈕,彈出選擇文件對(duì)話框,設(shè)置過(guò)濾器為只能選擇exe文件,然后選擇正確的exe文件,并在編輯框中顯示出其絕對(duì)路徑。 if(()==IDOK) { CString StrFileName=()。 GetDlgItem(IDC_run_BUTTON)EnableWindow(true)。在運(yùn)行正確的exe程序時(shí),利用CreateProcess()函數(shù)來(lái)新建一個(gè)進(jìn)程運(yùn)行exe程序,因?yàn)槭钦_的程序,所以這里不設(shè)置進(jìn)程運(yùn)行超時(shí)強(qiáng)制結(jié)束。其代碼如下:SECURITY_ATTRIBUTES sa,sa2。HANDLE hRead,hWrite。 = NULL。 CreatePipe(amp。hWrite,amp。 = sizeof(SECURITY_ATTRIBUTES)。 = TRUE。hInputRead,amp。sa2,0)。 PROCESS_INFORMATION pi。 GetStartupInfo(amp。 = hWrite。 = hInputRead。 = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES。UpdateData(TRUE)。si,amp。CloseHandle(hInputRead)。 UpdateData(TRUE)。 //輸入框輸入數(shù)據(jù),類型為CStringchar szInPut[20]。//將CString類型數(shù)據(jù)輸入到char中WriteFile(hInputWrite,szInPut,strlen(szInPut),amp。 char buffer[4096] = {0}。 while (true) { if(ReadFile(hRead,buffer,4095,amp。 m_outEdit += buffer。 Sleep(200)。3. “選擇文件”按鈕:此按鈕的作用是在得到正確輸出數(shù)據(jù)后,點(diǎn)擊此按鈕,彈出選擇文件對(duì)話框,選擇所有C源程序文件編譯鏈接正確后生成的以學(xué)號(hào)命名的目標(biāo)程序。列表控件的每個(gè)項(xiàng)目顯示的是目標(biāo)文件的絕對(duì)路徑。其代碼如下:CFileDialog Dlg(TRUE,*.exe,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,可執(zhí)行文件(*.ex
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1