VB學生成績查詢統(tǒng)計系統(tǒng)實驗報告_第1頁
VB學生成績查詢統(tǒng)計系統(tǒng)實驗報告_第2頁
VB學生成績查詢統(tǒng)計系統(tǒng)實驗報告_第3頁
VB學生成績查詢統(tǒng)計系統(tǒng)實驗報告_第4頁
VB學生成績查詢統(tǒng)計系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

洛陽理工學院VB實習報告37--7--學生成績查詢系統(tǒng)一、實習任務………………2二、系統(tǒng)分析………………3三、系統(tǒng)設計………………4四、調試、排錯、測試、試運行過程……7五、源程序完整或主要代碼……………10六、總結與體會…………17七、參考文獻……………18一、實習任務1實習任務介紹:熟悉軟件工程學的基本思想進行軟件開發(fā)的原則和方法;結構化分析方法和步驟;結構化編程方法;面向對象的思想和程序設計方法。按照軟件開發(fā)的一般方法和步驟動手設計一個《學生成績查詢統(tǒng)計系統(tǒng)》。2基本要求:①登錄界面:密碼最多嘗試3次,連續(xù)3次均輸入錯誤系統(tǒng)自動退出。②具有錄入成績、添加記錄、刪除記錄、修改記錄功能。③具有成績查詢功能,可以按照學號、課程號、課程名、分數段進行查詢。為便于查詢,所有的學號和課程號可考慮以下拉列表的形式給出。④具有全部成績?yōu)g覽功能,且能與數據庫表最新數據同步。⑤具有統(tǒng)計功能,能以直方圖、餅圖、折線圖、散點圖、立體直方圖直觀表示各成績段的分布情況。⑥具有打印學生成績報表的功能。⑦具有菜單和工具條的雙重操作功能。3實習目的:掌握常用控件的使用,學會使用通用對話框控件進行編程,掌握創(chuàng)建多重窗體程序的有關技術,了解鼠標和鍵盤事件及事件過程的編寫,綜合應用了所學知識,加深對VB的理解。4選題的背景及意義:VB是VisualBasic的簡稱,是由美國微軟公司于1991年開發(fā)的一種可視化的、面向對象和采用事件驅動方式的結構化高級程序設計語言,可用于開發(fā)Windows環(huán)境下的各類應用程序。它簡單易學、效率高,且功能強大可以與Windows專業(yè)開發(fā)工具SDK相媲美。在VisualBasic環(huán)境下,利用事件驅動的編程機制、新穎易用的可視化設計工具,使用Windows內部的廣泛應用程序接口(API)函數,動態(tài)鏈接庫(DLL)、對象的鏈接與嵌入(OLE)、開放式數據連接(ODBC)等技術,可以高效、快速地開發(fā)Windows環(huán)境下功能強大、圖形界面豐富的應用軟件系統(tǒng)。成績管理系統(tǒng)是一個實用性極強的系統(tǒng),加深學生對VB的理解,并且能夠解決一些常見問題。5軟件工具和需要掌握的知識:本次實習環(huán)境:MicrosoftVisualBasic6.0本次實習要求掌握:①VB可視化編程基礎:VB對象的概念,窗體和基本控件②VB語言基礎:數據類型,常量與變量,運算符和表達式,VB程序結構和編碼規(guī)則③VB控制結構:順序結構,選擇結構,循環(huán)結構,輔助控制語句,程序調試④數組和自定義類型:數組的基本操作,列表框和組合框,⑤過程:函數過程的定義和調用,子過程的定義和調用,參數傳遞,過程的嵌套和遞歸調用,變量的作用域⑥用戶界面設計:各種控件的應用,以及對話框的應用,菜單設計⑦圖形操作:直方圖、餅圖、散點圖、折線圖⑧數據庫應用基礎:VB數據庫的訪問,記錄集對象二、系統(tǒng)分析1系統(tǒng)功能模塊增加增加查找刪除統(tǒng)計圖打印報表主界面退出2設計思路在設計時,根據老師的提示信息,先畫出主界面,再進行編碼。登錄界面,自己設定,輸入賬號密碼進入主界面,主界面上設置菜單項和工具條,各功能鍵根據要求設定。最后要注意的是各各窗體之間的連接。3算法描述登陸界面,輸入密碼,輸入正確后進入主界面,否則重新輸入,只有三次機會,超過要求次數系統(tǒng)自動退出。來到主界面后就能通過菜單項或者工具條的提示進行操作,另外還有繪圖界面和關于界面,刪除時能直接刪除,也可通過查找刪除,查找能夠按姓名,學號,課程號,分數段來進行,繪圖也可繪制直方圖,餅圖,散點圖,折線圖。修改時,可進行學號,姓名,照片,成績,課程來修改,在確認修改完成前可進行多人修改,再添加學生信息后,在工具欄中點擊查看全部能夠找到該生信息。三、系統(tǒng)設計修改和增加記錄PrivateSuba1_Click()text1.Enabled=TrueText2.Enabled=TrueText3.Enabled=TrueText4.Enabled=TrueText5.Enabled=TrueCommand1.Enabled=TrueAdodc1.Recordset.AddNewEndSub刪除記錄:PrivateSuba2_Click()DimiAsIntegeri=MsgBox("確實要刪除嗎?",vbYesNo,刪除)Ifi=6ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNext'IfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveLast'Else:Form2.ShowEndIfEndSub查詢學生信息:這個選項里含有多個選項,有按學號、按姓名、按課程名、分段查詢等。按課程名查找PrivateSubb1_Click()DimaAsStringAdodc1.CommandType=adCmdUnknowna=InputBox("請輸入課程名","查詢窗口")Adodc1.RecordSource="select*from學生成績情況where課程名='"&a&"'"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"該課程名下沒有學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfEndSub按分數段查找,優(yōu)秀段學生PrivateSubb5_Click()DimaAsIntegerOnErrorGoToErrCodeAdodc1.CommandType=adCmdUnknownAdodc1.RecordSource="select*from學生成績情況where分數>=90"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"沒有不及格的學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfErrCode:EndSub統(tǒng)計圖:坐標系函數Dima$(5),b%(5),maxPublicSubzbx()Clsmax=0a(1)="0-59"a(2)="60-69"a(3)="70-79"a(4)="80-89"a(5)="90-100"DoWhileNotForm2.Adodc1.Recordset.EOFSelectCaseForm2.Adodc1.Recordset.Fields("分數")CaseIs<59b(1)=b(1)+1Case60To69b(2)=b(2)+1Case70To79b(3)=b(3)+1Case80To89b(4)=b(4)+1Case90To100b(5)=b(5)+1EndSelectForm2.Adodc1.Recordset.MoveNextLoopFori=1To5Ifb(i)>maxThenmax=b(i)NextiScale(-0.1,max*1.2)-(max*1.2,-max*0.1)Line(0,0)-(max*1.2,0):Line(0,max*1.2)-(0,0)CurrentX=-0.2:CurrentY=-0.1Print"成績分數段:";Fori=1To5Print"人數:";b(i);",";Spc(8);NextiEndSub餅圖PrivateSubCommand2_Click()zbxX=Abs(Me.ScaleHeight/2)r=max/4Sum=0Fori=1To5Sum=Sum+b(i)NextiForm4.FillStyle=0a1=0Fori=1To5a2=a1+2*3.14159*b(i)/SumRandomizeFillColor=QBColor(Rnd*15)Circle(X,X),r,,-a1,-a2CurrentX=X+r*Cos((a2+a1)/3)CurrentY=X+r*Sin((a2-a1)/3)PrintFormat(b(i)/Sum*100,"0.00");"%"a1=a2NextiEndSub查看全部PrivateSubsearch_all()Adodc1.CommandType=2Adodc1.RecordSource="學生成績情況"Adodc1.RefreshDataGrid1.Visible=TrueEndSub四、調試、排錯、測試、試運行過程1登錄界面只有三次機會,若輸入的數據與設定的相同(密碼賬號均為090556)點擊登錄后進入主界面。圖一2主界面通過菜單欄和工具條進行操作圖二查找按課程名查找及查找結果。圖三圖四程序運行后,發(fā)現刪除與查找之間存在錯誤,查找后得到的信息竟不能夠刪除,只能在主界面上直接刪除,最后修改了刪除代碼中的if語句,運行正確。直方圖圖五報表圖圖六查找時輸入信息有誤時顯示界面:圖七點擊確定后,回到主界面。五、源程序完整或主要代碼登錄窗體:Dimi%PrivateSubCommand1_Click()If3–i=1ThenMsgBox"系統(tǒng)繁忙,請稍后再試!"EndEndIfIftext1="090556"AndText2="090556"ThenMsgBox"密碼正確,允許登錄"http://密碼正確后進入主窗體Form1.HideForm2.ShowElsetext1=""Text2=""i=i+1MsgBox"密碼錯誤!你還有"&3-i&"次登陸機會!"text1.SetFocusEndIfEndSubPrivateSubCommand2_Click()//結束按鈕EndEndSubPrivateSubText2_Change()Text2.PasswordChar="*"http://密碼顯示*EndSub主界面:PrivateSuba1_Click()//增加信息庫記錄Text1.Enabled=TrueText2.Enabled=TrueText3.Enabled=TrueText4.Enabled=TrueText5.Enabled=TrueCommand1.Enabled=TrueAdodc1.Recordset.AddNewEndSubPrivateSuba2_Click()//刪除記錄DimiAsIntegeri=MsgBox("確實要刪除嗎?",vbYesNo,刪除)Ifi=6ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextElse:Form2.ShowEndIfEndSubPrivateSuba3_Click()//修改學生信息Text1.Enabled=TrueText2.Enabled=TrueText3.Enabled=TrueText4.Enabled=TrueText5.Enabled=TrueCommand1.Enabled=TrueEndSubPrivateSubb1_Click()//按課程名查找DimaAsStringAdodc1.CommandType=adCmdUnknowna=InputBox("請輸入課程名","查詢窗口")Adodc1.RecordSource="select*from學生成績情況where課程名='"&a&"'"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"該課程名下沒有學生!",,"提示"http://輸入錯誤信息時顯示Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfEndSubPrivateSubb2_Click()//按姓名查找DimaAsStringAdodc1.CommandType=adCmdUnknowna=InputBox("請輸入姓名","查詢窗口")Adodc1.RecordSource="select*from學生成績情況where姓名='"&a&"'"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"沒有此姓名的學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfEndSubPrivateSubb3_Click()//按學號查找DimaAsStringAdodc1.CommandType=adCmdUnknowna=InputBox("請輸入學號","查詢窗口")Adodc1.RecordSource="select*from學生成績情況where學號='"&a&"'"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"無該學號的學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfEndSubPrivateSubb5_Click()//按分數段,優(yōu)秀段DimaAsIntegerOnErrorGoToErrCodeAdodc1.CommandType=adCmdUnknownAdodc1.RecordSource="select*from學生成績情況where分數>=90"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"沒有不及格的學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfErrCode:EndSubPrivateSubb6_Click()//按分數段,不及格段DimaAsIntegerOnErrorGoToErrCodeAdodc1.CommandType=adCmdUnknownAdodc1.RecordSource="select*from學生成績情況where分數<60"Adodc1.RefreshIfAdodc1.Recordset.EOFThenMsgBox"沒有不及格的學生!",,"提示"Adodc1.CommandType=adCmdTableAdodc1.RecordSource="學生成績情況"Adodc1.RefreshEndIfErrCode:EndSubPrivateSubc_Click()//顯示繪圖界面Form4.ShowEndSubPrivateSubCommand1_Click()//照片添加Dimstrb()AsByteCommonDialog1.ShowOpenOpenCommonDialog1.FileNameForBinaryAs#1fl=LOF(1)ReDimstrb(fl)Get#1,,strbAdodc1.Recordset.Fields("照片").AppendChunkstrbClose#1Image1.Picture=LoadPicture(CommonDialog1.FileName)EndSubPrivateSubCommand2_Click()//修改確認,增加新成員i=MsgBox("確實要做如此改變嗎?",vbYesNo,編輯)Ifi=vbYesThenAdodc1.Recordset.UpdateElseAdodc1.Recordset.CancelUpdateForm2.ShowEndIfText1.Enabled=FalseText2.Enabled=FalseText3.Enabled=FalseText4.Enabled=FalseText5.Enabled=FalseCommand1.Enabled=FalseAdodc1.CommandType=adCmdUnknownAdodc1.RecordSource="select*from學生成績情況orderby學號asc"Adodc1.RefreshEndSubPrivateSubd_Click()//打印報表報表圖.ShowEndSubPrivateSube_Click()//顯示關于界面Form3.ShowEndSubPrivateSubForm_Load()EndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)//工具欄SelectCaseButton.IndexCase1:a1_ClickCase2:a2_ClickCase3:search_allCase4:EndEndSelectEndSubPrivateSubToolbar1_ButtonMenuClick(ByValButtonMenuAsMSComctlLib.ButtonMenu)SelectCaseButton.IndexEndSelectEndSubPrivateSubsearch_all()//查看全部信息Adodc1.CommandType=2Adodc1.RecordSource="學生成績情況"Adodc1.RefreshDataGrid1.Visible=TrueEndSub統(tǒng)計圖窗體Dima$(5),b%(5),max//坐標系函數PublicSubzbx()Clsmax=0a(1)="0-59"a(2)="60-69"a(3)="70-79"a(4)="80-89"a(5)="90-100"DoWhileNotForm2.Adodc1.Recordset.EOFSelectCaseForm2.Adodc1.Recordset.Fields("分數")CaseIs<59b(1)=b(1)+1Case60To69b(2)=b(2)+1Case70To79b(3)=b(3)+1Case80To89b(4)=b(4)+1Case90To100b(5)=b(5)+1EndSelectForm2.Adodc1.Recordset.MoveNextLoopFori=1To5Ifb(i)>maxThenmax=b(i)NextiScale(-0.1,max*1.2)-(max*1.2,-max*0.1)Line(0,0)-(max*1.2,0):Line(0,max*1.2)-(0,0)CurrentX=-0.2:CurrentY=-0.1Print"成績分數段:";Fori=1To5Print"人數:";b(i);",";Spc(8);NextiEndSubPrivateSubCommand1_Click()//直方圖zbxw=max/2/5X1=wFori=1To5X2=X1+wY2=b(i)Line(X1,0)-(X2,Y2),QBColor(9),BFCurrentX=X1CurrentY=Y2+max*0.1Printa(i)X1=X2+wNextiEndSubPrivateSubCommand2_Click()//餅圖zbxX=Abs(Me.ScaleHeight/2)r=max/4Sum=0Fori=1To5Sum=Sum+b(i)NextiForm4.FillStyle=0a1=0Fori=1To5a2=a1+2*3.14159*b(i)/SumRandomizeFillColor=QBColor(Rnd*15)Circle(X,X),r,,-a1,-a2CurrentX=X+r*Cos((a2+a1)/3)CurrentY=X+r*Sin((a2-a1)/3)PrintFormat(b(i)/Sum*100,"0.00");"%"a1=a2NextiEndSubPrivateSubCommand3_Click()//散點圖zbxw=max/2/5X1=3/2*wFori=1To5DrawWidth=7PSet(X1,b(i)),QBColor(9)X1=X1+2*wNextiEndSubPrivateSubCommand4_Click()//折線圖Zbxw=max/2/5X1=3/2*wFori=2To5DrawWidth=1.5X2=X1+2*wLine(X1,b(i-1))-(X2,b(i)),QBColor(9)X1=X1+2*wNextiEndSubPrivateSubCommand5_Click()//返回主系統(tǒng)Form4.HideForm2.ShowEndSubPrivateSubForm_Load()Form2.Adodc1.CommandType=8Form2.Adodc1.RecordSource="學生成績情況"Form2.Adodc1.RefreshEndSub六、總結與體會本次實習要求是制作一個學生成績管理系統(tǒng),技術要求不太高的應用程序,但要求對課本知識的牢固掌握,并加以熟練運用。在實習過程中遇到過一些問題,像刪除時直接刪除操作正確,但經過查找后若查找結果對象只有一個就會被提示error,若有多個則刪除至最后一個時出現error提示,后來注銷了第二個if刪除中的語句后能夠正確操作。在繪圖時,只能夠顯示靜態(tài)的,也經過了修改,但不太穩(wěn)定,只能夠在查看全部學生的基礎上進行查找才能夠顯示查找結果的處理圖像。本次實習發(fā)現了大量以往所不注意的錯誤,經過不懈努力,解決了部分,但仍有的現在不能解決,在接下來的時間了會查找資料,爭取解決這些問題。在進行編程時,嚴格的按照課本要求的基本步驟,編寫程序代碼。在編寫之前,做整體規(guī)劃和詳細設計很重要。只有思路清晰,設計合理可行,編碼才有可能有的放矢,才能更加有效的完成任務。剛剛開始看到實習題目時,感覺做下來并不困難,這些我們在平時的實驗訓練中都遇到過,只不過是把這些串起來就行了,但真正做起來才發(fā)現想得過于簡單了,大錯小錯都接踵而至,剛修改了這邊,那邊運行時就也出現了問題,就這樣直到時間

溫馨提示

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

評論

0/150

提交評論