VB課程設(shè)計(jì)報(bào)告_第1頁
VB課程設(shè)計(jì)報(bào)告_第2頁
VB課程設(shè)計(jì)報(bào)告_第3頁
VB課程設(shè)計(jì)報(bào)告_第4頁
VB課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Visual Basic程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目 直線擬合 題目難度 四星級(jí) 姓 名 蔣龍?chǎng)?學(xué) 號(hào) 9141010F0309 指導(dǎo)教師 申 屠 德 忠 提交日期 4月15號(hào) 目 錄一、題目描述與功能要求1二、程序設(shè)計(jì)1(一)計(jì)算模型或算法實(shí)行1(二)模塊設(shè)計(jì)(窗體界面與代碼)2窗體1的設(shè)計(jì).3窗體2的設(shè)計(jì)7窗體3的設(shè)計(jì)12三、算例演示14四、參考文獻(xiàn)15五、課程設(shè)計(jì)總結(jié)15I一、題目描述與功能要求 1題目描述 本題目重要是用于將實(shí)驗(yàn)中得到的具有線性特征的一組數(shù)據(jù)通過最小二乘法擬合成直線,求出其直線方程和繪制出該直線的圖形。也就是尋找一條直線使這些離散的點(diǎn)盡可能平均的位于該直線的兩邊,它對(duì)

2、于尋找數(shù)據(jù)的規(guī)律有很大的幫助,是一個(gè)比較實(shí)用的程序。2功能要求:(1)運(yùn)行程序中,首先顯示如下圖窗體1的“直線擬合”窗口,從中選擇要擬合數(shù)據(jù)的組數(shù)。單擊“確定”按鈕進(jìn)入“數(shù)據(jù)輸入”窗口。(2)“數(shù)據(jù)輸入”窗口中有10對(duì)文本框,用于輸入最多10組實(shí)驗(yàn)數(shù)據(jù)。根據(jù)在“直線擬合”窗口的選擇不同,這10對(duì)文本框只有指定數(shù)目的文本框可用。輸入指定的數(shù)據(jù),然后單擊“確定”按鈕。如果數(shù)據(jù)未完全輸入,則顯示錯(cuò)誤提示的消息框。(3)如果數(shù)據(jù)輸入正確,在“數(shù)據(jù)輸入”窗口中單擊“確定”按鈕之后,程序進(jìn)入“直線參數(shù)與圖形”窗口,在此窗口中,程序根據(jù)輸入的數(shù)據(jù)自動(dòng)計(jì)算擬合直線方程的參數(shù),并將系數(shù)和方程顯示在窗口頂部。在窗

3、口的繪圖區(qū)繪制直線圖形。二、程序設(shè)計(jì)(一)計(jì)算模型或算法實(shí)行假設(shè)實(shí)驗(yàn)中得到n個(gè)點(diǎn),P1(X1,Y1),P2(X2,Y2),Pn(Xn,Yn),用i表示第i個(gè)點(diǎn).由于各種誤差的存在,這些數(shù)據(jù)點(diǎn)不可能完全在一條直線上。如果我們能找到一條直線,使這n個(gè)點(diǎn)到該直線的距離之平方和最小,則該直線就是用最小二乘法擬合出來的直線。設(shè)擬合的直線方程為F(X)=Y=bX+a,由于擬合出來的直線斜率是固定的,我們可以用每一個(gè)數(shù)據(jù)點(diǎn)與直線在Y方向上的“殘差”來定義,即殘差Yi=F(Xi)-Yi,可得: (Yi)2=(F(Xi)-Yi)2=(bXi+a-Yi)2根據(jù)最小二乘法原理,(bXi+a-Yi)2取極小值時(shí),即為

4、殘差最小,這時(shí)確定的直線即為擬合的直線。上式是一個(gè)二元函數(shù)求極值的問題,可分別對(duì)自變量a與b求偏導(dǎo)數(shù),可易得: na+bXi =Yi aXi+b(Xi)2=(XiYi) 從而得到公式:由上公式可知,我們可用n個(gè)點(diǎn)的坐標(biāo)確定直線方程的系數(shù)a與b,得到方程并將方程擬合出來.本題目的程序設(shè)計(jì)由三個(gè)窗體組成。在Form1中,有1個(gè)框架控件、1個(gè)標(biāo)簽控件、2個(gè)命令按鈕和1個(gè)由6個(gè)單選按鈕組成的控件數(shù)組。單選按鈕控件數(shù)組用來選擇要輸入的數(shù)據(jù)組數(shù),當(dāng)選擇好后,單擊“確定”按鈕,就可以進(jìn)入下一個(gè)窗體。單擊“取消”按鈕則退出程序Form1的代碼見附件。在Form2中有2個(gè)命令按鈕、20個(gè)文本框(每10個(gè)組成一個(gè)

5、控件數(shù)組)、12個(gè)標(biāo)簽控件和許多直線組成。在文本框中輸入實(shí)驗(yàn)數(shù)據(jù)后,點(diǎn)擊“確定”按鈕,若數(shù)據(jù)沒有全部輸入,則出現(xiàn)消息框,提醒沒有完全輸入。若已經(jīng)完全輸入,則顯示Form3,隱藏Form2。與此同時(shí),對(duì)實(shí)驗(yàn)數(shù)據(jù)計(jì)算,得出擬合直線的截距和斜率,并在Form3的標(biāo)簽控件1中體現(xiàn);根據(jù)所得的斜率和截距得到擬合直線方程,并在Form3的標(biāo)簽2中體現(xiàn);還可以在Form3中繪出擬合直線和每個(gè)實(shí)驗(yàn)點(diǎn)(用綠色),根據(jù)實(shí)驗(yàn)數(shù)據(jù)調(diào)整坐標(biāo)系統(tǒng),畫出擬合直線。Form2的代碼見附件。(二)模塊設(shè)計(jì)(窗體界面與代碼)本題目的程序設(shè)計(jì)由3個(gè)模塊組成,其中窗體模塊3個(gè)。序號(hào)模塊名稱模塊類型模塊功能1 Form1窗體模塊選擇要

6、輸入的數(shù)據(jù)組數(shù),當(dāng)選擇好后,單擊“確定”按鈕,就可以進(jìn)入下一個(gè)窗體;單擊“取消”按鈕則退出程序2 Form2窗體模塊輸入實(shí)驗(yàn)數(shù)據(jù)后,對(duì)實(shí)驗(yàn)數(shù)據(jù)計(jì)算,得出擬合直線的截距和斜率,根據(jù)所得的斜率和截距得到擬合直線方程。3Form3窗體模塊根據(jù)實(shí)驗(yàn)數(shù)據(jù)調(diào)整坐標(biāo)系統(tǒng),畫出擬合直線。窗體1的設(shè)計(jì) 表1 窗體1中控件列表序號(hào)控件名稱控件類型LeftTopWidthHeightCaption1Label1標(biāo)簽控件14401202055375直線擬合程序2Frame1框架控件48060038551455請(qǐng)選擇數(shù)據(jù)組數(shù)3Option1單選框控件3603609752555組4Option2單選框控件36072097

7、52556組5Option3單選框控件36010809752557組6Option4單選框控件25203609752558組7Option5單選框控件25207209752559組8Option6單選框控件2520108097525510組9Command1命令按鈕控件72022801575495確定10Command2命令按鈕控件252022801575495退出表2 窗體1中事件過程列表序號(hào)事件過程功能1Option1-click()選擇數(shù)據(jù)組數(shù)為5組2Option2-click()選擇數(shù)據(jù)組數(shù)為6組3Option3-click()選擇數(shù)據(jù)組數(shù)為7組4Option4-click()選擇數(shù)據(jù)

8、組數(shù)為8組5Option5-click()選擇數(shù)據(jù)組數(shù)為9組6Option6-click()選擇數(shù)據(jù)組數(shù)為10組7Command1-click()進(jìn)入第二個(gè)窗體坐標(biāo)軸的輸入8Command2-click()退出擬合值線的數(shù)據(jù)輸入表3 窗體1中通用過程與函數(shù)列表序號(hào)過程與函數(shù)輸入?yún)?shù)輸出參數(shù)功能1MsgBox()以文本向用戶顯示運(yùn)行過程中的信息,讓用戶單擊按鈕作選擇2Chr()10換行符使消息內(nèi)容在中間某處換行3Chr()13回車符窗體1的代碼Form1Private Sub Command1_Click() '顯示第二個(gè)窗體Form1.HideForm2.ShowForm3.Hidez

9、xnh = MsgBox("你必須完全輸入所選的項(xiàng)目!" & Chr(10) & Chr(13) & _ "否則程序?qū)?huì)出錯(cuò)!", 48, "直線擬合")End SubPrivate Sub Command2_Click() '結(jié)束程序EndEnd Sub'使第二個(gè)窗體的文本框按照第一個(gè)窗體給出的數(shù)據(jù)組數(shù)顯示Private Sub Option1_Click()Form2.Label6.Enabled = FalseForm2.Label7.Enabled = FalseForm2.Label8

10、.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 10 Form2.Text1(n).Enabled = False Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option2_Click()Form2.Label6.Enabled = TrueF

11、orm2.Label7.Enabled = FalseForm2.Label8.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseForm2.Text1(6).Enabled = TrueForm2.Text1(6).BackColor = &HFFFFFFForm2.Text2(6).Enabled = TrueForm2.Text2(6).BackColor = &HFFFFFFFor n = 7 To 10 Form2.Text1(n).Enabled = False Form2

12、.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option3_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 7

13、 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNext For n = 8 To 10 Form2.Text1(n).Enabled = False· Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &a

14、mp;H8000000FNextEnd SubPrivate Sub Option4_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = TrueForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 8 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = Tr

15、ue Form2.Text2(n).BackColor = &HFFFFFFNextFor n = 9 To 10 Form2.Text1(n).Enabled = False Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option5_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueF

16、orm2.Label8.Enabled = TrueForm2.Label9.Enabled = TrueForm2.Label10.Enabled = FalseForm2.Text1(10).Enabled = FalseForm2.Text1(10).BackColor = &H8000000FForm2.Text2(10).Enabled = FalseForm2.Text2(10).BackColor = &H8000000FFor n = 6 To 9 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor =

17、&HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNextEnd SubPrivate Sub Option6_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = TrueForm2.Label9.Enabled = TrueForm2.Label10.Enabled = TrueFor n = 6 To 10 Form2.Text1(n).Enabled = Tru

18、e Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNextEnd Sub窗體2的設(shè)計(jì)表4 窗體2中控件列標(biāo)序號(hào)控件名稱控件類型LeftTopWidthHeightCaption1Label1標(biāo)簽控件480880495255第1點(diǎn)2Label2標(biāo)簽控件4801240495255第2點(diǎn)3Label3標(biāo)簽控件4801600495255第3點(diǎn)4Label4標(biāo)簽控件4801960495255第4點(diǎn)5Label5標(biāo)簽控件48023204

19、95255第5點(diǎn)6Label6標(biāo)簽控件4802680495255第6點(diǎn)7Label7標(biāo)簽控件4803040495255第7點(diǎn)8Label8標(biāo)簽控件4803400495255第8點(diǎn)9Label9標(biāo)簽控件4803760495255第9點(diǎn)10Label10標(biāo)簽控件4804120575255第10點(diǎn)11Label11標(biāo)簽控件1320360975255X坐標(biāo)值:12Label12標(biāo)簽控件2520360975255Y坐標(biāo)值:13Text1(1)文本框控件144084073527014Text1(2)文本框控件1440120073527015Text1(3)文本框控件1440156073527016Text

20、1(4)文本框控件1440192073527017Text1(5)文本框控件1440228073527018Text1(6)文本框控件1440264073527019Text1(7)文本框控件1440300073527020Text1(8)文本框控件1440336073527021Text1(9)文本框控件1440372073527022Text1(10)文本框控件1440408073527023Text2(1)文本框控件264084073527024Text2(2)文本框控件2640120073527025Text2(3)文本框控件2640156073527026Text2(4)文本框控件2

21、640192073527027Text2(5)文本框控件2640228073527028Text2(6)文本框控件2640264073527029Text2(7)文本框控件2640300073527030Text2(8)文本框控件2640336073527031Text2(9)文本框控件2640372073527032Text2(10)文本框控件2640408073527033Command1命令按鈕控件48046801335495確定34Command2命令按鈕控件204046801335495返回X1Y1X2Y2BorderStyleBorderWidth35Line1直線控件240240

22、36002401-solid136Line2直線控件24024024044401-solid137Line3直線控件3600240360044401-solid138Line4直線控件1200240120044401-solid139Line5直線控件2400240240044401-solid140Line6直線控件24072036007201-solid141Line7直線控件2404440360044401-solid142Line8直線控件24024012007201-solid1表5 窗體2中事件過程列表序號(hào)事件過程功能1Command1-click()進(jìn)入繪圖窗體,擬合成直線2Co

23、mmand2-click()退出擬合直線的數(shù)據(jù)輸入 表6 窗體2中通用過程與函數(shù)列表序號(hào)過程與函數(shù)輸入?yún)?shù)輸出參數(shù)功能1Spc()33個(gè)空格組成的字符串返回number個(gè)空格組成的字符串 窗體模塊代碼2的 Form2:Option Base 1Dim m As IntegerDim X(10) As SingleDim Y(10) As SinglePrivate Sub Command1_Click() '進(jìn)入第三個(gè)繪圖窗體Form1.HideForm2.HideForm3.ShowDim A As Single '截距Dim B As Single '斜率Dim c

24、 As SingleDim d As SingleDim e As SingleDim f As SingleDim W As SingleDim R As SingleDim T As Single'討論點(diǎn)的個(gè)數(shù)If Form2.Text1(5).Enabled = True Then m = 5If Form2.Text1(6).Enabled = True Then m = 6If Form2.Text1(7).Enabled = True Then m = 7If Form2.Text1(8).Enabled = True Then m = 8If Form2.Text1(9)

25、.Enabled = True Then m = 9If Form2.Text1(10).Enabled = True Then m = 10'對(duì)點(diǎn)的x.y坐標(biāo)進(jìn)行賦值If m = 5 Then For n = 1 To 5 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 6 Then For n = 1 To 6 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 7 Then For n = 1 To 7 X(n) = Text1(n).Text

26、Y(n) = Text2(n).Text NextEnd IfIf m = 8 Then For n = 1 To 8 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 9 Then For n = 1 To 9 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 10 Then For n = 1 To 10 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd If For n = 1 To m c = X(n)

27、 + c d = X(n) * X(n) + d e = X(n) * Y(n) + e f = Y(n) + fNextA = f/m-(m*e-c*f)*c/m/(m*d-c*c) '計(jì)算直線的截距B = (c * f - m * e) / (c * c - m * d) '計(jì)算直線的斜率'打印數(shù)據(jù)方程的位置Form3.CurrentX = 200Form3.CurrentY = 350Form3.Print "直線斜率(B)=" & BForm3.CurrentX = 200Form3.CurrentY = 580Form3.Print

28、 "直線截距(A)=" & AForm3.CurrentX = 200Form3.CurrentY = 810Form3.Print "直線方程為:" Spc(3); "Y=" & B & "X+" & A'在坐標(biāo)圖上打印出點(diǎn)來For n = 1 To m Form3.PSet (360 + 37 * X(n), 5400 - 37 * Y(n), RGB(0, 0, 0)NextW = 5400 - 3700 * B - 37 * AR = 360 + (3700 - 37

29、 * A) / BT = 360 - 37 * A / B'將超出坐標(biāo)軸的線去掉If A >= 0 Then Form3.Line (360, 5400 - 37 * A)-(4060, W) If W < 1700 Then Form3.Line (R, 1700)-(4060, W), &H8000000F If W > 5400 And B < 0 Then Form3.Line (T, 5400)-(4060, W), &H8000000FElse Form3.Line (360 + (5400 - 37 * A) / B, 5400)-

30、(4060, W) If W < 1700 Then Form3.Line (R, 1700)-(4060, W), &H8000000F If W > 5400 And B < 0 Then Form3.Line (T, 5400)-(4060, W), &H8000000FEnd IfEnd Sub'返回第一個(gè)窗體Private Sub Command2_Click()Form1.ShowForm2.HideForm3.HideFor n = 1 To m Text1(n).Text = "" Text2(n).Text = &

31、quot;"NextEnd Sub窗體3的設(shè)計(jì) 表7 窗體3中控件列表序號(hào)控件名稱控件類型LeftTopWidthHeightCaption1Label1標(biāo)簽控件4801201455255直線參數(shù)(Y=BX+A2Label2標(biāo)簽控件168013201095255直線(Y-X)圖3Label3標(biāo)簽控件33605160975135坐標(biāo)比例:10:14Label4標(biāo)簽控件17019201801351005Label5標(biāo)簽控件2203480135135506Label6標(biāo)簽控件240540013513507Label7標(biāo)簽控件21605445135135508Label8標(biāo)簽控件396054

32、451801351009Command1命令按鈕控件60057601455495關(guān)閉10Command2命令按鈕控件240057601455495返回X1Y1X2Y2BorderWidthBorderStyle11Line1直線控件48019512019511 - Solid12Line2直線控件1920195456019511 - Solid13Line3直線控件120195120108011 - Solid 14Line4直線控件45601954560108011 - Solid15Line5直線控件12010804560108011 - Solid 16Line6直線控件12012004

33、560120011 - Solid 17Line7直線控件1201200120564011 - Solid 18Line8直線控件3601320360540011 - Solid 19Line9直線控件3601320240156011 - Solid 20Line10直線控件3601320480156011 - Solid 21Line11直線控件36054004440540011 - Solid 22Line12直線控件456012004560564011 - Solid 23Line13直線控件120056404560564011 - Solid 24Line14直線控件444054004

34、200528011 - Solid25Line15直線控件444054004200552011 - Solid 226Line16直線控件3601700420170011 - Solid 27Line17直線控件3602070420207011 - Solid 28Line18直線控件3602440420244011 - Solid 29Line19直線控件3602810420281011 - Solid 30Line20直線控件3603180420318011 - Solid 31Line21直線控件3603550420355011 - Solid32Line22直線控件3603920420

35、392011 - Solid33Line23直線控件3604290420429011 - Solid34Line24直線控件3604660420466011 - Solid35Line25直線控件3605030420503011 - Solid36Line26直線控件7305340730540011 - Solid 37Line27直線控件110053401100540011 - Solid38Line28直線控件147053401470540011 - Solid 39Line29直線控件184053401840540011 - Solid40Line30直線控件22105340221054

36、0011 - Solid 41Line31直線控件258053402580540011 - Solid 42Line32直線控件295053402950540011 - Solid 43Line33直線控件332053403320540011 - Solid 44Line34直線控件369053403690540011 - Solid45Line35直線控件406053404060540011 - Solid 表8 窗體3中事件過程列表序號(hào)事件過程功能1Command1-click()關(guān)閉程序,退出擬合直線2Command2-click()退出擬合直線的繪制過程,重新輸入數(shù)據(jù)窗體模塊代碼3的

37、Form3:Private Sub Command1_Click() '結(jié)束程序EndEnd SubPrivate Sub Command2_Click() '重新開始且將FORM2的數(shù)據(jù)清空Form1.ShowForm2.HideForm3.HideFor n = 1 To 10 Form2.Text1(n).Text = "" Form2.Text2(n).Text = ""NextEnd Sub三、算例演示輸入輸出數(shù)據(jù)當(dāng)選擇5組數(shù)據(jù)時(shí),:(54,76)、(65,83)、(87,89)、(82,61)、(34,22);:(34,56)、(24,89)、(29,59)、(78,61)、(94,57);:(58,26)、(44,77)、(55,89)、(67,65)、(76,98)。運(yùn)行結(jié)果:截距A=7.9171725,斜率B=0.9041657,直線方程為Y=0.9041657X+7.9171725,坐標(biāo)比例:×1:截距A=74.72493,斜率B=-0.199323,直線

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論