實驗報告-a夢科學計算器_第1頁
實驗報告-a夢科學計算器_第2頁
實驗報告-a夢科學計算器_第3頁
實驗報告-a夢科學計算器_第4頁
實驗報告-a夢科學計算器_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、暨南大學本科實驗報告專用紙課程名稱 程序設計基礎實驗 成績評定 實驗項目名稱 計算器程序的開發(fā) 指導教師 李軍 實驗項目編號 實驗一 實驗項目類型 設計性實驗地點 實C305 學生姓名 歐漓 學號 2012051949 學院 國際商學院 系 專業(yè) 市場營銷 實驗時間2013年5月2日 午6月 21 日 上 午 溫度 濕度 一、實驗內容【問題描述】 完成科學計算器程序的開發(fā)?!净疽蟆?要求科學計算器不僅能完成“加減乘除”四則基本運算,還能進行乘方、開方、指數(shù)、對數(shù)、三角函數(shù)、等方面較為高級的運算 。除運算外,還增加了科學計算器顯示時間的功能。二、實驗目的1掌握使用三種基本語句:賦值、分支、循

2、環(huán)2掌握數(shù)組、函數(shù)的編寫與調用。3掌握利用各種控件設計圖形界面的方法。4培養(yǎng)運用程序設計語言解決問題的能力。三、實驗文檔:1概要設計(文字性地說明解決問題的具體方法和步驟,可以配合圖示)1.1 分析問題,選擇算法科學計算器主要實現(xiàn)基本的加減乘除運算、正弦余弦、正切余切、正割余割、反正弦反余弦、雙曲正弦、雙曲余弦和對數(shù)等函數(shù)功能。為實現(xiàn)上述功能,我的基本思路是在窗體上建立三個控件數(shù)組,第一個控件數(shù)組有十二個命令按鈕,分別實現(xiàn)正弦余弦、正切余切、正割余割、反正弦反余弦、雙曲正弦、雙曲余弦和對數(shù)等函數(shù)功能;第二個控件數(shù)組作包括十二個命令按鈕,用來進行計算器的數(shù)據(jù)輸入;第三個控件數(shù)組為基本的運算符號,

3、實現(xiàn)基本加減乘除和乘方運算。退格、清除、等于、退出作為獨立的命令按鈕,另外設計一個功能切換按鈕實現(xiàn)顯示當前系統(tǒng)日期和時間。1.2 具體操作 1.2.1、 界面設計 先建立一個新的項目文件,里面包含一個Form1的窗體。然后,添加控件,包括一個Text框(Text1),和21個按鈕,前12個按鈕使用的名稱都是Command1,只是Index屬性不同,就好象一個數(shù)組,創(chuàng)立一組按鈕的方法是,先在窗體上建立一個按鈕(Command1),然后在Command1上擊鼠標右鍵,選擇復制(Copy),然后在窗體上任意部位擊右鍵,選擇粘貼(Paste),系統(tǒng)會提示是否創(chuàng)建控件組,選擇“是”,重復上面步驟,直至創(chuàng)

4、立12個按鈕為止。各控件屬性如下表: 對象名屬 性值Command1(0)Caption“sin”Index0Command1(1)Caption“cos”Index0Command1(2)Caption“tg”Index2Command1(3)Caption“sec”Index3Command1(4)Caption“csc”Index4Command1(5)Caption“ctg”Index5Command1(6)Caption“arcsin”Index6Command1(7)Caption“arcos”Index7Command1(8)Caption“arctg”Index8Command

5、1(9)Caption“arcctg”Index9Command1(10)Caption“l(fā)og”Index10Command1(11)Caption“l(fā)n”Index11Command2(0)Caption“0”Index0Command2(1)Caption“1”Index1Command2(2)Caption“2”Index2Command2(3)Caption“3”Index3Command2(4)Caption“4”Index4Command2(5)Caption“5”Index5Command2(6)Caption“6”Index6Command2(7)Caption“7”Inde

6、x7Command2(8)Caption“8”Index8Command2(9)Caption“9”Index9Command2(10)Caption“.”Index10Command2(11)Caption“-”Index11Command3(0)Caption“+”Index0Command3(1)Caption“-”Index1Command3(2)Caption“*”Index2Command3(3)Caption“/”Index3Command3(4)Caption“(”Index4Command3(5)Caption“)”Index5Command3(6)Caption“”Inde

7、x6Command4Caption“<-“Command5Caption“C”Command6Caption“=”Command7Caption“顯示當前日期”Command8Caption“退出”Text1Text1BackColor&H00FFFF80&ForeColor&H00000000&MultiLinetrueFont幼圓 粗體 三號EnlabiedFalseForm1Caption哆啦a夢科學計算器picture背景1icon頭像1Imagepicture頭像2stretchtrue1.2.2、菜單的設計為了解釋科學計算器的原理及常用的三角函

8、數(shù),在菜單編輯器里設計了菜單。該菜單具有層次性,有一個主菜單項(幫助),有兩個一級子菜單(常用函數(shù)介紹,關于計算機)在主菜單(幫助)的前面加&,使其作為熱鍵,菜單顯示時會為其加下劃線以標示使用單獨的一個ASCII字符的減號“-”,使“常用函數(shù)介紹”和“關于計算機”兩個下級子菜單中出現(xiàn)一條分割線,使菜單結構看起來更加清晰。為了使操作更加簡便,為兩個下級子菜單設置了快捷鍵,可以在未激活菜單的情況下直接執(zhí)行對應菜單命令。1.2.3 對話框的彈出 利用 窗體名稱.show 來顯示窗體。在為了顯示在上步的菜單設計中設計的子菜單中的內容,添加了兩個窗體Form2,F(xiàn)orm3.分別彈出“常用三角函數(shù)

9、”和“關于計算機”兩個對話框。1.2.4 變量的設置 由于計算器要進行計算,就必須儲存輸入的數(shù)字,并判別輸入的先后順序。定義Num1,Num2兩個變量分別表示第一個輸入的兩個數(shù)。并且Dim fuhao As Integer來判斷是否有運算符號,當沒有運算符號是,輸入的為第一個數(shù);當有運算符號時,輸入的為第二個數(shù)。 在對數(shù)函數(shù)地計算中,由于在計算三角函數(shù)時需要多次用到pi和e的值,所以先聲明兩個變量,然后在告訴兩個具體的值pi = 3.141592654,e = 2.718282,這樣使代碼變得簡單,也容易發(fā)現(xiàn)錯誤和進行修改。 定義變量sign來儲存運算符號,考慮到使用習慣及運算的優(yōu)先順序,使s

10、ign 1to21分別表示,+,-,*,/,(,),及,sin,cos,tan,ctg等三角函數(shù)。定義變量n為乘方變量,result為結果,在command3(6)乘方運算中使用到。1.2.5選擇結構 長分支語句 程序共有21個按鈕,按鈕太多,導致每一個按鈕觸發(fā)的click事件也很多,因此用單分支語句代碼冗長,且容易出錯。因此選用多分支語句select caseend select,由于使用的是控件數(shù)組和定義sign儲存符號,從而使代碼更加簡單,Select Case Index End Select,Select Case signEnd Select。1.2.6 循環(huán)結構 乘方的計算 定義

11、變量n為乘方變量,result為結果, 將乘方問題轉化為一個數(shù)學問題。設置result為第一個輸入數(shù)Num1,然后 在result = result * Num1中使num1循環(huán)n-1次,從而得到最終值1.2.7 利用角度轉換,實現(xiàn)三角函數(shù)及反三角函數(shù)的計算 Vb提供了大量的內部函數(shù),但是必須要經(jīng)過轉化才能使用,利用角度作為中間轉換變量,例如Num = Num1 / 180 * pi,Num = (Atn(Num1 / Sqr(-Num1 * Num1 + 1) / pi * 180, Num = (Atn(-Num1 / Sqr(-Num1 * Num1 + 1) + 2 * Atn(1)

12、/ pi * 180等 1.2.8實現(xiàn)數(shù)字的退格,清除 利用 Text1.Text = Left$(Text1.Text, Len(Text1.Text) - 1)來實現(xiàn)每一次點擊按鈕實現(xiàn)從右到左的一個數(shù)字的減少。并且定義fuhao=0,這樣就使后面的數(shù)能夠正常進行運算。8暨南大學本科實驗報告專用紙(附頁) 2.具體代碼Dim Num1, Num2 As SingleDim n As IntegerDim pi As SingleDim result As SingleDim fuhao As IntegerDim sign As IntegerPrivate Sub Command1_Cli

13、ck(Index As Integer)Select Case Index Case 0 To 9 sign = 10 + Index Case 10 sign = 20 fuhao = 1 Case 11 sign = 21End SelectText1.Text = ""End SubPrivate Sub Command2_Click(Index As Integer)Select Case Index Case 0 To 9 Text1.Text = Text1.Text & Index Case 10 Text1.Text = Text1.Text &am

14、p; "." Case 11 Text1.Text = "-" End Select If fuhao = 0 Then Num1 = Val(Text1.Text) Else Num2 = Val(Text1.Text) End IfEnd SubPrivate Sub Command3_Click(Index As Integer)Select Case Index Case 0 To 6 sign = IndexEnd Select Text1.Text = "" fuhao = 1End SubPrivate Sub Comm

15、and4_Click() If Val(Text1.Text) = 0 Then Text1.Text = "" fuhao = 0 Else Text1.Text = Left$(Text1.Text, Len(Text1.Text) - 1) End IfEnd SubPrivate Sub Command5_Click() Text1.Text = ""fuhao = 0End SubPrivate Sub Command6_Click()Dim Num As Singlepi = 3.141592654e = 2.718282Select Cas

16、e sign Case 0 Text1.Text = Num1 & "+" & Num2 & "=" & Chr(13) & Chr(10) & Num1 + Num2 Case 1 Text1.Text = Num1 & "-" & Num2 & "=" & Chr(13) & Chr(10) & Num1 - Num2 Case 2 Text1.Text = Num1 & "*" &

17、; Num2 & "=" & Chr(13) & Chr(10) & Num1 * Num2 Case 3 Text1.Text = Num1 & "/" & Num2 & "=" & Chr(13) & Chr(10) & Num1 / Num2 Case 4 Text1.Text = "輸入錯誤!請重新輸入:" Case 5 Text1.Text = "輸入錯誤!請重新輸入:" Case 6 result = N

18、um1 For n = 1 To Num2 - 1 result = result * Num1 Next n Text1.Text = Num1 & "" & Num2 & "=" & Chr(13) & Chr(10) & result Case 10 Num = Num1 / 180 * pi Text1.Text = "sin" & "(" & Num1 & ")" & "=" &

19、 Chr(13) & Chr(10) & Sin(Num) Case 11 Num = Num1 / 180 * pi Text1.Text = "cos" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & Cos(Num) Case 12 Num = Num1 / 180 * pi If (Num - pi / 2) Mod pi) = 0 Then Text1.Text = "輸入錯誤!

20、請重新輸入:" Else Text1.Text = "tg" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & Tan(Num) End If Case 13 Num = Num1 / 180 * pi Text1.Text = "sec" & "(" & Num1 & ")" & "=" &am

21、p; Chr(13) & Chr(10) & 1 / Cos(Num) Case 14 Num = Num1 / 180 * pi Text1.Text = "csc" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & 1 / Sin(Num) Case 15 Num = Num1 / 180 * pi Text1.Text = "ctg" & "("

22、& Num1 & ")" & "=" & Chr(13) & Chr(10) & 1 / Tan(Num) Case 16 If Abs(Num1) > 1 Then Text1.Text = "輸入錯誤!請重新輸入:" Else Num = (Atn(Num1 / Sqr(-Num1 * Num1 + 1) / pi * 180 Text1.Text = "arcsin" & "(" & Num1 & ")

23、" & "=" & Chr(13) & Chr(10) & Num End If Case 17 If Abs(Num1) > 1 Then Text1.Text = "輸入錯誤!請重新輸入:" Else Num = (Atn(-Num1 / Sqr(-Num1 * Num1 + 1) + 2 * Atn(1) / pi * 180 Text1.Text = "arccos" & "(" & Num1 & ")" &

24、 "=" & Chr(13) & Chr(10) & Num End If Case 18 Num = (Atn(Num1) / pi * 180 Text1.Text = "arctg" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & Num Case 19 Num = (Atn(Num1) + 2 * Atn(1) / pi * 180 Text1.Text = &q

25、uot;arcctg" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & Num Case 20 If Num1 > 0 And Num2 > 0 Then Text1.Text = "log" & "(" & Num1 & ")" & Num2 & "=" & Chr(13) &

26、 Chr(10) & Log(Num2) / Log(Num1) Else Text1.Text = "輸入錯誤!請重新輸入:" End If Case 21 If Num1 > 0 Then Text1.Text = "ln" & "(" & Num1 & ")" & "=" & Chr(13) & Chr(10) & Log(Num1) Else Text1.Text = "輸入錯誤!請重新輸入:" End If End Selectfuhao = 0End SubPrivate Sub Command7_Click() Text1.Text = NowEnd SubPrivate Sub Command8_Click()a = MsgBox("你確定要退出嗎?", vbOKCancel + vbQuestion, "提示")If a = vbOK ThenEndEnd IfEnd SubPrivate Sub Form_MouseDown(Button As Integ

溫馨提示

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

評論

0/150

提交評論