第一篇:VB課程設計報告
Visual Basic課程設計報告
題目1: 難度: *** 題目2: 難度: 指導教師:
姓 名:
學 號:
專 業:
班 級:
學 院:
日 期:
目錄
1、題目簡介.....................................................................................................................................2
2、設計思路與總體方案.................................................................................................................4
2.1 窗體frm1...........................................................................................................................4 2.2窗體form1..........................................................................................................................6 2.3窗體 frmcssz......................................................................................................................7 2.4 窗體frmlsz......................................................................................................................10 2.5窗體 frmcxtj.....................................................................................................................12 2.6 標準模塊..........................................................................................................................17
3、設計過程遇到的主要問題及解決方法...................................................................................18
4、設計中尚存的不足分析...........................................................................................................18
5、心得體會...................................................................................................................................18
6、參考文獻...................................................................................................................................19
1、題目簡介
(簡要說明課程設計所設計的程序的主要功能。)
本題目旨在設計與一個可對個人日常手入和消費帳目進行管理和查詢統計的程序,通過此程序的設計,可以加深我們對上學期的vb基礎知識的印象,使理論升華為實際操作,同時也有助于我們培養理財意識,用電子記錄的形式取代從前的手寫記錄,使得信息更加精準,不易丟失。
題目的難度系數相對不高,但牽涉到眾多的知識點作為典型的多模塊設計類型的題目,本程序由五個窗體模塊frm1,form1,frmcssz,frmcxtj,frmlsz和一個標準模塊共同構成。此外根據課本121頁要求,另有三個文本文件inputtype.txt,outputtype.txt和balance.txt分別用于保存收入類型,支出類型和收入支出帳目。本程序的密碼按照題目要求保存在了Balance.pas中,并自行設計加密處理。我的筆記本打不開這個文件,即便打開看到的也不再是密碼本身。這點盡管在這個程序中用處不是太大,但為我們保存重要文件提供了一種思路。
程序要求實現如下功能(主要根據窗口由易到難的順序來)。
如圖1所示,frm1是啟動窗體。有密碼的設定和破譯,開始時必須先輸入密碼。每次錯誤后會彈出對話框給予提示,連續累計三次則程序自動退出初始密碼為空,直接單擊即可進入。
圖1.程序主界面
2.輸入密碼后則進入主界面,它是連接所有窗口的平臺。
3.單擊“參數設置”按鈕進入“參數設置”窗口。窗口的三個選項卡是通過SSTab或Tabstrip控件來制作。這些陌生的外部空間對于我通過安裝了vb企
業版方才得到(詳見課本6-7頁兩者對比),因為ssTab控件相對來說簡單,所以在這個程序的中我完全采用了SSTab控件。
4.收入類別和支出類別的選項卡分別需要實現對兩者的添加,刪除,修改,返回操作,更為重要的是要保存在文件中,以備在流水帳和查詢統計的combobox中使用。
開始時,“添加”和“返回”按鈕可用,而其余兩個被置灰,而且文本框不可輸入。因為此時列表框的條目未被選中,所以修改和刪除已失去意義,不可用。“添加”按鈕比較繁瑣,其本身可以被“確定”按鈕替代功能。本程序中,按下添加按鈕,則此時文本框被清空可編輯,而對比來說,按下修改按鈕文本框不清空且可編輯。
圖2.輸入錯誤的密碼時的提示 通過“密碼修改”選項卡修改密碼,如果兩次輸入不一致或者輸入有誤(圖2和3)則會提醒用戶。此外,我把其設為了在保存時也 會提醒,有助于我們記憶。右上角的返回按鈕可以隨時返回主界面上。
6.單擊主界面上的“日常流水帳”進入日常收支原始資料的主要輸入窗口。該窗口主要由“收入記賬”和“支出記賬”兩大部分組成。我設置了進入窗體時列表框為空,以便于對剛輸入的情況一目了然。
這里面就涉及到了另一種新的控件,DTPicker控件的問題,這個控件使用起來極為方便,單擊即可彈出日期選擇框,且默認當天時間,簡明易懂。其中的列表框中的項目為參數設置所得,只需從中選擇即可。
需要我們添加新的收支信息時,我設定了備注為可有可無的輸入項但其他三個空如果有一個未填則會在單擊保存后彈出msgbox提示,否則則會在底部的列表框中每行顯示一個完整項,并且把信息存儲到balance.txt中用于接下來的步驟。單擊取消按鈕則可以清空各個文本框中的內容以便于重新輸入。添加完畢后單擊右上角的返回按鈕則回到主界面。本程序的重點和難點原先粗步估計集中在查詢統計這一窗體模塊中,所以采用了由易到難的策略。該窗體由三個選項卡組成,既可以選擇按類型查詢從而
了解單獨的情況,也可以采用時間段的模式,從而宏觀大體的知道某個時間內的情況。設定這兩種模式時需要通過單選框的改變來結合visible屬性。實際并非沒有想象中的困難,但是,因為框架控件的問題,我在這里還是繞了歧路最終放棄了控件數組,原本代碼可能會更簡明些。
收入支出對比一項用于顯示某段時間內總收入和總支出的量化對比,在輸入時間段后按確定按鈕即可顯示。返回按鈕同上述情況。
8.程序中我設置了一個標準模塊,主要用于自定義數據類型中的使用。借用其配合,可使程序顯得更簡潔些。
2、設計思路與總體方案
(說明用到哪些控件并進行難點分析,說明所使用到的模塊、過程、變量、數組、自定義數據類型及其相互關系,必要時給出系統結構圖等圖表。
對如下事項逐步進行必要的分析、說明:
? 程序設計的主要思想,程序功能是如何實現的?
? 設計了幾個程序模塊(有幾個窗體模塊、幾個標準模塊),各個功能模塊的作者及想到之間的關系(模塊間是如何傳遞信息和數據的,采用什么方式,為什么?)?
? 程序中定義了哪些主要的變量(分別定義了哪些過程級變量?模塊級變量和全局變量),這些變量起什么作用?是否全局變量? 這里不需要給出大段的源程序,只需要給出關鍵的實現代碼即可。)
2.1 窗體frm1 這是啟動窗體,僅使用了兩個標簽和一個文本框及兩個按鈕,但是要考慮的地方卻有很多。下面我配合圖和文字講述下加密的過程,及對于輸入字符時的對話框,還有累計三次時將自動退出的設置。此處只有三個通用過程,分別為CmdCancel_Click,Cmdok_Click,txtpassword_KeyPress,難點集中在后兩者上,其中txtpassword_KeyPress在后面也會用到;
Private Sub CmdCancel_Click()Unload Me End Sub
Private Sub Cmdok_Click()'自行設計的簡易解密過程 Dim int1 As String Dim a As Long: Static b As Integer: Dim i As Integer If txtpassword.Text = “" Then Form1.Show '使用靜態變量三次來累計 frm1.Hide Exit Sub End If int1 = txtpassword.Text Open App.Path & ”balance.pas“ For Input As 1 Input #1, a Close 1 Do While i <= Len(CStr(np))And i >= 1 a = a1)
Next j
Next i
Close End Sub
下述一段代碼為讀入列表框時所使用。僅有一字符串變量來實現 Private Sub Form_Load()
Dim str1 As String Open App.Path & ”OutputType.txt“ For Input As #2
Do While Not EOF(2)
Input #2, str1
List1(1).AddItem str1'讀文件進入列表框
Loop
Open App.Path & ”InputType.txt“ For Input As #1
Do While Not EOF(1)
Input #1, str1
List1(0).AddItem str1
Loop
Close End Sub
Private Sub Cancel_Click()np.Text = ”“: np2.Text = ”“
'取消密碼輸入 End Sub
Private Sub cmdfh_Click(Index As Integer)'返回按鈕 Unload frmcssz Form1.Show End Sub
Private Sub Cmdqx_Click(Index As Integer)'取消按鈕 Dim m As Integer m = Index Text1(m).Text = ”“ End Sub
Private Sub Cmdsc_Click(Index As Integer)'刪除按鈕
Dim j As Integer: j = Index List1(j).RemoveItem List1(j).ListIndex Text1(j).Text = ”“ End Sub
Private Sub Cmdtj_Click(Index As Integer)'添加按鈕 Dim m As Integer
m = Index Text1(m).SetFocus Text1(m).Locked = False Text1(m).Text = ”“ End Sub
Private Sub List1_Click(Index As Integer)
Dim j As Integer
'點擊列表框實現兩鍵的去灰
j = Index
Cmdxg(j).Enabled = True
Cmdsc(j).Enabled = True
Text1(j).Text = List1(j).Text End Sub
Private Sub Cmdxg_Click(Index As Integer)
'修改按鈕。修改鍵解除文本框鎖定
Dim j As Integer
j = Index
Text1(j).Locked = False
Text1(j).SetFocus End Sub
Private Sub Cmdqd_Click(Index As Integer)
Dim int1 As Integer, k As Integer
'確定按鈕。對欄目的添加, 修改
k = Index
If List1(k).SelCount = 0 Then
List1(k).AddItem Text1(k).Text
Else
int1 = List1(k).ListIndex
List1(k).List(int1)= Text1(k).Text
End If
Text1(k).Text = ”“: Text1(k).Locked = True
Cmdxg(k).Enabled = False: Cmdsc(k).Enabled = False
Cmdtj(k).SetFocus End Sub 后面一段當時看來顯得很費精力,因為需要自行設定加密方法 Private Sub sure_click()
Dim i As Integer, password As Long i = 1
If np.Text <> np2.Text Then
MsgBox ”兩次密碼不一樣(~。~)/,請重新輸入“, 48, ”提示“
ElseIf Len(Trim(np))> 8 Then
MsgBox ”請保證密碼不超過8位“, 48
MsgBox ”密碼已修改,a請記住您的密碼哦!“, 64, ”溫馨提示“
End If Do While i <= Len(np.Text)And i >= 1 np = np + Asc(Mid(np.Text, i, 1))
Loop Open App.Path & ”Balance.pas“ For Output As #1
'設置密碼
Write #1, np
Close #1
End Sub
Private Sub np_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
'密碼含非數字字符,則顯示錯誤
MsgBox ”密碼應當為數字,請重新輸入“, , ”提示“
End If
Else
'兩次輸入一樣就加密并保存到文件
2.4 窗體frmlsz 窗體frmlsz供用戶輸入每日的收支帳目,即收支類型、收支時間、金額和備注。每次加載窗體frmlsz時從Inputtype.txt讀出收入類型,從Outputtype.txt讀出支出類型給combo控件初始化,便于用戶選擇相應的類型輸入日常流水賬。為實現數據逐條讀寫采用do loop循環 EOF()文件函數和
input語句。利用If語句判斷data的int1取值,確定數據是收入還是支出,這是一種較為簡便的方式,在后面的數據查詢中有很大的發揮空間
Frmlsz在主界面中的default屬性被我改成了true。其結構簡單,但設計上還是需要注意些問題,比方說就看下面一段代碼,我們有時候確實有必要在細節上較真
Private Sub Cmdbc_Click(Index As Integer)Dim j As Integer: j = Index Dim str1 As String If Coblb(j).Text = ”“ Or txtje(j).Text = ”“ Then '輸入信息
MsgBox ”請輸入完整 >o<“, , ”嘿嘿,注意“ Exit Sub Else str1 = DTPicker1(j).Value & Space(4)& Coblb(j).Text & Space(9)& txtje(j)& Space(12)& txtbz(j)Call List1(j).AddItem(str1)End If Dim newdata As data newdata.int1 = j newdata.time1=DTPicker1(j).Value newdata.moneytype= Coblb(j).Text '收集信息并保存到文件 newdata.money = Str(Val(txtje(j).Text))newdata.addition = txtbz(j).Text Open App.Path & ”Balance.txt“ For Append As #1 Write #1, newdata.int1, newdata.time1, newdata.moneytype, newdata.money, newdata.addition Close #1 End Sub
Private Sub cmdfh_Click(Index As Integer)'返回 Unload Frmlsz Form1.Show End Sub
Private Sub Cmdqk_Click(Index As Integer)'清空按鈕 Dim j As Integer: j = Index Coblb(j).Text = ”“: txtje(j).Text = ”“: txtbz(j).Text = ”“ End Sub 這段代碼基本上在所有類似的情況中都大同小異
Private Sub Form_Load()'讀取信息 Dim str1 As String Open App.Path & ”OutputType.txt“ For Input As #2 Do While Not EOF(2)Input #2, str1 Coblb(1).AddItem str1 Loop Open App.Path & ”InputType.txt“ For Input As #1 Do While Not EOF(1)Input #1, str1 Coblb(0).AddItem str1 Loop Close End Sub 2.5窗體 frmcxtj 窗體frmcxtj算是對于上述窗體的綜合應用。在數組的基礎上同時也涉及到了自定義變量類型,利用其尋找到時間或類別上符合要求的項,通過EOF語句不斷賦值,再通過do loop循環得到。兩組單選框的value值改變而轉化frame的visible屬性,這是大致的思路框架。具體落實到代碼的編寫上,比方尋找時間段是通過與dtpicker的value值比較
Private Sub Cmd3_Click()Dim newdata As data, i As Integer ‘此句為收入支出對比一欄上給兩個文本框計算的過程 Dim amount As Long, money1 As Long, money2 As Integer Lbldb.Caption = ”從“ & Space(3)& DTPicker5.Value & Space(2)& ”到“ & Space(2)& DTPicker6.Value & Space(2)& ”期間“ ‘標簽
Open App.Path & ”Balance.txt“ For Input As #1 Do While Not EOF(1)Input #1, newdata.int1 Input #1, newdata.time1 Input #1, newdata.moneytype Input #1, newdata.money Input #1, newdata.addition If(newdata.time1 >=(DTPicker5.Value))And(newdata.time1 <=(DTPicker6.Value))And newdata.int1 = 0 Then money1 = money1 + newdata.money End If If(newdata.time1 >=(DTPicker5.Value))And(newdata.time1 <=(DTPicker6.Value))And newdata.int1 = 1 Then money2 = money2 + newdata.money End If Loop Text1.Text = money1 Text2.Text = money2 Close Text1.Locked = True Text2.Locked = True End Sub
Private Sub Cmd1_Click()’第一個確定按鈕
List1.Clear ' Dim newdata As data, i As Integer Dim amount As Long, money As Long amount = 0 Open App.Path & ”Balance.txt“ For Input As #1 '當選擇收入類型查詢時
If Option2.Value = True Then Do While Not EOF(1)Input #1, newdata.int1
Input #1, newdata.time1 Input #1, newdata.moneytype Input #1, newdata.money Input #1, newdata.addition If(newdata.time1 >=(DTPicker9.Value))And(newdata.time1 <=(DTPicker10.Value))And newdata.moneytype = Combo1.Text Then List1.AddItem newdata.time1 & Space(5)& newdata.moneytype & Space(5)& CStr(newdata.money)& Space(5)& newdata.addition money = newdata.money End If amount = amount + money Loop Labelsr.Caption = ”從“ & DTPicker9.Value & ”到 “ & DTPicker10.Value & ” 共收入“ & amount & ”元“ Else Input #1, newdata.int1 '當選擇按時間查收入時 Input #1, newdata.time1 Input #1, newdata.moneytype Input #1, newdata.money Input #1, newdata.addition If(newdata.time1 >=(DTPicker7.Value))And(newdata.time1 <=(DTPicker8.Value))And newdata.int1 = 0 Then List1.AddItem newdata.time1 & Space(5)& newdata.moneytype & Space(5)& CStr(newdata.money)& Space(5)& newdata.addition money = newdata.money End If amount = amount + money Loop Labelsr.Caption = ”從“ & DTPicker7.Value & ”到 “ & DTPicker8.Value & ” 共收入“ & amount & ”元“ End If Close End Sub Do While Not EOF(1)
Private Sub Cmd2_Click()第二個確定按鈕 List2.Clear Dim newdata As data, i As Integer Dim amount As Long, money As Long amount = 0
Open App.Path & ”Balance.txt“ For Input As #2 '當選擇支出類型查詢時 If Option4.Value = True Then Do While Not EOF(2)Input #2, newdata.int1 Input #2, newdata.time1 Input #2, newdata.moneytype Input #2, newdata.money Input #2, newdata.addition
If(newdata.time1 >=(DTPicker3.Value))And(newdata.time1 <=(DTPicker4.Value))And newdata.moneytype = Combo2.Text Then '當選擇按時間查支出時 List2.AddItem newdata.time1 & Space(5)& newdata.moneytype & Space(5)& CStr(newdata.money)& Space(5)& newdata.addition money = newdata.money End If amount = amount + money Loop Labelzc.Caption = ”從“ & DTPicker3.Value & ”到 “ & DTPicker4.Value & ” 共支出“ & amount & ”元“ Else Do While Not EOF(2)Input #2, newdata.int1 Input #2, newdata.time1 Input #2, newdata.moneytype Input #2, newdata.money Input #2, newdata.addition
If(newdata.time1 >=(DTPicker1.Value))And newdata.time1 <=(DTPicker2.Value))And newdata.int1 = 1 Then List2.AddItem newdata.time1 & Space(5)& newdata.moneytype & Space(5)& CStr(newdata.money)& Space(5)& newdata.addition money = newdata.money End If amount = amount + money Loop Labelzc.Caption = ”從“ & DTPicker1.Value & ”到 “ & DTPicker2.Value & ” 共支出“ & amount & ”元“ End If Close End Sub
Private Sub Command1_Click(Index As Integer)'返回 Unload Me Form1.Show End Sub
Private Sub Form_Load()'讀取信息 Dim str1 As String Open App.Path & ”OutputType.txt“ For Input As #2 Do While Not EOF(2)Input #2, str1 Combo2.AddItem str1 Loop Open App.Path & ”InputType.txt" For Input As #1 Do While Not EOF(1)Input #1, str1 Combo1.AddItem str1 Loop Close End Sub Private Sub Option1_Click()'以下為單選框的四類情況
Frame2.Visible = False Frame1.Visible = True End Sub
Private Sub Option2_Click()Frame2.Visible = True Frame1.Visible = False End Sub
Private Sub Option3_Click()Frame3.Visible = True Frame4.Visible = False End Sub
Private Sub Option4_Click()Frame3.Visible = False Frame4.Visible = True End Sub 2.6 標準模塊
標準模塊中我設立了自定義類型的變量用來聲明自定義數據類型 data,它有5個元素,其中int1為難點和重點。其值可用于區分收入和支出的性質,在frmcxj中顯得尤為重要,另外我就是剛才犯了個錯誤,time 是關鍵字,在編寫程序時一直出現了溢出的錯誤,幸好及時得到了改正,np,np2用來存放密碼,密碼的設立主要是通過把每個數字的ascii碼求出然后求和的過程,用到了Mid(),Asc(),Len()函數和For循環。
Public np As Integer, np2 As Integer Public Type data int1 As Integer time1 As Date moneytype As String money As Long addition As String End Type
3、設計過程遇到的主要問題及解決方法
3.1作為編程者的角度看,需要的是考慮用戶的感受。當我調試程序后,遇到過當輸入的數據類型與設置的變量類型不統一時,會出現許多錯誤,為避免如此,必須添加顯式轉換語句避免錯誤
3.2在參數設置的模塊中,我當時在其load的事件中編完了列表框的ADDItem的方法,也檢查代碼,沒有任何問題,但是該窗體就是無法顯示出列表框的條目來。后來把把原先的frmcssz_load改成了form_load情況當即就解決了。至今我也沒曾想通
3.3 在自定義數據類型中原先有一項我命名其為time,但是我在數據查詢之中就遇到了麻煩。定義錯誤,文件超出。我于是將其名稱改去,代碼便可順利運行
4、設計中尚存的不足分析
4.1如圖可見,這一段本可使用控件數組大大簡化這后面過程。一開始我也確實是如此設計。我的失策主要由于當時建立的全部為控件數組的形式包括了框架,當兩個框架重疊之后其中一個被另一個完全包進去了,所以我無論怎么設option.value都得不到想要的情況。后來便放棄了這一想法,采用了一般的步驟而變得更為費時費力,可以看到查詢統計模塊下的代碼特別冗長
4.2 在參數設置模塊中,當點擊添加之后雖然清空了文本框,但若是列表框依然有條目被選,則再輸入其實變成了另一形式的修改。我希望接下來的時間可以去完善一下一些細節方面,有些是已經考慮到的,有些只有時間久些才會慢慢感覺到
4.3 密碼的設置上目前情況不是太理想,有待考慮新的算法提高某些文件的保密度
5、心得體會
這個程序從難度上講只有三顆星而已,但我想說我確實摸索了很久,從界面的制作排版到代碼的編寫。由于計算機編程知識當初只學了些皮毛,很多次我在 18 編程時不斷調試卻依然出現這樣那樣的毛病,可能是無意中拼寫錯誤,但有些確實是因為不了解vb的某些較為冷僻的用法所致。這段時間,常會向同學請教,也自覺地去借了些書看看,基本上完成了要求,但是功能、界面都還不是很完善,我會借助以后的時間繼續去加工的,我需要的是學以致用。
我體會到了編寫程序是個有條理的邏輯過程,首先必須有個大致的思路,整體的規劃出來。然后再是分步地去具體完成,尤為重要的是需要投入相當一部分精力去精益求精,這樣你的成果才不會是毛糙的。思維調動是件另人愉快的事情,而我們應該去學會享受腦力勞動的過程,哪怕是一次次地失利。這就是一個月的課程設計所教會我的。
6、參考文獻
[1].王棟,visual basic課程設計,北京,清華大學出版社 [2].王棟,visual basic程序設計實用教程,北京,清華大學出版社 [3].蘭友,vb應用程序設計,北京,交通大學出版社
[4].董愛紅等,二級visual basic語言程序設計,北京:機械工業出版社,2005
第二篇:VB課程設計報告
Visual Basic課程設計報告
題目1: 列車時刻查詢系統 難度: ** 題目2: 記憶力測試軟件 難度: ** 指導教師: 袁紅兵
姓 名:鄭聰
學 號:9151010F0535 專 業:兵器類
班 級:9151010F05 學 院:機械工程學院
日 期:2016年4月
一、程序功能
二、課程設計的詳細設計
三、課程設計總結
四、遇到的問題及解決方法
五、源程序代碼
六、總結及個人心得體會
七、參考文獻
程序功能
涉及知識點:(1)讀文本文件;(2)動態數組(3)字符串處理(4)列表框控件的使用(4)多行文本框控件的使用
功能要求:(1)程序啟動后,左邊的列表框顯示所有的車次,點擊其中一項,顯示相應的詳細信息。(2)在“經停車站”組合框中選擇或輸入一個站名然后回車,列表框中只列出經過該車站的車次。單擊列表框下方的“顯示全部車次”按鈕,列表框中重新列出所有車次。(3)文本框(或右邊的列表框)中詳細信息整齊排列。
課程設計的詳細設計
1、總體設計思路
先將信息讀入到兩個動態數組中,再根據相關的事件調用數組。
2、界面設計
界面有frame,list,combol,text,command,label.3、功能模塊設計
課程設計總結
(1)整體的功能還是實現了,運行應該是沒有問題的。(2)在做這次課程設計的過程中,我深刻領悟到實踐的重要性,看似困難的課程設計,一步一步來,問題一個一個解決,最后回首會覺得自己懂得了好多好多。(3)我也知道了,不能光靠自己的課本,要借助網絡快速的查找自己所需要的知識點。
遇到的問題及解決方法
我在設計這個程序時主要遇到兩個問題。
第一個大的問題就是怎樣才能實現查詢經過站點和顯示車次途徑車站和,經過查閱書籍之后,通過以下代碼就可以實現了:
Private Sub Com1_Click()
'查詢經過站點
Dim n As Integer
List1.Clear: List2.Clear
'清除界面
For i = 0 To k
If str(i)= Cob1.Text Then
For j = 0 To num1 If b = str1(i)Then
Text1.Text = str2(i): Text2.Text = str3(i)
'將起點站,終點站,發車時刻,到達時刻添入文本框中
Text3.Text = str4(i): Text4.Text = str5(i)
End If End Sub
我所遇到的二個問題就是怎樣才能讓各項對齊,在網絡上找到了一段非常重要的代碼“List2.List(j)= str(m)+ Space(p)+ RTrim(Format(str(m + 1), “"))+ RTrim(Format(str(m + 2), ”“))”,和一些提示,以下代碼得以實現:
If List1.ListIndex = List1.ListCount3 Step 3
Select Case Len(str(m))
'判斷站名長度以便list2中各項對齊
Case Is = 2: p = 5
Case Is = 3: p = 3
Case Is = 4: p = 1
End Select
List2.List(j)= str(m)+ Space(p)+ RTrim(Format(str(m + 1), ”))+ RTrim(Format(str(m + 2), “"))
'對齊各項
j = j + 1
Next m
End If Next i End Sub 列車時刻查詢界面設計:
一、系統登陸界面設計
二、查詢界面設計
源程序代碼
Public Class Form1
Dim Content(,)As String
Dim Detail(,)As String
Private Sub a()
FileOpen(1, Application.StartupPath & ”content.txt“, OpenMode.Input)
'content.txt有多少行
Dim Temporary1()As String
Dim x As Integer
Do Until EOF(1)
LineInput(1)
x += 1
Loop
FileClose(1)
FileOpen(1, Application.StartupPath & ”content.txt“, OpenMode.Input)
'將content.txt的文件寫入Content二維數組
ReDim Temporary1(x1, 4)
For i = 0 To xUBound(Content)1, w)= Split(Temporary3(q), ”+“)(w)
Next
Next
For r = 0 To UBound(Content)
For t = 2 To UBound(Temporary4, 2)1, y)= Split(Temporary4(r, t), ”,“)(y)
Next
End If
Next
Next
FileClose(2)
For w = 0 To UBound(Content)
'將Detail數組內容寫入經停車站下拉欄
For q = 1 To UBound(Detail, 2)
If Detail(w, q, 0)<> Nothing And Detail(w, q, 0)<> ”“ Then
If ViaStation.Items.Contains(Detail(w, q, 0))= False Then
ViaStation.Items.Add(Detail(w, q, 0))
End If
End If
Next
Next
End Sub
Private Sub ShowAllTrains_Click(sender As System.Object, e As System.EventArgs)Handles ShowAllTrains.Click
'顯示全部車次按鈕按下觸發的事件
a()
ViaStation.Text = ”“
ListBox1.Items.Clear()
For i = 0 To UBound(Content)
ListBox1.Items.Add(Content(i, 0)&)
Next
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs)Handles ListBox1.SelectedIndexChanged
'選定listbox某一項所觸發的事件
If ListBox1.SelectedIndex <>-1 Then
StartStation.Text = Content(ListBox1.SelectedIndex, 1)
DestinationStation.Text = Content(ListBox1.SelectedIndex, 2)
StartTime.Text = Content(ListBox1.SelectedIndex, 3)
ArriveTime.Text = Content(ListBox1.SelectedIndex, 4)
TxtDetail.Text = Nothing
For u = 1 To UBound(Detail, 2)
If Detail(Selection, u, 0)<> Nothing And Detail(Selection, u, 0)<> ”“ Then
If Detail(Selection, u, 1)= ”---“ Then
TxtDetail.Text &= Detail(Selection, u, 0)& Space(482 * Len(Detail(Selection, u, 1)))& Detail(Selection, u, 2)& vbCrLf
Else
TxtDetail.Text &= Detail(Selection, u, 0)& Space(555 * Len(Detail(Selection, u, 0)))& Detail(Selection, u, 1)& Space(502 * Len(Detail(Selection, u, 1)))& Detail(Selection, u, 2)& vbCrLf
End If
End If
Next
End If
End Sub
Private Sub ViaStation_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs)Handles ViaStation.TextChanged
'經停站輸入文字或下拉欄選中某項所觸發的事件
ListBox1.Items.Clear()
For z = 0 To UBound(Detail)
For c = 1 To UBound(Detail, 2)
If Detail(z, c, 0)= ViaStation.Text Then
If ListBox1.Items.Contains(Detail(z, 0, 0))= False Then
ListBox1.Items.Add(Detail(z, 0, 0))
End If
End If
Next
Next
End Sub
Function Selection()As Integer '根據Ylistbox選中項,返回其在Detail數組中所在的位置
For q = 0 To UBound(Detail)
If Detail(q, 0, 0)= Replace(ListBox1.SelectedItem.ToString, ”次??“, ”")Then
Return q
Exit Function
End If
Next
Return-1
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
End Sub End Class
總結及個人心得體會
綜合分析,本設計有四個難點:
1.程序顯示的信息都是從content.txt和detail.txt兩個文件中讀取的。如果列車時刻沒有變化,只需修改這兩個文件的內容即可,不必改動程序。
2.Content.txt文件保存了各車次的概要信息,包括車次名,起點站,終點站,發車時刻,到達時刻,一個車次占一行。
3.Detail.txt文件中保存了所有車次停靠站的詳細信息。每個車次信息的保存方式都是相同的:首先一個星號“*”為一行:然后是車次名為一行:在后是停靠站的站名和到達,發車時刻,每個站為一行。起點站的“到達時刻”和終點站的“發車時刻”均為“--”。因為每次車停靠站的數目不同,在讀取detail.txt文件時,必須正確判斷星號“*”的位置。
4.程序應在啟動時將所有信息從文件讀入動態數組中,從而不必在查詢過程中頻繁地讀取文件影響查詢速度。
存在的不足:
只能夠查詢信息,不能夠擴充程序使之對列車信息進行修改,添加和刪除操作。
心得及體會:
通過這次的VB課程設計,我學到了很多很多的東西,同時不僅可以鞏固了以前學過的知識,而且學到了很多書本上所沒有學到的知識。通過這次課程設計是我懂得了理論與實踐相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。
在設計的過程中遇到問題,可以說是困難重重,這畢竟是自己第一次做一個程序,難免會遇到各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解的不夠深刻,掌握的不夠牢固。通過這次課程設計之后,一定把以前所學的知識重新溫故。
程序設計師需要大量的時間去動手練習才能體會到它的內涵,同時還需要用心去投入,時間和感情花下去之后,的確慢慢的感受到有所收獲了,我也收獲到了一點點的樂趣。可能是一個良性循環的開始吧,相信以后會做的更好的。
參考文獻
[1].王棟,visual basic課程設計,北京,清華大學出版社 [2].王棟,visual basic程序設計實用教程,北京,清華大學出版社
[3].陳銳,夏敏捷,趙琳編著,Visual Basic.NET經典游戲編程開發,北京,科學出版社
第三篇:2014 vb課程設計報告
Visual Basic
課 程 設 計 報 告
所屬課程名稱:Visual Basic程序設計 課程設計題號:
課程設計題目:
課程設計難度:?星
課程設計時間:2014.2.23 ~ 4.9 學號:
姓名:
自評成績:
二〇一四年三月
一、程序功能
簡敘題目的功能要求,涉及的知識點等。
二、課程設計的詳細設計
1、總體設計思路
介紹程序的設計思路,給出程序結構框圖。
2、界面設計
界面構成及實現方法。
3、功能模塊設計
文字介紹程序主要功能的實現算法,盡量給出算法流程圖。
三、設計中遇到的問題與解決辦法
【問題1】:
【解決辦法】:
【問題2】:
【解決辦法】:
【問題3】:
【解決辦法】:
……
四、更上一層樓
描述增加的新功能、對程序的改進等。
五、課程設計總結
列出程序功能未實現之處,程序運行有問題之處。
說明這次課程設計的感想和心得體會、經驗教訓等。
六、源程序代碼
源程序代碼要求縮進書寫,強制變量聲明,變量名及對象名等的取名應具有描述意義。代碼必須有注釋說明,對每個模塊、函數,要說明其功能、算法等。
第四篇:VB 課程設計報告 (推薦)
長江大學工程技術學院
機械設計基礎課程設計
(2012-2013學年 第二學期)
系(部)專業班級 學生姓名 學號/序號 完成時間
機械系 機電專61102班
李航 201162335/14 2013年7月10日 長江大學工程技術學院
VB語言程序設計課程設計報告
(2012-2013學年 第二學期)
系(部)專業班級 學生姓名 學號/序號 指導教師 完成時間
機械系 機電專61102班
/
張國英(講師)/劉懷海(講師)
2013年6月21日
圖書管理系統一、功能描述
實現對圖書的管理,在后臺使用數據記錄操作的數據,依靠這些數據庫的管理系統的管理功能來整理數據,實現對書籍信息表,書籍歸還表,書籍借出表的集中有序管理,從而達到減輕工作負擔,也減少了借書者的不便
書籍信息表:實現對所有圖書的綜合管理,建立對圖書的圖書編號,作者,出版社,數量,出版日期,價格的綜合信心
圖書歸還表:對所有借出的情況進行有效的管理,建立歸還的資料,并可對未歸還或歸還的的圖書進行查詢,查詢是否損壞
圖書借出表:能夠對借閱圖書的讀者進行管理。建立讀者信息和讀者類別的信息資料,能夠查詢讀者借出書籍的信息,并可分別按照圖書編號、學號和圖書名查詢讀者的信息資料
●系統用戶的登錄:實現用戶通過用戶名和密碼進行登錄的功能。●圖書管理:實現對圖書的添加、查找、刪除和修改的功能。●流通管理:實現對圖書的借閱和歸還等功能。●退出系統:結束圖書管理系統。
二、概要設計
1、系統功能模塊框圖設計
根據功能描述,建立系統的體系結構,即將整個系統分解成若干子功能模塊,并用框圖表示各功能模塊之間的銜接關系,并簡要說明各模塊的功能。
程序流程框圖如圖所示:(僅供參考)
圖1 程序流程圖
通過登錄界面進入圖書管理系統,進入界面選擇與之相匹配的表格,信息表實現對圖書的總管理,各種圖書信息的分類和匯總,圖書歸還表實現對借出書籍歸還的管理,對歸還的書籍的情況進行總結,圖書借出表對圖書借出者的姓名,借出日期等等進行記錄,以確保圖書的完整,在圖書信息表,圖書歸還表和圖書借出表里的各類命令根據書籍的所需進行整編和管理
2、數據庫設計
包括數據庫的組成說明,數據庫中各表的結構說明(包括字段名、字段類型等),可以包含圖片例如下表:
表1 學生信息表
三、詳細設計 詳細說明主要窗體的實現過程,包括窗體的設計圖片及其上所包含的控件名和屬性設置;
詳細說明主要操作的代碼實現過程,包括過程間的調用關系(注:在此給出不完全代碼)。如下所示:
1、賬號登錄
賬號登錄模塊中登錄與注冊兩按鈕,單擊注冊會進入注冊模塊中,單擊登錄會進入系統進行下一步的操作,賬號文本框與數據庫相連接,當在賬號文本框輸入賬號后點擊登錄按鈕后,會在數據庫中進行查詢看數據庫中是否會有該賬號,且該賬號的密碼是否與密碼框中輸入的相同,如果相同會進入系統,如果不存在該賬號或密碼與賬號不相匹配,則會提示“賬號或密碼錯誤”,賬號文本框會得到焦點,讓重新輸入。
(1)窗體截圖(如圖2)
圖2 注冊窗體
(2)功能實現
2、學生信息查詢窗體
圖3 查詢窗體
四、調試中存在的問題及解決方法
包括調試過程中遇到的主要問題及采取的解決方法。例如:
1、注冊賬號出現的錯誤
數據庫中賬號被設為主鍵,當注冊時的賬號與數局庫中的賬號有相同時就會出錯。
2、解決方法:在寫入數據庫前先進行查詢數據庫
五、心得體會
本人在本次實習中取得的收獲、遇到的困難、如何面對和克服各種困難、本系統的不足之處,將要改進的思想等。
六、參考文獻
[1] 羅朝盛.Visual Basic 6.0程序設計教程(第3版).人民郵電出版社,2009年2月
[2] [3]
七、附錄
包括全部源程序清單(程序中應有足夠的注釋)。
第五篇:VB 課程設計
學生成績管理系統一、功能描述
首先簡單地闡述本人所要實現系統的目的,然后應較詳細的敘述本系統所要實現的功能。
************ *******
二、概要設計
1、系統功能模塊框圖設計
根據功能描述,建立系統的體系結構,即將整個系統分解成若干子功能模塊,并用框圖表示各功能模塊之間的銜接關系,并簡要說明各模塊的功能。
程序流程框圖如圖所示:(僅供參考)
圖1 程序流程圖
2、數據庫設計
包括數據庫的組成說明,數據庫中各表的結構說明(包括字段名、字段類型等),可以包含圖片例如下表:
表1 學生信息表
三、詳細設計
詳細說明主要窗體的實現過程,包括窗體的設計圖片及其上所包含的控件名和屬性設置;
詳細說明主要操作的代碼實現過程,包括過程間的調用關系(注:在此給出不完全代碼)。如下所示:
1、賬號登錄
帳號登錄模塊中登錄與注冊兩按鈕,單擊注冊會進入注冊模塊中,單擊登錄會進入系統進行下一步的操作,帳號文本框與數據庫相連接,當在帳號文本框輸入帳號后點擊登錄按鈕后,會在數據庫中進行查詢看數據庫中是否會有該帳號,且該帳號的密碼是否與密碼框中輸入的相同,如果相同會進入系統,如果不存在該賬號或密碼與帳號不相匹配,則會提示“帳號或密碼錯誤”,帳號文本框會得到焦點,讓重新輸入。
(1)窗體截圖(如圖2)
圖2 注冊窗體
(2)功能實現
2、學生信息查詢窗體
圖3 查詢窗體
四、調試中存在的問題及解決方法
包括調試過程中遇到的主要問題及采取的解決方法。例如:
1、注冊賬號出現的錯誤
數據庫中帳號被設為主鍵,當注冊時的帳號與數局庫中的帳號有相同時就會出錯。
2、解決方法:在寫入數據庫前先進行查詢數據庫
五、心得體會
本人在本次實習中取得的收獲、遇到的困難、如何面對和克服各種困難、本系統的不足之處,將要改進的思想等。
六、參考文獻
[1] 羅朝盛.Visual Basic 6.0程序設計教程(第3版).人民郵電出版社,2009年2月
[2] [3]
七、附錄
包括全部源程序清單(程序中應有足夠的注釋)。