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

正文內(nèi)容

c語(yǔ)言源程序的自動(dòng)評(píng)判畢業(yè)設(shè)計(jì)論文(編輯修改稿)

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

【文章內(nèi)容簡(jiǎn)介】 (Configure, count,())。 for (int i = 0 。 i () 。 i++) { char szRegKey[50]。 wsprintf(szRegKey, %d, i)。 AfxGetApp()WriteProfileString(Configure, szRegKey, (i, 0))。 } } }3. “OK”按鈕:此按鈕的代碼是新建對(duì)話框時(shí)的默認(rèn)代碼,無(wú)實(shí)際功能,其按下的意義在于,取得按下“OK”的消息,調(diào)用編譯鏈接函數(shù)。此消息的實(shí)現(xiàn)是在系統(tǒng)切入點(diǎn)AutoCommandMethod()函數(shù)出,點(diǎn)擊工具欄按鈕后彈出添加文件對(duì)話框,進(jìn)行完選取C源程序文件的操作后,點(diǎn)擊“OK”按鈕,AutoCommandMethod()函數(shù)得到按下“OK”按鈕的消息,然后調(diào)用編譯鏈接函數(shù),進(jìn)入下一步工作,這里AutoCommandMethod()函數(shù)相關(guān)代碼如下:AddFile AddFileDlg。//彈出添加文件對(duì)話框if(()==IDOK)//若按下添加文件對(duì)話框的“OK”按鈕{ build()。//調(diào)用編譯鏈接函數(shù)} 實(shí)現(xiàn)編譯鏈接函數(shù)首先建立編譯鏈接函數(shù),這個(gè)函數(shù)是在Addin方式下建立的,目的是操控Visual C++的開(kāi)發(fā)環(huán)境,實(shí)現(xiàn)在工作空間打開(kāi)工程文件,調(diào)用Visual C++自帶的編譯器去編譯鏈接工程。建立此函數(shù)的過(guò)程是:右擊CCommands類(lèi)下的ICommands,選擇Add Method,然后方法名稱(chēng)為build,即建立了一個(gè)build()函數(shù),此時(shí)函數(shù)代碼為空,不實(shí)現(xiàn)功能。 在添加文件對(duì)話框完成所有工作后,點(diǎn)擊“OK”按鈕,發(fā)出按鈕按下的消息,在AutoCommandMethod()函數(shù)中調(diào)用build()函數(shù)。此函數(shù)要實(shí)現(xiàn)的功能是:1. 初始化工作,以保證編譯鏈接成功后在Debug文件夾中生成的目標(biāo)程序是對(duì)應(yīng)當(dāng)前的C源程序文件的,其代碼如下:DeleteFile(D:\\test\\)。//DeleteFolder(D:\\test\\Debug)。//刪除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 filetitle。CString StrFile=AfxGetApp()GetProfileString(Configure, RegKey, )。//獲取文件路徑和完整文件名 stillfilename=(()(39。\\39。)1)。//獲取文件名,帶后綴 filetitle=((39。.39。))。//獲 取文件標(biāo)題(學(xué)號(hào)),即文件名去掉后綴3. 取得注冊(cè)表中存入的添加文件對(duì)話框中列表控件的項(xiàng)目總數(shù)和每個(gè)項(xiàng)目中選取的C源程序文件的絕對(duì)路徑,并以項(xiàng)目總數(shù)設(shè)置循環(huán)。每次循環(huán)中首先進(jìn)行初始化操作。新打開(kāi)一個(gè)工作空間,打開(kāi)此時(shí)的test工程文件(),最后編譯鏈接此工程文件。(1). 取得項(xiàng)目總數(shù),并以此設(shè)置循環(huán)的代碼如下:int nNumWorkspaces=AfxGetApp()GetProfileInt(Configure,count,0)。for (int nWorkspaceNumber = nNumWorkspaces。nWorkspaceNumber = 1。nWorkspaceNumber)(2). 改名復(fù)制C源程序文件,新建工作空間,打開(kāi)工程文件,編譯鏈接的代碼如下:long lCount。 char RegKey[50]。wsprintf(RegKey, %d, nWorkspaceNumber1)。CString StrDestFile=D:\\test\\。CopyFile(StrFile,StrDestFile,false)。//拷貝并改名C文件至空白工程CComBSTR bszWorkspacePathName = D:\\test\\。 CComPtrIDispatch pDispDocuments。VERIFY_OK(m_pApplicationget_Documents(amp。pDispDocuments))。CComVariant OleVariant。 CComQIPtrIDocuments, amp。IID_IDocuments pDocuments(pDispDocuments)。CComPtrIDispatch pWorkspace。 VERIFY_OK(pDocumentsOpen(bszWorkspacePathName, OleVariant, OleVariant, amp。pWorkspace))。CComPtrIDispatch pDispProjects。 VERIFY_OK(m_pApplicationget_Projects(amp。pDispProjects))。CComQIPtrIProjects, amp。IID_IProjects pProjects(pDispProjects)。VERIFY_OK(pProjectsget_Count(amp。lCount))。 for (long i = 1 。 i lCount+1 。 i++) { long lNumConfigs。 CComVariant Vari = i。 CComPtrIGenericProject pGenProject。 VERIFY_OK(pProjectsItem(Vari, amp。pGenProject))。CComQIPtrIBuildProject,amp。IID_IBuildProjectpProject(pGenProject)。 CComPtrIConfigurations pConfigs。 VERIFY_OK(pProjectget_Configurations(amp。pConfigs))。 VERIFY_OK(pConfigsget_Count(amp。lNumConfigs))。 for (long j = 1 。 j lNumConfigs+1 。 j++) { CComVariant Varj = j。 CComPtrIConfiguration pConfig。 VERIFY_OK(pConfigsItem(Varj, amp。pConfig))。 CComVariant VarDisp = pConfig。 CComBSTR bszStr。 VERIFY_OK(pConfigget_Name(amp。bszStr))。 VERIFY_OK(m_pApplicationBuild(VarDisp))。 } }(3). 在循環(huán)中遇到的問(wèn)題是每次打開(kāi)一個(gè)工作空間并對(duì)工程進(jìn)行編譯鏈接后沒(méi)有關(guān)閉文檔,造成目標(biāo)程序永遠(yuǎn)是對(duì)應(yīng)第一個(gè)C源程序文件的,解決的辦法是在編譯鏈接結(jié)束后關(guān)閉文檔,即工作空間,代碼如下:DsSaveStatus d。VARIANT vtSaveChanges。=dsSaveChangesNo。=VT_I4。VERIFY_OK(pDocumentsCloseAll(vtSaveChanges,amp。d))。4. 每次循環(huán)中,編譯鏈接結(jié)束后,關(guān)閉工作空間,在空白工程test文件夾中的Debug下,則視為編譯鏈接正確,并改名為以學(xué)號(hào)命名的exe文件,作為此C源程序文件編譯鏈接成功生成的目標(biāo)程序。而如果編譯鏈接結(jié)束后,則視為編譯鏈接錯(cuò)誤,“學(xué)號(hào)編譯錯(cuò)誤50”文本文件,作為評(píng)判結(jié)果存至結(jié)果文件夾oute。這一部分代碼如下:CFileFind find。CFileFind findexe。if((exefile)){ CopyFile(exefile,D:\\test\\result\\,false)。 {if((D:\\test\\result\\)) { CString newexefile=D:\\test\\result\\+filetitle+.exe。 MoveFile(D:\\test\\result\\,newexefile)。 } }}else{ CString errorfile。CString file=D:\\test\\。errorfile=D:\\test\\oute\\+filetitle+編譯錯(cuò)誤50+.txt。CopyFile(file,errorfile,false)。}5. 編譯鏈接完所有的C源程序文件,在result文件夾中存儲(chǔ)所有編譯鏈接成功后得到的以學(xué)號(hào)命名的目標(biāo)程序,在oute文件夾中存儲(chǔ)所有編譯鏈接錯(cuò)誤沒(méi)有得到目標(biāo)程序的以學(xué)號(hào)為區(qū)別信息的評(píng)判結(jié)果之后,彈出消息提示框,提示編譯鏈接已經(jīng)結(jié)束,點(diǎn)擊確認(rèn)進(jìn)入運(yùn)行/評(píng)判對(duì)話框。代碼如下:CString StrInfo=編譯連接結(jié)束,點(diǎn)擊進(jìn)行運(yùn)行評(píng)判。if(AfxMessageBox(StrInfo,MB_YESNO)==IDYES) { run RunDlg。 //這里run是建立的運(yùn)行/評(píng)判對(duì)話框的類(lèi)名 ()。 } 實(shí)現(xiàn)運(yùn)行/評(píng)判對(duì)話框調(diào)用編譯鏈接函數(shù),對(duì)所有的C源程序文件進(jìn)行編譯鏈接,處理生成的目標(biāo)文件,并且先一步給出編譯鏈接不正確的C源程序文件的評(píng)判結(jié)果后,彈出運(yùn)行/評(píng)判對(duì)話框。這就首先需要在工作空間,右擊Auto Classes添加一個(gè)對(duì)話框類(lèi)run,即添加運(yùn)行/評(píng)判對(duì)話框。編輯此對(duì)話框,首先添加一些必要的用于說(shuō)明性的靜態(tài)文本,再添加編輯框一用于顯示運(yùn)行的正確的exe程序絕對(duì)路徑;編輯框二用于輸入運(yùn)行正確程序的輸入數(shù)據(jù),此數(shù)據(jù)也用于作為運(yùn)行所有生成的目標(biāo)程序的輸入數(shù)據(jù);編輯框三用于輸出運(yùn)行正確exe程序后的正確輸出結(jié)果,并且在運(yùn)行所有的目標(biāo)程序得到輸出結(jié)果后與此編輯框中的正確輸出結(jié)果比較以得到評(píng)判結(jié)果。另外,添加一個(gè)列表控件,添加一個(gè)“選擇正確程序”按鈕,一個(gè)“運(yùn)行正確程序”按鈕,一個(gè)“選擇文件”按鈕,保留默認(rèn)的“OK”按鈕和“Cancle”按鈕。1. “選擇正確程序”按鈕:在開(kāi)始選擇C源程序文件之前,需要老師先在Visual C++下運(yùn)行一次題目正確的程序,得到正確的exe程序。之后點(diǎn)擊這個(gè)按鈕,彈出選擇文件對(duì)話框,設(shè)置過(guò)濾器為只能選擇exe文件,然后選擇正確的exe文件,并在編輯框中顯示出其絕對(duì)路徑。代碼如下:CFileDialog Dlg(TRUE,*.exe,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,可執(zhí)行文件(*.exe)|*.exe|,NULL)。 if(()==IDOK) { CString StrFileName=()。 GetDlgItem(IDC_exe_EDIT)SetWindowText(StrFileName)。 GetDlgItem(IDC_run_BUTTON)EnableWindow(true)。 }2. “運(yùn)行正確程序”按鈕:在選擇了題目正確的exe程序之后,在相應(yīng)的正確輸入編輯框輸入數(shù)據(jù),以此數(shù)據(jù)來(lái)運(yùn)行正確的exe程序,而如果程序是不需要數(shù)據(jù)輸入運(yùn)行后直接得到數(shù)據(jù)輸出的,則也省略掉數(shù)據(jù)輸入這一步。在運(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é)束。關(guān)于輸入、輸出數(shù)據(jù)的重定向問(wèn)題,通過(guò)建立兩個(gè)管道來(lái)解決,輸入數(shù)據(jù)取正確輸入編輯框中的數(shù)據(jù),輸出數(shù)據(jù)輸出到正確輸出編輯框。其代碼如下:SECURITY_ATTRIBUTES sa,sa2。 HANDLE hInputRead,hInputWrite。HANDLE hRead,hWrite。 = sizeof(SECURITY_ATTRIBUTES)。 = NULL。 = TRUE。 CreatePipe(amp。hRead,amp。hWrite,amp。sa,0)。 = sizeof(SECURITY_ATTRIBUTES)。 = NULL。 = TRUE。 CreatePipe(amp。hInputRead,amp。hInputWrite,amp。sa2,0)。 STARTUPINFO si。 PROCESS_INFORMATION pi。 = sizeof(STARTUPINFO)。 GetStartupInfo(amp。si)。 = hWrite。 = hWrite。 = hInputRead。 = SW_HIDE。 = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES。 DWORD dwWritten。UpdateData(TRUE)。 CreateProcess(m_exeEdit,NULL,NULL,NULL,TRUE,NULL,NULL,NULL,amp。si,amp。pi)。CloseHandle(hInp
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1