版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
通用心理測試系統(tǒng)的設(shè)計(jì)和開發(fā)1、系統(tǒng)需求分析現(xiàn)狀分析:傳統(tǒng)的紙筆測試方法操作煩瑣,人工結(jié)果統(tǒng)計(jì)費(fèi)時(shí)費(fèi)力,還可能存在計(jì)算錯(cuò)誤的可能性,而且不利于對(duì)測試情況做到匯總分析。因此需要開發(fā)一套科學(xué)、靈活、易用的通用心理測試系統(tǒng),能夠進(jìn)行多種類型的心理測試,界面友好,操作簡單,能夠自動(dòng)計(jì)算分?jǐn)?shù),實(shí)現(xiàn)數(shù)據(jù)存檔和查詢功能。1、系統(tǒng)需求分析通用心理測試系統(tǒng)設(shè)計(jì)的具體要求包括:
1.高效地錄入和保存信息。
例如測試者的姓名、性別、籍貫、學(xué)歷數(shù)據(jù)等。2.方便地完成測試過程,并保證測試的客觀性.
如自動(dòng)計(jì)時(shí)、自動(dòng)匯總統(tǒng)計(jì)結(jié)果等。3.實(shí)現(xiàn)多次測試結(jié)果的匯總。4.實(shí)現(xiàn)基于數(shù)據(jù)庫的電子化信息管理。5.具有較強(qiáng)的擴(kuò)充性,能夠適應(yīng)新的測試內(nèi)容變化要求等。2、系統(tǒng)流程圖通用心理測試系統(tǒng)的使用者包括兩類,測試者和管理員。對(duì)于每個(gè)新的測試者而言,需要錄入其姓名、性別、文化程度等基本信息,然后開始測試,完成所有題目或測試時(shí)間到后,顯示其測試結(jié)果,并把測試結(jié)果自動(dòng)保存到數(shù)據(jù)庫中。對(duì)于管理員而言,需要通過口令進(jìn)行登錄,然后可以從數(shù)據(jù)庫中匯總測試結(jié)果等操作。。測試者登錄開始測試顯示結(jié)果存儲(chǔ)結(jié)果管理員登錄測試結(jié)果匯總數(shù)據(jù)庫3、系統(tǒng)設(shè)計(jì)思路界面設(shè)計(jì)通用心理測試系統(tǒng)的應(yīng)用程序界面,即MVC模型中的View。包括主窗體、關(guān)于窗體、新測試者基本信息錄入窗體、顯示測試題目并作答窗體、顯示測試結(jié)果窗體、管理員登錄窗體和測試結(jié)果匯總窗體等界面。V0主窗口V1關(guān)于窗口V2新測試者信息窗口V3測試窗口V4顯示測試結(jié)果窗口主窗口菜單:V5登錄窗口3、系統(tǒng)設(shè)計(jì)思路代碼設(shè)計(jì)程序代碼設(shè)計(jì)采用面向?qū)ο蟮氖录?qū)動(dòng)機(jī)制,針對(duì)用戶界面上的對(duì)象的相應(yīng)事件(主要是Click事件和定時(shí)器事件)來激發(fā)對(duì)象執(zhí)行所需的操作,即MVC模型中的Controller部分。開始新的測試——顯示V2:新測試者信息窗口——顯示V3:測試窗口查看測試記錄——顯示V5:測試結(jié)果窗口退出——結(jié)束系統(tǒng)幫助——顯示V1:關(guān)于窗口3、系統(tǒng)設(shè)計(jì)思路數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)使用ACCESS數(shù)據(jù)庫作為后臺(tái)數(shù)據(jù)庫,即MVC模型中的Model部分。在名為test的MDB數(shù)據(jù)庫文件中建立5張表。數(shù)據(jù)庫試卷試題測試者測試結(jié)果用戶4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)用戶表用途:存放具有查詢測試結(jié)果權(quán)限的用戶姓名和口令。用于存放具有查詢測試結(jié)果權(quán)限的用戶姓名和口令。管理員登錄時(shí)輸入用戶名稱和登錄口令后,系統(tǒng)將到用戶表中查詢是否存在輸入的用戶名稱,如果存在則進(jìn)一步判斷輸入的登錄口令和數(shù)據(jù)庫中的口令是否相同。如果正確,則顯示測試結(jié)果匯總窗口,否則予以錯(cuò)誤提示。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)試卷表用途:保存試卷的名稱、測試時(shí)間、測試結(jié)果的判定標(biāo)準(zhǔn)和相應(yīng)結(jié)論內(nèi)容。為實(shí)現(xiàn)通用,對(duì)現(xiàn)有紙筆類型的心理測試進(jìn)行分析,歸納出心理測試試題一般規(guī)律是通過若干選擇題的測試,根據(jù)得分所在范圍給出測試結(jié)論。一般的,一套試題的結(jié)論不超過8個(gè)。所以試卷表定義了8組結(jié)論,分別包括標(biāo)準(zhǔn)和內(nèi)容兩部分。同時(shí)考慮到某些測試對(duì)時(shí)間有所要求,因此定義了每套試卷的測試時(shí)間。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)試卷表用途:保存試卷的名稱、測試時(shí)間、測試結(jié)果的判定標(biāo)準(zhǔn)和相應(yīng)結(jié)論內(nèi)容。試卷表中的試卷編號(hào)字段為主鍵,通過該主鍵與試題表連接。執(zhí)行主窗口中的“系統(tǒng)”—“開始新的測試”命令,系統(tǒng)顯示新測試者信息對(duì)話框。其中選擇試卷下拉列表的項(xiàng)目是通過讀取試卷表的各條記錄的試卷名稱字段逐一添加。選擇試卷后,將記錄其對(duì)應(yīng)的試卷編號(hào),以便在測試窗口中顯示該試卷對(duì)應(yīng)的試題。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)試題表用途:試題表與試卷表間為一對(duì)多的關(guān)系。即試卷表中的一條記錄,通過試卷編號(hào)與試題表中的多條記錄對(duì)應(yīng),從而形成一份試卷中的多道測試題。每道測試題提供8個(gè)選擇項(xiàng)。(本案例中考慮的是單選測試題的形式)使用者選擇試卷后,記錄其對(duì)應(yīng)的試卷編號(hào),通過該試卷編號(hào)到試題表中查詢相應(yīng)的記錄,并在測試窗口中顯示該試題的內(nèi)容和對(duì)應(yīng)的選擇項(xiàng)目。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)測試者表用途:記錄測試者的信息。執(zhí)行主窗口中的“系統(tǒng)”—“開始新的測試”命令,完成所有試題的測試后系統(tǒng)將測試信息保存到測試者表中,并自動(dòng)為每個(gè)新測試者分配一個(gè)ID。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)測試結(jié)果表用途:保存每個(gè)測試者所進(jìn)行的測試的試卷編號(hào)和成績。測試結(jié)果表通過“測試者ID”字段與測試者表連接。通過“試卷編號(hào)”字段與試卷表連接。執(zhí)行主窗口中的“系統(tǒng)”—“查看測試記錄”命令,系統(tǒng)登錄對(duì)話框,成功登錄后顯示測試結(jié)果匯總窗口,窗口中的數(shù)據(jù)來自測試結(jié)果表的記錄。4、系統(tǒng)實(shí)現(xiàn)方法——數(shù)據(jù)庫設(shè)計(jì)測試結(jié)果表用途:保存每個(gè)測試者所進(jìn)行的測試的試卷編號(hào)和成績。測試結(jié)果表通過“測試者ID”字段與測試者表連接。通過“試卷編號(hào)”字段與試卷表連接。執(zhí)行主窗口中的“系統(tǒng)”—“查看測試記錄”命令,系統(tǒng)登錄對(duì)話框,成功登錄后顯示測試結(jié)果匯總窗口,窗口中的數(shù)據(jù)來自測試結(jié)果表的記錄。4、系統(tǒng)實(shí)現(xiàn)方法——窗體設(shè)計(jì)建立應(yīng)用程序啟動(dòng)VisualBasic程序,建立“標(biāo)準(zhǔn).EXE”項(xiàng)目。4、系統(tǒng)實(shí)現(xiàn)方法——窗體設(shè)計(jì)主窗體修改窗體屬性。拖動(dòng)窗體右下角,調(diào)整窗體大小符合背景圖像的大小。編輯主窗體菜單。4、系統(tǒng)實(shí)現(xiàn)方法——窗體設(shè)計(jì)新測試者、測試、用戶登錄、顯示測試記錄和關(guān)于窗體添加新窗體執(zhí)行“工程”菜單中的“添加窗體”命令,顯示“添加窗體”對(duì)話框,選擇“新建”選項(xiàng)卡中的“窗體”圖標(biāo),單擊“打開”按鈕,在工程中添加一個(gè)新的窗體。修改窗體屬性(參見教材)添加控件,設(shè)置控件屬性、調(diào)整控件位置(參見教材)4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程主窗體菜單代碼系統(tǒng)菜單-開始新的測試命令PrivateSubmnuStartTest_Click()'以模態(tài)窗口方式顯示新測試者信息窗口frmTesterInfo.Show1EndSub說明:show方法的參數(shù)1表示顯示的窗體模式為模態(tài)窗體,即關(guān)閉顯示窗體前對(duì)調(diào)用它的父窗體不做響應(yīng)。系統(tǒng)菜單-查看測試記錄命令PrivateSubmnuDisplayResult_Click()'以模態(tài)窗口方式顯示登錄窗口frmLogin.Show1EndSub系統(tǒng)菜單-退出命令PrivateSubmnuExit_Click()'結(jié)束系統(tǒng)EndEndSub幫助菜單-關(guān)于命令PrivateSubmnuAbout_Click()'以模態(tài)窗口方式顯示關(guān)于窗口frmAbout.Show1EndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼通用模塊定義窗體級(jí)變量'保存測試者姓名的變量PublictesterNameAsString'保存測試者性別的變量PublictesterSexAsString'保存測試者教育程度的變量PublictesterEduLevelAsString'保存測試者籍貫的變量PublictesterBirthPlaceAsString注:本例中沒有對(duì)測試者的信息做檢驗(yàn)和保存,只是展現(xiàn)了復(fù)選按鈕的使用方法。'定義數(shù)據(jù)庫連接所需要的變量。DimsConnectAsStringDimsSQLAsStringDimdfwConnAsADODB.ConnectionDimrsAsADODB.Recordset'保存用戶選擇的試卷對(duì)應(yīng)的試卷編號(hào)。PublicpaperIDAsString4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼Load事件用于初始化窗體控件的內(nèi)容PrivateSubForm_Load()'AddItem用于向列表框/組合框中添加一項(xiàng)Me.cmbBirthPlace.AddItem"北京市"Me.cmbBirthPlace.AddItem"天津市“……'定義后臺(tái)數(shù)據(jù)庫路徑和名稱DatabasePath=App.Path&"\"DatabaseName="test.mdb"
'建立與數(shù)據(jù)庫的連接字符串sConnect="Provider=Microsoft.Jet.OLEDB.4.0;Password='';UserID=Admin;DataSource="&DatabasePath&DatabaseName&";……'定義SQL查詢語言sSQL="select*from試卷orderby試卷編號(hào)"
'根據(jù)SQL查詢語言,從數(shù)據(jù)庫中檢索相應(yīng)記錄,并在記錄集中打開rs.OpensSQL,dfwConn,1,3
……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼Load事件用于初始化窗體控件的內(nèi)容……
'遍歷記錄集Fori=0Tors.RecordCount-1'將記錄集中的試卷名稱內(nèi)容添加到cmbPaper控件中
Me.cmbPaper.AddItemrs.Fields("試卷名稱")
'將記錄集中的試卷編號(hào)內(nèi)容添加到cmbPaperID控件中Me.cmbPaperID.AddItemrs.Fields("試卷編號(hào)")
'移動(dòng)記錄集指針,指向下一條記錄rs.MoveNextNext
'關(guān)閉記錄集rs.Close
'關(guān)閉連接dfwConn.Close
EndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼取消按鈕的Click事件從內(nèi)存中卸載當(dāng)前窗體PrivateSubcmdCancel_Click()'卸載本窗口UnloadMeEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼確定按鈕的Click事件檢驗(yàn)用戶信息是否完整PrivateSubcmdOK_Click()'檢驗(yàn)是否填寫了測試者姓名IfMe.txtName.Text=""ThenMsgBox"請(qǐng)?zhí)顚懶彰?,vbInformationMe.txtName.SetFocusExitSubEndIf
'檢驗(yàn)是否選擇了測試者性別,單選按鈕的Value屬性為True,表示選擇,F(xiàn)alse表示未選擇。IfMe.optSexFemal.Value=FalseAndMe.optSexMale.Value=FalseThenMsgBox"請(qǐng)選擇性別",vbInformationMe.optSexMale.SetFocusExitSubEndIf
'檢驗(yàn)是否選擇了測試者文化程度,列表框控件的ListIndex屬性未-1表示未選擇。IfMe.lstEduLevel.ListIndex=-1ThenMsgBox"請(qǐng)選擇文化程度",vbInformationMe.lstEduLevel.SetFocusExitSubEndIf
……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼確定按鈕的Click事件保存相關(guān)信息到全局變量'如果所有信息均填寫或選擇,則保存到相應(yīng)的全局變量中。testerName=Me.txtName.Text
IfMe.optSexMale.Value=TrueThentesterSex="男"ElsetesterSex="女"EndIf
'列表框中選擇的項(xiàng)目內(nèi)容保存在Text屬性中,將該屬性的內(nèi)容保存在testerEduLevel變量中。testerEduLevel=Me.lstEduLevel.Text
'組合框中選擇的項(xiàng)目內(nèi)容保存在Text屬性中,將該屬性的內(nèi)容保存在testerBirthPlace變量中。testerBirthPlace=Me.cmbBirthPlace.Text
'用戶選擇的試卷名稱,可通過cmbPaper的ListIndex獲得。'通過讀取cmbPaperID的list數(shù)組的相應(yīng)項(xiàng)目得到用戶選擇的試卷名稱所對(duì)應(yīng)的試卷編號(hào)。'保存該試卷標(biāo)號(hào)到paperID變量中,以便在測試窗體中顯示該試卷所包含的試題。
paperID=Me.cmbPaperID.List(Me.cmbPaper.ListIndex)
……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程新測試者窗體代碼確定按鈕的Click事件執(zhí)行窗體切換……‘從內(nèi)存中卸載當(dāng)前窗體,注:VB中用關(guān)鍵字me代表當(dāng)前窗體。UnloadMe
'從內(nèi)存中卸載frmMain窗體。UnloadfrmMain
'加載并顯示測試窗體frmTestfrmTest.ShowEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼通用模塊定義窗體級(jí)變量'定義數(shù)據(jù)庫連接所需要的變量。DimsConnectAsStringDimsSQLAsStringDimdfwConnAsADODB.ConnectionDimrsAsADODB.Recordset'用于保存測試總分DimtotalScoreAsInteger'用于保存每道題的8個(gè)選擇項(xiàng)目對(duì)應(yīng)的分值Dimscores(1To8)AsInteger'用于保存該試卷規(guī)定的測試時(shí)間DimtestTimeAsInteger'用于保存已用的測試時(shí)間DimusedTimeAsLong'用于判斷測試是否結(jié)束DimtestOverAsBoolean4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼Load事件初始化控件與變量PrivateSubForm_Load()'使用frmTesterInfo窗體的窗體級(jí)變量為當(dāng)前窗體的控件賦初值Me.lblName="姓名:"&frmTesterInfo.testerNameMe.lblSex="性別:"&frmTesterInfo.testerSexMe.lblEduLevel="文化程度:"&frmTesterInfo.testerEduLevelMe.lblBirthPlace="籍貫:"&frmTesterInfo.testerBirthPlace
'隱藏測試結(jié)論顯示所用的文本框控件Me.txtResult.Visible=False
'隱藏顯示試題的Frame控件Me.Frame3.Visible=False
'初始化總分變量,為0totalScore=0
'定義后臺(tái)數(shù)據(jù)庫路徑DatabasePath=App.Path&"\"DatabaseName="test.mdb“……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼Load事件連接數(shù)據(jù)庫'定義數(shù)據(jù)庫連接字符串sConnect="Provider=Microsoft.Jet.OLEDB.4.0;Password='';UserID=Admin;DataSource="&DatabasePath&DatabaseName&";……
'定義數(shù)據(jù)庫連接對(duì)象,并建立數(shù)據(jù)庫連接SetdfwConn=NewConnectiondfwConn.OpensConnect
'定義記錄集對(duì)象Setrs=NewRecordsetrs.CursorLocation=adUseClient'創(chuàng)建SQL查詢字符串,根據(jù)測試者選擇的試卷編號(hào),到試卷表中查詢對(duì)應(yīng)的試卷信息sSQL="select*from試卷where試卷編號(hào)='"&frmTesterInfo.paperID&"'"
'根據(jù)SQL查詢字符串,打開記錄集,返回查詢結(jié)果rs.OpensSQL,dfwConn,1,3……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼Load事件設(shè)置控件內(nèi)容'將記錄集中對(duì)應(yīng)的試卷名稱內(nèi)容顯示到當(dāng)前窗體的標(biāo)題欄上Me.Caption=Me.Caption&"---"&rs.Fields("試卷名稱")
'將記錄集中測試時(shí)間字段的值賦給變量testTimetestTime=rs.Fields("測試時(shí)間")
'設(shè)置窗體上顯示剩余時(shí)間的控件Me.lbl剩余時(shí)間.Caption=testTime&"分鐘"
'設(shè)置窗體上顯示已用時(shí)間的控件Me.lbl已用時(shí)間.Caption="0分鐘"
'關(guān)閉記錄集rs.Close
'構(gòu)建新的SQL查詢字符串,根據(jù)試卷編號(hào)在試題表中查詢對(duì)應(yīng)的試題信息sSQL="select*from試題where試卷編號(hào)='"&frmTesterInfo.paperID&"'orderby試題編號(hào)"
'根據(jù)SQL字符串打開記錄集,發(fā)揮查詢結(jié)果rs.OpensSQL,dfwConn,1,3
'調(diào)用showQuestion自定義函數(shù),顯示試題內(nèi)容showQuestionEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼showQuestion過程顯示題目及選項(xiàng)PrivateSubshowQuestion()'利用lbl試題控件顯示試題內(nèi)容Me.lbl試題.Caption=rs.Fields("試題編號(hào)")&"、"&rs.Fields("試題內(nèi)容")
'如果該題的選項(xiàng)A字段不為空,則利用控件Option1顯示選項(xiàng)A,并使Option1可見,并將選項(xiàng)A對(duì)應(yīng)的分值保存在scores數(shù)組的對(duì)應(yīng)元素中。'如果該選項(xiàng)為空,則隱藏對(duì)應(yīng)控件'選項(xiàng)B到選項(xiàng)H都按此方法判斷和設(shè)置。
Ifrs.Fields("選項(xiàng)A")<>""ThenMe.Option1.Caption=rs.Fields("選項(xiàng)A")scores(1)=rs.Fields("選項(xiàng)A分值")Me.Option1.Visible=TrueElseMe.Option1.Visible=FalseEndIf
……'設(shè)置默認(rèn)選擇為選項(xiàng)AMe.Option1.Value=TrueEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼開始測試按鈕的Click事件設(shè)置控件狀態(tài)啟動(dòng)計(jì)時(shí)器PrivateSubcmdStartTest_Click()'顯示包含題目和選項(xiàng)的Frame3控件Me.Frame3.Visible=True
'使下一題按鈕可用Me.cmdNext.Enabled=True
'使開始測試按鈕不可用Me.cmdStartTest.Enabled=False
'初始化已用測試時(shí)間變量usedTime=0
'激活定時(shí)器,定時(shí)執(zhí)行Timer1的Timer事件,顯示測試時(shí)間信息Me.Timer1.Enabled=TrueEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼定時(shí)器Timer1的Timer事件設(shè)置控件狀態(tài)啟動(dòng)計(jì)時(shí)器PrivateSubTimer1_Timer()'Timer1的Interval屬性為1000,相對(duì)于1秒鐘,因此每次執(zhí)行Timer事件時(shí)將已用時(shí)間加1usedTime=usedTime+1
'將已用時(shí)間轉(zhuǎn)換成分鐘并顯示,同時(shí)計(jì)算剩余時(shí)間并顯示Me.lbl已用時(shí)間.Caption=Format(usedTime/60,"0")&"分鐘"Me.lbl剩余時(shí)間.Caption=Format(testTime-usedTime/60,"0")&"分鐘"
'如果剩余時(shí)間小于5分鐘,則通過變換Frame2的背景顏色和時(shí)間信息控件的前景顏色提示測試者IftestTime-usedTime/60<5ThenMe.lbl剩余時(shí)間.ForeColor=vbRedMe.Frame2.BackColor=QBColor(Int(Rnd()*15)+1)Me.lbl已用時(shí)間.ForeColor=RGB(0,255,0)Me.Label5.ForeColor=&HFF0000EndIf
'如果測試時(shí)間到,提示測試者IftestTime-usedTime/60<0ThenMsgBox"測試時(shí)間到,請(qǐng)單擊確定按鈕察看得分",vbInformation+vbOKOnlyMe.Timer1.Enabled=FalseMe.cmdShowResult.Value=TrueEndIfEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼下一題按鈕的Click事件計(jì)算得分顯示下一題內(nèi)容PrivateSubcmdNext_Click()'判斷當(dāng)前顯示的是否是最后一題'如果不是最后一題,則根據(jù)測試者選擇的項(xiàng)目,即哪個(gè)Option的Value為True,計(jì)算當(dāng)前總分
IfNotrs.EOF()ThenIfMe.Option1.Value=TrueThentotalScore=totalScore+scores(1)IfMe.Option2.Value=TrueThentotalScore=totalScore+scores(2)……'移動(dòng)記錄集的指針指向下一記錄rs.MoveNextEndIf
……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼下一題按鈕的Click事件完成全部試題后的處理Ifrs.EOFAndrs.RecordCount>0Then'已到記錄集的最后,則返回最后一題
rs.MoveLast
'禁用下一題按鈕Me.cmdNext.Enabled=False
'使查看結(jié)果按鈕可用
Me.cmdShowResult.Enabled=True
'設(shè)置測試結(jié)束變量為TruetestOver=True
'提示測試者查看結(jié)果
MsgBox"您已經(jīng)完成了全部測試題,單擊查看結(jié)果顯示測試結(jié)論",vbInformation
'退出子過程ExitSubEndIf
'如果沒有到達(dá)記錄集的最后,則調(diào)用showQuestion子過程,根據(jù)當(dāng)前記錄的內(nèi)容顯示新的題目及選項(xiàng)。showQuestion
EndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼查看結(jié)果按鈕的Click事件根據(jù)得分顯示結(jié)論停止計(jì)時(shí)PrivateSubcmdShowResult_Click()'關(guān)閉當(dāng)前顯示題目的記錄集rs.Close
'重新建立SQL查詢字符串,用于從試卷庫中查詢相應(yīng)試卷編號(hào)的記錄sSQL="select*from試卷where試卷編號(hào)='"&frmTesterInfo.paperID&"'"
rs.OpensSQL,dfwConn,1,3
'根據(jù)測試總分所在的范圍,顯示對(duì)應(yīng)的結(jié)論IftotalScore>=rs.Fields("結(jié)論1標(biāo)準(zhǔn)")ThenMe.txtResult.Text=rs.Fields("結(jié)論1內(nèi)容")EndIf
IftotalScore>=rs.Fields("結(jié)論2標(biāo)準(zhǔn)")Then……Me.txtResult.Text="-----------------測試結(jié)論----------------"&vbCrLf&vbCrLf&Me.txtResult.TextMe.txtResult.Text=Me.txtResult.Text&vbCrLf&vbCrLf&vbCrLf&"-------------測試結(jié)論僅作參考------------"
'隱藏題目和選項(xiàng)所在的Frame3控件Me.Frame3.Visible=False
'顯示測試結(jié)論所在的txtResult控件Me.txtResult.Visible=True
'停止測試時(shí)間計(jì)時(shí)Me.Timer1.Enabled=FalseEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼關(guān)閉按鈕的Click事件保存測試者信息PrivateSubcmdClose_Click()‘如果測試者完成了全部試題的測試,則保存測試者信息和測試結(jié)果。如果測試者沒有完成全部試題的測試,由于測試時(shí)間已到結(jié)束,則為不完整測試,不保存相關(guān)信息。IftestOver=TrueThen'關(guān)閉當(dāng)前記錄集rs.Close
'打開測試者表sSQL="select*from測試者"rs.OpensSQL,dfwConn,1,3
'在測試者表中新建一條記錄rs.AddNew
'為新記錄的各個(gè)字段賦值
'ID字段為自動(dòng)產(chǎn)生,其內(nèi)容是當(dāng)前的記錄數(shù)DimtesterIDtesterID=rs.RecordCountrs.Fields("ID")=testerID
'姓名字段等用frmTesterInfo的窗體級(jí)變量賦值rs.Fields("姓名")=frmTesterInfo.testerNamers.Fields("性別")=frmTesterInfo.testerSexrs.Fields("文化程度")=frmTesterInfo.testerEduLevelrs.Fields("籍貫")=frmTesterInfo.testerBirthPlace
'更新記錄集,實(shí)現(xiàn)新記錄的保存rs.Updaters.Close4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼關(guān)閉按鈕的Click事件保存測試結(jié)果
'使用類似方法,在測試結(jié)果中建立新記錄,并保存測試者ID、試卷編號(hào)和成績。sSQL="select*from測試結(jié)果"rs.OpensSQL,dfwConn,1,3rs.AddNewrs.Fields("測試者ID")=testerIDrs.Fields("試卷編號(hào)")=frmTesterInfo.paperIDrs.Fields("成績")=totalScorers.Updaters.Close
EndIf
'卸載本窗體UnloadMe'顯示主窗體frmMain.ShowEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程測試窗體代碼窗體的Unload事件關(guān)閉數(shù)據(jù)庫連接PrivateSubForm_Unload(CancelAsInteger)'卸載窗體時(shí)關(guān)閉后臺(tái)數(shù)據(jù)庫連接dfwConn.CloseEndSub4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程用戶登錄窗體代碼確定按鈕的Click事件驗(yàn)證數(shù)據(jù)庫中是否存在相應(yīng)的用戶名稱PrivateSubcmdOK_Click()'定義變量用于保存用戶輸入的名稱DimstrUserNameAsStringstrUserName=Me.txtUserName
'定義后臺(tái)數(shù)據(jù)庫路徑和名稱DatabasePath=App.Path&"\"DatabaseName="test.mdb"
sConnect="Provider=Microsoft.Jet.OLEDB.4.0;Password='';UserID=Admin;DataSource="&DatabasePath&DatabaseName&";……
'建立SQL查詢語句,,從用戶表中查詢姓名等于輸入內(nèi)容的記錄sSQL="SELECT*FROM用戶where姓名='"&strUserName&"'"rs.OpensSQL,dfwConn,1,3
'如果記錄集的記錄數(shù)量為0,表示沒有該用戶,顯示提示信息。Ifrs.RecordCount=0ThenMsgBox"無此用戶,請(qǐng)重新輸入!"Me.txtUserName.SetFocusExitSubEndIf
……4、系統(tǒng)實(shí)現(xiàn)方法——代碼編程用戶登錄窗體代碼確定按鈕的Click事件驗(yàn)證口令是否正確'定義變量保存用戶輸入的口令DimstrPasswordAsStringstrPassword=txtUserPassword.Text
'如果輸入的口令和記錄集中的口令相等,則顯示測試記錄窗體,否則顯示錯(cuò)誤信息IfstrPassword=rs.Fields("口令")ThenUnloadMefrmDisplayRe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年紡織品租賃合同
- 2024年汽車銷售合同標(biāo)的車輛配置與價(jià)格確認(rèn)
- 2024年綠色豬肉銷售聯(lián)盟協(xié)議3篇
- 智慧創(chuàng)業(yè)課程設(shè)計(jì)
- 2024年版專業(yè)照明工程設(shè)計(jì)及施工合作合同版B版
- 2024年機(jī)器人產(chǎn)業(yè)核心配件采購合同模板3篇
- 恩施研學(xué)課程設(shè)計(jì)
- 研學(xué)課程設(shè)計(jì)紅色文化
- 電機(jī)制造中的性能測試與評(píng)估考核試卷
- 生物藥品生產(chǎn)中的溶媒回收技術(shù)考核試卷
- 無人機(jī)智慧旅游解決方案
- 倉庫管理員月度績效考核表
- 戶外廣告設(shè)施設(shè)置申請(qǐng)表+審批表(城市管理資料2022新版)
- 國家開放大學(xué)電大專科《刑法學(xué)(1)》期末題庫及答案
- 焦?fàn)t砌筑規(guī)程
- 聚酰亞胺基礎(chǔ)知識(shí)-1(橫田力男)
- ATS(發(fā)動(dòng)機(jī)智能冷卻系統(tǒng))
- 畢業(yè)論文飲料罐裝生產(chǎn)流水線系統(tǒng)設(shè)計(jì)與調(diào)試
- CAD的樂趣(漂亮的自定義線型)
- 某某油庫投產(chǎn)試運(yùn)行方案
- 業(yè)障病因果病對(duì)照表
評(píng)論
0/150
提交評(píng)論