學生信息管理系統VB課程設計報告_第1頁
學生信息管理系統VB課程設計報告_第2頁
學生信息管理系統VB課程設計報告_第3頁
學生信息管理系統VB課程設計報告_第4頁
學生信息管理系統VB課程設計報告_第5頁
已閱讀5頁,還剩23頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEVisualBasic課程設計報告 題目:學生信息管理難度:*** 指導教師:袁紅兵姓名:譚鑫學號:1101400114專業:工業工程班級:11014001學院:機械工程學院日期:2012年3月1PAGE2PAGE1VisualBasic課程設計報告一、 題目簡介 1二、設計思路與總體方案 6三、設計過程遇到的主要問題及解決方法 21四、設計中尚存的不足分析 22五、心得體會 25六、參考文獻 26題目簡介學生進入學校后,每個人有很多信息,例如:學號,姓名,出生年月,專業,所在院系,個人愛好等等,這些信息很雜亂,也很難一一理,清查詢起來也很難,用學生信息管理對這些信息進行管理。本題目旨在設計與一個可對學生信息進行管理和查詢統計的程序,維護學生的學號通過此程序的設計,可以加深我們對上學期的vb基礎知識的印象,使理論升華為實際操作,同時也有助于我們培養合理化意識,用電子記錄的形式取代從前的手寫記錄,使得信息更加精準,不易丟失。題目的難度系數相對不高,但牽涉到眾多的知識點,作為典型的多模塊設計類型的題目,本程序涉及兩個模塊,主窗體和查詢窗體。復習了上學期我們所學的vb知識,自定義數據類型和動態數組,更加熟練的掌握了這兩方面知識。在這一程序中,還要學會兩個新控件MSFlexGird表格控件和DTPicker日期選擇器的使用。MSFlexGrid卻是這個程序編輯過程中最主要的控件,所以需要自學,還是有點難度的。MSFlexGrid控件具有很強的數據組織能力和顯示能力,但是其本身并無編輯數據的功能。本程序使用了文本框、DTPicker日期選擇器控件和下拉式組合框三個控件來協助數據編輯。如何協調三個編輯控件的顯示和隱藏是本題目的難點。題目提供了四個文本文件:“名族.txt”、“院系.txt”、“專業.txt”和“省份.txt”,其中的信息可供程序在顯示編輯組合框時使用。每個名族。院系。專業和省份都有一個代號,為了縮減data.dat文件的大小,該文件中并未保存具體的名稱,而是一個代號。程序要求實現如下功能(主要根據窗口由易到難的順序來)(1)學生進入系統,進入登陸界面,系統要求學生輸入學號和密碼。(自加窗體)系統要求學生的密碼和學號相同,若不相同,則顯示以下界面系統要求學生的學號為純數字,不得包含字母等,且學號為十位數,若不滿足條件,則顯示以下界面學生輸入正確的學號和密碼后,系統會跳入主界面,如圖所示(2)學生信息保存在隨機訪問文件data.dat文件中,該文件與可執行文件位于同一文件夾中。運行程序,顯示圖1所示界面,自動列出數據文件data.dat中保存的所有學生信息,每個學生占一行。程序使用了MSFlexGrid表格控件進行信息的組織和顯示。用戶一旦修改添加了學生信息會保存到data.txt文件中。如果啟動時程序為在當前目錄中找到data.dat文件,則顯示沒有數據行的空表,允許用戶添加學生信息并保存為data.dat文件。(2)使用鼠標單擊表格的某一單元格,則該格會突出顯示,所在行為當前行。單擊工具欄上的“插入”按鈕在當前行位置上插入一個新空行,單擊“追加”按鈕會在表格最后添加一個空行。使用“刪除”按鈕合一刪除當前空行。如下圖所示:(3)無論是空格還是已有數據的格,都可以對其中的數據進行直接編輯,對于學號、姓名和高考分數三列數據使用文本框進行編輯;對于出生日期使用DTPicker控件進行編輯;對于性別、民族、院系、專業和省份等五列數據使用組合框控件編輯。例如,下圖所示:對數據進行編輯之后,單擊“保存”按鈕將編輯后的結果保存到data.dat文件中。(4)選擇“查詢”按鈕,彈出圖所示的“查詢”對話框。在“查詢”對話框中可以組合多種文件夾來查詢感興的數據。如圖所示,選擇“性別”和“院系”并在性別中選擇“男”在院系中選擇“機械工程學院”,表示查找所有機械工程學院男學生的信息。按“確定”按鈕返回主窗口,所有滿足條件的數據行一紅色背景顯示。(5)在“查詢”對話框中如圖所示未選中的數據列表示該數據不加限制,該項后面用于輸入詳細信息的文本框和組合框是無效的。“學號”和“姓名”中可以輸入完整的學號和姓名,也可以輸入部分的學號和姓名。連續使用“查詢”功能時,后一次的查詢不會清除前一次查詢的結果,二者會同時突出顯示。如果在查詢對話框中不指定任何條件會選擇所有的數據行,如果單擊了查詢對話框中的“取消”按鈕會取消所有數據行的突出顯示。(6)如果用戶對數據進行了修改,關閉程序是彈出如圖所示的消息框加以提示.二、設計思路與總體方案學學學生信息管理系統登陸界面面主界面查詢界面保存追加插入刪除查詢2.1標準模塊Module1一、因為在整個過程中都涉及到學生信息的編輯,所以對于學生信息定義成全局級的自定義數據類型。同時民族、院系、專業、省份都是需要讀入的,所以定義為動態數組。PublicTypeStudentInfo'定義自定義數據類型'定義自定義數據類型number'學號AsString*8'學號Name姓名AsString*8姓名Sex性別AsBoolean性別Birth生日AsDate生日Nation民族AsByte民族faculty院系AsByte院系subject專業AsByte專業Province省份AsByte省份Score高考分數AsSingle高考分數EndTypePublicnum學生數AsInteger學生數Publicstudent學生信息()AsStudentInfo學生信息PublicModified是否被修改過AsBoolean是否被修改過PublicEditMode編輯模式AsBoolean編輯模式Publicfaculty()AsStringPublicPublicNation()AsStringPublicsubject()AsStringPublicconArr(9)AsControl另外由于保存過程中涉及到文件是否被修改,所以應該定義一個邏輯型變量Modified來標榜數據是否被修改,同時根據要求過程涉及到是否可以編輯,所以定義全局的邏輯型變量EditMode來標榜是否可以編輯。定義了一系列的動態數組,需要將其重新定義,將文件中的民族,專業、院系、省份的具體內容讀入動態數組中,同時在啟動程序時需要加載數據,表格要顯示學生信息,而關閉時需要保存數據,所以編寫了OpenData、SaveData兩個全局過程方便調用。并且采用讀隨機文件的方式進行文件的讀寫,根據上學期所學知識,隨機文件的特點使得使用自定義類型對其進行操作是非常方便的。PublicSubOpenData打開數據()打開數據DimiAsIntegerDimstuAsStudentInfonum=0沒有學生,則刪除student動態數組沒有學生,則刪除student動態數組ErasestudentIfDir(App.Path&"\data.dat")找不到數據文件=""Then找不到數據文件ExitSubEndIfOpenApp.Path&"\data.dat"ForRandomAs1Len=Len(stu)將文件的一條記錄的長度與studentinfo的長度對應將文件的一條記錄的長度與studentinfo的長度對應num=LOF(1)/Len(stu)確定文件中學生的人數確定文件中學生的人數Fori=1Tonum讀入的數據存入student(讀入的數據存入student(i)中ReDimPreservestudent(i)Get#1,,student(i)NextClose#1Modified=FalseEndSubPublicSubSaveData()保存數據保存數據DimiAsIntegerDimstuAsStudentInfoIfDir(App.Path&"\data.dat")<>""ThenKillApp.Path&"\data.dat"EndIfOpenApp.Path&"\data.dat"ForRandomAs1Len=Len(stu)Fori=1TonumPut#1,,student(i)NextClose#1Modified=FalseEndSubPublicSubOpenInfo()DimiAsIntegerDimnAsIntegerIfDir(App.Path&"\院系.txt")<>""Theni=0OpenApp.Path&"\院系.txt"ForInput讀入順序文件As1讀入順序文件DoWhileNotEOF讀到1號文件的末尾(1)讀到1號文件的末尾i=i+1ReDimPreservefaculty(i)Input#1,n,faculty(i)LoopCloseEndIfIfDir(App.Path&"\民族.txt")<>""Theni=0OpenApp.Path&"\民族.txt"ForInputAs1DoWhileNotEOF(1)i=i+1ReDimPreserveNation(i)Input#1,n,Nation(i)LoopCloseEndIfIfDir(App.Path&"\省份.txt")<>""Theni=0OpenApp.Path&"\省份.txt"ForInputAs1DoWhileNotEOF(1)i=i+1ReDimInput#1,n,Province(i)LoopCloseEndIfIfDir(App.Path&"\專業.txt")<>""Theni=0OpenApp.Path&"\專業.txt"ForInputAs1DoWhileNotEOF(1)i=i+1ReDimPreservesubject(i)Input#1,n,subject(i)LoopCloseEndIfEndSub2.2窗體模塊frmlogin由于本窗體為自加窗體,visuaibasic程序中添加窗體中選擇登陸窗體,microsoft已提供部分代碼OptionExplicitPublicLoginSucceededAsBooleanPrivateSubcmdCancel_Click()LoginSucceeded=FalseMe.HideEndSubPrivateSubcmdOK_Click()IfIsNumeric(txtUserName.Text)=TrueAndLen(txtUserName.Text)=10ThenIftxtPassword=txtUserName.TextThenLoginSucceeded=TrueMe.Hidefrmstudent.ShowElseMsgBox該登陸窗體使用了較多的msgbox語句,以文本和圖表的方式向用戶現實運行過程中的信息,另一方面以按鈕方式顯示兩個選項,由用戶通過單擊做出選擇。"無效的密碼,請重試!",,"登錄"該登陸窗體使用了較多的msgbox語句,以文本和圖表的方式向用戶現實運行過程中的信息,另一方面以按鈕方式顯示兩個選項,由用戶通過單擊做出選擇。txtPassword.SetFocusSendKeys"{Home}+{End}"EndIfElseMsgBox"對不起,你不是本校學生!",33,"錯誤"EndIfEndSub2.3窗體主模塊frmstudent一.該窗體模塊是本程序的主體,最上方是5個命令按鈕控件,中間是MSFlexGrid控件,最下方是協助編輯的三個文本框控件,一個DTPicker控件,5個下拉式組合框控件(根據提供的效果圖進行設計)。下面是編輯窗體中除了5個命令按鈕控件以外的主要程序的編寫思路:1.打開數據文件2.加載顯示信息的表格(包括設定表格的位置大小)3.用表格顯示數據文件中的信息4.為各編輯控件賦值,同時因為控件較多,為了方便在各事件過程中對其進行編輯,使用對象型數組得到相應的控件5.因為MSFlexGrid控件只能顯示數據,并不支持用戶直接進行編輯,編輯控件要編程才能實現。根據《課程設計》中介紹的方法,編輯MSFlexGrid控件的EnterCell和LeaveCell事件,使用戶可以對表格中數據進行編輯。6.由于一些事件過程不僅在一個事件中需要用到,在命令按鈕控件等所表示的功能中也會用到所以對其進行單獨編寫,方便調用。另外因為一些功能需要編寫的代碼太長,對其單獨編寫,然后調用,我認為可以使程序更有調理,結構更優。所以我對ShowAll、UpdateCell、ClearEdit、GetNew(分別用于展示信息,將編輯控件中的內容賦給單元格、清除所編輯的內容,再添加和插入過程中使用編輯控件得到新的值)7.對窗體關閉時的事件進行編輯8.在結束時涉及到當表格里的數據被更改時需不需要保存的問題,所以對于編輯控件的change事件中,要加入modified值的判斷9.以下是我編寫的代碼的展示:PrivateSubcbosex_Click()Modified=TrueEndSubPrivateSubcbonation_Click()Modified=TrueEndSubPrivateSubcbofaculty_Click()Modified=TrueEndSubPrivateSubcbosubject_Click()Modified=TrueEndSubPrivateSubcboprovince_Click()Modified=TrueEndSubPrivateSubDTPbirth_Change()Modified=TrueEndSubPrivateSubForm_Load()DimiAsIntegerCallOpenData打開主數據文件打開主數據文件CallOpenInfo打開輔助數據文件打開輔助數據文件MSFstudent.Rows=num+1CallShowAllEditMode=TrueIfMSFstudent.Rows>1AndMSFstudent.Cols>1Thentxtnumber.Text=MSFstudent.TextMatrix(1,1)EndIfSetconArr(1)=txtnumberSetconArr(2)=txtnameSetconArr(9)=txtscoreSetconArr(3)=DTPbirthSetconArr(4)=cbosexSetconArr(5)=cbonationSetconArr(6)=cbofacultySetconArr(7)=cbosubjectSetconArr(8)=cboprovince使用對象型數組得到相應的控件使用對象型數組得到相應的控件conArr(4).AddItem"男"conArr(4).AddItem"女"Fori=1ToUBound(Nation)conArr(5).AddItemNation(i)NextFori=1ToUBound(faculty)conArr(6).AddItemfaculty(i)NextFori=1ToUBound(subject)conArr(7).AddItemsubject(i)NextFori=1ToUBound(Province)conArr(8).AddItemProvince(i為各編輯控件賦值為各編輯控件賦值NextModified=FalseEndSubPrivateSubfrom_Resize()MSFstudent.Height=Me.ScaleHeight-MSFstudent.TopMSFstudent.Width=Me.ScaleWidthEndSubPrivateSubform_Unload(CancelAsInteger)DimiAsIntegerIfModifiedTheni=MsgBox("數據已被編輯,退出前是否保存?",vbExclamation+vbYesNoCancel)SelectCaseiCasevbYesCallSaveDataCasevbCancelCancel=1EndSelectEndIfEndSubPrivateSubMSFstudent_EnterCell()該事件將表格中的數據移入編輯控件conArr中,這樣就可以通過編輯控件的程序代碼編輯表格數據該事件將表格中的數據移入編輯控件conArr中,這樣就可以通過編輯控件的程序代碼編輯表格數據DimiAsIntegerIfNotEditModeThenExitSubIfMSFstudent.MouseCol=0OrMSFstudent.MouseRow=0ThenExitSubEndIfSelectCaseMSFstudent.colCase4To8以組合框顯示的以組合框顯示的WithconArr(MSFstudent.col)將編輯控件移到當前單元格將編輯控件移到當前單元格.Top=MSFstudent.Top+MSFstudent.CellTop.Left=MSFstudent.Left+MSFstudent.CellLeft.Width=MSFstudent.CellWidth高度不設定的原因是設定后會與表格的列高沖突高度不設定的原因是設定后會與表格的列高沖突.Visible=True.SetFocusSelectCaseMSFstudent.colCase4Ifstudent(MSFstudent.row).SexThen.ListIndex=0Else.ListIndex=1EndIfIfTrim(MSFstudent.TextMatrix(MSFstudent.row,MSFstudent.col))=""Then.ListIndex=-1'去掉左右的空格后的內容'去掉左右的空格后的內容Case5.ListIndex=student(MSFstudent.row).Nation-1Case6.ListIndex=student(MSFstudent.row).faculty-1Case7.ListIndex=student(MSFstudent.row).subject-1Case8.ListIndex=student(MSFstudent.row).Province-1EndSelectEndWithCase3'以日期選擇器顯示的'以日期選擇器顯示的WithconArr(3).Top=MSFstudent.Top+MSFstudent.CellTop.Left=MSFstudent.Left+MSFstudent.CellLeft.Width=MSFstudent.CellWidth.Height=MSFstudent.CellHeightIfstudent(MSFstudent.row).Birth=#12:00:00AM#Then.Value=DateElse.Value=student(MSFstudent.row).BirthEndIf.Visible=True.SetFocusEndWithCase1,2,9'以文本框顯示的'以文本框顯示的WithconArr(MSFstudent.col).Top=MSFstudent.Top+MSFstudent.CellTop.Left=MSFstudent.Left+MSFstudent.CellLeft.Width=MSFstudent.CellWidth.Height=MSFstudent.CellHeight.Text=MSFstudent.Text.Visible=True.SetFocusEndWithEndSelectEndSubPrivateSubMSFstudent_LeaveCell()IfNotEditModeThenExitSubCallUpdateCell(MSFstudent.row,MSFstudent.col)CallClearEditEndSubPrivateSubShowAll()將數組中的值顯示在表格中將數組中的值顯示在表格中DimiAsIntegerFori=1TonumMSFstudent.TextMatrix(i,0)=iMSFstudent.TextMatrix(i,1)=student(i).numberMSFstudent.TextMatrix(i,2)=student(i).NameIfstudent(i).Birth=#12:00:00AM#ThenMSFstudent.TextMatrix(i,3)=""ElseMSFstudent.TextMatrix(i,3)=student(i).BirthEndIfIfstudent(i).SexThenMSFstudent.TextMatrix(i,4)="男"ElseMSFstudent.TextMatrix(i,4)="女"EndIfIfstudent(i).Nation>0ThenMSFstudent.TextMatrix(i,5)=Nation(student(i).Nation)ElseMSFstudent.TextMatrix(i,5)=""EndIfIfstudent(i).faculty>0ThenMSFstudent.TextMatrix(i,6)=faculty(student(i).faculty)ElseMSFstudent.TextMatrix(i,6)=""EndIfIfstudent(i).subject>0ThenMSFstudent.TextMatrix(i,7)=subject(student(i).subject)ElseMSFstudent.TextMatrix(i,7)=""EndIfIfstudent(i).Province>0ThenMSFstudent.TextMatrix(i,8)=Province(student(i).Province)ElseMSFstudent.TextMatrix(i,8)=""EndIfMSFstudent.TextMatrix(i,9)=student(i).ScoreNextEndSubPrivateSubExitEdit()EditMode=FalseCallUpdateCell(MSFstudent.row,MSFstudent.col)CallClearEditEndSubPrivateSubUpdateCell將編輯控件中的內容賦給單元格(rowAsInteger,colAsInteger)將編輯控件中的內容賦給單元格SelectCasecolCase1,2,9MSFstudent.TextMatrix(row,col)=conArr(col).TextCase3IfconArr(col).Value=DateThenMSFstudent.TextMatrix(row,col)=""ElseMSFstudent.TextMatrix(row,col)=conArr(col).ValueEndIfCase4To8MSFstudent.TextMatrix(row,col)=conArr(col).TextEndSelectSelectCasecolCase1student(row).number=conArr(col).TextCase2student(row).Name=conArr(col).TextCase3IfconArr(col).Value=DateThenstudent(row).Birth=#12:00:00AM#Elsestudent(row).Birth=conArr(col).ValueEndIfCase4IfconArr(col).ListIndex=0Thenstudent(row).Sex=TrueElsestudent(row).Sex=FalseEndIfCase5student(row).Nation=conArr(col).ListIndex+1Case6student(row).faculty=conArr(col).ListIndex+1Case7student(row).subject=conArr(col).ListIndex+1Case8student(row).Province=conArr(col).ListIndex+1Case9student(row).Score=Val(conArr(col).Text)EndSelectEndSubPrivateSubClearEdit清空編輯控件中的內容()清空編輯控件中的內容DimiAsIntegerconArr(1).Text=""conArr(2).Text=""conArr(9).Text=""conArr(3).Value=#12:00:00AM#Fori=4To8conArr(i).ListIndex=-1NextFori=1To9conArr(i).Visible=FalseNextEndSubPrivateSubGetNew在添加和刪除過程中,使用編輯控件得到新的值()在添加和刪除過程中,使用編輯控件得到新的值DimcAsIntegerForc=1To9SelectCasecCase4To8WithconArr(c)SelectCasecCase4Ifstudent(MSFstudent.row).SexThen.ListIndex=0Else.ListIndex=1EndIfIfTrim(MSFstudent.TextMatrix(MSFstudent.row,c))=""Then.ListIndex=-1Case5.ListIndex=student(MSFstudent.row).Nation-1Case6.ListIndex=student(MSFstudent.row).faculty-1Case7.ListIndex=student(MSFstudent.row).subject-1Case8.ListIndex=student(MSFstudent.row).Province-1EndSelectEndWithCase3WithconArr(3)Ifstudent(MSFstudent.row).Birth=#12:00:00AM#Then.Value=DateElse.Value=student(MSFstudent.row).BirthEndIfEndWithCase1,2,9WithconArr(c).Text=MSFstudent.TextEndWithEndSelectNextEndSubPrivateSubtxtnumber_Change()Modified=TrueEndSubPrivateSubtxtname_Change()Modified=TrueEndSubPrivateSubtxtscore_Change()Modified=TrueEndSub二.編輯前4個命令按鈕,在編寫程序時主要就是功能與算法的匹配,編寫調試,基本實現功能要求。刪除和插入由于會影響原有的數據的序號,所以編程時使用ForNext控制結構進行編寫。同時因為在編寫過程中我事先編寫了保存數據的savedata過程,所以保存按鈕的單擊事件比較簡單,直接調用。追加,由于是在原有數據之后進行編輯的功能,所以也比較簡單。PrivateSubcmdquery出現查詢窗體_Click()出現查詢窗體frmquery.ShowEndSubPrivateSubcmdappend追加_Click()追加CallExitEditnum=num+1ReDimPreservestudent(num)MSFstudent.Rows=num+1MSFstudent.TextMatrix(num,0)=Str(num)在固定列中標上行號在固定列中標上行號CallGetNewModified=True標定是否在原有基礎上修改過,在保存過程中有用,下面代碼中類似的作用標定是否在原有基礎上修改過,在保存過程中有用,下面代碼中類似的作用EditMode=TrueEndSubPrivateSubcmddelete刪除_Click()刪除DimnAsIntegerDimiAsInteger,jAsIntegern=MSFstudent.rowCallExitEditIfn=0ThenExitSubIfMSFstudent.Rows-MSFstudent.FixedRows<=1ThenExitSubMSFstudent.RemoveItemnFori=nTonum-1student(i)=student(i+1)MSFstudent.TextMatrix(i,0)=Str(i)NextMSFstudent.Rows=numnum=num-1Ifnum=0ThenErasestudentElseReDimPreservestudent(num)EndIfMsgBoxMSFstudent.row&"'"&MSFstudent.colCallGetNewModified=TrueEditMode=TrueEndSubPrivateSubcmdinsert在當前位置所在行進行插入_Click()在當前位置所在行進行插入DimnAsIntegerDimiAsInteger,jAsIntegerCallExitEditn=MSFstudent.rowMSFstudent.col=0MSFstudent.row=0Ifn=0插入的是第一條Then插入的是第一條MSFstudent.AddItem1n=1Else已有多條時的插入情況已有多條時的插入情況MSFstudent.AddItemnEndIfnum=num+1ReDimPreservestudent(num)MSFstudent.Rows=num+1Fori=numTon+1Step-1由于插入了新的一行,自插入行之后所有學生的信息的序號都要加1由于插入了新的一行,自插入行之后所有學生的信息的序號都要加1student(i)=student(i-1)MSFstudent.TextMatrix(i,0)=Str(i)Forj=1To9MSFstudent.TextMatrix(i,j)=MSFstudent.TextMatrix(i-1,j)NextNextFori=1To9MSFstudent.TextMatrix(n,i)=""Next為插入的學生設定初始編輯模式為插入的學生設定初始編輯模式student(n).Birth=#12:00:00AM#student(n).faculty=0student(n).subject=0student(n).Name=""student(n).Nation=0student(n).number=""student(n).Province=0student(n).Score=0student(n).Sex=FalseMSFstudent.TextMatrix(num,0)=Str(num)MSFstudent.row=nModified=TrueCallGetNewEditMode=TrueEndSubPrivateSubcmdsave保存_Click()保存MSFstudent.col=0在單擊了保存按鈕后自動退出編輯模式,輸入點移到固定的行列,否則如果修改后輸入點未移開不能進行保存在單擊了保存按鈕后自動退出編輯模式,輸入點移到固定的行列,否則如果修改后輸入點未移開不能進行保存MSFstudent.row=0CallSaveDataEndSub2.4窗體模塊frmquery該窗體由一個含有9個成員的復選框控件數組排列在窗體的最左邊,4個文本框控件,4個下拉式組合框,2個DTPicker控件,一組單選框,2個命令按鈕組成。1.加載事件過程中,對顯示民族,院系,專業,省份信息的列表框添加相應的條目。2.編寫復選框的Enabled事件,實現對該查詢條件是否可以編輯的設定3.編輯確定按鈕,即對條件進行詳細編輯,實現查詢功能4.編輯取消按鈕PrivateSubchknumber_Click()Ifchknumber.Value=1Thentxtnumber.Enabled=TrueElsetxtnumber.Enabled=False在“查詢在“查詢”對話框中如圖所示未選中的數據列表示該數據不加限制,該項后面用于輸入詳細信息的文本框和組合框是無效的。EndSubPrivateSubtxtscore1_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48OrKeyAscii>57ThenKeyAscii=0EndIf使用keypress事件組織用戶在這個文本框中輸入除了數字(0~9)之外的任何其它字符。首先將窗體的keypreview屬性修改為true(字符0~9的ASCII碼分別為48~57。)EndSub使用keypress事件組織用戶在這個文本框中輸入除了數字(0~9)之外的任何其它字符。首先將窗體的keypreview屬性修改為true(字符0~9的ASCII碼分別為48~57。)Ifchknumber.Value=1ThenFori=1TonumIfInStr(student(i).number,txtnumber.Text)=0Thena(i)=FalseNextEndIf開始查詢開始查詢三、設計過程遇到的主要問題及解決方法3.1題目要求啟動時程序未在當前目錄中找到data.dat文件,則顯示沒有數據行的空表,那么在寫程序時怎么樣才可以表示有沒有data.dat的文件存在呢?書上沒有找到,后來在網上查找了以下,運用dir函數可以實現這個要求。Dir函數返回一個String型的結果,用以表示一個文件名,目錄名或文件夾名,利用它的結果是否為空字符串,可以實現要求。~3.2在參數設置的模塊中,我當時在其load的事件中編完了列表框的ADDItem的方法,也檢查代碼,沒有任何問題,但是該窗體就是無法顯示出列表框的條目來。后來把把原先的frmstudent_load改成了form_load情況當即就解決了。因為對于窗體來說,無論其對象名是什么,其事件過程名總是”form_事件名”。但是對于各種控件來說,實踐過程名格式是“對象名_事件名”。這是因為一個窗體模塊中只能有一個窗體,卻可以有大量的控件,必須以對象名加以區分。3.3讀入數據時,有一個學生人數的統計,否則不知道數組的上限,而data.dat文件卻不好打開,不知道有多少學生,這個問題我自己沒有想到可行的辦法,請教了編程學的好的學長怎么處理這樣的問題,他的經驗是運用字符串函數LOF得到文件的總長度用len得到一條記錄的長度,兩個做比值得到學生數,雖然目前我不知道還有沒有更好的方法,但是我認為這個方法很不錯。3.4一開始,對于MSFlexGrid這個表格控件不太會用,后來通過仔細閱讀課程設計和在網上找大量資料,終于學會了這個控件的用法。四、設計中尚存的不足分析4.1如圖可見,這一段本可使用控件數組大大簡化這后面過程。一開始我也確實是如此設計。后來放棄了這一想法,采用了一般的步驟而變得更為費時費力,可以看到查詢統計模塊下的代碼特別冗長。PrivateSubchkbirth_Click()Ifchkbirth.Value=1ThenDTPbirth1.Enabled=TrueDTPbirth2.Enabled=TrueElseDTPbirth1.Enabled=FalseDTPbirth2.Enabled=FalseEndIfEndSubPrivateSubchkfaculty_Click()Ifchkfaculty.Value=1Thencbofaculty.Enabled=TrueElsecbofaculty.Enabled=FalseEndSubPrivateSubchkname_Click()Ifchkname.Value=1Thentxtname.Enabled=TrueElsetxtname.Enabled=FalseEndSubPrivateSubchknation_Click()Ifchknation.Value=1Thencbonation.Enabled=TrueElsecbonation.Enabled=FalseEndSubPrivateSubchknumber_Click()Ifchknumber.Value=1Thentxtnumber.Enabled=TrueElsetxtnumber.Enabled=FalseEndSubPrivateSubchksubject_Click()Ifchksubject.Value=1Thencbosubject.Enabled=TrueElsecbosubject.Enabled=FalseEndSubPriva

溫馨提示

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

最新文檔

評論

0/150

提交評論