2023年vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)(5篇)

格式:DOC 上傳日期:2023-04-14 19:35:05
2023年vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)(5篇)
時(shí)間:2023-04-14 19:35:05     小編:zdfb

總結(jié)是指對(duì)某一階段的工作、學(xué)習(xí)或思想中的經(jīng)驗(yàn)或情況加以總結(jié)和概括的書面材料,它可以明確下一步的工作方向,少走彎路,少犯錯(cuò)誤,提高工作效益,因此,讓我們寫一份總結(jié)吧。總結(jié)怎么寫才能發(fā)揮它最大的作用呢?下面是我給大家整理的總結(jié)范文,歡迎大家閱讀分享借鑒,希望對(duì)大家能夠有所幫助。

vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)篇一

學(xué) 院 班 級(jí)

指導(dǎo)老師

姓 名 學(xué) 號(hào) 成 績(jī)

2013年 月 10

一.課程設(shè)計(jì)題目

學(xué)生管理系統(tǒng)

二.功能描述

按設(shè)定的用戶名密碼進(jìn)行登錄后,可按需求進(jìn)行對(duì)數(shù)據(jù)庫中已有的學(xué)生信息及成績(jī)進(jìn)行查詢,添加,刪除,修改等操作。

三.概要設(shè)計(jì)

登錄界面功能:讓用戶進(jìn)行登錄。主界面功能:讓用戶選擇進(jìn)行哪項(xiàng)操作。

查詢學(xué)生信息菜單功能:輸入學(xué)生學(xué)號(hào),對(duì)該學(xué)生的個(gè)人信息以

及成績(jī)進(jìn)行查詢,若直接點(diǎn)擊查詢按鈕,則顯示全部學(xué)生個(gè)人信息及成績(jī)。

編輯學(xué)生信息菜單功能:可對(duì)數(shù)據(jù)庫中已有的學(xué)生信息進(jìn)行查

詢,添加,刪除,修改等操作。

學(xué)生信息維護(hù)菜單功能:可對(duì)數(shù)據(jù)庫中已有的學(xué)生成績(jī)進(jìn)行查

詢,添加,刪除,修改等操作。

四.詳細(xì)設(shè)計(jì)

五.效果以及存在問題

說明系統(tǒng)的運(yùn)行效果(附上運(yùn)行界面圖片)、存在哪些不足以及預(yù)期的解決辦法。

登錄界面

登錄學(xué)生管理系統(tǒng)

按查詢條件查詢

打開修改學(xué)生信息子窗口

學(xué)生成績(jī)維護(hù)子窗口

垂直窗口排列

關(guān)于窗口

不足:1.沒有實(shí)現(xiàn)用戶登錄界面中的注冊(cè)功能

2.沒有實(shí)現(xiàn)主界面中文件下的新建和保存功能。

六.心得體會(huì)

經(jīng)過幾天的苦戰(zhàn),終于把課程設(shè)計(jì)粗略的做完了。剛開始做的時(shí)候,毫無頭緒,一片茫然。好在書本上有類似的實(shí)驗(yàn),可以供參考。盡管如此,真正做起項(xiàng)目來,還是有著這樣那樣的困難,有時(shí)一個(gè)空格少打都會(huì)出錯(cuò),導(dǎo)致我檢查了半天才發(fā)現(xiàn)問題所在。由于vb語法還運(yùn)用不熟練,很多代碼都是模仿書本上的敲的,許多代碼往往能編譯通過,但很多都會(huì)拋出各種異常,讓人頭疼。有時(shí)系統(tǒng)就給出個(gè)有個(gè)參數(shù)沒有被指定值,就可以讓人搞的焦頭爛額。因此,寫程序真的也很需要強(qiáng)大的耐心,只要熬下去了,當(dāng)你做出程序時(shí),也會(huì)倍有成就感。目前,程序是基本寫完了,平常學(xué)的理論都得到了運(yùn)用,感覺自己的能力也增強(qiáng)了。一句話,實(shí)踐才是硬道理。

七.附錄代碼

(附上各模塊代碼)

1.登錄界面

public class form1

private sub button1_click(byval sender as , byval e as rgs)handles

static n as integer

if = “abc” and = “123” then

dim form2 as new form2()

()

()

else

n = n + 1

if n < 5 then

msgbox(“請(qǐng)輸入正確的用戶名和密碼!”, al)

else

msgbox(“請(qǐng)輸入正確的用戶名和密碼!”, al)

d = false

end if

end if

end sub

private sub button2_click(byval sender as , byval e as rgs)handles

()

end sub

private sub button3_click(byval sender as , byval e as rgs)handles

dim form3 as new form3()

()

()

end sub

private sub form1_load(byval sender as , byval e as rgs)handles

end sub end class

2.查詢學(xué)生菜單代碼

public class form6

private sub form6_load(byval sender as , byval e as rgs)handles

dim objconn as new onnection

dim objdaxs_kc as new ataadapter

dim objdaxs as new ataadapter

dim objcommxs_kc as new ommand

dim objcommxs as new ommand

dim objdsxs_kc as new dataset

dim objdsxs as new dataset

tionstring = “provider = .4.0;data source = 'd:'”

dtext = “ select * from xs ”

dtext = “ select * from xs_kc ”

tion = objconn

command = objcommxs_kc

tion = objconn

command = objcommxs

()

(objdsxs_kc, “xs_kc”)

(objdsxs, “xs”)

()

urce = (“xs_kc”)

urce = (“xs”)

end sub

private sub button1_click(byval sender as , byval e as rgs)handles

dim objconn as new onnection

dim objdaxs_kc as new ataadapter

dim objdaxs as new ataadapter

dim objcommxs_kc as new ommand

dim objcommxs as new ommand

dim objdsxs_kc as new dataset

dim objdsxs as new dataset

dim wherestr as string

wherestr = “"

if trim()<> ”“ then

wherestr = ” 學(xué)號(hào)like “ + trim()

end if

tionstring = ”provider = .4.0;data source = 'd:'“

dtext = ” select * from xs “

dtext = ” select * from xs_kc “

if wherestr <> ”“ then

dtext = dtext & ”where“ & wherestr

dtext = dtext & ”where“ & wherestr

end if

tion = objconn

command = objcommxs_kc

tion = objconn

command = objcommxs

()

(objdsxs_kc, ”xs_kc“)

(objdsxs, ”xs“)

()

urce = (”xs_kc“)

urce = (”xs“)

end sub end class

3編輯學(xué)生信息菜單

public class form7

dim objds as new dataset

dim objxstable as datatable

dim objda as new ataadapter

dim wherestr as string

public sub refreshdata()

(objds, ”xs“)

()

bindgridview(wherestr)

end sub

public sub bindgridview(byval strxh as string)

dim objconn as new onnection

dim objcomm as new ommand

wherestr = ”“

if trim()<> ”“ then

wherestr = ” 學(xué)號(hào)like“ + trim()

end if

tionstring = ”provider=.4.0;data source='d:'“

dtext = ” select * from xs “

if wherestr <> ”“ then

dtext = dtext & ”where“ & wherestr

end if

'把objconn設(shè)置為objconn的數(shù)據(jù)連接

tion = objconn

command = objcomm

'創(chuàng)建insert command

dim inscommand as new ommand(”insert into xs(學(xué)號(hào),姓名,專業(yè)名,性別,出生日期,總學(xué)分,備注)values(?,?,?,?,?,?,?)“, objconn)

(”學(xué)號(hào)“, r, 6, ”學(xué)號(hào)“)

(”姓名“, r, 8, ”姓名“)

(”專業(yè)名“, r, 10, ”專業(yè)名“)

(”性別“, r, 2, ”性別“)

(”出生日期“, , nothing, ”出生日期“)

(”總學(xué)分“, r, nothing, ”總學(xué)分“)

(”備注“, r, nothing, ”備注“)

command = inscommand

'創(chuàng)建delte command

dim delcommand as new ommand(”delete * from xs where 學(xué)號(hào)=?“, objconn)

(”學(xué)號(hào)“, , 6, ”學(xué)號(hào)“)

command = delcommand

'創(chuàng)建update command

dim updcommand as new ommand(”update xs set 學(xué)號(hào)=?,姓名=?,專業(yè)名=?,性別=?,出生日期=?,總學(xué)分=?,備注=? where 學(xué)號(hào)=?“, objconn)

(”學(xué)號(hào)“, r, 6, ”學(xué)號(hào)“)

(”姓名“, r, 8, ”姓名“)

(”專業(yè)名“, r, 10, ”專業(yè)名“)

(”性別“, r, 2, ”性別“)

(”出生日期“, , nothing, ”出生日期“)

(”總學(xué)分“, r, nothing, ”總學(xué)分“)

(”備注“, r, nothing, ”備注“)

(”學(xué)號(hào)“, r, 6, ”學(xué)號(hào)“)

command = updcommand

()

'打開數(shù)據(jù)庫連接

(objds, ”xs“)'填充數(shù)據(jù)

objxstable = (”xs“)

()

'關(guān)閉數(shù)據(jù)集

'把datagrid1的datasource屬性設(shè)置為剛剛?cè)〉降臄?shù)據(jù)表,這樣就可以顯示數(shù)據(jù)了

urce = (”xs“)

end sub

private sub datagridview1_cellcontentclick(byval sender as , byval e as idviewcelleventargs)handles ntentclick

= (0).ng '顯示學(xué)號(hào)

= (1).ng '顯示姓名

= (2).ng '顯示專業(yè)

= (3).ng '顯示性別

= (4).ng '顯示出生日期

= (5).ng '顯示總學(xué)分

= (6).ng '顯示備注

end sub

private sub button1_click(byval sender as , byval e as rgs)handles

dim objconn as new onnection

dim objdaxs as new ataadapter

dim objcommxs as new ommand

dim objdsxs as new dataset

dim wherestr as string

wherestr = ”“

if trim()<> ”“ then

wherestr = ” 學(xué)號(hào)like “ + trim()

end if

tionstring = ”provider = .4.0;data source = 'd:'“

dtext = ” select * from xs “

if wherestr <> ”“ then

dtext = dtext & ”where“ & wherestr

end if

tion = objconn

command = objcommxs

()

(objdsxs, ”xs“)

()

urce = (”xs“)

end sub

private sub form7_load(byval sender as , byval e as rgs)handles

wherestr = ”“

bindgridview(wherestr)

end sub

private sub butadd_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要添加記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then

dim myrow as datarow = ()

myrow(”學(xué)號(hào)“)=

myrow(”姓名“)=

myrow(”專業(yè)名“)=

myrow(”性別“)=

myrow(”出生日期“)=

myrow(”總學(xué)分“)=

myrow(”備注“)=

(myrow)

refreshdata()

end if

end sub

private sub butedit_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要修改記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then '用戶選擇“確定”

'修改學(xué)號(hào)

().item(0)=

'修改姓名

().item(1)=

'修改專業(yè)

().item(2)=

'修改性別

().item(3)=

'修改出生日期

().item(4)=

'修改總學(xué)分

().item(5)=

'修改備注

().item(6)=

refreshdata()'更新并刷新顯示

end if

end sub

private sub butdelete_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要?jiǎng)h除記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then '用戶選擇“確定”

'除學(xué)生成績(jī)表當(dāng)前記錄

().delete()

refreshdata()'更新并刷新顯示

end if

end sub end class

4.學(xué)生成績(jī)維護(hù)菜單

public class form4

dim objds as new dataset

dim objxstable as datatable

dim objda as new ataadapter

dim wherestr as string

public sub refreshdata()

(objds, ”xs_kc“)

()

bindgridview(wherestr)

end sub

public sub bindgridview(byval strxh as string)

dim objconn as new onnection

dim objcomm as new ommand

wherestr = ”“

if trim()<> ”“ then

wherestr = ” 學(xué)號(hào)like“ + trim()

end if

tionstring = ”provider=.4.0;data source='d:'“

dtext = ” select * from xs_kc “

if wherestr <> ”“ then

dtext = dtext & ”where“ & wherestr

end if

'把objconn設(shè)置為objconn的數(shù)據(jù)連接

tion = objconn

command = objcomm

'創(chuàng)建insert command

dim inscommand as new ommand(”insert into xs_kc(學(xué)號(hào),課程號(hào),成績(jī),學(xué)分)values(?,?,?,?)“, objconn)

(”學(xué)號(hào)“, r, 6, ”學(xué)號(hào)“)

(”課程號(hào)“, r, 4, ”課程號(hào)“)

(”成績(jī)“, r, nothing, ”成績(jī)“)

(”學(xué)分“, r, nothing, ”學(xué)分“)

command = inscommand

'創(chuàng)建delte command

dim delcommand as new ommand(”delete * from xs_kc where 序號(hào)=?“, objconn)

(”序號(hào)“, , 6, ”序號(hào)“)

command = delcommand

'創(chuàng)建update command

dim updcommand as new ommand(”update xs_kc set 學(xué)號(hào)=?,課程號(hào)=?,成績(jī)=?,學(xué)分=? where 序號(hào)=?“, objconn)

(”學(xué)號(hào)“, r, 6, ”學(xué)號(hào)“)

(”課程號(hào)“, r, 4, ”課程號(hào)“)

(”成績(jī)“, r, nothing, ”成績(jī)“)

(”學(xué)分“, r, nothing, ”學(xué)分“)

(”序號(hào)“, r, nothing, ”序號(hào)“)

command = updcommand

()

'打開數(shù)據(jù)庫連接

(objds, ”xs_kc“)'填充數(shù)據(jù)

objxstable = (”xs_kc“)

()

'關(guān)閉數(shù)據(jù)集

'把datagrid1的datasource屬性設(shè)置為剛剛?cè)〉降臄?shù)據(jù)表,這樣就可以顯示數(shù)據(jù)了

urce = (”xs_kc“)

end sub

private sub datagridview1_cellcontentclick(byval sender as , byval e as idviewcelleventargs)handles ntentclick

= (0).ng '顯示id

= (1).ng '顯示學(xué)號(hào)

= (2).ng '顯示課程號(hào)

= (3).ng '顯示成績(jī)

= (4).ng '顯示學(xué)分

end sub

private sub btnddd_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要添加記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then

dim myrow as datarow = ()

myrow(”學(xué)號(hào)“)=

myrow(”課程號(hào)“)=

myrow(”成績(jī)“)=

myrow(”學(xué)分“)=

(myrow)

refreshdata()

end if

end sub

private sub btnedit_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要修改記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then '用戶選擇“確定”

'修改學(xué)號(hào)

().item(1)=

'修改課程號(hào)

().item(2)=

' 修改成績(jī)

().item(3)=

'修改學(xué)分

().item(4)=

refreshdata()'更新并刷新顯示

end if

end sub

private sub btndelete_click(byval sender as , byval e as rgs)handles

dim response as msgboxresult

response = msgbox(”確定要?jiǎng)h除記錄嗎?“, vbokcancel + vbquestion, ”系統(tǒng)提示“)

if response = then '用戶選擇“確定”

'除學(xué)生成績(jī)表當(dāng)前記錄

().delete()

refreshdata()'更新并刷新顯示

end if

end sub

private sub button1_click(byval sender as , byval e as rgs)handles

dim objconn as new onnection

dim objdaxs as new ataadapter

dim objcommxs as new ommand

dim objdsxs as new dataset

dim wherestr as string

wherestr = ”“

if trim()<> ”“ then

wherestr = ” 學(xué)號(hào)like “ + trim()

end if

tionstring = ”provider = .4.0;data source = 'd:'“

dtext = ” select * from xs_kc “

if wherestr <> ”“ then

dtext = dtext & ”where“ & wherestr

end if

tion = objconn

command = objcommxs

()

(objdsxs, ”xs_kc“)

()

urce = (”xs_kc“)

end sub

private sub form4_load(byval sender as , byval e as rgs)handles

wherestr = ”"

bindgridview(wherestr)

end sub end class

5.主菜單界面代碼

public class form2

private sub quitmenuitem_click(byval sender as , byval e as rgs)handles

()

end sub

private sub importscoremenuitem_click(byval sender as , byval e as rgs)handles

dim form4 as new form4

ent = me

state =

()

end sub

private sub updateinfomenuitem_click(byval sender as , byval e as rgs)handles

dim form7 as new form7

ent = me

state =

()

end sub

private sub selectinfomenuitem_click(byval sender as , byval e as rgs)handles

dim form6 as new form6

ent = me

state =

()

end sub

private sub cascademenuitem_click(byval sender as , byval e as rgs)handles

mdi(e)

end sub

private sub horizonmenuitem_click(byval sender as , byval e as rgs)handles

mdi(rizontal)

end sub

private sub verticalmenuitem_click(byval sender as , byval e as rgs)handles

mdi(rtical)

end sub

private sub aboutmenuitem_click(byval sender as , byval e as rgs)handles

dim form5 as new form5

ent = me

state =

()

end sub

private sub toolstripbutton1_click(byval sender as , byval e as rgs)handles

mclick()

end sub

private sub toolstripbutton2_click(byval sender as , byval e as rgs)handles toolstrip

mclick()

end sub

private sub toolstripbutton3_click(byval sender as , byval e as rgs)handles

mclick()

end sub

private sub toolstripbutton4_click(byval sender as , byval e as rgs)handles

mclick()

end sub

private sub toolstripbutton5_click(byval sender as , byval e as rgs)handles

mclick()

end sub

private sub toolstripbutton6_click(byval sender as , byval e as rgs)handles

mclick()

end sub

private sub toolstripstatuslabel1_click(byval sender as , byval e as rgs)handles

mclick()

end sub end class

八.參考文庫

百度文庫,百度知道

vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)篇二

期末成績(jī)處理課程設(shè)計(jì)報(bào)告(vb)編號(hào):28

期末成績(jī)處理設(shè)計(jì)報(bào)告

一、設(shè)計(jì)思路

1.要達(dá)到的目的

①培養(yǎng)學(xué)生綜合利用vb語言進(jìn)行程序設(shè)計(jì)的能力,主要是通過使用vb的標(biāo)準(zhǔn)控件,加深對(duì)控件的多個(gè)屬性的認(rèn)識(shí)及如何使用屬性進(jìn)行程序設(shè)計(jì)

2.關(guān)鍵問題的解決

① 設(shè)計(jì)一個(gè)具有兩個(gè)窗口的期末成績(jī)統(tǒng)計(jì)的小程序 ②其中第一個(gè)窗口完成:

學(xué)生人數(shù)和4門課成績(jī)的錄入,4門課的名稱及學(xué)生人數(shù)由用戶輸入。每錄入完一個(gè)學(xué)生成績(jī)后,將各門課成績(jī)寫入excel表格中。

打開excel表格查看寫入的數(shù)據(jù)是否

② 第二個(gè)窗口用來繪制描述各科目平均成績(jī)的柱形圖,界面中還應(yīng)包含坐標(biāo)系、圖表名稱、各科成績(jī)的平均分值、課程名稱及色塊

③ 對(duì)窗口1的4個(gè)文本框要求:在輸入成績(jī)之前,焦點(diǎn)要在第一個(gè)文本框中,且文本為可編輯狀態(tài);當(dāng)?shù)谝粋€(gè)文本框中輸入2位數(shù)據(jù)后,焦點(diǎn)自動(dòng)移入下一個(gè)文本框中,且文本狀態(tài)和第一個(gè)相同 文本框中只允許輸入數(shù)字0、1、2、3、4、5、6、7、8、9及小數(shù)點(diǎn)“.”;文本框中文本的位數(shù)最大為2位 輸入學(xué)生成績(jī)時(shí)窗口上要提示輸入的是第幾個(gè)學(xué)生成績(jī),并要求輸入最后一個(gè)學(xué)生成績(jī)后“寫入數(shù)組”控件隱藏

④ 全部學(xué)生成績(jī)輸入完成后,單擊“寫入excel文件”控件,把學(xué)生成績(jī)?nèi)糠旁趀xcel表格中,要求有字段名內(nèi)容。

⑤ 單擊“打開excel文件”控件,將打開剛剛生成的excel表。

⑥ 單擊“繪制柱形圖”控件,打開第二個(gè)窗口,并顯示以課程平均分為依據(jù)的柱狀圖。

⑦ 要想結(jié)束程序,應(yīng)單擊“退出”按鈕。

三、部分程序關(guān)鍵源代碼及注釋

private sub command2_click()'★創(chuàng)建excel對(duì)象

set xlapp = createobject(“ation”)'★打開已經(jīng)存在的excel工件簿文件

set xlbook = ( & “”)'★設(shè)置excel對(duì)象可見(或不可見)'e = true '★設(shè)置活動(dòng)工作表, sheet1表示表名,可以使用字符型變量代替。set xlsheet = eets(“sheet1”)(“a1:iv65536”).clear '★給excel對(duì)象中的表的單元格附值? '★保存 excel 文件 '★另存為

'(“文件名”)

期末成績(jī)處理課程設(shè)計(jì)報(bào)告(vb)編號(hào):28

'★關(guān)閉工作簿

(true)'★結(jié)束 excel 對(duì)象 ' '★釋放xlapp對(duì)象 set xlapp = nothing msgbox “寫入excle成功” end sub private sub command3_click()'★創(chuàng)建excel對(duì)象

set xlapp = createobject(“ation”)'★打開已經(jīng)存在的excel工件簿文件

set xlbook = ( & “”)'★設(shè)置excel對(duì)象可見(或不可見)e = true end sub

四、設(shè)計(jì)方案的完善及目前存在的問題

1.設(shè)計(jì)方案要完善的地方 ① 操作有點(diǎn)繁瑣 2.目前存在的問題

① 開始時(shí)出現(xiàn)錯(cuò)誤,但不影響使用

五、本次設(shè)計(jì)的收獲及心得體會(huì)

加強(qiáng)了對(duì)vb的理解,讓我更加明白vb的實(shí)際作用。

六、對(duì)該題目和vb設(shè)計(jì)的意見和建議

1.對(duì)該題目的意見和建議

不要單個(gè)輸入,應(yīng)該直接輸入多個(gè)同學(xué)的成績(jī)。2.對(duì)本次設(shè)計(jì)的意見和建議 難度應(yīng)該降低點(diǎn)。

vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)篇三

學(xué)生成績(jī)管理系統(tǒng)一、功能描述

首先簡(jiǎn)單地闡述本人所要實(shí)現(xiàn)系統(tǒng)的目的,然后應(yīng)較詳細(xì)的敘述本系統(tǒng)所要實(shí)現(xiàn)的功能。

************ *******

二、概要設(shè)計(jì)

1、系統(tǒng)功能模塊框圖設(shè)計(jì)

根據(jù)功能描述,建立系統(tǒng)的體系結(jié)構(gòu),即將整個(gè)系統(tǒng)分解成若干子功能模塊,并用框圖表示各功能模塊之間的銜接關(guān)系,并簡(jiǎn)要說明各模塊的功能。

程序流程框圖如圖所示:(僅供參考)

圖1 程序流程圖

2、數(shù)據(jù)庫設(shè)計(jì)

包括數(shù)據(jù)庫的組成說明,數(shù)據(jù)庫中各表的結(jié)構(gòu)說明(包括字段名、字段類型等),可以包含圖片例如下表:

表1 學(xué)生信息表

三、詳細(xì)設(shè)計(jì)

詳細(xì)說明主要窗體的實(shí)現(xiàn)過程,包括窗體的設(shè)計(jì)圖片及其上所包含的控件名和屬性設(shè)置;

詳細(xì)說明主要操作的代碼實(shí)現(xiàn)過程,包括過程間的調(diào)用關(guān)系(注:在此給出不完全代碼)。如下所示:

1、賬號(hào)登錄

帳號(hào)登錄模塊中登錄與注冊(cè)兩按鈕,單擊注冊(cè)會(huì)進(jìn)入注冊(cè)模塊中,單擊登錄會(huì)進(jìn)入系統(tǒng)進(jìn)行下一步的操作,帳號(hào)文本框與數(shù)據(jù)庫相連接,當(dāng)在帳號(hào)文本框輸入帳號(hào)后點(diǎn)擊登錄按鈕后,會(huì)在數(shù)據(jù)庫中進(jìn)行查詢看數(shù)據(jù)庫中是否會(huì)有該帳號(hào),且該帳號(hào)的密碼是否與密碼框中輸入的相同,如果相同會(huì)進(jìn)入系統(tǒng),如果不存在該賬號(hào)或密碼與帳號(hào)不相匹配,則會(huì)提示“帳號(hào)或密碼錯(cuò)誤”,帳號(hào)文本框會(huì)得到焦點(diǎn),讓重新輸入。

(1)窗體截圖(如圖2)

圖2 注冊(cè)窗體

(2)功能實(shí)現(xiàn)

2、學(xué)生信息查詢窗體

圖3 查詢窗體

四、調(diào)試中存在的問題及解決方法

包括調(diào)試過程中遇到的主要問題及采取的解決方法。例如:

1、注冊(cè)賬號(hào)出現(xiàn)的錯(cuò)誤

數(shù)據(jù)庫中帳號(hào)被設(shè)為主鍵,當(dāng)注冊(cè)時(shí)的帳號(hào)與數(shù)局庫中的帳號(hào)有相同時(shí)就會(huì)出錯(cuò)。

2、解決方法:在寫入數(shù)據(jù)庫前先進(jìn)行查詢數(shù)據(jù)庫

五、心得體會(huì)

本人在本次實(shí)習(xí)中取得的收獲、遇到的困難、如何面對(duì)和克服各種困難、本系統(tǒng)的不足之處,將要改進(jìn)的思想等。

六、參考文獻(xiàn)

[1] basic 6.0程序設(shè)計(jì)教程(第3版).人民郵電出版社,2009年2月

[2] [3]

七、附錄

包括全部源程序清單(程序中應(yīng)有足夠的注釋)。

vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)篇四

vb程序設(shè)計(jì) 課程設(shè)計(jì)報(bào)告

班 級(jí):***** 姓 名:***** 序 號(hào):***** 指導(dǎo)老師:*****

目錄

1、課設(shè)的目的..............................................................................................................................2

2、界面設(shè)計(jì)和功能設(shè)計(jì)............................................................................................................2

3、系統(tǒng)功能實(shí)施...................................................................................................................11

4、總結(jié)........................................................................................................................................30

一、課設(shè)的目的

1.本次課程設(shè)計(jì)提高了我們的實(shí)踐動(dòng)手能力

5.通過本次課程設(shè)計(jì),熟悉用戶界面的設(shè)計(jì)

2.通過本次課程設(shè)計(jì),進(jìn)一步理解計(jì)算機(jī)程序設(shè)計(jì)的思路與方法

3.本次課程設(shè)計(jì)之后,達(dá)到能熟練使用各種常見的vb控件,理解面向?qū)ο蟮乃枷?4.經(jīng)過本次課程設(shè)計(jì),我們進(jìn)一步熟練運(yùn)用vb的語言元素和流程控制語句

6.經(jīng)過本次課程設(shè)計(jì),熟悉數(shù)據(jù)訪問控件ado及相關(guān)對(duì)象的使用,能基于ado控件實(shí)現(xiàn)access的數(shù)據(jù)訪問與操縱

二、界面設(shè)計(jì)和功能設(shè)計(jì)

1、下面的界面為用戶登陸界面:

用戶名和密碼均已設(shè)定,用戶名為zgzy,密碼為11201,只有輸入正確,然后點(diǎn)擊“登陸“按鈕才能進(jìn)入主界面。如果用戶名或密碼三次輸入錯(cuò)誤,則系統(tǒng)自動(dòng)退出。當(dāng)你點(diǎn)擊“退出“按鈕時(shí),彈出一個(gè)對(duì)話窗,界面如下:

在對(duì)話框上點(diǎn)擊“是”按鈕,則退出系統(tǒng),如果點(diǎn)擊“否”,則該界面不變。

2、當(dāng)用戶名和密碼均輸入正確,點(diǎn)擊“登陸”按鈕,進(jìn)入主界面——“學(xué)生成績(jī)管理系統(tǒng)”界面,該界面是其他子界面的入口,界面如下:

3、進(jìn)入主界面后,點(diǎn)擊“學(xué)生管理(刪除添加)”,進(jìn)入學(xué)生管理界面,界面如下

該界面上有一個(gè)ado控件,用于連接數(shù)據(jù)庫,當(dāng)用戶在六個(gè)文本框中輸入數(shù)據(jù)時(shí),點(diǎn)擊“添加“按鈕,可以將數(shù)據(jù)錄入到數(shù)據(jù)庫中,如果此時(shí)點(diǎn)擊”刪除“按鈕,則剛才輸入的數(shù)據(jù)就會(huì)被刪除,點(diǎn)擊”保存“按鈕時(shí),輸入的數(shù)據(jù)就會(huì)自動(dòng)保存在數(shù)據(jù)庫里,點(diǎn)擊”返回主窗體“按鈕,該窗體消失,主窗體出現(xiàn)。

4、在主界面點(diǎn)擊“各科成績(jī)查詢“按鈕,出現(xiàn)如下界面:

該界面有一個(gè)ado控件,用來連接數(shù)據(jù)庫,還有一個(gè)datagrid控件,用來顯示學(xué)生成績(jī)的查詢結(jié)果,當(dāng)用戶選擇了要查詢的科目和條件后,點(diǎn)擊“查詢“按鈕,在datagrid控件上就會(huì)顯示出所查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——

5、在主界面點(diǎn)擊“姓名查詢“按鈕后,會(huì)出現(xiàn)如下界面:

該界面與上一界面相似,在文本框輸入要查詢的姓名后,點(diǎn)擊“查詢“按鈕,就會(huì)在datagrid控件上顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——

5、在主界面點(diǎn)擊“班級(jí)查詢“按鈕后,會(huì)出現(xiàn)如下界面:

在文版框中輸入所要查詢的班級(jí),datagrid控件上就會(huì)顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——

6、在主界面上點(diǎn)擊“各科成績(jī)段查詢“按鈕后,會(huì)出現(xiàn)如下界面:

點(diǎn)擊“計(jì)算分?jǐn)?shù)段統(tǒng)計(jì)“按鈕后,就會(huì)出現(xiàn)所要查詢的結(jié)果。下面為查詢的結(jié)果——

7、在主界面點(diǎn)擊“計(jì)算總分“按鈕后,出現(xiàn)如下界面:

點(diǎn)擊“清除總分”按鈕后,出現(xiàn)如下界面

8、在主界面點(diǎn)擊“排名“按鈕后,出現(xiàn)如下界面:

在該界面上點(diǎn)擊“排名“按鈕后,在datagrid控件上會(huì)顯示出按成績(jī)高低排名的結(jié)果,點(diǎn)擊”清除排名“按鈕后,剛才結(jié)果消失,顯示原來結(jié)果。下面為所現(xiàn)實(shí)的結(jié)果——

9、在主界面點(diǎn)擊“統(tǒng)計(jì)直方圖“按鈕后,出現(xiàn)如下界面:

在該界面點(diǎn)擊各個(gè)按鈕后,就會(huì)出現(xiàn)與之相關(guān)科目的成績(jī)統(tǒng)計(jì)直方圖,下面為查詢的結(jié)果——

10、在主界面點(diǎn)擊“優(yōu)等生“按鈕后,出現(xiàn)如下界面:

點(diǎn)擊按鈕查詢后,結(jié)果就會(huì)在界面上顯示出來。下面為所查詢的結(jié)果——

三、系統(tǒng)功能實(shí)施

以上展示的是系統(tǒng)的所有界面,怎樣才能讓這所有的功能實(shí)現(xiàn)呢?數(shù)據(jù)庫和ado控件的使用便是其中的關(guān)鍵。

1、建立如下數(shù)據(jù)庫

(學(xué)號(hào)、姓名、班級(jí)、英語、數(shù)學(xué)、vb、總分、排名)

2、建立如下圖的所有界面:

3、ado控件和datagrid控件以及數(shù)據(jù)庫的連接步驟:(這一步在設(shè)計(jì)界面的同時(shí)完成)

(1)、如何加載ado控件: 步驟1:

步驟2:

步驟3:

各個(gè)界面的ado控件如何連接數(shù)據(jù)庫(分兩步):

步驟1:

如下面界面中的5個(gè)步驟

步驟2:

選中ado控件adodc1,點(diǎn)擊鼠標(biāo)右鍵選擇屬性,然后界面設(shè)置如下:

控件綁定數(shù)據(jù)庫的字段操作說明:

屬性設(shè)置說明:下面以學(xué)號(hào)為例,姓名、班級(jí)等都可參考此。將學(xué)號(hào)對(duì)應(yīng)的文本框text1連接adodc1顯示數(shù)據(jù)庫中的學(xué)號(hào),需要設(shè)置datasource和datafield兩個(gè)屬性,首先選中text1文本框,并進(jìn)行下面的兩步操作,即可綁定數(shù)據(jù)庫的學(xué)號(hào)字段。

設(shè)置datasource:

設(shè)置datafield:

(2)、如何加載datagrid控件 控件datagrid,可以實(shí)現(xiàn)數(shù)據(jù)的批量處理,該控件在控件庫microsoft datagrid control 6.0中。

說明:datagrid控件屬性設(shè)置

以下為各個(gè)界面所對(duì)應(yīng)的代碼——

該界面代碼如下:

private sub command1_click()if = “zgzy” and = “11201” then unload me else msgbox “用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入”, vbmsgboxsetforeground, “系統(tǒng)提示!” end if

static t as integer t = t + 1 if t >= 3 then end end sub

private sub command2_click()a = msgbox(“確定要退出本系統(tǒng)嗎?”, 3 + 32 + 256, “系統(tǒng)提示!”)

if a = 6 then unload me end if end sub

該界面代碼如下:

private sub command1_click() end sub private sub command10_click() end sub private sub command3_click() end sub private sub command4_click()

end sub private sub command5_click()

end sub private sub command6_click()

end sub private sub command7_click()

end sub private sub command8_click()

end sub private sub command9_click()

end sub

該界面代碼如下:

private sub command1_click() end sub

private sub command2_click()if count = 0 or then

exit sub end if xt if count = 0 then

exit sub end if if then st end sub

private sub command4_click() end sub

private sub command5_click()

unload me

end sub

該界面代碼如下: dim kc_條件 as string dim kc as string private sub command1_click()kc_條件 = 1 source = “select * from stu where ” + kc + “ ” + kc_條件 h end sub

private sub form_load()kc_條件 = “>=92” kc = “vb” end sub

private sub option1_click()

kc = “vb” end sub private sub option2_click()kc = “math” end sub private sub option3_click()kc = “english” end sub

該界面代碼如下:

dim kc_條件 as string dim kc as string private sub command1_click()kc_條件 = 1 source = “select * from stu where ” + kc + “='” + kc_條件 + “'” h end sub

private sub form_load()kc = “name” end sub

該界面代碼如下: dim kc_條件 as string dim kc as string private sub command1_click()kc_條件 = 1 source = “select * from stu where ” + kc + “='” + kc_條件 + “'” h end sub

private sub form_load()kc = “class” end sub

該界面代碼如下:

private sub command1_click()

dim vb_a as integer

dim vb_b as integer

dim vb_c as integer

dim vb_d as integer

dim vb_e as integer

dim math_a as integer

dim math_b as integer

dim math_c as integer

dim math_d as integer

dim math_e as integer

dim english_a as integer

dim english_b as integer

dim english_c as integer

dim english_d as integer

dim english_e as integer

source = “select * from stu where vb>=90”

h

vb_a = count

1 = vb_a

source = “select * from stu where vb>=80 and vb<90”

h

vb_b = count

2 = vb_b

source = “select * from stu where vb>=70 and vb<80”

h

vb_c = count

3 = vb_c

source = “select * from stu where vb>=60”

h

vb_d = count

4 = vb_d

source = “select * from stu where vb<60”

h

vb_b = count

5 = vb_e

source = “select * from stu where math>=90”

h

math_a = count

6 = math_a

source = “select * from stu where math>=80 and math<90”

h

math_b = count

7 = math_b

source = “select * from stu where math>=70 and math<80”

h

math_c = count

8 = math_c

source = “select * from stu where math>=60 ”

h

math_d = count

9 = math_d

source = “select * from stu where math<60”

h

math_e = count

10 = math_e

source = “select * from stu where english>=90”

h

english_a = count

11 = english_a

source = “select * from stu where english>=80 and english<90”

h

english_b = count

12 = english_b

source = “select * from stu where english>=70 and english<80”

h

english_c = count

13 = english_c

source = “select * from stu where english>=60”

h

english_d = count

14 = english_d

source = “select * from stu where english<60”

h

english_e = count

15 = english_e end sub

private sub form_load()

= “"

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“

= ”“ end sub

代碼如下

private sub command1_click()'計(jì)算總分 dim vb as integer

dim math as integer dim english as integer rst for i = 1 to count

vb = me.(”vb“).value

math = me.(”math“).value

english = me.(”english“).value

me.(”total“).value = vb + math + english

xt next i end sub

private sub command2_click()'清除總分 rst for i = 1 to count

me.(”total“).value = null

xt next i end sub

該界面代碼如下:

private sub command1_click()source = ”select * from stu order by total desc“ h rst for i = 1 to count

me.(”mc“).value = i

xt

next i end sub

private sub command2_click()rst for i = 1 to count

me.(”mc“).value = null

xt next i end sub

該界面代碼如下:

private sub command1_click()

h

'填充表格數(shù)據(jù)

nt = 1

count = count

rst

for lngi = 1 to count

= lngi

'用data屬性向mschart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)

= val((”vb“).value)

label = (”name“).value

xt

next lngi

el = ”vb成績(jī)直方圖“ end sub

private sub command2_click()h

'填充表格數(shù)據(jù)

nt = 1

count = count

rst

for lngi = 1 to count

= lngi

'用data屬性向mschart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)

= val((”math“).value)

label = (”name“).value

xt

next lngi

el = ”math成績(jī)直方圖“ end sub

該界面代碼如下

private sub command1_click()dim vb as integer dim math as integer dim english as integer

source = ”select * from stu where((math+english+vb)/3>=90)or((math+english+vb)/3>=85 and(math=100 or english=100 or vb=100))or((vb+english+math)/3>=85 and((vb>=95 and english >=95)or(english>=95 and math>=95)or(math>=95 and vb>=95)))and(mc<=3)and(vb>=60 and english>=60 and math>=60)" h end sub

四、總結(jié)和體會(huì)

經(jīng)過好幾天的努力我的課程設(shè)計(jì)終于完成了。在沒有做課程設(shè)計(jì)以前覺得課程設(shè)計(jì)好難,我可能做不了,但是通過這次做課程設(shè)計(jì)發(fā)現(xiàn)自己錯(cuò)了。課程設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高,它并不可怕。通過這次課程設(shè)計(jì)使我明白了自己原來知識(shí)還比較欠缺,自己要學(xué)習(xí)的東西還太多,以前上課沒怎么認(rèn)真聽,現(xiàn)在知道它重要了,幸好為時(shí)不晚,我以后要更加的努力學(xué)好vb。在這次課程設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對(duì)我們更好的理解知識(shí),所以在這里非常感謝幫助我的同學(xué)。此外,還得出一個(gè)結(jié)論:世上無難事,只怕有心人。

在設(shè)計(jì)過程中,我通過查閱有關(guān)資料,與同學(xué)交流經(jīng)驗(yàn)和自學(xué)等方式,使自己學(xué)到了不少知識(shí),也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個(gè)設(shè)計(jì)中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過程中探索的艱難和成功時(shí)的喜悅。雖然這個(gè)設(shè)計(jì)做的也不太好,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次課程設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。

vb程序設(shè)計(jì)期末考試知識(shí)點(diǎn)總結(jié)篇五

visual basic課程設(shè)計(jì)報(bào)告

題目1: 貪吃蛇 難度:**** 題目2: 難度: 指導(dǎo)教師:

姓 名: 學(xué) 號(hào): 專 業(yè): 班 級(jí): 學(xué) 院:

日 期:

目錄

1、題目簡(jiǎn)介...................................................................................................錯(cuò)誤!未定義書簽。

2、設(shè)計(jì)思路與總體方案.................................................................................................................3

2.1 【設(shè)計(jì)】...................................................................................................3 【設(shè)計(jì)】..................................................................................................11 【設(shè)計(jì)】..................................................................................................14 2.4 【設(shè)計(jì)】.................................................................................................14 【設(shè)計(jì)】....................................................................................................【設(shè)計(jì)】..................................................................錯(cuò)誤!未定義書簽。2.6 標(biāo)準(zhǔn)模塊..........................................................................................................................14

3、設(shè)計(jì)過程遇到的主要問題及解決方法...................................................................................16

4、設(shè)計(jì)中尚存的不足分析...........................................................................................................16

5、心得體會(huì)...................................................................................................................................17

6、參考文獻(xiàn)...................................................................................................................................17

1.題目簡(jiǎn)介

貪吃蛇是一種很流行的電子游戲。如圖1所示,一條蛇在棋盤狀的格子平面上爬行,由鍵盤控制其轉(zhuǎn)彎;格子上隨機(jī)出現(xiàn)五個(gè)數(shù)字(1~5),當(dāng)蛇的頭部碰到數(shù)字時(shí)會(huì)將數(shù)字“吃掉”,蛇的身體會(huì)變長(zhǎng)。當(dāng)蛇的頭撞到障礙物時(shí)或碰到自己身體時(shí),游戲結(jié)束。游戲結(jié)束時(shí),蛇身體越長(zhǎng)的分越高。

圖1 程序啟動(dòng)時(shí)界面如圖1所示,游戲平面有20*20個(gè)方格構(gòu)成。使用回車鍵可以暫

停(如圖2所示),蛇爬到邊界時(shí),如果未遇到障礙物,會(huì)從一側(cè)爬出再從另一側(cè)爬入。如果運(yùn)動(dòng)過程中,其頭部碰到障礙物或自己,則被撞死,游戲結(jié)束。

圖2 如果該用戶的成績(jī)超過記錄成績(jī),則會(huì)顯示圖3所示的對(duì)話框提示輸入用戶名,以供記錄成績(jī),排行榜界面如圖4所示。

圖3

圖4

選擇“設(shè)置”菜單命令,打開圖5所示的“設(shè)置”對(duì)話框。在該對(duì)話框中可以選

擇不同的障礙物形狀,也可指定背景和障礙物顏色。

圖5 為了使效果更好,我加了背景音樂和速度控制。

2、設(shè)計(jì)思路與總體方案

(說明用到哪些控件并進(jìn)行難點(diǎn)分析,說明所使用到的模塊、過程、變量、數(shù)組、自定義數(shù)據(jù)類型及其相互關(guān)系,必要時(shí)給出系統(tǒng)結(jié)構(gòu)圖等圖表。

對(duì)如下事項(xiàng)逐步進(jìn)行必要的分析、說明:

? 程序設(shè)計(jì)的主要思想,程序功能是如何實(shí)現(xiàn)的?

? 設(shè)計(jì)了幾個(gè)程序模塊(有幾個(gè)窗體模塊、幾個(gè)標(biāo)準(zhǔn)模塊),各個(gè)功能模塊的作者及想到之間的關(guān)系(模塊間是如何傳遞信息和數(shù)據(jù)的,采用什么方式,為什么?)?

? 程序中定義了哪些主要的變量(分別定義了哪些過程級(jí)變量?模塊級(jí)變量和全局變量),這些變量起什么作用?是否全局變量? 這里不需要給出大段的源程序,只需要給出關(guān)鍵的實(shí)現(xiàn)代碼即可。)2.1 【設(shè)計(jì)】

這是主界面,但也是最難的環(huán)節(jié),之后要用到的控件與顯示都要在其基礎(chǔ)上發(fā)展。首先我們要將背景網(wǎng)格和蛇身畫出來,由于受到了動(dòng)態(tài)添加控件的啟發(fā),我用了powerpacks中的ovalshape來構(gòu)造蛇身,lineshape來構(gòu)造線,為了滿足蛇的身體長(zhǎng)長(zhǎng),用到了數(shù)組。由于代碼之間有許多調(diào)配,在此我所舉的代碼皆主要起說明作用,實(shí)際情況可看源代碼。代碼如下:

public num as integer = 4 ‘記錄蛇的長(zhǎng)度,即ovalshape的個(gè)數(shù)

public j as string‘記錄inputstring的字符串

public p as integer = 1‘記錄msgbox所產(chǎn)生的值

dim w as integer

dim d as integer ‘為鍵盤方向確定一固定值

dim recordname as string‘記錄玩家名字

dim bnum as integer = 1‘記錄障礙物的個(gè)數(shù)

public recordlist(7)as string ‘記錄成績(jī)

public recordscore(7)as integer

public gametime as integer ‘記錄游戲進(jìn)行所用時(shí)間

public gameinterval as integer = 200 ‘記錄游戲timer控件interval值

public score as integer ‘記錄得分

public direction as integer

public line(41)as lineshape

public food(4)as rectangleshape

public eye(2)as ovalshape '蛇的眼睛

public a(num)as ovalshape '蛇的身體

public word(4)as label

imports acks public a(num)as ovalshape ‘a(chǎn)()為定義蛇身的數(shù)組,變量num用來記錄蛇身個(gè)數(shù)

public line(41)as lineshape dim canvas = new ontainer

for i = 4 to 0 step-1 a(i)= new ovalshape

a(i).size = new size(20, 20)a(i).top = 360 a(i).left = 120 + 20 * i a(i).fillstyle = a(i).fillcolor = a(i).parent = canvas next

a(0).fillcolor = ‘給蛇上色 a(0).backcolor = dim i as integer

= 1 for i = 0 to 20 '形成網(wǎng)格,以兩點(diǎn)坐標(biāo)來確定線的位置

line(i)= new lineshape line(i).x1 = 0 line(i).x2 = 400 line(i).y1 = 20 * i

line(i).y2 = 20 * i line(i).parent = canvas next

for i = 21 to 41 line(i)= new lineshape line(i).x1 = 20 *(i21)line(i).y1 = 0 line(i).y2 = 400 line(i).parent = canvas 蛇已經(jīng)做好,那么我們可以進(jìn)行下一步:讓蛇隨鍵盤的上下左右運(yùn)動(dòng)起來。這一步曾經(jīng)困擾我很久,但通過上網(wǎng)我發(fā)現(xiàn)每一個(gè)鍵盤都對(duì)應(yīng)著一個(gè)代碼,如:左37,上38,右39,下40。首先得讓控件響應(yīng)鍵盤事件,其次讓蛇動(dòng),而蛇的運(yùn)動(dòng)可看作蛇頭移動(dòng),蛇身跟隨前一個(gè)身體。由此可以用以下代碼解決:

private sub form_keydown(byval sender as object, byval e as ntargs)handles n select case e case 37 if d <> 2 then d = 0 ‘這樣能讓蛇不往回走

case 38 if d <> 1 then d = 3 case 39 if d <> 0 then d = 2 case 40 if d <> 3 then d = 1 end select

end sub select case d case 2 for i = num to 1 step-1 a(i).left = a(i1).top next

a(0).left += 20 case 1 for i = num to 1 step-1 a(i).left = a(i1).top next

a(0).top += 20 case 0 for i = num to 1 step-1

a(i).left = a(i1).top next

a(0).left-= 20 case 3 for i = num to 1 step-1 a(i).left = a(i1).top next

a(0).top-= 20 end select 然后我們可以來設(shè)置食物來讓蛇吃,我用rectangleshape控件來制造食物,就像和畫出蛇身一樣寫,但是每當(dāng)被吃后它有出現(xiàn),而且不能出現(xiàn)在蛇身上。首先,它是隨機(jī)出現(xiàn)的,我們可用隨機(jī)函數(shù),然后可通過判斷讓它不出現(xiàn)在蛇身上。對(duì)于數(shù)字1,2,3,4,5;我用lebal控件,然后讓其和食物坐標(biāo)同步,這樣看起來就像數(shù)字在食物上一樣。代碼如下:

for i = 0 to 4 if a(0).top = food(i).top and a(0).left = food(i).left then ‘判斷是否吃到

score += i + 1 ‘分?jǐn)?shù)增加 num += i + 1 ‘蛇身的個(gè)數(shù)增加 food(i).visible = false word(i).visible = false

redim preserve food(4)redim preserve word(4)food(i)= new rectangleshape food(i).size = new size(20, 20)randomize()food(i).left = int(rnd()* 20)* 20 ‘隨機(jī)確定新坐標(biāo)

food(i).top = int(rnd()* 20)* 20 l2: for g = 0 to num1 if food(i).left = a(g).left and food(i).top = a(g).top then

call setloction(i)goto l2 end if

next

food(i).fillstyle = food(i).parent = canvas word(i)= new label word(i).text = i + 1 word(i).size = new size(10, 10)

word(i).top = food(i).top + 5 word(i).left = food(i).left + 5 word(i).parent = canvas redim preserve a(num)‘蛇長(zhǎng)長(zhǎng),重新定義動(dòng)態(tài)數(shù)組

for k = numii1 if a(0).top = barrier(k).top and a(0).left = barrier(k).left then

d = false a(0).fillcolor = lifetime-= 1 if score < 3 then

if lifetime < 1 then

msgbox(“game over!”, 64, “貪吃蛇”)recordname = inputbox(“game over!” & chr(13)& “你的成績(jī)?yōu)椤?& int(score)& “分用時(shí)” & _ int(gameinterval * gametime / 1000)& ”秒?!?& chr(13)& ”請(qǐng)留下大名“, ”貪吃蛇“, ”無名氏“)else

p = msgbox(”do you want to continue?“, vbyesno, ”生命值“ & lifetime)if p = 6 then

exit for

end if

end if

else

if lifetime < 1 then

recordname = inputbox(”game over!“ & chr(13)& ”你的成績(jī)?yōu)椤?& int(score)& ”分用時(shí)” & _ int(gameinterval * gametime / 1000)& “秒。” & chr(13)& “請(qǐng)留下大名?”, “貪吃蛇”, “無名氏”)else

p = msgbox(“do you want to continue?”, vbyesno, “生命值” & lifetime)if p = 6 then

exit for

end if

end if

end if

call record()call initialize()exit for

end if

next 想要形成障礙物,在此我們需要用到文件的讀操作。主要代碼如下:

fileopen(1, filelacation, )' 讀取墻壁,形成迷宮 bnum = 1 dim l as integer

dim t as integer

for i = 1 to 419 j = inputstring(1, 2)if val(j)= 1 then

barrier(bnum)= new rectangleshape barrier(bnum).left = 20 * l barrier(bnum).top = 20 * t barrier(bnum).size = new size(20, 20)barrier(bnum).fillcolor = barriercolor barrier(bnum).fillstyle = barrier(bnum).parent = canvas bnum += 1 end if

if val(j)= 0 then ‘用此方法使讀出的內(nèi)容與坐標(biāo)對(duì)應(yīng)

end if

if j = vbcrlf then l-= 1 end if l += 1

if l = 20 then l = 0 : t += 1 end if

next

fileclose(1)在此基礎(chǔ)上便可調(diào)用其它的過程,比較簡(jiǎn)單。代碼如下:

private sub 開始toolstripmenuitem_click(byval sender as , byval e as rgs)handles if d = false then d = true

exit sub

end if

if d = true then d = false

end if

end sub

private sub 新開局toolstripmenuitem_click(byval sender as , byval e as rgs)handles call initialize()end sub

private sub 關(guān)于toolstripmenuitem_click(byval sender as , byval e as rgs)handles msgbox(“貪吃蛇vb2010.2016.3.20”, 64, “版本說明”)end sub

private sub 幫助toolstripmenuitem1_click(byval sender as , byval e as rgs)handles ()end sub

private sub 設(shè)置toolstripmenuitem_click(byval sender as , byval e as rgs)handles ()end sub

private sub 退出toolstripmenuitem_click(byval sender as , byval e as rgs)handles

end

end sub

private sub 排行榜toolstripmenuitem_click(byval sender as , byval e as rgs)handles ()end sub

【設(shè)計(jì)】

這個(gè)界面是第二重要的,當(dāng)然它的設(shè)計(jì)也較麻煩。設(shè)計(jì)的障礙物的類型用到了listbox控件,也用到了菜單欄與picturebox控件。中的類似,因此方便好多。

private sub form2_load(byval sender as , byval e as rgs)handles (“方盒形”)(“隧道形”)(“螺旋形”)(“路障形”)(“彎曲形”)(“怪異形”)(“無障礙形”)lor = ay lor = = lifetime call shapeview()end sub private sub listbox1_selectedindexchanged(byval sender as object, byval e as rgs)handles edindexchanged

if edindex = 0 then filelacation = “” filename = “方盒形” mazenum = 1 end if

if edindex = 1 then filelacation = “” filename = “隧道形” mazenum = 2 end if

if edindex = 2 then filelacation = “” filename = “螺旋形”

mazenum = 3 end if

if edindex = 3 then filelacation = “” filename = “路障形” mazenum = 4 end if

if edindex = 4 then filelacation = “” filename = “彎曲形” mazenum = 5 end if

if edindex = 5 then filelacation = “” filename = “怪異形” mazenum = 6 end if

if edindex = 6 then

filelacation = “” filename = “無障礙形” mazenum = 7 end if

for k = 1 to oldnum121)line1(i).x2 = 10 *(“

'musicname = ”“

(orypath & ”“)end if

end sub

private sub radiobutton6_checkedchanged(byval sender as , byval e as rgs)handles dchanged if d = true then

'()

()end if

end sub end class

[設(shè)計(jì)】

此窗體用來調(diào)節(jié)蛇運(yùn)動(dòng)的快慢程度。

private sub trackbar1_scroll(byval sender as , byval e as rgs)handles

dim v as integer v = timeinterval = 500 /(2 ^ v) = end sub

[設(shè)計(jì)】

此窗體用來顯示玩家的成績(jī),用到了listbox控件來顯示成績(jī),點(diǎn)擊清除所有記錄可還原,recordlist()用來記錄文件中的每一行。public class form6

public sub form6_load(byval sender as , byval e as rgs)handles for i = 1 to 7 (list(i))next

end sub

private sub button1_click(byval sender as , byval e as rgs)handles ()fileopen(1, orypath & ”“, )for i = 1 to 7 list(i)= lineinput(1)(list(i))next

fileclose(1)end sub

private sub button2_click(byval sender as , byval e as rgs)handles ()end sub end class

2.8標(biāo)準(zhǔn)模塊

定義各種變量

imports acks module module1

public barriercolor as = ay

‘記錄障礙物的顏色

public panalcolor as = ‘記錄面板的顏色

public oldnum as integer

public oldnum1 as integer

public bnum1 as integer

public filelacation as string = ”“

public filename as string = ”螺旋形"

public timeinterval as integer = 1000 public mazenum as integer = 2 ‘為每一個(gè)障礙物類型做標(biāo)記

public lifetime as integer = 1 ‘生命次數(shù)

public barrier(400)as rectangleshape end module

3、設(shè)計(jì)過程遇到的主要問題及解決方法

3.1剛開始時(shí)對(duì)于畫出后面的線條時(shí)我是添加了41個(gè)lineshape控件,一個(gè)個(gè)確定等距的坐標(biāo)將其畫下,廢了我好大的氣力,但后來受到了動(dòng)態(tài)添加控件的觸動(dòng)用數(shù)組將其解決。

3.2如何引發(fā)鍵盤事件曾一度困擾我,了解了鍵盤下所代表的代碼意義,之前一直使用的是select case keycode代碼,怎么也無法使其響應(yīng)。后來看看課本上關(guān)于鍵盤的代碼,隨便使用了select case e代碼,令我欣慰的是竟然成功了。

3.3下一個(gè)是如何在界面上顯示出障礙物。根據(jù)所提供的文件夾,了解起大概用法,為了讓我編程更容易,我對(duì)其文件做了一定的修改。

3.4最難的是過程之間的調(diào)用與聯(lián)系,解決的辦法就是不斷的進(jìn)行調(diào)試,修改。比如在我編寫重新開局的菜單代碼時(shí)總是會(huì)出現(xiàn)兩只蛇;這行代碼,因此我得另辟蹊徑。

4、設(shè)計(jì)中尚存的不足分析

4.1由于我采用的編寫方法是將完成這個(gè)貪吃蛇游戲所需滿足的要求分開,一個(gè)一個(gè)的進(jìn)行攻破,我會(huì)發(fā)現(xiàn)越往后編寫越要考慮到之前的內(nèi)容,在解決程序之間的關(guān)系會(huì)越麻煩,調(diào)試的次數(shù)更多。而且編完后縱觀全局會(huì)發(fā)現(xiàn)代碼的結(jié)構(gòu)較混亂,重復(fù)性高,他人難以看的明白。

4.2 在定義變量時(shí)我盡量定義其為全局變量和模塊級(jí)變量。部分變量為了簡(jiǎn)單或難以翻譯為英文的僅僅使用了字母代替,對(duì)讀代碼有一定困難。

4.3 我所犯下的最大錯(cuò)誤就是使用控件來顯示蛇,因?yàn)樵谶\(yùn)行程序時(shí)蛇身會(huì)隨著長(zhǎng)度的增加閃爍的愈發(fā)厲害??赡苁强丶啵绦蜻\(yùn)行不流暢,效率不高。

4.4 我想在游戲中添加一些音樂,并且用到了循環(huán)播放的代碼,但是至今我還是沒有想到如何能將播放中的音樂暫停。還有的就是怎樣才能同時(shí)播放兩種聲音。

4.5 對(duì)于排行榜的編寫存在一些問題,比如:怎樣才能使顯示的行間距更開;如何才能使所顯示的各項(xiàng)指標(biāo)在其對(duì)應(yīng)的列下,在這一點(diǎn)上有很大的缺陷。可能程序要用到dictionary方法。

4.6 當(dāng)我運(yùn)行程序時(shí),如果我點(diǎn)了界面上的某條線的話,蛇就不再響應(yīng)鍵盤事件了,必須使用ctrl+方向鍵才能使其響應(yīng)鍵盤事件。應(yīng)該是我點(diǎn)擊時(shí)失去了焦點(diǎn)導(dǎo)致無法正常運(yùn)行。

5、心得體會(huì)

這個(gè)程序從難度上講足足有四顆星,因此我想說我確實(shí)摸索了很久,從界面的制作排版到代碼的編寫。由于計(jì)算機(jī)編程知識(shí)當(dāng)初只學(xué)了些皮毛,很多次我在編程時(shí)不斷調(diào)試卻依然出現(xiàn)這樣那樣的毛病,可能是無意中拼寫錯(cuò)誤,但有些確實(shí)是因?yàn)椴涣私鈜b的某些較為冷僻的用法所致。這段時(shí)間,常會(huì)向同學(xué)請(qǐng)教,也自覺地去借了些書看看,基本上完成了要求,但是功能、界面都還不是很完善,我會(huì)借助以后的時(shí)間繼續(xù)去加工的,我需要的是學(xué)以致用。

我體會(huì)到了編寫程序是個(gè)有條理的邏輯過程,首先必須有個(gè)大致的思路,整體的規(guī)劃出來。然后再是分步地去具體完成,尤為重要的是需要投入相當(dāng)一部分精力去精益求精,這樣你的成果才不會(huì)是毛糙的。思維調(diào)動(dòng)是件另人愉快的事情,而我們應(yīng)該去學(xué)會(huì)享受腦力勞動(dòng)的過程,哪怕是一次次地失利。這就是2個(gè)月的課程設(shè)計(jì)所教會(huì)我的。

6、參考文獻(xiàn)

[2].王棟,visual basic程序設(shè)計(jì)實(shí)用教程,北京,清華大學(xué)出版社

【本文地址:http://www.aiweibaby.com/zuowen/2621459.html】

全文閱讀已結(jié)束,如果需要下載本文請(qǐng)點(diǎn)擊

下載此文檔