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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-編程考試機(jī)器評(píng)卷系統(tǒng)—論文(編輯修改稿)

2024-09-03 11:15 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 fier ID(, ...)`。` | type_specifier ID `[` NUM `]`(, ...)`。`5. type_specifier`int` | `void` | `char`, actually this step is in declaration_list()6. fun_declarationtype_specifier ID `(` params `)` pound_stmt7. paramsparam_list | `void` | empty, `void` is thought as empty8. param_listparam_list `,` param | param9. paramtype_specifier ID | type_specifier ID `[` `]`10. pound_stmt`{` loal_declarations statement_list `}` | expression_stmt11. local_declarationslocal_declarations var_declaration | var_declaration12. `read` `(` var `)` `。`13. `write` `(` expression `)` `。`14. `printf` `(` `` STRING `` `)` `。`15. expression_stmtexpression `。` | `。`16. expressionvar `=` expression | logic1_expression17. logic1_expressionlogic1_expression `||` logic2_expression | logic2_expression18. logic2_expression logic2_expression `amp。amp。` simple_expression | simple_expression19. simple_expressionadditive_expression relop additive_expression | additive_expression20. relop `=` | `` | `` | `=` | `==` | `!=`21. additive_expression additive_expression addop term | term22. addop `+` | ``23. termterm mulop logic3_expression | logic3_expression24. mulop `*` | `/` | `%`25. logic3_expression `!` logic3_expression | factor26. factor`(` expression `)` | var | call | NUM27. varID | ID `[` expression `]`28. callID `(` args `)`29. argsargs_list | empty30. args_listargs_list `,` expression | expression31. sub_poundstmtID `:` | call `。` | expression_stmt32. if_stmt`if` `(` expression `)` pound_stmt33. | `if` `(` expression `)` pound_stmt `else` pound_stmt34. while_stmt`while` `(` expression `)` pound_stmt35. for_stmt`for` `(` var `=` expression `。` expression `。` var `=` expression `)` pound_stmt36. goto_stmt`goto` ID `。`37. break_stmt`break` `。`38. continue_stmt`continue` `。`39. return_stmt`return` `。` | `return` expression `。`l 基本樹(shù)形結(jié)構(gòu):if語(yǔ)句: if語(yǔ)句表達(dá)式語(yǔ)句語(yǔ)句while語(yǔ)句:while語(yǔ)句表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句表達(dá)式for語(yǔ)句表達(dá)式for循環(huán)語(yǔ)句:復(fù)合語(yǔ)句:語(yǔ)句復(fù)合語(yǔ)句語(yǔ)句語(yǔ)句聲明l 支持的語(yǔ)句及運(yùn)算:1) 數(shù)據(jù)類(lèi)型:int,char void,PCode里支持float,在80x86 ASM里不支持2) 語(yǔ)句:賦值(=),if, while,for,return,break,continue3) 數(shù)學(xué)運(yùn)算:+,-,*,/4) 關(guān)系運(yùn)算:= =,,=,=,!=5) 邏輯運(yùn)算:amp。amp。,||,!6) 支持函數(shù)的定義、調(diào)用7) 支持復(fù)合語(yǔ)句8) 注釋語(yǔ)句:C類(lèi)型的 /* */ 和C++類(lèi)型的 //:這里首先介紹兩個(gè)輔助類(lèi):l Class LineListRec:主要成員是lineno,用于記錄某個(gè)Token(變量或函數(shù)名)聲明或使用時(shí)的行數(shù),當(dāng)程序檢測(cè)出錯(cuò)誤時(shí)通過(guò)lineno可以獲取到發(fā)生錯(cuò)誤的變量名函數(shù)名以及行號(hào)。l Class BucketListRec:主要成員變量與作用如下表:數(shù)據(jù)類(lèi)型變量名含義CStringname變量名CStringscope函數(shù)域enum TokenTypetypeToken類(lèi)型intmemloc變量?jī)?nèi)存地址BOOLbArray是否正在檢查L(zhǎng)ineListRec*lineno行號(hào)BucketListRec*next鏈表中的下一項(xiàng)表2 BucketListRec成員變量含義表 BucketListRec類(lèi)是用于語(yǔ)法分析的一個(gè)重要輔助類(lèi),它記錄每一個(gè)變量或函數(shù)名的具體情況。一旦發(fā)生變量或函數(shù)使用錯(cuò)誤,變量函數(shù)作用域的越界錯(cuò)誤等BucketListRec就能夠輕松的檢測(cè)到,并返回錯(cuò)誤類(lèi)型與行號(hào)。符號(hào)表的建立也是由兩個(gè)主要類(lèi)來(lái)實(shí)現(xiàn)的。l Class CSymbolTable: CsymbolTable類(lèi)的主要作用為:把Class BucketListRec類(lèi)的對(duì)象通過(guò)hash函數(shù)找到位置后插入。它包含一個(gè)主要的成員變量:BucketListRec* hashTable[SIZE]另外在CsymbolTable類(lèi)中還有一個(gè)重要的函數(shù)PrintSynbalTable(LPCTSTR lpszPathName),參數(shù)lpszPathName輸入文件名,PrintSynbalTable實(shí)現(xiàn)通過(guò)一個(gè)遞歸函數(shù)輸出符號(hào)表到文件lpszPathName。l Class CFunArgsCheck:CfunArgsCheck類(lèi)的作用為:插入函數(shù)參數(shù)的類(lèi)型,以備在下一個(gè)步驟中做匹配檢測(cè)。:類(lèi)型檢測(cè)的功能是由Class Canalyzer來(lái)完成的,Canalyzer包括兩個(gè)部分:l 類(lèi)型匹配:函數(shù)或變量聲明時(shí)檢測(cè)是否已聲明,如已聲明則拋出錯(cuò)誤;函數(shù)調(diào)用或變量使用時(shí)檢測(cè)是否已聲明,如未聲明則拋出錯(cuò)誤。l 函數(shù)調(diào)用參數(shù)檢測(cè):檢測(cè)函數(shù)調(diào)用時(shí)傳入?yún)?shù)的類(lèi)型與函數(shù)聲明時(shí)參數(shù)的類(lèi)型是否匹配。 考試成績(jī)的入庫(kù)考試成績(jī)的入庫(kù),主要分為以下三個(gè)部分:分?jǐn)?shù)的得出、根據(jù)分?jǐn)?shù)書(shū)寫(xiě)評(píng)語(yǔ)、獲取題目對(duì)應(yīng)的分?jǐn)?shù)、評(píng)語(yǔ)并添加到數(shù)據(jù)庫(kù)中。另外為了方便用戶查看,還增加了一個(gè)查看程序的功能。在評(píng)分系統(tǒng)中分?jǐn)?shù)的得出是最為重要的部分,但不是最核心的部分。在本系統(tǒng)中評(píng)分的依據(jù)為C語(yǔ)言源程序解析的結(jié)果。由本文的第三部分可以看出,解析是一個(gè)復(fù)雜的過(guò)程,可能出現(xiàn)的錯(cuò)誤也是多樣化的。分?jǐn)?shù)必須作為一個(gè)全局變量貫穿整個(gè)程序。因此實(shí)現(xiàn)時(shí)在系統(tǒng)的主線程文件: CCProgrammeExaminationGradeSystemApp中增加一個(gè)整形的全局變量:int score,初始化為100分。在分一處發(fā)生錯(cuò)誤需要打分時(shí),加入以下代碼改變其分?jǐn)?shù)的值。CODE:extern CCProgrammeExaminationGradeSystemApp theApp。case kFunDec: if( ( tszName, tszScope ) == 1 ) { // not defined, so add it to the symbol table ( tszName, tszScope, ttype, tlineno, location++ )。 // add it to function declaration list ( t )。 } else{ // redefinition函數(shù)重定義 =。 OutputErrMsg( error in line %d: function 39。%s()39。 redefinition, tlineno, (LPCTSTR)tszName )。 }…………………….以上為函數(shù)發(fā)生重定義時(shí)的扣分情況。系統(tǒng)按照解析的順序依次扣分,在解析完成之后即得出考試的最終成績(jī)。 在得到考試分?jǐn)?shù)后,往往需要對(duì)考試成績(jī)進(jìn)行一個(gè)簡(jiǎn)單的數(shù)據(jù)分析。評(píng)語(yǔ)的書(shū)寫(xiě)即完成這個(gè)數(shù)據(jù)分析的功能,使整個(gè)系統(tǒng)更加合理,體現(xiàn)出人性化設(shè)計(jì)。 評(píng)語(yǔ)的書(shū)寫(xiě)是根據(jù)成績(jī)而來(lái),因此設(shè)計(jì)函數(shù)Cstring ment(int score)來(lái)實(shí)現(xiàn)這個(gè)功能。改函數(shù)輸入評(píng)分成績(jī),即返回對(duì)應(yīng)的評(píng)語(yǔ)。實(shí)現(xiàn)代碼如下: CString CCProgrammeExaminationGradeSystemDoc::ment(int score){ CString PY。 if (score==100) PY = 非常不錯(cuò),請(qǐng)?jiān)俳釉賲?!?if (score100 amp。amp。 score=90 ){ PY = 程序中有少許錯(cuò)誤,請(qǐng)務(wù)必注意程序的細(xì)節(jié)。 } if (score90 amp。amp。 score=80) { PY = 程序基本上是正確的,請(qǐng)注意C語(yǔ)言的語(yǔ)法。 } if (score70 amp。amp。 score=60) { PY = 程序中出現(xiàn)了較多的問(wèn)題,但仍能保持程序的結(jié)構(gòu)。希望以后努力改進(jìn)。 } if (score60) { PY = 你的程序評(píng)分為不及格,請(qǐng)認(rèn)真檢查存在問(wèn)題并加以改正。 } return PY。 }這個(gè)部分的功能大致可以分為兩點(diǎn):對(duì)應(yīng)數(shù)據(jù)的獲取和數(shù)據(jù)庫(kù)的插入操作。l 對(duì)應(yīng)數(shù)據(jù)的獲?。悍?jǐn)?shù)的獲取,,在程序結(jié)束部分直接讀取其值。 評(píng)語(yǔ)的獲取, ment(int score)獲取對(duì)應(yīng)的評(píng)語(yǔ) C語(yǔ)言源程序題目的獲取,在本系統(tǒng)采用的典型的MFC的DV結(jié)構(gòu)中,可以通過(guò)GetTitle()函數(shù)直接獲取題目的名稱(chēng)l 數(shù)據(jù)庫(kù)的插入:有關(guān)數(shù)據(jù)實(shí)現(xiàn)類(lèi)的介紹在本文的第二章中已有講到,具體插入實(shí)現(xiàn)代碼如下CODE:CString strSQL。 (insert into 成績(jī)表 values(39。%s39。,39。%d39。,39。%s39。),fileName,strpy)。 (strSQL)。 評(píng)分成績(jī)的查看界面上圖為評(píng)分成績(jī)的查看界面,用列表的方式將數(shù)據(jù)庫(kù)中的題目對(duì)應(yīng)的分?jǐn)?shù)與評(píng)語(yǔ)現(xiàn)實(shí)給用戶。具體實(shí)現(xiàn)方式如下:l 采用VC控件ListCtrl,將其風(fēng)格對(duì)應(yīng)的View設(shè)置為:Report。為其添加成員變量m_list。l 添加函數(shù)show(_RecordsetPtr rst),從數(shù)據(jù)庫(kù)中檢索所有信息,并在列表中現(xiàn)實(shí)CODE:show(_RecordsetPtr rst){ CString CellText。 CString FieldName。 int nCount = ()。 //列數(shù); int nRecordCount=0。//記錄數(shù); ()。 rstMoveFirst()。 while(!rstadoEOF) { (nCount,_T())。//添加行 rstMoveNext()。 nRecordCount++。 } for(int n=0。 n nRecordCount。 n++) { rstMoveFirst()。 rstMove(n)。 for(int i=0。 i rstGetFields()GetCount()。 i++) { CellText=(char*)(_bstr_t)rstGetFields()GetItem((long)i)Value。 ()。 ()。 (n,i,CellText)。 } }l 在初始化對(duì)話框時(shí)初始化列表屬性并調(diào)用顯示函數(shù),完成顯示功能CODE: (0L,LVS_SHOWSELALWAYS)。 //高亮顯示被選中項(xiàng) (LVS_EX_FULLROWSELECT| //允許整行選中 LVS_EX_HEADERDRAGDROP| //允許整列拖動(dòng) LVS_EX_GRIDLINES| //畫(huà)出網(wǎng)格線 LVS_EX_ONECLICKACTIVATE| //單擊選中項(xiàng) LVS_EX_FLATSB)。 //
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1