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

正文內(nèi)容

c語(yǔ)言源程序的自動(dòng)評(píng)判畢業(yè)設(shè)計(jì)論文-文庫(kù)吧在線(xiàn)文庫(kù)

  

【正文】 行正確程序,這里通過(guò)重定向技術(shù)使用管道來(lái)完成自動(dòng)的使用輸入數(shù)據(jù)運(yùn)行程序并且自動(dòng)的將輸出數(shù)據(jù)送入編輯框而不是在顯示屏顯示。在每次循環(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類(lèi)型的。若果進(jìn)程自動(dòng)結(jié)束,則于正確結(jié)果比較得到評(píng)判結(jié)果。接著開(kāi)始系統(tǒng)的具體功能實(shí)現(xiàn)階段。在Visual C++中可以通過(guò)庫(kù)函數(shù)DeleteFile()刪除一個(gè)文件。 } DeleteFile(sFilePath)。 CString sFilePath = ()。// CString DirectoryDebugName=D:\\test\\Debug。然后將列表控件中的項(xiàng)目總數(shù)和每個(gè)項(xiàng)目所指向的C源程序文件的絕對(duì)路徑存入注冊(cè)表,以備編譯鏈接時(shí)使用。 }(4). 將選取的所有C源程序文件的絕對(duì)路徑存入列表控件后,通過(guò)AfxGetApp()WriteProfileInt將列表框項(xiàng)目總數(shù)寫(xiě)入注冊(cè)表,然后以項(xiàng)目總數(shù)設(shè)置循環(huán),通過(guò)AfxGetApp()WriteProfileString依次將每個(gè)C源程序文件的絕對(duì)路徑寫(xiě)入注冊(cè)表,以備編譯鏈接時(shí)使用,其代碼如下:AfxGetApp()WriteProfileInt(Configure, count,())。 while(pos!=NULL) { CString FileName=。 wsprintf(szRegKey, %d, i)。此函數(shù)要實(shí)現(xiàn)的功能是:1. 初始化工作,以保證編譯鏈接成功后在Debug文件夾中生成的目標(biāo)程序是對(duì)應(yīng)當(dāng)前的C源程序文件的,其代碼如下:DeleteFile(D:\\test\\)。//獲取文件名,帶后綴 filetitle=((39。nWorkspaceNumber = 1。VERIFY_OK(m_pApplicationget_Documents(amp。CComPtrIDispatch pDispProjects。 i lCount+1 。 CComPtrIConfigurations pConfigs。 CComPtrIConfiguration pConfig。 } }(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。這一部分代碼如下:CFileFind find。CopyFile(file,errorfile,false)。另外,添加一個(gè)列表控件,添加一個(gè)“選擇正確程序”按鈕,一個(gè)“運(yùn)行正確程序”按鈕,一個(gè)“選擇文件”按鈕,保留默認(rèn)的“OK”按鈕和“Cancle”按鈕。在運(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é)束。 CreatePipe(amp。hInputRead,amp。 = hWrite。si,amp。//將CString類(lèi)型數(shù)據(jù)輸入到char中WriteFile(hInputWrite,szInPut,strlen(szInPut),amp。 Sleep(200)。if(()==IDOK) { POSITION pos=()。CString filename = (()(39。以正確輸入編輯框中的數(shù)據(jù)作為輸入數(shù)據(jù)運(yùn)行目標(biāo)程序,如果無(wú)需數(shù)據(jù)輸入則視為輸入為空;將運(yùn)行后得到的數(shù)據(jù)存入一個(gè)字符串中。 CreatePipe(amp。hInputRead,amp。 = hWrite。si,amp。//將CString類(lèi)型數(shù)據(jù)輸入到char中WriteFile(hInputWrite,szInPut,strlen(szInPut),amp。 } (3). 為防止運(yùn)行時(shí)出現(xiàn)死循環(huán)等異常情況,設(shè)置進(jìn)程的運(yùn)行時(shí)間為4秒,超時(shí)則強(qiáng)制結(jié)束進(jìn)程,且判為錯(cuò)誤。} }else { DWORD Event。完成系統(tǒng)的詳細(xì)設(shè)計(jì)之后,對(duì)系統(tǒng)進(jìn)行測(cè)試,同時(shí)演示出運(yùn)行時(shí)的界面,給用戶(hù)以直觀的使用幫助。圖41 加載dll文件成功點(diǎn)擊“關(guān)閉”后,在Visual C++開(kāi)發(fā)環(huán)境的工具欄中顯示添加了一個(gè)新的按鈕,如圖42所示此按鈕即是系統(tǒng)的開(kāi)始使用按鈕,所謂AddIn的方式,也就是把程序功能嵌入到Visual C++開(kāi)發(fā)環(huán)境中。無(wú)法通過(guò)編譯鏈接,,如圖45所示。 結(jié)論經(jīng)過(guò)設(shè)計(jì)、開(kāi)發(fā)、測(cè)試,整個(gè)系統(tǒng)得以實(shí)現(xiàn)。第二個(gè)就是對(duì)于編譯鏈接成功后得到的目標(biāo)程序如何運(yùn)行,在Visual C++中運(yùn)行一個(gè)exe程序有多種方法,例如可以通過(guò)ShellExecute()、WinExec()來(lái)運(yùn)行,但是考慮到需要在運(yùn)行時(shí)重定向輸入輸出數(shù)據(jù),最后決定通過(guò)新建一個(gè)進(jìn)程來(lái)運(yùn)行目標(biāo)程序,即使用CreateProcess()函數(shù)來(lái)運(yùn)行。經(jīng)過(guò)上網(wǎng)查詢(xún),現(xiàn)有的類(lèi)似軟件比較多的是帶有自動(dòng)評(píng)判的考試系統(tǒng),哈爾濱工業(yè)大學(xué)在C語(yǔ)言課程的上機(jī)實(shí)驗(yàn)中采用了一個(gè)C語(yǔ)言自動(dòng)評(píng)判,但是具體信息并未公開(kāi)。在論文開(kāi)題階段,他針對(duì)設(shè)計(jì)任務(wù)給予了很多建議。什么是消息(message)?消息就是一個(gè)指定事件的32比特?cái)?shù)。Windows對(duì)象有很多,譬如桌面、讀取所使用的程序等等。資源泄漏將導(dǎo)致系統(tǒng)崩潰。最后兩個(gè)參數(shù)用作消息的額外信息。第二章 C++精髓 如果你希望使用Microsoft Visual c++,在確實(shí)熟悉c++的情況下會(huì)大有幫助。 int m_nX2。類(lèi)名字一般以C開(kāi)頭,成員變量名字通常以m_為前綴。int變量是直線(xiàn)的終點(diǎn)。// 這是一個(gè)指向 CLine 類(lèi)的指針CLine *pMyLine。對(duì)于創(chuàng)建的對(duì)象在不用時(shí)需要調(diào)用delete,如同在C中調(diào)用flee釋放它們一樣。一些代碼將它初始化為缺省設(shè)置,另外一些代碼復(fù)制坐標(biāo)。 請(qǐng)注意delete之后的[]。在創(chuàng)建一條新直線(xiàn)時(shí),將自動(dòng)調(diào)用這些構(gòu)造函數(shù),如下所示:CLine::CLine(){ m_nX1=0。} 注意以上的函數(shù)聲明與常規(guī)C函數(shù)很相似,只是在函數(shù)名字的前面放置類(lèi)名以及一對(duì)冒號(hào)(CLine:)。}39。 return。CLine MyLine。 CLine m_LineRight。 這些代碼的作用是什么?通過(guò)這個(gè)類(lèi),我們擁有其他類(lèi)的所有功能,現(xiàn)在也可以使用其他Draw()函數(shù)來(lái)設(shè)置顏色。在這種情況下,不必從頭開(kāi)始創(chuàng)建新類(lèi)?,F(xiàn)在可以將這個(gè)類(lèi)用于其它類(lèi)中了。} 如何調(diào)用這些函數(shù)呢?下面列舉兩個(gè)例子,其中一個(gè)例子使用指針。void CLine::SetPoints(int x1, int y1, int x2, int y2){ m_nX1=x1。// 下面調(diào)用CLine()pMyLine = new CLine。}CLine::CLine(int x1, int y1, int x2, int y2){ m_nX1=x1。內(nèi)存泄漏在忘記釋放內(nèi)存時(shí)發(fā)生。// 為其中的100個(gè)項(xiàng)開(kāi)辟內(nèi)存pNumbers = new int[100]。// 這是一個(gè)指向CLine類(lèi)的指針CLine *pMyLine。//下面調(diào)用CLine(int x1, int y1, int x2, int y2)CLine MyLine(0,0,10,10)。public語(yǔ)句下的函數(shù)用于公有用途。之所以在此推薦微軟標(biāo)準(zhǔn)(稱(chēng)做匈牙利標(biāo)記法,Hungarian notation),是因?yàn)檫@一標(biāo)記法已被廣泛接受,而且非常容易閱讀。 // 析構(gòu)函數(shù) ~CLine()。 在很大程度上,類(lèi)(class)就是一種結(jié)構(gòu)。 break。命名句柄為your_HWND??梢詫⑦@些句柄看作指針。了解大概情況了吧? 那么,這些消息到哪里去了呢?它們將排隊(duì)等候,最終將有窗口把它們從隊(duì)列中取出,并做出相應(yīng)的反應(yīng)。在此,我謹(jǐn)對(duì)嚴(yán)迪新老師的悉心指導(dǎo)和幫助表示由衷的感謝! 參 考 文 獻(xiàn)[1] 羅斌. Visual C++編程技巧精選500例. 北京:中國(guó)水利水電出版社,2005[2] Charles Wright. Visual C++程序員實(shí)用大全. 北京:中國(guó)水利水電出版社,2001[3] Kris Jamsa. C/C++/C程序員實(shí)用大全C/C++/C最佳編程指南. 北京:中國(guó)水利水電出版社,2005[4] AI Steven Clayton Walnum. 標(biāo)準(zhǔn)C++寶典. 北京:電子工業(yè)出版社, 2005[5] Dale Rogerson. COM技術(shù)內(nèi)幕. 北京:清華大學(xué)出版社,1993[6] Microsoft公司. MSDN Library Visual Studio 版 附錄A 外文參考文獻(xiàn)(譯文)文獻(xiàn)一 Visual C++基礎(chǔ)第一章 句柄和消息技術(shù)內(nèi)幕也許你希望直截了當(dāng)開(kāi)始研究代碼,但事實(shí)上并非如此。當(dāng)然,本系統(tǒng)還不盡完善,評(píng)判的是實(shí)際教學(xué)中學(xué)生學(xué)習(xí)C語(yǔ)言時(shí)編寫(xiě)的較為簡(jiǎn)單的源程序,輸入輸出相對(duì)而言也較為簡(jiǎn)單,對(duì)于評(píng)判結(jié)果,也還沒(méi)有做到進(jìn)一步細(xì)致的區(qū)分各種情況,暫時(shí)只有三種結(jié)果。其次,使自己更加熟悉的C語(yǔ)言、C++語(yǔ)言,以及Visual C++的開(kāi)發(fā)環(huán)境,學(xué)習(xí)了以前沒(méi)有深入學(xué)習(xí)過(guò)的知識(shí)。最終完成的系統(tǒng)達(dá)到了預(yù)期的目標(biāo)??瞻滋幱覔舨榭丛敿?xì)信息,便可以直觀的得到評(píng)判信息了。圖43 添加文件2. 點(diǎn)擊“OK”按鈕后,關(guān)閉添加文件對(duì)話(huà)框,調(diào)用編譯鏈接函數(shù)build(),系統(tǒng)自動(dòng)進(jìn)行編譯鏈接部分的工作,結(jié)束后彈出信息提示框,如圖44所示,點(diǎn)擊“是(Y)”后進(jìn)入運(yùn)行/評(píng)判對(duì)話(huà)框。為了測(cè)試出各種質(zhì)量的程序的評(píng)判結(jié)果是否正確,分別選取各文件夾中的一個(gè)程序修改使之存在語(yǔ)法錯(cuò)誤而無(wú)法通過(guò)編譯鏈接,選取另一個(gè)程序修改使之語(yǔ)法正確能夠通過(guò)編譯鏈接但輸出內(nèi)容與正確輸出不同。 CString errorfile=D:\\test\\oute\\+filetitle+運(yùn)行錯(cuò)誤60+.txt。其代碼如下:if(oute!=) { if(oute==m_outEdit) {CString rightfile=D:\\test\\oute\\+filetitle+運(yùn)行正確100+.txt。 while (true) { if(ReadFile(hRead,buffer,4095,amp。 UpdateData(TRUE)。 = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES。 PROCESS_INFORMATION pi。 = sizeof(SECURITY_ATTRIBUTES)。HANDLE hRead,hWrite。.39。 (0, 0, LVIF_TEXT, FileName,0, 0, 0, 0)。列表控件的每個(gè)項(xiàng)目顯示的是目標(biāo)文件的絕對(duì)路徑。 while (true) { if(ReadFile(hRead,buffer,4095,amp。 UpdateData(TRUE)。 = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES。 PROCESS_INFORMATION pi。 = sizeof(SECURITY_ATTRIBUTES)。HANDLE hRead,hWrite。 if(()==IDOK) { CString StrFileName=()。 //這里run是建立的運(yùn)行/評(píng)判對(duì)話(huà)框的類(lèi)名 ()。 MoveFile(D:\\test\\result\\,newexefile)。VERIFY_OK(pDocumentsCloseAll(vtSaveChanges,amp。 CComBSTR bszStr。lNumConfigs))。 VERIFY_OK(pProjectsItem(Vari, amp。IID_IProjects pProjects(pDispProjects)。IID_IDocuments pDocuments(pDispDocuments)。CString StrDestFile=D:\\test\\。每次循環(huán)中首先進(jìn)行初始化操作。CString StrFile=AfxGetApp()GetProfileString(Configure, RegKey, )。//彈出添加文件對(duì)話(huà)框if(()==IDOK)//若按下添加文件對(duì)話(huà)框的“OK”按鈕{ build()。 } AfxGetApp()WriteProfileInt(Configure, count,())。 wsprintf(szRegKey, %d, i)。 while(pos!=NULL) { CString FileName=。//清空result文件夾ClearFolder(D:\\test\\oute)。 } } ()。 }b. ClearFolder函數(shù)void AddFile::Clear
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1