基于vb的學(xué)生信息管理系統(tǒng)的開發(fā)_第1頁
基于vb的學(xué)生信息管理系統(tǒng)的開發(fā)_第2頁
基于vb的學(xué)生信息管理系統(tǒng)的開發(fā)_第3頁
基于vb的學(xué)生信息管理系統(tǒng)的開發(fā)_第4頁
基于vb的學(xué)生信息管理系統(tǒng)的開發(fā)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

--1系統(tǒng)功能模塊圖三、數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計包括構(gòu)造和組織數(shù)據(jù)庫數(shù)據(jù)的各種概念和方法。數(shù)據(jù)庫設(shè)計分為兩方面:物理設(shè)計和邏輯設(shè)計。物理設(shè)計指SQLServer如何使用現(xiàn)有硬件。邏輯設(shè)計指數(shù)據(jù)庫結(jié)構(gòu)。數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率保證數(shù)據(jù)的完整和一致。同時,合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實現(xiàn)。在設(shè)計一個數(shù)據(jù)庫之前,首先要對數(shù)據(jù)庫的設(shè)計目的和應(yīng)用背景進行分析。在進行設(shè)計目的分析時,應(yīng)搞清數(shù)據(jù)庫要解決一個什么樣的問題、需要存儲那些數(shù)據(jù)、能夠想用戶提供那些統(tǒng)計信息、完成那些自動化功能等。應(yīng)用背景指數(shù)據(jù)庫應(yīng)用于一個什么樣的場合,同樣的數(shù)據(jù)庫應(yīng)用于不同的場合,其特點和要求也不一樣。在開發(fā)數(shù)據(jù)庫之前,必須掌握一定的背景知識。(一)、數(shù)據(jù)庫需求分析對于用戶的需求,具體體現(xiàn)在各種信息的提供、保存、更新和查詢等方面,這就要求數(shù)據(jù)庫結(jié)構(gòu)充分滿足各種信息的輸出和輸入。我們收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,為后面的具體設(shè)計打下基礎(chǔ)。在仔細分析調(diào)查有關(guān)學(xué)生信息需要的基礎(chǔ)上,將得到如圖3-1所示的本系統(tǒng)所處理數(shù)據(jù)流程。針對一般學(xué)生信息管理系統(tǒng)的需要,通過對學(xué)生學(xué)習(xí)過程的內(nèi)容和數(shù)據(jù)流程分析,如下面所示的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):學(xué)生基本信息:包括的數(shù)據(jù)項有:學(xué)生學(xué)號、學(xué)生姓名、性別、出生日期、班級聯(lián)系電話、入校日期、家庭住址、備注等。班級信息:包括的數(shù)據(jù)項有:班號、所在年級、班主任姓名、所在教室等。課程基本信息:包括的數(shù)據(jù)項有:課程號、課程名稱、課程類別、課程描述等。課程設(shè)置信息:包括的數(shù)據(jù)項有:年級信息、所學(xué)課程等。學(xué)生成績信息:包括的數(shù)據(jù)項有:考試編號、所在班號、學(xué)生學(xué)號、學(xué)生姓名、所學(xué)課程、考試分數(shù)等。學(xué)生注冊..學(xué)籍信息管理學(xué)生注冊..學(xué)籍信息管理成績信息輸入成績信息管理班級設(shè)置班級管理課程基本信息班級課程管理班級課程設(shè)計基本信息輸入有了上面的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)項和數(shù)據(jù)流程,我們就能進行下面數(shù)據(jù)庫設(shè)計。(二)、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計幾乎所有的應(yīng)用程序需要存放大量的數(shù)據(jù),并將其組織成易于讀取的格式,這種要求通??梢酝ㄟ^數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn)。數(shù)據(jù)庫系統(tǒng)提供了數(shù)據(jù)在數(shù)據(jù)庫內(nèi)存方式的管理能力。數(shù)據(jù)庫就是一組排列成易于處理和讀取的相關(guān)信息的集合。得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。這些實體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動。根據(jù)上面的設(shè)計規(guī)劃出的實體有:學(xué)生實體、班級實體、年級實體、課程實體。各個實體具體的描述E-R圖如下。圖3-2為學(xué)生實體E-R圖。學(xué)生…學(xué)生基本信息學(xué)生…學(xué)生基本信息學(xué)生課程信息學(xué)生班級信息學(xué)生成績信息圖3-2為學(xué)生實體E-R圖圖3-3為班級實體E-R圖。班號…班班號…班…級…所在班級…班主任所在教室…圖3-4為課程實體E-R圖。課程名稱..課程編號..課程描述…課程類型…課程名稱..課程編號..課程描述…課程類型…課程…圖3-5為年級實體E-R圖。包括班級年級名稱包括班級年級名稱設(shè)置課程年級…實體和實體之間的關(guān)系E-R圖3-6所示考核過程學(xué)考核過程學(xué)…生…班級設(shè)置班…級…年級設(shè)置年…級…課程設(shè)置課…程…圖3-6實體之間關(guān)系E-R(三)、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計現(xiàn)在需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為SQLServer2000數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。在上面的實體以及實體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格以及各個表格之間的關(guān)系。學(xué)生信息管理系統(tǒng)數(shù)據(jù)庫中各個表格的設(shè)計結(jié)果如下面的幾個表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。表3—1為課程基本信息表表3-1course_info課程基本信息表列名數(shù)據(jù)類型可否為空說明Course_NoINT(4)NOTNULL課程編號Course_NameCHAR(10)NULL課程名稱Course_TypeCHAR(10)NULL課程類型Course_DesCHAR(10)NULL課程描述表3-2為年級課程設(shè)置表表3-2gardecouse_info年級課程設(shè)置表格列名數(shù)據(jù)類型可否為空說明GradeCHAR(10)NULL年級Course_NameCHAR(10)NULL課程名稱表3—3為學(xué)生成績信息表表3—3result_info學(xué)生成績信息表列名數(shù)據(jù)類型可否為空說明Exam_NoCHAR(10)NOTNULL考試編號Student_IDINT(4)學(xué)生學(xué)號Student_nameCHAR(10)NULL學(xué)生姓名Class_NoINT(4)NULL學(xué)生班號Course_NameCHAR(10)NULL課程名稱resultFLOAT(8)NULL分數(shù)表3-4為系統(tǒng)用戶表表3-4user_info系統(tǒng)用戶表列名數(shù)據(jù)類型可否為空說明User_IDCHAR(10)NOTNULL用戶名稱(主鍵)User_PWDCHAR(10)NULL用戶密碼User_DESCHAR(10)NULL用戶描述四、數(shù)據(jù)庫結(jié)構(gòu)的實現(xiàn)經(jīng)過前面的需求分析和概念結(jié)構(gòu)設(shè)計以后,得到數(shù)據(jù)庫的邏輯結(jié)構(gòu)。現(xiàn)在就可以在SQLServer2000數(shù)據(jù)庫系統(tǒng)中實現(xiàn)該邏輯結(jié)構(gòu)。這是利用SQLServer2000數(shù)據(jù)庫系統(tǒng)中的SQL查詢分析器實現(xiàn)的。創(chuàng)建這些表格的SQL語句見附錄。五、學(xué)生信息管理系統(tǒng)主窗體的創(chuàng)建前面的SQL語句在SQLServer2000中的查詢分析器執(zhí)行后,將自動產(chǎn)生需要的所有表格。有關(guān)數(shù)據(jù)庫結(jié)構(gòu)的所有后臺工作已經(jīng)完成?,F(xiàn)在將通過學(xué)生信息管理體統(tǒng)中各個功能塊的實現(xiàn),講解如何使用VisualBasic來編寫數(shù)據(jù)庫系統(tǒng)的客戶端程序。(一)、創(chuàng)建工程項目——studet_MIS為了用VisualBasic創(chuàng)建應(yīng)用程序,應(yīng)當(dāng)使用工程。一個工程是用來建造和存放應(yīng)用程序文件的集合,它包括:跟蹤所有部件的工程文件(.vbp)。每個窗體的文件(.frm)。每個窗體的二進制數(shù)據(jù)文件(.frx),它含有窗體上的屬性數(shù)據(jù)。對含有二進制如圖片或圖標)的任何.frm文件都是不可編輯的,這些文件都是自動生的。每個類模塊的一個文件(.cls),該文件是可選項。每個標準模塊的一個文件(.bas),該文件是可選項。一個或多個包含ActivexX控件的文件(.ocx),該文件是可選項。單個資源文件(.res),該文件是可選項。啟動VsiualBasic后,單擊FileNewProject菜單,在如圖4—1所示的工程模板中StandardEXE,VisualBasic將自動產(chǎn)生一個Form窗體,屬性都是缺省設(shè)置。這里我們刪除這個窗體,單擊FilelSaveProject菜單,將這個工程項目命名為StudentMIS。(二)、創(chuàng)建學(xué)生信息管理系統(tǒng)的主窗體VisualBasic創(chuàng)建的應(yīng)用程序可以是SDI(單文檔界面)和MDI(多文檔界面)。在SDI的程序中,每個窗體之間是獨立的。而MDI的程序中,有一個窗體是主窗體,可以包含其他的窗體,它的類型是MDIform。這個課題采用多文檔界面,這樣可以是程序更加美觀、整齊有序。圖5-1程序主窗體單擊工具欄中的“ADDMDIform”按鈕,生成一個如圖4-2所示的窗體,屬性設(shè)置見表4-1,主菜單的設(shè)置方法將在后面介紹。表5-1主窗體及其控件屬性設(shè)置控件屬性屬性取值frmMain(form)NameFrmMainCaption學(xué)生信息管理系統(tǒng)StartUpPositonCenterScreenWindowStateMaximizedsbStatusBar(StatusBar)NameSbStatusBar在主窗體中加入狀態(tài)欄控件,可以實時反映系統(tǒng)中的各個狀態(tài)的變化。狀態(tài)欄控件需在通常的屬性窗口中設(shè)置一般屬性,還需要在特有的彈出式彩單中進行設(shè)置。選中狀態(tài)控件,單擊鼠標右鍵,選中Property彩單,出現(xiàn)如圖4—10所示的窗體。在“General”屬性對一般屬性進行設(shè)置,在“Panels”屬性頁對各個文本框進行設(shè)置,在”Font”屬性頁對文字體進行設(shè)置,在”Picture”屬性頁可以添加圖片。圖5-2狀態(tài)欄控件特有的屬性菜單單擊InsertPanel按鈕,為狀態(tài)欄添加三個面板,設(shè)置屬性頁見表5-2。表5-2狀態(tài)欄控件中三個面板的屬性設(shè)置面板屬性屬性取值1StyleSbrText2StyleSbrDate3StyleSbrTime面板1用來顯示各種文本信息,面板2用來顯示當(dāng)前日期,面板3用來顯示當(dāng)前時間。(三)、創(chuàng)建公用模塊在VisualBasic中需要把各種數(shù)據(jù)保存到數(shù)據(jù)庫中,而且要求有些變量在不同的窗體中能夠使用,因此要創(chuàng)建用公用模塊來存放整個工程項目公用的函數(shù)、全局變量等。整個工程項目中的任何地方都可以調(diào)用公用模塊中的函數(shù)、變量,這樣可以極大地提高代碼的效率,給編程人員帶來方便。在項目資源管理器中為項目添加一個Module,保存為Module1.bas。下面就可以開始添加需要的代碼了。由于系統(tǒng)中各個功能模塊都將頻繁使用數(shù)據(jù)庫中的各種數(shù)據(jù),因此需要一個公用的數(shù)據(jù)操作函數(shù),用以執(zhí)行各種SQL語句。添加函數(shù)ExecuteSQL,編程代碼見附錄(創(chuàng)建公用模塊)。ExecuteSQL函數(shù)有兩個參數(shù):SQL和MsgString。其中SQL用來存放需要執(zhí)行的語句,MsgString用來返回執(zhí)行的提示信息。函數(shù)執(zhí)行時,首先判斷SQL語句中包含的內(nèi)當(dāng)執(zhí)行查詢操作時,ExecuteSQL函數(shù)將返回一個與函數(shù)同名的記錄集對象(Recordset),有滿足條件的記錄包含在對象中;當(dāng)執(zhí)行如刪除、更新、添加等操作時,不返回記錄集對,在ExecuteSQL函數(shù)中使用了ConnectString函數(shù),這個函數(shù)用來連接數(shù)據(jù)庫,這兩個函數(shù)在后面中也將頻繁使用,因為它們對任何數(shù)據(jù)庫連接都是有效的。由于學(xué)生信息管理系統(tǒng)啟動后,需要對用戶進行判斷。如果登錄者是授權(quán)用戶,將進入系統(tǒng),否則將停止程序的執(zhí)行。這個判斷需要在系統(tǒng)運行的最初進行,因此將代碼放在公用模塊中。過程Main將在系統(tǒng)啟動時首先執(zhí)行,這就保證對用戶的管理。六系統(tǒng)用戶管理模塊的創(chuàng)建系統(tǒng)用戶管理模塊主要實現(xiàn):用戶登錄。添加用戶。修改用戶密碼。錄窗體的創(chuàng)建系統(tǒng)啟動后,將首先出現(xiàn)如圖6-1所示的用戶登錄窗體,用戶首先輸入用戶名,然后輸入密碼。單擊確定后如果用戶三次輸入密碼不正確,將退出程序。圖6-1用戶登錄窗體用戶登錄窗體中放置了兩個文本框(TextBox),用來輸入用戶名和用戶密碼;兩個按鈕(CommandButton)用來確定或者取消登錄;四個標簽(Label)用來標示窗體的信息??丶膶傩栽O(shè)置見表6-1。表6-1登錄窗體中各個控件的屬性設(shè)置控件屬性屬性取值FrmLogi(form)NamefrmLoginCaprtion登錄StartUpPositonCenterScreenWindowStateNomaltxtUserNameNameNomaltxtPasswordNametztPasswordPasswordChar*cmdOKNameCmdOKCaption確定cmdCancelNameCmdCancelCaption取消Label1Caption學(xué)生管理信息系統(tǒng)Label2Caption用戶名Label3Caption用戶密碼Label4Caption版權(quán)提供:LLSoftwareCorp.文本框txtPassword的PasswordChar屬性是用指定字符來掩蓋用戶輸入的密碼。為窗體定義全局變量OK,用來判斷登錄是否成功;定義miCount,用來記載輸入密碼的次數(shù)。并且在載入窗體時初始化這兩個全局變量,OptionExplicit是用來規(guī)定所有變量使用前必須定義。這樣可以避免由于輸入錯誤而產(chǎn)生的新變量。當(dāng)用戶輸入完用戶名和用戶密碼,單擊該按鈕,將觸發(fā)按鈕cmdOK的Click事件。用戶如果沒有輸入用戶名和用戶密碼,將出現(xiàn)消息框提示。如果輸入的用戶名在表格中沒有找到,將提示重新輸入用戶名,文本框txtUserName將重新獲得輸入焦點。用戶輸入的密碼不正確,文本框txtPassword將重新獲得輸入焦點。用戶登錄成功,全OK將被賦值為True;一旦三次輸入密碼均不正確,全局變量OK將被賦值為False??熘械腗ain過程將根據(jù)OK的值決定是退出,或者進入系統(tǒng)。如果用戶取消登錄,單擊cmdCancel按鈕,將觸發(fā)按鈕的Click事件。添加用戶窗體的創(chuàng)建進入系統(tǒng)后,選擇菜單“系統(tǒng)/添加用戶”就可以添加用戶,出現(xiàn)如圖6-2所示的添加用戶窗體。在這個窗體中放置了3個文本框,用來輸入用戶名和密碼;兩個按鈕用來確定是否添加用戶;3個標簽用來標示文本框的提示。這些控件屬性的設(shè)置見表6-2所示。用戶需要兩次輸入密碼,用來確保輸入密碼的正確。用戶輸入信息完畢,單擊cmdOK按鈕將觸發(fā)Clidk事件。系統(tǒng)將首先查詢數(shù)據(jù)庫中與新建用戶名相同的記錄,如果有相同提示用戶重新輸入用戶。當(dāng)確定數(shù)據(jù)庫中沒有相同的用戶名,并且兩次輸入密碼一樣時將把該條記錄添加到數(shù)據(jù)庫中。如果輸入密碼為空時,則顯示“密碼不能為空!”,單擊cmdCancel按鈕將會取消添加用戶的操作。圖6-2添加用戶窗體表6-2添加用戶窗體中各個控件的設(shè)置控件屬性屬性取值FrmAdduser(Form)NamefrmAdduserCaption添加用戶StartUpPossitonCenterScreenWindowStateNomalTxtUserNameNameTxtUserNameTxtPassword1NameTxt{asswprd1PasswordChar*TxtPassword2NameTxtPassword2PasswordChar*CmdOKNameCmdOKCaption確定CmdCancelNameCmdCanelCaption取消Label1Caption請輸入用戶名Label2Caption請輸入密碼Label3Caption請確認密碼(三)修改用戶密碼窗體的創(chuàng)建為了方便用戶較容易記密碼,用戶可以對系統(tǒng)修改自己的密碼,選擇菜單“系統(tǒng)修改密碼”,出現(xiàn)如圖6-3所示的窗體。在這個窗體中放置了兩個文本框,用來輸入密碼;兩個按鈕用來確定是否修改密碼;兩個標簽用來標示文本框的內(nèi)容。這些控件屬性的設(shè)置見表6-3圖6-3修改密碼窗體兩次輸入密碼后,單擊cmdOK按鈕,將觸發(fā)事件判斷是否修改密碼,當(dāng)兩次輸入密碼一致時,數(shù)據(jù)庫中的記錄將更新。不一致時出現(xiàn)“密碼輸入密碼不正確!”如果要取消修改密碼時,單擊cmdCanel按鈕即可。表6-3修改用戶密碼窗體中各個控件的屬性設(shè)置控件屬性屬性取值FrmModifyuserinfo(Form)NamefrmAdduserCaption修改密碼StartUpPossitonCenterScreenWindowStateNomalTxtPassword1NameTxt{asswprd1PasswordChar*TxtPassword2NameTxtPassword2PasswordChar*CmdOKNameCmdOKCaption確定CmdCancelNameCmdCanelCaption取消Label2Caption請輸入密碼Label3Caption請確認密碼七、程設(shè)置模塊的創(chuàng)建課程設(shè)置模塊主要實現(xiàn)如下功能:修改課程信息。設(shè)置年級課程。(一)、修改課程信息窗體的創(chuàng)建選擇“課程設(shè)置/修改課程信息”菜單,將出現(xiàn)如圖7-1所示的窗體。窗體中各個控件的屬性見表7-2圖7-1修改課程信息窗體“查看課程信息”框架中的4個按鈕用來移動的數(shù)據(jù)集中記錄的位置,需要將記錄集對象定義為全局變量,程序在窗體載入時自動加入各條記錄,由于程序中各處需要顯示數(shù)據(jù),所以需要定義函數(shù)ViewData。單擊“第一條記錄”按鈕時,將顯示第一條記錄,單擊“最后一條記錄”按鈕時,將顯示最后一條記錄,單擊“下一條記錄”按鈕時,將顯示下一條記錄,單擊“上一條記錄”按鈕時,將顯示上一條記錄,程序后面很多地方都將用到類似的查看信息的方法,后面就不重復(fù)了。“修改課程信息”框架中的4個按鈕用來修改數(shù)據(jù)集中的記錄,單擊“修改記錄”按扭,將進入到修改狀態(tài)。窗體中各個控件的屬性見表7-1表7-1修改課程窗體中各個控件的屬性設(shè)置控件屬性屬性取值FrmModifycourseinfo(Form)FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption修改密碼MDIChildTrueCmdFirstNamecmdOKCaption第一條記錄CmdPreviousNameTxtPassword2Caption上一條記錄CmdNextNameCmdOKCaption下一條記錄CmdLastNameCmdCanelCaption最后一條記錄CmdEditNameCmdEditCaption修改記錄CmdUpdateNamecmdUpdateCaption更新記錄CmdCancelNamecmdCancelCaption取消修改記錄CmdDeleteNameCmdDeleteCaption刪除記錄Frame1Caption查看課程信息txtCoursenoNametxtClassnotxtCoursenaemNameTxtCoursenaemComboCoursetypeNameComboCoursetypetxtcoursedesNametxtcoursedesLabel1Caption課程編號Label2Caption課程名稱Label3Caption課程類型Label4Caption課程描述Frame2Caption修改課程信息(三)設(shè)置年級課程窗體的創(chuàng)建選擇菜單“課程設(shè)置/設(shè)置年級課程”,將出現(xiàn)如圖7-2所示的窗體。圖7-2設(shè)置年級課程窗體窗體各個控件的屬性設(shè)置見表7-2表7-2修改課程信息中各個控件的屬性設(shè)置控件屬性屬性取值FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption設(shè)置年級課程MDIChildTrueCombogradeNamecombogradeListallcourse(listbox)NamelistallcourseListselectcourse(listbox)NamelistselectcourseCmdSetNamecmdsetCaption設(shè)置課程CmdModifyNamecmdModifyCaption確認設(shè)置CmdAddNameCmdEditCaption-CmdDeleteNameCmdDeleteCaption--Label1Caption選擇年級Label2Caption所有課程Label3Caption已經(jīng)選擇課程程序開始運行后,選擇年級,將在“已經(jīng)選擇課程”列表框中顯示內(nèi)容。單擊“年級”下拉式文本框,將觸發(fā)Click事件顯示所選擇年級的課程,程序根據(jù)選擇的年級查詢獲得相應(yīng)的信息,并顯示在列表框中。單擊“設(shè)置課程”按鈕,將進入設(shè)置狀態(tài),“所有課程”列表框?qū)@示所有課程。列表框的ListIndex屬性用來指示當(dāng)前選擇項,-1說明沒有被選中的數(shù)據(jù)項。單擊“確認設(shè)置”按鈕,將課程設(shè)置數(shù)據(jù)保存到數(shù)據(jù)庫中,單擊“退出課程設(shè)置”按鈕將退出程序。八成績管理模塊的創(chuàng)建成績管理模塊主要實現(xiàn)如下功能添加成績信息。修改成績信息。查詢成績信息。統(tǒng)計成績信息。加成績信息窗體的創(chuàng)建選擇“成績管理/添加成績信息”菜單,將出現(xiàn)如圖8-1所示的窗體。圖8-1添加成績信息窗體窗體中各個控件的屬性設(shè)置見表8-1表8-1添加成績信息窗體中各個控件的屬性設(shè)置控件屬性屬性取值FrmModifycourseinfo(Form)NamefrmAddresultCaption添加成績信息MDIChildTrueCmdOKNamecmdOKCaption確定添加CmdCancelNameCmdCancelCaption退出添加comboExamtypeNamecomboExamtypecomboClassnoNametxtClassnocomboCourseNamecomboCoursetxtResultNametxtResultcomboSIDNamecomboSIDtxtNameNametxtNameLabel1Caption考試編號Label2Caption選擇班號Label3Caption選擇學(xué)號Label4Caption姓名Label5Caption選擇課程Label6Caption分數(shù)選擇班級后,將觸發(fā)Click事件,學(xué)號的文本框中自動加入相關(guān)班級的所有學(xué)號,單擊“確認添加”按鈕,將輸入內(nèi)容添加到數(shù)據(jù)庫中。單擊“取消添加”按鈕,將輸入的內(nèi)容刪除。(二)、修改成績管理信息窗體的創(chuàng)建選擇“成績管理修改成績信息”菜單,將出現(xiàn)如圖8-2所示的窗體。圖8-2修改成績信息窗體窗體中各個控件的屬性設(shè)置見表8-2表8-2修改成績信息窗體中各個控件的屬性設(shè)置控件屬性屬性取值FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption修改密碼MDIChildTrueCmdFirstNamecmdOKCaption第一條記錄CmdPreviousNameTxtPassword2Caption上一條記錄CmdNextNameCmdOKCaption下一條記錄CmdLastNameCmdCanelCaption最后一條記錄CmdEditNameCmdEditCaption修改記錄CmdUpdateNamecmdUpdateCaption更新記錄CmdCancelNamecmdCancelCaption取消修改記錄CmdDeleteNameCmdDeleteCaption刪除記錄Frame1Caption查看成績信息comboTestnoNamecomboTestnocomboClassnoNamecomboClassnocomboNoNameComboNotxtNameNametxtNamecomboCourseNamecomboCoursetxtResultNametztResultFrame2Caption修改成績信息Label1Caption考試編號Label2Caption選擇班級Label3Caption選擇學(xué)號Label4Caption姓名Label5Caption選擇課程Label6Caption輸入分數(shù)“查看成績信息”框架中的4個按鈕用來移動的數(shù)據(jù)集中記錄的位置,需要將記錄集對象定義為全局變量,程序在窗體載入時自動加入各條記錄,由于程序中各處需要顯示數(shù)據(jù),所以需要定義函數(shù)ViewData。單擊“第一條記錄”按鈕時,將顯示第一條記錄,單擊“最后一條記錄”按鈕時,將顯示最后一條記錄,單擊“下一條記錄”按鈕時,將顯示下一條記錄,單擊“上一條記錄”按鈕時,將顯示上一條記錄,程序后面很多地方都將用到類似的查看信息的方法,后面就不重復(fù)了?!靶薷某煽冃畔ⅰ笨蚣苤械?個按鈕用來修改數(shù)據(jù)集中的記錄,單擊“修改記錄”按扭,將進入到修改狀態(tài)。(三)查詢成績信息窗體的創(chuàng)建查詢成績信息窗體的創(chuàng)建方法與上面的窗體創(chuàng)建方法相同。選擇“成績管理/查詢成績信息”菜單,將出現(xiàn)查詢信息的窗體,設(shè)置窗體中各個控件的屬性。(四)統(tǒng)計成績信息窗體的創(chuàng)建選擇“成績管理/統(tǒng)計成績信息”菜單,將出現(xiàn)統(tǒng)計信息的窗體,設(shè)置窗體中各個控件的屬性。把成績統(tǒng)計出來并排好名次,然后編寫程序代碼。九、系統(tǒng)實現(xiàn)完成以上各個功能模塊的創(chuàng)建后,當(dāng)啟動該系統(tǒng)時,首先出現(xiàn)登錄窗口。在窗口的文本框中輸入用戶名和密碼,如果用戶三次輸入密碼不正確,將退出該程序。如果進入系統(tǒng)。出現(xiàn)學(xué)生信息管理系統(tǒng)的主窗體。選擇“系統(tǒng)/添加用戶”會出現(xiàn)添加用戶窗口,輸入用戶名和密碼,并對密碼的確認,單擊確認即可添加用戶。選擇“系統(tǒng)/修改用戶密碼”當(dāng)兩次輸入密碼一致時,數(shù)據(jù)庫中的記錄將更新。選擇“課程設(shè)置/修改課程”菜單,就可以對課程進行修改。選擇“課程設(shè)置/設(shè)置年級課程”出現(xiàn)設(shè)置課程窗口,選擇年級,通過按鈕可以增加或刪除該年級的課程,單擊“確認設(shè)置”按鈕,將課程設(shè)置數(shù)據(jù)保存到數(shù)據(jù)庫中。單擊“退出課程設(shè)置”按鈕將退出程序。選擇“成績管理/添加成績信息”菜單,選擇班級后,學(xué)號的文本框中自動加入相關(guān)班級的所有學(xué)號,單擊“確認添加”按鈕,將輸入內(nèi)容添加到數(shù)據(jù)庫中。單擊“取消添加”按鈕,將輸入的內(nèi)容刪除。選擇“成績管理/修改成績信息”菜單,“查看成績信息”框架中的4個按鈕用來移動的數(shù)據(jù)集中記錄的位置,“修改成績信息”框架中的4個按鈕用來修改數(shù)據(jù)集中的記錄,單擊“修改記錄”按扭,將進入到修改狀態(tài)。選擇“成績管理/查詢成績信息”首先選擇查詢方式,然后輸入查詢內(nèi)容。單擊“查詢”按鈕,就可以查出成績信息。選擇“成績管理/統(tǒng)計成績信息”,單擊“統(tǒng)計”按鈕,即可統(tǒng)計成績。十、系統(tǒng)的編譯完成了學(xué)生信息管理系統(tǒng)的編程和調(diào)試工作,最后一步就是該系統(tǒng)的編譯。這涉及工程項目屬性的設(shè)置、可執(zhí)行應(yīng)用程序的生成。在系統(tǒng)的編譯和發(fā)行以前,設(shè)置工程項目的屬性。選擇菜單“ProjectlStudentProperties”,將會出現(xiàn)屬性頁并對其進行修改。最后選擇“FileMakeStudent_Mis.exe”菜單,編譯開始。編譯完畢后,即生成了相對的可執(zhí)行文件。編譯成功后,生成可執(zhí)行文件Student_Mis.exe。需要在發(fā)行前對生成的可執(zhí)行文件進行測試。通過測試的可執(zhí)行文件就可以發(fā)布運行了。一個完整的學(xué)生信息管理系統(tǒng)就創(chuàng)建完畢了。十一、總結(jié)歷時六周的畢業(yè)設(shè)計終于劃上了一個圓滿的句號,感慨亦多。這次畢業(yè)設(shè)計讓我鞏固了VisualBasic的程序設(shè)計以及數(shù)據(jù)庫的知識,使我較系統(tǒng)、全面地了解其他相關(guān)學(xué)科的知識,拓寬自己的視野。更重要的是通過親自動手編寫程序;調(diào)試系統(tǒng);提高了自己應(yīng)用知識和動手能力。同時也讓我感到在大學(xué)三年的理論學(xué)習(xí)中,基礎(chǔ)理論掌握的不夠扎實,在畢業(yè)設(shè)計過程中許多地方還要重新學(xué)習(xí),以至浪費了不少寶貴的時間。但是從一無所知,到能獨立制作出一個簡單的系統(tǒng),是學(xué)習(xí)的過程,也是挑戰(zhàn)自我的過程??傮w講這次畢業(yè)設(shè)計對我是受益匪淺的,它不僅讓我鞏固了大學(xué)三年所學(xué)的專業(yè)知識,而且有效地提高了我獨立思考問題能力及與他人協(xié)作共同解決問題的能力。通過本次畢業(yè)設(shè)計,使我積累了VisualBasic程序設(shè)計的經(jīng)驗。對我以后從事VisualBasic程序設(shè)計的工作增添了信心。十二、致謝詞經(jīng)過了為期六周的畢業(yè)設(shè)計,我學(xué)到了許多寶貴的工程實踐經(jīng)驗,并且從中感受到了作為一名工程人員的樂趣,收獲很大。在此我首先要感謝我的指導(dǎo)老師——李宏偉老師,是他把我領(lǐng)進門,對我耐心的指導(dǎo),教給了我豐富的知識,也正是從本次畢業(yè)設(shè)計開始,我深入地了解了VisualBasic程序設(shè)計,并掌握了VisualBasic程序設(shè)計技術(shù)方法的一般應(yīng)用,為我將來走上工作崗位打下了堅實的基礎(chǔ)。參考文獻[1][美]Microsoft公司著.MicrosoftVisualBasic6.0ControlsReference控件參考手冊北京希望電子出版社,1999[2]段銀田,陳勇孝,郎洪VisualBasic程序設(shè)計基礎(chǔ)北京:高等教育出版社,1999[3][美]DiannesieboldVisualBasic開發(fā)指南—SQLServer篇北京:電子工業(yè)出版社,2000[4]胡榮根VisualBasic6.0中文版數(shù)據(jù)庫和Internet編程北京:清華大學(xué)出版社1999[5]宋琦凡付敬平使用VisualBasic開發(fā)數(shù)據(jù)庫應(yīng)用軟件北京:電子工業(yè)出版社,1996[6]龔沛曾陸慰民揚志強VisualBasic程序設(shè)計教程[6.0]北京:高等教育出版社2000[7]丁莉等編著VisualBasic6.0中文版編程實例詳解北京:電子工業(yè)出版社,1999附錄創(chuàng)建表格的SQL語句:(一)創(chuàng)建系統(tǒng)用戶表格user_InfoCREATETABLE[dbo].[user_Info1]([user_ID][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,[user_PWD][char](10)COLLATEChinese_PRC_CI_ASNULL,[user_Des][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](二)創(chuàng)建課程基本信息表course_InfoCREATETABLE[dbo].[course_Info]([course_No][int]NOTNULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[course_Type][char](10)COLLATEChinese_PRC_CI_ASNULL,[curse_Des][char](50)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](三)創(chuàng)建年級課程設(shè)置信息表gradecourse_InfoCREATETABLE[dbo].[gradecourse_Info]([grade][char](10)COLLATEChinese_PRC_CI_ASNULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](四)創(chuàng)建學(xué)生成績信息表result_InfoCREATETABLE[dbo].[result_Info]([exam_No][char](10)COLLATEChinese_PRC_CI_ASNOTNULL[student_ID][int]NOTNULL,[student_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[class_No][int]NULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[result][float]NULL)ON[PRIMARY]五、學(xué)生信息管理系統(tǒng)主窗體的創(chuàng)建(四)創(chuàng)建公用模塊程序:PublicFunctionExecuteSQL(ByValSQLAsString,MsgStringAsString)DimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToExecuteSQL_ErrorsTokens=Split(SQL)Setcnn=NewADODB.Connectioncnn.OpenConnectStringIfInStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0)))Thencnn.ExecuteSQLMsgString=sTokens(0)&"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim&(SQL),cnn,adOpenKeyset,adLockOptisticSetExecuteSQL=rstMsgString="查詢到"&rst.RecordCount&"記錄條"EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:MsgString="查詢錯誤:"&Err.DescriptionResumeExecuteSQL_ExitEndFunctionPublicFunctionConnectString()AsStringConnectString="FileDSN=studentinfo.dsn;UID=sa;PWD="EndFunctionPublicFunctionTesttxt(txtAsString)AsBooleanIfTrim(txt)=""ThenTesttxt=FalseElseTesttxt=TrueEndIfEndFunctionSubMian()DimfLoginAsNewFrmlogicfLogin.ShowvbModalIfNotfLogin.OKThenEndEndIfUnloadfLoginSetfMainForm=NewfrmMainfMainForm.ShowEndSubPublicUserNameAsString用戶登錄窗體的創(chuàng)建程序:OptionExplicitPublicOKAsBooleanDimimCountAsIntegerPrivateSubForm_Load()OK=Falsemicount=0EndSubPrivateSubcmdok_Click()DimtxtsSQLAsStringDimmrcAsADODB.RecordsetDimMsgTextAsStringUserName=""IfTrim(txtUserName.Text="")ThenMsgBox"沒有這個用戶,請重新輸入用戶名!",vbOKOnly+vbExclamation,"警告"txtUserName.SetFocusElsetxtsql="select*fromuser_Infowhereuser_ID=""&txtUserName.Text&"""Setmrc=ExecuteSQL(txtsql,MsgText)Ifmrc.EOF=TrueThenMsgBox"沒有這個用戶,請重新輸入用戶名!",vbOKOnly+vbExclamation,"警告"txtUserName.SetFocusElseIfTrim(mrc.Fields(1))=Trim(txtPassword.Text)ThenOK=Truemrc.CloseMe.HideUserName=Trim(txtUserName.Text)ElseMsgBox"輸入密碼不正確,請重新輸入!",vbOKOnly+vbExclamation,"警告"txtPassword.SetFocustxtPassword.Text=""EndIfEndIfEndIfmicount=micount+1Ifmicount=3ThenMe.HideEndIfExitSubEndSubPrivateSubcmdCancel_Click()OK=FalseMe.HideEndSub添加用戶窗體的創(chuàng)建程序:PrivateSubCmdCancel_Click()UnloadMeEndSubPrivateSubcmdOK_Click()DimtxtSQLAsStringDimmrcAsADODB.RecordsetDimMsgTextAsStringIfTrim(Text1(0).Text)=""ThenMsgBox"請輸入用戶名稱!",vbOKOnly+vbExclamation,"警告"ExitSubText1(0).SetFocusElsetxtSQL="select*fromuser_Info"Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)IfTrim(mrc.Fields(0))=Trim(Text1(0))ThenMsgBox"用戶已經(jīng)存在,請重新輸入用戶名!",vbOKOnly+vbExclamation,"警告"Text1(0).SetFocusText1(0).Text=""Text1(1).Text=""Text1(2).Text=""ExitSubElsemrc.MoveNextEndIfWendIfTrim(Text1(1).Text)<>Trim(Text1(2).Text)ThenMsgBox"兩次輸入密碼不一樣,請確認!",vbOKOnly+vbExclamation,"警告"Text1(1).SetFocusText1(1).Text=""Text1(2).Text=""Elsemrc.AddNewmrc.Fields(0)=Trim(Trim(0).Text)mrc.Fields(1)=Trim(Trim(1).Text)mrc.Updatemrc.CloseMsgBox"添加用戶成功!",vbOKOnly+vbExclamation,"添加用戶"EndIfEndIfEndSub修改用戶密碼窗體的創(chuàng)建程序:PrivateSubcmdCanel_Click()UnloadMeEndSubPrivateSubcmdOK_Click()DimtxtSQL,MsgTextAsStringDimmrcAsADODB.RecordsetIfTrim(Text1(1).Text)<>Trim(Text1(2).Text)ThenMsgBox"密碼輸入不正確!",vbOKOnly+vbExclamation,"警告"Text1(1).SetFocsText1(1).Text=""ElsetxtSQL="select*fromuser_Infowhereuser_ID=""&UserName&"""Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.Fields(1)=Text1(1).Textmrc.Updatemrc.CloseMsgBox"密碼修改成功!",vbOKOnly+vbExclamation,"修改密碼"Me.HideEndIfEndSub修改課程信息窗體的創(chuàng)建程序:DimmrcAsADODB.RecordsetDimmyBookmarkAsVariantDimmccleanAsBooleanPrivateSubCmdCancel_Click()IfNotmccleanThenFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruetxtCourseno.Enabled=FalsetxtCoursenaem.Enabled=FalsecomboCoursetype.Enabled=Falsetxtcoursedes.Enabled=Falsemrc.Bookmark=myBookmarkCallviewDataElseMsgBox"什么都沒有修改,有什么好取消的!",vbOKOnly+vbExclamation,"警告"EndIfEndSubPrivateSubCmdDelete_click()myBookmark=mrc.Bookmarkstr2$=MsgBox("是否刪除當(dāng)前記錄?",vbOKCancel,"刪除當(dāng)前記錄")Ifstr2$=vbOKThenmrc.MoveNextIfmrc.EOFThenmrc.MoveFirstmyBookmark=mrc.Bookmarkmrc.MoveLastmrc.Deletemrc.BookmarkCallviewDataElsemyBookmark=mrc.Bookmarkmrc.MovePreviousmrc.Deletemrc.Bookmark=myBookmarkCallviewDataEndIfElsemrc.Bookmark=myBookmarkCallviewDataEndIfEndSubPrivateSubCmdEdit_Click()mcclean=FalseFrame2.Enabled=FalseCmdFirst.Enabled=FalseCmdPrevious.Enabled=FalseCmdNext.Enabled=FalseCmdLast.Enabled=FalsetxtCourseno.Enabled=TruetxtCoursenaem.Enabled=TruecomboCoursetype.Enabled=Truetxtcoursedes.Enabled=TruemyBookmark=mrc.boodmarkEndSubPrivateSubCmdFirst_Click()mrc.MoveLastCallviewDataEndSubPrivateSubCmdLast_Click()mrc.MoveLastCallviewDataEndSubPrivateSubCmdNext_Click()mrc.MoveFirstIfmrc.EOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubCmdPrevious_Click()mrc.MoveFirstIfmrc.BOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubCmdUpdate_click()DimtxtSQLAsStringDimMsgTextAsStringDimmrccAsADODB.RecordsetIfmccleanThenMsgBox"請先修改課程信息",vbOKOnly+vbExclamation,"警告"ExitSubEndIfIfNotTesttxt(txtCourseno.Text)ThenMsgBox"請輸入課程編號",vbOKOnly+vbExclamation,"警告"txtCourseno.SetFocusExitSubEndIfIfNotTesttxt(txtCoursenaem.Text)ThenMsgBox"請輸入課程名稱",vbOKOnly+vbExclamation,"警告"txtCoursenaem.SetFocusExitSubEndIfIfNotTesttxt(comboCoursetype.Text)ThenMsgBox"請選擇課程類型",vbOKOnly+vbExclamation,"警告"comboCoursetype.SetFocusExitSubEndIfIfNotTesttxt(txtcoursedes.Text)ThenMsgBox"請對課程進行描述",vbOKOnly+vbExclamation,"警告"txtcoursedes.SetFocusExitSubEndIfmrc.DeletetxtSQL="select*fromstudent_Infowherestudet_ID=""&Trim(txtCourseno.Text)&"""Setmrcc=ExecuteSQL(txtCourseno,MsgText)Ifmrcc.EOF=FalseThenMsgBox"課程編號重復(fù),請重新輸入!",vbOKOnly+vbExclamation,"警告"mrcc.ClosetxtCourseno.SetFocusElsemrc.AddNewmrc.Fields(0)=Trim(txtCourseno.Text)mrc.Fields(1)=Trim(txtCoursenaem.Text)mrc.Fields(2)=Trim(comboCoursetype.Text)mrc.Fields(3)=Trim(txtcoursedes.Text)mrc.UpdateMsgBox"修改課程信息成功",vbOKOnly+vbExclamation,"修改課程信息"mrc.Bookmark=myBoomarkCallviewDataFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruetxtCourseno.Enabled=FalsetxtCoursenaem.Enabled=FalsecomboCoursetype.Enabled=Falsetxtcoursedes.Enabled=Falsemcclean=TrueEndIfEndSubPrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringtxtSQL="select*fromstudent_Info"Setmrc=ExecuteSQL(txtSQL,,MsgText)mrc.MoveFirstCallviewDatamcbookmark=mrc.Bookmarkmcclean=TrueEndSubPrivateSubviewData()txtCourseno.Text=mrc.Fields(0)txtCoursenaem.Text=mrc.Fields(1)comboCoursetype.Text=mrc.Fields(2)txtcoursedes.Text=mrc.Fields(3)EndSub設(shè)置年級課程窗體的創(chuàng)建程序:PrivateSubCmdAdd_Click()IfListallcourse.ListIndex<>-1ThenListselectcourse.AddItemListallcourse.List(Listallcourse.ListIndex)EndIfEndSubPrivateSubCmdDelete_click()IfListselectcourse.ListIndex<>-1ThenListselectcourse.RemoveItemListselectcourse.ListIndexEndIfEndSubPrivateSubcmdModify_Click()DimiAsIntegerDimmrcAsADODB.RecordsetDimmrccAsADODB.RecordsetDimMsgTextAsStringDimmyBookmarkAsVariantIfNotTesttxt(comboGrade.Text)ThenMsgBox"請先選擇年級!",vbOKOnly+vbExclamation,"警告"ExitSubEndIfIfNotTesttxt(Listselectcourse.List(0))ThenMsgBox"請先選擇課程!",vbOKOnly+vbExclamation,"警告"ExitSubEndIftxtSQL="select*fromgradecourse_Infowheregrade=""&Trim(comboGrade.Text)&"""Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOFThenFori=1ToListselectcourse.ListCountmrc.AddNewmrc.Fields(0)=comboGrade.Textmrc.Fields(1)=Listselectcourse.List(i-1)mrc.UpdateNextimrc.CloseMsgBox"課程設(shè)置成功!",vbOKOnly+vbExclamation,"警告"Elsemrc.ClosetxtSQL="delete*fromgradecourse_Infowheregrade=""&Trim(comboGrade.Text)&"""Setmrcc=ExecuteSQL(txtSQL,MsgText)txtSQL="selete*fromgradecourse_Info"Setmrcc=ExecuteSQL(txtSQL,MsgText)Fori=1ToListselectcourse.ListCountmrcc.AddNewmrcc.Fields(0)=comboGrade.Textmrcc.Fields(1)=Listselectcourse.List*(i-1)mrcc.UpdateNextimrcc.CloseMsgBox"課程設(shè)置成功!",vbOKOnly+vbExclamation,"警告"EndIfEndSubPrivateSubcmdSet_Click()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringListallcourse.Enabled=TrueListselectcourse.Enabled=TruecmdModify.Enabled=TruetxtSQL="select*fromcourse_Info"Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)Listallcourse.AddItemmrc.Fields(1)mrc.MoveNextWendmrc.CloseflagSet=TrueEndSubPrivateSubcomboGrade_Change()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringDimiAsIntegerListselectcourse.CleartxtSQL="select*fromgradecourse_Infowheregrade=""&comboGrade.Text&"""Setmrc=ExecuteSQL(txtSQL,MsgText)IfNotmrc.EOFThenFori=1Tomrc.RecoudCountListselectcourse.AddItemmrc.Fields(1)mrc.MoveNextNextiEndIfmrc.CloseEndSubPrivateSubCommand5_Click()UnloadMeEndSub添加成績信息窗體的創(chuàng)建:PrivateSubcomboClassno_Change()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringComboSID.ClearComboCourse.CleartxtSQL="select*fromstudent_Infowhereclass_ON=""&comboClassno.Text&"""Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)ComboSID.AddItemmrc!student_IDmrc.ClosetxtSQL="select*fromgradecourse_Infowheregrade=""&Grade&"""Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)ComboCourse.AddItemmrc!course_Namemrc.MoveNestWendmrc.CloseFlagselect=TrueEndSub修改成績信息窗體的創(chuàng)建程序:DimmrcAsADODB.RecordsetDimmyBookmarkAsVariantDimmccleanAsBooleanPrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringtxtSQL="select*fromstudent_info"Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.MoveFirstCallviewDatamcbookmark=mrc.Bookmarkmcclean=TrueEndSubPublicSubviewData()comboTestno.Text=mrc.Fields(0)comboClassno.Text=mrc.Fields(1)combosex.Text=mrc.Fields(2)txtboNo.Text=mrc.Fields(3)txtName.Text=mrc.Fields(4)comboCourse.Text=mrc.Fields(5)txtResult.Text=mrc.Fields(6)EndSubPrivateSubfirstcommand_click()mrc.MoveFirstCallviewDataEndSubPrivateSublastcommand_click()mrc.MoveLastCallviewDataEndSubPrivateSubpreviouscommand_click()mrc.MovePreviousIfmrc.BOFThenmrc.MoveLastEndIfCallviewDataEndSubPrivateSubnextcommand_click()mrc.MoveNextIfmrc.BOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubeditcommand_click()mcclean=FalseFrame2.Enabled=FalseCmdFirt.Enabled=FalseCmdboPrevious.Enabled=FalseCmdNext.Enabled=FalseCdLast.Enabled=FalsecomboTestno.Enabled=TruecomboClassno.Enabled=TruecomboNo.Enabled=TruetxtName.Enabled=TruecomboCourse.Enabled=TruetxtResult.Enabled=TruemyBookmark=mrc.BookmarkEndSubPrivateSubCmdUpdate_click()DimtxtSQLAsStringDimMsgTextAsStringDimmrccAsADODB.RecordsetIfmccleanThenMsgBox"請選擇考試編號",vbOKOnly+vbExclamation,"警告"comboTestno.SetFocusExitSubEndIfIfNotTesttxt(txtsid.Text)ThenMsgBox"請輸入學(xué)號!",vbOKOnly+vbExclamation,"警告"comboNo.SetFocusExitSubEndIfIfNotTesttxt(txtName.Text)ThenMsgBox"請輸入姓名!",vbOKOnly+vbExclamation,"警告"txtName.SetFocusExitSubEndIfIfNotTesttxt(combosex.Text)ThenMsgBox"請選擇課程!",vbOKOnly+vbExclamation,"警告"comboCourse.SetFocusExitSubEndIfIfNotTesttxt(comboClassno.Text)ThenMsgBox"請選擇班號!",vbOKOnly+vbExclamation,"警告"comboClassno.SetFocusExitSubEndIfIfNotTesttxt(txtsid.Text)ThenMsgBox"請輸入分數(shù)!",vbOKOnly+vbExclamation,"警告"txtResult.SetFocusExitSubEndIfIfNotIsNumeric(Trim(txtsid.Text))ThenMsgBox"學(xué)號和分數(shù)請輸入數(shù)字!",vbOKOnly+vbExclamation,"警告"txtsid.SetFocustxtResult.SetFocusExitSubEndIfmrc.DeletetxtSQL="select*fromstudent_infowherestudent_id=""&trim(txtsid.text)&"""Setmrcc=exceutesql(txtSQL,MsgText)Ifmrcc.BOF=FalseThenMsgeox"學(xué)號重復(fù),請重復(fù)輸入!",vbOKOnly+vbExclamation,"警告"mrcc.ClosecomboNo.SetFocusElsetxtrudate=Format(txtrudate,"yyyy-mm-dd")mrc.AddNewmrc.Fields(0)=Trim(comboTestno.Text)mrc.Fields(1)=Trim(comboClassno.Text)mrc.Fields(2)=Trim(comboNo.Text)mrc.Fields(3)=Trim(txtName.Text)mrc.Fields(4)=Trim(comboClassno.Text)mrc.Fields(5)=Trim(txtName.Text)mrc.Fields(6)=Trim(comboCourse.Text)mrc.Fields(7)=Trim(txtResult.Text)mrc.UpdateMsgBox"修改學(xué)籍信息成功!",vbOKOnly+vbExclamation,"修改學(xué)籍信息"mrc.Bookmark=myBookmarkCallviewDatacomdFirt.Enabled=TruecomdboPrevious.Enabled=TruecomdNext.Enabled=TruecomdLast.Enabled=TruecomboTestno.Enabled=FalsecomboClassno.Enabled=FalsecomboNo.Enabled=FalsetxtName.Enabled=FalsecomboCourse.Enabled=FalsetxtResult.Enabled=False.Enabled=False.Enabled=Falsemcclean=TrueEndIfEndIfEndSubPrivateSubcancelcommand_click()IfNotmccleanThenFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruecomboTestno.Enabled=FalsecomboClassno.Enabled=FalsecomboNo.Enabled=FalsetxtName.Enabled=Falsecombo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論